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.25. ππ
- Tokio: New Timer implementation.
- Refactoring some repetitive code to a Rust macro.
- History of the Rand crate.
- HTTP upgrades with hyper.
- Porting an academic C++ library to Rust to do analysis on Doom maps.
- Building tiny Rust binaries for embedded Linux.
- Speeding up dwarfdump with Rust.
- Analysing crates.io data for top dependencies.
- Rust-webapp-starter: A template for Actix-web and Vue.js
- This week in Rust docs 99.
- The Embedded Working Group Newsletter 2.
- [podcast] New Rustacean: Rust 1.25. Paths and matches and SIMD, cargo new changes, and tons of community-driven learning materials.
Crate of the Week
This week's crate is Ditto - CRDTs for common data structures like maps, vecs, sets, text, and JSON. Thanks to nasa42 for the suggestion!
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.
- If youβre interested in language design, please help polish up the new Delegation RFC draft.
- rustc-guide is a project to write a short guide about how the rust compiler works, and it needs your help. There are some easier issues, issues which might require a bit of investigation/code reading, and issues which probably require some advanced knowledge or a lot of time.
- Get started with these beginner-friendly issues.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
149 pull requests were merged in the last week
- Stabilize
std::process::id()
. - Stabilize method
String::retain
. - Stabilize
match_default_bindings
. - Stabilize
fs::read
andfs::write
. - Rename
fs::read_string
toread_to_string
and stabilize. - Stabilize underscore lifetimes.
- Enable target_feature on any LLVM 6+.
- Forbid
#[inline(always)]
with#[target_feature]
. - Stabilize TryFrom / TryInto, and tweak impls for integers.
- Revert "Add TryFrom and TryInto to the prelude".
- Add basic PGO support.
- Add
slice::sort_by_cached_key
as a memoisedsort_by_key
. - Rename RangeArgument to RangeBounds, move it and Bound to libcore.
- Group linked libraries where needed.
- Cargo: Add description for each
-Z
flag in cargo help. - Add
is_whitespace
andis_alphanumeric
to str. - Cargo: Run
rustc
for information fewer times. - Expand Attributes on Statements and Expressions.
- Move the
alloc::allocator
module tocore::heap
. - Introduce trait engine.
- Fail the build if we build Cargo twice.
New Contributors
- Anders Pitman
- matthew
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:
- [disposition: merge] Unnamed fields of struct and union type.
- [disposition: merge] Semantic build scripts for Cargo.
- [disposition: merge] Extend pattern API to OsStr.
- [disposition: merge] Type alias enum variants.
- [disposition: postpone] Formalise reborrows.
- [disposition: postpone] Non-selfexhausting Drain.
New RFCs
- Allow Items to be grouped into "Item-level scopes".
- Lint Reasons.
- Unless/Until.
- Implied
#[derive(SuperTrait)]
.
Upcoming Events
The community team is trying to improve outreach to meetup organisers. Please fill out their call for contact info if you are running or used to run a meetup.
- Apr 5. Madrid, ES - Segundo meetup de MadRust.
- Apr 5. Rust release triage.
- Apr 8. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Apr 9. Seattle, US - Monthly meetup.
- Apr 10. Rome, IT - CLI App + Error Handling - Rust Roma #Aperitech.
- Apr 10. Rust Community Content Subteam Meeting at #rust-content on irc.mozilla.org.
- Apr 11. Munich, DE - Fun with Rust and Numerical Methods.
- Apr 11. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Apr 11. Rust Events Team Meeting.
- Apr 11. Denver, US - April Meetup in Boulder.
- Apr 11. Orange County, US - Compression and Serialization Benchmarks in Rust. Q&A on dark corners of Rust.
- Apr 12. Columbus, US - Columbus Rust Society - Monthly Meeting.
- Apr 12. Arlington, US - Rust DC - Learn+Try: Rust in the Browser via WebAssembly.
- Apr 15. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Apr 17. Brussels, BE - Error, logs and more.
- Apr 18. Paris, FR - Devoxx 2018 - Hands-on Labs - Rust introduction.
- Apr 18. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Apr 18. Berlin, DE - OpenTechSchool Berlin - Rust Hack and Learn.
- Apr 18. Vancouver, CA - Rust Study/Hack/Hang-out night.
- Apr 19. Rust release triage.
- Apr 19. Cambridge, GB - Cambridge Rust Meetup.
- May 27. Paris, FR - RustFest Paris 2018.
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.
Rust Jobs
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
I guess #rustleaks are memory safe since you just mem::forget them
Thanks to @RustDevLuke for the suggestion!