Skip to content

fix compilation with new new nightly VaList - #165

Merged
sunfishcode merged 1 commit into
sunfishcode:mainfrom
LGFae:main
Jan 21, 2026
Merged

fix compilation with new new nightly VaList#165
sunfishcode merged 1 commit into
sunfishcode:mainfrom
LGFae:main

Conversation

@LGFae

@LGFaeLGFae commented Dec 27, 2025

Copy link
Copy Markdown
Contributor

In 2025-12-05, a Rust pull request at rust-lang/rust#141980 reworked the VaList implementation to be abi-compatible with C. This broke:

  • the printf-compat implementation, which is fixed in version 0.3
  • some fcntl functions, because they called as_va_list, and that function no longer exists

Here, we fix both of those problems and update the compiler version in rust-toolchain.toml to be the oldest compiler that will already have this new implementation.


Fixes#164

@LGFae

Copy link
Copy Markdown
ContributorAuthor

My bad, the rust version was off by 1 day.

@LGFae

Copy link
Copy Markdown
ContributorAuthor

Sigh. My apologies. I was just running cargo check, blindly believing that was enough because the semantics shouldn't have changed. But apparently it doesn't type check the tests.

Unfortunately, I have to do something else for now. I will fix this later today.

In 2025-12-05, a Rust pull request at
rust-lang/rust#141980
reworked the `VaList` implementation to be abi-compatible with C. This
broke:
* the `printf-compat` implementation, which is fixed in version 0.3
* pretty much every function that methods of `VaList` (most commonly
`as_va_list`), since they no longer exist
Here, we fix both of those problems and update the compiler version in
`rust-toolchain.toml` to be the oldest compiler that will already have
this new implementation.
Updating the compiler has created 2 unforseen problems:
1. When unwinding, the new Rust version now prints the process's PID.
This means for the `c-gull-unwinding` we can no longer use the
`assert_cmd` API, as it does not expose the child PID to us.
2. The `c-gull/src/nss.rs` had 3 extra warnings of operations whose
results were unused. This was also breaking some other tests.
Both of these were also fixed.
@LGFae

Copy link
Copy Markdown
ContributorAuthor

Third time's the charm???

In any case, I've now fixed what I believe to be every function that was using VaList. At the very least, neither cargo check nor cargo test accuse any more problems.

Beside that, as I explain in the commit message, updating the compiler version created 2 unforseen problems:

  1. When unwinding, the new Rust version now prints the process's PID.
    This means for the c-gull-unwinding we can no longer use the assert_cmd API, as it does not expose the child PID to us.
  2. The c-gull/src/nss.rs had 3 extra warnings of operations whose results were unused. This was also breaking some other tests that seem to compare the build's output. Those 3 useless statements were deleted and now the tests pass

It seems I underestimated how much work this was. Hopefully it won't fail miserably at literally the very first check this time 😅

@sunfishcode

Copy link
Copy Markdown
Owner

This looks good. Thanks!

@sunfishcode
sunfishcode merged commit eccc816 into sunfishcode:mainJan 21, 2026
5 checks passed
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.

c-scape fails to compile on nightly

2 participants

@LGFae@sunfishcode
, '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" + '
fix compilation with new new nightly VaList by LGFae · Pull Request #165 · sunfishcode/c-ward · GitHub
Skip to content

fix compilation with new new nightly VaList - #165

Merged
sunfishcode merged 1 commit into
sunfishcode:mainfrom
LGFae:main
Jan 21, 2026
Merged

fix compilation with new new nightly VaList#165
sunfishcode merged 1 commit into
sunfishcode:mainfrom
LGFae:main

Conversation

@LGFae

@LGFaeLGFae commented Dec 27, 2025

Copy link
Copy Markdown
Contributor

In 2025-12-05, a Rust pull request at rust-lang/rust#141980 reworked the VaList implementation to be abi-compatible with C. This broke:

  • the printf-compat implementation, which is fixed in version 0.3
  • some fcntl functions, because they called as_va_list, and that function no longer exists

Here, we fix both of those problems and update the compiler version in rust-toolchain.toml to be the oldest compiler that will already have this new implementation.


Fixes#164

@LGFae

Copy link
Copy Markdown
ContributorAuthor

My bad, the rust version was off by 1 day.

@LGFae

Copy link
Copy Markdown
ContributorAuthor

Sigh. My apologies. I was just running cargo check, blindly believing that was enough because the semantics shouldn't have changed. But apparently it doesn't type check the tests.

Unfortunately, I have to do something else for now. I will fix this later today.

