emacs/var/elfeed/db/data/0d/0dbc9485c627f9275399397c272e9529d7e4d9c3
2022-01-03 12:49:32 -06:00

179 lines
18 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/inside-rust/2021/11/15/libs-contributors-the8472-kodraus.html">Please welcome The 8472 and Ashley Mannix to Library Contributors</a></li>
</ul>
<h3 id="foundation">Foundation</h3>
<ul>
<li><a href="https://foundation.rust-lang.org/news/2021-11-16-news-announcing-cloud-compute-initiative/">Rust Foundation Announces Cloud Compute Program</a></li>
<li><a href="https://www.tag1consulting.com/blog/tag1-joins-rust-foundation-first-silver-member">Tag1 Joins the Rust Foundation as the First Silver Member</a></li>
<li><a href="https://foundation.rust-lang.org/news/2021-11-17-news-announcing-rebecca-rumbul-executive-director-ceo/">Rust Foundation Taps Rebecca Rumbul as Executive Director &amp; CEO</a></li>
<li><a href="https://foundation.rust-lang.org/posts/2021-11-17-introducing-rebecca-rumbul/">Hello Everyone! How Can I Help?</a></li>
</ul>
<h3 id="projecttooling-updates">Project/Tooling Updates</h3>
<ul>
<li><a href="https://rust-analyzer.github.io/thisweek/2021/11/15/changelog-103.html">Rust Analyzer Changelog #103</a></li>
<li><a href="https://sixtyfps.io/thisweek/2021-11-15.html">SixtyFPS (GUI crate): Changelog for 14th of November 2021</a></li>
<li><a href="https://maybevoid.com/blog/mononym-part-1/">Mononym: Type-Level Named Values in Rust</a></li>
<li><a href="https://github.com/quinn-rs/quinn/releases/tag/0.8.0">Quinn 0.8.0</a></li>
<li><a href="https://community.khonsulabs.com/t/bonsaidb-november-update-working-towards-alpha-1/86">BonsaiDb November update: Working towards alpha 1</a></li>
<li><a href="https://weekly.databend.rs/2021-11-17-databend-weekly/">This week in Databend #16: an elastic and reliable cloud warehouse</a></li>
<li><a href="https://www.fluvio.io/news/this-week-in-fluvio-0013/">This week in Fluvio #13: the programmable streaming platform</a></li>
<li><a href="https://hole.tuziwo.info/cargo-sonar.html">Announcing <code>cargo-sonar</code></a></li>
</ul>
<h3 id="observationsthoughts">Observations/Thoughts</h3>
<ul>
<li><a href="https://kerkour.com/rust-crate-backdoor/">8 Ways to backdoor a crate in Rust for fun and profit</a></li>
<li><a href="https://lucumr.pocoo.org/2021/11/14/abusing-serde/">Rust Adventures: Abusing Serde</a></li>
<li><a href="https://estebank.github.io/rust-iterator-item-syntax.html">Rust Iterator Items: An exploration of syntax</a></li>
<li><a href="https://blog.yoshuawuyts.com/async-cancellation-1/">Async Cancellation I</a></li>
<li><a href="https://nnethercote.github.io/2021/11/12/the-rust-compiler-has-gotten-faster-again.html">The Rust compiler has gotten faster again</a></li>
<li><a href="https://www.embeddedrelated.com/showarticle/1432.php">Learning Rust For Embedded Systems</a></li>
<li><a href="https://ncameron.org/blog/what-is-an-async-runtime/">What is an async runtime?</a></li>
<li><a href="https://dev.to/davidadewoyin/top-rust-cargo-commands-2b70">Top 10 Rust Cargo Commands</a></li>
<li>[audio] <a href="https://rustacean-station.org/episode/046-alice-ryhl/">Tokio Ecosystem with Alice Ryhl</a></li>
<li>[series] [video] <a href="https://www.youtube.com/watch?v=JxFLD4R3WzE">Flutter Backend using Rust - Flying High with Flutter #32</a></li>
</ul>
<h3 id="rust-walkthroughs">Rust Walkthroughs</h3>
<ul>
<li><a href="https://medium.com/geekculture/a-data-pipeline-for-go-trains-delay-analysis-part-2-e5b9ef0ea315">A Data Pipeline for Go Trains Delay Analysis — Part 2</a></li>
<li><a href="https://romankudryashov.com/blog/2021/11/monitoring-rust-web-application/">Monitoring Rust web application with Prometheus and Grafana</a></li>
<li><a href="https://eli.thegreenplace.net/2021/rust-data-structures-with-circular-references/">Rust data structures with circular references</a></li>
<li><a href="https://eli.thegreenplace.net/2021/testing-multiple-implementations-of-a-trait-in-rust/">Testing multiple implementations of a trait in Rust</a></li>
<li><a href="https://dev.to/harmonydevelopment/introducing-hrpc-a-simple-rpc-system-for-user-facing-apis-16ge">Introducing hRPC: a simple RPC system for user-facing APIs</a></li>
<li><a href="https://gamozolabs.github.io/fuzzing/2021/11/16/rust_on_nt_mips.html">Rust on MIPS64 Windows NT 4.0</a></li>
<li><a href="https://dev.to/jareds/how-to-get-started-with-rust-for-risc-v-linux-2fop">How to get started with Rust for RISC-V Linux</a></li>
<li><a href="https://github.com/RustMagazine/rust_magazine_2021/blob/main/src/chapter_11/rust-reading-club-part1.md">[ZH] Rust Reading Club Part 1</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=HNnbIW2Kzbc">Rust Web Development - Warp Introduction (by example)</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=zcfixnuJFXg">Getting started with opencv on Rust</a></li>
<li>[series] [video] <a href="https://www.youtube.com/watch?v=4MKcqR9z8AU">Getting started with Rust 🦀 2021: 8. Building a web app with Rust</a></li>
<li>[series] [video] <a href="https://www.youtube.com/watch?v=nyQLenFK4Xc">Writing a Programming Language (in Rust) 7: Function calls (Part 3)</a></li>
</ul>
<h3 id="miscellaneous">Miscellaneous</h3>
<ul>
<li><a href="https://www.theverge.com/2021/11/16/22784996/1password-version-8-windows-release-download-features">1Password 8 arrives on Windows with a new design and big performance improvements</a></li>
<li>[audio] <a href="https://dayzerosec.com/podcast/rust-in-the-web-a-special-guest-and-some-bad-crypto.html">Day0 Podcast - Rust in the Web? A Special Guest and some Bad Crypto</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/starship/starship">starship</a>, a fast featureful customizable UNIX terminal prompt.</p>
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/984">matchai</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>
<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>273 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2021-11-08..2021-11-15">merged in the last week</a></p>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/87264">proc_macro: add an expand_expr method to TokenStream</a> (literals only for now)</li>
<li><a href="https://github.com/rust-lang/rust/pull/89561">type inference for inline consts</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89316">add support for specifying multiple clobber_abi in <code>asm!</code></a></li>
<li><a href="https://github.com/rust-lang/llvm-project/pull/118">LLVM: fix nondeterminism in debuginfo generation</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/87337">don't abort compilation after giving a lint error</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/89550">do not emit overlap errors for impls failing the orphan check</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/90645">implement diagnostic for <code>String</code> conversion</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88670">miri: detect uninitialized integers and floats</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/90041">re-enable <code>copy</code>(<code>_nonoverlapping</code>) debug-checks</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/90755">specialize array cloning for <code>Copy</code> types</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/86041">replace <code>Copy</code>/<code>Clone</code> compiler magic on arrays with library impls</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88282">optimize <code>BinaryHeap::extend</code> from <code>Vec</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/90596">optimize <code>Eq</code> and <code>Hash</code> for <code>Path</code>/<code>PathBuf</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/90746">optimize pattern matching</a></li>
<li><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><a href="https://github.com/rust-lang/rust/pull/90473">stabilize format args capture</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/90644">extend the const swap feature</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/90485">don't destructure args tuple in <code>format_args!</code></a></li>
<li><a href="https://github.com/rust-lang/portable-simd/pull/159">portable-simd: use new bitmask intrinsics with byte arrays</a></li>
<li><a href="https://github.com/rust-lang/portable-simd/pull/177">portable-simd: add <code>Simd::from_slice</code></a></li>
<li><a href="https://github.com/rust-lang/portable-simd/pull/181">portable-simd: rotate_{left,right} -&gt; rotate_lanes_{left,right}</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7813">clippy: add Clippy version to Clippy's lint list</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7944">clippy: add minimum supported Rust version to <code>deprecated_cfg_attr</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7950">clippy: fix <code>explicit_counter_loop</code> suggestion for non-<code>usize</code> types</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7955">clippy: fix <code>semicolon_if_nothing_returned</code> FP on <code>let-else</code> stmts</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7949">clippy: fix suggestion for deref expressions in <code>redundant_pattern_matching</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7948">clippy: lint for bool to integer casts in <code>cast_lossless</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7957">clippy: make <code>let_underscore_lock</code> also detect <code>parking_lot</code> locks</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7643">clippy: new lint <code>index_refutable_slice</code> to avoid slice indexing</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7877">clippy: <code>swap</code> lints now check if there is <code>no_std</code> or <code>no_core</code> attribute</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7974">clippy: <code>option_if_let_else</code>: don't expand macros in suggestion</a></li>
<li><a href="https://github.com/rust-lang/rustup/pull/2898">rustup: optimization: parse manifest only once</a></li>
</ul>
<h3 id="rust-compiler-performance-triage">Rust Compiler Performance Triage</h3>
<p>A large amount of noise in the comparisons this week, likely due to new
probabilistic query hash verification increasing likelihood of changes in each
benchmark; solutions are being tracked in <a href="https://github.com/rust-lang/rustc-perf/issues/1105">rustc-perf#1105</a>.</p>
<p>Otherwise, though, the week largely amounted to a neutral one for performance.
There were some regressions, particularly in doc builds, as a result of the
addition of portable SIMD. These are relatively speaking minor and primarily
impact small crates.</p>
<p>Triage done by <strong>@simulacrum</strong>.
Revision range: <a href="https://perf.rust-lang.org/?start=eee8b9c7bafade55981d155dae71657f1cc55a22&amp;end=934624fe5f66ce3fb8abf0597a6deb079783335f&amp;absolute=false&amp;stat=instructions%3Au">eee8b9c7..934624f</a></p>
<p>5 Regressions, 2 Improvements, 6 Mixed; 2 of them in rollups</p>
<p>41 comparisons made in total</p>
<p><a href="https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-11-16.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>
<ul>
<li><em>No RFCs were approved this week.</em></li>
</ul>
<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/3173">Add RFC float-next-up-down.</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/issues/63567"><code>#![feature(maybe_uninit_extra,const_maybe_uninit_write)]</code></a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/84223">Tracking Issue for const-initialized thread locals</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/81106">Tracking Issue for NonZeroUn::is_power_of_two (feature nonzero_is_power_of_two)</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/63567">Tracking issue for <code>#![feature(maybe_uninit_extra,const_maybe_uninit_write)]</code></a></li>
</ul>
<h3 id="new-rfcs"><a href="https://github.com/rust-lang/rfcs/pulls">New RFCs</a></h3>
<ul>
<li><a href="https://github.com/rust-lang/rfcs/pull/3196">Add std::inputln()</a></li>
<li><a href="https://github.com/rust-lang/rfcs/pull/3193">return position impl trait in traits</a></li>
</ul>
<h2 id="upcoming-events">Upcoming Events</h2>
<p>Rusty Events between 11/17-12/01 🦀</p>
<h3 id="online">Online</h3>
<ul>
<li><a href="https://www.meetup.com/Vancouver-Rust/events/zkqvjsyccpbwb/">November 17, 2021, Vancouver, BC, CA - Borrowing and Lifetimes through Metaphors - Vancouver Rust</a></li>
<li><a href="https://www.meetup.com/houston-functional-programming-users-group/events/281526282">November 17, 2021, Houston, TX, US - A Functional Introduction to Rust - Houston Functional Programming User Group</a></li>
<li><a href="https://www.meetup.com/Rust-Los-Angeles/events/281944639">November 17, 2021, Los Angeles, CA, US - Live Coding Session: Mob Programming a Rust Code Kata - Rust Los Angeles</a></li>
<li><a href="https://rust-meetup.ir/2021/11/19/second-meetup.html">November 19, 2021, IR - The Second Rust Iran online meetup - Rust Iran Meetup</a></li>
<li><a href="https://rustfest.global/">November 20, 2021, RustFest Global 2021: Rust In Arts Edition - RustFest</a></li>
<li><a href="https://berline.rs/">November 23, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs</a></li>
<li><a href="https://www.meetup.com/Dallas-Rust/events/jqxqwryccpbnc/">November 30, 2021, Dallas, TX, US - Last Tuesday - Dallas Rust</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><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>If a normal add is <a href="https://en.wikipedia.org/wiki/Waffle_iron">a waffle iron </a>, SIMD add is a
double or quadruple waffle iron. You can make 2 or 4 or more waffles at the same time.</p>
<p>In case of waffles it would be called SIMW: <strong>S</strong> ingle <strong>I</strong> ron, <strong>M</strong> ultiple <strong>W</strong> affles.</p>
<p>It's not multithreading - because you open and close the waffle iron for all the waffles at the
same time.</p>
</blockquote>
<p> <a href="https://www.reddit.com/r/rust/comments/qucind/stdsimd_is_now_available_on_nightly/hkpy4y4/">/u/EarthyFeet on /r/rust</a></p>
<p>Editors note: Do yourself a favor, click the link and read the whole thread, it's pure gold (<em>chef's kiss</em>).</p>
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1137">Stephan Sokolow</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>, <a href="https://github.com/cdmistman">cdmistman</a>, <a href="https://github.com/ericseppanen">ericseppanen</a>, <a href="https://github.com/extrawurst">extrawurst</a>, <a href="https://github.com/andrewpollack">andrewpollack</a>, <a href="https://github.com/U007D">U007D</a>, <a href="https://github.com/kolharsam">kolharsam</a>, <a href="https://github.com/joelmarcey">joelmarcey</a>, <a href="https://github.com/marriannegoldin">marriannegoldin</a>.</em></p>
<p><em>Email list hosting is sponsored by <a href="https://foundation.rust-lang.org/">The Rust Foundation</a></em></p>
<p><small><a href="https://www.reddit.com/r/rust/comments/qwgmge/this_week_in_rust_417/">Discuss on r/rust</a></small></p>