Skip to content

crypto - threaded K12: separate context computation from thread spawning - #25793

Merged
jedisct1 merged 2 commits into
ziglang:masterfrom
jedisct1:precompute-contexts
Nov 3, 2025
Merged

crypto - threaded K12: separate context computation from thread spawning#25793
jedisct1 merged 2 commits into
ziglang:masterfrom
jedisct1:precompute-contexts

Conversation

@jedisct1

Copy link
Copy Markdown
Contributor

Compute all contexts and store them in a pre-allocated array, then spawn threads using the pre-computed contexts.

This ensures each context is fully materialized in memory with the correct values before any thread tries to access it.

Also unroll the permutation rounds only twice.

This appears to deliver the best performance thanks to improved cache utilization, and it’s consistent with what we already do for regular SHA3.

Compute all contexts and store them in a pre-allocated array,
then spawn threads using the pre-computed contexts.
This ensures each context is fully materialized in memory with the
correct values before any thread tries to access it.
This appears to deliver the best performance thanks to improved cache
utilization, and it’s consistent with what we already do for SHA3.
@jedisct1
jedisct1 merged commit ee4df4a into ziglang:masterNov 3, 2025
9 checks passed
andrewrk added a commit that referenced this pull request Nov 22, 2025
I would like a chance to review this before it lands, please. Feel free
to submit the work again without changes and I will make review
comments.
In the meantime, these reverts avoid intermittent CI failures, and
remove bad patterns from occurring in the standard library that other
users might copy.
Revert "std.crypto: improve KT documentation, use key_length for B3 key length (#25807)"
This reverts commit 4b593a6.
Revert "crypto - threaded K12: separate context computation from thread spawning (#25793)"
This reverts commit ee4df4a.
Revert "crypto.kt128: when using incremental hashing, use SIMD when possible (#25783)"
This reverts commit bf90825.
Revert "Add std.crypto.hash.sha3.{KT128,KT256} - RFC 9861. (#25593)"
This reverts commit 95c76b1.
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.

1 participant

@jedisct1
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
crypto - threaded K12: separate context computation from thread spawning by jedisct1 · Pull Request #25793 · ziglang/zig · GitHub
Skip to content

crypto - threaded K12: separate context computation from thread spawning - #25793

Merged
jedisct1 merged 2 commits into
ziglang:masterfrom
jedisct1:precompute-contexts
Nov 3, 2025
Merged

crypto - threaded K12: separate context computation from thread spawning#25793
jedisct1 merged 2 commits into
ziglang:masterfrom
jedisct1:precompute-contexts

Conversation

@jedisct1

Copy link
Copy Markdown
Contributor

Compute all contexts and store them in a pre-allocated array, then spawn threads using the pre-computed contexts.

This ensures each context is fully materialized in memory with the correct values before any thread tries to access it.

Also unroll the permutation rounds only twice.

This appears to deliver the best performance thanks to improved cache utilization, and it’s consistent with what we already do for regular SHA3.

Compute all contexts and store them in a pre-allocated array,
then spawn threads using the pre-computed contexts.
This ensures each context is fully materialized in memory with the
correct values before any thread tries to access it.
This appears to deliver the best performance thanks to improved cache
utilization, and it’s consistent with what we already do for SHA3.
@jedisct1
jedisct1 merged commit ee4df4a into ziglang:masterNov 3, 2025
9 checks passed
andrewrk added a commit that referenced this pull request Nov 22, 2025
I would like a chance to review this before it lands, please. Feel free
to submit the work again without changes and I will make review
comments.
In the meantime, these reverts avoid intermittent CI failures, and
remove bad patterns from occurring in the standard library that other
users might copy.
Revert "std.crypto: improve KT documentation, use key_length for B3 key length (#25807)"
This reverts commit 4b593a6.
Revert "crypto - threaded K12: separate context computation from thread spawning (#25793)"
This reverts commit ee4df4a.
Revert "crypto.kt128: when using incremental hashing, use SIMD when possible (#25783)"
This reverts commit bf90825.
Revert "Add std.crypto.hash.sha3.{KT128,KT256} - RFC 9861. (#25593)"
This reverts commit 95c76b1.
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.

1 participant

@jedisct1
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' crypto - threaded K12: separate context computation from thread spawning by jedisct1 · Pull Request #25793 · ziglang/zig · GitHub
Skip to content

crypto - threaded K12: separate context computation from thread spawning - #25793

Merged
jedisct1 merged 2 commits into
ziglang:masterfrom
jedisct1:precompute-contexts
Nov 3, 2025
Merged

crypto - threaded K12: separate context computation from thread spawning#25793
jedisct1 merged 2 commits into
ziglang:masterfrom
jedisct1:precompute-contexts

Conversation

@jedisct1

Copy link
Copy Markdown
Contributor

Compute all contexts and store them in a pre-allocated array, then spawn threads using the pre-computed contexts.