In 2025-12-05, a Rust pull request at
rust-lang/rust#141980
reworked the `VaList` implementation to be abi-compatible with C. This
broke:
* the `printf-compat` implementation, which is fixed in version 0.3
* pretty much every function that methods of `VaList` (most commonly
`as_va_list`), since they no longer exist
Here, we fix both of those problems and update the compiler version in
`rust-toolchain.toml` to be the oldest compiler that will already have
this new implementation.
Updating the compiler has created 2 unforseen problems:
1. When unwinding, the new Rust version now prints the process's PID.
This means for the `c-gull-unwinding` we can no longer use the
`assert_cmd` API, as it does not expose the child PID to us.
2. The `c-gull/src/nss.rs` had 3 extra warnings of operations whose
results were unused. This was also breaking some other tests.
Both of these were also fixed.
@LGFae

Copy link
Copy Markdown
ContributorAuthor

Third time's the charm???

In any case, I've now fixed what I believe to be every function that was using VaList. At the very least, neither cargo check nor cargo test accuse any more problems.

Beside that, as I explain in the commit message, updating the compiler version created 2 unforseen problems:

  1. When unwinding, the new Rust version now prints the process's PID.
    This means for the c-gull-unwinding we can no longer use the assert_cmd API, as it does not expose the child PID to us.
  2. The c-gull/src/nss.rs had 3 extra warnings of operations whose results were unused. This was also breaking some other tests that seem to compare the build's output. Those 3 useless statements were deleted and now the tests pass

It seems I underestimated how much work this was. Hopefully it won't fail miserably at literally the very first check this time 😅

@sunfishcode

Copy link
Copy Markdown
Owner

This looks good. Thanks!

@sunfishcode
sunfishcode merged commit eccc816 into sunfishcode:mainJan 21, 2026
5 checks passed
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.

c-scape fails to compile on nightly

2 participants

@LGFae@sunfishcode
, '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('^' + ".*" + ' fix compilation with new new nightly VaList by LGFae · Pull Request #165 · sunfishcode/c-ward · GitHub
Skip to content

fix compilation with new new nightly VaList - #165

Merged
sunfishcode merged 1 commit into
sunfishcode:mainfrom
LGFae:main
Jan 21, 2026
Merged

fix compilation with new new nightly VaList#165
sunfishcode merged 1 commit into
sunfishcode:mainfrom
LGFae:main

Conversation

@LGFae

@LGFaeLGFae commented Dec 27, 2025

Copy link
Copy Markdown
Contributor

In 2025-12-05, a Rust pull request at rust-lang/rust#141980 reworked the VaList implementation to be abi-compatible with C. This broke:

  • the printf-compat implementation, which is fixed in version 0.3
  • some fcntl functions, because they called as_va_list, and that function no longer exists

Here, we fix both of those problems and update the compiler version in rust-toolchain.toml to be the oldest compiler that will already have this new implementation.


Fixes#164

@LGFae

Copy link
Copy Markdown
ContributorAuthor

My bad, the rust version was off by 1 day.

@LGFae

Copy link
Copy Markdown
ContributorAuthor

Sigh. My apologies. I was just running cargo check, blindly believing that was enough because the semantics shouldn't have changed. But apparently it doesn't type check the tests.

Unfortunately, I have to do something else for now. I will fix this later today.

In 2025-12-05, a Rust pull request at
rust-lang/rust#141980
reworked the `VaList` implementation to be abi-compatible with C. This
broke:
* the `printf-compat` implementation, which is fixed in version 0.3
* pretty much every function that methods of `VaList` (most commonly
`as_va_list`), since they no longer exist
Here, we fix both of those problems and update the compiler version in
`rust-toolchain.toml` to be the oldest compiler that will already have
this new implementation.
Updating the compiler has created 2 unforseen problems:
1. When unwinding, the new Rust version now prints the process's PID.
This means for the `c-gull-unwinding` we can no longer use the
`assert_cmd` API, as it does not expose the child PID to us.
2. The `c-gull/src/nss.rs` had 3 extra warnings of operations whose
results were unused. This was also breaking some other tests.
Both of these were also fixed.
@LGFae

Copy link
Copy Markdown
ContributorAuthor

Third time's the charm???

In any case, I've now fixed what I believe to be every function that was using VaList. At the very least, neither cargo check nor cargo test accuse any more problems.

Beside that, as I explain in the commit message, updating the compiler version created 2 unforseen problems:

  1. When unwinding, the new Rust version now prints the process's PID.
    This means for the c-gull-unwinding we can no longer use the assert_cmd API, as it does not expose the child PID to us.
  2. The c-gull/src/nss.rs had 3 extra warnings of operations whose results were unused. This was also breaking some other tests that seem to compare the build's output. Those 3 useless statements were deleted and now the tests pass

