Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

0.2.12 - 2024-01-09

Fixed

  • Custom backend for targets without atomics #385

Changed

  • Improve robustness of the Hermit backend and sys_fill_exact #386
  • Raise minimum supported Apple OS versions to macOS 10.12 and iOS 10 #388

Added

  • Document platform support policy #387

0.2.11 - 2023-11-08

Added

  • GNU/Hurd support #370

Changed

  • Renamed __getrandom_internal to __GETRANDOM_INTERNAL #369
  • Updated link to Hermit docs #374

0.2.10 - 2023-06-06

Added

  • Support for PS Vita (armv7-sony-vita-newlibeabihf) #359

Changed

  • Use getentropy from libc on Emscripten targets #362

0.2.9 - 2023-04-06

Added

  • AIX support #282
  • getrandom_uninit function #291
  • wasm64-unknown-unknown support #303
  • tvOS and watchOS support #317
  • QNX/nto support #325
  • Support for getrandom syscall on NetBSD ≥ 10.0 #331
  • RtlGenRandom fallback for non-UWP Windows #337

Breaking Changes

  • Update MSRV to 1.36 #291

Fixed

  • Solaris/OpenBSD/Dragonfly build #301

Changed

  • Update MSRV to 1.36 #291
  • Use getentropy on Emscripten #307
  • Solaris: consistantly use /dev/random source #310
  • Move 3ds selection above rdrand/js/custom fallback #312
  • Remove buffer zeroing from Node.js implementation #315
  • Use open instead of open64 #326
  • Remove #cfg from bsd_arandom.rs #332
  • Hermit: use sys_read_entropy syscall #333
  • Eliminate potential panic in sys_fill_exact #334
  • rdrand: Remove checking for 0 and !0 and instead check CPU family and do a self-test #335
  • Move __getrandom_custom definition into a const block #344
  • Switch the custom backend to Rust ABI #347

0.2.8 - 2022-10-20

Changed

Added

  • Added benchmarks to track buffer initialization cost #272

Fixed

  • Use $crate in register_custom_getrandom! #270

Documentation

  • Add information about enabling "js" feature #280
  • Fix link to wasm-bindgen #278
  • Document the varied implementations for underlying randomness sources #276

0.2.7 - 2022-06-14

Changed

  • Update wasi dependency to 0.11 #253

Fixed

  • Use AtomicPtr instead of AtomicUsize for Strict Provenance compatibility. #263

Documentation

  • Add comments explaining use of fallback mechanisms #257 #260

0.2.6 - 2022-03-28

Added

  • Nintendo 3DS (armv6k-nintendo-3ds) support #248

Changed

  • Retry open when interrupted #252

0.2.5 - 2022-02-22

Added

  • ESP-IDF targets (*‑espidf) support #245

Fixed

  • Webpack warning caused by dynamic require #234
  • Error checking on iOS for SecRandomCopyBytes #244

0.2.4 - 2021-12-13

Changed

  • Use explicit imports in the js backend #220
  • Use /dev/urandom on Redox instead of rand: #222
  • Use NonZeroU32::new_unchecked to convert wasi error #233

Added

  • SOLID targets (*-kmc-solid_*) support #235
  • Limited Hermit (x86_64-unknown-hermit) support #236

0.2.3 - 2021-04-10

Changed

  • Replace build.rs with link attributes. #205
  • Add support for getrandom syscall on DragonFly BSD. #210
  • Improve Node.js detection. #215

0.2.2 - 2021-01-19

Changed

  • Forward rustc-dep-of-std to dependencies. #198
  • Highlight feature-dependent functionality in documentation using the doc_cfg feature. #200

0.2.1 - 2021-01-03

Changed

  • Update cfg-if to v1.0. #166
  • Update wasi to v0.10. #167

Fixed

  • Multithreaded WASM support. #165

Removed

  • Windows XP support. #177
  • Direct stdweb support. #178
  • CloudABI support. #184

0.2.0 - 2020-09-10

Features for using getrandom on unsupported targets

The following (off by default) Cargo features have been added:

  • "rdrand" - use the RDRAND instruction on no_std x86/x86_64 targets #133
  • "js" - use JavaScript calls on wasm32-unknown-unknown #149
    • Replaces the stdweb and wasm-bindgen features (which are removed)
  • "custom" - allows a user to specify a custom implementation #109

Breaking Changes

  • Unsupported targets no longer compile #107
  • Change/Add Error constants #120
  • Only impl std traits when the "std" Cargo feature is specified #106
  • Remove official support for Hermit, L4Re, and UEFI #133
  • Remove optional "log" dependency #131
  • Update minimum supported Linux kernel to 2.6.32 #153
  • Update MSRV to 1.34 #159

0.1.16 - 2020-12-31

Changed

  • Update cfg-if to v1.0. #173
  • Implement std::error::Error for the Error type on additional targets. #169

Fixed

  • Multithreaded WASM support. #171

0.1.15 - 2020-09-10

Changed

  • Added support for Internet Explorer 11 #139
  • Fix Webpack require warning with wasm-bindgen #137

0.1.14 - 2020-01-07

Changed

  • Remove use of spin-locks in the use_file module. #125
  • Update wasi to v0.9. #126
  • Do not read errno value on DragonFlyBSD to fix compilation failure. #129

0.1.13 - 2019-08-25

Added

  • VxWorks targets support. #86

Changed

  • If zero-length slice is passed to the getrandom function, always return Ok(()) immediately without doing any calls to the underlying operating system. #104
  • Use the kern.arandom sysctl on NetBSD. #115

Fixed

  • Bump cfg-if minimum version from 0.1.0 to 0.1.2. #112
  • Typos and bad doc links. #117

0.1.12 - 2019-08-18

Changed

  • Update wasi dependency from v0.5 to v0.7. #100

0.1.11 - 2019-08-25

Fixed

  • Implement std-dependent traits for selected targets even if std feature is disabled. (backward compatibility with v0.1.8) #96

0.1.10 - 2019-08-18 [YANKED]

Changed

  • Use the dummy implementation on wasm32-unknown-unknown even with the disabled dummy feature. #90

Fixed

  • Fix CSP error for wasm-bindgen. #92

0.1.9 - 2019-08-14 [YANKED]

Changed

  • Remove std dependency for opening and reading files. #58
  • Use wasi instead of libc on WASI target. #64
  • By default emit a compile-time error when built for an unsupported target. This behaviour can be disabled by using the dummy feature. #71

Added

  • Add support for UWP targets. #69
  • Add unstable rustc-dep-of-std feature. #78

0.1.8 - 2019-07-29

Changed

  • Explicitly specify types to arguments of ‘libc::syscall’. #74

0.1.7 - 2019-07-29

Added

  • Support for hermit and l4re. #61
  • Error::raw_os_error method, Error::INTERNAL_START and Error::CUSTOM_START constants. Use libc for retrieving OS error descriptions. #54

Changed

  • Remove lazy_static dependency and use custom structures for lock-free initialization. #51 #52
  • Try getrandom() first on FreeBSD. #57

Removed

  • Bitrig support. #56

Deprecated

  • Error::UNKNOWN, Error::UNAVAILABLE. #54

0.1.6 - 2019-06-30

Changed

  • Minor change of RDRAND AMD bug handling. #48

0.1.5 - 2019-06-29

Fixed

  • Use shared File instead of shared file descriptor. #44
  • Workaround for RDRAND hardware bug present on some AMD CPUs. #43

Changed

  • Try getentropy and then fallback to /dev/random on macOS. #38

0.1.4 - 2019-06-28

Added

  • Add support for x86_64-unknown-uefi target by using RDRAND with CPUID feature detection. #30

Fixed

  • Fix long buffer issues on Windows and Linux. #31 #32
  • Check EPERM in addition to ENOSYS on Linux. #37

Changed

  • Improve efficiency by sharing file descriptor across threads. #13
  • Remove cloudabi, winapi, and fuchsia-cprng dependencies. #40
  • Improve RDRAND implementation. #24
  • Don't block during syscall detection on Linux. #26
  • Increase consistency with libc implementation on FreeBSD. #36
  • Apply rustfmt. #39

0.1.3 - 2019-05-15

  • Update for wasm32-unknown-wasi being renamed to wasm32-wasi, and for WASI being categorized as an OS.

0.1.2 - 2019-04-06

  • Add support for wasm32-unknown-wasi target.

0.1.1 - 2019-04-05

  • Enable std functionality for CloudABI by default.

0.1.0 - 2019-03-23

Publish initial implementation.

0.0.0 - 2019-01-19

Publish an empty template library.