12 KiB
Title: This Week in Rust 316 Number: 316 Date: 2019-12-10 Category: This Week in Rust
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
- How to speed up the Rust compiler one last time in 2019.
- Formatting is unreasonably expensive for embedded Rust.
- Some parts 1Password X Manager are rewritten in Rust.
- Announcing hyper v0.13 with full async/await support.
- Blocking inside async code.
- Announcing the docs.rs team.
- Writing the slowest quicksort.
- Soundness bugs in Rust libraries: can't live with 'em, can't live without 'em.
- Tiny Windows executable in Rust in 3.5 kbytes.
- Inside Rust at Embark.
- Tokio 0.2 - Rust crash course.
- Generalized autoref-based specialization.
- A rusty radio: Si4703 FM radio receiver driver.
#Rust2020
Find all #Rust2020 posts at Read Rust.
Crate of the Week
This week's crate is StaticVec, a nightly-only const-generics-backed fixed size vec crate.
Thanks to ABagOfChips 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.
- We need your help before
rustup
1.21.0 can be released. - smallvec: Implement Clone for IntoIter<A: Array> where A: Clone.
- mundane: Document items behind feature flags.
- crates.io: carols10cents will be mentoring multiple issues for the month of November & December.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
247 pull requests were merged in the last week
- implement
#[track_caller]
attribute (RFC #2091) - syntax: unify macro and attribute arguments in AST
- stdarch: add CRC32 detection to arm32
- fix
TypedArena
returning wrong pointers for recursive allocations - make
ForeignItem
an alias ofItem
- remove boxed closures in address parser
- rustc: hide HirId's fmt::Debug output from -Z span_free_formats
- make
process_obligations()
greedier - check break target availability when checking breaks with values
- include a span in more
expected...found
notes - do not ICE on async fn with non-Copy inferred type arg
- make try_mark_previous_green aware of cycles
- add feature gate for mut refs in const fn
- change unused_labels from allow to warn
- show the sign for signed ops on
exact_div
- chalk: convert ensure_answer_recursively to be iterative instead of recursive
- handle diverging functions forwarding their return place
- cleanup
BodyCache
- remove hack for top-level or-patterns in match checking
- const-prop: fix ICE calculating enum discriminant
- miri: tweak and use
OsStr
interfaces - only memoize const fn calls during const eval
- miri: add flag to ignore memory leaks
- better way to ignore tests in miri
- codegen "unreachable" for invalid
SetDiscriminant
- codegen: Migrate to
LLVM
{Get
,Set
}ValueName2
- update the minimum external LLVM to 7
- implement illegal subset relations errors using Polonius
- add
ExitStatusExt
into prelude - rename
bool::then_*
tobool::to_option_*
and use where appropriate - add
{f32,f64}::approx_unchecked_to<Int>
unsafe methods - add test for
NAME
environment variable whencargo new
- cargo: remove
--offline
empty index error - cargo: add a
--offline
hint - rustdoc: less minification
- rustfmt: switch to non-recursive mode by default
- rustup: output the previous version of a toolchain when it is updated
- rustup: resolve potential future shock (x.yyy.zz)
- crates.io: add audit trail to the publish, yank and unyank transactions
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] Propose implicit named arguments for formatting macros.
Tracking Issues & PRs
- [disposition: merge] Deprecate Error::description for real.
- [disposition: merge] Stabilize the
core::panic
module. - [disposition: merge] stabilize Result::map_or.
- [disposition: merge] Make Layout::new const.
- [disposition: merge] Stabilize attribute macros on inline modules.
New RFCs
- Demote Apple 32bit targets to Tier 3.
- Move
std::net
types intocore:.net
. - Cargo report future-incompat.
- Announcing the safe-transmute project group.
- Introduce the ASM project group.
Upcoming Events
Europe
- Dec 16. Amsterdam, NL - Rust Nederland - Rust - Talks & Demos.
- Dec 20. Stuttgart, DE - Meetup Stuttgart - Rust Hack and Learn.
North America
- Dec 18. Ann Arbor, MI, US - Ann Arbor Rust Meetup - Monthly Gathering.
- Dec 23. Durham, NC, US - Triangle Rustaceans - Project Night & Lightning Talks.
- Dec 31. Dallas, TX, US - Dallas Rust - Last Tuesday.
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
No jobs listed for this week.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
When I'm writing in Rust, it feels as though I'm actually able to think about the program, rather than wasting half of my effort going through the necessary rituals to stop the language from having a panic attack.
Thanks to ssokolow for the suggestion!
Please submit quotes and vote for next week!