Skip to content

Revert "signature: replace signature_derive with blanket impls (#1827)" - #1840

Merged
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls
May 1, 2025
Merged

Revert "signature: replace signature_derive with blanket impls (#1827)"#1840
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts commit bf47748.

Per #1831 this change breaks inference when there is a single explicit impl of the Signer trait.

It also wasn't possible to add corresponding blanket impls to the Async* traits, e.g. AsyncSigner for AsyncDigestSigner, because of the existing blanket impl of AsyncSigner for Signer which we definitely want to preserve.

As a general rule of thumb, blanket impls only make sense if they work 100% of the time, which doesn't seem to be happening here.

Closes#1831

tarcieri added 2 commits May 1, 2025 11:17
…)"
This reverts commit bf47748.
Per #1831 this change breaks inference when there is a single explicit
impl of the `Signer` trait.
It also wasn't possible to add corresponding blanket impls to the
`Async*` traits, e.g. `AsyncSigner` for `AsyncDigestSigner`, because of
the existing blanket impl of `AsyncSigner` for `Signer` which we
definitely want to preserve.
As a general rule of thumb, blanket impls only make sense if they work
100% of the time, which doesn't seem to be happening here.
Closes#1831
@tarcieri
tarcieri merged commit ac54439 into masterMay 1, 2025
@tarcieri
tarcieri deleted the signature/revert-blanket-impls branch May 1, 2025 17:24
@baloo

baloo commented May 5, 2025

Copy link
Copy Markdown
Member

Wait, which crates actually consumes the signature_derive again?

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@baloo I think most of the crates avoid it to avoid pulling in the proc macro stack (in which case maybe it's not a great solution)

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

well where I'm trying to go is: maybe we can just pull the signature_derive altogether? I can't find a single consumer of it.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Sure

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

This is actually used in yubihsm.rs!

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Yeah, that's probably the one thing that uses it

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.

signature v3: type inference regression

2 participants

@tarcieri@baloo
, '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" + '
Revert "signature: replace `signature_derive` with blanket impls (#1827)" by tarcieri · Pull Request #1840 · RustCrypto/traits · GitHub
Skip to content

Revert "signature: replace signature_derive with blanket impls (#1827)" - #1840

Merged
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls
May 1, 2025
Merged

Revert "signature: replace signature_derive with blanket impls (#1827)"#1840
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts commit bf47748.

Per #1831 this change breaks inference when there is a single explicit impl of the Signer trait.

It also wasn't possible to add corresponding blanket impls to the Async* traits, e.g. AsyncSigner for AsyncDigestSigner, because of the existing blanket impl of AsyncSigner for Signer which we definitely want to preserve.

As a general rule of thumb, blanket impls only make sense if they work 100% of the time, which doesn't seem to be happening here.

Closes#1831

tarcieri added 2 commits May 1, 2025 11:17
…)"
This reverts commit bf47748.
Per #1831 this change breaks inference when there is a single explicit
impl of the `Signer` trait.
It also wasn't possible to add corresponding blanket impls to the
`Async*` traits, e.g. `AsyncSigner` for `AsyncDigestSigner`, because of
the existing blanket impl of `AsyncSigner` for `Signer` which we
definitely want to preserve.
As a general rule of thumb, blanket impls only make sense if they work
100% of the time, which doesn't seem to be happening here.
Closes#1831
@tarcieri
tarcieri merged commit ac54439 into masterMay 1, 2025
@tarcieri
tarcieri deleted the signature/revert-blanket-impls branch May 1, 2025 17:24
@baloo

baloo commented May 5, 2025

Copy link
Copy Markdown
Member

