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 a pull request. 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.
Updates from Rust Community
News & Blog Posts
- Announcing Rust 1.12.
- Ethereum users are recommended to switch to Parity (an Ethereum client written in Rust) to mitigate ongoing DoS attack. Further reads - out of memory bug in Geth client and next steps against transaction spam attack.
- Optional arguments in Rust 1.12.
- Applying Hoare logic to the Rust MIR. Hoare logic is a formal system with a set of logical rules for reasoning rigorously about the correctness of computer programs (from Wikipedia article).
- Rust as a language for high performance GC implementation.
- How to use Rust code inside Haskell.
- Rusty dynamic loading. How to utilize dynamic libraries to reload code on the fly.
- Safe and efficient bidirectional trees.
- How to implement a new DOM API for Servo.
- Observational equivalence and unsafe code. Observational equivalence is the property of two or more underlying entities being indistinguishable on the basis of their observable implications (from Wikipedia article).
- Distinguishing reuse from override. Follow-up to last week's intersection impls article.
- Even quicker byte count. Follow-up to last week's how to count newlines really fast in Rust.
- Implementing Finite Automata in Rust (Part 1).
- Building personalized IPC debugging tools using Electron and Rust.
- Easier Rust Development on the PJRC Teensy 3. PJRC Teensy is a USB-based microcontroller development system.
- Why you should be blogging about Rust.
New Crates & Project Updates
- into_rust(): screencasts for learning Rust.
- Rust compilation times compared to C++, D, Go, Pascal.
- Serde is transitioning to Macros 1.1 (with much faster compile times).
- itertools 0.5.0 released. New features, shorter names, and significant improvements in consistency and clarity.
- Wayland client 0.7 released after a (3rd) rewrite.
- SUPER 0.1.0 released. SUPER, the secure, unified, powerful, and extensible Rust Android Analyzer has released its first version for Windows, Linux and MacOS X.
- defrag: safe and efficient memory manager for microcontrollers.
Other weeklies from Rust community
- [podcast] New Rustacean interview 3. Carol (Nichols || Goulding) on learning Rust, teaching Rust, and building community.
- This week in Servo 79. Servo is a prototype web browser engine written in Rust.
- This week in Rust docs 24. Updates from the Rust documentation team.
- This week in Ruma 2016-10-02. Ruma is a Matrix homeserver written in Rust.
- This week in TiKV 2016-09-30. TiKV is a distributed Key-Value database.
Crate of the Week
No crate was selected for CotW.
Submit your suggestions and votes 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] servo: Enable flexbox layout by default.
- [easy] rust: librustc_llvm: call llvm-config with correct linking mode.
- [hard] rust: Optimize emscripten targets with emcc.
- [hard] rust: Tell emscripten to remove exception handling code when the panic runtime is used.
- [moderate] rust: Create official .deb packages.
- [easy] imag: We use too much .fold(), there is libimagutil::iter::FoldResult!
- [easy] imag: Rewrite: libimagdiary: FromStoreId -> Option<> to use Result<>
- [moderate] super: Coloring errors in the console.
- [easy] super: Line highlighting in code view.
- [moderate] super: Certificate analysis.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
181(!) pull requests were merged in the last week.
- Working asmjs and wasm targets.
- Add changelog for 1.12.
- std: Stabilize and deprecate APIs for 1.13.
- Haiku: Initial work at OS support.
- rustc: implement -C link-arg.
- libtest: add a --skip flag to the test runner.
- Forbid user-defined macros named "macro_rules".
- Don't allocate during default HashSet creation.
- [std::io::Chain] Mark first as done only when reading into non-zero length buffer.
- Allow attributes on lifetime/type formal parameters. First step for
#[may_dangle]
. - remove
ExactSizeIterator
fromRangeInclusive<{u,i}{32,size}>
. Breaking-change for some nightly users. - Reject macros with empty repetitions.
- Add a panic-strategy field to the target specification.
- Restrict where in the tree platform-specific cfgs may be mentioned.
- Resolve the callee type in check_call before autoderef.
- book: New chapter: Fundamental Collections.
- crates.io: Show all crates owned by a user or group.
New Contributors
- Chris McDonald
- Frank Rehberger
- Jesus Garlea
- Martin Thoresen
- Nathan Musoke
- ParkHanbum
- Paul Lange
- Paulo Matos
- Peter N
- Philip Davis
- Pweaver (Paul Weaver)
- Ross Schulman
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:
- Propose a shorthand syntax for constructing struct-like values with named fields.
- Let a
loop { ... }
expression return a value viabreak my_value;
.
New RFCs
Upcoming Events
- 10/5. Open-Space Rust Meetup Cologne/Bonn.
- 10/5. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 10/5. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- 10/5. PSU Capstone Rust project summaries Portland.
- 10/6. Rust release triage.
- 10/10. Seattle Rust Meetup.
- 10/11. Inaugural Tampa Rust Meetup / Install Fest.
- 10/12. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- 10/12. Rust Documentation Team Meeting at #rust-docs on irc.mozilla.org.
- 10/12. Rust Boulder/Denver.
- 10/13. Columbus Rust Society.
If you are running a Rust event please add it to the calendar to get it mentioned here. Email the Rust Community Team for access.
fn work(on: RustProject) -> Money
No jobs listed for this week.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Friends of the Forest
Our community likes to recognize people who have made outstanding contributions to the Rust Project, its ecosystem, and its community. These people are 'friends of the forest'.
This week's friends of the forest are:
- dtolnay and oli-obk for taking over most of the maintenance of the serde stack
- seanmonstar for answering my too many questions
- phildawes for racer
- mitsuhiko for redis
- serde team (dtolnay, oli-obk, erickt)
- athemathmo for rusty_machine
- carllerche for mio/tokio
- killercup for keeping diesel running
- dikaiosune - rusty-dash
- nasa42 and llogiq - This Week In Rust
- WindowsBunny - being the fuzziest bunny +1 +1 (ed: the +1's are from multiple people)
- eddyb - for knowing everything about rust
- chriskrycho for New Rustacean
- steveklabnik, Rust documentation superhero
- carllerche, eternaleye, staticassert
- Matthias Beyer
- llogiq and manishearth
- illegalprime for his work on rust-websocket
- Mark-Simulacrum for awesome work on the compiler performance website
- sfackler and briansmith for enhancing the crypto/security story for Rust. Their efforts have made running Rust in production code much more feasible. sfackler: rust-openssl, rust-security-framework, schannel-rs, rust-native-tls, briansmith: ring, webpki
- from llogiq:
I'd like to nominate Veedrac for his awesome contributions to various performance-related endeavors.
- from codingcampbell:
I'd like to highlight tomaka for his numerous projects (glium, vulkano, glutin). I know he's also involved in some other crates I take for granted, like gl_generator.
I like to play with gamedev, but I am a newcomer to OpenGL things and I have been very grateful for projects like glium and gl_generator that not only give me a good starting point, but through various documentation has informed me of OpenGL pitfalls.
He recently wrote a post-mortem for glium, which I think is good as a matter of reflection, but I'm still very impressed with that project, and the others he is tirelessly contributing to.
Well done!
Submit your Friends-of-the-Forest nominations for next week!
Quote of the Week
My favorite new double-meaning programming phrase: "my c++ is a little rusty"
Thanks to Zachary Dremann for the suggestion.