Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. This is a weekly summary of its progress and community. Want something mentioned? Tweet us at @ThisWeekInRust or send us an email! Want to get involved? We love contributions.
This Week in Rust is openly developed on GitHub. If you find any errors in this week's issue, please submit a PR.
This week's edition was edited by: Vikrant and llogiq.
Updates from Rust Community
News & Blog Posts
- Binding threads and processes to CPUs in Rust.
- The many kinds of code reuse in Rust.
- Code of heat conductivity. Llogiq on Rust's Code of Conduct.
- Rustic Bits. And on the small things that make code rustic.
- Why Rust's ownership/borrowing is hard.
- [video] Rust: Unlocking Systems Programming by Aaron Turon.
- This week in Servo 50.
- This week in Amethyst 4. Amethyst is a data-oriented game engine written in Rust.
Notable New Crates & Project Updates
- A MOS6502 assembler implemented as a Rust macro.
- Ketos. Lisp dialect scripting and extension language for Rust programs.
- Parity. Next Generation Ethereum Client, written in Rust.
- TensorFlow Rust. Rust language bindings for TensorFlow from Google.
- rpc-perf. A tool for benchmarking RPC services from Twitter.
- rust-lzma. A Rust crate that provides a simple interface for LZMA compression and decompression.
Updates from Rust Core
125 pull requests were merged in the last week.
See the triage digest and subteam reports for more details.
Notable changes
- [breaking batch] don't glob export
ast::UnOp
variants. - [breaking batch] Rename and refactor ast::Pat_ variants.
- [breaking batch] Remove some unnecessary indirection from AST structures.
- Allow registering MIR-passes through compiler plugins.
- Add a new i586 Linux target.
- std: Deprecate all
std::os::*::raw
types. - Workaround LLVM optimizer bug by not marking &mut pointers as noalias.
- Don't let
remove_dir_all
recursively remove a symlink. - Split dummy-idx node to fix expand_givens DFS.
- Do not expect blocks to have type str.
- Add _post methods for blocks and crates.
- fix: read_link cannot open some files reported as symbolic links on windows.
New Contributors
- Adam Perry
- Carlos E. Garcia
- Daniel Robertson
- Felix Gruber
- Johan Lorenzo
- Kenneth Koski
- Masood Malekghassemi
- Richard Bradfield
- Scott Whittaker
- Thomas Winwood
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
Final Comment Period
Every week the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now. This week's FCPs are:
- Stabilize volatile read and write.
- Move some net2 functionality into libstd.
- Extend atomic compare_and_swap.
- Safe
memcpy
from one slice to another of the same type and length. - Add
maybe!
macro equivalent totry!
. - Add additional
try!(expr => return)
that will return without value. - Add a
let...else
expression, similar to Swift'sguard let...else
. - Add macros to get the values of configuration flags.
- Implement
Into
,From
and new traitIntegerCast
for primitive integer types. - Add
retain_mut
toVec
andVecDeque
. - Propose a design for specialization, which permits multiple
impl
blocks to apply to the same type/trait.
New RFCs
- Add octet-oriented interface to
std::net::Ipv6Addr
. - Extend the pattern syntax for alternatives in
match
statement. - Add
#[clear_on_drop]
and#[clear_stack_on_return]
to securely clear sensitive data after use. - Amend RFC 550 with misc. follow set corrections.
Upcoming Events
- 2/16. San Diego Rust: Eat– Drink– Rust! Downtown Rust Meetup.
- 2/17. Copenhagen Rust Group meetup.
- 2/17. Rust Los Angeles Monthly Meetup.
- 2/17. Rust Berlin: Leaf and Collenchyma.
- 2/18. Rust Hack and Learn Hamburg @ 4=1.
- 2/24. OpenTechSchool Berlin: Rust Hack and Learn.
- 2/25. Tokyo Rust Meetup #3.
If you are running a Rust event please add it to the calendar to get it mentioned here. Email Erick Tryzelaar or Brian Anderson for access.
fn work(on: RustProject) -> Money
- Research Engineer - Servo at Mozilla.
- Senior Research Engineer - Rust at Mozilla.
- PhD and postdoc positions at MPI-SWS.
Tweet us at @ThisWeekInRust to get your job offers listed here!
GSoc Project
Hi students! Looking for an awesome summer project in Rust? Look no further! Chris Holcombe from Canonical is an experienced GSoC mentor and has a project to implement CephX protocol decoding. Check it out here.
Crate of the Week
This week's Crate of the Week is rayon,
which gives us par_iter()
/par_iter_mut()
functions that use an internal thread pool to easily parallelize data-parallel operations.
There's also rayon::join(|| .., || ..)
for Fork-Join-style tasks. Apart from the ease of use, it also performs very well, comparable to hand-optimized code.
Thanks to LilianMoraru for the suggestion.