174 lines
11 KiB
Markdown
174 lines
11 KiB
Markdown
Title: This Week in Rust 328
|
||
Number: 328
|
||
Date: 2020-03-03
|
||
Category: This Week in Rust
|
||
|
||
Hello and welcome to another issue of *This Week in Rust*!
|
||
[Rust](http://rust-lang.org) 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](https://twitter.com/ThisWeekInRust) or [send us a pull request](https://github.com/cmr/this-week-in-rust).
|
||
Want to get involved? [We love contributions](https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md).
|
||
|
||
*This Week in Rust* is openly developed [on GitHub](https://github.com/cmr/this-week-in-rust).
|
||
If you find any errors in this week's issue, [please submit a PR](https://github.com/cmr/this-week-in-rust/pulls).
|
||
|
||
# Updates from Rust Community
|
||
|
||
## News & Blog Posts
|
||
|
||
* [Announcing Rust 1.41.1](https://blog.rust-lang.org/2020/02/27/Rust-1.41.1.html).
|
||
* [A half-hour to learn Rust](https://fasterthanli.me/blog/2020/a-half-hour-to-learn-rust/).
|
||
* [Recent and future pattern matching improvements](https://blog.rust-lang.org/inside-rust/2020/03/04/recent-future-pattern-matching-improvements.html).
|
||
* [Cheap tricks for high-performance Rust](https://deterministic.space/high-performance-rust.html).
|
||
* [Understanding String and &str in Rust](https://blog.thoughtram.io/string-vs-str-in-rust/).
|
||
* [caniuse.rs - Rust feature search](https://caniuse.rs/).
|
||
* [Async/await on embedded Rust](https://ferrous-systems.com/blog/async-on-embedded/).
|
||
* [Audit of the RustCrypto `aes-gcm` and `chacha20poly1305` crates by NCC group](https://research.nccgroup.com/2020/02/26/public-report-rustcrypto-aes-gcm-and-chacha20poly1305-implementation-review/).
|
||
* [FFI patterns #1 - Complex Rust data structures exposed seamlessly to C++](https://crisal.io/words/2020/02/28/C++-rust-ffi-patterns-1-complex-data-structures.html).
|
||
* [Multidimensional arrays and operations with NDArray](https://shahinrostami.com/posts/programming/rust-notebooks/multidimensional-arrays-and-operations-with-ndarray/).
|
||
* [A look into ways to implement and share data with interrupt handlers in Rust](https://therealprof.github.io/blog/interrupt-comparison/).
|
||
* [Porting a JavaScript App to WebAssembly with Rust (Part 3)](https://www.slowtec.de/posts/2020-02-28-porting-javascript-to-rust-part-3.html).
|
||
* [Pietro Albini has joined the core team](https://blog.rust-lang.org/inside-rust/2020/02/27/pietro-joins-core-team.html).
|
||
* [Announcing the first FFI-unwind project design meeting](https://blog.rust-lang.org/inside-rust/2020/02/27/ffi-unwind-design-meeting.html).
|
||
* [Writing an OS in Rust: Updates in February 2020](https://os.phil-opp.com/status-update/2020-03-02/).
|
||
* [rust-analyzer Changelog 14](https://rust-analyzer.github.io/thisweek/2020/03/02/changelog-14.html).
|
||
* [IntelliJ Rust Changelog 117](https://intellij-rust.github.io/2020/03/02/changelog-117.html).
|
||
* [This month in rustsim 9](https://www.rustsim.org/blog/2020/03/01/this-month-in-rustsim/).
|
||
* [Rust in Blockchain newsletter 9: The month of working from home](https://rustinblockchain.org/2020/03/04/rib-newsletter-9-the-month-of-working-from-home/).
|
||
* [Tokio v0.2.12, includes `Notify`, an async/await synchronization primitive, and `StreamMap` for dynamic merging of streams](https://github.com/tokio-rs/tokio/releases/tag/tokio-0.2.12).
|
||
|
||
# Crate of the Week
|
||
|
||
This week's crates is [tokenizers](https://github.com/huggingface/tokenizers), a Rust crate with python & nodejs bindings for fast text tokenization for machine learning.
|
||
|
||
llogiq (who singlehandedly selected the crate) is pretty self-congratulatory.
|
||
|
||
[Submit your suggestions and votes for next week][submit_crate]!
|
||
|
||
[submit_crate]: https://users.rust-lang.org/t/crate-of-the-week/2704
|
||
|
||
# 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.
|
||
|
||
* [The RustConf 2020 CFP is now open](https://cfp.rustconf.com/events/rustconf-2020). We'd love to hear from you at RustConf!
|
||
|
||
If you are a Rust project owner and are looking for contributors, please submit tasks [here][guidelines].
|
||
|
||
[guidelines]: https://users.rust-lang.org/t/twir-call-for-participation/4821
|
||
|
||
# Updates from Rust Core
|
||
|
||
304 pull requests were [merged in the last week][merged]
|
||
|
||
[merged]: https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2020-02-24..2020-03-02
|
||
|
||
* [implement Associated Type Defaults](https://github.com/rust-lang/rust/pull/61812) (RFC #[2532](https://rust-lang.github.io/rfcs/2532-associated-type-defaults.html))
|
||
* [don't `bug` when taking discriminant of generator during dataflow](https://github.com/rust-lang/rust/pull/69562)
|
||
* [perf: buffer stderr when writing json errors/warnings](https://github.com/rust-lang/rust/pull/69227)
|
||
* [mark attributes consumed by `check_mod_attrs` as normal](https://github.com/rust-lang/rust/pull/69412)
|
||
* [stash API: remove panic to fix ICE](https://github.com/rust-lang/rust/pull/69623)
|
||
* [chalk: changes needed to build in rustc](https://github.com/rust-lang/chalk/pull/332)
|
||
* [adjust Miri value visitor, and doc-comment layout components](https://github.com/rust-lang/rust/pull/69257)
|
||
* [miri: let machine canonicalize AllocIDs](https://github.com/rust-lang/rust/pull/69408)
|
||
* [fail on multiple declarations of `main`](https://github.com/rust-lang/rust/pull/69379)
|
||
* [don't instantiate so many copies of `drop_in_place`](https://github.com/rust-lang/rust/pull/67332)
|
||
* [mark other variants as uninitialized after switch on discriminant](https://github.com/rust-lang/rust/pull/68528)
|
||
* [skip `Drop` terminators for enum variants without drop glue](https://github.com/rust-lang/rust/pull/68943)
|
||
* [audit liballoc for leaks in `Drop` impls when user destructor panics](https://github.com/rust-lang/rust/pull/67290)
|
||
* [add primitive module to libcore](https://github.com/rust-lang/rust/pull/67637)
|
||
* [relax str::get_unchecked precondition to permit empty slicing](https://github.com/rust-lang/rust/pull/69385)
|
||
* [fix aliasing violation in `align_to_mut`](https://github.com/rust-lang/rust/pull/69581)
|
||
* [add methods to 'leak' RefCell borrows as references with the lifetime of the original reference](https://github.com/rust-lang/rust/pull/68712)
|
||
* [stabilize `boxed_slice_try_from`](https://github.com/rust-lang/rust/pull/69538)
|
||
* [`BTreeMap` navigation done safer & faster](https://github.com/rust-lang/rust/pull/68827)
|
||
* [constify mem::forget](https://github.com/rust-lang/rust/pull/69617)
|
||
* [crates.io: enable sorting crates by most recently added](https://github.com/rust-lang/crates.io/pull/2214)
|
||
* [rustlings: add clippy lints](https://github.com/rust-lang/rustlings/pull/269)
|
||
|
||
## Approved RFCs
|
||
|
||
Changes to Rust follow the Rust [RFC (request for comments) process](https://github.com/rust-lang/rfcs#rust-rfcs). These
|
||
are the RFCs that were approved for implementation this week:
|
||
|
||
*No RFCs were approved this week.*
|
||
|
||
## Final Comment Period
|
||
|
||
Every week [the team](https://www.rust-lang.org/team.html) announces the
|
||
'final comment period' for RFCs and key PRs which are reaching a
|
||
decision. Express your opinions now.
|
||
|
||
### [RFCs](https://github.com/rust-lang/rfcs/labels/final-comment-period)
|
||
|
||
* [disposition: merge] [Cargo report future-incompat](https://github.com/rust-lang/rfcs/pull/2834).
|
||
* [disposition: merge] [Add llvm_asm! and deprecate asm!](https://github.com/rust-lang/rfcs/pull/2843).
|
||
|
||
### [Tracking Issues & PRs](https://github.com/rust-lang/rust/labels/final-comment-period)
|
||
|
||
* [disposition: merge] [Permit attributes on 'if' expressions](https://github.com/rust-lang/rust/pull/69201).
|
||
* [disposition: merge] [mem::zeroed/uninit: panic on types that do not permit zero-initialization](https://github.com/rust-lang/rust/pull/66059).
|
||
|
||
## New RFCs
|
||
|
||
* [Inline assembly](https://github.com/rust-lang/rfcs/pull/2873).
|
||
* [Rust-lang org GitHub access policy](https://github.com/rust-lang/rfcs/pull/2872).
|
||
* [Clarifying UnwindSafe](https://github.com/rust-lang/rfcs/pull/2871).
|
||
|
||
# Upcoming Events
|
||
|
||
### Asia Pacific
|
||
|
||
* [Mar 21-22. Kuala Lumpur, MY - Rust Workshop + Mini-Hackathon](https://docs.google.com/forms/d/e/1FAIpQLScSe4xQycs5i3PtEtR9GAj4vdkWUhwW3v0BiTQFpps4l7PgIA/viewform).
|
||
|
||
### Europe
|
||
|
||
* [Mar 9. Karlsruhe, DE - Rust Meetup](https://www.meetup.com/Rust-Hack-Learn-Karlsruhe/events/268299172/)
|
||
* [Mar 11. Oslo, NO - Rust Oslo - Lightning talks](https://www.meetup.com/Rust-Oslo/events/268738879).
|
||
* [Mar 12. Turin, IT - Mozilla Torino - Gruppo di studio Rust alla Torino hacknight](https://www.meetup.com/Mozilla-Torino/events/268822794).
|
||
* [Mar 19. Warsaw, PL - Rust Warsaw 4](https://www.meetup.com/Rust-Warsaw/events/269164365/).
|
||
* [Mar 19. Berlin, DE - OpenTechSchool Berlin - Rust Hack and Learn](https://www.meetup.com/opentechschool-berlin/events/gztznrybcfbzb/).
|
||
|
||
### North America
|
||
|
||
* [Mar 10. Denver, CO, US - Rust Boulder/Denver - March Meetup](https://www.meetup.com/Rust-Boulder-Denver/events/267834799/).
|
||
* [Mar 10. Redmond, WA, US - Seattle Rust Meetup - Monthly meetup in Redmond](https://www.meetup.com/Seattle-Rust-Meetup/events/prbtdrybcfbnb/).
|
||
* [Mar 11. Atlanta, GA, US - Rust Atlanta - Grab a beer with fellow Rustaceans](https://www.meetup.com/Rust-ATL/events/qxqdgrybcfbpb/).
|
||
* [Mar 11. Houston, TX, US - Houston Linux Users Group - Rust Study Group](https://www.facebook.com/events/469382520642102).
|
||
* [Mar 11. Portland, OR, US - PDXRust - Rust Lightning Talks! By You](https://www.meetup.com/PDXRust/events/269055813/).
|
||
* [Mar 12. Columbus, OH, US - Columbus Rust Society - Monthly Meeting](https://www.meetup.com/columbus-rs/events/dpkhgrybcfbqb/).
|
||
* [Mar 12. Lehi, UT, US - Utah Rust - The Blue Pill: Rust on Microcontrollers](https://www.meetup.com/utah-rust/events/268567961/).
|
||
* [Mar 12. San Diego, CA, US - San Diego Rust - March Meetup](https://www.meetup.com/San-Diego-Rust/events/269191953/).
|
||
* [Mar 18. Vancouver, BC, CA - Vancouver Rust - Rust Study/Hack/Hang-out night](https://www.meetup.com/Vancouver-Rust/events/qnrgnrybcfbxb/).
|
||
|
||
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][community] for access.
|
||
|
||
[calendar]: https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com
|
||
[community]: mailto:community-team@rust-lang.org
|
||
|
||
# Rust Jobs
|
||
|
||
* [Infrastructure Engineer at Aleph Alpha, Heidelberg, Germany](https://aleph-alpha.de/sw_engineer.html?language=de).
|
||
|
||
*Tweet us at [@ThisWeekInRust](https://twitter.com/ThisWeekInRust) to get your job offers listed here!*
|
||
|
||
# Quote of the Week
|
||
|
||
> Hi, fellow Crustaceans!
|
||
> I am a newbie of Rust programming language. A nauplius.
|
||
|
||
– [GhostProc on rust-users](https://users.rust-lang.org/t/how-can-i-improve-this/38711)
|
||
|
||
Thanks to [Tom Phinney](https://users.rust-lang.org/t/twir-quote-of-the-week/328/822) for the suggestions!
|
||
|
||
[Please submit quotes and vote for next week!](https://users.rust-lang.org/t/twir-quote-of-the-week/328)
|
||
|
||
*This Week in Rust is edited by: [nasa42](https://github.com/nasa42) and [llogiq](https://github.com/llogiq).*
|
||
|
||
<small>[Discuss on r/rust](https://www.reddit.com/r/rust/comments/fdzspa/this_week_in_rust_328/).</small>
|