Better with a delay of a week than never, so I bring to your attention a subjective selection of rusty news for October.
In this selection: Rust 1.30, Rust 2018, RustRush conference, Amethyst 0.9, squatting crates.io, garbage collector, 2D graphics disputes, Non-lexical lifetimes, functional GUI.
Rust 1.30 came out ( discussion ). The main innovations are partial stabilization of procedural macros, import of macros through normal use
, improvement of the module system, raw identifiers, and support for no_std
applications (more details in the habro-translation ).
Rust 1.31 will be the first release of the edition (edition) of "Rust2018" ( what is the "edition"? ), In connection with which everyone is invited to join beta testing of version 1.31 and cargo fix .
RustRush 2018 is a Rust developer conference dedicated to web, blockchain, high performance and system programming.
The site has been updated ( rustrush.ru ) - an almost complete list of speakers and a program has been published, the sale of the main lot of tickets has begun.
There will be four members of the project Rust Language: Steve Klabnik, Ashley Williams, Pascal Herliffe, Katharina Fey. From other local and not very famous stars - Maksim Lapshin with IP camera firmware, Kostya Stepanov and Pierre Krieger aka tomaka. The program .
If someone wants to submit a report, Call for Papers is open until November 19th.
Programming WebAssembly with Rust - The Book ( discussion ) - a book on WASM / Rust is planned;
WebAssembly's post-MVP future: A cartoon skill tree ( habro-translation: "The future of WebAssembly as a“ skill tree ” ) - where and how WASM will continue to develop and what role in its ecosystem will play languages ​​like Rust;
Ruukh ( code , discussion ) - experimental frontend web framework (uses unstable features), inspired by VueJS and ReactJS;
Draco ( discussion ) - a library for building client applications, inspired by Redux and Elm ;
Twiggy 0.3.0 ( code ) - among other updates, a user .wasm
appeared in the profiler of .wasm
file size;
For parcel (a young and fast build system for JS projects, which is friendly with the growth and does not require customization) , a plugin is released that integrates it with the wasm_bindgen package: parcel-plugin-wasm.rs .
Here is a template that demonstrates how the plugin works: rustwasm / rust-parcel-template .
Thanks mvlabat for the news.
Smithy progress update: how I decreased WebAssembly bundle size by 90% - the name is a little misleading, because about weight reduction there, in essence, only a small piece in the spirit of "twirled the LLVM settings and used wasm-opt", but the article can find other useful stuff.
Here, at the same time, the head of the book wasm about reducing the size of artifacts .
Calls between JavaScript and WebAssembly are finally fast ( discussion ) - there is no Rust in the article itself, but for the Rust / WASM ecosystem the event is still very important;
Multithreading Rust and Wasm ( discussion ) - a detailed analysis of the multithreading situation in Rust and the ray tracing demo :
rust-industrial-io - using libiio , provides access to industrial sensors and actuators;
The development of cortex-r-rt - a runtime package for Cortex-R processors has been started;
keypad - driver for keyboard matrix circuits;
Bluetooth Low Energy with Rust ( discussion );
With stabilization #[panic_handler]
at 1.30, it became possible to develop Cortex-M applications that work without an OS using a stable compiler.
shared-bus ( code ) - allows you to safely share peripherals between devices using mutexes;
Embedded WG (working group) is growing: already 27 developers in 11 teams;
The library of linear algebra "cgmath" is slowly dying in favor of "nalgebra" ;
The new version of the game engine Amethyst 0.9 ( discussion ) has been released:
SpriteRender
component, which simplifies the creation of 2D games and adds support for batching;Also, we are working on:
New notes on the development of the puzzle RoboInstruct :
The Entry Component System ( discussion ) is a new fast ECS, in some places faster specs due to putting data in SoA, not AoS . Gifka demo . The author warns that the project is still raw and for serious undertakings it is better to use specs for now;
Gfx-hal Tutorial part 2: Vertex buffers - the second lesson on working with gfx-hal ;
The last couple of months in rustsim # 1 - what happened in the last couple of months with nphysics , ncollide , nalgebra and alga ;
GLSL quasiquoting in Rust! ( discussion ) - quasi-coding of the shader code allows using GLSL directly from the Rust code with rustc checks at the build stage (the current version is very raw and only checks the formatting, but future versions should learn how to make more useful semantic checks);
Encrusted ( discussion ) - WASM interpreter Zork-like textual adventures;
Events in Entity Component Systems ( discussion ) - approaches to the organization of an ECS-based event system with separate greetings from the specs
;
The controversy over whether crates.io should start supporting namespace / organization spaces has been almost invisible since the advent of cargo. Just throw here a list of several in recent years:
The question is difficult, I can’t see the end. Someone freaked out a couple of weeks ago and decided to either punch or spam the repository:
Users of the service had access problems for several hours. As a result, nothing much has changed: they introduced several additional rules against outright spam, discussions resumed with a vengeance, creating several more Pre-RFCs in the process. Let's see where it all comes in the end.
withoutboats , in the process of researching what new, not yet stabilized Pin API is capable of, wrote an experimental garbage collection library - Shifgrethor - and published a series of articles on how and why it is organized:
This is not the first attempt to implement a rusty GC library (there used to be @
-udes for this purpose in the language), but this one differs from previous attempts by using the new mechanism of Pin
's.
Since the library depends on the Pin API, it cannot work on stable Rust yet. The boatman reiterates several times that the project is still purely research and he is not even sure where it will make sense to use this library - most likely for integration with GC of other languages ​​or implementation of complex data structures.
Why take and create a universal library for 2D graphics for all occasions will not work? Very entertaining, I recommend to look through the articles themselves and comments to them.
Niko posted a few notes about how NLL ( what is this? ) Will be immediately integrated into the next edition of Rust (so far it must be explicitly enabled through feature(nll)
), its implementation and problems to be solved in future analyzer iterations borrowing (borrowck):
For those who want to dig a little deeper, there is also a URLO theme .
Even from comments to the past of the monthly it is clear that the GUI is a sore spot of Rust. Another attempt to plug this hole in the ecosystem: Azul is a functional IMGUI state-caching library that uses WebRender for rendering ( discussion ).
Details are on the project website: azul.rs.
#[global_allocator]
attribute has recently been stabilized, so those who wish to return the old allocator can hook in the jemallocator package ;target
directories devour disk space like they do not like;hashmap!{ 1 => 2, 2 => 3 }
;tokio
, hyper
and http
dependencies, improved performance, appeared asynchronous distribution of static files and the ability to customize the used tokio-runtime;RFC makes it quite convenient to observe which way the language is moving, so here are some interesting ones. In the PR header, there is a "Rendered" link, under which the RFC is available in a readable form.
impl<T> ForeignTrait<LocalType> for ForeignType<T>
;uint<N>
and int<N>
integer types;And here are some more Pre-RFC discussions:
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.
Source: https://habr.com/ru/post/429038/
All Articles