Programming language release RUST 1.63

The release of the general purpose programming language Rust 1.63, founded by the Mozilla project, now developed under the auspices of the independent non -profit organization Rust Foundation. The language is focused on safe memory work and provides means to achieve a high parallelism of the tasks, while dispensing with the use of the garbage collector and Runtime (Runtime comes down to basic initialization and accompanying the standard library).

Memitory working methods in RUST save the developer from errors when manipulating with signs and protect against problems arising due to low-level memory, such as an appeal to the memory area after its release, the extension of the zero signs, exit beyond the buffer, etc. .P. To distribute libraries, ensure the assembly and management of dependence, the Cargo package manager develops. To place the libraries, the repository is supported by crates.io .

Safe memory work is ensured in RUST during compilation through references checking, tracking the ownership of objects, taking into account the lifetime of objects (visibility) and assessment of the correctness of access to memory during code execution. RUST also provides means to protect against integer overflow, requires mandatory initialization of variables before use, better processes errors in a standard library, applies the concept of irreplaceability (Immutable) links and default variables, offers strong static typification to minimize logical errors.

The main innovations :

  • Added API STD :: Thread :: Scope, which allows you to create streams in the area of ​​visibility. Unlike previously available flows, the new API STD :: Thread :: Scope allows the transmission of borrowed (Borrowing) non -tutorial data, while the flows created using the classic API STD :: Thread :: Spawn should have possessed all the transmitted arguments and Could not receive borrowed variables. API STD :: Thread :: Scope guarantees that any generated flows will be completed before the data return, ensuring the proper level of security for the borrowing mechanism.
  • new types of bonds for file descriptors – Borrrowedfd and OwnedFD, ensuring borrowing and ownership. Types are marked with “#[repr (transparent)]”, which allows you to directly use them in external si-prisoners taking into account possession.
  • Provided to call Condvar :: New, Mutex :: New and Rwlock :: New in the context of constant for creating global static values ​​of MUTEX, RWLOCK and CONDVAR without using packages like Lazy_static.
/Media reports.