⬆️ ⬇️

Announcement Rust 1.10

We are pleased to introduce the new version of Rust 1.10. Rust is a system programming language aimed at the safe work with memory, speed and parallel code execution.



As usual, you can install Rust 1.10 from the corresponding page of the official site, and also get acquainted with the detailed list of changes in this version on GitHub. This release included 1276 patches.



What is included in the stable version 1.10



In Rust 1.10, one of the most desirable features of the community became available: interruption of work (abort) during panic instead of unwinding the stack. This behavior is controlled by the -C panic=abort flag or setting in Cargo.toml . Why do you need it? As you remember, panic means an unforeseen problem , and for many applications, abort is a smart choice. When using panic=abort , less code is generated, which means smaller executable files and a slightly smaller compilation time. A very rough estimate indicates a decrease of 10% in both file size and compile time. This feature was defined in RFC 1513 .



The second big feature in 1.10 is a new type of container - cdylib . The existing dylib dynamic library dylib now only used for dynamic libraries used in Rust projects, and cdylib will be used when compiling Rust code for embedding into other languages. In release 1.10, cdylib supported by the compiler, but not yet supported by Cargo. This format was defined in RFC 1510 .



Also, in some cases, the compiler performance has been improved, the documentation and rustdoc itself rustdoc become more convenient , and error messages have become more readable.



Finally, there has been a big change in the development of Rust. It does not affect users directly, but it will greatly help those who distribute Rust. The Rust compiler is written in Rust, which means using Rust to build Rust. This process is called "bootstrapping" ( English "bootstrapping"). Historically, we did this using snapshots of a particular version of the compiler, of which always bootstrapped; at the same time, the snapshot is periodically updated, if necessary. Moreover, since The Rust compiler uses the unstable capabilities of Rust. To build the compiler, a specific version of nightly was needed. This has worked well for years, but we have outgrown such a process. Its main drawback is that it requires loading a snapshot in binary form, which is not suitable for Linux distributions. In particular, the distribution maintainers would like to build the latest versions of Rust, using only the versions available in previous versions of packages, and not untrusted binaries. In fact, we changed our build system so that Rust 1.10 is built with the Rust 1.9 compiler. In the future, this method will be used later - Rust 1.11 will be built using Rust 1.10. Moreover, now the compiler can be built with a stable compiler. This simplifies the entire bootstrap process, and greatly helps distribution distributions keepers, because they no longer need two separate packages. Read more in the comments to the pull request .



More information about changes in the language as a whole can be found in the release notes.



Library stabilization



Approximately 70 interfaces were stabilized:





In addition, &CStr , CString , UnsafeCell , fmt::Error , Condvar , Mutex , and RwLock now implemented as Default .



Finally, on Linux, if the HashMap cannot be initialized using getrandom , it will temporarily roll back to use /dev/urandom so as not to block early during the boot process.



See the release notes for details.



Cargo features



In this issue, Cargo received several small improvements.





See the release notes for details.



Developers version 1.10



In the release of version 1.10, 139 people participated. Thank you very much!



Developer List
  • Adolfo ochagavía
  • Alan somers
  • Alec s
  • Alex Burka
  • Alex Crichton
  • Alex Ozdemir
  • Amanieu d'anthras
  • Andrea Canciani
  • Andrew Paseltiner
  • Andrey Tonkih
  • Andy russell
  • Anton Blanchard
  • Ariel Ben-Yehuda
  • Barosl lee
  • benaryorg
  • billyevans
  • Björn steinbrink
  • bnewbold
  • bors
  • Brandon edens
  • Brayden winterton
  • Brian anderson
  • Brian campbell
  • Brian green
  • c4rlo
  • Christopher Serr
  • Corey farwell
  • Cristian oliveira
  • Cyryl Płotnicki-Chudyk
  • Dan fockler
  • Daniel Campoverde [alx741]
  • Dave huseby
  • David Hewitt
  • David Tolnay
  • Deepak kannan
  • Demetri obenour
  • Doug goldstein
  • Eduard burtescu
  • Eduard-Mihai Burtescu
  • Ergenekon Yigit
  • Fabrice desré
  • Felix S. Klock II
  • Florian berger
  • Garrett Squire
  • Geordon worley
  • Georg Brandl
  • ggomez
  • Gigih aji İbrahim
  • Guillaume bonnet
  • Guillaume gomez
  • Haiko schol
  • Jake goulding
  • James miller
  • jbranchaud
  • Jeffrey seyfried
  • jethrogb
  • jocki84
  • Johannes oertel
  • Jonas schievink
  • jonathandturner
  • Jonathan s
  • Jonathan turner
  • JP Sugarbroad
  • Kaiyin zhong
  • Kamal Marhubi
  • Kevin butler
  • Léo Testard
  • Luca bruno
  • Lukas kalbertodt
  • Lukas pustina
  • Luqman Aden
  • Manish goregaokar
  • Marcus klaas
  • mark-summerfield
  • Masood Malekghassemi
  • Matt brubeck
  • Matt kraai
  • Maxim Samburskiy
  • Michael Howell
  • Michael Tiller
  • Michael Woerister
  • mitaa
  • mrmiywj
  • Ms2ger
  • Murath
  • Nerijus arlauskas
  • Nick cameron
  • Nick fitzgerald
  • Nick hamann
  • Nick platt
  • Niko Matsakis
  • Oliver 'ker' Schneider
  • Oliver middleton
  • Oliver schneider
  • Patrick walton
  • Pavel sountsov
  • Philipp Matthias Schaefer
  • Philipp Oppermann
  • pierzchalski
  • Postmodern
  • pravic
  • Pyry kontio
  • Raph levien
  • Rémy Rakic
  • rkjnsn
  • Robert Habermeier
  • Robin kruppe
  • Sander majers
  • Scott olson
  • Sean gillespie
  • Sebastien marie
  • Seo sanghyeon
  • silvo38
  • Simonas kazlauskas
  • Simon wollwage
  • Stefan schindler
  • Stephen mather
  • Steve klabnik
  • Steven burns
  • Steven fackler
  • Szabolcs berecz
  • Tamir duberstein
  • Tang chenglong
  • Taylor cramer
  • Ticki
  • Timon van overveldt
  • Timothy McRoy
  • Tobias bucher
  • Tobias müller
  • Tomáš Hübelbauer
  • Tomoki aonuma
  • Tshepang Lekhonkhobe
  • Ulrik sverdrup
  • User
  • Vadim chugunov
  • Vadim Petrochenkov
  • Val vanderschaegen
  • Wang xuerui
  • York xiang


')

Source: https://habr.com/ru/post/305486/



All Articles