Rust news # 5 (January 2019)
I bring to your attention a subjective selection of rusty news for January. In this selection: Rust 1.32, care of Steve Klabnik and Nick Cameron, Cloudflare kish, device rust-analyzer and page memory, GUI searches and async, Oxydyze conference for builders.
Rust 1.32 released. Compared to the large-scale past release, on which a lot of the forces of the whole community were concentrated, there are not so many serious innovations:
- New helper macro for debugging
- By default, jemalloc is removed.
- Stable "uniform paths"
Details in the translation of the news .
Steve Klabnik and Nick Cameron leave Mozilla
Steve's post “thank u, next” ( discussion ) states that the main reasons are float with “external” to Rust part of Mozilla and all sorts of mundane money issues. Steve wants to find a job related to Rust and will try to continue to take part in the life and development of the language, although it is definitely not in the old volume.
In "Leaving Mozilla and (most of) the Rust project" ( discussion ), Nick says that he’s just tired of this project in seven years and wants a change of scenery. He has already gone to work at PingCAP :
"Starting at PingCAP" ( discussion ).
Guide to the rust-analyzer & Salsa
The rust-analyzer uses the Salsa incremental recompilation library, a post and a couple of videos have also recently been published about its device:
- Salsa: Incremental recompilation ( discussion );
- Video "How Salsa Works" - high-level overview of the concepts and structure of the library;
- The video "Salsa In More Depth" is already deeply buried in the incremental algorithm and explains the details of the Salsa implementation.
OS on Rust: Page Memory
A series of articles Writing an OS in Rust added two articles about page memory:
humbug translated its article "Starcraft bot on Rust, C and in any other language" into English .
Writing a dynamic library under Windows that could be loaded into the address space of the StarCraft: Brood War game and control units.
If someone has not read, then here is a reason to get acquainted. :)
Are We Async Yet?
Around the intake of asynchronous syntax into the language lately there has been so much activity ( for example ) that a separate updated page with the status of key RFC / discussions has been introduced : areweasyncyet.rs ( discussion ).
Are We GUI Yet?
Rusty implementations of the QUIC protocol: Quiche from Cloudflare and Quinn
Came out of Quinn v0.2 ( code , discussion ), he is now one of the most accurate implementations of the protocol. First of all, this library is focused on the idiomatic Rust API, including support for futures;
Translation of the Mozillian article "Fearless Security: Memory Safety" , which tells about the basics of how Rust ensures safe work with memory.
- oxidizeconf.com - A conference on programming embedded systems and IoT on Rust will be held in April in Berlin. Everyone is invited to submit reports to CfP .
- Building an Embedded Futures Executor ( discussion ) - futures in building? why not;
- Embedded Rust Experiments - Is my STM32 MCU running fast? ( discussion ) - a lesson on working with STM32 from Rust and all related activities;
- My Rust Powered linux.conf.au e-Paper Badge ( discussion ) - from which you can collect a badge with an e-paper screen and how to cram Rust into this business;
- 2019 roadmap RFC for the Rust and WebAssembly working group ( discussion ) - The WASM working group sets goals for this year: developing the ecosystem, improving debugging, dragging in multithreading and releasing wasm-pack v1.0;
- Embedding WebAssembly in your Rust application ( discussion ) - WASM as an embeddable language, i.e. alternative to Lua, Guile and other similar things;
- A series of articles "WebAssembly Troubles":
- imgui-ext ( discussion ) - an experimental procedural macro for quickly building debug GUIs based on imgui ( sample code + result image );
- Using Rust for Gamedev ( discussion ) - Matthew Michelotti talks about his experience working on a penguin game ;
- fl3 muddied the WASM / WebGL engine with good-web-game , API-compatible with the GGEZ subset, so that my Zemerot suddenly had a full-fledged web version: ozkriff.itch.io/zemeroth ( discussion );
- WebGL + Rust: Basic Water Tutorial ( discussion ) - the article has an interactive demo;
- Lokathor is actively working on a series of lessons on gfx-hal ;
- The State Of GGEZ, 2019 ( discussion ) - Icefoxen wants to release GGEZ v0.5 and take a “vacation” by delegating the development to co-authors; In addition, the article describes the current status of support for mobile and web platforms + thoughts about switching to the new gfx-hal ;
- A large list of what stevebob made the game on Rust over the past year , including: wave function collapse library ( picture ), platform physics engine , pixel-by-pixel definition of the visibility zone, and much more (many gifs);
- After Hours Game Development ( discussion ) - a story about the hobby development and structure of the DF-like game;
- Game Server in 150 lines of Rust ( discussion ) - a short lesson on writing a simple asynchronous game server;
- kaiju ( discussion ) - embedded gaming assembler + old school games emulator ( GIF demo );
- Packaging a game for Windows, Mac, and Linux with Rust ( discussion );
- OpenMoonstone ( discussion ) - an open clone of the old role-playing movie Moonstone ( video demo );
- There is an active work on the voxel RPG Veloren , for example, here is a video of the animation system with a demo of attaching objects to the bones ;
- Roboinstruct project updates :
- Ammolite ( code , discussion ) - a physically correct glTF real-time rendering engine with focus on VR / AR ( GIF );
- The January IntelliJ-Rust updates ( # 90 , # 91 ) include: support for renaming dependencies in Cargo.toml , initial support for macro 2.0 , a quick fix for "Make mutable" ( GIF ), a refactoring of "Introduce Parameter" ( GIF ), and type inference for try blocks and generators ;
- WebRender was published on crates.io ( discussion ) - now it will be easier to do other projects with it;
- dtolnay / request-for-implementation ( discussion ) - a list of "packages that do not exist, but should" with a fairly detailed description of ideas and information on where to look for help and mentoring;
- Rust is now the 13th most popular language on GitHub ( discussion );
- John Carmack teaches Rust ( discussion );
- My experience converting a Python library to Rust ( discussion ) - a report on rewriting a Python library entirely on Rust (development time is much longer, but there is not much trouble with optimizations);
- Multiscreen cheat sheet for Rust for beginners ( discussion ) - paint and varnish for dragging;
- Is it Time to Rewrite the Operating System in Rust? ( discussion ) - a presentation with QCon that we should not try to rewrite something large-scale on Rust at once, we must go through the creation and implementation of small, useful and high-quality rusty building blocks;
- Building ripgrep 0.10 (and its dependencies) in Debian is now replicable ( discussion ) - this is just important for the penetration of rust packets into other ecosystems;
- / r / rust: "Your favorite Rust tricks?" - Discussion with all sorts of Rust-tricks and non-obvious techniques;
- / r / rust: Rust in Benchmarks Game is on average 3% faster than C ++ and 4% slower than C ” - creeping up slowly, but with benchmarks everything is always difficult and ambiguous;
- talk "Rust at speed - building a fast concurrent database" ( discussion ) - on building a fast multi-thread database on Rust;
- librsvg movement: rust schedule librsvg , a more detailed report on the status of the process and a separate report on the simplification of working with GObject from Rust ;
- Red Hat Developer: Speed up your Python using Rust ( discussion ) - how and why to expand Python code Rust, comparison with problem solving with the help of numpy, selection of links for further immersion in the question;
- QtCreator and its use as an IDE for Rust ;
- When Rust is safer than Haskell ( discussion ) - comparison of the security of Rust and Haskell;
- / r / rust discussion on the topic of rust-vs-go in the context of the web ;
- / r / rust: "Where do you think? Rust will be in 3 years?" - Vanguing about the future of Rust, there are interesting opinions in the comments;
New and updated packages
- Ropey ( discussion ) - an effective and utf8 compatible implementation of the Rope / Cord data structure , which is often used in text editors;
- hexyl ( discussion ) - console hex viewer, actively using colors to designate groups of hexadecimal values;
- cargo-cache ( discussion ) - allows you to selectively clean the pieces
- typetag ( discussion ) - a macro attribute that allows painless serialization
&dyn Traitand deserialization of
- dness ( discussion ) - dynamic dns client;
- regex-automata ( discussion ) - provides a low-level interface for working with regular expressions (as opposed to
regex), which is less convenient, but allows for detailed control of memory consumption and search time; uses DFA and supports serialization;
- Stretch ( code , discussion ) - rusty flexbox implementation, used in Shard (as it is pushed into android and ios );
- arbalest ( discussion ) is an alternative to regular Arc, but weak links do not prohibit altering data access;
- Toshi ( discussion ) - a full-text search engine, similar to Elasticsearch (an alternative to what Tantivy , which focuses on Lucene);
- inferno - rusty port of barley visualizer of flamegraph profiling results , the development process is laid out in the form of streams ( video 1 , video 2 );
- DataFusion v0.6 ( discussion , code ) - the first version of the in-memory query engine, using the official Rust implementation of Apache Arrow ;
- cargo-expand v0.4 ( discussion ) - the "macros opener " now supports working with specific modules / types / functions;
- fluent-rs v0.5 ( discussion ) - the rusty implementation of the modern localization system Fluent updated the approach to resource allocation, got the zero-copy parser and improved the documentation;
- Tokei v9.0 ( code , discussion ) - the program of counting lines in the source code has received support for configuration files, the number of understood YPs has grown to 170;
- cargo-crev v0.4 ( discussion ) - The UX system of the distributed review package has been redesigned towards a strong simplification;
- Smithay v0.2 ( code , discussion ) - Anvil example was added to the library for developing window managers for Wayland , colors and XWayland were improved, rewritten by DRM;
- oxide-auth v0.4 ( discussion ) - The OAuth2 library has been completely rewritten and is now compatible with actix, rocket and rouille;
Habr has recently loosened the nuts and now allows you to refer to external community resources, so I’m inviting everyone to get acquainted with Rust by looking for help and advice in the Russian-speaking resources for Rust:
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. :)
KDPV taken from here , the rest of the pictures from the sites of relevant projects.