182 lines
18 KiB
Plaintext
182 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>Updates from Rust Community</h2>
|
||
<h3>Project/Tooling Updates</h3>
|
||
<ul>
|
||
<li><a href="https://www.utam0k.jp/en/blog/2021/12/27/youki_first_release/">Hello, youki! (low-level container runtime written in Rust)</a></li>
|
||
<li><a href="https://www.nushell.sh/blog/2021-12-28-nushell_0_42.html">Nushell 0.42</a></li>
|
||
<li><a href="https://gfx-rs.github.io/2021/12/25/this-year.html">This Year in Wgpu - 2021</a></li>
|
||
<li><a href="https://sixtyfps.io/blog/2021-in-review.html">SixtyFPS (GUI crate): 2021 in Review</a></li>
|
||
<li><a href="https://community.khonsulabs.com/t/bonsaidb-december-update-finishing-up-alpha-1/88">BonsaiDb December Update: Finishing up alpha 1</a></li>
|
||
<li><a href="https://napi.rs/blog/announce-v2">NAPI-RS 2.0 released</a></li>
|
||
<li><a href="https://blog.rust-embedded.org/this-year-in-embedded-rust-2021/">This Year in Embedded Rust: 2021 Edition</a></li>
|
||
<li><a href="https://rust-analyzer.github.io/thisweek/2021/12/27/changelog-109.html">Rust Analyzer Changelog #108</a></li>
|
||
<li><a href="https://github.com/Byron/gitoxide/discussions/285">End of year 2021: 20 months of Gitoxide</a></li>
|
||
<li><a href="https://weekly.databend.rs/2021-12-29-databend-weekly/">This week in Databend #22: an elastic and reliable cloud warehouse</a></li>
|
||
</ul>
|
||
<h3>Research</h3>
|
||
<ul>
|
||
<li><a href="https://arxiv.org/abs/2112.12693">Deadlock-free asynchronous message reordering in Rust with multiparty session types</a></li>
|
||
</ul>
|
||
<h3>Observations/Thoughts</h3>
|
||
<ul>
|
||
<li><a href="https://jam1.re/blog/thoughts-on-contexts-and-capabilities-in-rust">Thoughts on Context and Capabilities in Rust</a></li>
|
||
<li><a href="https://chrisdone.com/posts/rust/">My negative views on Rust</a></li>
|
||
<li><a href="https://garrellco.com/?p=1">Learning Rust – Why now?</a></li>
|
||
<li>[audio] <a href="https://rustacean-station.org/episode/050-rust-1.56-1.57/">What's New in Rust 1.56 and 1.57</a></li>
|
||
<li>[audio] <a href="https://rustacean-station.org/episode/051-brenden-matthews/">Code Like a Pro in Rust with Brenden Matthews</a></li>
|
||
</ul>
|
||
<h3>Rust Walkthroughs</h3>
|
||
<ul>
|
||
<li><a href="https://caiiiycuk.medium.com/vange-rs-webassembly-in-rust-498e2f960a04">Vange-rs: WebAssembly in Rust</a></li>
|
||
<li><a href="https://notes.eatonphil.com/lua-in-rust.html">Writing a minimal Lua implementation with a virtual machine from scratch in Rust</a></li>
|
||
<li><a href="https://robamu.github.io/post/rust-ecosystem/">Bringing Rust to Space - Setting up a Rust ecosystem for the VA108XX MCU family</a></li>
|
||
<li><a href="https://engineering.avast.io/scala-and-rust-interoperability-via-jni/">Scala and Rust interoperability via JNI</a></li>
|
||
<li><a href="https://mateusfreira.github.io/@mateusfreira-writing-a-prometheus-exporter-in-rust-from-idea-to-grafana-chart/">Writing a prometheus exporter in rust from idea to grafana chart</a></li>
|
||
<li><a href="https://haibane-tenshi.github.io/rust-contexts/">Futuristic Rust: context emulation</a></li>
|
||
<li><a href="https://alexliesenfeld.com/mocking-http-services-in-rust">Mocking HTTP Services in Rust</a></li>
|
||
<li><a href="https://www.bexxmodd.com/log/llvm-infrastrucutre-and-rust/7">LLVM Infrastructure and Rust</a></li>
|
||
<li><a href="https://dev.to/sbelzile/making-games-in-rust-part-6-generating-a-map-4aic">Making Games in Rust - Part 6 - Generating a Map</a></li>
|
||
<li><a href="https://blog.turbo.fish/proc-macro-parsing/">Procedural Macros: Parsing custom syntax</a></li>
|
||
<li><a href="https://towardsdatascience.com/a-data-pipeline-for-go-trains-delay-analysis-ml-in-action-with-rust-b294e80eede9">A Data Pipeline for Go Trains Delay Analysis — ML in Action with Rust</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/playlist?list=PLBNbqulT6FWw9C39_WIT_dcCIj1AdxiAy">Tetris in Rust from scratch</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=969j0qnJGi8">Rust Modules - Explained Like I'm 5</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=zHpDGeJU7no">I'm learning Rust - Enums, patterns, and traits</a></li>
|
||
<li>[FR] [video] <a href="https://www.youtube.com/watch?v=jnLbY7RIH54&list=PLuNjeTqaNojpuaqVboF1vmCRbn1an6sXg&index=5">Parlons peu, parlons Rust!</a></li>
|
||
<li>[ZH] <a href="https://zhuanlan.zhihu.com/p/451184900">Rust性能评估与调优实践</a></li>
|
||
</ul>
|
||
<h2>Crate of the Week</h2>
|
||
<p>This week's crate is <a href="https://github.com/ajeetdsouza/zoxide">zoxide</a>, a smarter <code>cd</code> command.</p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/993">Ajeet D'Souza</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>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>Updates from the Rust Project</h2>
|
||
<p>188 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2021-12-20..2021-12-27">merged in the last week</a></p>
|
||
<ul>
|
||
<li><a href="https://github.com/rust-lang/miri/pull/1945">miri: provide slightly better notes when tracking a pointer tag</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/92110">backport LLVM changes to disable deferred inlining</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91544">fix duplicate derive clone suggestion</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/92139">perf: change <code>Backtrace::enabled</code> atomic from <code>SeqCst</code> to <code>Relaxed</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91844">perf: eliminate <code>ObligationCauseData</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/92149">fix bad caching of <code>~const Drop</code> bounds</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/92226">constify <code>core::intrinsics::black_box</code> and <code>core::hint::black_box</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91823">make <code>PTR::as_ref</code> and similar methods <code>const</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/92220">RawVec: don't recompute capacity after allocating</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88858">allow reverse iteration of lowercase'd/uppercase'd chars</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90345">stabilise <code>entry_insert</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91770">suggest adding <code>#[cfg(test)]</code> to a test module</a></li>
|
||
<li><a href="https://github.com/rust-lang/cargo/pull/10224">cargo: make levenshtein distance case insensitive.</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/8144">clippy: add suggestion for <code>neg_multiply</code> lint</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/8133">clippy: fix <code>iter_skip_next</code> false positives</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/8163">clippy: improve <code>unwrap_or_else_default</code> when handling <code>unwrap_or_else(XXX::new)</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/8165">clippy: fix <code>shadow_reuse</code> false negative for if let bindings</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/8167">clippy: fix an ICE on unwrapping a None</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/8170">clippy: new lint: <code>init-numbered-fields</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rustfmt/pull/5150">rustfmt: fix static async closure qualifier order</a></li>
|
||
<li><a href="https://github.com/rust-lang/rustfmt/pull/5152">rustfmt: retain qualified path when rewriting struct literal expressions</a></li>
|
||
</ul>
|
||
<h3>Rust Compiler Performance Triage</h3>
|
||
<p>Relatively quiet week, mostly rustdoc improvements.</p>
|
||
<p>Triage done by <strong>@simulacrum</strong>.
|
||
Revision range: <a href="https://perf.rust-lang.org/?start=3d57c61a9e04dcd3df633f41142009d6dcad4399&end=e91ad5fc62bdee4a29c18baa5fad2ca42fc91bf4&absolute=false&stat=instructions%3Au">3d57c61a..e91ad5fc62</a></p>
|
||
<p>2 Regressions, 1 Improvements, 6 Mixed; 0 of them in rollups</p>
|
||
<p>26 comparisons made in total</p>
|
||
<p><a href="https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-12-28.md">Full report here</a></p>
|
||
<h3><a href="https://github.com/rust-lang/rfcs/commits/master">Approved RFCs</a></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><a href="https://github.com/rust-lang/rfcs/pull/3208">Amend RFC 2996 to replace <code>Stream</code> with <code>AsyncIterator</code></a></li>
|
||
</ul>
|
||
<h3>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>
|
||
<h4><a href="https://github.com/rust-lang/rfcs/labels/final-comment-period">RFCs</a></h4>
|
||
<ul>
|
||
<li><em>No new RFCs entered Final Comment Period this week.</em></li>
|
||
</ul>
|
||
<h4><a href="https://github.com/rust-lang/rust/issues?q=is%3Aopen+label%3Afinal-comment-period+sort%3Aupdated-desc">Tracking Issues & PRs</a></h4>
|
||
<ul>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/84083">Clarify the guarantees that ThreadId does and doesn't make.</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/92034">Remove effect of <code>#[no_link]</code> attribute on name resolution</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/87096">Tracking Issue for Stdin::lines, Stdin::split forwarder methods</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/63168">Tracking issue for Result::cloned, Result::cloned_err, Result::copied, Result::copied_err</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/91593">Remove unnecessary bounds for some Hash{Map,Set} methods</a></li>
|
||
</ul>
|
||
<h3><a href="https://github.com/rust-lang/rfcs/pulls">New RFCs</a></h3>
|
||
<ul>
|
||
<li><em>No new RFCs were published this week.</em></li>
|
||
</ul>
|
||
<h2>Upcoming Events</h2>
|
||
<p>Rusty Events between 12/29/2021 - 1/31/2022 🦀</p>
|
||
<h3>Online</h3>
|
||
<ul>
|
||
<li><a href="https://www.meetup.com/indyrs/events/qwtdjsydccbhb/">January 5, 2022 | Indianapolis, IN, US | <strong>Indy.rs - with Social Distancing</strong> | Indy Rust</a></li>
|
||
<li><a href="https://www.meetup.com/rust-and-c-plus-plus-in-cardiff/events/282667031/">January 6, 2022 | Cardiff, UK | <strong>Rust Book Study Session - Automated Tests & Building a Command Line Program</strong> | Rust and C++ Cardiff</a></li>
|
||
<li><a href="https://www.meetup.com/rust-noris/events/282344613/">January 6, 2022 | Nürnberg, DE | <strong>Rust Nürnberg online #8</strong>| Rust Nuremberg</a></li>
|
||
<li><a href="https://www.google.com/calendar/embed?src=apd9vmbc22egenmtu5l6c5jbfc%40group.calendar.google.com">January 8, 2022 | Various cities | <strong>Rust GameDev Monthly Meetup</strong> | Rust GameDev</a></li>
|
||
<li><a href="https://www.meetup.com/Dallas-Rust/events/vqtjcsydccbpb/">January 11, 2022 | Dallas, TX, US | <strong>Second Tuesday Meetup</strong>| Dallas Rust</a></li>
|
||
<li><a href="https://www.meetup.com/Seattle-Rust-Meetup/events/gskksrydccbpb/">January 11, 2022 | Seattle, WA, US | <strong>Monthly meetup</strong> | Seattle Rust Meetup</a></li>
|
||
<li><a href="https://www.meetup.com/boulder-elixir-rust/events/zvxcsrydccbqb/">January 12, 2022 | Boulder, CO, US | <strong>Monthly Meetup</strong> | Boulder Elixir and Rust</a></li>
|
||
<li><a href="https://www.meetup.com/Rust-Los-Angeles/events/282580016/">January 12, 2022 | Los Angeles, CA, US | <strong>Live Coding Session - Mob Programming a Rust Code Kata [Virtual] Jan. 2022</strong> | Rust Los Angeles</a></li>
|
||
<li><a href="https://www.meetup.com/Rust-Community-Stuttgart/events/gjrtqsydccbqb/">January 12, 2022 | Stuttgart, DE | <strong>Rust-Meetup</strong> | Rust Community Stuttgart</a></li>
|
||
<li><a href="https://www.meetup.com/pl-PL/Rust-Warsaw/events/282879405/">January 13, 2022 | Warsaw, PL | <strong>Rust Warsaw #4</strong> | Rust Warsaw</a></li>
|
||
<li><a href="https://www.meetup.com/RustDC/events/vdhxgsydccbxb/">January 18, 2022 | Washington, DC, US| <strong>Mid-month Rustful</strong> | Rust DC</a></li>
|
||
<li><a href="https://www.meetup.com/Vancouver-Rust/events/nwcmpsydccbzb">January 19, 2022 | Vancouver, BC, CA | <strong>Rust Study/Hack/Hang-out night</strong> |Vancouver Rust</a></li>
|
||
<li><a href="https://www.meetup.com/Dallas-Rust/events/jqxqwrydccbhc/">January 25, 2022 | Dallas, TX, US | <strong>Last Tuesday Meetup</strong> | Dallas Rust</a></li>
|
||
</ul>
|
||
<h3>North America</h3>
|
||
<ul>
|
||
<li><a href="https://www.meetup.com/rust-atx/events/282756864/">January 6, 2022 | Austin, TX, US | <strong>Rust Lunch</strong> | Rust ATX</a></li>
|
||
<li><a href="https://www.meetup.com/Rust-ATL/events/lhpkmsydccbqb/">January 12, 2022 | Atlanta, GA, US | <strong>Grab a beer with fellow Rustaceans</strong> | Rust Atlanta</a></li>
|
||
<li><a href="https://www.meetup.com/columbus-rs/events/dpkhgrydccbrb/">January 13, 2022 | Columbus, OH, US | <strong>Monthly Meeting</strong> | Columbus Rust Society</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>Rust Jobs</h1>
|
||
<p><strong>The Daily Edit</strong></p>
|
||
<ul>
|
||
<li><a href="https://github.com/dailyedit/jobs/blob/master/rust.md">Rust Developer (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>Spruce</strong></p>
|
||
<ul>
|
||
<li><a href="https://spruce-systems.breezy.hr/p/9fb3b149dc01-software-engineer-backend">Software Engineer, Backend (New York, NY, US or Remote)</a></li>
|
||
<li><a href="https://spruce-systems.breezy.hr/p/495dc657fb6e-engineering-manager">Engineering Manager (New York, NY, US or Remote)</a></li>
|
||
</ul>
|
||
<p><strong>Parity Technologies</strong></p>
|
||
<ul>
|
||
<li><a href="https://grnh.se/a5a5c0a33us">Rust Core Engineer - Solidity Compiler (Solang)</a></li>
|
||
<li><a href="https://grnh.se/dddd76283us">Core Runtime Engineer - Substrate</a></li>
|
||
<li><a href="https://www.parity.io/jobs">Multiple other Rust / Blockchain Engineering positions</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>Quote of the Week</h1>
|
||
<blockquote>
|
||
<p>One reason we keep certain things as hard errors rather than lints: it establishes a baseline
|
||
that you can safely assume about other people's code, since it can't be turned off. And as a
|
||
result, that baseline can become part of people's mental model of Rust itself, rather than
|
||
something that might or might not be true in any given codebase.</p>
|
||
<p>We have to take care to not use that lightly, because that places work on all users of Rust to
|
||
maintain code to that baseline. But there are cases where we do. We don't allow using one integer
|
||
type where another was expected. We don't allow certain operations outside an unsafe block. ...</p>
|
||
<p>I think the standard we should apply is asking whether something is part of the baseline that
|
||
people should be able to assume about all Rust code, and if that's worth the tradeoff of requiring
|
||
that baseline of all Rust users.</p>
|
||
</blockquote>
|
||
<p>– <a href="https://internals.rust-lang.org/t/lack-of-mut-in-bindings-as-a-deny-by-default-lint/15818/8">Josh Triplett on rust-internals</a></p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1153">Josh Triplett</a> for the self-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/mariannegoldin">mariannegoldin</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/rrh9fj/this_week_in_rust_423/">Discuss on r/rust</a></small></p> |