Skip to content

0.35 Release Plan #313

Description

@sunfishcode

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.

Activity

  1. sunfishcode commented on May 16, 2022

    @sunfishcode
    MemberAuthor

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

  2. sunfishcode commented on May 21, 2022

    @sunfishcode
    MemberAuthor

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

  3. sunfishcode commented on May 24, 2022

    @sunfishcode
    MemberAuthor

    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
  4. sunfishcode commented on Jun 3, 2022

    @sunfishcode
    MemberAuthor

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

  5. sunfishcode commented on Jun 6, 2022

    @sunfishcode
    MemberAuthor

    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.

  6. sunfishcode commented on Jun 9, 2022

    @sunfishcode
    MemberAuthor

    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.

  7. sunfishcode commented on Jun 15, 2022

    @sunfishcode
    MemberAuthor

    0.35.6 is now published!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    semver bumpIssues that will require a semver-incompatible fix

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions