246 lines
26 KiB
Plaintext
246 lines
26 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://www.youtube.com/watch?v=Twb4u57kH5E">The Rust Foundation Ask Me Anything (AMA) - November 2021</a></li>
|
||
</ul>
|
||
<h3 id="projecttooling-updates">Project/Tooling Updates</h3>
|
||
<ul>
|
||
<li><a href="https://sixtyfps.io/thisweek/2021-11-22.html">SixtyFPS (GUI crate): Changelog for 21th of November 2021</a></li>
|
||
<li><a href="https://www.sea-ql.org/SeaORM/blog/2021-11-19-whats-new-in-0.4.0/">What's new in SeaORM 0.4.0</a></li>
|
||
<li><a href="https://www.fluvio.io/news/this-week-in-fluvio-0014/">This week in Fluvio #14: the programmable streaming platform</a></li>
|
||
<li><a href="https://rust-analyzer.github.io/thisweek/2021/11/22/changelog-104.html">Rust Analyzer Changelog #104</a></li>
|
||
<li><a href="https://intellij-rust.github.io/2021/11/22/changelog-160.html">IntelliJ Rust Changelog #160</a></li>
|
||
<li><a href="https://forum.torproject.net/t/arti-0-0-1-is-released-an-embeddable-tor-client-in-rust/281">Arti 0.0.1 is released: An embeddable Tor client in Rust</a></li>
|
||
<li><a href="https://weekly.databend.rs/2021-11-24-databend-weekly/">This week in Databend #17: an elastic and reliable cloud warehouse</a></li>
|
||
</ul>
|
||
<h3 id="observationsthoughts">Observations/Thoughts</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/rust-lang/team/pull/671">mod team resignation</a></li>
|
||
<li><a href="https://blainehansen.me/post/my-path-to-magma/">My Path to Magma: How I slowly became convinced we absolutely have to build a proof checker and bring formal verification to the mainstream.</a></li>
|
||
<li><a href="https://jeffa.io/rust_packages_vs_crates">Rust Packages vs Crates</a></li>
|
||
<li><a href="https://kflansburg.com/posts/merge-queues/">Merge Queues with Bors</a></li>
|
||
<li><a href="https://hurryabit.github.io/blog/stack-safety-for-free/">Stack-safety for free?</a></li>
|
||
<li><a href="https://blog.schichler.dev/intrusive-smart-pointers-heap-only-types-ckvzj2thw0caoz2s1gpmi1xm8">Intrusive Smart Pointers + Heap Only Types = 💞</a></li>
|
||
<li><a href="http://smallcultfollowing.com/babysteps/blog/2021/11/18/rustc-reading-club-take-2/">Rustc Reading Club, Take 2</a></li>
|
||
<li><a href="https://blog.sigplan.org/2021/11/18/undefined-behavior-deserves-a-better-reputation/">Undefined Behavior deserves a better reputation</a></li>
|
||
<li><a href="https://dev.to/logrocket/improving-overconstrained-rust-library-apis-47ok">Improving overconstrained Rust library APIs</a></li>
|
||
<li><a href="https://blog.scaleway.com/i-used-rust-for-the-first-time-to-bridge-two-softwares-heres-how-it-went/">I used Rust for the first time to bridge two softwares, here’s how it went</a></li>
|
||
<li><a href="https://rust-analyzer.github.io//blog/2021/11/21/ides-and-macros.html">IDEs and Macros</a></li>
|
||
<li><a href="https://briankung.dev/2021/11/20/contributing-to-artichoke-in-rust/">Contributing to Artichoke in Rust</a></li>
|
||
<li><a href="https://chillfish8.ghost.io/fuzzy-searching-5x-faster-with-symspell/">How lnx does fuzzy searching over 5x faster with SymSpell</a></li>
|
||
<li><a href="https://www.thecodedmessage.com/posts/endian_polymorphism/">Endianness, API Design, and Polymorphism in Rust</a></li>
|
||
<li><a href="https://blog.convex.dev/a-tale-of-three-codebases/">A Tale of Three Rust Codebases</a></li>
|
||
<li>[DE] <a href="https://www.heise.de/news/Die-Rust-Foundation-hat-eine-neue-Geschaeftsfuehrerin-6270875.html">Programmiersprachen: Die Rust Foundation hat eine neue Geschäftsführerin</a></li>
|
||
<li>[DE] <a href="https://www.heise.de/news/Rust-Moderatoren-der-Programmiersprache-treten-zurueck-6275049.html">Rust: Moderatoren der Programmiersprache treten zurück</a></li>
|
||
<li>[audio] <a href="https://rustacean-station.org/episode/047-jane-lusby/">Error Handling in Rust with Jane Lusby</a></li>
|
||
</ul>
|
||
<h3 id="rust-walkthroughs">Rust Walkthroughs</h3>
|
||
<ul>
|
||
<li><a href="https://youtu.be/PHa9rGuDzQI">I'm learning Rust - Ownership, lifetimes, and structs (video)</a></li>
|
||
<li><a href="https://saidvandeklundert.net/learn/2021-11-18-calling-rust-from-python-using-pyo3/">Calling Rust from Python using PyO3</a></li>
|
||
<li><a href="https://blog.schichler.dev/pinning-in-plain-english-ckwdq3pd0065zwks10raohh85">Pinning in plain English</a></li>
|
||
<li><a href="https://medium.com/perimeterx/lets-build-a-salesforce-commerce-cloud-products-search-component-with-ocapi-rust-and-yew-part-98d7b3774f2f">Let’s Build a Salesforce Commerce Cloud Product Search Component with OCAPI, Rust, and Yew — Part 1</a></li>
|
||
<li><a href="http://cmoran.xyz/writing/adventures_in_photogrammetry">Adventures in Drone Photogrammetry Using Rust and Machine Learning</a></li>
|
||
<li><a href="https://dev.to/igorpetruk/async-refactoring-and-fewer-bugs-rust-block-expressions-to-the-rescue-ef0">Async, refactoring and fewer bugs: Rust block expressions to the rescue</a></li>
|
||
<li><a href="https://21-lessons.com/how-to-instrument-a-rust-application-with-opentelemetry/">How to instrument a Rust application with OpenTelemetry</a></li>
|
||
<li>[series] <a href="https://dev.to/azure/rust-from-the-beginning-your-first-program-30cp">Rust from the beginning, your first program</a></li>
|
||
<li>[series] <a href="https://dev.to/deciduously/oops-i-did-it-againi-made-a-rust-web-api-and-it-was-not-that-difficult-3kk8">Oops, I Did It Again...I Made A Rust Web API And It Was Not That Difficult</a></li>
|
||
<li>[series] <a href="https://dev.to/smurawski/getting-started-with-hippo-a-webassembly-paas-part-1-5470">Getting Started with Hippo - a WebAssembly PaaS (Part 1)</a></li>
|
||
<li>[series] <a href="https://dev.to/smurawski/getting-started-with-hippo-a-webassembly-paas-part-2-2ilo">Getting Started with Hippo - a WebAssembly PaaS (Part 2)</a></li>
|
||
<li>[series] <a href="https://dev.to/smurawski/getting-started-with-hippo-a-webassembly-paas-part-3-1h76">Getting Started with Hippo - a WebAssembly PaaS (Part 3)</a></li>
|
||
<li>[video] <a href="https://youtu.be/Sfb0DKD8e9A">Using Rust with Elixir for code reuse and performance by Niklas Begley</a></li>
|
||
<li>[video] <a href="https://youtu.be/2VPSzb7RNtY">Rust Autocomplete and Debugging in VS Code</a></li>
|
||
<li>[video] <a href="https://youtu.be/AlsIhnrQO9A">Getting Started with WebAssembly (WASM) with Rust Lang</a></li>
|
||
<li>[video] <a href="https://youtu.be/YxzGp33K088">What's Special About Rust</a></li>
|
||
<li>[video] <a href="https://youtu.be/5ObNvCMIkPs">Web api benchmarking: NodeJS (Express) vs Rust (actix-web)</a></li>
|
||
<li>[video] <a href="https://youtu.be/Ejzi-56-nqc">Munich Rust Meetup Remote #9</a></li>
|
||
<li>[series] [video] <a href="https://youtu.be/U6Yg6-aW_Zg">LRG-16: Threads</a></li>
|
||
<li>[series] [video] <a href="https://www.youtube.com/watch?v=EPdilVGovxE">Writing a Programming Language (in Rust) 8: Function returns and list indexing</a></li>
|
||
</ul>
|
||
<h3 id="miscellaneous">Miscellaneous</h3>
|
||
<ul>
|
||
<li><a href="https://codecaptured.com/blog/i-made-a-star-wars-programming-language-called-the-force/">I Made a Star Wars Programming Language Called "The Force" in Rust!</a></li>
|
||
</ul>
|
||
<h2 id="crate-of-the-week">Crate of the Week</h2>
|
||
<p>This week's crate is <a href="https://crates.io/crates/rustc_codegen_nvvm">rustc_codegen_nvvm</a>, a rustc codegen backend that targets NVIDIA's libnvvm CUDA library.</p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/987">troiganto</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/rusty-celery/rusty-celery">rusty-celery is looking for contributors</a></li>
|
||
</ul>
|
||
<p><strong>Artichoke</strong></p>
|
||
<ul>
|
||
<li><a href="https://github.com/artichoke/artichoke/issues/1501">Implement <code>mezzaluna_feature_loader::LoadedFeatures::shrink_to</code></a></li>
|
||
<li><a href="https://github.com/artichoke/artichoke/issues/1503">Implement <code>artichoke_backend::module::Registry::shrink_to</code></a></li>
|
||
<li><a href="https://github.com/artichoke/artichoke/issues/1502">Implement <code>artichoke_backend::class::Registry::shrink_to</code></a></li>
|
||
</ul>
|
||
<p><strong>Ockam</strong></p>
|
||
<ul>
|
||
<li><a href="https://github.com/ockam-network/ockam/issues/2236">Fix handling of larger messages in ockam_node</a></li>
|
||
<li><a href="https://github.com/ockam-network/ockam/issues/2256">Replace TCP port 5000 in examples&guides</a></li>
|
||
<li><a href="https://github.com/ockam-network/ockam/issues/2249">Update to Rust 2021</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>284 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2021-11-15..2021-11-22">merged in the last week</a></p>
|
||
<ul>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90058">stabilize <code>-Z strip</code> as <code>-C strip</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90687">permit const panics in stable const contexts in stdlib</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90352">simplify <code>for</code> loop desugar</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89610">warn on <code>#[must_use]</code> use on async fn's</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90803">suggest <code>&str.chars()</code> on attempt to <code>&str.iter()</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91022">suggest <code>await</code> in more situations where infer types are involved</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90961">suggest removal of arguments for unit variant, not replacement</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90329">try all stable method candidates first before trying unstable ones</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89580">point at source of trait bound obligations in more places</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90861">print escaped string if char literal has multiple characters, but only one printable character</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90901">improve <code>ManuallyDrop</code> suggestion</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90667">improve diagnostics when a static lifetime is expected</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90575">improve suggestions for compatible variants on type mismatch</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90927">fix float ICE</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90933">fix await suggestion on non-future type</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90819">fix incorrect handling of <code>TraitRef</code>s when emitting suggestions</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90989">avoid suggesting literal formatting that turns into member access</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90845">address performance regression introduced by recent ADT drop requirements fix</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90996">optimize <code>impl Hash for ObligationCauseData</code> by not hashing <code>ObligationCauseCode</code> variant fields</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/91008">add IEEE 754-2019 minimun and maximum functions for <code>f32</code>/<code>f64</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89258">make char conversion functions unstably <code>const</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90607">make slice → <code>str</code> conversion and related functions <code>const</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90958">mark <code><*const _>::align_offset</code> and <code><*mut _>::align_offset</code> as <code>const fn</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89741">mark <code>Arc::from_inner</code> / <code>Rc::from_inner</code> as <code>unsafe</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/85766">stabilize <code>File::options</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90772">add <code>Vec::retain_mut</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88601">implement <code>Termination</code> for <code>Result<Infallible, E></code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90535">implement <code>clone_from</code> for <code>State</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/miri/pull/1918">miri: portable SIMD: basic binops</a></li>
|
||
<li><a href="https://github.com/rust-lang/stdarch/pull/1249">arch: work-around buggy Intel chips erroneously reporting BMI1/BMI2 support</a></li>
|
||
<li><a href="https://github.com/rust-lang/stdarch/pull/1256">arch: complete armv8 instructions</a></li>
|
||
<li><a href="https://github.com/rust-lang/log/pull/471">log: add <code>Log</code> implementation for <code>&impl Log</code> and <code>Arc<impl Log></code></a></li>
|
||
<li><a href="https://github.com/rust-lang/cargo/pull/10107">cargo: add <code>--message-format</code> for <code>install</code> command</a></li>
|
||
<li><a href="https://github.com/rust-lang/cargo/pull/10090">cargo: enhance error message for target auto-discovery</a></li>
|
||
<li><a href="https://github.com/rust-lang/cargo/pull/10082">cargo: warn when alias shadows external subcommand</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/8007">clippy: add new lint <code>octal_escapes</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/8009">clippy: allow <code>suboptimal_flops</code> in <code>const</code> functions</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/8011">clippy: avoid inline hints with double backticks for <code>doc-markdown</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7898">clippy: don't show <code>no_effect</code> warning on unit structs implementing <code>fn_once</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7988">clippy: fix ICE on <code>undocumented_unsafe_blocks</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7968">clippy: fix <code>manual_map</code> with unsafe functions</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7982">clippy: fix <code>needless_collect</code>'s tendency to suggest code requiring multiple mutable borrows of the same value.</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7896">clippy: fix behavior-changing <code>manual_split_once</code> suggestion and add new lint <code>needless_splitn</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7997">clippy: fix <code>shadow_same</code> false positives for async function arguments</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7977">clippy: improve <code>needless_borrow</code> lint</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7639">clippy: improve heuristic for eagerness suggestion</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7971">clippy: fix suggestion in <code>option_map_or_none</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rustfmt/pull/5091">rustfmt: preserve normalized comments after last list item</a></li>
|
||
</ul>
|
||
<h3 id="rust-compiler-performance-triage">Rust Compiler Performance Triage</h3>
|
||
<p>This week, there were a number of cases where the <code>incr-unchanged</code> variants of <code>inflate</code> went up or down by 5% to 6%; we believe these are instances of increased noise in benchmarks documented on <a href="https://github.com/rust-lang/rustc-perf/issues/1105">rustc-perf#1105</a>. I was tempted to remove these from the report, but its non-trivial to re-construct the report "as if" some benchmark were omitted.</p>
|
||
<p>Otherwise, there were some nice wins for performance. For example, PR <a href="https://github.com/rust-lang/rust/issues/90996">#90996</a> more than halved the time to document builds of <code>diesel</code> by revising how we hash <code>ObligationCauseData</code>. If anyone is interested, it might be good to follow-up on the effects of PR <a href="https://github.com/rust-lang/rust/issues/90352">#90352</a>, "Simplify <code>for</code> loop desugar", where we have hypothesized that the increased compilation time is due to more LLVM optimizations being applied.</p>
|
||
<p>Triage done by <strong>@pnkfelix</strong>.
|
||
Revision range: <a href="https://perf.rust-lang.org/?start=934624fe5f66ce3fb8abf0597a6deb079783335f&end=22c2d9ddbf356bcdb718e88ca6ee3665e1e42690&absolute=false&stat=instructions%3Au">934624fe..22c2d9dd</a></p>
|
||
<p>1 Regressions, 3 Improvements, 8 Mixed; 3 of them in rollups
|
||
34 comparisons made in total</p>
|
||
<p><a href="https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-11-23.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><a href="https://github.com/rust-lang/rfcs/pull/2972">Constrained Naked Functions</a></li>
|
||
<li><a href="https://github.com/rust-lang/rfcs/pull/3180">Cargo --crate-type CLI Argument</a></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><em>No RFCs entered final comment period this week.</em></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/90896">Stabilize some MaybeUninit behavior as const</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/90292">Document setgroups call caused by std::os::unix::process::CommandExt.uid</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/74479">Tracking Issue for #![feature(available_parallelism)]</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/72016">Tracking Issue for inline assembly (asm!)</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/71249">Tracking Issue for cargo report future-incompat</a></li>
|
||
</ul>
|
||
<h3 id="new-rfcs"><a href="https://github.com/rust-lang/rfcs/pulls">New RFCs</a></h3>
|
||
<ul>
|
||
<li>RFC Update: <a href="https://github.com/rust-lang/rfcs/pull/3197">Clarify that RFC1520 does not permit the compiler to replace calls to Clone::clone with a memcpy</a></li>
|
||
</ul>
|
||
<h2 id="upcoming-events">Upcoming Events</h2>
|
||
<p>Rusty Events between 11/24-12/08 🦀</p>
|
||
<h3 id="online">Online</h3>
|
||
<ul>
|
||
<li><a href="https://www.meetup.com/rust-and-c-plus-plus-in-cardiff/events/282025037">November 25, 2021 | Cardiff, WLS | <strong>Rust Book Study Session - Packages, Crates and Modules & Common Collections</strong> | Rust and C++ Cardiff</a></li>
|
||
<li><a href="https://www.meetup.com/rust-noris/events/281829098">November 25, 2021 | Nuremberg, DE | <strong>Rust Nürnberg online #7</strong> | Rust Nuremberg</a></li>
|
||
<li><a href="https://www.meetup.com/Rust-Community-Stuttgart/events/282000759">November 25, 2021 | Stuttgart, DE | <strong>Rust-Meetup</strong> | Rust Community Stuttgart</a></li>
|
||
<li><a href="https://www.meetup.com/Rust-Linz/events/282093961">November 25, 2021 | Linz, AT | <strong>Rust Meetup Linz - 16th Edition</strong> | Rust Linz</a></li>
|
||
<li><a href="https://www.meetup.com/Dallas-Rust/events/jqxqwryccpbnc/">November 30, 2021 | Dallas, TX, US | <strong>Last Tuesday</strong> | Dallas Rust</a></li>
|
||
<li><a href="https://www.meetup.com/Graz-Rust-Meetup/events/281955585">November 30, 2021 | Graz, AT | <strong>Rust and memory safety</strong> | Rust Graz Meetup</a></li>
|
||
<li><a href="https://www.meetup.com/Buffalo-Rust-Meetup/events/281833990/">December 7, 2021 | Buffalo, NY, US | <strong>First Tuesdays</strong> | Buffalo Rust Meetup</a></li>
|
||
<li><a href="https://www.meetup.com/Los-Gatos-Rust-Reading-Group/events/281966245">December 8, 2021 | Los Gatos, CA, US | <strong>Book #24 - Rust for Rustaceans - Chapter 1</strong> | Los Gatos Reading Group</a></li>
|
||
<li><a href="https://www.meetup.com/Rust-Los-Angeles/events/281944671/">December 8, 2021 | Los Angeles, CA, US | <strong>Rust Computer Vision Project with Geordon Worley</strong> | Rust Los Angeles</a></li>
|
||
<li><a href="https://www.meetup.com/Rust-Community-Stuttgart/events/282009864">December 8, 2021 | Stuttgart, DE | <strong>Rust-Meetup</strong> | Rust Community Stuttgart</a></li>
|
||
</ul>
|
||
<h3 id="north-america">North America</h3>
|
||
<ul>
|
||
<li><a href="https://www.meetup.com/Rust-ATL/events/lhpkmsyccqblb/">December 8, 2021 | Atlanta, GA, US | <strong>Grab a beer with fellow Rustaceans</strong> | Rust Atlanta</a></li>
|
||
</ul>
|
||
<h3 id="europe">Europe</h3>
|
||
<ul>
|
||
<li><a href="https://rustcon.ru">December 3, 2021 | Moscow, RU | <strong>Rust Con</strong> | RustCon.ru</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>StackBlitz</strong></p>
|
||
<ul>
|
||
<li><a href="https://jobs.lever.co/stackblitz/7ccd2472-1416-4448-8642-e58e9b32e129">WebContainer Systems Engineer (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>Elektron</strong></p>
|
||
<ul>
|
||
<li><a href="https://www.elektron.se/rust-audio-developer/">Rust Audio Developer (Gothenburg, SE)</a></li>
|
||
</ul>
|
||
<p><strong>tangram</strong></p>
|
||
<ul>
|
||
<li><a href="https://www.tangram.dev/jobs">Rust Developer (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><strong>Maasa Labs</strong></p>
|
||
<ul>
|
||
<li><a href="https://massa.net/jobs.html">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>On the topic of reframing UB, I was reminded of an article about the <a href="https://acoup.blog/2019/06/28/collections-oaths-how-do-they-work/">mechanics of oaths and vows in historical cultures</a>.</p>
|
||
<p>When a programmer writes <code>get_unchecked</code> , we can imagine them wanting to promise the compiler that they uphold its preconditions. But since the compiler is normally not so trusting of unproven assertions, the programmer swears an <em>oath</em> that their argument is in bounds.</p>
|
||
<p>The compiler, seeing such a solemn commitment, treats the programmer's word as true and optimizes accordingly. The compiler is so thoroughly convinced that it never even entertains the possibility of doubting the programmer's oath.</p>
|
||
<p>But if the programmer has sworn falsely, then they might well suffer divine retribution in the form of nasal demons — or worse, subtly baffling program behaviour.</p>
|
||
</blockquote>
|
||
<p>– <a href="https://reddit.com/r/rust/comments/qx168t/undefined_behavior_deserves_a_better_reputation/hl8koel/">/u/scook0 on /r/rust</a></p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1142">G. Thorondorsen</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/r1krej/this_week_in_rust_418/">Discuss on r/rust</a></small></p> |