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

166 lines
16 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="official">Official</h3>
<ul>
<li><a href="https://blog.rust-lang.org/2021/09/27/Core-team-membership-updates.html">Core team membership updates</a></li>
<li><a href="https://foundation.rust-lang.org/posts/2021-09-21-member-spotlight-open-source-security-software/">Rust Foundation Member Spotlight: Open Source Security</a></li>
</ul>
<h3 id="projecttooling-updates">Project/Tooling Updates</h3>
<ul>
<li><a href="https://sixtyfps.io/thisweek/2021-09-27.html">SixtyFPS (GUI crate) weekly update for 27th of September 2021</a></li>
<li><a href="https://www.fluvio.io/news/this-week-in-fluvio-0006/">This week in Fluvio #6: the programmable streaming platform</a></li>
<li><a href="https://datafuselabs.github.io/weekly/2021-09-29-databend-weekly/">This week in Databend #9: an elastic and reliable cloud warehouse</a></li>
<li><a href="https://intellij-rust.github.io/2021/09/27/changelog-156.html">IntelliJ Rust Changelog #156</a></li>
<li><a href="https://rust-analyzer.github.io/thisweek/2021/09/27/changelog-96.html">Rust Analyzer #96</a></li>
</ul>
<h3 id="observationsthoughts">Observations/Thoughts</h3>
<ul>
<li><a href="https://adventures.michaelfbryan.com/posts/rust-best-practices/bad-habits/">Common Newbie Mistakes and Bad Practices in Rust: Bad Habits</a></li>
<li><a href="https://www.bmd-software.com/news/why-rust-in-medical-imaging-a-reflection-on-modern-technologies-for-next-generation-systems">Why Rust in medical imaging? A reflection on modern technologies for next generation systems</a></li>
<li><a href="https://dropbox.tech/application/why-we-built-a-custom-rust-library-for-capture">Why we built a custom Rust library for Capture</a></li>
<li>[audio] <a href="https://rustacean-station.org/episode/038-jon-gjengset/">Rust for Rustaceans by Jon Gjengset</a></li>
<li>[video] <a href="https://www.reddit.com/r/rust/comments/pxz7at/rustlinux_plumbers_conference_2021/">Rust Talks at the Linux Plumbers Conference 2021</a></li>
</ul>
<h3 id="rust-walkthroughs">Rust Walkthroughs</h3>
<ul>
<li><a href="https://kerkour.com/blog/rust-static-site-generator/">Building a static site generator in 100 lines of Rust</a></li>
<li><a href="https://blog.knoldus.com/stm32f3-magnetometer-use-cases-reading-extraction-part-1/">STM32F3s Magnetometer | Use-cases &amp; Reading Extraction (Part-1)</a></li>
<li><a href="https://kerkour.com/blog/rust-reproducible-cross-compilation-with-docker/">Reproducible cross-compilation for Rust (with Docker)</a></li>
<li><a href="https://www.pragprog.com/titles/hwrustbrain/rust-brain-teasers/">Rust Brain Teasers</a></li>
<li><a href="https://www.anyleaf.org/blog/writing-embedded-firmware-using-rust">Writing embedded firmware using Rust</a></li>
<li><a href="https://dev.to/askrodney/using-rust-cloudflare-workers-serverless-hcaptcha-358g">Using Rust Cloudflare Workers: Serverless hCaptcha</a></li>
<li><a href="https://dev.to/akkoro/deploy-an-ultra-fast-blog-in-minutes-with-eleventy-and-assemblylift-webassembly-lambda-api-gateway-rust-568l">Deploy an ultra-fast blog in minutes with Eleventy and AssemblyLift (WebAssembly + Lambda + API Gateway + Rust)</a></li>
<li>[PT] <a href="https://dev.to/higordiego/rust-ownership-1hka">Rust - Ownership ?</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=OGihuce8rl8">Hacking on rustc - Negative literals in indexing expressions</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=J_yGWdgeGQM">Getting started with Rust 🦀 2021: 6. Library API design overhaul, async and more</a></li>
</ul>
<h3 id="miscellaneous">Miscellaneous</h3>
<ul>
<li><a href="https://github.blog/2021-09-23-github-advisory-database-now-supports-rust/">GitHub Advisory Database now supports Rust</a></li>
<li><a href="https://www.chiark.greenend.org.uk/~ianmdlvl/rust-polyglot/index.html"><em>Rust for the Polyglot Programmer</em> - introducing a new guide to the language</a></li>
<li>[DE] <a href="https://rg-rhein-main.gi.de/veranstaltung/modernes-rust-im-jahr-2021">Modernes Rust im Jahr 2021 @ Gesellschaft für Informatik</a></li>
</ul>
<h2 id="crate-of-the-week">Crate of the Week</h2>
<p>This week's crate is <a href="https://crates.io/crates/miette">miette</a>, a library for error handling that is beautiful both in code and output.</p>
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/965">Kat Marchán</a> for the self-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>
<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-the-rust-project">Updates from the Rust Project</h2>
<p>265 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2021-09-20..2021-09-27">merged in the last week</a></p>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/89263">suggest both of immutable and mutable trait implementations</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89221">give better error for <code>macro_rules! name!</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88680">validate builtin attributes for macro args</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88865">implement <code>#[must_not_suspend]</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/87064">support <code>#[track_caller]</code> on closures and generators</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89237">make <code>#[track_caller]</code> actually do stuff in <code>Steal::borrow</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88804">revise never type fallback algorithm</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89125">don't use projection cache or candidate cache in intercrate mode</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89285">don't normalize opaque types with escaping late-bound regions</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89120">disable visible path calculation for <code>PrettyPrinter</code> in <code>Ok</code> path of compiler</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88243">enable new pass manager with LLVM 13</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89104">simplify <code>scoped_thread</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89086">stabilize <code>Iterator::map_while</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89139">use ZST for <code>fmt</code> unsafety</a></li>
<li><a href="https://github.com/rust-lang/rustfmt/pull/4998">rustfmt: trailing comma on match block goes missing when guard is on its own line</a></li>
<li><a href="https://github.com/rust-lang/rustfmt/pull/4997">rustfmt: simplify and speed up search for local path based deps with <code>cargo fmt --all</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7692">clippy: demote <code>float_cmp</code> to pedantic</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7669">clippy: new lint <code>if_then_panic</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7722">clippy: stop <code>excessive_precision</code> from suggesting a float truncation that is not shorter</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7707">clippy: don't lint <code>suspicious_else_formatting</code> inside proc-macros</a></li>
</ul>
<h3 id="rust-compiler-performance-triage">Rust Compiler Performance Triage</h3>
<p>The largest story for the week are the massive improvements that come from enabling the new pass manager in LLVM which leads to consistent 5% to 30% improvements across almost all test cases. The regressions were mostly minor with clear paths for addressing the ones that were not made with some specific trade off in mind.</p>
<p>Triage done by <strong>@rylev</strong>.
Revision range: <a href="https://perf.rust-lang.org/?start=7743c9fadd64886d537966ba224b9c20e6014a59&amp;end=83f147b3baf21acfc367a6da1045d212cd3957e4&amp;absolute=false&amp;stat=instructions%3Au">7743c9..83f147</a></p>
<p>4 Regressions, 4 Improvements, 3 Mixed; 0 of them in rollups</p>
<p>43 comparisons made in total</p>
<p><a href="https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-09-28.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>
<p><em>No RFCs are currently in the final comment period.</em></p>
<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/issues/89381">Tracking Issue for saturating_div</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/89337">Avoid allocations and copying in <code>Vec::leak</code></a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/89006">Stabilize RFC 2345: Allow panicking in constants</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/88090">Perform type inference in range pattern</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/71436">Tracking issue for <code>proc_macro::is_available()</code></a></li>
<li>[disposition: close] <a href="https://github.com/rust-lang/rust/issues/58935">Tracking issue for <code>alloc::prelude</code></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://berline.rs/">September 30, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs</a></li>
<li><a href="https://github.com/gfx-rs/meetup">October 2, 2021 - Rust Graphics meetup</a></li>
<li><a href="https://www.meetup.com/Buffalo-Rust-Meetup/events/280628523/">October 5, 2021, Buffalo, NY, US - Buffalo Rust User Group, First Tuesdays - Buffalo Rust Meetup</a></li>
<li><a href="https://www.meetup.com/Rust-Zurich/events/280399418/">October 7, 2021, Zürich, CH - Rust &amp; GUI: egui - Rust Zürichsee</a></li>
<li><a href="https://discord.gg/yNtPTb2">October 9, 2021 - Rust Gamedev Discord - Rust Gamedev Monthly Meetup</a></li>
<li><a href="https://www.meetup.com/Seattle-Rust-Meetup/events/gskksryccnbqb/">October 12, 2021, Seattle, WA, US - Monthly meetup - Seattle Rust Meetup</a></li>
<li><a href="https://rust.bettercode.eu/">October 13, 2021 - betterCode Rust</a></li>
</ul>
<h3 id="north-america">North America</h3>
<ul>
<li><a href="https://www.meetup.com/Rust-ATL/events/lhpkmsyccnbrb/">October 13, 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>Enso</strong></p>
<ul>
<li><a href="https://github.com/enso-org/hiring/blob/main/people/senior-rust-developer.md">Senior Rust Developer (Remote)</a></li>
</ul>
<p><strong>Stockly</strong></p>
<ul>
<li><a href="https://www.welcometothejungle.com/fr/companies/stockly-1/jobs/back-end-developer-engine-team-rust-grpc-postgresql_paris">Back-end developer - Engine team (Rust, GRPC, PostgreSQL)</a></li>
</ul>
<p><strong>Timescale</strong></p>
<ul>
<li><a href="https://boards.greenhouse.io/timescale/jobs/5542785002">Senior Toolkit Engineer - Database (Remote)</a></li>
</ul>
<p><strong>ChainSafe</strong></p>
<ul>
<li><a href="https://jobs.smartrecruiters.com/ChainSafeSystemsInc/743999769790643-protocol-engineer-forest-rust-">Protocol Engineer for Filecoin Forest (Remote)</a></li>
<li><a href="https://jobs.smartrecruiters.com/ChainSafeSystemsInc/743999769885107-rust-engineer-substrate-">Rust Engineer for Substrate (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><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>
<p>This week we have two great quotes!</p>
<blockquote>
<p>The signature of your function is your contract with not only the compiler, but also users of your function.</p>
</blockquote>
<p> <a href="https://users.rust-lang.org/t/why-rust-lifetime-elision-cannot-inference-the-proper-lifetime-annotations-on-functions/65106/3">Quine Dot on rust-users</a></p>
<blockquote>
<p>Do you want to know what was harder than learning lifetimes? Learning the same lessons through twenty years of making preventable mistakes.</p>
</blockquote>
<p> <a href="https://www.youtube.com/watch?v=4_Jg-rLDy-Y&amp;t=1658s">Zac Burns in his RustConf talk</a></p>
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1116">Daniel H-M</a> and <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1117">Erik Zivkovic</a> for the suggestions!</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/pyat4g/this_week_in_rust_410/">Discuss on r/rust</a></small></p>