Rust News # 1 (September 2018)
My comment to the news about Rust 1.28 with a review of rusty events for the month went pretty well, so keep a very subjective cut of rusty news from last month.
In this collection: Rust 1.29, records of reports from Rustconf 2018, gfx-rs, Rust2018, Port Flatbuffers, new versions of ripgrep and Alacritty.
Rust 1.30 and 1.31 will be very significant.
There is no exact list yet, but it is expected that :
- at 1.30 (2018.10.26) the partial stabilization of procedural macros will enter;
- at 1.31 (2018.12.07) will enter Rust 2018 + non-lexical lifetimes (NLL) .
Video from Rustconf 2018
- Using Rust For Game Development - Kyren from Chucklefish talks about ECS ; An extended text version of the report is available ;
- Integrating Rust into Tor: Successes and Challenges - how Tor slowly rust (a third of the Torah code is now on Rust);
- Using Raft in Rust - introduction to pingcap / raft-rs ;
- Space, The Rusty Frontier - Rusty Space Satellites;
- How to (not) introduce Rust at your workplace - about the unsuccessful experience of introducing Rust in the company and what conclusions can be drawn from it;
- Embedding Rust in C / C ++ - from the basics of FFI to fine points and cones stuffed in practice;
- Getting Something for Nothing - how Rust can help in programming for embedded systems;
- Benchmarking and Optimization of Rust Libraries - an overview of tools and approaches to optimization and benchmarking;
- The Dark Secrets Lurking Inside cargo doc - a tour of the rustdoc functionality, including not all known features and a little about its structure;
- Project Mentat: a store for evolving data in Rust - why you need it and how does mozilla / mentat work ( note: at the beginning of September the project was suddenly frozen due to a change of priorities);
- C2Rust: Migrating Legacy Code to Rust is another way ( corrode and citrus-rs ) to partially automate the translation of the code base from C to Rust, how it works, what can be better / worse, how to check that the logic is not broken, and what attempts there are in "defusing" the generated code;
- The Opposite of Spaghetti Code: Building for Understanding - how to use Rust tools wisely to build robust, understandable and extensible APIs;
- My Little Procedural Macro - a small excursion into the world of writing procedural macros. how they work, how they differ from the declarative ones, 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 PL, how to hide all the complexity behind a very simple API and give out rast features very metered;
- Rust and the Web Platform: A Rookie's Guide - a long Internet journey to WASM and how Rust is associated with it.
Bonus: several entries have flown with Rust Cologne :
- hyperjson - about the JSON mre / hyperjson python module parsingwritten in Rust with PyO3 ;
- Share Secrets Safely - about simplifying GPG work with share-secrets-security / cli .
The wasm-bindgen Guide continues to grow ;
greenwasm - a new project for writing a Rust engine that is compatible with the WebAssembly specification;
Wasabi is a framework for dynamic WASM analysis.
WebRender, gfx-rs and gfx-portability
There has been a lot of movement lately:
In this issue: talking with the guest about how his life has changed after the transition from Rockstar Games to Mozilla; discuss the WebRender, WebGPU API and Vulkan Portability; do not bypass the topic of diversity;
Experimentally, Gecko was launched on Vulkan using WebRender ;
_Pro Citybound was a great talk at RustFest ._
There was a lot of talk about the future of cgmath and nalgebra , one of the outcomes of which is the publication of nalgebra-glm ( discussion ) - a lightweight wrapper over an “adult” nalgebra ;
Following the recent LD42 jam :
- @Icefoxen published the game "Running In To Space" and shared his experience in great detail ;
- @Ratysz published a game about survival in conditions of global warming "It's Not Cool" :
What would you remove from Rust?
An interesting topic in / r / rust , where you can learn from the comments decently all the irregularities of the language.
Rusty Port FlatBuffers
They brought the official port of google FlatBuffers to Rust ( discussion ). A thick layer of tests, fuzzing, performance and everything else is present.
Don't fear 1.0!
An interesting discussion in / r / rust is why the ecosystem is slowly moving up to> 1.0 packets.
- In order for the author to stabilize the package, he needs to make sure that the API is adequate - for this he needs to see how people use it. Many people do not use packages <1.0, expecting their stabilization - because of this, stabilization slows down;
- 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.
Version 0.10 was released ( discussion , very entertaining) - now it works even faster, supports PRCE2 and multi-line queries.
Alacritty is a GPU-accelerated terminal emulator that tries to be very, very fast on any 4K screen.
Version 0.2 released ( discussion ) with scrolling support. I refused to add it for a long time, saying “use tmux”, but in the end it turned out to give birth to an implementation that is not very productive.
By the way, like ripgrep, Alacritty crawls into Linux distributions: brought to Arch ;
By RFC, it is quite convenient to observe which way the language is moving. In each PR header, there is a "Rendered" link, under which the 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" - will add the argument "reason" to document why we want to disable some kind of checking and the new attribute "expected", which will require that the test be triggered;
- RFC 2437 "Rustfmt stability" - careful attempts to delineate the limits of backward 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 ability to not explicitly specify the size of arrays in unambiguous contexts, for example:
static BLORP_NUMBERS: [u32; _] = [0, 8, 15];
- RFC 2361 "Simpler alternative dbg! () Macro" is another attempt to add a
- RFC 2412 "The optimize attribute" - prompts you to enter a custom
#[optimize]attribute to adjust the optimizations at the item level;
- RFC 2544 "Make the turbofish syntax redundant" is another attempt to kill the turbo-gun (
RFC 2418 "Add futures and task system to libcore" has been postponed again, it’s not destiny to become part of the Rust2018 innovations.
- The notorious Bryan Cantrill wrote a large-scale post Falling in love with Rust ( discussion );
- [habr] FB2D - 2D framework for Linux Frame Buffer (Rust) ;
- Controversy continues about the future of RLS ( which have boiled over after statements of intent to release RLS 1.0 );
- URLO is a Kornel theme (by crates.rs) about the "bus factor" in a rusty ecosystem and what to do about it ;
- Rust on iOS - a how to with source code ( discussion ) - a tutorial on creating a rusty iOS application;
- Beware the cache on Travis - be careful with the naive caching of assemblies in travis-ci, maybe it only bothers you;
- IntelliJ Rust continues to evolve: # 82 , # 83 - in particular, dependency additions in Cargo.toml, macro support and Rust2018 have been improved;
- benfred / py-spy - python profiler;
- Binaryum ( discussion ) - a disassembler with logic on Rust and UI on an electron;
- lewton 9.1 ( discussion ) - a new version of the ogg decoder, now without unsafe;
- rayn ( discussion ) is a small ray tracer;
- MesaLink ( discussion ) - A memory-safe and OpenSSL-compatible TLS library;
- Tantivy 0.7 ( discussion ) - library for high-performance full-text search (similar to Lucene ), improved performance;
- miniserde ( discussion ) - mini serde , supporting only JSON. It seems entertaining, but not completely clear where its use makes sense;
- Geemili / mdproof ( discussion ) - a lightweight markdown-> pdf converter;
- Spirit ( discussion ) - a library to simplify the creation of rusty demons;
That's all, thank you for your attention!
If I have not added any important link or event, feel free to throw in the comments. :)
QDPV taken from the article Looking to what to learn in 2018? Learn Rust! , the rest of the pictures from the sites of relevant projects.
Only registered users can participate in the survey. Sign in , please.
Is the detail specification correct for the monthly format?
- 20.8% Too many links, I'm tired of scrolling. It would be better to remove less interesting 19
- 48.3% As it is - just right 44
- 30.7% I do not mind if the links were even more 28