Skip to content

crate: expose cfg for general 64-bit time_t functionality - #5411

Merged
tgross35 merged 4 commits into
rust-lang:mainfrom
dybucc:time64-global-cfg
Sep 21, 2026
Merged

tgross35 merged 4 commits into
rust-lang:mainfrom
dybucc:time64-global-cfg

Conversation

@dybucc

@dybucc dybucc commented Aug 14, 2026 •

Copy link
Copy Markdown
Contributor

Description

This patch adds support for a new cfg for easily toggling support for
64-bit time_t in supported platforms. This really only sets up the any
one of linux_time_bits64, gnu_time_bits64 or uclibc_time64.

The name of the cfg is time64.

Note support for the equivalent flag in musl has not been included
because we already have set-up automatic detection and toggling of the
corresponding cfg under supported targets 1.

Checklist

  • Relevant tests in libc-test/semver have been updated
  • Commit messages permalink to headers for added or changed API
  • Placeholder or unstable values like *LAST or *MAX have the
    standard doc comment
  • Tested locally (cargo test -p libc-test --target mytarget);
    especially relevant for platforms that may not be checked in CI

@rustbot label +stable-nominated

Footnotes

  1. https://github.com/rust-lang/libc/blob/1a8e71f33b1d6ea1e072210e7fc994417bbb2e34/build.rs#L181-L190 ↩

@rustbot rustbot added S-waiting-on-review stable-nominated This PR should be considered for cherry-pick to libc's stable release branch labels Aug 14, 2026

@tgross35 tgross35 left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you also update CI to use this cfg rather than the current glibc/musl cfg? Since this is what we're most likely to ship, we should make sure it works.

View changes since this review

Comment thread build.rs Outdated
Comment thread build.rs Outdated
@rustbot

rustbot commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator

Reminder, once the PR becomes ready for a review, use @rustbot ready.

@dybucc
dybucc force-pushed the time64-global-cfg branch from 98e48b9 to 1ab4287 Compare August 29, 2026 06:37
@rustbot

This comment has been minimized.

@dybucc
dybucc force-pushed the time64-global-cfg branch from 1ab4287 to 01f4796 Compare August 29, 2026 07:18
@rustbot rustbot added the A-CI Area: CI-related items label Aug 29, 2026
@dybucc
dybucc force-pushed the time64-global-cfg branch from 4c3b4f1 to 1b1d2bb Compare August 29, 2026 09:53
@dybucc

dybucc commented Aug 29, 2026

Copy link
Copy Markdown
Contributor Author

I think it's done now. While checking through the CI workflow file, I
noticed that we even though we set the "updated but deprecated"
RUST_LIBC_UNSTABLE_MUSL_V1_2 environment variable for certain targets
1, we still check for RUSTC_LIBC_UNSTABLE_MUSL_V1_2_3 in build.rs
2.

I was wondering what's our stance on that change for stable releases,
and whether we should even set the deprecated environment variable in
CI. It seems wrong.

@rustbot ready

Footnotes

  1. https://github.com/rust-lang/libc/blob/75b2850150d0c50fa012ce965b7466d46da8e4e3/.github/workflows/ci.yaml#L223 ↩

  2. https://github.com/rust-lang/libc/blob/75b2850150d0c50fa012ce965b7466d46da8e4e3/build.rs#L162-L164 ↩

@rustbot

This comment has been minimized.

@dybucc
dybucc force-pushed the time64-global-cfg branch from a89083f to 36137bc Compare August 30, 2026 14:10
@rustbot

This comment has been minimized.

@tgross35 tgross35 left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two small things then LGTM

View changes since this review

Comment thread .github/workflows/ci.yaml
Comment thread ci/verify-build.py Outdated
@rustbot

This comment has been minimized.

@dybucc

dybucc commented Sep 1, 2026

Copy link
Copy Markdown
Contributor Author

@tgross35

tgross35 commented Sep 4, 2026 •

Copy link
Copy Markdown
Member

I think it's done now. While checking through the CI workflow file, I noticed that we even though we set the "updated but deprecated" RUST_LIBC_UNSTABLE_MUSL_V1_2 environment variable for certain targets 1, we still check for RUSTC_LIBC_UNSTABLE_MUSL_V1_2_3 in build.rs 2.

I was wondering what's our stance on that change for stable releases, and whether we should even set the deprecated environment variable in CI. It seems wrong.

Oh, I did mean to update main.yaml here. Could you do that?

I'm not sure I follow the rest, why do you consider RUST_LIBC_UNSTABLE_MUSL_V1_2 "updated but deprecated"? And what do we need to take a stance on regarding stable releases?

@rustbot

This comment has been minimized.

@tgross35

tgross35 commented Sep 7, 2026

Copy link
Copy Markdown
Member

Could you rebase this once #5508 lands? let musl_v1_2 = ..., let uclibc_time64 = ..., and let gnu32_time64.

@tgross35

tgross35 commented Sep 7, 2026

Copy link
Copy Markdown
Member

Also please update the commit summary and PR title to mention the name of the config, it doesn't actually show up anywhere except the env form :)

This was referenced Sep 20, 2026
@tgross35

