# Changelog ## [Unreleased] ## [0.2.169](https://github.com/rust-lang/libc/compare/0.2.168...0.2.169) - 2024-12-18 ### Added - FreeBSD: add more socket TCP stack constants - Fuchsia: add a `sockaddr_vm` definition ### Fixed **Breaking**: [rust-lang/rust#132975](https://github.com/rust-lang/rust/pull/132975) corrected the signedness of `core::ffi::c_char` on various Tier 2 and Tier 3 platforms (mostly Arm and RISC-V) to match Clang. This release contains the corresponding changes to `libc`, including the following specific pull requests: - ESP-IDF: Replace arch-conditional `c_char` with a reexport - Fix `c_char` on various targets - Mirror `c_char` configuration from `rust-lang/rust` ### Cleanup - Do not re-export `c_void` in target-specific code ## [0.2.168](https://github.com/rust-lang/libc/compare/0.2.167...0.2.168) - 2024-12-09 ### Added - Linux: Add new process flags ([#4174](https://github.com/rust-lang/libc/pull/4174)) - Linux: Make `IFA_*` constants available on all Linux targets - Linux: add `MAP_DROPPABLE` - Solaris, Illumos: add `SIGRTMIN` and `SIGRTMAX` - Unix, Linux: adding POSIX `memccpy` and `mempcpy` GNU extension - CI: Upload artifacts created by libc-test - CI: Use workflow commands to group output by target - CI: add caching ## [0.2.167](https://github.com/rust-lang/libc/compare/0.2.166...0.2.167) - 2024-11-28 ### Added - Solarish: add `st_fstype` to `stat` - Trusty: Add `intptr_t` and `uintptr_t` ([#4161](https://github.com/rust-lang/libc/pull/4161)) ### Fixed - Fix the build with `rustc-dep-of-std` - Wasi: Add back unsafe block for `clockid_t` static variables ([#4157](https://github.com/rust-lang/libc/pull/4157)) ### Cleanup - Create an internal prelude - Fix `unused_qualifications` ### Other - CI: Check various FreeBSD versions ([#4159](https://github.com/rust-lang/libc/pull/4159)) - CI: add a timeout for all jobs - CI: verify MSRV for `wasm32-wasi` - Migrate to the 2021 edition ### Removed - Remove one unused import after the edition 2021 bump ## [0.2.166](https://github.com/rust-lang/libc/compare/0.2.165...0.2.166) - 2024-11-26 ### Fixed This release resolves two cases of unintentional breakage from the previous release: - Revert removal of array size hacks [#4150](https://github.com/rust-lang/libc/pull/4150) - Ensure `const extern` functions are always enabled [#4151](https://github.com/rust-lang/libc/pull/4151) ## [0.2.165](https://github.com/rust-lang/libc/compare/0.2.164...0.2.165) - 2024-11-25 ### Added - Android: add `mkostemp`, `mkostemps` - Android: add a few API 30 calls - Android: add missing syscall constants - Apple: add `in6_ifreq` - Apple: add missing `sysctl` net types (before release: remove `if_family_id` ([#4137](https://github.com/rust-lang/libc/pulls/4137))) - Freebsd: add `kcmp` call support - Hurd: add `MAP_32BIT` and `MAP_EXCL` - Hurd: add `domainname` field to `utsname` ([#4089](https://github.com/rust-lang/libc/pulls/4089)) - Linux GNU: add `f_flags` to struct `statfs` for arm, mips, powerpc and x86 - Linux GNU: add `malloc_stats` - Linux: add ELF relocation-related structs - Linux: add `ptp_*` structs - Linux: add `ptp_clock_caps` - Linux: add `ptp_pin_function` and most `PTP_` constants - Linux: add missing AF_XDP structs & constants - Linux: add missing netfilter consts ([#3734](https://github.com/rust-lang/libc/pulls/3734)) - Linux: add struct and constants for the `mount_setattr` syscall - Linux: add wireless API - Linux: expose the `len8_dlc` field of `can_frame` - Musl: add `utmpx` API - Musl: add missing syscall constants - NetBSD: add `mcontext`-related data for RISCV64 - Redox: add new `netinet` constants ) - Solarish: add `_POSIX_VDISABLE` ([#4103](https://github.com/rust-lang/libc/pulls/4103)) - Tests: Add a test that the `const extern fn` macro works - Tests: Add test of primitive types against `std` - Unix: Add `htonl`, `htons`, `ntohl`, `ntohs` - Unix: add `aligned_alloc` - Windows: add `aligned_realloc` ### Fixed - **breaking** Hurd: fix `MAP_HASSEMAPHORE` name ([#4127](https://github.com/rust-lang/libc/pulls/4127)) - **breaking** ulibc Mips: fix `SA_*` mismatched types ([#3211](https://github.com/rust-lang/libc/pulls/3211)) - Aix: fix an enum FFI safety warning - Haiku: fix some typos ([#3664](https://github.com/rust-lang/libc/pulls/3664)) - Tests: fix `Elf{32,64}_Relr`-related tests - Tests: fix libc-tests for `loongarch64-linux-musl` - Tests: fix some clippy warnings - Tests: fix tests on `riscv64gc-unknown-freebsd` ### Deprecated - Apple: deprecate `iconv_open` - Apple: deprecate `mach_task_self` - Apple: update `mach` deprecation notices for things that were removed in `main` ### Cleanup - Adjust the `f!` macro to be more flexible - Aix: remove duplicate constants - CI: make scripts more uniform - Drop the `libc_align` conditional - Drop the `libc_cfg_target_vendor` conditional - Drop the `libc_const_size_of` conditional - Drop the `libc_core_cvoid` conditional - Drop the `libc_int128` conditional - Drop the `libc_non_exhaustive` conditional - Drop the `libc_packedN` conditional - Drop the `libc_priv_mod_use` conditional - Drop the `libc_union` conditional - Drop the `long_array` conditional - Drop the `ptr_addr_of` conditional - Drop warnings about deprecated cargo features - Eliminate uses of `struct_formatter` - Fix a few other array size hacks - Glibc: remove redundant definitions ([#3261](https://github.com/rust-lang/libc/pulls/3261)) - Musl: remove redundant definitions ([#3261](https://github.com/rust-lang/libc/pulls/3261)) - Musl: unify definitions of `siginfo_t` ([#3261](https://github.com/rust-lang/libc/pulls/3261)) - Musl: unify definitions of statfs and statfs64 ([#3261](https://github.com/rust-lang/libc/pulls/3261)) - Musl: unify definitions of statvfs and statvfs64 ([#3261](https://github.com/rust-lang/libc/pulls/3261)) - Musl: unify statx definitions ([#3978](https://github.com/rust-lang/libc/pulls/3978)) - Remove array size hacks for Rust < 1.47 - Remove repetitive words - Use #[derive] for Copy/Clone in s! and friends - Use some tricks to format macro bodies ### Other - Apply formatting to macro bodies - Bump libc-test to Rust 2021 Edition - CI: Add a check that semver files don't contain duplicate entries - CI: Add `fanotify_event_info_fid` to FAM-exempt types - CI: Allow rustfmt to organize imports ([#4136](https://github.com/rust-lang/libc/pulls/4136)) - CI: Always run rustfmt - CI: Change 32-bit Docker images to use EOL repos - CI: Change 64-bit Docker images to ubuntu:24.10 - CI: Disable the check for >1 s! invocation - CI: Ensure build channels get run even if FILTER is unset - CI: Ensure there is a fallback for no_std - CI: Fix cases where unset variables cause errors - CI: Naming adjustments and cleanup - CI: Only invoke rustup if running in CI - CI: Remove the logic to handle old rust versions - CI: Set -u (error on unset) in all script files - CI: add support for `loongarch64-unknown-linux-musl` - CI: make `aarch64-apple-darwin` not a nightly-only target - CI: run shellcheck on all scripts - CI: update musl headers to Linux 6.6 - CI: use qemu-sparc64 to run sparc64 tests - Drop the `libc_const_extern_fn` conditional - Drop the `libc_underscore_const_names` conditional - Explicitly set the edition to 2015 - Introduce a `git-blame-ignore-revs` file - Tests: Ignore fields as required on Ubuntu 24.10 - Tests: skip `ATF_*` constants for OpenBSD - Triagebot: Add an autolabel for CI ## [0.2.164](https://github.com/rust-lang/libc/compare/0.2.163...0.2.164) - 2024-11-16 ### MSRV This release increases the MSRV of `libc` to 1.63. ### Other - CI: remove tests with rust < 1.63 - MSRV: document the MSRV of the stable channel to be 1.63 - MacOS: move ifconf to s_no_extra_traits ## [0.2.163](https://github.com/rust-lang/libc/compare/0.2.162...0.2.163) - 2024-11-16 ### Added - Aix: add more `dlopen` flags - Android: add group calls - FreeBSD: add `TCP_FUNCTION_BLK` and `TCP_FUNCTION_ALIAS` - Linux: add `confstr` - Solarish: add `aio` - Solarish: add `arc4random*` ### Changed - Emscripten: upgrade emsdk to 3.1.68 - Hurd: use more standard types - Hurd: use the standard `ssize_t = isize` - Solaris: fix `confstr` and `ucontext_t` ### Other - CI: add Solaris - CI: add `i686-unknown-freebsd` - CI: ensure that calls to `sort` do not depend on locale - Specify `rust-version` in `Cargo.toml` ## [0.2.162](https://github.com/rust-lang/libc/compare/0.2.161...0.2.162) - 2024-11-07 ### Added - Android: fix the alignment of `uc_mcontext` on arm64 - Apple: add `host_cpu_load_info` - ESP-IDF: add a time flag - FreeBSD: add the `CLOSE_RANGE_CLOEXEC` flag - FreeBSD: fix test errors regarding `__gregset_t` - FreeBSD: fix tests on x86 FreeBSD 15 - FreeBSD: make `ucontext_t` and `mcontext_t` available on all architectures - Haiku: add `getentropy` - Illumos: add `syncfs` - Illumos: add some recently-added constants - Linux: add `ioctl` flags - Linux: add epoll busy polling parameters - NuttX: add `pthread_[get/set]name_np` - RTEMS: add `arc4random_buf` - Trusty OS: add initial support - WASIp2: expand socket support ### Fixed - Emscripten: don't pass `-lc` - Hurd: change `st_fsid` field to `st_dev` - Hurd: fix the definition of `utsname` - Illumos/Solaris: fix `FNM_CASEFOLD` definition - Solaris: fix all tests ### Other - CI: Add loongarch64 - CI: Check that semver files are sorted - CI: Re-enable the FreeBSD 15 job - Clean up imports and `extern crate` usage - Convert `mode_t` constants to octal - Remove the `wasm32-wasi` target that has been deleted upstream ## [0.2.161](https://github.com/rust-lang/libc/compare/0.2.160...0.2.161) - 2024-10-17 ### Fixed - OpenBSD: fix `FNM_PATHNAME` and `FNM_NOESCAPE` values ## [0.2.160](https://github.com/rust-lang/libc/compare/0.2.159...0.2.160) - 2024-10-17 ### Added - Android: add `PR_GET_NAME` and `PR_SET_NAME` - Apple: add `F_TRANSFEREXTENTS` - Apple: add `mach_error_string` - Apple: add additional `pthread` APIs - Apple: add the `LOCAL_PEERTOKEN` socket option - BSD: add `RTF_*`, `RTA_*`, `RTAX_*`, and `RTM_*` definitions - Emscripten: add `AT_EACCESS` - Emscripten: add `getgrgid`, `getgrnam`, `getgrnam_r` and `getgrgid_r` - Emscripten: add `getpwnam_r` and `getpwuid_r` - FreeBSD: add `POLLRDHUP` - Haiku: add `arc4random` - Illumos: add `ptsname_r` - Linux: add `fanotify` interfaces - Linux: add `tcp_info` - Linux: add additional AF_PACKET options - Linux: make Elf constants always available - Musl x86: add `iopl` and `ioperm` - Musl: add `posix_spawn` chdir functions - Musl: add `utmpx.h` constants - NetBSD: add `sysctlnametomib`, `CLOCK_THREAD_CPUTIME_ID` and `CLOCK_PROCESS_CPUTIME_ID` - Nuttx: initial support - RTEMS: add `getentropy` - RTEMS: initial support - Solarish: add `POLLRDHUP`, `POSIX_FADV_*`, `O_RSYNC`, and `posix_fallocate` - Unix: add `fnmatch.h` - VxWorks: add riscv64 support - VxWorks: update constants related to the scheduler ### Changed - Redox: change `ino_t` to be `c_ulonglong` ### Fixed - ESP-IDF: fix mismatched constants and structs - FreeBSD: fix `struct stat` on FreeBSD 12+ ### Other - CI: Fix CI for FreeBSD 15 - Docs: link to `windows-sys` ## [0.2.159](https://github.com/rust-lang/libc/compare/0.2.158...0.2.159) - 2024-09-24 ### Added - Android: add more `AT_*` constants in - Apple: add missing `NOTE_*` constants in - Hermit: add missing error numbers in - Hurd: add `__timeval` for 64-bit support in - Linux: add `epoll_pwait2` in - Linux: add `mq_notify` in - Linux: add missing `NFT_CT_*` constants in - Linux: add the `fchmodat2` syscall in - Linux: add the `mseal` syscall in - OpenBSD: add `sendmmsg` and `recvmmsg` in - Unix: add `IN6ADDR_ANY_INIT` and `IN6ADDR_LOOPBACK_INIT` in - VxWorks: add `S_ISVTX` in - VxWorks: add `vxCpuLib` and `taskLib` functions - WASIp2: add definitions for `std::net` support in ### Fixed - Correctly handle version checks when `clippy-driver` is used ### Changed - EspIdf: change signal constants to c_int in - HorizonOS: update network definitions in - Linux: combine `ioctl` APIs in - WASI: enable CI testing in - WASIp2: enable CI testing in ## [0.2.158](https://github.com/rust-lang/libc/compare/0.2.157...0.2.158) - 2024-08-19 ### Other - WASI: fix missing `Iterator` with `rustc-dep-of-std` in ## [0.2.157](https://github.com/rust-lang/libc/compare/0.2.156...0.2.157) - 2024-08-17 ### Added - Apple: add `_NSGetArgv`, `_NSGetArgc` and `_NSGetProgname` in - Build: add `RUSTC_WRAPPER` support in - FreeBSD: add `execvpe` support from 14.1 release in - Fuchsia: add `SO_BINDTOIFINDEX` - Linux: add `klogctl` in - MacOS: add `fcntl` OFD commands in - NetBSD: add `_lwp_park` in - Solaris: add missing networking support in - Unix: add `pthread_equal` in - WASI: add `select`, `FD_SET`, `FD_ZERO`, `FD_ISSET ` in ### Fixed - TEEOS: fix octal notation for `O_*` constants in ### Changed - FreeBSD: always use freebsd12 when `rustc_dep_of_std` is set in ## [0.2.156](https://github.com/rust-lang/libc/compare/v0.2.155...v0.2.156) - 2024-08-15 ### Added - Apple: add `F_ALLOCATEPERSIST` in - Apple: add `os_sync_wait_on_address` and related definitions in - BSD: generalise `IPV6_DONTFRAG` to all BSD targets in - FreeBSD/DragonFly: add `IP_RECVTTL`/`IPV6_RECVHOPLIMIT` in - Hurd: add `XATTR_CREATE`, `XATTR_REPLACE` in - Linux GNU: `confstr` API and `_CS_*` in - Linux musl: add `preadv2` and `pwritev2` (1.2.5 min.) in - VxWorks: add the constant `SOMAXCONN` in - VxWorks: add a few errnoLib related constants in ### Fixed - Solaris/illumos: Change `ifa_flags` type to u64 in - QNX 7.0: Disable `libregex` in ### Changed - QNX NTO: update platform support in - `addr_of!(EXTERN_STATIC)` is now considered safe in ### Removed - Apple: remove `rmx_state` in ### Other - Update or remove CI tests that have been failing