You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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)
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:
#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.
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, andlibc-0.2which is the current crates.io release. PRs are made against either channel (I usually requestmainso 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.2is tested down to 1.19 andmainis tested with 1.63. This makes some things difficult to keep in sync, e.g.#[repr(align(...))]andconst fncannot be used on 0.2. Cleaning these things up inmainisn'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:
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:
extra_traitsin 1.0 libc#3880libcbe Deprecate all Linux kernel APIs libc#1391MSRV
#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
mainhas 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.