Tracking issue: Supporting 64-bit `time_t` on 32-bit platforms
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 2.6k
- Forks
- 1.3k
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 69
Description
Our 32-bit targets without target_os = "none" are:
aarch64-unknown-linux-gnu_ilp32 os: linux env: gnu
aarch64_be-unknown-linux-gnu_ilp32 os: linux env: gnu
arm-linux-androideabi os: android env:
arm-unknown-linux-gnueabi os: linux env: gnu
arm-unknown-linux-gnueabihf os: linux env: gnu
arm-unknown-linux-musleabi os: linux env: musl
arm-unknown-linux-musleabihf os: linux env: musl
arm64_32-apple-watchos os: watchos env:
armeb-unknown-linux-gnueabi os: linux env: gnu
armv4t-unknown-linux-gnueabi os: linux env: gnu
armv5te-unknown-linux-gnueabi os: linux env: gnu
armv5te-unknown-linux-musleabi os: linux env: musl
armv5te-unknown-linux-uclibceabi os: linux env: uclibc
armv6-unknown-freebsd os: freebsd env:
armv6-unknown-netbsd-eabihf os: netbsd env:
armv6k-nintendo-3ds os: horizon env: newlib
armv7-linux-androideabi os: android env:
armv7-oe-linux-gnueabihf os: linux env: gnu
armv7-rtems-eabihf os: rtems env: newlib
armv7-sony-vita-newlibeabihf os: vita env: newlib
armv7-unknown-freebsd os: freebsd env:
armv7-unknown-linux-gnueabi os: linux env: gnu
armv7-unknown-linux-gnueabihf os: linux env: gnu
armv7-unknown-linux-musleabi os: linux env: musl
armv7-unknown-linux-musleabihf os: linux env: musl
armv7-unknown-linux-ohos os: linux env: ohos
armv7-unknown-linux-uclibceabi os: linux env: uclibc
armv7-unknown-linux-uclibceabihf os: linux env: uclibc
armv7-unknown-netbsd-eabihf os: netbsd env:
armv7-unknown-trusty os: trusty env:
armv7-wrs-vxworks-eabihf os: vxworks env: gnu
armv7a-kmc-solid_asp3-eabi os: solid_asp3 env:
armv7a-kmc-solid_asp3-eabihf os: solid_asp3 env:
armv7a-nuttx-eabi os: nuttx env:
armv7a-nuttx-eabihf os: nuttx env:
armv7k-apple-watchos os: watchos env:
armv7s-apple-ios os: ios env:
csky-unknown-linux-gnuabiv2 os: linux env: gnu
csky-unknown-linux-gnuabiv2hf os: linux env: gnu
hexagon-unknown-linux-musl os: linux env: musl
hexagon-unknown-qurt os: qurt env:
i386-apple-ios os: ios env: sim
i586-unknown-linux-gnu os: linux env: gnu
i586-unknown-linux-musl os: linux env: musl
i586-unknown-netbsd os: netbsd env:
i586-unknown-redox os: redox env: relibc
i686-apple-darwin os: macos env:
i686-linux-android os: android env:
i686-oe-linux-gnu os: linux env: gnu
i686-pc-nto-qnx700 os: nto env: nto70
i686-pc-windows-gnu os: windows env: gnu
i686-pc-windows-gnullvm os: windows env: gnu
i686-pc-windows-msvc os: windows env: msvc
i686-unknown-freebsd os: freebsd env:
i686-unknown-haiku os: haiku env:
i686-unknown-helenos os: helenos env:
i686-unknown-hurd-gnu os: hurd env: gnu
i686-unknown-linux-gnu os: linux env: gnu
i686-unknown-linux-musl os: linux env: musl
i686-unknown-netbsd os: netbsd env:
i686-unknown-openbsd os: openbsd env:
i686-unknown-uefi os: uefi env:
i686-uwp-windows-gnu os: windows env: gnu
i686-uwp-windows-msvc os: windows env: msvc
i686-win7-windows-gnu os: windows env: gnu
i686-win7-windows-msvc os: windows env: msvc
i686-wrs-vxworks os: vxworks env: gnu
m68k-unknown-linux-gnu os: linux env: gnu
mips-unknown-linux-gnu os: linux env: gnu
mips-unknown-linux-musl os: linux env: musl
mips-unknown-linux-uclibc os: linux env: uclibc
mipsel-sony-psp os: psp env:
mipsel-sony-psx os: psx env:
mipsel-unknown-linux-gnu os: linux env: gnu
mipsel-unknown-linux-musl os: linux env: musl
mipsel-unknown-linux-uclibc os: linux env: uclibc
mipsel-unknown-netbsd os: netbsd env:
mipsisa32r6-unknown-linux-gnu os: linux env: gnu
mipsisa32r6el-unknown-linux-gnu os: linux env: gnu
powerpc-unknown-freebsd os: freebsd env:
powerpc-unknown-helenos os: helenos env:
powerpc-unknown-linux-gnu os: linux env: gnu
powerpc-unknown-linux-gnuspe os: linux env: gnu
powerpc-unknown-linux-musl os: linux env: musl
powerpc-unknown-linux-muslspe os: linux env: musl
powerpc-unknown-netbsd os: netbsd env:
powerpc-unknown-openbsd os: openbsd env:
powerpc-wrs-vxworks os: vxworks env: gnu
powerpc-wrs-vxworks-spe os: vxworks env: gnu
riscv32-wrs-vxworks os: vxworks env: gnu
riscv32gc-unknown-linux-gnu os: linux env: gnu
riscv32gc-unknown-linux-musl os: linux env: musl
riscv32im-risc0-zkvm-elf os: zkvm env:
riscv32imac-esp-espidf os: espidf env: newlib
riscv32imac-unknown-nuttx-elf os: nuttx env:
riscv32imac-unknown-xous-elf os: xous env:
riscv32imafc-esp-espidf os: espidf env: newlib
riscv32imafc-unknown-nuttx-elf os: nuttx env:
riscv32imc-esp-espidf os: espidf env: newlib
riscv32imc-unknown-nuttx-elf os: nuttx env:
sparc-unknown-linux-gnu os: linux env: gnu
thumbv6m-nuttx-eabi os: nuttx env:
thumbv7a-nuttx-eabi os: nuttx env:
thumbv7a-nuttx-eabihf os: nuttx env:
thumbv7a-pc-windows-msvc os: windows env: msvc
thumbv7a-uwp-windows-msvc os: windows env: msvc
thumbv7a-vex-v5 os: vexos env: v5
thumbv7em-nuttx-eabi os: nuttx env:
thumbv7em-nuttx-eabihf os: nuttx env:
thumbv7m-nuttx-eabi os: nuttx env:
thumbv7neon-linux-androideabi os: android env:
thumbv7neon-unknown-linux-gnueabihf os: linux env: gnu
thumbv7neon-unknown-linux-musleabihf os: linux env: musl
thumbv8m.base-nuttx-eabi os: nuttx env:
thumbv8m.main-nuttx-eabi os: nuttx env:
thumbv8m.main-nuttx-eabihf os: nuttx env:
wasm32-unknown-emscripten os: emscripten env:
wasm32-unknown-unknown os: unknown env:
wasm32-wali-linux-musl os: linux env: musl
wasm32-wasip1 os: wasi env: p1
wasm32-wasip1-threads os: wasi env: p1
wasm32-wasip2 os: wasi env: p2
wasm32-wasip3 os: wasi env: p3
x86_64-unknown-linux-gnux32 os: linux env: gnu
xtensa-esp32-espidf os: espidf env: newlib
xtensa-esp32s2-espidf os: espidf env: newlib
xtensa-esp32s3-espidf os: espidf env: newlib
(from $cmap | jq 'pick(.[].name, .[].target_env, .[].target_pointer_width, .[].target_os) | map(select(.target_pointer_width == "32")) | map(select(.target_os != "none")) | map(del(.target_pointer_width)) | .[] | .name + (" " * (40 - (.name | length))) + " os: " + .target_os + (" " * (10 - (.target_os | length))) + " env: " + .target_env ' -r)
We have:
- Unstable support for linux glibc and windows-gnu
- Unstable support for musl, which covers ohos
- Unstable support for espidf
- Unstable support for linux uclibc
- Wasi is
long long - Emscripten is always
i64 - NetBSD and OpenBSD always
i64 - HelenOS is
long long - VxWorks is
long long - Redox is
long long - NuttX is always
i64 - solid is
i64 - I guess 3ds is
i64 - QNX NTO is
i64 - MSVC is
i64 - RTEMS is always
i64 - freebsd arm and ppc use
i64 - Vex doesn't use
libc - UEFI doesn't use
libc - xous doesn't use
libc risc0-zkvmdoesn't uselibc- PSP is no longer supported by
libcbut doesn't have atime_t - PSX doesn't use
libc
That leaves, with some grouping:
# Tier 2
arm-linux-androideabi os: android env:
armv7-linux-androideabi os: android env:
i686-linux-android os: android env:
thumbv7neon-linux-androideabi os: android env:
i686-unknown-freebsd os: freebsd env:
# Tier 3
arm64_32-apple-watchos os: watchos env:
armv7k-apple-watchos os: watchos env:
armv7s-apple-ios os: ios env:
i386-apple-ios os: ios env: sim
i686-apple-darwin os: macos env:
armv7-sony-vita-newlibeabihf os: vita env:
armv7-unknown-trusty os: trusty env:
hexagon-unknown-qurt os: qurt
i686-unknown-haiku os: haiku env:
i686-unknown-hurd-gnu os: hurd env:
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the target list and the existing unstable support categories in the issue, then compare the remaining Android, Apple, FreeBSD, Vita, Trusty, Qurt, Haiku, and Hurd targets with their platform time_t definitions. Determine the required support for each target and verify that all listed 32-bit platforms are correctly covered.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- operating-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100