179 lines
18 KiB
Plaintext
179 lines
18 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/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 & 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} -> 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&end=934624fe5f66ce3fb8abf0597a6deb079783335f&absolute=false&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 & 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> |