This ensures each context is fully materialized in memory with the correct values before any thread tries to access it.

Also unroll the permutation rounds only twice.

This appears to deliver the best performance thanks to improved cache utilization, and it’s consistent with what we already do for regular SHA3.

Compute all contexts and store them in a pre-allocated array,
then spawn threads using the pre-computed contexts.
This ensures each context is fully materialized in memory with the
correct values before any thread tries to access it.
This appears to deliver the best performance thanks to improved cache
utilization, and it’s consistent with what we already do for SHA3.
@jedisct1
jedisct1 merged commit ee4df4a into ziglang:masterNov 3, 2025
9 checks passed
andrewrk added a commit that referenced this pull request Nov 22, 2025
I would like a chance to review this before it lands, please. Feel free
to submit the work again without changes and I will make review
comments.
In the meantime, these reverts avoid intermittent CI failures, and
remove bad patterns from occurring in the standard library that other
users might copy.
Revert "std.crypto: improve KT documentation, use key_length for B3 key length (#25807)"
This reverts commit 4b593a6.
Revert "crypto - threaded K12: separate context computation from thread spawning (#25793)"
This reverts commit ee4df4a.
Revert "crypto.kt128: when using incremental hashing, use SIMD when possible (#25783)"
This reverts commit bf90825.
Revert "Add std.crypto.hash.sha3.{KT128,KT256} - RFC 9861. (#25593)"
This reverts commit 95c76b1.
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.

1 participant

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

crypto - threaded K12: separate context computation from thread spawning - #25793

Merged
jedisct1 merged 2 commits into
ziglang:masterfrom
jedisct1:precompute-contexts
Nov 3, 2025
Merged

crypto - threaded K12: separate context computation from thread spawning#25793
jedisct1 merged 2 commits into
ziglang:masterfrom
jedisct1:precompute-contexts

Conversation

@jedisct1

Copy link
Copy Markdown
Contributor

Compute all contexts and store them in a pre-allocated array, then spawn threads using the pre-computed contexts.

This ensures each context is fully materialized in memory with the correct values before any thread tries to access it.

Also unroll the permutation rounds only twice.

This appears to deliver the best performance thanks to improved cache utilization, and it’s consistent with what we already do for regular SHA3.

Compute all contexts and store them in a pre-allocated array,
then spawn threads using the pre-computed contexts.
This ensures each context is fully materialized in memory with the
correct values before any thread tries to access it.
This appears to deliver the best performance thanks to improved cache
utilization, and it’s consistent with what we already do for SHA3.
@jedisct1
jedisct1 merged commit ee4df4a into ziglang:masterNov 3, 2025
9 checks passed
andrewrk added a commit that referenced this pull request Nov 22, 2025
I would like a chance to review this before it lands, please. Feel free
to submit the work again without changes and I will make review
comments.
In the meantime, these reverts avoid intermittent CI failures, and
remove bad patterns from occurring in the standard library that other
users might copy.
Revert "std.crypto: improve KT documentation, use key_length for B3 key length (#25807)"
This reverts commit 4b593a6.
Revert "crypto - threaded K12: separate context computation from thread spawning (#25793)"
This reverts commit ee4df4a.
Revert "crypto.kt128: when using incremental hashing, use SIMD when possible (#25783)"
This reverts commit bf90825.
Revert "Add std.crypto.hash.sha3.{KT128,KT256} - RFC 9861. (#25593)"
This reverts commit 95c76b1.
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.

1 participant

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

crypto - threaded K12: separate context computation from thread spawning - #25793

Merged
jedisct1 merged 2 commits into
ziglang:masterfrom
jedisct1:precompute-contexts
Nov 3, 2025
Merged

crypto - threaded K12: separate context computation from thread spawning#25793
jedisct1 merged 2 commits into
ziglang:masterfrom
jedisct1:precompute-contexts

Conversation

@jedisct1

Copy link
Copy Markdown
Contributor

Compute all contexts and store them in a pre-allocated array, then spawn threads using the pre-computed contexts.

This ensures each context is fully materialized in memory with the correct values before any thread tries to access it.

Also unroll the permutation rounds only twice.

This appears to deliver the best performance thanks to improved cache utilization, and it’s consistent with what we already do for regular SHA3.

Compute all contexts and store them in a pre-allocated array,
then spawn threads using the pre-computed contexts.
This ensures each context is fully materialized in memory with the
correct values before any thread tries to access it.
This appears to deliver the best performance thanks to improved cache
utilization, and it’s consistent with what we already do for SHA3.
@jedisct1
jedisct1 merged commit ee4df4a into ziglang:masterNov 3, 2025
9 checks passed
andrewrk added a commit that referenced this pull request Nov 22, 2025
I would like a chance to review this before it lands, please. Feel free
to submit the work again without changes and I will make review
comments.
In the meantime, these reverts avoid intermittent CI failures, and
remove bad patterns from occurring in the standard library that other
users might copy.
Revert "std.crypto: improve KT documentation, use key_length for B3 key length (#25807)"
This reverts commit 4b593a6.
Revert "crypto - threaded K12: separate context computation from thread spawning (#25793)"
This reverts commit ee4df4a.
Revert "crypto.kt128: when using incremental hashing, use SIMD when possible (#25783)"
This reverts commit bf90825.
Revert "Add std.crypto.hash.sha3.{KT128,KT256} - RFC 9861. (#25593)"
This reverts commit 95c76b1.
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.