It seems I underestimated how much work this was. Hopefully it won't fail miserably at literally the very first check this time 😅

@sunfishcode

Copy link
Copy Markdown
Owner

This looks good. Thanks!

@sunfishcode
sunfishcode merged commit eccc816 into sunfishcode:mainJan 21, 2026
5 checks passed
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.

c-scape fails to compile on nightly

2 participants

@LGFae@sunfishcode
, '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('^' + ".*" + ' fix compilation with new new nightly VaList by LGFae · Pull Request #165 · sunfishcode/c-ward · GitHub
Skip to content

fix compilation with new new nightly VaList - #165

Merged
sunfishcode merged 1 commit into
sunfishcode:mainfrom
LGFae:main
Jan 21, 2026
Merged

fix compilation with new new nightly VaList#165
sunfishcode merged 1 commit into
sunfishcode:mainfrom
LGFae:main

Conversation

@LGFae

@LGFaeLGFae commented Dec 27, 2025

Copy link
Copy Markdown
Contributor

In 2025-12-05, a Rust pull request at rust-lang/rust#141980 reworked the VaList implementation to be abi-compatible with C. This broke:

  • the printf-compat implementation, which is fixed in version 0.3
  • some fcntl functions, because they called as_va_list, and that function no longer exists

Here, we fix both of those problems and update the compiler version in rust-toolchain.toml to be the oldest compiler that will already have this new implementation.


Fixes#164

@LGFae

Copy link
Copy Markdown
ContributorAuthor

My bad, the rust version was off by 1 day.

@LGFae

Copy link
Copy Markdown
ContributorAuthor

Sigh. My apologies. I was just running cargo check, blindly believing that was enough because the semantics shouldn't have changed. But apparently it doesn't type check the tests.

Unfortunately, I have to do something else for now. I will fix this later today.

In 2025-12-05, a Rust pull request at
rust-lang/rust#141980
reworked the `VaList` implementation to be abi-compatible with C. This
broke:
* the `printf-compat` implementation, which is fixed in version 0.3
* pretty much every function that methods of `VaList` (most commonly
`as_va_list`), since they no longer exist
Here, we fix both of those problems and update the compiler version in
`rust-toolchain.toml` to be the oldest compiler that will already have
this new implementation.
Updating the compiler has created 2 unforseen problems:
1. When unwinding, the new Rust version now prints the process's PID.
This means for the `c-gull-unwinding` we can no longer use the
`assert_cmd` API, as it does not expose the child PID to us.
2. The `c-gull/src/nss.rs` had 3 extra warnings of operations whose
results were unused. This was also breaking some other tests.
Both of these were also fixed.
@LGFae

Copy link
Copy Markdown
ContributorAuthor

Third time's the charm???

In any case, I've now fixed what I believe to be every function that was using VaList. At the very least, neither cargo check nor cargo test accuse any more problems.

Beside that, as I explain in the commit message, updating the compiler version created 2 unforseen problems:

  1. When unwinding, the new Rust version now prints the process's PID.
    This means for the c-gull-unwinding we can no longer use the assert_cmd API, as it does not expose the child PID to us.
  2. The c-gull/src/nss.rs had 3 extra warnings of operations whose results were unused. This was also breaking some other tests that seem to compare the build's output. Those 3 useless statements were deleted and now the tests pass

It seems I underestimated how much work this was. Hopefully it won't fail miserably at literally the very first check this time 😅

@sunfishcode

Copy link
Copy Markdown
Owner

This looks good. Thanks!

@sunfishcode
sunfishcode merged commit eccc816 into sunfishcode:mainJan 21, 2026
5 checks passed
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.

c-scape fails to compile on nightly

2 participants

@LGFae@sunfishcode
, '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" + ' fix compilation with new new nightly VaList by LGFae · Pull Request #165 · sunfishcode/c-ward · GitHub
Skip to content

fix compilation with new new nightly VaList - #165

Merged
sunfishcode merged 1 commit into
sunfishcode:mainfrom
LGFae:main
Jan 21, 2026
Merged

fix compilation with new new nightly VaList#165
sunfishcode merged 1 commit into
sunfishcode:mainfrom
LGFae:main

Conversation

@LGFae

@LGFaeLGFae commented Dec 27, 2025

Copy link
Copy Markdown
Contributor

