166 lines
16 KiB
Plaintext
166 lines
16 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="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/">STM32F3’s Magnetometer | Use-cases & 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&end=83f147b3baf21acfc367a6da1045d212cd3957e4&absolute=false&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 & 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 & 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&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> |