207 lines
18 KiB
Plaintext
207 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 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&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&end=69c4aa2901ffadf69deaf91b2f90604bcbc2eb36&absolute=false&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 & 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&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> |