Nesta bagunça que está acontecendo no mundo agora, é fácil esquecer que cinco anos se passaram desde o lançamento da 1.0 em 2015! A ferrugem mudou muito nesses cinco anos, portanto, gostaríamos de recordar o trabalho de todos os membros da comunidade, a partir do momento em que o idioma se estabilizou.
Lembre-se se alguém esqueceu: Rust é uma linguagem de programação de uso geral que possui os meios para criar software confiável e eficiente. O Rust pode ser usado em qualquer campo: do kernel do seu sistema operacional ao seu próximo aplicativo da web. Esse idioma é totalmente construído por membros de uma comunidade aberta e multifacetada, principalmente voluntários, que compartilharam generosamente seu tempo e conhecimento para ajudar a tornar o Rust do jeito que está agora.
Principais mudanças desde a versão 1.0
2015
1.2 - Geração de código paralelo: reduzir o tempo de compilação sempre foi um tema importante em todas as versões do Rust, e é difícil imaginar que houve um curto período de tempo em que o Rust não teve geração de código paralelo.
1.3 - The Rustonomicon: nossa primeira edição do fantástico livro "The Rustonomicon", um livro que explora o lado sombrio de Rust, Unsafe Rust e tópicos relacionados. Tornou-se uma excelente fonte de informação para quem quer aprender e entender os aspectos mais difíceis do idioma.
1.4 - Suporte para Windows MSVC nível 1: mover a plataforma para o nível 1 trouxe suporte nativo para Windows de 64 bits com o Microsoft Visual C ++ toolkit (MSVC). Antes da versão 1.4, era necessário instalar o MinGW (a porta do ambiente GNU para Windows) para usar e compilar seus programas no Rust. O suporte ao Windows se tornou um dos maiores aprimoramentos da Rust em cinco anos. Apenas recentemente, a Microsoft anunciou um pré-lançamento público do suporte oficial à API Rust WinRT! E, finalmente, agora é muito mais fácil criar aplicativos de alta qualidade e multiplataforma do que nunca.
1.5 — Cargo Install: Rust cargo , , . Cargo , , crates.io!
2016
1.6 — Libcore: libcore
— , API, . libcore
Rust , Rust .
1.10 — C ABI: cdylib
C-, Rust , ABI C. Rust — Rust . , -.
1.12 — Cargo Workspaces: Rust lock-. .
1.13 — Try
: ?
"Try". . try!
, , Result
, ?
.
try!(try!(expression).method());
expression?.method()?;
1.14 — Rustup 1.0: Rustup — . Rust . , , , "". Linux, macOS, Windows .
2017
1.15 — : , API . Rust serde
diesel
.
1.17 — Rustbuild: make
Cargo. rust-lang/rust
.
1.20 — : . 1.20 , , , . API, IP- .
2018
1.24 — : 1.24, , . , , .
1.26 — impl Trait
: impl Trait
API
.
1.28 — : , Rust. API , . alloc
, , , , Vec
String
. , -, .
1.31 — 2018 : 2018 1.0, Rust, . , , .
- (NLL): Rust, .
- : UX .
- : Rust .
- Rustfmt 1.0: , Rust.
- Clippy 1.0: Rust . Clippy , , .
- Rustfix: , , . , Rust,
cargo fix
, .
2019
1.34 — : Rust , . Cargo git-. , , crates.io.
1.39 — Async/Await: async
/await
Future
" " Rust. , .
2020
1.42 — : , ..
() , .
, , Rust 1.0. , .
, . , , , , .
()
use std::io::Write;
fn trait_obj(w: &Write) {
generic(w);
}
fn generic<W: Write>(_w: &W) {}
1.2.0 Compiling error-messages v0.1.0 (file:///Users/usr/src/rust/error-messages)
src/lib.rs:6:5: 6:12 error: the trait `core::marker::Sized` is not implemented for the type `std::io::Write` [E0277]
src/lib.rs:6 generic(w);
^~~~~~~
src/lib.rs:6:5: 6:12 note: `std::io::Write` does not have a constant size known at compile-time
src/lib.rs:6 generic(w);
^~~~~~~
error: aborting due to previous error
Could not compile `error-messages`.
To learn more, run the command again with --verbose.

1.43.0 Compiling error-messages v0.1.0 (/Users/ep/src/rust/error-messages)
error[E0277]: the size for values of type `dyn std::io::Write` cannot be known at compilation time
--> src/lib.rs:6:13
|
6 | generic(w);
| ^ doesn't have a size known at compile-time
...
9 | fn generic<W: Write>(_w: &W) {}
| ------- - - help: consider relaxing the implicit `Sized` restriction: `+ ?Sized`
| |
| required by this bound in `generic`
|
= help: the trait `std::marker::Sized` is not implemented for `dyn std::io::Write`
= note: to learn more, visit <https://doc.rust-lang.org/book/ch19-04-advanced-types.html#dynamically-sized-types-and-the-sized-trait>
error: aborting due to previous error
For more information about this error, try `rustc --explain E0277`.
error: could not compile `error-messages`.
To learn more, run the command again with --verbose.

()
fn main() {
let s = "".to_owned();
println!("{:?}", s.find("".to_owned()));
}
1.2.0 Compiling error-messages v0.1.0 (file:///Users/ep/src/rust/error-messages)
src/lib.rs:3:24: 3:43 error: the trait `core::ops::FnMut<(char,)>` is not implemented for the type `collections::string::String` [E0277]
src/lib.rs:3 println!("{:?}", s.find("".to_owned()));
^~~~~~~~~~~~~~~~~~~
note: in expansion of format_args!
<std macros>:2:25: 2:56 note: expansion site
<std macros>:1:1: 2:62 note: in expansion of print!
<std macros>:3:1: 3:54 note: expansion site
<std macros>:1:1: 3:58 note: in expansion of println!
src/lib.rs:3:5: 3:45 note: expansion site
src/lib.rs:3:24: 3:43 error: the trait `core::ops::FnOnce<(char,)>` is not implemented for the type `collections::string::String` [E0277]
src/lib.rs:3 println!("{:?}", s.find("".to_owned()));
^~~~~~~~~~~~~~~~~~~
note: in expansion of format_args!
<std macros>:2:25: 2:56 note: expansion site
<std macros>:1:1: 2:62 note: in expansion of print!
<std macros>:3:1: 3:54 note: expansion site
<std macros>:1:1: 3:58 note: in expansion of println!
src/lib.rs:3:5: 3:45 note: expansion site
error: aborting due to 2 previous errors
Could not compile `error-messages`.
To learn more, run the command again with --verbose.

1.43.0 Compiling error-messages v0.1.0 (/Users/ep/src/rust/error-messages)
error[E0277]: expected a `std::ops::FnMut<(char,)>` closure, found `std::string::String`
--> src/lib.rs:3:29
|
3 | println!("{:?}", s.find("".to_owned()));
| ^^^^^^^^^^^^^
| |
| expected an implementor of trait `std::str::pattern::Pattern<'_>`
| help: consider borrowing here: `&"".to_owned()`
|
= note: the trait bound `std::string::String: std::str::pattern::Pattern<'_>` is not satisfied
= note: required because of the requirements on the impl of `std::str::pattern::Pattern<'_>` for `std::string::String`
error: aborting due to previous error
For more information about this error, try `rustc --explain E0277`.
error: could not compile `error-messages`.
To learn more, run the command again with --verbose.

( )
fn main() {
let mut x = 7;
let y = &mut x;
println!("{} {}", x, y);
}
1.2.0 Compiling error-messages v0.1.0 (file:///Users/ep/src/rust/error-messages)
src/lib.rs:5:23: 5:24 error: cannot borrow `x` as immutable because it is also borrowed as mutable
src/lib.rs:5 println!("{} {}", x, y);
^
note: in expansion of format_args!
<std macros>:2:25: 2:56 note: expansion site
<std macros>:1:1: 2:62 note: in expansion of print!
<std macros>:3:1: 3:54 note: expansion site
<std macros>:1:1: 3:58 note: in expansion of println!
src/lib.rs:5:5: 5:29 note: expansion site
src/lib.rs:3:18: 3:19 note: previous borrow of `x` occurs here; the mutable borrow prevents subsequent moves, borrows, or modification of `x` until the borrow ends
src/lib.rs:3 let y = &mut x;
^
src/lib.rs:6:2: 6:2 note: previous borrow ends here
src/lib.rs:1 fn main() {
src/lib.rs:2 let mut x = 7;
src/lib.rs:3 let y = &mut x;
src/lib.rs:4
src/lib.rs:5 println!("{} {}", x, y);
src/lib.rs:6 }
^
error: aborting due to previous error
Could not compile `error-messages`.
To learn more, run the command again with --verbose.

1.43.0 Compiling error-messages v0.1.0 (/Users/ep/src/rust/error-messages)
error[E0502]: cannot borrow `x` as immutable because it is also borrowed as mutable
--> src/lib.rs:5:23
|
3 | let y = &mut x;
| ------ mutable borrow occurs here
4 |
5 | println!("{} {}", x, y);
| ^ - mutable borrow later used here
| |
| immutable borrow occurs here
error: aborting due to previous error
For more information about this error, try `rustc --explain E0502`.
error: could not compile `error-messages`.
To learn more, run the command again with --verbose.

, . , :
rustdoc :
- ,
- ( JSON),
- "compile_fail, should_panic, allow_fail",
- .
— Guillaume Gomez (rustdoc)
Rust IDE! , IntelliJ Rust,
RLS rust-analyzer « »
. « Rust»
Vim/Emacs.
— (IDEs and editors)
:
,
Rust ,
.
— Daniel Egger (Embedded WG)
2018 ,
~ 40000 rust-lang/rust
-
.
, , ,
(, ,
). , ,
, PR . .
— Mark Rousskov (Release)
3 Miri
,
.
Stacked Borrows,
Rust.
,
Miri, ,
Miri
, ,
Miri, , ,
.
— Ralf Jung (Miri)
, ,
NLL. , ,
Rust, , ,
NLL.
, .
!
— Niko Matsakis (Language)
, . Rust , Rust . , Rust.
- Rust « » Stack Overflow, , 1.0.
- 2,25 (1PB = 1000 ) , !
- 170 1,8 crates.io, .
- Rust 1.0 , , . , , Apple, Amazon, Dropbox, Facebook, Google Microsoft, Rust .
, Rust, 2015 . Rust? Discourse.
, Rust, , , Rust . , Rust , , Rust !
, - Rust, . ? ? ENTER , … Ctrl+O "" — , MC
, , Rust Book.
, , ( Rust , ) , NLL, , , , , . Rust Intellij Idea.
5 Rust Rust . Rust , , - . Rust-
— nlinker (Translation Team)
Rust 2017 .
.
.
.
- Rust book first edition
- Rust by example
- Rustonomicon.
.
.
Rust by example, Rust book second edition, Async book
Rust , 3 5 . .
— andreevlex ( rust-lang-ru)
Em caso de dúvidas sobre o idioma Rust, você pode ser ajudado no bate-papo do Telegram no idioma russo ou em um bate-papo semelhante para os novatos .
Este artigo foi traduzido em conjunto andreevlex, funkill, nlinker, l4l, Hirrolot, Po0lunin e sem graça.