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
- Working with strings in Rust.
- Rust/WinRT coming soon.
- Intro to rustc's self profiler.
- crates.io incident report for 2020-02-20.
- Filtering duplicates on the command line: 30x faster than sort|uniq.
- Making our own executable packer.
- Line simplification with Ramer–Douglas–Peucker.
- Async HTTP.
- Further thoughts on async/await.
- Triage at scale for the Rust team.
- Presenting Dali, an image processor service.
- Anouncing async_executors, a building block for executor agnostic libraries.
- Building TodoMVC With vgtk.
- Host Rust+Wasm projects on github pages or other.
- Programming Servo: implementing BroadcastChannel.
- Fuchsia programming language policy.
- rust-analyzer changelog 113.
Crate of the Week
This week's crates are wundergraph, a GraphQL interface library, and kibi, a text editor in thousand lines of Rust.
Thanks to Georg Semmler and Vikrant for the suggestions!
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.
- [good first issue] sqlx: Implement support for time-rs 0.2.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
307 pull requests were merged in the last week
- configure: set LLVM flags with a value
- parse: unify item parsing & filter illegal item kinds
- parse: allow
type Foo: Ord
syntactically - parse: fuse associated and extern items up to defaultness
recursion_limit
parsing handles overflows- fix generator miscompilations
- don't eliminate frame pointers on thumb targets
- tweak binding lifetime suggestion text
- on mismatched argument count point at arguments
- do not emit note suggesting to implement operation trait to foreign type
- split non macro portion of
unused_doc_comment
from macro part into two passes/lints - combine
HaveBeenBorrowedLocals
andIndirectlyMutableLocals
into one dataflow analysis - fix printing of
Yield
terminator - querify
object_safety_violations
- change const eval to just return the value
- allow trait methods to be called on concrete types in a const context
- perf: miscellaneous inlining improvements
- perf: O(log n) lookup of associated items by name
- add
LinkedList::remove
- change
FromStr
forString
to useInfallible
directly - make
u8::is_ascii
a stableconst fn
- make integer exponentiation methods unstably const
- simplify
Skip::nth
andSkip::last
implementations - stabilize
Once::is_completed
- stabilize {
f32
,f64
}::{LOG2_10
,LOG10_2
} - git2: add
Branch::get_mut
- futures: relax bounds for
FuturesUnordered
- futures: add
StreamExt::flat_map
- cargo: add new feature resolver
- cargo: add an option to include crate versions to the generated docs
- cargo: improvements to
StringList
config handling - rustfmt: support formatting half open ranges
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] Cargo report future-incompat.
Tracking Issues & PRs
- [disposition: merge] Permit negative impls for non-auto traits.
- [disposition: merge] Stabilize const for integer {to,from}_{be,le,ne}_bytes methods.
New RFCs
No new RFCs were proposed this week.
Upcoming Events
Africa
Asia Pacific
Europe
- Mar 4. Dublin, IE - Rust Dublin - Reboot pub meetup: The Duke.
- Mar 4. Berlin, DE - OpenTechSchool Berlin - Rust Hack and Learn.
- Mar 11. Oslo, NO - Rust Oslo - Lightning talks.
- Mar 12. Turin, IT - Mozilla Torino - Gruppo di studio Rust alla Torino hacknight.
North America
- Mar 4. Indianapolis, IN, US - Indy.rs.
- Mar 10. Denver, CO, US - Rust Boulder/Denver - March Meetup.
- Mar 10. Redmond, WA, US - Seattle Rust Meetup - Monthly meetup in Redmond.
- Mar 11. Atlanta, GA, US - Rust Atlanta - Grab a beer with fellow Rustaceans.
- Mar 11. Houston, TX, US - Houston Linux Users Group - Rust Study Group.
- Mar 12. Columbus, OH, US - Columbus Rust Society - Monthly Meeting.
- Mar 12. Lehi, UT, US - Utah Rust - The Blue Pill: Rust on Microcontrollers.
- Mar 18. Vancouver, BC, CA - Vancouver Rust - Rust Study/Hack/Hang-out night.
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
- Infrastructure Engineer at Aleph Alpha, Heidelberg, Germany.
- Backend Engineer, Rust at LayerTwo, London, UK.
- Junior Backend Engineer, Rust at LayerTwo, London, UK.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
Yoda must have hit his head, though.
if let 42 = x {}
"if let forty-two equals x"
Thanks to Kornel for the suggestions!
Please submit quotes and vote for next week!