Skip to content

Conversation

@LGFae
Copy link

@LGFae LGFae commented Dec 27, 2025

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
Author

LGFae commented Dec 27, 2025

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

@LGFae
Copy link
Author

LGFae commented Dec 27, 2025

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
Author

LGFae commented Dec 28, 2025

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 😅

Sign up for free to 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

1 participant