Wait, which crates actually consumes the signature_derive again?

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@baloo I think most of the crates avoid it to avoid pulling in the proc macro stack (in which case maybe it's not a great solution)

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

well where I'm trying to go is: maybe we can just pull the signature_derive altogether? I can't find a single consumer of it.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Sure

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

This is actually used in yubihsm.rs!

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Yeah, that's probably the one thing that uses it

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.

signature v3: type inference regression

2 participants

@tarcieri@baloo
, '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('^' + ".*" + ' Revert "signature: replace `signature_derive` with blanket impls (#1827)" by tarcieri · Pull Request #1840 · RustCrypto/traits · GitHub
Skip to content

Revert "signature: replace signature_derive with blanket impls (#1827)" - #1840

Merged
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls
May 1, 2025
Merged

Revert "signature: replace signature_derive with blanket impls (#1827)"#1840
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts commit bf47748.

Per #1831 this change breaks inference when there is a single explicit impl of the Signer trait.

It also wasn't possible to add corresponding blanket impls to the Async* traits, e.g. AsyncSigner for AsyncDigestSigner, because of the existing blanket impl of AsyncSigner for Signer which we definitely want to preserve.

As a general rule of thumb, blanket impls only make sense if they work 100% of the time, which doesn't seem to be happening here.

Closes#1831

tarcieri added 2 commits May 1, 2025 11:17
…)"
This reverts commit bf47748.
Per #1831 this change breaks inference when there is a single explicit
impl of the `Signer` trait.
It also wasn't possible to add corresponding blanket impls to the
`Async*` traits, e.g. `AsyncSigner` for `AsyncDigestSigner`, because of
the existing blanket impl of `AsyncSigner` for `Signer` which we
definitely want to preserve.
As a general rule of thumb, blanket impls only make sense if they work
100% of the time, which doesn't seem to be happening here.
Closes#1831
@tarcieri
tarcieri merged commit ac54439 into masterMay 1, 2025
@tarcieri
tarcieri deleted the signature/revert-blanket-impls branch May 1, 2025 17:24
@baloo

baloo commented May 5, 2025

Copy link
Copy Markdown
Member

Wait, which crates actually consumes the signature_derive again?

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@baloo I think most of the crates avoid it to avoid pulling in the proc macro stack (in which case maybe it's not a great solution)

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

well where I'm trying to go is: maybe we can just pull the signature_derive altogether? I can't find a single consumer of it.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Sure

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

This is actually used in yubihsm.rs!

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Yeah, that's probably the one thing that uses it

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.

signature v3: type inference regression

2 participants

@tarcieri@baloo
, '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('^' + ".*" + ' Revert "signature: replace `signature_derive` with blanket impls (#1827)" by tarcieri · Pull Request #1840 · RustCrypto/traits · GitHub
Skip to content

Revert "signature: replace signature_derive with blanket impls (#1827)" - #1840

Merged
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls
May 1, 2025
Merged

Revert "signature: replace signature_derive with blanket impls (#1827)"#1840
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts commit bf47748.

Per #1831 this change breaks inference when there is a single explicit impl of the Signer trait.

It also wasn't possible to add corresponding blanket impls to the Async* traits, e.g. AsyncSigner for AsyncDigestSigner, because of the existing blanket impl of AsyncSigner for Signer which we definitely want to preserve.

As a general rule of thumb, blanket impls only make sense if they work 100% of the time, which doesn't seem to be happening here.

Closes#1831

tarcieri added 2 commits May 1, 2025 11:17
…)"
This reverts commit bf47748.
Per #1831 this change breaks inference when there is a single explicit
impl of the `Signer` trait.
It also wasn't possible to add corresponding blanket impls to the
`Async*` traits, e.g. `AsyncSigner` for `AsyncDigestSigner`, because of
the existing blanket impl of `AsyncSigner` for `Signer` which we
definitely want to preserve.
As a general rule of thumb, blanket impls only make sense if they work
100% of the time, which doesn't seem to be happening here.
Closes#1831
@tarcieri
tarcieri merged commit ac54439 into masterMay 1, 2025
@tarcieri
tarcieri deleted the signature/revert-blanket-impls branch May 1, 2025 17:24
@baloo

baloo commented May 5, 2025

Copy link
Copy Markdown
Member

