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.
Updates from Rust Community
News & Blog Posts
- Announcing Rust 1.7.
- Memory Management in Rust and Swift.
- Rust and Swift. An ongoing series of blog posts comparing Rust and Swift.
- Lambda architecture with differential dataflow. Part #7 of a series about a BigData in Rust experiment.
- How to use Eco. Eco is a tool for reasoning about breaking changes in Rust ecosystems.
- Clippy: Linting as a Service.
- ASM.JS code using Rust and Emscripten.
- [video] Ferris makes emulators: Episode 7. Recorded stream of Ferris developing a N64 emulator in Rust (also on Twitch).
- Nice errors in LALRPOP. LALRPOP is an LR(1) parser generator for Rust.
- This week in Servo 53.
Notable New Crates & Project Updates
- Announcing Leaf 0.2 - one of the fastest Machine Intelligence Frameworks that exist today.
- RFC on rewriting the data structure and API for rust-url.
- Oxipng. Lossless PNG compression optimiser written in Rust.
- Caesar. A drop-in replacement for the Rust standard library TCP listener with TLSv1.2 enabled.
- rust-stm. A Rust library that implements software transactional memory.
- concatenation_benchmarks-rs. Comparing ways to concatenate strings in Rust.
- rosc. An implementation of the OSC 1.0 (Open Sound Control) protocol in pure Rust.
- Rsoundio. A wrapper for libsoundio, a cross-platform realtime audio in- and output library.
- Releasing ndarray 0.4. ndarray is a Rust library providing an n-dimensional array.
Summer of Code Projects
Hi students! Looking for an awesome summer project in Rust? Look no further! Chris Holcombe from Canonical is an experienced Google Summer of Code 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 preferences which does the right thing to your program's preferences on all common operating systems.
Thanks to llogiq for the suggestion.
Call for Participation
Always wanted to contribute to open-source projects but didn't know where to start? Every week we highlight some tasks from the Rust community for you to pick and get started!
Some of these tasks may also have mentors available, visit the task page for more information.
- [Easy] cargo-add accepts package names with mismatching hyphen/underscore without conversion.
cargo add: Infer crate name from path/git repo.
cargo add: Target specifications.
cargo list: More tests.
- [Easy] Rust: -C suggestions to use llc for details is annoying.
- [Easy] Rust: JSON errors with suggestions are incomplete.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
113 pull requests were merged in the last week.
- rustdoc: Split out rustdoc pass to strip private imports. No more private imports in rustdoc.
- Improve the
check_pat_enumlogic. rustc will catch missing fields in pattern matches again.
- Truncate i8-s to i1-s when loading constants. Regression fix for LLVM type errors with bools.
VecDeque. VecDeques now drop faster.
- Extend compiletest to support revisions, incremental tests.
- Use raw pointer casts for
slice.as_ptrgenerates simpler LLVM IR.
- Update libc.
&'a &'a strto
&'a &'b str. Patterns can now be pointers-to-pointers to str with different lifetimes.
- Fix compiling libstd with emscripten target. libstd can now be compiled with emscripten.
- Use HIR map instead of tcx in constant evaluator. One less internal compiler error with trait consts.
- Implement RFC 1461. Move some net2 functionality into libstd.
- std: Stabilize APIs for the 1.8 release.
Names to positional fields and merge them with named fields. Positional fields are now named starting from "0", "1", ...
vec![..]no longer copies from the stack.
- [MIR] Some initial zeroing implementation work. Zeroing on drop.
- Implement RFC 1192 inclusive ranges.
- Geoff Catlin
- John Talling
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
No RFCs were approved this week!.
Final Comment Period
- Add a
Stringwhich removes a range of elements, and replaces it in place with a given sequence of values.
- Implement a method,
RangeTo, checking if a number is in the range..
- Unix socket support in the standard library.
- Add octet-oriented interface to
- Allow generic
statics with the obvious syntax and semantics.
- Specifying that
<T as Clone>::clone(&t)where
T: Copyshould be equivalent to
- Add a initial, minimal form of
- Custom dynamically sized types for Rust.
- Add workspaces to Cargo.
- Add a variation to the entry API for maps that doesn't store the search key in the
- 3/9. OpenTechSchool Berlin: Rust Hack and Learn.
- 3/9. Rust Boulder/Denver Monthly Meeting.
- 3/10. Columbus Rust Society.
- 3/11. Darmstadt Rust Table of Regulars.
- 3/14. Seattle Rust Meetup.
- 3/17. London Rust Meetup.
- 3/21. Rust Paris
fn work(on: RustProject) -> Money
- PhD and postdoc positions at MPI-SWS.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
No QotW were selected for this week.