Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0.35 Release Plan #313

Closed
sunfishcode opened this issue May 10, 2022 · 7 comments
Closed

0.35 Release Plan #313

sunfishcode opened this issue May 10, 2022 · 7 comments
Labels
semver bump Issues that will require a semver-incompatible fix

Comments

@sunfishcode
Copy link
Member

The main branch has several semver-incompatible changes, and a fair amount of overall code churn. Also, rustix has a lot of users that need stability. So here's the plan:

At some point, the I/O safety feature in Rust nightly will hopefully be stabilized. Once that happens, I plan to update io-lifetimes' API to match it, and also to switch to using the types and traits in std instead of its own copies, on Rust versions that support it. That will require a semver bump in io-lifetimes, which will also require a semver bump in rustix, so my plan is to do this in the rustix 0.35 release along with the other semver-incompatible changes, to minimize the number of semver bumps for users.

Before releasing 0.35, I'll also go through the test-users.yml script, figuring out what changes downstream users will need, and adding some of rustix's new users. I'll also do some testing on platforms not covered in CI, including old Linux versions and FreeBSD. This should help ensure stability before the release, and prepare patches to send to downstream users to help them with the API changes once the release is up.

@sunfishcode sunfishcode added the semver bump Issues that will require a semver-incompatible fix label May 10, 2022
@sunfishcode
Copy link
Member Author

sunfishcode commented May 16, 2022

This will also be the time to fix #316: #347.

@sunfishcode
Copy link
Member Author

sunfishcode commented May 21, 2022

I've now made a prelrease: 0.35.6-beta.2, to facilitate some early testing.

@sunfishcode
Copy link
Member Author

sunfishcode commented May 24, 2022

API changes include:

  • Most of the API is now behind feature flags. For example, to use rustix::fs, enable the "fs" feature.
  • io::Error is renamed to io::Errno.
  • fs::Dir no longer takes an OwnedFd. fs::Dir::read_from constructs a Dir without taking ownership of the passed-in fd, so users that need AsFd should use a separate OwnedFd to provide it.
  • mmap and related functions have moved to rustix::mm
  • Terminal-related ioctls have been renamed to their termios names and moved to rustix::termios.
  • ZStr and ZString have been replaced by CStr and CString.
  • dup2's second argument is now &mut OwnedFd.
  • io-lifetimes' as_filelike_view no longer provides &mut dereferences; to use with File I/O, do an extra &* on the view.
  • fchown and chownat now take Option<Uid> and Option<Gid> instead of publicly special-casing -1.
  • with_retrying is renamed to retry_on_intr

@sunfishcode
Copy link
Member Author

When cap-std is updated, remember to update these TODOs: bytecodealliance/cap-std#248 (review)

@sunfishcode
Copy link
Member Author

The I/O safety FCP is now complete. io-lifetimes 0.7.0 is now released and corresponds to the API in std at this point. The next step will be the "Before releasing 0.35" parts from the top comment.

@sunfishcode
Copy link
Member Author

I've now run all the tests, and rebased all the experimental branches. I'll do some additional testing once various open PRs are merged, and then do a 0.35 release.

@sunfishcode
Copy link
Member Author

0.35.6 is now published!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
semver bump Issues that will require a semver-incompatible fix
Projects
None yet
Development

No branches or pull requests

1 participant