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
- 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.
Servo is also accepting GoSC project submissions under the Mozilla banner. See if any of the project ideas appeal to you and read the advice for applications.
Servo also has a project in Rails Girls Summer of Code. nom is also participating.
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.
Submit your suggestions for next week!
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.
- [Hard]
cargo add
: Infer crate name from path/git repo. - [Easy]
cargo add
: Target specifications. - [Easy]
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.
Notable changes
- rustdoc: Split out rustdoc pass to strip private imports. No more private imports in rustdoc.
- Improve the
check_pat_enum
logic. 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.
- Use
drop_in_place
inVec
andVecDeque
. VecDeques now drop faster. - Extend compiletest to support revisions, incremental tests.
- Use raw pointer casts for
slice
,str
's.as_ptr()
.slice.as_ptr
generates simpler LLVM IR. - Update libc.
- Changed
std::pattern::Pattern
impl on&'a &'a str
to&'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.
- Give
Name
s to positional fields and merge them with named fields. Positional fields are now named starting from "0", "1", ... - Use
box
syntax invec!
macro.vec![..]
no longer copies from the stack. - [MIR] Some initial zeroing implementation work. Zeroing on drop.
- Add
AsciiExt::into_ascii_{upper,lower}case
. - Implement RFC 1192 inclusive ranges.
New Contributors
- ashleysommer
- Evan
- Geoff Catlin
- gohyda
- John Talling
- srinivasreddy
- ubsan
- vegai
Approved RFCs
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
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:
- Add a
replace_slice
method toVec<T>
andString
which removes a range of elements, and replaces it in place with a given sequence of values. - Implement a method,
contains()
, forRange
,RangeFrom
, andRangeTo
, checking if a number is in the range.. - Unix socket support in the standard library.
- Add octet-oriented interface to
std::net::Ipv6Addr
.
New RFCs
- Allow generic
const
s andstatic
s with the obvious syntax and semantics. - Specifying that
<T as Clone>::clone(&t)
whereT: Copy
should be equivalent toptr::read(&t)
. - Add a initial, minimal form of
impl Trait
. - 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
Entry
.
Upcoming Events
- 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
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
- 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.