Wait, which crates actually consumes the signature_derive again?

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@baloo I think most of the crates avoid it to avoid pulling in the proc macro stack (in which case maybe it's not a great solution)

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

well where I'm trying to go is: maybe we can just pull the signature_derive altogether? I can't find a single consumer of it.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Sure

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

This is actually used in yubihsm.rs!

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Yeah, that's probably the one thing that uses it

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.

signature v3: type inference regression

2 participants

@tarcieri@baloo
, '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" + ' Revert "signature: replace `signature_derive` with blanket impls (#1827)" by tarcieri · Pull Request #1840 · RustCrypto/traits · GitHub
Skip to content

Revert "signature: replace signature_derive with blanket impls (#1827)" - #1840

Merged
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls
May 1, 2025
Merged

Revert "signature: replace signature_derive with blanket impls (#1827)"#1840
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts commit bf47748.

Per #1831 this change breaks inference when there is a single explicit impl of the Signer trait.

It also wasn't possible to add corresponding blanket impls to the Async* traits, e.g. AsyncSigner for AsyncDigestSigner, because of the existing blanket impl of AsyncSigner for Signer which we definitely want to preserve.

As a general rule of thumb, blanket impls only make sense if they work 100% of the time, which doesn't seem to be happening here.

Closes#1831

tarcieri added 2 commits May 1, 2025 11:17
…)"
This reverts commit bf47748.
Per #1831 this change breaks inference when there is a single explicit
impl of the `Signer` trait.
It also wasn't possible to add corresponding blanket impls to the
`Async*` traits, e.g. `AsyncSigner` for `AsyncDigestSigner`, because of
the existing blanket impl of `AsyncSigner` for `Signer` which we
definitely want to preserve.
As a general rule of thumb, blanket impls only make sense if they work
100% of the time, which doesn't seem to be happening here.
Closes#1831
@tarcieri
tarcieri merged commit ac54439 into masterMay 1, 2025
@tarcieri
tarcieri deleted the signature/revert-blanket-impls branch May 1, 2025 17:24
@baloo

baloo commented May 5, 2025

Copy link
Copy Markdown
Member

Wait, which crates actually consumes the signature_derive again?

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@baloo I think most of the crates avoid it to avoid pulling in the proc macro stack (in which case maybe it's not a great solution)

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

well where I'm trying to go is: maybe we can just pull the signature_derive altogether? I can't find a single consumer of it.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Sure

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

This is actually used in yubihsm.rs!

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Yeah, that's probably the one thing that uses it

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.

signature v3: type inference regression

2 participants

@tarcieri@baloo
, '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('^' + ".*" + ' Revert "signature: replace `signature_derive` with blanket impls (#1827)" by tarcieri · Pull Request #1840 · RustCrypto/traits · GitHub
Skip to content

Revert "signature: replace signature_derive with blanket impls (#1827)" - #1840

Merged
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls
May 1, 2025
Merged

Revert "signature: replace signature_derive with blanket impls (#1827)"#1840
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts commit bf47748.

Per #1831 this change breaks inference when there is a single explicit impl of the Signer trait.

It also wasn't possible to add corresponding blanket impls to the Async* traits, e.g. AsyncSigner for AsyncDigestSigner, because of the existing blanket impl of AsyncSigner for Signer which we definitely want to preserve.

As a general rule of thumb, blanket impls only make sense if they work 100% of the time, which doesn't seem to be happening here.

Closes#1831

tarcieri added 2 commits May 1, 2025 11:17
…)"
This reverts commit bf47748.
Per #1831 this change breaks inference when there is a single explicit
impl of the `Signer` trait.
It also wasn't possible to add corresponding blanket impls to the
`Async*` traits, e.g. `AsyncSigner` for `AsyncDigestSigner`, because of
the existing blanket impl of `AsyncSigner` for `Signer` which we
definitely want to preserve.
As a general rule of thumb, blanket impls only make sense if they work
100% of the time, which doesn't seem to be happening here.
Closes#1831
@tarcieri
tarcieri merged commit ac54439 into masterMay 1, 2025
@tarcieri
tarcieri deleted the signature/revert-blanket-impls branch May 1, 2025 17:24
@baloo

baloo commented May 5, 2025

Copy link
Copy Markdown
Member

