Rust 1.87.0 Release and 10 Years Since Rust 1.0

On May 15, 2025, it was announced that the release of the programming language Rust 1.87 took place. 244 programmers from around the world contributed to the development of this update. Rust project version 1.80 was released in July 2024. The release of Rust 1.85.0 (Rust 2024) took place on February 20. The Rust community also celebrates 10 years since the release of the Rust 1.0 programming language.

The Rust project was founded in 2006, version 0.1 was formed in 2012, and the first stable version was released on May 15, 2015.

The Rust language focuses on safe memory operations and provides means to achieve high parallelism in task execution, while avoiding the use of a garbage collector and runtime (the runtime is reduced to basic initialization and standard library support).
Memory management methods in Rust save developers from errors when manipulating pointers and protect against problems arising from low-level memory operations, such as accessing a memory area after it has been freed, dereferencing null pointers, buffer overflows, etc. For distributing libraries, ensuring builds, and managing dependencies, the Cargo package manager is being developed. The crates.io repository is supported for hosting libraries.
Safe memory operations in Rust are ensured at compile time through reference checking, object ownership tracking, object lifetime (scope) accounting, and assessment of memory access correctness during code execution. Rust also provides means to protect against integer overflows, requires mandatory initialization of variable values before use, handles errors better in the standard library, applies the concept of immutability for references and variables by default, and offers strong static typing to minimize logical errors.
- Support for anonymous pipes has been added to the standard library. The std::io::pipe() method is proposed for creating anonymous pipes, which can be used in conjunction with std::process::Command to handle standard input and output streams, as well as to merge stdout and stderr streams;
- Calling most compiler built-in functions (Intrinsics) std::arch from safe code is now allowed. This change applies to std::arch built-in functions that are marked unsafe only due to their binding to specific functionality, if that functionality is enabled. For example, mm256add_epi32 can be called from safe code if the application uses '#[target_feature(enable = avx2)]';
- From asm! blocks with assembly code, it is now allowed to jump to blocks with Rust code, which simplifies the development of low-level code, such as implementing optimizations in the kernel or organizing interaction with hardware. The jump target for the jmp assembly command is specified in the asm! macro using the new label operand, which contains a block expression with Rust code;
- It is now allowed to precisely specify captured generic types and lifetimes in trait definitions using impl Trait return types;
- Tier 2 support for the i586-pc-windows-msvc target platform has been removed. It is recommended to use the i686-pc-windows-msvc platform, which features SSE2 instruction support. The i586-pc-windows-msvc platform became obsolete as Windows 10 requires SSE2 support, and earlier Windows releases are not supported in Rust.