182 lines
17 KiB
Plaintext
182 lines
17 KiB
Plaintext
<p>Hello and welcome to another issue of <em>This Week in Rust</em>!
|
||
<a href="http://rust-lang.org">Rust</a> is a programming language empowering everyone to build reliable and efficient software.
|
||
This is a weekly summary of its progress and community.
|
||
Want something mentioned? Tweet us at <a href="https://twitter.com/ThisWeekInRust">@ThisWeekInRust</a> or <a href="https://github.com/rust-lang/this-week-in-rust">send us a pull request</a>.
|
||
Want to get involved? <a href="https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md">We love contributions</a>.</p>
|
||
<p><em>This Week in Rust</em> is openly developed <a href="https://github.com/rust-lang/this-week-in-rust">on GitHub</a>.
|
||
If you find any errors in this week's issue, <a href="https://github.com/rust-lang/this-week-in-rust/pulls">please submit a PR</a>.</p>
|
||
<h2 id="updates-from-rust-community">Updates from Rust Community</h2>
|
||
<h3 id="newsletters">Newsletters</h3>
|
||
<ul>
|
||
<li><a href="https://rustinblockchain.org/newsletters/rib-newsletter-27/">RiB Newsletter #27</a></li>
|
||
</ul>
|
||
<h3 id="projecttooling-updates">Project/Tooling Updates</h3>
|
||
<ul>
|
||
<li><a href="https://rust-analyzer.github.io/thisweek/2021/08/30/changelog-92.html">Rust Analyzer Changelog #92</a></li>
|
||
<li><a href="https://intellij-rust.github.io/2021/08/30/changelog-154.html">IntelliJ Rust Changelog #154</a></li>
|
||
<li><a href="https://thephilbert.io/2021/08/30/gcc-rust-monthly-report-9-august-2021/">GCC Rust Monthly Report #9 August 2021</a></li>
|
||
<li><a href="https://rainway.com/blog/2021/08/30/bebop-rust/">Bebop v2.3.0: Adding Rust support to Bebop serialization</a></li>
|
||
<li><a href="https://diziet.dreamwidth.org/9019.html">partial-borrow: derive macro for multiple (maybe mut) references to subsets/views of a struct</a></li>
|
||
<li><a href="https://zellij.dev/news/new-ui/">Zellij 0.16.0 released: new UI, many bugfixes and more!</a></li>
|
||
<li><a href="https://ferrous-systems.com/blog/knurling-changelog-30/">Knurling-rs changelog #30</a></li>
|
||
<li><a href="https://sixtyfps.io/thisweek/2021-08-30.html">SixtyFPS (GUI crate) weekly update</a></li>
|
||
<li><a href="https://www.fluvio.io/news/this-week-in-fluvio-0004/">This week in Fluvio #4: the programmable streaming platform</a></li>
|
||
<li><a href="https://datafuselabs.github.io/weekly/2021-09-01-datafuse-weekly/">This week in Datafuse #5</a></li>
|
||
<li>[Tauri] <a href="https://dev.to/tauri/tauri-feature-freeze-and-security-audit-1ml1">Feature Freeze</a>, <a href="https://tripetto.app/run/YV22XNAJBK">Community Survey</a></li>
|
||
</ul>
|
||
<h3 id="observationsthoughts">Observations/Thoughts</h3>
|
||
<ul>
|
||
<li><a href="https://radim.xyz/project/agent_tag_bevy/">Game engine beginner - First look at Bevy - What is ECS and why should you care?</a></li>
|
||
<li><a href="https://ibraheem.ca/writings/an-alternative-async-fn-syntax/">An Alternative Syntax for Async Functions</a></li>
|
||
<li><a href="https://www.crowdstrike.com/blog/development-cost-of-porting-tensorflow-models-to-pure-rust/">Development Cost of Porting TensorFlow Models to Pure Rust</a></li>
|
||
</ul>
|
||
<h3 id="rust-walkthroughs">Rust Walkthroughs</h3>
|
||
<ul>
|
||
<li><a href="https://saidvandeklundert.net/learn/2021-09-01-rust-option-and-result/">Rust Option and Result</a></li>
|
||
<li><a href="https://dev.to/rogertorres/asynchronous-rust-basic-concepts-44ed">Asynchronous Rust: basic concepts</a></li>
|
||
<li><a href="https://dev.to/ender_minyard/rust-visualized-pointers-as-references-23cg">Rust Visualized: Pointers as References</a></li>
|
||
<li><a href="https://www.lpalmieri.com/posts/password-authentication-in-rust/">Password auth in Rust, from scratch - Attacks and best practices</a></li>
|
||
<li><a href="https://www.rodrigoaraujo.me/posts/lets-build-an-lc-3-virtual-machine/">Building an LC-3 virtual machine in Rust</a></li>
|
||
<li><a href="https://www.fpcomplete.com/blog/axum-hyper-tonic-tower-part1/">Combining Axum, Hyper, Tonic, and Tower for hybrid web/gRPC apps: Part 1</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=LHPV3z9OSic">Getting started with Rust programming language 🦀 2021: 5. Refactoring the CLI app in Rust</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=ThjvMReOXYM">Crust of Rust: async/await</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=mupwF9jbVZ4">Concurrency in Rust - Sharing State</a></li>
|
||
</ul>
|
||
<h3 id="miscellaneous">Miscellaneous</h3>
|
||
<ul>
|
||
<li><a href="https://www.reddit.com/r/rust/comments/pchp8h/media_struct_update_syntax_in_rust/">Struct Update Syntax in Rust</a></li>
|
||
<li><a href="https://umccr.org/blog/htsget-rs/">htsget-rs: Bioinformatic file formats accessible to the web, 100% Rust, a GSoC2021 project wrap-up</a></li>
|
||
<li><a href="https://static.stillinbeta.com/cold-iron/cold_iron/">cold_iron: A Brief Introduction to Nanothaumaturgy</a></li>
|
||
</ul>
|
||
<h2 id="crate-of-the-week">Crate of the Week</h2>
|
||
<p>This week's crate is <a href="https://github.com/taiki-e/cargo-llvm-cov">cargo-llvm-cov</a>, a cargo subcommand for LLVM-based code coverage.</p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/948">Jacob Pratt</a> for the suggestion.</p>
|
||
<p><a href="https://users.rust-lang.org/t/crate-of-the-week/2704">Please submit your suggestions and votes for next week</a>!</p>
|
||
<h2 id="call-for-participation">Call for Participation</h2>
|
||
<p>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!</p>
|
||
<ul>
|
||
<li><a href="https://www.reddit.com/r/rust/comments/pfuwhf/help_wanted_cdrstokio_road_to_performance_and/">cdrs-tokio road to performance and testing</a></li>
|
||
<li><a href="https://github.com/RoaringBitmap/roaring-rs/issues/113">RoaringBitmap/roaring-rs - The insert_range method does not properly handle boundary condition</a></li>
|
||
<li><a href="https://github.com/ockam-network/ockam/issues/160">ockam-network/ockam - Ockam Vault for AWS (KMS/HSM) in Rust</a></li>
|
||
<li><a href="https://github.com/ockam-network/ockam/issues/1804">ockam-network/ockam - Ockam TCP Transport using smoltcp</a></li>
|
||
</ul>
|
||
<p>Some of these tasks may also have mentors available, visit the task page for more information.</p>
|
||
<p>If you are a Rust project owner and are looking for contributors, please submit tasks <a href="https://users.rust-lang.org/t/twir-call-for-participation/4821">here</a>.</p>
|
||
<h2 id="updates-from-rust-core">Updates from Rust Core</h2>
|
||
<p>296 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2021-08-23..2021-08-30">merged in the last week</a></p>
|
||
<ul>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/87832">fix debugger stepping behavior with match expressions</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/84333">improve liveness analysis for generators</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88280">handle match statements with non exhaustive variants in closures</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88208"><code>ast_lowering</code>: introduce <code>lower_span</code> for catching all spans entering HIR</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88069">PGO for LLVM builds on <code>x86_64-unknown-linux-gnu</code> in CI</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88262"><code>Cow</code>'ify some <code>pprust</code> methods</a></li>
|
||
<li><a href="https://github.com/rust-lang/polonius/pull/173">polonius: move to a fully hand-written parser to improve compile / iteration times</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/85556">warn about unreachable code following an expression with an uninhabited type</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/85499">normalize projections under binders</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/87472">stabilize and document <code>--force-warn</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88299">stabilise <code>BufWriter::into_parts</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/87944">add <code>Cell::as_array_of_cells</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/87921">add <code>Saturating</code> type (based on <code>Wrapping</code> type)</a></li>
|
||
<li><a href="https://github.com/rust-lang/stdarch/pull/1203">stdarch: update codegen for simd wasm intrinsics with LLVM 13</a></li>
|
||
<li><a href="https://github.com/rust-lang/futures-rs/pull/2488">futures: add <code>Peekable::</code>{<code>peek_mut</code>, <code>poll_peek_mut</code>}</a></li>
|
||
<li><a href="https://github.com/rust-lang/cargo/pull/9848">cargo: show description of well known subcommands (fmt, clippy) in <code>cargo --list</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7573">clippy: fix <code>option_if_let_else</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7543">clippy: add <code>module_style</code> lint to style</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7453">clippy: don't report function calls as unnecessary operation if used in array index</a></li>
|
||
</ul>
|
||
<h3 id="rust-compiler-performance-triage">Rust Compiler Performance Triage</h3>
|
||
<p>A very busy week with relatively even amounts of regressions and improvements (albeit with improvements outweighing regressions). The largest win was the use of profile-guided optimization (PGO) builds on x86_64 linux builds which brings fairly large improvements in real-world crates. There were 2 regressions that caused fairly large (~3.5%) regressions in real-world crates which need to be investigated.</p>
|
||
<p>Triage done by <strong>@rylev</strong>.
|
||
Revision range: <a href="https://perf.rust-lang.org/?start=33fdb797f59421c7bbecaa4588ed5d7a31a9494a&end=fe37929e4cba2c5c21e6805805769630c736bc3d&absolute=false&stat=instructions%3Au">33fdb..fe379</a></p>
|
||
<p>5 Regressions, 4 Improvements, 5 Mixed; 0 of them in rollups
|
||
56 comparisons made in total</p>
|
||
<p><a href="https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-09-01.md">Full report here</a>.</p>
|
||
<h3 id="approved-rfcs">Approved RFCs</h3>
|
||
<p>Changes to Rust follow the Rust <a href="https://github.com/rust-lang/rfcs#rust-rfcs">RFC (request for comments) process</a>. These
|
||
are the RFCs that were approved for implementation this week:</p>
|
||
<p><em>No RFCs were approved this week.</em></p>
|
||
<h3 id="final-comment-period">Final Comment Period</h3>
|
||
<p>Every week <a href="https://www.rust-lang.org/team.html">the team</a> announces the
|
||
'final comment period' for RFCs and key PRs which are reaching a
|
||
decision. Express your opinions now.</p>
|
||
<h3 id="rfcs"><a href="https://github.com/rust-lang/rfcs/labels/final-comment-period">RFCs</a></h3>
|
||
<ul>
|
||
<li>[disposition: close] <a href="https://github.com/rust-lang/rfcs/pull/3163">Proposal: Else clauses for for and while loops</a></li>
|
||
<li>[disposition: close] <a href="https://github.com/rust-lang/rfcs/pull/3159">RFC: let-expression</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rfcs/pull/3123">Scrape code examples from examples/ directory for Rustdoc</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rfcs/pull/3119">Rust-lang crate ownership policy</a></li>
|
||
</ul>
|
||
<h3 id="tracking-issues-prs"><a href="https://github.com/rust-lang/rust/labels/final-comment-period">Tracking Issues & PRs</a></h3>
|
||
<ul>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/88353">Partially stabilize array_methods</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/88177">Stabilize std::os::unix::fs::chroot</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/88140">Stabilize reserved prefixes</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/88126">stabilize disjoint capture in closures (RFC 2229)</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/87993">Stabilize try_reserve</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/87064">Support #[track_caller] on closures and generators</a></li>
|
||
</ul>
|
||
<h3 id="new-rfcs">New RFCs</h3>
|
||
<p><em>No new RFCs were proposed this week.</em></p>
|
||
<h2 id="upcoming-events">Upcoming Events</h2>
|
||
<h3 id="online">Online</h3>
|
||
<ul>
|
||
<li><a href="https://www.meetup.com/Rust-Zurich/events/280295950/">September 2, 2021, Zurich, CH - Exciting new Rustdoc features landing in 1.55.0 - Hybrid Meetup (Livestream!) - Rust Zurich</a></li>
|
||
<li><a href="https://berline.rs/">September 2, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs</a></li>
|
||
<li><a href="https://www.meetup.com/Buffalo-Rust-Meetup/events/280433831/">September 7, 2021, Buffalo, NY, US - Buffalo Rust User Group, First Tuesdays - Buffalo Rust Meetup</a></li>
|
||
<li><a href="https://www.meetup.com/Rust-Boulder-Denver/events/279407152/">September 8, 2021, Denver, CO, US - Rust Q&A - Rust Denver</a></li>
|
||
<li><a href="https://www.meetup.com/Seattle-Rust-Meetup/events/gskksryccmbsb/">September 14, 2021, Seattle, WA, US - Monthly Meetup - Seattle Rust Meetup</a></li>
|
||
<li><a href="https://www.meetup.com/Vancouver-Rust/events/zkqvjsyccmbtb/">September 15, 2021, Vancouver, BC, CA - Considering Rust - Vancouver Rust</a></li>
|
||
</ul>
|
||
<h3 id="north-america">North America</h3>
|
||
<ul>
|
||
<li><a href="https://www.meetup.com/Rust-ATL/events/lhpkmsyccmblb/">September 8, 2021, Atlanta, GA, US - Grab a beer with fellow Rustaceans - Rust Atlanta</a></li>
|
||
</ul>
|
||
<p>If you are running a Rust event please add it to the <a href="https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com">calendar</a> to get
|
||
it mentioned here. Please remember to add a link to the event too.
|
||
Email the <a href="mailto:community-team@rust-lang.org">Rust Community Team</a> for access.</p>
|
||
<h1 id="rust-jobs">Rust Jobs</h1>
|
||
<p><strong>NZXT</strong></p>
|
||
<ul>
|
||
<li><a href="https://nzxt.bamboohr.com/jobs/view.php?id=317">Senior Software Engineer for Streaming Software (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>Polar Sync</strong></p>
|
||
<ul>
|
||
<li><a href="https://polarsync.breezy.hr/p/0c1d3630d39d">Principal/Senior Software Engineer - Rust/C++ (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>Subspace Labs</strong></p>
|
||
<ul>
|
||
<li><a href="https://jobs.lever.co/subspacelabs/d5d62ccb-eaaf-43f4-83ad-11ebff2ce3a0">Blockchain Consensus Engineer (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>Kollider</strong></p>
|
||
<ul>
|
||
<li><a href="https://kollider.homerun.co/junior-backend-engineer/en">Junior Backend Engineer (Remote)</a></li>
|
||
<li><a href="https://kollider.homerun.co/senior-backend-engineer/en">Senior Backend Engineer (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>Kraken</strong></p>
|
||
<ul>
|
||
<li><a href="https://jobs.lever.co/kraken/4019a818-4a7b-46ef-9225-c53c7a7f238c">Backend Engineer - Rust - Core Backend (Remote)</a></li>
|
||
<li><a href="https://jobs.lever.co/kraken/fe1e07f4-6d7c-4f65-9a8f-27cf3b3fd2b1">Backend Engineer, Kraken Futures - Rust (Remote)</a></li>
|
||
<li><a href="https://jobs.lever.co/kraken/2863623f-13c9-4f50-992d-7c25736a60f9">Senior Banking Engineer - Rust (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>TrueLayer</strong></p>
|
||
<ul>
|
||
<li>Senior Software Engineer, Engineering Ops (<a href="https://apply.workable.com/truelayer/j/0AAB4A80C1/">London, UK</a>, <a href="https://apply.workable.com/truelayer/j/9C3654A7BF/">Milan, IT</a>)</li>
|
||
<li>Software Engineer, Engineering Ops (<a href="https://apply.workable.com/truelayer/j/920145EAFA/">London, UK</a>, <a href="https://apply.workable.com/truelayer/j/BD3F858CA7/">Milan, IT</a>)</li>
|
||
<li>Engineering Lead, PayDirect (<a href="https://apply.workable.com/truelayer/j/9564797E78/">Milan, IT</a>)</li>
|
||
<li>Rust Software Engineer, PayDirect (<a href="https://apply.workable.com/truelayer/j/C554AC0559/">London, UK</a>, <a href="https://apply.workable.com/truelayer/j/ED53901B8A/">Milan, IT</a>)</li>
|
||
</ul>
|
||
<p><em>Tweet us at <a href="https://twitter.com/ThisWeekInRust">@ThisWeekInRust</a> to get your job offers listed here!</em></p>
|
||
<h1 id="quote-of-the-week">Quote of the Week</h1>
|
||
<blockquote>
|
||
<p>Anyway: the standard library docs say "check the nomicon"<br />
|
||
then the nomicon says "here is some advice and ultimately we don't know, maybe check UCG"<br />
|
||
then UCG says "ultimately we don't know it's probably like this but there's no RFC yet"<br />
|
||
then Ralf says "probably it should be allowed if the layout matches".</p>
|
||
</blockquote>
|
||
<p>– <a href="https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/rustc.20warn.20against.20repr.20rust.20transmutes/near/250735818">Lokathor on the Rust Zulip</a></p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1097">Riccardo D'Ambrosio</a> for the suggestion!</p>
|
||
<p><a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328">Please submit quotes and vote for next week!</a></p>
|
||
<p><em>This Week in Rust is edited by: <a href="https://github.com/nellshamrell">nellshamrell</a>, <a href="https://github.com/llogiq">llogiq</a>, and <a href="https://github.com/cdmistman">cdmistman</a>.</em></p>
|
||
<p><small><a href="https://www.reddit.com/r/rust/comments/pgv2zq/this_week_in_rust_406/">Discuss on r/rust</a></small></p> |