Skip to content

libc: proposal to update minimum versions and release 0.3 #463

Closed as not planned
@tgross35

Description

@tgross35

I would like to request the below be discussed at a meeting, or at least get team feedback before moving forward.

Context

Currently we maintain two branches for libc: main, which is intended to be 1.0, and libc-0.2 which is the current crates.io release. PRs are made against either channel (I usually request main so that always stays the most up to date) then get cherry picked to the other.

Usually this flow works okay, but there is a substantial difference in minimum supported versions: libc-0.2 is tested down to 1.19 and main is tested with 1.63. This makes some things difficult to keep in sync, e.g. #[repr(align(...))] and const fn cannot be used on 0.2. Cleaning these things up in main isn't even easy because it means cherry picks get conflict prone.

Proposal

I would like to create a new stable release of 0.3 that brings minimum versions closer to what we want for 1.0 and documents these in the README. Closing the gap in supported versions should make it easier to keep the branches in sync and do the desired pre-1.0 refactoring.

In particular, I am interested in the following versions:

  • MSRV: 1.63.0, released 2022-08-11 (default on Debian stable, released 2023-06)
  • musl: 1.2.3, released 2022-04-07 Rebase of "Upgrade musl supported version to 1.2.3" libc#3791 (supports Debian stable and Alpine stable)
  • FreeBSD: unknown, maybe 11 or 12 (up to target maintainers, cc @asomers)
  • Emscripten: 3.1.42, released 2023-06 if this seems reasonable to the target maintainers
  • ESP-IDF: v5.0, released 2022-02
  • Edition: 2021

All of these versions were selected because they allow removing version-specific configuration for those platforms. There might be some other targets that we would like to specify a minimum or tested version for, I'll check with the target maintainers.

Out of these changes, the only one that actually needs a merge before we can release is musl; everything else can just be a documentation change and then clean up the legacy support at some point after the release.

We might be able to do a few other breaking changes if they are small or ready (relevant milestone) but it seems better to keep 0.3 scoped to version changes.

Remaining for 1.0

There are still a handful of things we need to figure out between 0.3 and 1.0:

MSRV

#72 covers this ad nauseam and doesn't have a concrete conclusion. That thread has a lot of requests to support Debian stable but not too much for anything older than that, and 1.63 is what main has been testing on CI anyway. In the interest of avoiding too much of a bikeshed, I would only like to ask if anyone objects to 1.63 as too recent, i.e. that we should be supporting something older than latest Debian.

We can revisit a more official version policy before 1.0.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions