News Rust # 1 (September 2018)
My comment to the news about Rust ??? with a review of rusty events for a month went well, so that's holding
a section of rusty news for the past month.
In this collection: Rust 1.2? records from Rustconf 201? gfx-rs, Rust201? Flatbuffers port, new versions of ripgrep and Alacritty.
Rust came out ???. The main innovations are available immediately from
cargo fix and
cargo clippy (in more detail in habroperevod ).
? discussion ).
Rust ??? and ??? will be very significant.
There is no exact list yet, but it is expected that :
- in ??? (???) will partially stabilize procedural macros;
- in ??? (???) there will be Rust 2018 + non-lexical lifetimes (NLL) .
? the program of papers ). The list of videos in the order of a very approximate subjective interest:
- Using Rust For Game Development - Kyren from Chucklefish tells about ECS ; Access extended text version of the report ;
- Integrating Rust into Tor: Successes and Challenges - as Tor slowly rusts (one third of the Tor code is now on Rust);
- Using Raft in Rust - Introduction to pingcap /raft-rs ;
- Space, The Rusty Frontier - Rusted space satellites;
- How to (not) introduce Rust at your workplace - about the unsuccessful experience of introducing Rust into the company and what conclusions can be drawn from it;
- Embedding Rust in C /C ++ - from the foundations of FFI to subtle moments and stuffed in practice cones;
- Getting Something for Nothing - how Rust can help in programming for embedded systems;
- Benchmarking and Optimization of Rust Libraries - review of tools and approaches to optimization and benchmarking;
- The Dark Secrets Lurking Inside cargo doc - a tour of the functional rustdoc, including not all known features and a bit about its device;
- Project Mentat: a store for evolving data in Rust - Why is needed and how is arranged. mozilla /mentat ( ? note ? in the beginning of September the project suddenly froze due to a change of priorities);
- C2Rust: Migrating Legacy Code to Rust - another way ( ? corrode and ? citrus-rs ) Partially automate the translation of the code base from C to Rust, how it works, what can be better /worse, how to verify that the logic has not broken down, and what attempts there is in "secure" the generated code;
- The Opposite of Spaghetti Code: Building for Understanding - how to intelligently use Rust tools to build reliable, understandable and extensible APIs;
- My Little Procedural Macro - A short introduction to the world of writing procedural macros. how they work, what is different from the declarative, example and advice;
- Writing Crates for Complete Beginners - A Tour of Turtle - turtle.rs as an example of a library for learning programming, Rust as someone's first YAP, how to hide all the complexity behind a very simple API and to issue features of the rasta very dosed;
- Rust and the Web Platform: A Rookie's Guide - The long way of the Internet to WASM and how Rust is associated with this.
Bonus: several entries arrived with Rust Cologne :
- hyperjson - about the python parsing module JSON mre /hyperjson , written on Rust with the help of PyO3 ;
- Share Secrets Safely - about simplifying the work with GPG share-secrets-safely /cli .
Continues to grow The wasm-bindgen Guide ;
buildthe command is now incremental, the command
was added. test, appeared site ( ? details );
The web-sys package was released. ( discussion ) - a package that provides raw bindings to the means of manipulating DOM, WebGL, WebAudio, timers, fetch, and so on. Over time,
web-syswill become part of stdweb ;
greenwasm - A new project for writing a compatible engine with the WebAssembly engine on Rust;
Wasabi - framework for dynamic analysis of WASM.
WebRender, gfx-rs and gfx-portability
There was a lot of driving there lately:
In this issue: we talk with the guest about how his life changed after the transition from Rockstar Games to Mozilla; discussing WebRender, WebGPU API, and Vulkan Portability; we do not bypass the theme of Diversity;
In the experimental order, Gecko was brought to WebRender via Vulkan ;
? discussion )
The Citybound was excellent report on RustFest'e .
There was much talk about the future of cgmath and nalgebra , one of the results of which is the publication of nalgebra-glm ( ? discussion ) - lightweight wrapper over the "adult" nalgebra ;
As a result of the recent LD42 of jam :
- @Icefoxen published the game "Running In To Space" and very detailed shared his experience ;
- @Ratysz published a game about survival in a global warming "It's Not Cool" :
What would you remove from Rust?
Interesting topic in /r /rust , where it is possible to learn from the comments quite decently any roughness of the language.
Rusty port of FlatBuffers
Have brought the official port of Google FlatBuffers to Rust (
? discussion ). A thick layer of tests, fuzzing, performance and everything else are present.
Do not fear 1.0!
Interesting discussion in /r /rust why the ecosystem is slowis recruited to> 1.0 packages.
- In order for the author to stabilize the package, he needs to make sure that the IPA is adequate - for this he needs to see how people use it. Many people do not use the packages < 1.0, ожидая их стабилизации — от этого стабилизация замедляется;
- For users: want more stable packages - use unstable and give feedback to the author;
- For authors: do not worry so much about release 1.0.
The version ??? ( ? discussion , Very interesting) was released - now it works even faster, it supports PRCE2 and multiline queries.
Alacritty This is a terminal emulator with GPU acceleration, which tries to be very very fast on any 4K screen.
Version 0.2 of was released. ( discussion ) With support for scrolling. From its addition for a long time refused, saying "use tmux", but in the end it was possible to give birth to a performance that was not very high in performance.
By the way, like ripgrep, Alacritty crawls into Linux distributions: brought to Arch ;
The new RFC
By RFC it is quite convenient to observe, in which direction the language moves. In the header of each PRa there is a link "Rendered", according to which RFC is available in a readable form.
RFC 2438 "Deny the overflowing_literalsLint for the 2018 edition" -
overflowing_literalsin Rust 2018 will be a tough mistake, not just a warning;
- RFC 2383 "Lint Reasons" - add the "reason" argument for documentation why we want to disable some validation and the new "expected" attribute, which will require the operation of the check;
- RFC 2437 "Rustfmt stability" - Careful attempts to outline the limits of backwards compatibility of auto-formatting code;
RFC 2535 "Or patterns, i.e Foo (Bar (x) | Baz (x))" - sugar for OR in comparisons;
- RFC 2545 "Elide array size" - the possibility not to specify the size of arrays explicitly in single-valued contexts, for example:
static BLORP_NUMBERS:[u32; _]=[0, 8, 15];
- RFC 2361 "Simpler alternative dbg! () Macro" - Another attempt to add
- RFC 2412 "The optimize attribute" - offers to enter a custom
#[optimize]attribute for adjusting optimizations at item level;
- RFC 2544 "Make the turbofish syntax redundant" - another attempt to kill the "turbobyb" (
:: <>, As in
Foo :: ());
RFC 2418 "Add futures and task system to libcore" again postponed, not destiny to it to become a part of innovations Rust2018.
There is a discussion of import semantics in Rust 2018 .
One line is
Not unknown Bryan Cantrill wrote a large-scale post Falling in love with Rust (
[habr]FB2D - 2D framework for Linux Frame Buffer (Rust) ;
Continue disputes about the future RLS ( which became zaburlili after statements of intention to release RLS ???r3r3906.);
URLO theme from Kornel (author crates.rs) about the "bus factor" in the rusty ecosystem and what to do with it ;
Rust on iOS - a how to with source code (
) - the instruction for creating a rusty application for IOS;
Beware the rust cache on Travis - Accurately with the naive caching of assemblies in travis-ci, maybe it only hinders you;
IntelliJ Rust continues to develop: # 82 , # 83 - In particular, the addition of dependencies in Cargo.toml has been improved, macro support and Rust2018 support;
benfred /py-spy - Python profiler;
Binaryum ( ? discussion
) - disassembler with logic on Rust and UI on an electron;
lewton ???r3r3906. (
discussion ) - a new version of the ogg decoder, now without unsafe;
rayn ( discussion ) - a small ray tracer;
) - A memory-safe and OpenSSL-compatible TLS library;
Tantivy ???r3r3906. (
discussion ) - library for high-performance full-text search (analog
), Improved performance;
miniserde ( ? discussion
) - mini serde , which supports only JSON. It seems amusing, but not completely clear where its application makes sense;
Geemili /mdproof ( discussion ) - light weight converter markdown-> pdf;
Spirit ( ? discussion
) - a library for simplifying the creation of rusty demons;
That's all, thanks for attention!
If I have not added some important link or event, feel free to drop it in the comments. :)
KDPV is taken from article Looking for what to learn in 2018? Learn Rust! , the rest of the pictures from the sites of the corresponding projects.
Only registered users can participate in the survey. Enter , you are welcome.
Is the correct detail for the monthly format?
Too many links, I'm tired of scrolling. It would be better to remove less interesting
As it is - just right
I do not mind if the links were even more
9 people have voted. Abstained 1 user.
It may be interesting
Situs QQ Online
Situs QQ Online