emacs/var/elfeed/db/data/b8/b8bd06d494d75ecae479c88c3d3beb7af3cf14c3
2022-01-03 12:49:32 -06:00

182 lines
17 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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&amp;end=fe37929e4cba2c5c21e6805805769630c736bc3d&amp;absolute=false&amp;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 &amp; 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&amp;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>