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.30.1. 🎉🎈
- Things Rust doesn’t let you do.
- After NLL: Moving from borrowed data and the sentinel pattern.
- Running Rust natively in AWS Lambda and testing it locally.
- Truly zero cost abstractions.
- Implementing Rust’s
std::sync::Mutex
in D. - Middleware in Tide.
- Monadic do notation in Rust: Part I.
proc_macro_attribute
revisited.- [pdf] Writing network drivers in Rust.
Crate of the Week
This week's crate is cargo-nono, a cargo subcommand to check a crate's dependencies for no-std compatibility. Thanks to Hobofan 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.
No issues were proposed for CfP.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
140 pull requests were merged in the last week
- remove support for building against LLVM 4
- use lld directly for Fuchsia target
- support memcpy/memmove with differing src/dst alignment
- treat "proc-macro" crate type the same as
proc-macro = true
- custom diagnostic when trying to doc comment argument
- enforce unused-must-use lint in macros
- don't print opt fuel messages to stdout because it breaks Rustbuild
- NLL: fix ICE with elided lifetimes
- NLL: update box insensitivity test
- NLL: missing errors for borrows of union fields
- NLL: unions not reinitialized after assignment into field
- consume optimization fuel from the MIR inliner
- take supertraits into account when calculating associated types
- typecheck patterns of all match arms first, so we get types for bindings
- don't inline virtual calls (take 2)
- use
SmallVec
to avoid allocations infrom_decimal_string
- un-
P
myLit
! Don't allocate it in vain - don't
Box
theTyCtxt::associated_items
- make
MatcherPos::stack
aSmallVec
- improve creation of 3 IndexVecs
- implement rotate using funnel shift on LLVM >= 7
- value visitors for miri
- remove the
alloc_system
crate - std: improve codegen size of accessing TLS
- std: enable usage of
thread_local!
through imports - choose predicates without inference variables over those with them
- minor standard library constification
- fix
Rc
/Arc
allocation layout - fix undefined behavior in
Rc
/Arc
allocation - cargo: avoid retaining all rustc output in memory
- cargo: timeout batch downloads, not each download
- cargo: small things to help with fuzz tests
- cargo: don't include build scripts in --out-dir
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.
RFCs
- [disposition: merge] Linked list cursors.
- [disposition: close] Create Editorconfig File as Part of Cargo Project.
Tracking Issues & PRs
- [disposition: merge] add FromIterator to Box<[A]>.
- [disposition: merge] Tracking issue for
literal
fragment specifier (RFC 1576). - [disposition: close] Tracking issue for FnBox().
New RFCs
- Custom DSTs.
- Enum variant types.
- Stabilize
std::task
andstd::future::Future
. - Stabilise exhaustive integer pattern matching.
Upcoming Events
Online
- Nov 19. Rust Community Content Subteam Meeting in Discord.
- Nov 21. Rust Events Team Meeting in Telegram.
- Nov 28. Rust Community Team Meeting in Discord.
Asia
Europe
- Nov 15. Cambridge, GB - Cambridge Rust Meetup.
- Nov 15. Madrid, ES - Madrid Rust Meetup: Rust in Deliveroo.
- Nov 17. Toulouse, FR - Capitole du Libre 2018 - Introduction à Rust.
- Nov 18. Toulouse, FR - Capitole du Libre 2018 - Initiation à Rust.
- Nov 20. Paris, FR - Rust Paris.
- Nov 21. Oslo, NO - Hack & Learn.
- Nov 21. Hamburg, DE - Rust Hack & Learn Nov 2018.
- Nov 24. St. Petersburg, RU - Rust Meetup.
- Nov 24 & 25. Rome, IT - RustFest Rome 2018.
- Nov 27. Sofia, BG - Rust Bulgaria @ Global Tech Summit.
- Nov 28. Berlin, DE - Berlin Rust Hack and Learn.
- Nov 29. Copenhagen, DK - Copenhagen Rust Group - Hack Night #11.
- Dec 3. Karlsruhe, DE - Rust 2018 Edition.
- Dec 15 & 16. Moscow, RU - RustRush 2018.
North America
- Nov 18. Mountain View, US - Rust Dev in Mountain View.
- Nov 25. Mountain View, US - Rust Dev in Mountain View.
- Nov 26. Durham, US - Triangle Rustaceans - Project Night & Lightning Talks.
- Nov 27. Dallas, US - Dallas Rust - Last Tuesday.
- Nov 28. Vancouver, CA - Vancouver Rust meetup.
If you are running a Rust event please add it to the calendar to get it mentioned here. Please remember to add a link to the event too. Email the Rust Community Team for access.
Rust Jobs
- Software Infrastructure Engineer - Engines at Blue Origin, Kent, US.
- Rust web developer at Impero, Denmark/remote
- Rust Developer at Parity, Berlin, DE.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
I’m also pretty sure that most languages would not go that far. The idea that the type plugged in has only one possible value, therefore it doesn’t need to be stored and methods on that don’t care about the
self
reference is pretty neat.
– Michael 'vorner' Vaner on his blog
Thanks to llogiq for the suggestion!
Please submit your quotes for next week!
This Week in Rust is edited by: nasa42, llogiq, and Flavsditz.