Rust news # 4 (December 2018)
Since the holidays are over, I offer you a subjective selection of rusty news for December. In this compilation: madness with growth, whether growth is terrible, a wave of prophecies, Rust 2018, Rust Analyzer.
The most important event of December is the release of Rust 1.31 and Rust 2018 , of course. There are a lot of things included:
edition 2018, non-lexical lifetimes, changes to the module system, additional rules for lifetimes output, const fn, new tools, instrumental code quality checks, documentation, new website, improvements in cargo.
There are so many changes that the review of all could not be crammed into one post, so after a few days supporting notes were published:
- Procedural Macros in Rust 2018 ( discussion ) - on procedural macros;
- Tools in the 2018 edition ( discussion ) - on expanding the toolkit;
Also, it makes sense to look through a Mozilovsky well-structured review / educational program of the 2018th edition of the language: Rust 2018 is here ... but what is it? ( translation , discussion ).
A wave of posts about plans for 2019
An official request was sent to the community to share views on the 2019th year - A call for Rust 2019 Roadmap blog posts ( discussion ). In response, a wave of more than a hundred articles followed (all can be found at readrust.net/rust-2019 ). Here are some interesting answers:
- Boatman: "Rust 2019: Organizational Debt" ( discussion );
- Graydon: "Rust 2019 and beyond: limits to (some) growth" ( discussion , translation );
- Klabnik: "Thoughts on Rust in 2019" ( discussion );
- Ralph: "My thoughts on Rust 2019" ( translation );
December 15-16, Moscow hosted RustRush 2018 .
Records will be gradually published on the Youtube channel , while two are available:
- Keynote. Ashley Williams - about community spirit and wasm-bindgen;
- Libp2p, a Rust peer-to-peer library. Pierre Krieger ;
idubrov wrote an interesting article on low-level hacks with fierce unsafe. An excellent experiment for learning purposes, but I hope it will not go into real projects.
PsyHaSTe fights the perception of rust exclusively as a system language.
Lesha matklad shared information on the progress of the rust-analyzer project , which is an alternative to RLS ( discussion ).
An important thing, considering that IDE is a very painful topic for Rasta.
- RG Game Development WG ( discussion ) - Erland proposes to create a Game Working Group and concentrate around Amethyst, making him the locomotive of the ecosystem;
- Released puzzle game "Adventures of Pascal Penguin" ( discussion , trailer ) - works on the web, playable by reference;
- Using Rust for Gamedev ( discussion ) - the author of the aforementioned penguin talks about his experience working on it;
- Russian AI Cup 2018 - this year's mail Russian AI Cup uses a simulator on Rust + WASM ( GIF ) (by the way, last year's post is also very interesting);
- Sandspiel ( discussion ) - sticky physical WASM sandbox;
- Published my first game written in Rust: Energy Grid ( discussion ) - economic strategy;
- Dose Response ( code , discussion ) - a small drug addict with ASCII graphics, it takes about five to ten minutes, a web version is available ;
- This year in gfx-rs: 2018 ( discussion ) - a brief overview of what happened with the gfx project from kvark ;
- By the way, the gfx-hal package is laid out on crates.io ( discussion ) - it seems that the processing of the gfx project is slowly settling down and an ecosystem may begin to grow on top of the new version;
- nitric ( discussion ) - heir / reworking specs to return technical debt for an expanded project and increase its flexibility;
- 17cupsofcoffee / tetra ( discussion ) - another attempt to write a simple rusty 2D engine, higher level than ggez;
- Amethyst 0.10 ( discussion ) came out : Rust 2018, switching to nalgebra, simplifying testing and many smaller changes;
- This month in rustsim # 3 (December 2018) :
- nphysics: Added cheap fixed points for deformable bodies: video ;
- nphysics: Added support for multi-body connections, which makes it possible to attach other bodies to a deformable body: video ;
- ncollide: added support for capsules and height maps: video ;
- nalgebra: redesigned matrix indexing, which makes it easier to get cuts ;
- nalgebra-glm: orthographic and perspective projections have been added;
- next year's goals: integration with amethyst, support for liquids, "continuous" collision detection, performance improvement;
There was little noticeable activity on Vasma and the building in December, so they will not have separate sections.
- Updates from IntelliJ-Rust : # 88 , # 89 - including the unsafe code highlighting ( GIF ) and any docking with the 2018th edition of the language;
- Rust code reviews? - Reddit discussion with lists of more or less frequent code smells. Even if you don’t often see someone else’s code, such lists may simply make you think about how you write your code;
- How I Wrote a Modern C ++ Library in Rust ( discussion ) - how to write a rusty library with a full plus interface;
- More on RLS version numbering ( discussion ) - disputes about "stabilization" and RLS positioning continue - RLS will now have the same version as the compiler (1.31 in the post), the public in general is indignant that up to 1.0 RLS and not close enough;
- Async in Rust, circa 2018 ( discussion ) - integration status of async / await into the language;
- async-io-demo ( discussion ) - a training demo of asynchronous io: from mio to stackless corutin;
- Reflecting on Rust and WebAssembly in 2018 ( discussion ) - as usual, a retrospective of this year and a forecast for the next;
- / r / rust "writing" * "for crates in cargo.toml won't always mean" the latest version "" - another reminder that you should not use the "*" versions of dependencies, because it, for example, may well take roll back to the old version of the dependency;
- The Swiss Army Knife of Hashmaps ( discussion ) - a tour of the internal hashbrown (quick alternative to the standard
- habr: I study Rust: How I did UDP chat with Azul - a report from VanquisherWinbringer ;
- habr: First steps on Rust - an overview of the language from zharko_mi ;
- Alexa Skills in Rust ( discussion ) - writing skills for a virtual assistant from Amazon;
- Inside Rust's Async Transform ( discussion ) - excursion to async;
- The Spirit tutorial ( discussion ) - demonization lesson using the spirit package ;
- / r / rust: Porting C code to Rust- notes, questions, and request for review - the experience of porting status_monitor from C to Rust and reviewing code;
- A Rusty Advent of Code: My AOC Experience with the Rust Community ( discussion ) - report on participation in the adventofcode ;
- Comparing Pythagorean triples in C ++, D, and Rust ( discussion );
- / r / rust: Making Rust Float Parsing Fast and Correct - a luxurious post about a fast parser of floating point numbers;
- Tokio: A great 2018, an even better 2019 - ( discussion ) - reflection about the past year from the Tokio project ;
- Using C libraries in Rust: making a * -sys crate is a great excursion to writing rusty wrappers for shared libraries;
New and updated packages
- 'cargo-crev' and Rust 2019 fearless code reuse ( discussion , code ) - a platform for a public review of packages ( demo screencast );
- enum_dispatch ( discussion ) - a macro that helps in some situations it is convenient to replace type-objects with enums (forward the function call to each of the enumeration options);
- structview ( discussion ) - allows you to safely get a representation of binary data in the form of high-level structures;
- cargo-call-stack ( tweet ) - Japaric has published a cargo extension for static analysis of the call stack;
- swc ( discussion ) - a very fast alternative to babel ;
- ds_store ( discussion ) -
.DS_Storefile parser ;
- sd ( discussion ) - "s [earch] & d [isplace]", a rusty alternative to sed with a more intuitive interface;
- enigma ( discussion ) - a toy implementation of the Erlang virtual machine;
- http_static ( discussion ) - a simple static web server that uses tower-web ;
- ws-unix-framed-bridge ( discussion ) - forwards messages from websockets to unix-sockets and vice versa;
- Exonum 0.10 - the framework for building private blockchains changed its serialization to protobuf, changed the message format, and Bitcoin anchorage now uses segwit ;
- Rocket v0.4 ( discussion ) - the web framework received typed URIs, database support and processed queries;
- resvg 0.4 ( discussion ) - the svg file rendering library has received initial support for filters, overlapping masks / clippath, conditional rendering, and much more;
- Tantivy 0.8 ( discussion ) - in the full-text search library, API collections were redesigned and multithreading support was improved;
I did not notice any particularly interesting RFCs at the end of the year, so this is all for today, 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.)