201 lines
19 KiB
Plaintext
201 lines
19 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="foundation">Foundation</h3>
|
||
<ul>
|
||
<li><a href="https://foundation.rust-lang.org/posts/2021-11-04-rust-foundation-ama-launch/">Launching the Rust Foundation Quarterly AMAs: Join the Conversation</a></li>
|
||
</ul>
|
||
<h3 id="projecttooling-updates">Project/Tooling Updates</h3>
|
||
<ul>
|
||
<li><a href="https://sixtyfps.io/thisweek/2021-11-08.html">SixtyFPS (GUI crate): Changelog for 7th of November 2021</a></li>
|
||
<li><a href="https://rust-analyzer.github.io/thisweek/2021/11/08/changelog-102.html">Rust Analyzer Changelog #102</a></li>
|
||
<li><a href="https://intellij-rust.github.io/2021/11/08/changelog-159.html">Intellij Rust Changelog #159</a></li>
|
||
<li><a href="https://www.fluvio.io/news/this-week-in-fluvio-0012/">This week in Fluvio #12: the programmable streaming platform</a></li>
|
||
<li><a href="https://datafuselabs.github.io/weekly/2021-11-10-databend-weekly/">This week in Databend #15: an elastic and reliable cloud warehouse</a></li>
|
||
<li><a href="https://ferrous-systems.com/blog/defmt-3/">Knurling toolset v0.3.0 has been released!</a></li>
|
||
</ul>
|
||
<h3 id="newsletter">Newsletter</h3>
|
||
<ul>
|
||
<li><a href="https://rust-osdev.com/this-month/2021-10/">This Month in Rust OSDev (October 2021)</a></li>
|
||
<li><a href="https://gamedev.rs/news/027/">This Month in Rust GameDev #27</a></li>
|
||
</ul>
|
||
<h3 id="observationsthoughts">Observations/Thoughts</h3>
|
||
<ul>
|
||
<li><a href="https://kerkour.com/rust-symmetric-encryption-aead-benchmark/">Benchmarking symmetric encryption (AEAD) in Rust</a></li>
|
||
<li><a href="https://smallcultfollowing.com/babysteps//blog/2021/11/05/view-types/">View types for Rust</a></li>
|
||
<li><a href="https://paulmck.livejournal.com/66175.html">What Memory Model Should the Rust Language Use?</a></li>
|
||
<li><a href="https://www.thecodedmessage.com/posts/cpp-move/">C++ Move Semantics Considered Harmful (Rust is better)</a></li>
|
||
<li><a href="https://nora.codes/post/its-time-to-get-hyped-about-const-generics-in-rust/">It's Time to Get Hyped About Const Generics in Rust</a></li>
|
||
<li><a href="https://simplabs.com/blog/2021/11/09/automating-ember-learning-releases-with-rust/">Automating Ember releases with Rust</a></li>
|
||
<li><a href="https://pci.github.io/blog/2021/10/advent-of-code-rust-wasm-and-js/">Breakout: optimizing rust+WASM</a></li>
|
||
<li><a href="https://hub.qovery.com/guides/engineering/how_we_extended_helm_lifecycle_with_rust/">How we extended Helm lifecycle with Rust</a></li>
|
||
</ul>
|
||
<h3 id="rust-walkthroughs">Rust Walkthroughs</h3>
|
||
<ul>
|
||
<li><a href="https://hands-on-rust.com/2021/11/06/run-your-rust-games-in-a-browser-hands-on-rust-bonus-content/">Run Your Rust Games in a Browser: Hands-on Rust Bonus Content</a></li>
|
||
<li><a href="https://devtails.medium.com/building-my-first-command-line-interface-cli-with-rust-b6beb9c284e0">Building My First Command Line Interface (CLI) with Rust</a></li>
|
||
<li><a href="https://www.rotoclone.zone/blog/posts/webserver">Making My Website Part 2: The Webserver</a></li>
|
||
<li><a href="https://blog.erebe.dev/blog/debug-rust-aplication-inside-container/index.html">Debugging Rust application inside linux container</a></li>
|
||
<li><a href="https://nullderef.com/blog/plugin-abi-stable/">Plugins in Rust: Reducing the Pain with Dependencies</a></li>
|
||
<li><a href="https://blog.jonaylor.xyz/discover-hidden-secrets-in-git-repos-with-rust">Discover Hidden Secrets in Git Repos with Rust</a></li>
|
||
<li><a href="https://dev.to/deciduously/prepare-your-rust-api-docs-for-github-pages-2n5i">Prepare your Rust API docs for Github Pages</a></li>
|
||
<li><a href="https://dev.to/ayush1325/using-ki18n-with-rust-and-qml-ja7">Using KI18n with Rust and Qml</a></li>
|
||
<li><a href="https://dev.to/arunanshub/self-referential-structs-in-rust-33cm">Self Referential Structs in Rust</a></li>
|
||
<li>[series] [video] <a href="https://youtu.be/mBi_FsPKd9w">Rust Book Club #5: Structs!</a></li>
|
||
<li>[video] <a href="https://youtu.be/rzZt0fEzUXQ">Rust Programming - Full 59-Second Course for Beginners</a></li>
|
||
<li>[video] <a href="https://youtu.be/sNyEgAGkDN8">Causing problems with Rust traits (then fixing them)</a></li>
|
||
<li>[audio] <a href="https://rustacean-station.org/episode/045-sean-arthur/">Hyper with Sean McArthur</a></li>
|
||
<li>[series][video] <a href="https://www.youtube.com/watch?v=Qm1IM8SEvi8">Writing a Programming Language (in Rust) 6: Function calls (Part 2)</a></li>
|
||
<li>[series][video] <a href="https://www.youtube.com/watch?v=sLmervrw8Ow">Writing a Programming Language (in Rust) Extra 6.1: Fixing Environment Lookups</a></li>
|
||
</ul>
|
||
<h3 id="miscellaneous">Miscellaneous</h3>
|
||
<ul>
|
||
<li><a href="https://ihatereality.space/04-what-mutref-to-slice-ref-means/">What does <code>&mut &[T]</code> mean?</a></li>
|
||
<li><a href="https://blog.trailofbits.com/2021/11/09/write-rust-lints-without-forking-clippy/">Write Rust lints without forking Clippy</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/zesterer/chumsky">chumsky</a>, a friendly parser combinator crate.</p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/981">Jan Riemer</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>
|
||
<ul>
|
||
<li><a href="https://github.com/ockam-network/ockam/issues/2194">ockam - Renumber WebSocket transport type from 2 to 3</a></li>
|
||
<li><a href="https://github.com/ockam-network/ockam/issues/2051">ockam - Use Zeroize for temporary sensitive data</a></li>
|
||
</ul>
|
||
<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>296 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2021-11-01..2021-11-08">merged in the last week</a></p>
|
||
<ul>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88368">improve error when an <code>.rlib</code> can't be parsed</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89970">implementation of GATs outlives lint</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90179">add beginner friendly lifetime elision hint to E0623</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90439">add <code>JoinHandle::is_running</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90507">suggest <code>extern crate alloc</code> when using undeclared module <code>alloc</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90627">suggest dereference of <code>Box</code> when inner type is expected</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90417">stabilize <code>relaxed_struct_unsize</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90559">optimize bidi character detection.</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/87467">implement <code>RefUnwindSafe</code> for <code>Rc<T></code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89310">make <code>std::thread::available_concurrency</code> support process-limited number of CPUs</a></li>
|
||
<li><a href="https://github.com/rust-lang/hashbrown/pull/298">hashbrown: implement From\<array> on HashSet and HashMap</a></li>
|
||
<li><a href="https://github.com/rust-lang/cargo/pull/10048">cargo: fix debug panic on download with redirect body.</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7917">clippy: add <code>cargo dev lint</code> to manually run clippy on a file</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7904">clippy: add suggestion to missing backticks error</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7916">clippy: advise to put a <code>::</code> prefix inside the ticks</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7906">clippy: fix panics while parsing format string that uses named arg twice</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7945">clippy: fix ICE in <code>undocumented_unsafe_blocks</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7909">clippy: fix false negative in <code>match_overlapping_arms</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7851">clippy: fix <code>manual_assert</code> and <code>match_wild_err_arm</code> for <code>#![no_std]</code> and Rust 2021</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7907">clippy: move <code>non_ascii_literal</code> to restriction</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7901">clippy: prevent <code>clippy::needless_lifetimes</code> false positive in async function definition</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7726">clippy: unseparated literal suffix</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7918">clippy: use .cargo/config.toml instead of .cargo/config</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7819">clippy: avoid linting <code>possible_truncation</code> on bit-reducing operations</a></li>
|
||
<li><a href="https://github.com/rust-lang/rustfmt/pull/5060">rustfmt: put empty trait braces on same line if possible</a></li>
|
||
<li><a href="https://github.com/rust-lang/rustfmt/pull/5068">rustfmt: dedupe and simplify type alias formatting</a></li>
|
||
<li><a href="https://github.com/rust-lang/rustfmt/pull/5069">rustfmt: dedupe associated item visitation</a></li>
|
||
<li><a href="https://github.com/rust-lang/rustfmt/pull/5064">rustfmt: handle external mods imported via external → inline load hierarchy</a></li>
|
||
</ul>
|
||
<h3 id="rust-compiler-performance-triage">Rust Compiler Performance Triage</h3>
|
||
<p>Largely a positive week despite taking a significant performance hit from turning on incremental compilation verification for a subsection of the total queries that the compiler does in order to more quickly catch bugs in incremental compilation. Luckily optimizations in bidi detection brought large performance improvements.</p>
|
||
<p>Triage done by <strong>@rylev</strong>.
|
||
Revision range: <a href="https://perf.rust-lang.org/?start=6384dca100f3cedfa031a9204586f94f8612eae5&end=eee8b9c7bafade55981d155dae71657f1cc55a22&absolute=false&stat=instructions%3Au">6384dc..eee8b</a></p>
|
||
<p>2 Regressions, 4 Improvements, 4 Mixed; 1 of them in rollups
|
||
45 comparisons made in total</p>
|
||
<p><a href="https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-11-09.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/3180">Cargo --crate-type CLI Argument</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rfcs/pull/3185">Static async fn in traits</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/pull/90473">stabilize format args capture</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/90128">Stabilize -Z symbol-mangling-version=v0 as -C symbol-mangling-version=v0</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/90058">Stabilize -Z strip as -C strip</a></li>
|
||
</ul>
|
||
<h3 id="new-rfcs">New RFCs</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/rust-lang/rfcs/pull/3192">Add provide_any module to core</a></li>
|
||
</ul>
|
||
<h2 id="upcoming-events">Upcoming Events</h2>
|
||
<p>Rusty Events between 11/10-11/24 🦀</p>
|
||
<h3 id="online">Online</h3>
|
||
<ul>
|
||
<li><a href="https://www.meetup.com/boulder-elixir-rust/events/281765483">November 10, 2021, Boulder, CO, US - Monthly Meetup - Boulder Elixir and Rust</a></li>
|
||
<li><a href="https://discord.gg/9Xj8H2EXTD">November 10, 2021, Malaysia - Rust Meetup - Rust Malaysia</a></li>
|
||
<li><a href="https://www.meetup.com/Rust-Los-Angeles/events/281944639/">November 10, 2021, Los Angeles, CA, US - Rust Los Angeles: Live Coding Session - Mob Programming a Rust Code Kata</a></li>
|
||
<li><a href="https://linuxfoundation.org/webinars/rust-for-linux-writing-abstractions-and-drivers/">November 11, 2021 - Rust For Linux: Writing Safe Abstractions & Drivers - The Linux Foundation</a></li>
|
||
<li><a href="https://zoom.us/webinar/register/WN_BNOwcv_TS7aMpGNGEaTgEQ">November 16, 2021 - The Rust Foundation Ask Me Anything (AMA) - Rust Foundation</a></li>
|
||
<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://berline.rs/">November 23, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs</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>
|
||
<li><a href="https://www.meetup.com/Desert-Rustaceans/events/281729697">November 10, 2021, Mesa, AZ, US - Booze.rs - Desert Rust</a></li>
|
||
</ul>
|
||
<h3 id="europe">Europe</h3>
|
||
<ul>
|
||
<li><a href="https://www.meetup.com/belgrade-rust-meetup-group/events/281523208/">November 11, 2021, Belgrade, RS - First! - Belgrade Rust Meetup Group</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>CoScreen</strong></p>
|
||
<ul>
|
||
<li><a href="https://jobs.lever.co/unusual/59a25c98-5d46-4ce5-8376-758e239bb356">Senior Desktop Application Developer (C++/Rust) (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>Polar Sync</strong></p>
|
||
<ul>
|
||
<li><a href="https://polarsync.breezy.hr/p/0c1d3630d39d">Principal/Senior Software Engineer - Rust/C++ (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>Tangram</strong></p>
|
||
<ul>
|
||
<li><a href="https://www.tangram.dev/jobs">Senior Rust Developer</a></li>
|
||
</ul>
|
||
<p><strong>Toposware</strong></p>
|
||
<ul>
|
||
<li><a href="https://toposware.bamboohr.com/jobs/view.php?id=23&source=toposware">Distributed Systems Engineer (Blockchain) (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 Rust Engineer - Banking (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>
|
||
<blockquote>
|
||
<p>And even if you could fix all of rustc's soundness holes, or otherwise prevent user code from
|
||
exploiting them, a soundness bug in any third-party library can also make it possible for
|
||
malicious crates to trigger arbitrary behavior from safe code.</p>
|
||
<p>[...]</p>
|
||
<p>This is why we need to emphasize that while Rust's static analyses are very good at limiting
|
||
accidental vulnerabilties in non-malicious code, they are not a sandbox system that can place
|
||
meaningful limits on malicious code.</p>
|
||
</blockquote>
|
||
<p>– <a href="https://users.rust-lang.org/t/regarding-the-security-safety-of-libraries-on-crates-io/66294/24">Matt Brubeck on rust-users</a></p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1132">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>, <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/qras8f/this_week_in_rust_416/">Discuss on r/rust</a></small></p> |