In 2025-12-05, a Rust pull request at rust-lang/rust#141980 reworked the VaList implementation to be abi-compatible with C. This broke:

  • the printf-compat implementation, which is fixed in version 0.3
  • some fcntl functions, because they called as_va_list, and that function no longer exists

Here, we fix both of those problems and update the compiler version in rust-toolchain.toml to be the oldest compiler that will already have this new implementation.


Fixes#164

@LGFae

Copy link
Copy Markdown
ContributorAuthor

My bad, the rust version was off by 1 day.

@LGFae

Copy link
Copy Markdown
ContributorAuthor

Sigh. My apologies. I was just running cargo check, blindly believing that was enough because the semantics shouldn't have changed. But apparently it doesn't type check the tests.

Unfortunately, I have to do something else for now. I will fix this later today.

In 2025-12-05, a Rust pull request at
rust-lang/rust#141980
reworked the `VaList` implementation to be abi-compatible with C. This
broke:
* the `printf-compat` implementation, which is fixed in version 0.3
* pretty much every function that methods of `VaList` (most commonly
`as_va_list`), since they no longer exist
Here, we fix both of those problems and update the compiler version in
`rust-toolchain.toml` to be the oldest compiler that will already have
this new implementation.
Updating the compiler has created 2 unforseen problems:
1. When unwinding, the new Rust version now prints the process's PID.
This means for the `c-gull-unwinding` we can no longer use the
`assert_cmd` API, as it does not expose the child PID to us.
2. The `c-gull/src/nss.rs` had 3 extra warnings of operations whose
results were unused. This was also breaking some other tests.
Both of these were also fixed.
@LGFae

Copy link
Copy Markdown
ContributorAuthor

Third time's the charm???

In any case, I've now fixed what I believe to be every function that was using VaList. At the very least, neither cargo check nor cargo test accuse any more problems.

Beside that, as I explain in the commit message, updating the compiler version created 2 unforseen problems:

  1. When unwinding, the new Rust version now prints the process's PID.
    This means for the c-gull-unwinding we can no longer use the assert_cmd API, as it does not expose the child PID to us.
  2. The c-gull/src/nss.rs had 3 extra warnings of operations whose results were unused. This was also breaking some other tests that seem to compare the build's output. Those 3 useless statements were deleted and now the tests pass

It seems I underestimated how much work this was. Hopefully it won't fail miserably at literally the very first check this time 😅

@sunfishcode

Copy link
Copy Markdown
Owner

This looks good. Thanks!

@sunfishcode
sunfishcode merged commit eccc816 into sunfishcode:mainJan 21, 2026
5 checks passed
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.

c-scape fails to compile on nightly

2 participants

@LGFae@sunfishcode
, '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('^' + ".*" + ' fix compilation with new new nightly VaList by LGFae · Pull Request #165 · sunfishcode/c-ward · GitHub
Skip to content

fix compilation with new new nightly VaList - #165

Merged
sunfishcode merged 1 commit into
sunfishcode:mainfrom
LGFae:main
Jan 21, 2026
Merged

fix compilation with new new nightly VaList#165
sunfishcode merged 1 commit into
sunfishcode:mainfrom
LGFae:main

Conversation

@LGFae

@LGFaeLGFae commented Dec 27, 2025

Copy link
Copy Markdown
Contributor

In 2025-12-05, a Rust pull request at rust-lang/rust#141980 reworked the VaList implementation to be abi-compatible with C. This broke:

  • the printf-compat implementation, which is fixed in version 0.3
  • some fcntl functions, because they called as_va_list, and that function no longer exists

Here, we fix both of those problems and update the compiler version in rust-toolchain.toml to be the oldest compiler that will already have this new implementation.


Fixes#164

@LGFae

Copy link
Copy Markdown
ContributorAuthor

My bad, the rust version was off by 1 day.

@LGFae

Copy link
Copy Markdown
ContributorAuthor

Sigh. My apologies. I was just running cargo check, blindly believing that was enough because the semantics shouldn't have changed. But apparently it doesn't type check the tests.

Unfortunately, I have to do something else for now. I will fix this later today.

In 2025-12-05, a Rust pull request at
rust-lang/rust#141980
reworked the `VaList` implementation to be abi-compatible with C. This
broke:
* the `printf-compat` implementation, which is fixed in version 0.3
* pretty much every function that methods of `VaList` (most commonly
`as_va_list`), since they no longer exist
Here, we fix both of those problems and update the compiler version in
`rust-toolchain.toml` to be the oldest compiler that will already have
this new implementation.
Updating the compiler has created 2 unforseen problems:
1. When unwinding, the new Rust version now prints the process's PID.
This means for the `c-gull-unwinding` we can no longer use the
`assert_cmd` API, as it does not expose the child PID to us.
2. The `c-gull/src/nss.rs` had 3 extra warnings of operations whose
results were unused. This was also breaking some other tests.
Both of these were also fixed.
@LGFae