Wait, which crates actually consumes the signature_derive again?

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@baloo I think most of the crates avoid it to avoid pulling in the proc macro stack (in which case maybe it's not a great solution)

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

well where I'm trying to go is: maybe we can just pull the signature_derive altogether? I can't find a single consumer of it.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Sure

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

This is actually used in yubihsm.rs!

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Yeah, that's probably the one thing that uses it

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.

signature v3: type inference regression

2 participants

@tarcieri@baloo
, '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); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Revert "signature: replace `signature_derive` with blanket impls (#1827)" by tarcieri · Pull Request #1840 · RustCrypto/traits · GitHub
Skip to content

Revert "signature: replace signature_derive with blanket impls (#1827)" - #1840

Merged
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls
May 1, 2025
Merged

Revert "signature: replace signature_derive with blanket impls (#1827)"#1840
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts commit bf47748.

Per #1831 this change breaks inference when there is a single explicit impl of the Signer trait.

It also wasn't possible to add corresponding blanket impls to the Async* traits, e.g. AsyncSigner for AsyncDigestSigner, because of the existing blanket impl of AsyncSigner for Signer which we definitely want to preserve.

As a general rule of thumb, blanket impls only make sense if they work 100% of the time, which doesn't seem to be happening here.

Closes#1831

tarcieri added 2 commits May 1, 2025 11:17
…)"
This reverts commit bf47748.
Per #1831 this change breaks inference when there is a single explicit
impl of the `Signer` trait.
It also wasn't possible to add corresponding blanket impls to the
`Async*` traits, e.g. `AsyncSigner` for `AsyncDigestSigner`, because of
the existing blanket impl of `AsyncSigner` for `Signer` which we
definitely want to preserve.
As a general rule of thumb, blanket impls only make sense if they work
100% of the time, which doesn't seem to be happening here.
Closes#1831
@tarcieri
tarcieri merged commit ac54439 into masterMay 1, 2025
@tarcieri
tarcieri deleted the signature/revert-blanket-impls branch May 1, 2025 17:24
@baloo

baloo commented May 5, 2025

Copy link
Copy Markdown
Member

Wait, which crates actually consumes the signature_derive again?

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@baloo I think most of the crates avoid it to avoid pulling in the proc macro stack (in which case maybe it's not a great solution)

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

well where I'm trying to go is: maybe we can just pull the signature_derive altogether? I can't find a single consumer of it.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Sure

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

This is actually used in yubihsm.rs!

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Yeah, that's probably the one thing that uses it

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.

signature v3: type inference regression

2 participants

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

Revert "signature: replace signature_derive with blanket impls (#1827)" - #1840

Merged
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls
May 1, 2025
Merged

Revert "signature: replace signature_derive with blanket impls (#1827)"#1840
tarcieri merged 2 commits into
masterfrom
signature/revert-blanket-impls

Conversation

@tarcieri

Copy link
Copy Markdown
Member

This reverts commit bf47748.

Per #1831 this change breaks inference when there is a single explicit impl of the Signer trait.

It also wasn't possible to add corresponding blanket impls to the Async* traits, e.g. AsyncSigner for AsyncDigestSigner, because of the existing blanket impl of AsyncSigner for Signer which we definitely want to preserve.

As a general rule of thumb, blanket impls only make sense if they work 100% of the time, which doesn't seem to be happening here.

Closes#1831

tarcieri added 2 commits May 1, 2025 11:17
…)"
This reverts commit bf47748.
Per #1831 this change breaks inference when there is a single explicit
impl of the `Signer` trait.
It also wasn't possible to add corresponding blanket impls to the
`Async*` traits, e.g. `AsyncSigner` for `AsyncDigestSigner`, because of
the existing blanket impl of `AsyncSigner` for `Signer` which we
definitely want to preserve.
As a general rule of thumb, blanket impls only make sense if they work
100% of the time, which doesn't seem to be happening here.
Closes#1831
@tarcieri
tarcieri merged commit ac54439 into masterMay 1, 2025
@tarcieri
tarcieri deleted the signature/revert-blanket-impls branch May 1, 2025 17:24
@baloo

baloo commented May 5, 2025

Copy link
Copy Markdown
Member

Wait, which crates actually consumes the signature_derive again?

@tarcieri

Copy link
Copy Markdown
MemberAuthor

@baloo I think most of the crates avoid it to avoid pulling in the proc macro stack (in which case maybe it's not a great solution)

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

well where I'm trying to go is: maybe we can just pull the signature_derive altogether? I can't find a single consumer of it.

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Sure

@baloo

baloo commented May 6, 2025

Copy link
Copy Markdown
Member

This is actually used in yubihsm.rs!

@tarcieri

Copy link
Copy Markdown
MemberAuthor

Yeah, that's probably the one thing that uses it

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.

signature v3: type inference regression

2 participants

@tarcieri@baloo