emacs/var/elfeed/db/data/4b/4bda9d8d197ec15bacd0c9522190e08d77fbb273
2022-01-03 12:49:32 -06:00

207 lines
18 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="official">Official</h3>
<ul>
<li>[Inside] <a href="https://blog.rust-lang.org/inside-rust/2021/09/06/Splitting-const-generics.html">Splitting the const generics features</a></li>
<li>[Inside] <a href="https://blog.rust-lang.org/inside-rust/2021/09/07/1.55.0-prerelease.html">1.55.0 pre-release testing</a></li>
</ul>
<h3 id="newsletters">Newsletters</h3>
<ul>
<li><a href="https://gamedev.rs/news/025/">This Month in Rust GameDev #25 - August 2021</a></li>
<li><a href="https://rust-osdev.com/this-month/2021-08/">This Month in Rust OSDev (August 2021)</a></li>
</ul>
<h3 id="projecttooling-updates">Project/Tooling Updates</h3>
<ul>
<li><a href="https://rust-analyzer.github.io/thisweek/2021/09/06/changelog-93.html">rust-analyzer Changelog #93</a></li>
<li><a href="https://www.fluvio.io/news/this-week-in-fluvio-0005/">This week in Fluvio #5: the programmable streaming platform</a></li>
<li><a href="https://blog.antoyo.xyz/rustc_codegen_gcc-progress-report-3">rustc_codegen_gcc: Progress Report #3</a></li>
<li><a href="https://datafuselabs.github.io/weekly/2021-09-08-datafuse-weekly/">This week in Datafuse #6</a></li>
<li><a href="https://aaronerhardt.github.io/blog/posts/announcing_relm4/">Announcing Relm4 v0.1</a></li>
<li><a href="https://sixtyfps.io/thisweek/2021-09-06.html">SixtyFPS (GUI crate) weekly report for 6th of September 2021</a></li>
</ul>
<h3 id="observationsthoughts">Observations/Thoughts</h3>
<ul>
<li><a href="https://kerkour.com/blog/why-rust-for-offensive-security/">Why Rust for offensive security</a></li>
<li><a href="https://twitter.com/mlafeldt/status/1433414474589954048">Had a blast porting one of my serverless applications from Go to Rust - some things I learned</a></li>
<li><a href="https://blog.sunfishcode.online/broken-encapsulation/">Broken Encapsulation</a></li>
<li><a href="https://tech.marksblogg.com/rdns-domain-name-tld-extract-rust.html">Faster Top Level Domain Name Extraction with Rust</a></li>
<li><a href="https://blog.sunfishcode.online/rust-programs-entirely-in-rust/">Rust programs written entirely in Rust</a></li>
<li><a href="https://matklad.github.io/2021/09/04/fast-rust-builds.html">Fast Rust Builds</a></li>
<li><a href="https://pliniker.github.io/post/dispatchers/">Virtual Machine Dispatch Experiments in Rust</a></li>
<li><a href="https://project-oak.github.io/rust-verification-tools/2021/09/01/retrospective.html">Rust Verification Tools - Retrospective</a></li>
<li><a href="https://kerkour.com/blog/rust-avoid-lifetimes/">How to avoid lifetime annotations in Rust (and write clean code)</a></li>
<li><a href="https://neosmart.net/blog/2021/using-simd-acceleration-in-rust-to-create-the-worlds-fastest-tac/">Using SIMD acceleration in Rust to create the world's fastest <code>tac</code></a></li>
<li><a href="https://kerkour.com/blog/rust-cryptography-ecosystem/">Overview of the Rust cryptography ecosystem</a></li>
<li><a href="https://smallcultfollowing.com/babysteps//blog/2021/09/08/rustacean-principles/">Rustacean Principles</a></li>
<li><a href="https://pythonspeed.com/fil/docs/fil4prod/reliable.html">Writing software that's reliable enough for production</a></li>
<li><a href="https://nullderef.com/blog/plugin-start/">Plugins in Rust: Getting Started</a></li>
<li><a href="https://thespblog.net/a-gophers-foray-into-rust/">A Gopher's Foray into Rust</a></li>
<li><a href="https://holmusk.dev/blog/2021-05-29-using-rust.html">Building a reliable and tRUSTworthy web service</a></li>
<li>[audio] <a href="https://rustacean-station.org/episode/035-daniel-stenberg/">The Rustacean Station Podcast - Rust in cURL</a></li>
</ul>
<h3 id="rust-walkthroughs">Rust Walkthroughs</h3>
<ul>
<li><a href="https://blog.lanesawyer.dev/27848/the-why-and-how-of-rust-declarative-macros">The Why and How of Rust Declarative Macros</a></li>
<li><a href="https://github.com/ockam-network/ockam/tree/develop/documentation/use-cases/secure-remote-access-tunnels#readme">Build a secure access tunnel to a service inside of a Remote Private Network, using Rust</a></li>
<li><a href="https://lupyuen.github.io/articles/rhai">Rust on RISC-V BL602: Rhai Scripting</a></li>
<li><a href="https://fuzzing.science/page/rudroid-worlds-worst-android-emulator/">Rudroid - Writing the World's worst Android Emulator in Rust</a></li>
<li><a href="https://alexis-lozano.com/hexagonal-architecture-in-rust-3/">Hexagonal architecture in Rust #3</a></li>
<li><a href="https://alexis-lozano.com/hexagonal-architecture-in-rust-4/">Hexagonal architecture in Rust #4</a></li>
<li><a href="https://spin.atomicobject.com/2021/08/30/memory-management-in-rust/">Explaining How Memory Management in Rust Works by Comparing with JavaScript</a></li>
<li><a href="https://depth-first.com/articles/2021/08/25/postgres-extensions-in-rust/">Postgres Extensions in Rust</a></li>
<li><a href="https://medium.com/@glebpomykalov/lets-overtake-go-fasthttp-with-rust-hyper-b2d1004914f">Let's overtake go/fasthttp with rust/warp</a></li>
<li><a href="https://dev.to/infinyon/how-we-built-our-python-client-that-s-mostly-rust-3p63">How we built our Python Client that's mostly Rust</a></li>
<li><a href="https://eriknatanael.com/blog/combining-rust-and-cpp-code-in-your-bela-project">Combining Rust and C++ code in your Bela project</a></li>
<li><a href="https://dpc.pw/data-oriented-cleanandhexagonal-architecture-software-in-rust-through-an-example">Data-oriented, clean&amp;hexagonal architecture software in Rust - through an example project</a></li>
<li><a href="https://www.rodrigoaraujo.me/posts/lets-build-an-lc-3-virtual-machine/">Let's build an LC-3 Virtual Machine</a></li>
<li><a href="https://owengage.com/writing/2021-08-30-how-to-think-of-unwrap/">How to think of unwrap</a></li>
<li><a href="https://piware.de/post/2021-08-27-rust-and-c/">Learning Rust: Interfacing with C</a></li>
<li><a href="https://kerkour.com/blog/rust-job-queue-with-postgresql/">How to build a job queue with Rust and PostgreSQL</a></li>
<li>[ID] <a href="https://dev.to/zimerasystems/belajar-rust-02-instalasi-rust-pf">Belajar Rust - 02: Instalasi Rust</a></li>
<li>[video] <a href="https://youtu.be/ThjvMReOXYM">Crust of Rust: async/await</a></li>
<li>[video] <a href="https://youtu.be/mupwF9jbVZ4">Concurrency in Rust - Sharing State</a></li>
<li>[video] <a href="https://www.youtube.com/watch?v=d9PxFlFFZuk">Setting up an Arduino Project using Rust</a></li>
</ul>
<h3 id="miscellaneous">Miscellaneous</h3>
<ul>
<li><a href="https://www.reddit.com/r/rust/comments/pjtpkj/unity_files_patent_for_ecs_in_game_engines_that/">Unity files patent for ECS in game engines that would probably affect many Rust ECS crates, including Bevy's</a></li>
<li><a href="https://github.com/rust-lang/rust/issues/88623">Rust 2021 celebration and thanks</a></li>
<li><a href="https://lupyuen.github.io/articles/rhai">Rust on RISC-V BL602: Rhai Scripting</a></li>
<li><a href="https://diziet.dreamwidth.org/9336.html">Wanted: Rust sync web framework</a></li>
<li>[audio] <a href="https://youtu.be/q0aNduqb2Ro">Rust 2021 Edition</a></li>
</ul>
<h2 id="crate-of-the-week">Crate of the Week</h2>
<p>Sadly, we had no nominations this week. Still, in the spirit of not leaving you without some neat rust code, I give you <a href="https://github.com/mazznoer/gradient-rs">gradient</a>, a command line tool to extract gradients from SVG, display and manipulate them.</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>
<ul>
<li><a href="https://www.chiark.greenend.org.uk/%7Eianmdlvl/rust-polyglot/">Rust for the Polyglot Programmer - a guide in need of review by and feedback from the Rust Community</a></li>
<li><a href="https://t.co/gCj6NRNftT?amp=1">Survey - How People Use Rust</a></li>
</ul>
<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-rust-core">Updates from Rust Core</h2>
<p>300 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2021-08-30..2021-09-06">merged in the last week</a></p>
<ul>
<li><a href="https://github.com/rust-lang/rust/pull/87688">introduce <code>let...else</code></a> </li>
<li><a href="https://github.com/rust-lang/rust/pull/88369">update const generics feature gates</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88418">allow <code>~const</code> bounds on trait assoc functions</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/86376">emit specific warning to clarify that <code>#[no_mangle]</code> should not be applied on foreign statics or functions</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88657">fix 2021 dyn suggestion that used code as label</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88503">warn when <code>[T; N].into_iter()</code> is ambiguous in the new edition</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88598">detect bare blocks with type ascription that were meant to be a struct literal</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88501">use right span in prelude collision suggestions with macros</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88631">improve structured tuple struct suggestion</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88597">move global analyses from lowering to resolution</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88560"><code>fmt::Formatter::pad</code>: don't call <code>chars().count()</code> more than one time</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/85017">add <code>carrying_add</code>, <code>borrowing_sub</code>, <code>widening_mul</code>, <code>carrying_mul</code> methods to integers</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88551">stabilize <code>UnsafeCell::raw_get</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88548">stabilize <code>Iterator::intersperse</code></a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88177">stabilize <code>std::os::unix::fs::chroot</code></a></li>
<li><a href="https://github.com/rust-lang/compiler-builtins/pull/405">compiler-builtins: optimize <code>memcpy</code>, <code>memmove</code> and <code>memset</code></a></li>
<li><a href="https://github.com/rust-lang/futures-rs/pull/2469">futures: add <code>TryStreamExt::try_forward</code>, remove <code>TryStream</code> bound from <code>StreamExt::forward</code></a></li>
<li><a href="https://github.com/rust-lang/futures-rs/pull/2484">futures: correcting overly restrictive lifetimes in vectored IO</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/9800">cargo: stabilize 2021 edition</a></li>
<li><a href="https://github.com/rust-lang/cargo/pull/9869">cargo: improve error message when unable to initialize git index repo</a></li>
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7570">clippy: add the <code>derivable_impls</code> lint</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88604">rustdoc: clean up handling of lifetime bounds</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88573">rustdoc: don't panic on ambiguous inherent associated types</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88574">rustdoc: box <code>GenericArg::Const</code> to reduce enum size</a></li>
<li><a href="https://github.com/rust-lang/rust/pull/88490">rustdoc: display associated types of implementors</a></li>
</ul>
<h3 id="rust-compiler-performance-triage">Rust Compiler Performance Triage</h3>
<p>A busy week, with lots of mixed changes, though in the end only a few were deemed significant enough to report here.</p>
<p>Triage done by <strong>@pnkfelix</strong>.
Revision range: <a href="https://perf.rust-lang.org/?start=fe37929e4cba2c5c21e6805805769630c736bc3d&amp;end=69c4aa2901ffadf69deaf91b2f90604bcbc2eb36&amp;absolute=false&amp;stat=instructions%3Au">fe379..69c4a</a></p>
<p>3 Regressions, 1 Improvements, 3 Mixed; 0 of them in rollups
57 comparisons made in total</p>
<p><a href="https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-09-07.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: close] <a href="https://github.com/rust-lang/rfcs/pull/3163">Proposal: Else clauses for for and while loops</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rfcs/pull/3123">Scrape code examples from examples/ directory for Rustdoc</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rfcs/pull/3119">Rust-lang crate ownership policy</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/88611">Deprecate array::IntoIter::new</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/88353">Partially stabilize array_methods</a></li>
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/68537">Tracking issue Iterator map_while</a></li>
</ul>
<h3 id="new-rfcs">New RFCs</h3>
<ul>
<li><a href="https://github.com/rust-lang/rfcs/pull/3173">Add RFC float-next-up-down</a></li>
</ul>
<h2 id="upcoming-events">Upcoming Events</h2>
<h3 id="online">Online</h3>
<ul>
<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>
<li><a href="https://www.meetup.com/Seattle-Rust-Meetup/events/gskksryccmbsb/">September 14, 2021, Seattle, WA, US - Monthly Meetup - Seattle Rust Meetup</a></li>
<li><a href="https://www.meetup.com/Vancouver-Rust/events/zkqvjsyccmbtb/">September 15, 2021, Vancouver, BC, CA - Considering Rust - Vancouver Rust</a></li>
<li><a href="https://berline.rs/">September 16, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs</a></li>
<li><a href="https://rust.tokyo/">September 18, 2021, Tokyo, JP - Rust.Tokyo 2021</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>
<li><a href="https://www.meetup.com/utah-rust/events/280470653/">September 9, 2021, Pleasant Grove, UT, US - Rusty Engine: A 2D game engine for learning Rust with Nathan Stocks (and Pizza)</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>Formlogic</strong></p>
<ul>
<li><a href="https://formlogic.breezy.hr/p/4fbae29d9d21-software-engineer">Software Engineer (Remote)</a></li>
</ul>
<p><strong>OCR Labs</strong></p>
<ul>
<li><a href="https://weworkremotely.com/listings/ocr-labs-senior-rust-developer">Senior Rust Developer (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>Subspace</strong></p>
<ul>
<li><a href="https://jobs.lever.co/subspacelabs/7f6a654b-60a8-4740-aa19-36b9f7a9e624">Core Protocol Engineer (Remote)</a></li>
</ul>
<p><strong>dcSpark</strong></p>
<ul>
<li><a href="https://careers.dcspark.io/senior-rust-developer-47870/">Senior Rust Developer (Remote)</a></li>
</ul>
<p><strong>Kraken</strong></p>
<ul>
<li><a href="https://arbeitnow.com/view/backend-engineer-kraken-futures-rust-remote-kraken-74155">Backend Engineer, Kraken Futures - Rust (Remote)</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><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>In Rust, soundness is never just a convention.</p>
</blockquote>
<p> <a href="https://users.rust-lang.org/t/rationale-behind-fn-fnmut-and-fnonce-design/64355/11">@H2CO3 on rust-users</a></p>
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1097">Riccardo D'Ambrosio</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/pkoc2q/this_week_in_rust_407/">Discuss on r/rust</a></small></p>