Towards array context (2025 merge) - #256

Merged
inducer merged 81 commits into
mainfrom
towards-array-context-merge
Jan 1, 2026
Merged

Towards array context (2025 merge)#256
inducer merged 81 commits into
mainfrom
towards-array-context-merge

Conversation

@inducer

@inducerinducer commented Dec 4, 2025

Copy link
Copy Markdown
Owner

Resumed from #139.


Relevant parts of summary from #139 follow:

Remaining porting issues

Upstream / downstream PRs

Speculative TODOs

  • Should some classes clone the actx? Here e.g. SumpyTreeIndependentDataForWrangler but also in boxtree.
    • The big worry is that cloning throws away any caches on the actx.
    • Pretty much all *Builder classes can be functions + all other memoized kernels can be functions, but should leave that for later since it can be done without breaking the world.
  • Rip out the timing stuff (not sure, just mentioned by @inducer at some point).
    • This would also need to be done in boxtree?
  • Add an array context to do the timing stuff? (now Make an array context to handle timing #259)

@inducer
inducerforce-pushed the towards-array-context-merge branch from f214429 to 53b6fc3CompareDecember 9, 2025 22:40
@inducer
inducerforce-pushed the towards-array-context-merge branch from 6f1f569 to 22b9b8fCompareDecember 10, 2025 21:39
@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI: As in boxtree, I've moved towards annotating with ArrayContext instead of PyOpenCLArrayContext. I like that direction because it conveys the ambition (cough) that all this will work with any actx. It also prevents having to splatter actx-type asserts everywhere downstream. If you hate it, it's a single commit that could be unwound.

@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

@alexfikl

Copy link
Copy Markdown
Collaborator

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

Definitely! I'm fine with continuing the work here too, whatever's more convenient.

@inducer
inducerforce-pushed the towards-array-context-merge branch from f8a618b to 5a00e5fCompareJanuary 1, 2026 14:27
@inducer

Copy link
Copy Markdown
OwnerAuthor

Uh-oh. I think I may have force-pushed over two commits of yours just now:

image

Do you still have those? Could you reapply them?

@alexfikl

alexfikl commented Jan 1, 2026

Copy link
Copy Markdown
Collaborator

Do you still have those? Could you reapply them?

Done! 😁

EDIT: I think the pytential job is confused because we're now pointing to boxtree main?

@inducer
inducer marked this pull request as ready for review January 1, 2026 16:44
@inducer
inducer enabled auto-merge (squash) January 1, 2026 16:45
@inducer
inducer merged commit 5216e4a into mainJan 1, 2026
9 checks passed
@inducer
inducer deleted the towards-array-context-merge branch January 1, 2026 18:11
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@inducer@alexfikl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Towards array context (2025 merge) - #256

Merged
inducer merged 81 commits into
mainfrom
towards-array-context-merge
Jan 1, 2026
Merged

Towards array context (2025 merge)#256
inducer merged 81 commits into
mainfrom
towards-array-context-merge

Conversation

@inducer

@inducerinducer commented Dec 4, 2025

Copy link
Copy Markdown
Owner

Resumed from #139.


Relevant parts of summary from #139 follow:

Remaining porting issues

Upstream / downstream PRs

Speculative TODOs

  • Should some classes clone the actx? Here e.g. SumpyTreeIndependentDataForWrangler but also in boxtree.
    • The big worry is that cloning throws away any caches on the actx.
    • Pretty much all *Builder classes can be functions + all other memoized kernels can be functions, but should leave that for later since it can be done without breaking the world.
  • Rip out the timing stuff (not sure, just mentioned by @inducer at some point).
    • This would also need to be done in boxtree?
  • Add an array context to do the timing stuff? (now Make an array context to handle timing #259)

@inducer
inducerforce-pushed the towards-array-context-merge branch from f214429 to 53b6fc3CompareDecember 9, 2025 22:40
@inducer
inducerforce-pushed the towards-array-context-merge branch from 6f1f569 to 22b9b8fCompareDecember 10, 2025 21:39
@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI: As in boxtree, I've moved towards annotating with ArrayContext instead of PyOpenCLArrayContext. I like that direction because it conveys the ambition (cough) that all this will work with any actx. It also prevents having to splatter actx-type asserts everywhere downstream. If you hate it, it's a single commit that could be unwound.

@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

@alexfikl

Copy link
Copy Markdown
Collaborator

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

Definitely! I'm fine with continuing the work here too, whatever's more convenient.

@inducer
inducerforce-pushed the towards-array-context-merge branch from f8a618b to 5a00e5fCompareJanuary 1, 2026 14:27
@inducer

Copy link
Copy Markdown
OwnerAuthor

Uh-oh. I think I may have force-pushed over two commits of yours just now:

image

Do you still have those? Could you reapply them?

@alexfikl

alexfikl commented Jan 1, 2026

Copy link
Copy Markdown
Collaborator

Do you still have those? Could you reapply them?

Done! 😁

EDIT: I think the pytential job is confused because we're now pointing to boxtree main?

@inducer
inducer marked this pull request as ready for review January 1, 2026 16:44
@inducer
inducer enabled auto-merge (squash) January 1, 2026 16:45
@inducer
inducer merged commit 5216e4a into mainJan 1, 2026
9 checks passed
@inducer
inducer deleted the towards-array-context-merge branch January 1, 2026 18:11
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@inducer@alexfikl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Towards array context (2025 merge) - #256

Merged
inducer merged 81 commits into
mainfrom
towards-array-context-merge
Jan 1, 2026
Merged

Towards array context (2025 merge)#256
inducer merged 81 commits into
mainfrom
towards-array-context-merge

Conversation

@inducer

@inducerinducer commented Dec 4, 2025

Copy link
Copy Markdown
Owner

Resumed from #139.


Relevant parts of summary from #139 follow:

Remaining porting issues

Upstream / downstream PRs

Speculative TODOs

  • Should some classes clone the actx? Here e.g. SumpyTreeIndependentDataForWrangler but also in boxtree.
    • The big worry is that cloning throws away any caches on the actx.
    • Pretty much all *Builder classes can be functions + all other memoized kernels can be functions, but should leave that for later since it can be done without breaking the world.
  • Rip out the timing stuff (not sure, just mentioned by @inducer at some point).
    • This would also need to be done in boxtree?
  • Add an array context to do the timing stuff? (now Make an array context to handle timing #259)

@inducer
inducerforce-pushed the towards-array-context-merge branch from f214429 to 53b6fc3CompareDecember 9, 2025 22:40
@inducer
inducerforce-pushed the towards-array-context-merge branch from 6f1f569 to 22b9b8fCompareDecember 10, 2025 21:39
@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI: As in boxtree, I've moved towards annotating with ArrayContext instead of PyOpenCLArrayContext. I like that direction because it conveys the ambition (cough) that all this will work with any actx. It also prevents having to splatter actx-type asserts everywhere downstream. If you hate it, it's a single commit that could be unwound.

@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

@alexfikl

Copy link
Copy Markdown
Collaborator

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

Definitely! I'm fine with continuing the work here too, whatever's more convenient.

@inducer
inducerforce-pushed the towards-array-context-merge branch from f8a618b to 5a00e5fCompareJanuary 1, 2026 14:27
@inducer

Copy link
Copy Markdown
OwnerAuthor

Uh-oh. I think I may have force-pushed over two commits of yours just now:

image

Do you still have those? Could you reapply them?

@alexfikl

alexfikl commented Jan 1, 2026

Copy link
Copy Markdown
Collaborator

Do you still have those? Could you reapply them?

Done! 😁

EDIT: I think the pytential job is confused because we're now pointing to boxtree main?

@inducer
inducer marked this pull request as ready for review January 1, 2026 16:44
@inducer
inducer enabled auto-merge (squash) January 1, 2026 16:45
@inducer
inducer merged commit 5216e4a into mainJan 1, 2026
9 checks passed
@inducer
inducer deleted the towards-array-context-merge branch January 1, 2026 18:11
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@inducer@alexfikl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Towards array context (2025 merge) - #256

Merged
inducer merged 81 commits into
mainfrom
towards-array-context-merge
Jan 1, 2026
Merged

Towards array context (2025 merge)#256
inducer merged 81 commits into
mainfrom
towards-array-context-merge

Conversation

@inducer

@inducerinducer commented Dec 4, 2025

Copy link
Copy Markdown
Owner

Resumed from #139.


Relevant parts of summary from #139 follow:

Remaining porting issues

Upstream / downstream PRs

Speculative TODOs

  • Should some classes clone the actx? Here e.g. SumpyTreeIndependentDataForWrangler but also in boxtree.
    • The big worry is that cloning throws away any caches on the actx.
    • Pretty much all *Builder classes can be functions + all other memoized kernels can be functions, but should leave that for later since it can be done without breaking the world.
  • Rip out the timing stuff (not sure, just mentioned by @inducer at some point).
    • This would also need to be done in boxtree?
  • Add an array context to do the timing stuff? (now Make an array context to handle timing #259)

@inducer
inducerforce-pushed the towards-array-context-merge branch from f214429 to 53b6fc3CompareDecember 9, 2025 22:40
@inducer
inducerforce-pushed the towards-array-context-merge branch from 6f1f569 to 22b9b8fCompareDecember 10, 2025 21:39
@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI: As in boxtree, I've moved towards annotating with ArrayContext instead of PyOpenCLArrayContext. I like that direction because it conveys the ambition (cough) that all this will work with any actx. It also prevents having to splatter actx-type asserts everywhere downstream. If you hate it, it's a single commit that could be unwound.

@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

@alexfikl

Copy link
Copy Markdown
Collaborator

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

Definitely! I'm fine with continuing the work here too, whatever's more convenient.

@inducer
inducerforce-pushed the towards-array-context-merge branch from f8a618b to 5a00e5fCompareJanuary 1, 2026 14:27
@inducer

Copy link
Copy Markdown
OwnerAuthor

Uh-oh. I think I may have force-pushed over two commits of yours just now:

image

Do you still have those? Could you reapply them?

@alexfikl

alexfikl commented Jan 1, 2026

Copy link
Copy Markdown
Collaborator

Do you still have those? Could you reapply them?

Done! 😁

EDIT: I think the pytential job is confused because we're now pointing to boxtree main?

@inducer
inducer marked this pull request as ready for review January 1, 2026 16:44
@inducer
inducer enabled auto-merge (squash) January 1, 2026 16:45
@inducer
inducer merged commit 5216e4a into mainJan 1, 2026
9 checks passed
@inducer
inducer deleted the towards-array-context-merge branch January 1, 2026 18:11
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@inducer@alexfikl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Towards array context (2025 merge) - #256

Merged
inducer merged 81 commits into
mainfrom
towards-array-context-merge
Jan 1, 2026
Merged

Towards array context (2025 merge)#256
inducer merged 81 commits into
mainfrom
towards-array-context-merge

Conversation

@inducer

@inducerinducer commented Dec 4, 2025

Copy link
Copy Markdown
Owner

Resumed from #139.


Relevant parts of summary from #139 follow:

Remaining porting issues

Upstream / downstream PRs

Speculative TODOs

  • Should some classes clone the actx? Here e.g. SumpyTreeIndependentDataForWrangler but also in boxtree.
    • The big worry is that cloning throws away any caches on the actx.
    • Pretty much all *Builder classes can be functions + all other memoized kernels can be functions, but should leave that for later since it can be done without breaking the world.
  • Rip out the timing stuff (not sure, just mentioned by @inducer at some point).
    • This would also need to be done in boxtree?
  • Add an array context to do the timing stuff? (now Make an array context to handle timing #259)

@inducer
inducerforce-pushed the towards-array-context-merge branch from f214429 to 53b6fc3CompareDecember 9, 2025 22:40
@inducer
inducerforce-pushed the towards-array-context-merge branch from 6f1f569 to 22b9b8fCompareDecember 10, 2025 21:39
@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI: As in boxtree, I've moved towards annotating with ArrayContext instead of PyOpenCLArrayContext. I like that direction because it conveys the ambition (cough) that all this will work with any actx. It also prevents having to splatter actx-type asserts everywhere downstream. If you hate it, it's a single commit that could be unwound.

@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

@alexfikl

Copy link
Copy Markdown
Collaborator

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

Definitely! I'm fine with continuing the work here too, whatever's more convenient.

@inducer
inducerforce-pushed the towards-array-context-merge branch from f8a618b to 5a00e5fCompareJanuary 1, 2026 14:27
@inducer

Copy link
Copy Markdown
OwnerAuthor

Uh-oh. I think I may have force-pushed over two commits of yours just now:

image

Do you still have those? Could you reapply them?

@alexfikl

alexfikl commented Jan 1, 2026

Copy link
Copy Markdown
Collaborator

Do you still have those? Could you reapply them?

Done! 😁

EDIT: I think the pytential job is confused because we're now pointing to boxtree main?

@inducer
inducer marked this pull request as ready for review January 1, 2026 16:44
@inducer
inducer enabled auto-merge (squash) January 1, 2026 16:45
@inducer
inducer merged commit 5216e4a into mainJan 1, 2026
9 checks passed
@inducer
inducer deleted the towards-array-context-merge branch January 1, 2026 18:11
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@inducer@alexfikl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Towards array context (2025 merge) - #256

Merged
inducer merged 81 commits into
mainfrom
towards-array-context-merge
Jan 1, 2026
Merged

Towards array context (2025 merge)#256
inducer merged 81 commits into
mainfrom
towards-array-context-merge

Conversation

@inducer

@inducerinducer commented Dec 4, 2025

Copy link
Copy Markdown
Owner

Resumed from #139.


Relevant parts of summary from #139 follow:

Remaining porting issues

Upstream / downstream PRs

Speculative TODOs

  • Should some classes clone the actx? Here e.g. SumpyTreeIndependentDataForWrangler but also in boxtree.
    • The big worry is that cloning throws away any caches on the actx.
    • Pretty much all *Builder classes can be functions + all other memoized kernels can be functions, but should leave that for later since it can be done without breaking the world.
  • Rip out the timing stuff (not sure, just mentioned by @inducer at some point).
    • This would also need to be done in boxtree?
  • Add an array context to do the timing stuff? (now Make an array context to handle timing #259)

@inducer
inducerforce-pushed the towards-array-context-merge branch from f214429 to 53b6fc3CompareDecember 9, 2025 22:40
@inducer
inducerforce-pushed the towards-array-context-merge branch from 6f1f569 to 22b9b8fCompareDecember 10, 2025 21:39
@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI: As in boxtree, I've moved towards annotating with ArrayContext instead of PyOpenCLArrayContext. I like that direction because it conveys the ambition (cough) that all this will work with any actx. It also prevents having to splatter actx-type asserts everywhere downstream. If you hate it, it's a single commit that could be unwound.

@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

@alexfikl

Copy link
Copy Markdown
Collaborator

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

Definitely! I'm fine with continuing the work here too, whatever's more convenient.

@inducer
inducerforce-pushed the towards-array-context-merge branch from f8a618b to 5a00e5fCompareJanuary 1, 2026 14:27
@inducer

Copy link
Copy Markdown
OwnerAuthor

Uh-oh. I think I may have force-pushed over two commits of yours just now:

image

Do you still have those? Could you reapply them?

@alexfikl

alexfikl commented Jan 1, 2026

Copy link
Copy Markdown
Collaborator

Do you still have those? Could you reapply them?

Done! 😁

EDIT: I think the pytential job is confused because we're now pointing to boxtree main?

@inducer
inducer marked this pull request as ready for review January 1, 2026 16:44
@inducer
inducer enabled auto-merge (squash) January 1, 2026 16:45
@inducer
inducer merged commit 5216e4a into mainJan 1, 2026
9 checks passed
@inducer
inducer deleted the towards-array-context-merge branch January 1, 2026 18:11
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@inducer@alexfikl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Towards array context (2025 merge) - #256

Merged
inducer merged 81 commits into
mainfrom
towards-array-context-merge
Jan 1, 2026
Merged

Towards array context (2025 merge)#256
inducer merged 81 commits into
mainfrom
towards-array-context-merge

Conversation

@inducer

@inducerinducer commented Dec 4, 2025

Copy link
Copy Markdown
Owner

Resumed from #139.


Relevant parts of summary from #139 follow:

Remaining porting issues

Upstream / downstream PRs

Speculative TODOs

  • Should some classes clone the actx? Here e.g. SumpyTreeIndependentDataForWrangler but also in boxtree.
    • The big worry is that cloning throws away any caches on the actx.
    • Pretty much all *Builder classes can be functions + all other memoized kernels can be functions, but should leave that for later since it can be done without breaking the world.
  • Rip out the timing stuff (not sure, just mentioned by @inducer at some point).
    • This would also need to be done in boxtree?
  • Add an array context to do the timing stuff? (now Make an array context to handle timing #259)

@inducer
inducerforce-pushed the towards-array-context-merge branch from f214429 to 53b6fc3CompareDecember 9, 2025 22:40
@inducer
inducerforce-pushed the towards-array-context-merge branch from 6f1f569 to 22b9b8fCompareDecember 10, 2025 21:39
@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI: As in boxtree, I've moved towards annotating with ArrayContext instead of PyOpenCLArrayContext. I like that direction because it conveys the ambition (cough) that all this will work with any actx. It also prevents having to splatter actx-type asserts everywhere downstream. If you hate it, it's a single commit that could be unwound.

@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

@alexfikl

Copy link
Copy Markdown
Collaborator

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

Definitely! I'm fine with continuing the work here too, whatever's more convenient.

@inducer
inducerforce-pushed the towards-array-context-merge branch from f8a618b to 5a00e5fCompareJanuary 1, 2026 14:27
@inducer

Copy link
Copy Markdown
OwnerAuthor

Uh-oh. I think I may have force-pushed over two commits of yours just now:

image

Do you still have those? Could you reapply them?

@alexfikl

alexfikl commented Jan 1, 2026

Copy link
Copy Markdown
Collaborator

Do you still have those? Could you reapply them?

Done! 😁

EDIT: I think the pytential job is confused because we're now pointing to boxtree main?

@inducer
inducer marked this pull request as ready for review January 1, 2026 16:44
@inducer
inducer enabled auto-merge (squash) January 1, 2026 16:45
@inducer
inducer merged commit 5216e4a into mainJan 1, 2026
9 checks passed
@inducer
inducer deleted the towards-array-context-merge branch January 1, 2026 18:11
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@inducer@alexfikl
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Towards array context (2025 merge) - #256

Merged
inducer merged 81 commits into
mainfrom
towards-array-context-merge
Jan 1, 2026
Merged

Towards array context (2025 merge)#256
inducer merged 81 commits into
mainfrom
towards-array-context-merge

Conversation

@inducer

@inducerinducer commented Dec 4, 2025

Copy link
Copy Markdown
Owner

Resumed from #139.


Relevant parts of summary from #139 follow:

Remaining porting issues

Upstream / downstream PRs

Speculative TODOs

  • Should some classes clone the actx? Here e.g. SumpyTreeIndependentDataForWrangler but also in boxtree.
    • The big worry is that cloning throws away any caches on the actx.
    • Pretty much all *Builder classes can be functions + all other memoized kernels can be functions, but should leave that for later since it can be done without breaking the world.
  • Rip out the timing stuff (not sure, just mentioned by @inducer at some point).
    • This would also need to be done in boxtree?
  • Add an array context to do the timing stuff? (now Make an array context to handle timing #259)

@inducer
inducerforce-pushed the towards-array-context-merge branch from f214429 to 53b6fc3CompareDecember 9, 2025 22:40
@inducer
inducerforce-pushed the towards-array-context-merge branch from 6f1f569 to 22b9b8fCompareDecember 10, 2025 21:39
@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI: As in boxtree, I've moved towards annotating with ArrayContext instead of PyOpenCLArrayContext. I like that direction because it conveys the ambition (cough) that all this will work with any actx. It also prevents having to splatter actx-type asserts everywhere downstream. If you hate it, it's a single commit that could be unwound.

@inducer

Copy link
Copy Markdown
OwnerAuthor

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

@alexfikl

Copy link
Copy Markdown
Collaborator

FYI2: The local tests are now passing here, so maybe this can become #139? (I.e. I would push this code there?) Does that sound OK?

Definitely! I'm fine with continuing the work here too, whatever's more convenient.

@inducer
inducerforce-pushed the towards-array-context-merge branch from f8a618b to 5a00e5fCompareJanuary 1, 2026 14:27
@inducer

Copy link
Copy Markdown
OwnerAuthor

Uh-oh. I think I may have force-pushed over two commits of yours just now:

image

Do you still have those? Could you reapply them?

@alexfikl

alexfikl commented Jan 1, 2026

Copy link
Copy Markdown
Collaborator

Do you still have those? Could you reapply them?

Done! 😁

EDIT: I think the pytential job is confused because we're now pointing to boxtree main?

@inducer
inducer marked this pull request as ready for review January 1, 2026 16:44
@inducer
inducer enabled auto-merge (squash) January 1, 2026 16:45
@inducer
inducer merged commit 5216e4a into mainJan 1, 2026
9 checks passed
@inducer
inducer deleted the towards-array-context-merge branch January 1, 2026 18:11
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@inducer@alexfikl