1 participant

@jedisct1
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' crypto - threaded K12: separate context computation from thread spawning by jedisct1 · Pull Request #25793 · ziglang/zig · GitHub
Skip to content

crypto - threaded K12: separate context computation from thread spawning - #25793

Merged
jedisct1 merged 2 commits into
ziglang:masterfrom
jedisct1:precompute-contexts
Nov 3, 2025
Merged

crypto - threaded K12: separate context computation from thread spawning#25793
jedisct1 merged 2 commits into
ziglang:masterfrom
jedisct1:precompute-contexts

Conversation

@jedisct1

Copy link
Copy Markdown
Contributor

Compute all contexts and store them in a pre-allocated array, then spawn threads using the pre-computed contexts.

This ensures each context is fully materialized in memory with the correct values before any thread tries to access it.

Also unroll the permutation rounds only twice.

This appears to deliver the best performance thanks to improved cache utilization, and it’s consistent with what we already do for regular SHA3.

Compute all contexts and store them in a pre-allocated array,
then spawn threads using the pre-computed contexts.
This ensures each context is fully materialized in memory with the
correct values before any thread tries to access it.
This appears to deliver the best performance thanks to improved cache
utilization, and it’s consistent with what we already do for SHA3.
@jedisct1
jedisct1 merged commit ee4df4a into ziglang:masterNov 3, 2025
9 checks passed
andrewrk added a commit that referenced this pull request Nov 22, 2025
I would like a chance to review this before it lands, please. Feel free
to submit the work again without changes and I will make review
comments.
In the meantime, these reverts avoid intermittent CI failures, and
remove bad patterns from occurring in the standard library that other
users might copy.
Revert "std.crypto: improve KT documentation, use key_length for B3 key length (#25807)"
This reverts commit 4b593a6.
Revert "crypto - threaded K12: separate context computation from thread spawning (#25793)"
This reverts commit ee4df4a.
Revert "crypto.kt128: when using incremental hashing, use SIMD when possible (#25783)"
This reverts commit bf90825.
Revert "Add std.crypto.hash.sha3.{KT128,KT256} - RFC 9861. (#25593)"
This reverts commit 95c76b1.
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.

1 participant

@jedisct1
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); crypto - threaded K12: separate context computation from thread spawning by jedisct1 · Pull Request #25793 · ziglang/zig · GitHub
Skip to content

crypto - threaded K12: separate context computation from thread spawning - #25793

Merged
jedisct1 merged 2 commits into
ziglang:masterfrom
jedisct1:precompute-contexts
Nov 3, 2025
Merged

crypto - threaded K12: separate context computation from thread spawning#25793
jedisct1 merged 2 commits into
ziglang:masterfrom
jedisct1:precompute-contexts

Conversation

@jedisct1

Copy link
Copy Markdown
Contributor

Compute all contexts and store them in a pre-allocated array, then spawn threads using the pre-computed contexts.

This ensures each context is fully materialized in memory with the correct values before any thread tries to access it.

Also unroll the permutation rounds only twice.

This appears to deliver the best performance thanks to improved cache utilization, and it’s consistent with what we already do for regular SHA3.

Compute all contexts and store them in a pre-allocated array,
then spawn threads using the pre-computed contexts.
This ensures each context is fully materialized in memory with the
correct values before any thread tries to access it.
This appears to deliver the best performance thanks to improved cache
utilization, and it’s consistent with what we already do for SHA3.
@jedisct1
jedisct1 merged commit ee4df4a into ziglang:masterNov 3, 2025
9 checks passed
andrewrk added a commit that referenced this pull request Nov 22, 2025
I would like a chance to review this before it lands, please. Feel free
to submit the work again without changes and I will make review
comments.
In the meantime, these reverts avoid intermittent CI failures, and
remove bad patterns from occurring in the standard library that other
users might copy.
Revert "std.crypto: improve KT documentation, use key_length for B3 key length (#25807)"
This reverts commit 4b593a6.
Revert "crypto - threaded K12: separate context computation from thread spawning (#25793)"
This reverts commit ee4df4a.
Revert "crypto.kt128: when using incremental hashing, use SIMD when possible (#25783)"
This reverts commit bf90825.
Revert "Add std.crypto.hash.sha3.{KT128,KT256} - RFC 9861. (#25593)"
This reverts commit 95c76b1.
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.

1 participant

@jedisct1