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.29
Rust 1.29 has been released. The main innovations are available immediately from rustup
'a cargo fix
and cargo clippy
(more in the habro-translation ).
Next, version 1.29.1 was released , closing an error in std :: repeat ( discussion ).
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
Became available videos from RustConf 2018 ( program reports ). The list of videos is in the order of a very approximate subjective interest:
- 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 .
WebAssembly
[habr] Yew - Rust & WebAsse-framework for frontend . Record of Denis's report about Yew on HolyJS ;
The wasm-bindgen Guide continues to grow ;
wasm-pack 0.5 ( what is wasm-pack? )
Changes: the
build
command is now incremental, a command has been addedtest
, a site has appeared ( details );Web sys package came out ( discussion ) - a package that provides raw bindings to DOM, WebGL, WebAudio, timers, fetch, etc. manipulation tools. Over time, it
web-sys
will become part of stdweb ;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:
kvark (gfx-rs developer) went to devzen: DevZen # 210: Rastasman WebGPU :
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 ;
On iphone8, it was possible to launch gfx-hal with a Metal backend ;
RPCS3 and Dolphin on macOS using gfx-portability ( discussion ) - with the help of gfx-portability it was possible to launch a PlayStation3 emulator with a Vulkan backend;
Benchmarking gfx-portability versus MoltenVK and OpenGL with Dota2 on Mac ( discussion )
Rusty igrostroy
The nightly assemblies of the Citybound urban development simulator ( discussion ) are now available. The logic of the game remains on Rust, but the UI is now all on React / WASM.
_Pro Citybound was a great talk at RustFest ._
The physics engine nphysics brought the basic support of deformable bodies ;
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 ;
In connection with the talk of the creation-wg gamedev , considerably updated arewegameyet.rs - added / updated information on a pile of rusty library and games;
Delaunator ( discussion ) - fast and easy library for Delaunay triangulation ;
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" :
( Shameless "advertisement" ) started a topic on a Russian-speaking forum about his slowly developing turn-based game Zemerot ;
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.
TLDR:
- 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.
ripgrep 0.10
ripgrep (rg) is a faster and more convenient alternative to classic grep (i.e., the rusty counterpart of The Silver Searcher and ack).
Version 0.10 was released ( discussion , very entertaining) - now it works even faster, supports PRCE2 and multi-line queries.
Also, the ripgrep package snuck into the ubuntu 18.10 repository .
Alacritty 0.2
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 ;
New RFCs
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_literals
lint for the 2018 edition " -overflowing_literals
in 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
dbg!
macro; - 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 (
::<>
as infoo::<Bar>()
);
RFC 2418 "Add futures and task system to libcore" has been postponed again, it’s not destiny to become part of the Rust2018 innovations.
There is a discussion of the semantics of imports in Rust 2018 .
One line
- 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