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
- Comparing Rust and Java.
- Performance analysis of Ethereum clients Parity (Rust) and Geth (Go).
- Programming for Servo: Experience and knowledge gained.
- Parallel iterators part 2: Producers.
- [video] Ferris makes emulators: Episode 6. Live stream of Ferris developing a N64 emulator in Rust (also on Twitch).
- Query2 in timely dataflow. Part #6 of a series about a BigData in Rust experiment.
- [opinion] Rewrite Everything In Rust.
- Deciding to rewrite getaddrinfo in Rust.
- Testing Rust on iOS with Travis.
- Create GitHub releases with Rust using Hubcaps.
- More type-level shenanigans.
- Measuring Rust Runtime Performance: cargo bench vs. getrusage().
- The highs and lows of Rust.
- This week in Amethyst 6.
- This week in Servo 52.
Notable New Crates & Project Updates
- You can now output the generated MIR on play.rust-lang.org.
- Serde 0.7 - Changelog.
- Mio: Proposal to unify sockets, timers, and channels.
- rust-everywhere. Use CI services to generate binary releases of your Rust program for Linux, Mac and Windows.
- rust-bisect. Find the Rust nightly that that changed some behavior.
- Polly. A truly logic-less templating language for Rust servers.
- mrusty. mruby safe bindings for Rust.
- glitter. A safe, low-level, zero-cost Rust OpenGL wrapper library.
Crate of the Week
This week's Crate of the Week is rotor, a mio-based async-IO library providing an event loop, state machine combinators and futures.
Thanks to LilianMoraru 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] Rust: repr(i64) picks 32-bit discriminant on 32-bit platform.
- [Easy] Rust: -C suggestions to use llc for details is annoying.
- [Easy] Rust: JSON errors with suggestions are incomplete.
- [Easy] Rust: All callable types could have better error messages in the "no method found" case to suggest that you may have forgotten to actually call them.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
95 pull requests were merged in the last week.
Notable changes
- Make for loop desugaring for iterators more precise.
- Avoid excessive reallocations during item-bodies checking.
- more check_*_post methods for LintPasses.
- Make sure formatter errors are emitted by the default
Write::write_fmt
. - rand: Fix
OsRng::fill_bytes
on Windows. - std: Cap read/write limits on Windows networking.
- Resolve: fix scoping bug (fixes #31845) and improve unused import detection.
- Update libc to
16f1c19
. - Add unstable
copy_from_slice
. - mk: Move disable-jemalloc logic into makefiles.
- Resolve: Fix the visibility of extern crates.
- Implement
Clone
forstd::vec::IntoIter
. - std: Use Android LFS
off64_t
,ftruncate64
, andlseek64
. - Implement
compare_exchange
andcompare_exchange_weak
. - Recognize
#[thread_local]
attr on extern static. Fixes #30795 CStr::from_bytes_with_nul
.
New Contributors
- dileepb
- Katze
- Kevin Stock
- Michael Huynh
- Stephan Hügel
- tormol
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:
No RFCs are currently in final comment period.
New RFCs
- Add a new crate-type, rdylib.
- Stabilize implementing panics as aborts.
- Exclude macros from importing with
#[macro_use(not(...))]
. - Add space-friendly arguments. Add
-C link-arg
and-C llvm-arg
which allows you to pass along argument with spaces.
Upcoming Events
- 3/1. Rust Detroit presents Hadoop Next Gen: Using Cloudera Kudu and Mozilla Rust to Crunch Big Data.
- 3/2. Rust Amsterdam - Talks and Drinks.
- 3/2. Cologne: Live Rust-Coding.
- 3/3. Rust São Paulo Meetup.
- 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.
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
No jobs listed for this week.
Tweet us at @ThisWeekInRust to get your job offers listed here!
GSoc Projects
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.
Servo is also accepting project submissions under the Mozilla banner. See if any of the project ideas appeal to you and read the advice for applications.
Quote of the Week
Haskell: When you want to feel smarter than everyone else in the universe.
Rust: When you want to feel like an idiot because even a mere compiler is smarter than you.
Thanks to Sinistersnare for the suggestion.