Copy link
Copy Markdown
Member

Cherry picked the AIX skip as #5541 to unblock other things

@rustbot

This comment has been minimized.

@tgross35 tgross35 mentioned this pull request Sep 21, 2026
Add `cfg` enabling `time64` functionality across all supported targets.
This ensures users have a simple entry point to the crate functionality
gated behind one of `linux_time_bits64`, `uclibc_time64` and
`gnu_time_bits64`. The new `cfg` goes by the name
`libc_unstable_time64`.
Switch as many uses of other target-specific `cfg`s with the `time64`
`cfg` introduced in the prior patch.
- Change indentation of two YAML arrays to consistently appear as nested
  within the key that corresponds with the array.

- Change one inconsistent use of single quotes with double quotes for
  YAML strings.
Replace use of `RUST_LIBC_UNSTABLE_MUSL_V1_2` with `TEST_MUSL_V1_2` in
the PowerPC CI runs. The former is deprecated; The latter is used in CI
scripts to set the right unstable `cfg` for functionality gated behind
musl's v1.2.
@rustbot

rustbot commented Sep 21, 2026

Copy link
Copy Markdown
Collaborator

This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed.

Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers.

@tgross35 tgross35 left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the conflict but I think that should resolve the uclibc issue. LGTM assuming CI passes

View changes since this review

@tgross35
tgross35 enabled auto-merge September 21, 2026 07:31
@tgross35
tgross35 added this pull request to the merge queue Sep 21, 2026
Merged via the queue into rust-lang:main with commit dde449d Sep 21, 2026
61 checks passed
tgross35 pushed a commit to tgross35/rust-libc that referenced this pull request Oct 1, 2026
Add `cfg` enabling `time64` functionality across all supported targets.
This ensures users have a simple entry point to the crate functionality
gated behind one of `linux_time_bits64`, `uclibc_time64` and
`gnu_time_bits64`. The new `cfg` goes by the name
`libc_unstable_time64`.

(backport <rust-lang#5411>)
(cherry picked from commit 9a1b7f8)
tgross35 pushed a commit to tgross35/rust-libc that referenced this pull request Oct 1, 2026
Switch as many uses of other target-specific `cfg`s with the `time64`
`cfg` introduced in the prior patch.

(backport <rust-lang#5411>)
(cherry picked from commit 39f6b9b)
tgross35 pushed a commit to tgross35/rust-libc that referenced this pull request Oct 1, 2026
- Change indentation of two YAML arrays to consistently appear as nested
  within the key that corresponds with the array.

- Change one inconsistent use of single quotes with double quotes for
  YAML strings.

(backport <rust-lang#5411>)
(cherry picked from commit 76f110d)
tgross35 pushed a commit to tgross35/rust-libc that referenced this pull request Oct 1, 2026
Replace use of `RUST_LIBC_UNSTABLE_MUSL_V1_2` with `TEST_MUSL_V1_2` in
the PowerPC CI runs. The former is deprecated; The latter is used in CI
scripts to set the right unstable `cfg` for functionality gated behind
musl's v1.2.

(backport <rust-lang#5411>)
(cherry picked from commit dde449d)
@tgross35 tgross35 mentioned this pull request Oct 1, 2026
renovate-bot pushed a commit to renovate-bot/rust-lang-_-libc that referenced this pull request Oct 1, 2026
Add `cfg` enabling `time64` functionality across all supported targets.
This ensures users have a simple entry point to the crate functionality
gated behind one of `linux_time_bits64`, `uclibc_time64` and
`gnu_time_bits64`. The new `cfg` goes by the name
`libc_unstable_time64`.

(backport <rust-lang#5411>)
(cherry picked from commit 9a1b7f8)
renovate-bot pushed a commit to renovate-bot/rust-lang-_-libc that referenced this pull request Oct 1, 2026
Switch as many uses of other target-specific `cfg`s with the `time64`
`cfg` introduced in the prior patch.

(backport <rust-lang#5411>)
(cherry picked from commit 39f6b9b)
renovate-bot pushed a commit to renovate-bot/rust-lang-_-libc that referenced this pull request Oct 1, 2026
- Change indentation of two YAML arrays to consistently appear as nested
  within the key that corresponds with the array.

- Change one inconsistent use of single quotes with double quotes for
  YAML strings.

(backport <rust-lang#5411>)
(cherry picked from commit 76f110d)
renovate-bot pushed a commit to renovate-bot/rust-lang-_-libc that referenced this pull request Oct 1, 2026
Replace use of `RUST_LIBC_UNSTABLE_MUSL_V1_2` with `TEST_MUSL_V1_2` in
the PowerPC CI runs. The former is deprecated; The latter is used in CI
scripts to set the right unstable `cfg` for functionality gated behind
musl's v1.2.

(backport <rust-lang#5411>)
(cherry picked from commit dde449d)
@tgross35 tgross35 added stable-applied This PR has been cherry-picked to libc's stable release branch and removed stable-nominated This PR should be considered for cherry-pick to libc's stable release branch labels Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-CI Area: CI-related items S-waiting-on-author stable-applied This PR has been cherry-picked to libc's stable release branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants