# Changelog All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org). Releases may yanked if there is a security bug, a soundness bug, or a regression. ## [Unreleased] ## [0.1.25] - 2026-03-08 - Improve LoongArch32 support for old nightly. ([07f2579](https://github.com/taiki-e/semihosting/commit/07f2579f8a53f8b22b90491f44425b66025c963e)) ## [0.1.24] - 2026-01-15 - Support LoongArch32 and LoongArch64. ([#24](https://github.com/taiki-e/semihosting/pull/24)) - Add `experimental::random::{fill_bytes, fill_uninit_bytes}` under experimental `random` feature. ([#23](https://github.com/taiki-e/semihosting/pull/23), [a5031c3](https://github.com/taiki-e/semihosting/commit/a5031c312e26e50c37858cdc60d4e5ae368e0158), [592c59a](https://github.com/taiki-e/semihosting/commit/592c59a9ef46825437c24499c429cf120265017e)) - Documentation improvements. ## [0.1.23] - 2026-01-12 - `experimental::time` improvements: - Add `Instant`. ([c412f9f](https://github.com/taiki-e/semihosting/commit/c412f9f48b0c9b08c8c88dade0b46c416ed838b6)) - Re-export `Duration` `TryFromFloatSecsError` from `core::time`. ([c412f9f](https://github.com/taiki-e/semihosting/commit/c412f9f48b0c9b08c8c88dade0b46c416ed838b6)) - Implement `core::error::Error` for `SystemTimeError`. ([c412f9f](https://github.com/taiki-e/semihosting/commit/c412f9f48b0c9b08c8c88dade0b46c416ed838b6)) - `sys` improvements: - Add `read`, `read_uninit`, `write`, `close`, `arm_compat::sys_read_orig`, and `arm_compat::sys_write_orig`, and deprecate `arm_compat::sys_read` and `arm_compat::sys_write`. See deprecation notes of [`arm_compat::sys_read`](https://docs.rs/semihosting/0.1/semihosting/sys/arm_compat/fn.sys_read.html) and [`arm_compat::sys_write`](https://docs.rs/semihosting/0.1/semihosting/sys/arm_compat/fn.sys_write.html) for details. ([741b9bd](https://github.com/taiki-e/semihosting/commit/741b9bdec178f4a27e1e76e0582a011697625293)) - Add `arm_compat::sys_get_cmdline_uninit`, and deprecate `arm_compat::sys_get_cmdline` in favor of `sys_get_cmdline_uninit`. ([9f46540](https://github.com/taiki-e/semihosting/commit/9f4654092c498805c9ae238b541ceb92b870d57e), [af23159](https://github.com/taiki-e/semihosting/commit/af231592f4cf86b60fee151dc1cf52617a961015)) - Add `arm_compat::syscall::ParamRegR::c_str_len`. ([a30da16](https://github.com/taiki-e/semihosting/commit/a30da167c61593bef8f765dec8b3628eb376782c)) - Add `mips::syscall::ParamRegR::ref_`. ([1a3f6a9](https://github.com/taiki-e/semihosting/commit/1a3f6a9b7a4160c8e3ad5594ebde34a81406ba6f)) - Various optimizations: - Optimize `process::{exit,abort}`. ([7d32f79](https://github.com/taiki-e/semihosting/commit/7d32f7940f2a18532c30f890198099a4f466981b)) - Optimize `experimental::env::args`. ([9f46540](https://github.com/taiki-e/semihosting/commit/9f4654092c498805c9ae238b541ceb92b870d57e)) - Optimize various semihosting calls on AArch64, Arm, RISC-V, Xtensa. ([f65bb43](https://github.com/taiki-e/semihosting/commit/f65bb435c028d036d4c2e1914eed485205a6aecc)) - Documentation improvements. ## [0.1.22] - 2026-01-10 - Add `sys::mips::mips_plog` (almost equivalent to `sys::arm_compat::sys_write0`). ([7a3cde1](https://github.com/taiki-e/semihosting/commit/7a3cde189ec8760df93cb51afc0996f4edc664ad)) - Improve `io::ErrorKind` detection on MIPS. ([911e563](https://github.com/taiki-e/semihosting/commit/911e563abbb57b0ba6e4ad19260427f8f7a340c7)) - Enable [release immutability](https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/immutable-releases). - Documentation improvements. ## [0.1.21] - 2025-11-30 - Fix build error on pre-1.80 Rust when `alloc` feature is enabled. ([adad165](https://github.com/taiki-e/semihosting/commit/adad165ae45d048c24bc984be80e236717b22815)) ## [0.1.20] - 2025-03-19 - Add `io::ErrorKind::InvalidFilename` variant to reflect [upstream stabilization in Rust 1.87](https://github.com/rust-lang/rust/pull/134076). ([b6f25e3](https://github.com/taiki-e/semihosting/commit/b6f25e33031c6aa9c4198cf78157170f4030c7a6)) ## [0.1.19] - 2025-02-19 - Change to open stdio handles (`io::Std{in,out,err}`) in "text" mode due to some tools doesn't support opening them in "binary" mode. ([#16](https://github.com/taiki-e/semihosting/issues/16)) This doesn't change the open behavior on files such as `fs::File`. - Implement `From` and `From` for `io::Error` when `alloc` feature is enabled to align `std::io::Error`. - Implement `io::{Read,Write,Seek}` for `&mut impl io::{Read,Write,Seek}` and `alloc::boxed::Box` (when `alloc` feature is enabled) to align `std::io`. - Implement `io::Read` for `&[u8]` and `alloc::collections::VecDeque` (when `alloc` feature is enabled) to align `std::io`. - Implement `io::Write` for `&mut [u8]`, `alloc::vec::Vec` (when `alloc` feature is enabled), and `alloc::collections::VecDeque` (when `alloc` feature is enabled) to align `std::io`. ## [0.1.18] - 2025-01-06 - Add `io::ErrorKind::CrossesDevices` variant to reflect [upstream stabilization in Rust 1.85](https://github.com/rust-lang/rust/pull/130209). ([0a09ce5](https://github.com/taiki-e/semihosting/commit/0a09ce540784739f972e76fe719a573a744b98eb)) - Add `io::ErrorKind::QuotaExceeded` variant to reflect [upstream stabilization in Rust 1.85](https://github.com/rust-lang/rust/pull/130254). ([36b069a](https://github.com/taiki-e/semihosting/commit/36b069ab0e56b25bb64b5d7390ece5ce41534c94)) ## [0.1.17] - 2024-12-04 - Respect [`RUSTC_BOOTSTRAP=-1` recently added in nightly](https://github.com/rust-lang/rust/pull/132993) in rustc version detection. - Documentation improvements. ## [0.1.16] - 2024-10-13 - Add more `io::ErrorKind` variants to reflect [upstream stabilization in Rust 1.83](https://github.com/rust-lang/rust/pull/128316). ([9677c7b](https://github.com/taiki-e/semihosting/commit/9677c7be05fee821113e9d36b34e8815532e6f5c)) - Improve compile error messages. ([80f1153](https://github.com/taiki-e/semihosting/commit/80f115310a28e44c2d48b3cc714fc1048aa67386)) ## [0.1.15] - 2024-09-15 - Add `process::{ExitCode,Termination}`. ## [0.1.14] - 2024-08-23 - Add `#[must_use]` to `OwnedFd::into_raw_fd`. ## [0.1.13] - 2024-07-22 - Open files in "binary" mode to match `std::fs::File`'s behavior. ([#12](https://github.com/taiki-e/semihosting/issues/12)) ## [0.1.12] - 2024-07-09 - Fix [build issue with `esp` toolchain](https://github.com/taiki-e/semihosting/issues/11). ## [0.1.11] - 2024-06-16 **Note:** This release has been yanked due to an issue fixed in 0.1.12. - Implement `core::error::Error` for `semihosting::io::Error` at Rust 1.81+. ([8701460](https://github.com/taiki-e/semihosting/commit/8701460101e5c9838bb09062435590f834837861)) ## [0.1.10] - 2024-05-06 - Make `impl` impl take `?Sized`. ([2c7b911](https://github.com/taiki-e/semihosting/commit/2c7b9112a42b14f27def67f3b6fd35258c6f2f2b)) ## [0.1.9] - 2024-04-21 - Add `trap-hlt` feature to use `HLT` instruction on Arm A+R profile. See the [documentation](https://github.com/taiki-e/semihosting#optional-features-trap-hlt) for details. ## [0.1.8] - 2024-04-21 - Respect `RUSTC_WRAPPER` in rustc version detection. - Documentation improvements. ## [0.1.7] - 2024-03-21 - Support Xtensa (OpenOCD Semihosting) under the `openocd-semihosting` feature. ([#9](https://github.com/taiki-e/semihosting/pull/9)) ## [0.1.6] - 2024-03-02 - Documentation improvements. ## [0.1.5] - 2023-12-27 - Expose raw syscall interface as public API. ([#7](https://github.com/taiki-e/semihosting/pull/7), thanks @t-moe) ## [0.1.4] - 2023-08-25 - Update `unwinding` to 0.2. ## [0.1.3] - 2023-07-27 - Fix build error on MIPS32r6 and MIPS64r6 since [nightly-2023-07-19's target_arch change](https://github.com/rust-lang/rust/pull/112374). ## [0.1.2] - 2023-05-06 - Enable `portable-atomic`'s `require-cas` feature to display helpful error messages to users on targets requiring additional action on the user side to provide atomic CAS. ## [0.1.1] - 2023-04-09 - Improve panic message on stable. ## [0.1.0] - 2023-03-22 Initial release [Unreleased]: https://github.com/taiki-e/semihosting/compare/v0.1.25...HEAD [0.1.25]: https://github.com/taiki-e/semihosting/compare/v0.1.24...v0.1.25 [0.1.24]: https://github.com/taiki-e/semihosting/compare/v0.1.23...v0.1.24 [0.1.23]: https://github.com/taiki-e/semihosting/compare/v0.1.22...v0.1.23 [0.1.22]: https://github.com/taiki-e/semihosting/compare/v0.1.21...v0.1.22 [0.1.21]: https://github.com/taiki-e/semihosting/compare/v0.1.20...v0.1.21 [0.1.20]: https://github.com/taiki-e/semihosting/compare/v0.1.19...v0.1.20 [0.1.19]: https://github.com/taiki-e/semihosting/compare/v0.1.18...v0.1.19 [0.1.18]: https://github.com/taiki-e/semihosting/compare/v0.1.17...v0.1.18 [0.1.17]: https://github.com/taiki-e/semihosting/compare/v0.1.16...v0.1.17 [0.1.16]: https://github.com/taiki-e/semihosting/compare/v0.1.15...v0.1.16 [0.1.15]: https://github.com/taiki-e/semihosting/compare/v0.1.14...v0.1.15 [0.1.14]: https://github.com/taiki-e/semihosting/compare/v0.1.13...v0.1.14 [0.1.13]: https://github.com/taiki-e/semihosting/compare/v0.1.12...v0.1.13 [0.1.12]: https://github.com/taiki-e/semihosting/compare/v0.1.11...v0.1.12 [0.1.11]: https://github.com/taiki-e/semihosting/compare/v0.1.10...v0.1.11 [0.1.10]: https://github.com/taiki-e/semihosting/compare/v0.1.9...v0.1.10 [0.1.9]: https://github.com/taiki-e/semihosting/compare/v0.1.8...v0.1.9 [0.1.8]: https://github.com/taiki-e/semihosting/compare/v0.1.7...v0.1.8 [0.1.7]: https://github.com/taiki-e/semihosting/compare/v0.1.6...v0.1.7 [0.1.6]: https://github.com/taiki-e/semihosting/compare/v0.1.5...v0.1.6 [0.1.5]: https://github.com/taiki-e/semihosting/compare/v0.1.4...v0.1.5 [0.1.4]: https://github.com/taiki-e/semihosting/compare/v0.1.3...v0.1.4 [0.1.3]: https://github.com/taiki-e/semihosting/compare/v0.1.2...v0.1.3 [0.1.2]: https://github.com/taiki-e/semihosting/compare/v0.1.1...v0.1.2 [0.1.1]: https://github.com/taiki-e/semihosting/compare/v0.1.0...v0.1.1 [0.1.0]: https://github.com/taiki-e/semihosting/releases/tag/v0.1.0