emacs/var/elfeed/db/data/7b/7b9af926dae5aa687b44f3865f11e85c897b7450
2022-01-03 12:49:32 -06:00

220 lines
21 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/10/21/Rust-1.56.0.html">Announcing Rust 1.56.0 and Rust 2021</a></li>
</ul>
<h3 id="foundation">Foundation</h3>
<ul>
<li><a href="https://foundation.rust-lang.org/posts/2021-10-26-member-spotlight-tag1/">Member Spotlight: Tag1</a></li>
</ul>
<h3 id="projecttooling-updates">Project/Tooling Updates</h3>
<ul>
<li><a href="https://kerkour.com/blog/black-hat-rust-october-update/">Black Hat Rust October Update (now in Beta 🍾)</a></li>
<li><a href="https://sixtyfps.io/thisweek/2021-10-25.html">SixtyFPS (GUI crate) weekly report for 24th of October 2021</a></li>
<li><a href="https://gloo-rs.web.app/blog/release-0.4.0/">Releasing Gloo v0.4.0: Gloo is a modular toolkit for building fast, reliable Web applications and libraries with Rust and Wasm </a></li>
<li><a href="https://www.fluvio.io/news/this-week-in-fluvio-0010/">This week in Fluvio #10: the programmable streaming platform</a></li>
<li><a href="https://datafuselabs.github.io/weekly/2021-10-27-databend-weekly/">This week in Databend #13: an elastic and reliable cloud warehouse</a></li>
<li><a href="https://rust-analyzer.github.io/thisweek/2021/10/25/changelog-100.html">Rust Analyzer Changelog #100</a></li>
<li><a href="https://intellij-rust.github.io/2021/10/25/changelog-158.html">IntelliJ Rust Changelog #158</a></li>
</ul>
<h3 id="observationsthoughts">Observations/Thoughts</h3>
<ul>
<li><a href="https://tweedegolf.nl/blog/63/async-on-embedded-present-and-future">Async on Embedded: Present &amp; Future</a></li>
<li><a href="https://passcod.name/technical/no-time-for-chrono.html">No Time for Chrono</a></li>
<li><a href="https://senyosimpson.com/short-forms/pointer-fu-tokio/">Pointer Fu: An adventure in the Tokio code base</a></li>
<li><a href="https://dev.to/joshchoo/how-actix-webs-application-state-and-data-extractor-works-internally-fm1">How actix-web's application state and Data extractor works internally</a></li>
<li><a href="https://coredumped.dev/2021/10/21/building-an-emacs-lisp-vm-in-rust/">Building an Emacs lisp VM in Rust</a></li>
<li><a href="https://whileydave.com/2021/10/26/test-driving-the-rust-model-checker-rmc/">Test-Driving the Rust Model Checker (RMC)</a></li>
<li><a href="https://www.thecodedmessage.com/posts/hello-rust/">Sayonara, C++, and hello to Rust!</a></li>
<li><a href="https://seiya.me/writing-linux-clone-in-rust">Writing a Linux-compatible kernel in Rust</a></li>
<li><a href="https://estebank.github.io/sustainable-growth-and-visibility.html">Sustainable growth and visibility</a></li>
<li>[audio] <a href="https://rustacean-station.org/episode/039-rust-1.54-1.55/">What's New in Rust 1.54 and 1.55</a></li>
<li>[audio] <a href="https://rustacean-station.org/episode/043-bastian-gruber/">Rust Web Development with Bastian Gruber</a></li>
</ul>
<h3 id="rust-walkthroughs">Rust Walkthroughs</h3>
<ul>
<li><a href="https://www.osohq.com/post/cross-platform-rust-libraries">🦀 How We Built a Cross-Platform Library with Rust</a></li>
<li><a href="https://burgers.io/custom-logging-in-rust-using-tracing-part-2">Custom Logging in Rust using tracing and tracing-subscriber, part 2</a></li>
<li><a href="https://www.greyblake.com/blog/2021-10-25-builder-with-typestate-in-rust/">Builder with typestate in Rust</a></li>
<li><a href="https://dev.to/dimfeld/starting-with-solana-part-2-17gc">Starting with Solana, Part 2</a></li>
<li><a href="https://dev.to/tjmaynes/implementing-the-health-check-api-pattern-with-rust-29ll">Implementing the Health Check API Pattern with Rust</a></li>
<li><a href="https://dev.to/logrocket/icedrs-tutorial-how-to-build-a-simple-rust-frontend-web-app-2pg7">Iced.rs tutorial: How to build a simple Rust frontend web app</a></li>
<li><a href="https://dev.to/ayush1325/writing-a-qml-application-in-rust-part-1-3pgi">Writing a QML Application in Rust (Part 1)</a></li>
<li><a href="https://opensource.com/article/21/10/rust-embedded-development">Use Rust for embedded development</a></li>
<li><a href="https://yieldcode.blog/supercharge-nodejs-with-rust/">Supercharge Your NodeJS With Rust</a></li>
<li><a href="https://itnext.io/implementing-the-health-check-api-pattern-with-rust-eaef04cb4d2d">Implementing the Health Check API Pattern with Rust</a></li>
<li><a href="https://fasterthanli.me/articles/my-ideal-rust-workflow">My ideal Rust workflow</a></li>
<li><a href="https://reltech.substack.com/p/getting-started-with-rust-on-a-raspberry">Getting Started with Rust on a Raspberry Pi Pico</a></li>
<li>[series] <a href="https://medium.com/@otukof/build-your-text-editor-with-rust-final-part-4c841a649900">Build Your Text Editor With Rust! Final Part</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=rBGPAmfsVjo">Writing a Programming Language (in Rust) 2: Branching, Literals and Addition</a></li>
<li>[video] <a href="https://blog.tarkalabs.com/how-to-build-a-web-application-using-rust-part-iii-ed6511ebaa97">How to Build a Web Application using Rust — Part III</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=rAVHBl3W9W8">FLTK Rust: intro into the fltk-evented crate</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=5rwnWfMJflU">Rust Programming - Macros Quick Dev Tips</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=ePMbrtzZz9E">Rewriting a C++ project in Rust to learn the language</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=Yd6PvqNct-o">rg3d - live coding session #1</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=Nuba5LNy5cY">Understand Rust's Borrow Checker in 5 Minutes</a></li>
</ul>
<h3 id="miscellaneous">Miscellaneous</h3>
<ul>
<li><a href="https://mojosd.medium.com/rust-code-reading-club-8fe356287049">Rustc Code Reading Club</a></li>
<li><a href="https://www.twitch.tv/ezanmoto">Writing a Programming Language (in Rust): Weekly Stream, Saturdays at 15:00~17:00 GMT+1</a></li>
<li><a href="https://quickwit.io/blog/search-a-sorted-block/">A cool Rust optimization story</a></li>
<li><a href="https://finance.yahoo.com/news/concordium-devx-initiative-launches-rust-131500585.html">Concordiums DevX Initiative Launches Rust Maintainers Sponsorship Program</a></li>
<li><a href="https://linkerd.io/2021/10/26/how-linkerd-retries-http-requests-with-bodies/">How Linkerd retries HTTP requests with bodies</a></li>
<li><a href="https://medium.com/coinmonks/build-a-scalable-trading-bot-with-rust-over-the-weekend-part-2-bb7d703eebe7">Build a Scalable Trading Bot With Rust Over the Weekend — Part 2</a></li>
</ul>
<h2 id="crate-of-the-week">Crate of the Week</h2>
<p>This week's crate is <a href="https://web.crev.dev/rust-reviews/">cargo-crev</a>, a tool to distribute security review of the crates we all depend on.</p>
<p>As there was no suggestion this week, llogiq is pretty thankful to himself for choosing this crate.</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>
<ul>
<li><a href="https://github.com/wahn/rs_pbrt/issues/136">wahn/rs_pbrt - [parse_blend_file] Attic Close-up</a></li>
<li><a href="https://github.com/kdr-aus/ogma/issues/16">kdr-aus/ogma - Implement filter on Str input type</a></li>
<li><a href="https://github.com/kdr-aus/divvy/issues/2">kdr-aus/ogma - Implement <code>From&lt;char for Str</code></a></li>
<li><a href="https://github.com/ockam-network/ockam/issues/2121">ockam-network/ockam - Compile to WebAssembly</a></li>
<li><a href="https://github.com/ockam-network/ockam/issues/1804">ockam-network/ockam - Ockam TCP Transport using smoltcp</a></li>
</ul>
<h2 id="updates-from-the-rust-project">Updates from the Rust Project</h2>
<p>353 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2021-10-04..2021-10-11">merged in the last week</a></p>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/83233">implement <code>split_array</code> and <code>split_array_mut</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/85254">normalize MIR with <code>RevealAll</code> before optimizations.</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/86479">automatic exponential formatting of <code>f</code>{<code>32</code>, <code>64</code>} in <code>Debug</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/86984">reject octal zeros in <code>IPv4</code> addresses</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/87404">add support for artifact size profiling</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/87440">remove unnecessary condition in <code>Barrier::wait()</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88041">make all proc-macro back-compat lints deny-by-default</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88300">stabilise <code>unix_process_wait_more</code>, extra <code>ExitStatusExt</code> methods</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88624">stabilize feature <code>saturating_div</code> for rust 1.58.0</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88789">remove unnecessary bound on <code>Zip</code> specialization impl</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88860">deduplicate <code>panic_fmt</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89257">give better error for <code>macro_rules name</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89292">stabilize <code>CString::from_vec_with_nul</code>(<code>_unchecked</code>)</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89427">point at overlapping impls when type annotations are needed</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89558">add rustc lint, warning when iterating over hashmaps</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89829">consider types appearing in const expressions to be invariant</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89889">use the "nice E0277 errors" for <code>!Send</code> <code>impl Future</code> from foreign crate</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89895">don't mark <code>for</code> loop iter expression as desugared</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89944">change <code>Duration::</code>(<code>try_</code>)<code>from_secs_</code>{<code>f32</code>, <code>f64</code>} underflow error</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89956">suggest a case insensitive match name regardless of Levenshtein distance</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/90077">make <code>From</code> impls of <code>NonZero</code> integer const</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/90009">make more <code>From</code> impls <code>const</code> (libcore)</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/90162">mark {<code>array</code>, <code>slice</code>}<code>::</code>{<code>from_ref</code>, <code>from_mut</code>} as <code>const fn</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/90010">avoid overflow in <code>VecDeque::with_capacity_in()</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/90099">fix MIRI UB in <code>Vec::swap_remove</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/90104">implement coherence checks for negative trait impls</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/90117">make <code>RSplit&lt;T, P&gt;: Clone</code> not require <code>T: Clone</code></a></li>
<li><a href="https://github.com/rust-lang/rustc_codegen_gcc/pull/104">codegen-gcc: disable strict aliasing</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7838">clippy: warn on structs with a trailing zero-sized array but no <code>repr</code> attribute</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7840">clippy: cover <code>Result</code> for <code>question_mark</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7801">clippy: make <code>useless_format</code> recognize <code>format!("")</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7811">clippy: avoid <code>eq_op</code> in test code</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7849">clippy: fix FP in <code>missing_safety_doc</code> lint</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7850">clippy: fix FP: no lint when cast is coming from <code>signum</code> method call for <code>cast_possible_truncation</code> lint</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7856">clippy: <code>missing_safety_doc</code>: handle 'implementation safety' headers as well</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7865">clippy: fix <code>match_str_case_mismatch</code> on uncased chars</a></li>
</ul>
<h3 id="rust-compiler-performance-triage">Rust Compiler Performance Triage</h3>
<p>Multiple regressions this week, several of which were in rollups, without much
to balance them out on the improvements front.</p>
<p>Triage done by <strong>@simulacrum</strong>.
Revision range: <a href="https://perf.rust-lang.org/?start=d45ed7502ad225739270a368528725930f54b7b6&amp;end=3c8f001d454b1b495f7472d8430ef8fdf10aac11&amp;absolute=false&amp;stat=instructions%3Au">d45ed7..3c8f001d</a></p>
<p>5 Regressions, 4 Improvements, 3 Mixed; 3 of them in rollups;
35 comparisons made in total</p>
<p><a href="https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-10-26.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: merge] <a href="https://github.com/rust-lang/rfcs/pull/3184">Thread local Cell methods.</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rfcs/pull/2972">Constrained Naked Functions</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/89999">Update <code>std::env::temp_dir</code> to use GetTempPath2 on Windows when available.</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/89551">Stabilize <code>const_raw_ptr_deref</code> for <code>*const T</code></a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/88805">Clarification of default socket flags</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/88714">use CLOCK_BOOTTIME in <code>Instant::now</code></a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/88601">Implement <code>Termination</code> for <code>Result&lt;Infallible, E&gt;</code></a></li>
<li>[disposition: close] <a href="https://github.com/rust-lang/rust/pull/87512">Port clippy lint <code>redundant_field_names</code> to compiler</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/87479">GATs: Decide whether to have defaults for <code>where Self: 'a</code></a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/85766">Stabilize <code>File::options()</code></a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/81793">Tracking Issue for relaxed struct unsizing rules</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/81383">Tracking Issue for <code>option_result_unwrap_unchecked</code></a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/71126">Tracking Issue for <code>destructuring_assignment</code></a></li>
<li>[disposition: close] <a href="https://github.com/rust-lang/rust/issues/27747">Tracking issue for <code>slice_concat_ext</code> stabilization</a></li>
</ul>
<h3 id="new-rfcs">New RFCs</h3>
<ul>
<li><a href="https://github.com/rust-lang/rfcs/pull/3185">Static async fn in traits</a></li>
</ul>
<h2 id="upcoming-events">Upcoming Events</h2>
<h3 id="online">Online</h3>
<ul>
<li><a href="https://skillsmatter.com/meetups/13606-rust-london-october2021#community">October 27, 2021, London, UK - Rust London Ockam Takeover - Rust London User Group</a></li>
<li><a href="https://www.meetup.com/Desert-Rustaceans/events/281215858/">October 27, 2021, Phoenix, AZ - Desert Rust Halloween - Desert Rust</a></li>
<li><a href="https://cph.rs/">October 28, 2021, Copenhagen, DK - Hack Night #22 - Copenhagen Rust Group</a></li>
<li><a href="https://www.meetup.com/Buffalo-Rust-Meetup/events/281558952/">November 2, 2021, Buffalo, NY, US - First Tuesdays - Buffalo Rust Meetup</a></li>
<li><a href="https://www.meetup.com/Seattle-Rust-Meetup/events/gskksryccpbmb/">November 9, 2021, Seattle, WA, US - Monthly Meetup - Seattle Rust Meetup</a></li>
<li><a href="https://discord.gg/9Xj8H2EXTD">November 10, 2021, Malaysia - Rust Meetup - Rust Malaysia</a></li>
</ul>
<h3 id="north-america">North America</h3>
<ul>
<li><a href="https://www.meetup.com/Rust-ATL/events/lhpkmsyccpbnb/">November 10, 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>Snapview</strong></p>
<ul>
<li><a href="https://snapview.jobs.personio.de/job/381815?display=en&amp;language=en">(Senior) Rust Backend Engineer (m/f/d (Remote))</a></li>
</ul>
<p><strong>Quickwit</strong></p>
<ul>
<li><a href="https://quickwit.io/jobs/distributed-software-engineer">Senior Rust Engineer (Remote: UTC-1..=UTC+9)</a></li>
</ul>
<p><strong>Seaplane</strong></p>
<ul>
<li><a href="https://apply.workable.com/seaplane/j/CEFCB5F5B8/">Rust Software Engineer (Remote)</a></li>
</ul>
<p><strong>Little Bear Labs</strong></p>
<ul>
<li><a href="https://apply.workable.com/little-bear-labs/j/D88494543C/">Senior Backend Engineer</a></li>
</ul>
<p><strong>Kraken</strong></p>
<ul>
<li><a href="https://jobs.lever.co/kraken?team=Engineering">Several Rust Engineering Positions Available</a></li>
</ul>
<p><strong>Subspace Labs</strong></p>
<ul>
<li><a href="https://jobs.lever.co/subspacelabs">Several Rust Engineering Positions Available</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>I think in general "force the user to think about the extra cases, and be explicit about ignoring them" is definitely idiomatic rust.</p>
</blockquote>
<p> <a href="https://internals.rust-lang.org/t/pre-rfc-add-a-chunk-iterator-to-libcore/15101/16">Daniel Wagner Hall on rust-internals</a></p>
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1127">robin</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/qhehmd/this_week_in_rust_414/">Discuss on r/rust</a></small></p>