emacs/var/elfeed/db/data/3a/3adee159cddab74bede15034c01b6eee261f7808
2022-01-03 12:49:32 -06:00

219 lines
20 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="projecttooling-updates">Project/Tooling Updates</h3>
<ul>
<li><a href="https://rust-analyzer.github.io/thisweek/2021/08/23/changelog-91.html">rust-analyzer Changelog #91</a></li>
<li><a href="https://arrow.apache.org/blog/2021/08/18/datafusion-5.0.0/">Apache Arrow Datafusion 5.0.0 release with major new features and performance improvements</a></li>
<li><a href="https://arrow.apache.org/blog/2021/08/18/ballista-0.5.0/">Apache Arrow Ballista 0.5.0 release</a></li>
<li><a href="https://www.fluvio.io/news/this-week-in-fluvio-0003/">This week in Fluvio #3: the programmable streaming platform</a></li>
<li><a href="https://sixtyfps.io/blog/announcing-sixtyfps-0.1.html">SixtyFPS 0.1 Release</a> and <a href="https://sixtyfps.io/thisweek/2021-08-23.html">SixtyFPS Weekly Report</a></li>
<li><a href="https://leshow.github.io/post/nailgun/">nailgun: a DNS performance testing client</a></li>
<li><a href="https://www.reddit.com/r/rust/comments/p9usvq/nom_70_release_fast_parser_combinators_now/">nom 7.0 release: fast parser combinators, now without macros! And the new nom-bufreader</a></li>
<li><a href="https://www.reddit.com/r/rust/comments/papqk1/announcing_egui_014/">Announcing egui 0.14</a></li>
<li><a href="https://www.reddit.com/r/rust/comments/p9t3jh/miette_a_fancy_new_diagnostics_definition_and/">miette: a fancy new diagnostics definition and reporting crate for apps and libraries!</a></li>
<li><a href="https://www.reddit.com/r/rust/comments/p8gcbe/rudra_rust_memory_safety_undefined_behavior/">Rudra: Rust Memory Safety &amp; Undefined Behavior Detection</a></li>
<li><a href="https://www.reddit.com/r/rust/comments/p86a24/snakeos_v010_released/">SnakeOS v0.1.0 released!</a></li>
<li><a href="https://www.reddit.com/r/rust/comments/p84amc/release_pueue_v100_manage_your_shell_commands/">Pueue v1.0.0 - Manage your shell commands. Reaching stable after 3.5 years</a></li>
<li><a href="https://persy.rs/posts/persy-1.0.html">Announcing Persy 1.0: a simple transactional storage</a></li>
<li><a href="https://datafuselabs.github.io/weekly/2021-08-25-datafuse-weekly/">This week in Datafuse #4</a></li>
</ul>
<h3 id="observationsthoughts">Observations/Thoughts</h3>
<ul>
<li><a href="https://kerkour.com/blog/rust-cryptography-ecosystem">Overview of the Rust cryptography ecosystem</a></li>
<li><a href="https://blog.knoldus.com/superpowers-of-unsafe-rust/">Superpowers of Unsafe Rust</a></li>
<li><a href="https://project-oak.github.io/rust-verification-tools/2021/08/22/rust-on-linux-1.html">Using KLEE on Rust-for-Linux (part 1)</a></li>
<li><a href="https://matklad.github.io/2021/08/22/large-rust-workspaces.html">Large Rust Workspaces</a></li>
<li><a href="https://blog.doctave.com/2021/08/19/using-rust-with-elixir-for-code-reuse-and-performance.html">Using Rust with Elixir for code reuse and performance</a></li>
<li><a href="https://thume.ca/2019/07/14/a-tour-of-metaprogramming-models-for-generics/">Models of Generics and Metaprogramming: Go, Rust, Swift, D and More</a></li>
<li><a href="https://clayto.com/2021/07/shaking-off-the-rust-2-ray-tracing-in-webassembly/">Shaking Off the Rust 2: Ray Tracing in WebAssembly</a></li>
<li><a href="https://blog.yoshuawuyts.com/async-overloading/">Async Overloading</a></li>
<li><a href="https://devblog.arcana.rs/scoped-arena-allocator">Scoped Arena Allocator</a></li>
<li><a href="https://blog.knoldus.com/concurrency-in-rust-is-indeed-fearless/">Concurrency in Rust is indeed fearless</a></li>
</ul>
<h3 id="rust-walkthroughs">Rust Walkthroughs</h3>
<ul>
<li><a href="https://saidvandeklundert.net/learn/2021-08-15-rust-vector/">Rust vectors</a></li>
<li><a href="https://adventures.michaelfbryan.com/posts/daily/iterators/">Daily Rust: Iterators</a></li>
<li><a href="https://www.bexxmodd.com/post/systems-programming-with-rust-1">Getting Started with Systems Programming with Rust (Part 1)</a></li>
<li><a href="https://www.bexxmodd.com/post/systems-programming-with-rust-2">Getting Started with Systems Programming with Rust (Part 2)</a></li>
<li><a href="https://dev.to/somedood/optimizing-immutable-strings-in-rust-2ahj">Optimizing Immutable Strings in Rust</a></li>
<li><a href="https://dev.to/davidedelpapa/rust-for-data-science-tutorial-1-4g5j">Rust for Data Science: Tutorial 1</a></li>
<li><a href="https://dev.to/alabulei1/rust-and-webassembly-serverless-functions-in-vercel-47e4">Rust and WebAssembly Serverless functions in Vercel</a></li>
<li><a href="https://blog.adamchalmers.com/pin-unpin/">Pin, Unpin, and why Rust needs them</a></li>
<li><a href="https://blog.hendrikmaus.dev/rust-unwrap-options-in-a-function-that-returns-a-result-type/">Rust: How to Unwrap Multiple Required Options</a></li>
<li><a href="https://alexis-lozano.com/hexagonal-architecture-in-rust-1/">Hexagonal architecture in Rust #1</a></li>
<li><a href="https://alexis-lozano.com/hexagonal-architecture-in-rust-2/">Hexagonal architecture in Rust #2</a></li>
<li><a href="https://jake-shadle.github.io/xwin/">Cross compiling Windows binaries from Linux</a></li>
<li><a href="https://desilva.io/posts/rust-trait-objects-demystified">Rust Trait Objects Demystified</a></li>
<li><a href="https://github.com/ockam-network/ockam/tree/develop/documentation/use-cases/end-to-end-encryption-through-kafka">End-to-End Encryption through Kafka, with Rust</a></li>
<li>[ZH] Formal Concept Analysis with Rust, <a href="https://www.horsal.dev/formal-concept-analysis-with-rust-1-introduction">Part1</a>, <a href="https://www.horsal.dev/formal-concept-analysis-with-rust-2-basic-algorithm">Part2</a>, <a href="https://www.horsal.dev/formal-concept-analysis-with-rust-3-parallization">Part3</a></li>
<li>[video] <a href="https://youtu.be/whN36JVUd6A">Building a small Finite State Machine in Rust</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=izXf9-CTAfc">Rust Community Stuttgart - "Traits and trait objects - more than just interfaces"</a></li>
</ul>
<h3 id="miscellaneous">Miscellaneous</h3>
<ul>
<li><a href="https://github.com/newca12/awesome-rust-formalized-reasoning">An exhaustive list of all Rust resources regarding automated or semi-automated formalization efforts in any area, constructive mathematics, formal algorithms, and program verification.</a></li>
<li><a href="https://www.infinyon.com/blog/2021/08/smartstream-aggregates/">Aggregate streaming data in real-time with WebAssembly</a></li>
<li><a href="https://www.reddit.com/r/rust/comments/pb97fa/i_reimplemented_the_legendary_typing_the/">I re-implemented the legendary "Typing the technical interview" article using only Rust types!</a></li>
<li><a href="https://www.reddit.com/r/rust/comments/paxowq/chromium_adds_a_rust_toolchain_as_a_potential/">Chromium adds a Rust toolchain as a potential dependency</a></li>
<li><a href="https://www.reddit.com/r/rust/comments/p7qzdn/new_very_promising_linux_syscall_for_creating/">New very promising Linux syscall for creating secret memory even the kernel can't read. I'll be working for creating a crate for using it out</a></li>
<li>[picture] <a href="https://www.reddit.com/r/rust/comments/pai1o8/media_field_init_shorthand_in_rust/">Field Init Shorthand 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://github.com/hendrikmaus/kube-leader-election">kube-leader-election</a>, a crate to implement leader election for Kubernetes workloads.</p>
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/945">hendrikmaus</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 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/rust-lang/cargo/issues/9797">rust-lang/cargo - "error: binary xxx already exists in destination" should print the full destination path</a></li>
<li><a href="https://github.com/ockam-network/ockam/issues/1762">ockam-network/ockam - Like ngrok, but using Ockam</a></li>
<li><a href="https://github.com/ockam-network/ockam/issues/1761">ockam-network/ockam - Forwarder in Rust</a></li>
<li><a href="https://github.com/andreev-io/little-raft/issues"> andreev-io/little-raft - New Contributors Wanted</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-rust-core">Updates from Rust Core</h2>
<p>293 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2021-08-16..2021-08-23">merged in the last week</a></p>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/87570">upgrade to LLVM 13</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/80357">introduce <code>hir::ExprKind::Let</code> - Take 2</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/86977">enable compiler consumers to obtain <code>mir::Body</code> with Polonius facts</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88134">force warn improvements</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/87976">account for tabs when highlighting multiline code suggestions</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/87983">use more accurate spans when proposing adding lifetime to item</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88232">add notes to macro-not-found diagnostics to point out how things with the same name were not a match</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/86747">improve wording of the <code>drop_bounds</code> lint</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/86700">improve NLL's "higher-ranked subtype error"s</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88229">suggest importing the right kind of macro</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/87661">improve error reporting for closure return type mismatches</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88166">canonicalize consts before calling <code>try_unify_abstract_consts</code> query</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88176">reenable <code>RemoveZsts</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/87329">I/O safety</a> (RFC <a href="https://rust-lang.github.io/rfcs/3128-io-safety.html">#3128</a>)</li>
<li><a href="https://github.com/rust-lang/rust/pull/86860">stabilize <code>arbitrary_enum_discriminant</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/86808">constified implementations of <code>Default</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88075">optimize unnecessary check in <code>VecDeque::retain</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/83093">where available use <code>AtomicU</code>{<code>64</code>, <code>128</code>} instead of mutex for <code>Instant</code> backsliding protection</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/86898">add fast path for <code>Path::cmp</code> that skips over long shared prefixes</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/9834">cargo: fix panic with build-std of a proc-macro</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7539">clippy: add new lints <code>negative_feature_names</code> and <code>redundant_feature_names</code></a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7595">clippy: move <code>branches_sharing_code</code> to nursery</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7593">clippy: remove stderr limit</a></li>
</ul>
<h3 id="rust-compiler-performance-triage">Rust Compiler Performance Triage</h3>
<p>A few regressions but largely an improvement this week, mostly due to the
upgrade to LLVM 13.</p>
<p>Triage done by <strong>@simulacrum</strong>.
Revision range: <a href="https://perf.rust-lang.org/?start=aa8f27bf4d980023a8b245ceb25a490a18041eb2&amp;end=33fdb797f59421c7bbecaa4588ed5d7a31a9494a&amp;absolute=false&amp;stat=instructions%3Au">aa8f27b..33fdb79</a></p>
<p>2 Regressions, 1 Improvements, 2 Mixed; 0 of them in rollups</p>
<p><a href="https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-08-24.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><a href="https://github.com/rust-lang/rfcs/pull/3159">RFC: let-expression</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/pull/88177">Stabilize std::os::unix::fs::chroot</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/88140">Stabilize reserved prefixes</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/88126">stabilize disjoint capture in closures (RFC 2229)</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/88040">BTree: remove Ord bound from new</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/87580">Update Windows Argument Parsing</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/87064">Support #[track_caller] on closures and generators</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/86516">Stabilize "force warn" option</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/83947">Extend -Cdebuginfo with new options and named aliases</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/83342">Allow writing of incomplete UTF-8 sequences to the Windows console via stdout/stderr</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/79524">Tracking Issue for Iterator::intersperse</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/44434">Provide an API to extract fields from Command builder</a></li>
</ul>
<h3 id="new-rfcs">New RFCs</h3>
<ul>
<li><a href="https://github.com/rust-lang/rfcs/pull/3168">RFC: cargo-run-deps</a></li>
<li><a href="https://github.com/rust-lang/rfcs/pull/3163">Proposal: Else clauses for for and while loops</a></li>
</ul>
<h2 id="upcoming-events">Upcoming Events</h2>
<h3 id="online">Online</h3>
<ul>
<li><a href="https://www.meetup.com/Dallas-Rust/">August 31, 2021, Dallas, TX, US - Last Tuesday - Dallas Rust</a></li>
<li><a href="https://www.meetup.com/Rust-Zurich/events/280295950/">September 2, 2021, Zurich, CH - Exciting new Rustdoc features landing in 1.55.0 - Hybrid Meetup (Livestream!) - Rust Zurich</a></li>
<li><a href="https://berline.rs/">September 2, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs</a></li>
<li><a href="https://www.meetup.com/Rust-Boulder-Denver/events/279407152/">September 8, 2021, Denver, CO, US - Rust Q&amp;A - Rust Denver</a></li>
</ul>
<h3 id="north-america">North America</h3>
<ul>
<li><a href="https://www.meetup.com/Rust-ATL/events/lhpkmsyccmblb/">September 8, 2021, Atlanta, GA, US - Grab a beer with fellow Rustaceans - Rust Atlanta</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>Apple</strong></p>
<ul>
<li><a href="https://jobs.apple.com/en-us/details/200278498/senior-software-engineer-apple-media-products?team=SFTWR">Senior Software Engineer - Apple Media Products</a></li>
</ul>
<p><strong>Wingback</strong></p>
<ul>
<li><a href="https://careers.wingback.com/o/senior-backend-developer-rust-remote">Senior Backend Developer - rust 🦀 (Remote))</a></li>
</ul>
<p><strong>PolarFox Network</strong></p>
<ul>
<li><a href="https://polarsync.breezy.hr/p/0c1d3630d39d">Senior Rust Engineer (Remote)</a></li>
</ul>
<p><strong>Stealth Startup</strong></p>
<ul>
<li><a href="https://docs.google.com/document/d/1jOT6pDE3yNpUq3c9BvFJPy4XaqlIX7BiOqXiTU1Fpfk/edit?usp=sharing">Senior Software Engineer (Raleigh, NC, US, Possible Remote US)</a></li>
</ul>
<p><strong>Dusk Network</strong></p>
<ul>
<li><a href="https://dusk.network/pages/rust-developer-vacancy">Rust Developer (Fulltime) (Remote)</a></li>
</ul>
<p><strong>ChainSafe</strong></p>
<ul>
<li><a href="https://jobs.smartrecruiters.com/ChainSafeSystemsInc/743999739358248-rust-developer">Rust Developer (Remote)</a></li>
</ul>
<p><strong>Bitfury</strong></p>
<ul>
<li><a href="https://arbeitnow.com/view/rust-developer-bitfury-393648">Rust Developer (Kyiv, Kiev, UA)</a></li>
</ul>
<p><strong>Kollider</strong></p>
<ul>
<li><a href="https://kollider.homerun.co/junior-backend-engineer/en">Junior Backend Engineer (Remote)</a></li>
<li><a href="https://kollider.homerun.co/senior-backend-engineer/en">Senior Backend Engineer (Remote)</a></li>
</ul>
<p><strong>NZXT</strong></p>
<ul>
<li><a href="https://nzxt.bamboohr.com/jobs/view.php?id=259">Senior Software Engineer for CAM (Remote)</a></li>
<li><a href="https://nzxt.bamboohr.com/jobs/view.php?id=317">Senior Software Engineer for Streaming Software (Remote)</a></li>
</ul>
<p><strong>Parity Technologies</strong></p>
<ul>
<li><a href="https://www.parity.io/jobs/">Multiple Rust Engineering Positions Available</a></li>
</ul>
<p><strong>Subspace Labs</strong></p>
<ul>
<li><a href="https://jobs.lever.co/subspacelabs">Multiple 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>Code doesn't deal with resources until it does. Similarly with everything else that forces you to reason about control flow - you don't care about thread management until you do, you don't care about action logs until you do, you don't care about performance until you do... and from the other side, code doesn't need to be exception-safe until it does. The trouble with this kind of "magic" language feature is that correctness becomes non-compositional: you can take two working pieces of code and put them together and get something that doesn't work.</p>
</blockquote>
<p> <a href="https://news.ycombinator.com/item?id=26536896">Mickey Donaghy on Hacker News</a></p>
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1096">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>, and <a href="https://github.com/cdmistman">cdmistman</a>.</em></p>
<p><small><a href="https://www.reddit.com/r/rust/comments/pcbgvj/this_week_in_rust_405/">Discuss on r/rust</a></small></p>