This release contains a number of improvements related to 64-bit time_t configuration.
Of note the existing RUST_LIBC_UNSTABLE_* environment variables have been replaced
with configuration options. The new way to use these is:
RUSTFLAGS='--cfg=libc_unstable_musl_v1_2_3' cargo ...
RUSTFLAGS='--cfg=libc_unstable_gnu_time_bits="64"' cargo ...Being able to set this via RUSTFLAGS makes it easier to only apply configuration to
specific targets (and notably, not the host if build scripts are used).
There are two other notable changes:
-
The 32-bit
windows-gnutargets now respectlibc_unstable_gnu_time_bits -
uClibc now supports a similar configuration option:
RUSTFLAGS='--cfg=libc_unstable_uclibc_time64'
As a reminder, these options are under active development and may change in the future
(hence the "unstable" in the name). It likely that we will harmonize everything under a
single configuration option before considering them stable.
Support
- Add support for
aarch64-unknown-linux-pauthtest(#5065) - Add support for new QNX targets (#5241)
- Better document breaking change policy and recommended usage (#5179)
Added
- Android: Add
POSIX_SPAWN_*constants (#5104) - Android: Add
getpwent,setpwent, andendpwent(#5160) - Android: Add
preadv2andpwritev2(#5157) - Android: Add
seccomp_notif*structures (#5224) - Android: Add
timer_[create, delete, getoverrun, gettime, settime](#5108) - Apple: Add
PROC_PIDT_SHORTBSDINFOandproc_bsdshortinfo(#5110) - Apple: Add
SIOC*constants fromsockio.h(#5263) - Apple: Add
_IOR,_IOW,_IOWR(#5264) - Apple: Add
bpf_programandbpf_insn(#5235) - Apple: Add additional
kqueueconstants (#5077) - Apple: Update
vm_statistics64with recently added fields (#5253) - Apple: add
IN6_IFF_*andSIOCGIFAFLAG_IN6(#5239) - Dragonfly: Add
O_*,POSIX_FADV_*,NI*, and a few other missing constants (#5116) - Dragonfly: add
fdatasync,dlvsym,reallocarray,qsort_r,pthread_*affinity_np,ftok,extattr_*, anddup3(#5116) - Emscripten: Add
in6_pktinfo(#5256) - FreeBSD: Add SOL_LOCAL (#5185)
- FreeBSD: Add
DLT_*constants (#5235) - FreeBSD: Add
PROC_LOGSIGEXIT_*andPPROT_*(#4657) - FreeBSD: Add
SO_RERROR(#5260) - FreeBSD: add
IN6_IFF_*,in6_ifreq, andSIOCGIFAFLAG_IN6(#5239) - FreeBSD: add
_IO*helpers fromsys/ioccom.h(#5239) - Glibc: Add
PTHREAD_*_MUTEX_INITIALIZER_NPfor riscv64 (#5094) - Glibc: Add new fields to
struct tcp_info(#5215) - Linux: Add
OPEN_TREE_NAMESPACE(#5145) - Linux: Add
SECCOMP_IOCTL_*constants (#5224) - Linux: Add
SO_DETACH_REUSEPORT_BPF(#5081) - Linux: Add
futex_waitv(#5125) - Linux: Add constants for
fsopen,fsconfig,fsmount, andfspick(#5145) - Linux: Add fields to
statxpresent since 6.16 (#4621) - Linux: Add network entry API (#5049)
- Linux: add
ifaddrmsgandrtattr(#5234) - Linux: add
sockaddr_iucv(#5041) - MacOS: Add
ENOTCAPABLE(#4925) - Musl: Add
renameat2(#5113) - NuttX: Add
F_SETFD(#5258) - NuttX: Add
POLLRD*andPOLLWR*constants (#5258) - NuttX: Add
SO_KEEPALIVEand TCP keepalive constants (#5111) - NuttX: Add
TCP_MAXSEG(#5258) - NuttX: Add
eventfdandEFD_*constants (#5258) - NuttX: Add
pipe2(#5258) - NuttX: Add
strerror_r(#5258) - NuttX: Add
netinetstructs and constants (#5258) - NuttX: Add socket structs, functions and constants (#5258)
- QuRT: Add POSIX timer functions (#5091)
- QuRT: Add missing pthread functions from QuRT SDK headers (#5091)
- QuRT: Add missing unistd process and file functions (#5091)
- QuRT: Add mqueue subsystem (message queues, select/pselect) (#5091)
- Redox: Add
*atanddirentfunctions (#5117) - Solarish: Add IP TTL and IPv6 Hop Limit consts (#5089)
- Solarish: Add
port_alertandPORT_ALERT*constants (#5203) - Solarish: add AI_CANONNAME (#5085)
- aarch64: Add SYS_sendfile and SYS_fadvise64 constants (#5133)
Deprecated
- Dragonfly: Deprecate compatibility aliases
CPUCTL_RSMSRandUTX_DB_LASTLOG(#5116)
Fixed
- breaking NetBSD: Correct
tsfrom*const timespecto*mut timespecin _lwp_park` (#5169) - breaking Linux GNU: Change overflowing
PTRACE_*ET_SYSCALL_USER_DISPATCH_CONFIGconstants fromu8toc_uint(#4936) - Fix the soundness bug in the representation of extern types (#5021)
- Cygwin: fix
cpuset_ttypo inCPU_ZERO(#5098) - Dragonfly: ABI fixes including regex offsets,
ifaddrs, pthread barriers, process sizing fields, andmcontextalignment (#5116) - Dragonfly: Correct values of
CPUCTL_CPUID*,EV_HUP, andEV_SYSFLAGS(#5116) - Emscripten: fix pthread type sizes for wasm64 (MEMORY64) (#5156)
- Horizon: Fix the value of
POLLOUT(#5090) - Linux: Correct the value of
EPIOC[GS]PARAMSwith nonstandard _IOC (#5188) - Make VxWorks shims
unsafe(#3727) - NetBSD: Correct getmntinfo to link
__getmntinfo13(#5251) - QNX: Fix the value of
PTHREAD_MUTEX_INITIALIZER(#5241) - QuRT: fix type and definition inaccuracies against SDK headers (#5091)
- Windows: Correctly link to 32-bit time routines on 32-bit platforms (#5059)
- uClibc: Fix constants accidentally removed (#5141)
- uclibc: Fix build issues (#5046)
- uclibc: Fix type of PRIO_PROCESS and friends (#5046)
Changed
- AIX, TeeOS: Drop unneeded
-> c_void(#5240) - Apple: Change
AIO_LISTIO_MAXto account for changes in macOS 27 (#5253) - Glibc: Update the value of
MS_NOUSER(#5215) - L4Re: Update definitions and test infra (#5275)
- Linux: Update the value of
SW_MAXandSW_CNT(#5215) - MacOS: Add
swapped_counttovm_statistics64(#4926) - Windows: Windows-GNU now respects
libc_unstable_gnu_time_bitsfor 64-bittime_tconfig (#5062)
Removed
- Dragonfly: Remove FreeBSD-only
Elf32_Lword,ip_mreq_source, andIP_constants (#5116) - Dragonfly: Remove private VM type bindings (#5116)
- Linux: Remove
KERN_REALROOTDEVandVM_LAPTOP_MODE(#5177) - VxWorks: Remove non-user-facing (kernel) API (#5129)
Other
- Print config information if
LIBC_BUILD_VERBOSEis set (#5272) - Annotate
*LASTconstants as potentially changing (#5120) - Annotate
*MAXconstants as potentially changing (#5122) - BSD: Annotate
ELASTconstants as potentially changing (#5118) - FreeBSD: Annotate
RAND_MAXas potentially changing (#5119) - Linux, L4re: Annotate
*NUMconstants as potentially changing (#5123) - QNX: Restructure to support new platforms (#4984)
- Unix: Annotate
*COUNTconstants as potentially changing (#5121) - uClibc: Add unstable support of 64-bit
time_t(#5046) - (internal) FreeBSD: Replace unstable env to set version with an unstable cfg (#5201)
- (internal) Glibc: Remove public configuration for file offset bits (#5268)
- (internal) Linux: Delete config via
RUST_LIBC_UNSTABLE_LINUX_TIME_BITS64(#5197) - (internal) Replace
RUST_LIBC_UNSTABLEenv withlibc_unstable*cfg (#4977)