|
| 1 | +Title: This Week in Rust 338 |
| 2 | +Number: 338 |
| 3 | +Date: 2020-05-12 |
| 4 | +Category: This Week in Rust |
| 5 | + |
| 6 | +Hello and welcome to another issue of *This Week in Rust*! |
| 7 | +[Rust](http://rust-lang.org) is a systems language pursuing the trifecta: safety, concurrency, and speed. |
| 8 | +This is a weekly summary of its progress and community. |
| 9 | +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). |
| 10 | +Want to get involved? [We love contributions](https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md). |
| 11 | + |
| 12 | +*This Week in Rust* is openly developed [on GitHub](https://github.com/cmr/this-week-in-rust). |
| 13 | +If you find any errors in this week's issue, [please submit a PR](https://github.com/cmr/this-week-in-rust/pulls). |
| 14 | + |
| 15 | +# Updates from Rust Community |
| 16 | + |
| 17 | +## News & Blog Posts |
| 18 | + |
| 19 | +* [Announcing Rust 1.43.1](https://blog.rust-lang.org/2020/05/07/Rust.1.43.1.html) |
| 20 | +* [Rust concurrency: the single-writer principle.](https://medium.com/@polyglot_factotum/rust-concurrency-the-single-writer-principle-applied-aada2cdc6fb0?source=friends_link&sk=cafc8dcf8babf4ec95b1b62ccde7e54b) |
| 21 | +* [This Month in Rust OSDev (April 2020)](https://rust-osdev.com/this-month/2020-04/) |
| 22 | +* [A no_std Rust binary](https://fasterthanli.me/blog/2020/a-no-std-rust-binary/) |
| 23 | +* [Notes on io_uring](https://boats.gitlab.io/blog/post/io-uring/) |
| 24 | +* [no_std async/await - soon on stable](https://ferrous-systems.com/blog/stable-async-on-embedded/) |
| 25 | +* ["try fn" without special-casing Result ](https://dev.to/cad97/try-fn-without-special-casing-result-4m5b) |
| 26 | +* [time_it: A case study in Rust macros](https://notes.iveselov.info/programming/time_it-a-case-study-in-rust-macros) |
| 27 | +* [Dynamic stylesheets and Yew](https://conradludgate.com/posts/yew-css/) |
| 28 | +* [A practical introduction to async programming in Rust](http://jamesmcm.github.io/blog/2020/05/06/a-practical-introduction-to-async-programming-in-rust/#en) |
| 29 | +* [Rust Closures in FFI](http://adventures.michaelfbryan.com/posts/rust-closures-in-ffi/) |
| 30 | +* [Collecting many errors from an iterator of Results](https://tarquin-the-brave.github.io/blog/posts/collecting-all-the-errors/). |
| 31 | +* [Auto-currying Rust Functions](https://peppe.rs/posts/auto-currying_rust_functions/) |
| 32 | +* [Converting bits to integers in Rust using generics](https://dev.to/citizen_stig/converting-bits-to-integers-in-rust-using-generics-2nfg) |
| 33 | +* [Magnifying Glasses for Rust Assembly](https://www.justanotherdot.com/posts/magnifying-glasses-for-rust-assembly.html) |
| 34 | +* [More Rust and Load Balancer Adventures](https://medium.com/@bparli/more-rust-and-load-balancer-adventures-fad07f4fb095) |
| 35 | +* [Porting North Korean Dictionaries with Rust](https://digitalnk.com/blog/2020/05/08/porting-north-korean-dictionaries-with-rust/) |
| 36 | +* [Rust verification tools](https://alastairreid.github.io/rust-verification-tools/) |
| 37 | +* [Series Announcement - Zero to Production in Rust](https://www.lpalmieri.com/posts/2020-05-10-announcement-zero-to-production-in-rust/) |
| 38 | +* [What I Learned Contributing to Rust-Analyzer](https://dev.to/bnjjj/what-i-learned-contributing-to-rust-analyzer-4c7e) |
| 39 | +* [What’s the difference between a Rust char and a Go rune?](https://www.christianfscott.com/rust-chars-vs-go-runes/) |
| 40 | +* [Writing A Wayland Compositor In Rust](https://wiki.alopex.li/WritingAWaylandCompositorInRust) |
| 41 | +* [Yak shaving conditional compilation in Rust](https://bitshifter.github.io/2020/05/07/conditional-compilation-in-rust/) |
| 42 | +* [Oxidize Global Workshop and CfP announcement](https://ferrous-systems.com/blog/oxidize-global-workshop-and-cfp-announcement/) |
| 43 | +* [Collecting many errors from an iterator of Results](https://tarquin-the-brave.github.io/blog/posts/collecting-all-the-errors/). |
| 44 | +* [Writing Python inside your Rust code - Part 3](https://blog.m-ou.se/writing-python-inside-rust-3/) |
| 45 | +* [Rust FFI - Building an ASN1 codec](https://sjames.github.io/articles/2020-04-26-rust-ffi-asn1-codec/) |
| 46 | +* [video] [Building a simple GraphQL API with Actix and Juniper](https://youtu.be/7v7ERnrC4fo) |
| 47 | +* [video] [Named Field Init in C, C++20, Zig, Rust, & D](https://www.youtube.com/watch?v=c-NyXKbqmQc) |
| 48 | + |
| 49 | +# Crate of the Week |
| 50 | + |
| 51 | +This week's crate is [cargo-workspaces](https://github.com/pksunkara/cargo-workspaces), a cargo subcommand to manage your cargo workspace. |
| 52 | + |
| 53 | +Thanks to [Pavan Kumar Sunkara](https://users.rust-lang.org/t/crate-of-the-week/2704/768) for the suggestion! |
| 54 | + |
| 55 | +[Submit your suggestions and votes for next week][submit_crate]! |
| 56 | + |
| 57 | +[submit_crate]: https://users.rust-lang.org/t/crate-of-the-week/2704 |
| 58 | + |
| 59 | +# Call for Participation |
| 60 | + |
| 61 | +Always wanted to contribute to open-source projects but didn't know where to start? |
| 62 | +Every week we highlight some tasks from the Rust community for you to pick and get started! |
| 63 | + |
| 64 | +Some of these tasks may also have mentors available, visit the task page for more information. |
| 65 | + |
| 66 | +* [s3rename: Atomic renames and asynchronous destructors](https://github.com/jamesmcm/s3rename/issues/16) |
| 67 | +* [sedregex: Add support for translation commands y/ and tr/](https://gitlab.com/mexus/sedregex/-/issues/4) |
| 68 | +* [clap: Usage suggests help subcommand when using DisableHelpSubcommand](https://github.com/clap-rs/clap/issues/1463) |
| 69 | +* [displaydoc: Add support for `thiserror` attributes](https://github.com/yaahc/displaydoc/issues/15) |
| 70 | +* [GitUI is looking for contributors](https://github.com/extrawurst/gitui/issues) |
| 71 | + |
| 72 | +If you are a Rust project owner and are looking for contributors, please submit tasks [here][guidelines]. |
| 73 | + |
| 74 | +[guidelines]: https://users.rust-lang.org/t/twir-call-for-participation/4821 |
| 75 | + |
| 76 | +# Updates from Rust Core |
| 77 | + |
| 78 | +375 pull requests were [merged in the last week][merged] |
| 79 | + |
| 80 | +[merged]: https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2020-05-04..2020-05-11 |
| 81 | + |
| 82 | +* [Define UB in float-to-int casts to saturate](https://github.com/rust-lang/rust/pull/71269) |
| 83 | +* [Improve bitcode generation for Apple platforms](https://github.com/rust-lang/rust/pull/71970) |
| 84 | +* [Don't force rustc to do codegen for LTO builds](https://github.com/rust-lang/cargo/pull/8192) |
| 85 | +* [Correctly handle UEFI targets as Windows-like when emitting sections for LLVM bitcode](https://github.com/rust-lang/rust/pull/71881) |
| 86 | +* [Prevent compiler stack overflow for deeply recursive code](https://github.com/rust-lang/rust/pull/55617) |
| 87 | +* [resolve: Relax fresh binding disambiguation slightly to fix regression](https://github.com/rust-lang/rust/pull/71846) |
| 88 | +* [upgrade chalk and use chalk-solve/chalk-ir/chalk-rust-ir](https://github.com/rust-lang/rust/pull/69406) |
| 89 | +* [Report cannot move errors in promoted MIR](https://github.com/rust-lang/rust/pull/71587) |
| 90 | +* [Simplify the `tcx.alloc_map` API](https://github.com/rust-lang/rust/pull/71508) |
| 91 | +* [Suggest removing semicolon in last expression only if it's type is known](https://github.com/rust-lang/rust/pull/71894) |
| 92 | +* [Skip attempting to run `coerce_unsized` on an inference variable](https://github.com/rust-lang/rust/pull/69530) |
| 93 | +* [Unify the undo log of all snapshot types](https://github.com/rust-lang/rust/pull/69464) |
| 94 | +* [Reduce `TypedArena` creations in `check_match`](https://github.com/rust-lang/rust/pull/71975) |
| 95 | +* [Shrink `LocalDecl`](https://github.com/rust-lang/rust/pull/71942) |
| 96 | +* [Add `remove_current_as_list` to `LinkedList`'s `CursorMut`](https://github.com/rust-lang/rust/pull/71878) |
| 97 | +* [Add `Arc::`{`incr`, `decr`}`_strong_count`](https://github.com/rust-lang/rust/pull/70733) |
| 98 | +* [Add Option to Force Unwind Tables](https://github.com/rust-lang/rust/pull/69984) |
| 99 | +* [Make `BTreeMap::new` and `BTreeSet::new` const](https://github.com/rust-lang/rust/pull/71839) |
| 100 | +* [`Btreemap` iter intertwined](https://github.com/rust-lang/rust/pull/71510) |
| 101 | +* [Add `core::future::`{`pending`, `ready`}](https://github.com/rust-lang/rust/pull/70834) |
| 102 | +* [futures: Refactor to reduce the amount of unsafe and duplicated code](https://github.com/rust-lang/futures-rs/pull/2128) |
| 103 | +* [cargo: Update assertions in LTO calculations](https://github.com/rust-lang/cargo/pull/8226) |
| 104 | +* [cargo: Try to remove secrets from http.debug](https://github.com/rust-lang/cargo/pull/8222) |
| 105 | +* [cargo features: allow activated_features_unverified to communicate not-present](https://github.com/rust-lang/cargo/pull/8194) |
| 106 | + |
| 107 | +## Approved RFCs |
| 108 | + |
| 109 | +Changes to Rust follow the Rust [RFC (request for comments) process](https://github.com/rust-lang/rfcs#rust-rfcs). These |
| 110 | +are the RFCs that were approved for implementation this week: |
| 111 | + |
| 112 | +* [RFC 2585: FC for unsafe blocks in unsafe fn](https://github.com/rust-lang/rfcs/pull/2585) |
| 113 | +* [RFC 2904: Major Change Proposal](https://github.com/rust-lang/rfcs/pull/2904) |
| 114 | + |
| 115 | +## Final Comment Period |
| 116 | + |
| 117 | +Every week [the team](https://www.rust-lang.org/team.html) announces the |
| 118 | +'final comment period' for RFCs and key PRs which are reaching a |
| 119 | +decision. Express your opinions now. |
| 120 | + |
| 121 | + |
| 122 | +### [RFCs](https://github.com/rust-lang/rfcs/labels/final-comment-period) |
| 123 | + |
| 124 | +* [RFC: Deduplicate Cargo workspace information](https://github.com/rust-lang/rfcs/pull/2906) |
| 125 | + |
| 126 | +### [Tracking Issues & PRs](https://github.com/rust-lang/rust/labels/final-comment-period) |
| 127 | + |
| 128 | +* [disposition: merge] [Stablilize saturating_abs and saturating_neg](https://github.com/rust-lang/rust/pull/71886) |
| 129 | +* [disposition: merge] [Tweak and stabilize AtomicN::fetch_update](https://github.com/rust-lang/rust/pull/71843) |
| 130 | +* [disposition: merge] [impl From<Cow> for Box, Rc, and Arc](https://github.com/rust-lang/rust/pull/71447) |
| 131 | +* [disposition: merge] [Stabilize fn-like proc macros in expression, pattern and statement positions](https://github.com/rust-lang/rust/pull/68717) |
| 132 | +* [disposition: merge] [Tracking issue for Weak::into_raw/from_raw & similar](https://github.com/rust-lang/rust/issues/60728) |
| 133 | +* [disposition: clone] [Tracking issue for non_static_type_id](https://github.com/rust-lang/rust/issues/41875) |
| 134 | + |
| 135 | +## New RFCs |
| 136 | +* [Do not warn about similar ASCII-only idents](https://github.com/rust-lang/rfcs/pull/2923) |
| 137 | +* [RFC - cargo templates](https://github.com/rust-lang/rfcs/pull/2922) |
| 138 | + |
| 139 | +# Upcoming Events |
| 140 | + |
| 141 | +### Online |
| 142 | +* [May 12. Seattle, WA, US - Seattle Rust Meetup](http://www.meetup.com/Seattle-Rust-Meetup/) |
| 143 | +* [May 14. San Diego, CA, US - San Diego Rust](https://www.meetup.com/San-Diego-Rust/events/270394980/) |
| 144 | +* [May 14, Berlin, DE - Berlin Rust Hack and Learn](https://www.meetup.com/opentechschool-berlin/events/txcprrybchbsb/) |
| 145 | +* [May 20. Vancouver, BC, CA - Vancouver Rust - Rust Study/Hack/Hang-out night](https://www.meetup.com/Vancouver-Rust/events/qnrgnrybchbbc/). |
| 146 | +* [May 21. Turin, IT - Rust Turin Meetup](https://community.mozilla.org/events/gruppo-di-studio-di-rust/) |
| 147 | +* [May 26. Dallas, TX, US - Dallas Rust - Last Tuesday](https://www.meetup.com/Dallas-Rust/events/nppvrrybchbjc/) |
| 148 | + |
| 149 | + |
| 150 | +### North America |
| 151 | +* [May 13. Vancouver, BC, CA - Vancouver Rust Meetup](https://www.meetup.com/Vancouver-Rust/events/) |
| 152 | +* [May 14. Columbus, OH, US - Columbus Rust Society - Monthly Meeting](https://www.meetup.com/columbus-rs/events/dpkhgrybchbsb/). |
| 153 | +* [May 25. Durham, NC, US - Triangle Rustaceans - Project Night and Lightning Talks](https://www.meetup.com/triangle-rustaceans/events/mfglwpybchbhc/) |
| 154 | + |
| 155 | + |
| 156 | +If you are running a Rust event please add it to the [calendar] to get |
| 157 | +it mentioned here. Please remember to add a link to the event too. |
| 158 | +Email the [Rust Community Team][community] for access. |
| 159 | + |
| 160 | +[calendar]: https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com |
| 161 | +[community]: mailto:[email protected] |
| 162 | + |
| 163 | +# Rust Jobs |
| 164 | +* [Backend Engineer, Data Processing - Kraken - Remote](https://jobs.lever.co/kraken/246f7fd2-000a-4f61-8f53-b1cc783d51cb) |
| 165 | +* [Backend Engineer, Futures - Kraken - Remote](https://jobs.lever.co/kraken/fe1e07f4-6d7c-4f65-9a8f-27cf3b3fd2b1) |
| 166 | + |
| 167 | +*Tweet us at [@ThisWeekInRust](https://twitter.com/ThisWeekInRust) to get your job offers listed here!* |
| 168 | + |
| 169 | +# Quote of the Week |
| 170 | + |
| 171 | +> Ownership is purely conceptual: it is not something you can see in a disassembler. |
| 172 | +
|
| 173 | +– [Jay Oster on rust-users](https://users.rust-lang.org/t/what-is-the-formal-definition-of-ownership/41984/7) |
| 174 | + |
| 175 | +Thanks to [Daniel H-M](https://users.rust-lang.org/t/twir-quote-of-the-week/328/868) for the suggestions! |
| 176 | + |
| 177 | +[Please submit quotes and vote for next week!](https://users.rust-lang.org/t/twir-quote-of-the-week/328) |
| 178 | + |
| 179 | +*This Week in Rust is edited by: [nellshamrell](https://github.com/nellshamrell), [llogiq](https://github.com/llogiq), [srikwit](https://github.com/srikwit), and [cdmistman](https://github.com/cdmistman).* |
| 180 | + |
| 181 | +<small>[Discuss on r/rust](https://www.reddit.com/r/rust/comments/gikfuy/this_week_in_rust_338/).</small> |
0 commit comments