Copy link
Copy Markdown
ContributorAuthor

Third time's the charm???

In any case, I've now fixed what I believe to be every function that was using VaList. At the very least, neither cargo check nor cargo test accuse any more problems.

Beside that, as I explain in the commit message, updating the compiler version created 2 unforseen problems:

  1. When unwinding, the new Rust version now prints the process's PID.
    This means for the c-gull-unwinding we can no longer use the assert_cmd API, as it does not expose the child PID to us.
  2. The c-gull/src/nss.rs had 3 extra warnings of operations whose results were unused. This was also breaking some other tests that seem to compare the build's output. Those 3 useless statements were deleted and now the tests pass

It seems I underestimated how much work this was. Hopefully it won't fail miserably at literally the very first check this time 😅

@sunfishcode

Copy link
Copy Markdown
Owner

This looks good. Thanks!

@sunfishcode
sunfishcode merged commit eccc816 into sunfishcode:mainJan 21, 2026
5 checks passed
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.

c-scape fails to compile on nightly

2 participants

@LGFae@sunfishcode
, '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); } })(); })(); fix compilation with new new nightly VaList by LGFae · Pull Request #165 · sunfishcode/c-ward · GitHub
Skip to content

fix compilation with new new nightly VaList - #165

Merged
sunfishcode merged 1 commit into
sunfishcode:mainfrom
LGFae:main
Jan 21, 2026
Merged

fix compilation with new new nightly VaList#165
sunfishcode merged 1 commit into
sunfishcode:mainfrom
LGFae:main

Conversation

@LGFae

@LGFaeLGFae commented Dec 27, 2025

Copy link
Copy Markdown
Contributor

In 2025-12-05, a Rust pull request at rust-lang/rust#141980 reworked the VaList implementation to be abi-compatible with C. This broke:

  • the printf-compat implementation, which is fixed in version 0.3
  • some fcntl functions, because they called as_va_list, and that function no longer exists

Here, we fix both of those problems and update the compiler version in rust-toolchain.toml to be the oldest compiler that will already have this new implementation.


Fixes#164

@LGFae

Copy link
Copy Markdown
ContributorAuthor

My bad, the rust version was off by 1 day.

@LGFae

Copy link
Copy Markdown
ContributorAuthor

Sigh. My apologies. I was just running cargo check, blindly believing that was enough because the semantics shouldn't have changed. But apparently it doesn't type check the tests.

Unfortunately, I have to do something else for now. I will fix this later today.

In 2025-12-05, a Rust pull request at
rust-lang/rust#141980
reworked the `VaList` implementation to be abi-compatible with C. This
broke:
* the `printf-compat` implementation, which is fixed in version 0.3
* pretty much every function that methods of `VaList` (most commonly
`as_va_list`), since they no longer exist
Here, we fix both of those problems and update the compiler version in
`rust-toolchain.toml` to be the oldest compiler that will already have
this new implementation.
Updating the compiler has created 2 unforseen problems:
1. When unwinding, the new Rust version now prints the process's PID.
This means for the `c-gull-unwinding` we can no longer use the
`assert_cmd` API, as it does not expose the child PID to us.
2. The `c-gull/src/nss.rs` had 3 extra warnings of operations whose
results were unused. This was also breaking some other tests.
Both of these were also fixed.
@LGFae

Copy link
Copy Markdown
ContributorAuthor

Third time's the charm???

In any case, I've now fixed what I believe to be every function that was using VaList. At the very least, neither cargo check nor cargo test accuse any more problems.

Beside that, as I explain in the commit message, updating the compiler version created 2 unforseen problems:

  1. When unwinding, the new Rust version now prints the process's PID.
    This means for the c-gull-unwinding we can no longer use the assert_cmd API, as it does not expose the child PID to us.
  2. The c-gull/src/nss.rs had 3 extra warnings of operations whose results were unused. This was also breaking some other tests that seem to compare the build's output. Those 3 useless statements were deleted and now the tests pass

It seems I underestimated how much work this was. Hopefully it won't fail miserably at literally the very first check this time 😅

@sunfishcode

Copy link
Copy Markdown
Owner

This looks good. Thanks!

@sunfishcode
sunfishcode merged commit eccc816 into sunfishcode:mainJan 21, 2026
5 checks passed
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.

c-scape fails to compile on nightly

2 participants

@LGFae@sunfishcode