180 lines
14 KiB
Plaintext
180 lines
14 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><a href="https://blog.rust-lang.org/2021/09/09/Rust-1.55.0.html">Announcing Rust 1.55.0</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=pLdCcolQsxA">RustConf 2021 Video Stream</a></li>
|
||
</ul>
|
||
<h3 id="newsletters">Newsletters</h3>
|
||
<h3 id="projecttooling-updates">Project/Tooling Updates</h3>
|
||
<ul>
|
||
<li><a href="https://sycamore-rs.netlify.app/news/announcing-v0.6.0">Announcing Sycamore v0.6.0: Faster and faster with plenty of fixes and features…</a></li>
|
||
<li><a href="https://sixtyfps.io/thisweek/2021-09-13.html">SixtyFPS (GUI crate) weekly report 12th of September</a></li>
|
||
<li><a href="https://datafuselabs.github.io/weekly/2021-09-15-databend-weekly/">This week in Databend #7</a></li>
|
||
<li><a href="https://leshow.github.io/post/dhcproto/">Introducing DHCProto</a></li>
|
||
<li><a href="https://intellij-rust.github.io/2021/09/13/changelog-155.html">IntelliJ Rust Changelog #155</a></li>
|
||
<li><a href="https://rust-analyzer.github.io/thisweek/2021/09/13/changelog-94.html">Rust Analyzer Changelog #94</a></li>
|
||
<li><a href="https://johanhelsing.studio/posts/introducing-matchbox">Introducing Matchbox</a></li>
|
||
</ul>
|
||
<h3 id="observationsthoughts">Observations/Thoughts</h3>
|
||
<ul>
|
||
<li><a href="https://blog.cloudflare.com/building-cloudflare-images-in-rust-and-cloudflare-workers/">Building Cloudflare Images in Rust and Cloudflare Workers</a></li>
|
||
<li><a href="https://zenoh.io/blog/2021-07-13-zenoh-performance-async/">Zenoh performance: a stroll in Rust async wonderland</a></li>
|
||
<li>[audio] <a href="https://rustgamedev.com/episodes/interview-with-remco-and-basz">Rust Game Dev Podcast - Interview with Remco and Basz</a></li>
|
||
</ul>
|
||
<h3 id="rust-walkthroughs">Rust Walkthroughs</h3>
|
||
<ul>
|
||
<li><a href="https://kerkour.com/blog/shellcode-in-rust/">How to Write and Compile Shellcode in Rust</a></li>
|
||
<li><a href="https://kerkour.com/blog/rust-http-long-polling/">How to implement HTTP Long Polling in Rust</a></li>
|
||
<li><a href="https://tweedegolf.nl/blog/61/an-experimental-diesel-based-crud-for-rocket">An experimental Diesel-based CRUD for Rocket</a></li>
|
||
<li><a href="https://dev.to/uggla/rust-cli-example-2-ferris-hunts-errors-116b">Rust cli example #2: Ferris hunts errors</a></li>
|
||
<li><a href="https://blog.knoldus.com/test-cases-in-rust-are-simple-to-write/">Test Cases in Rust are simple to write</a></li>
|
||
<li><a href="https://vincepergolizzi.com/programming/2021/09/08/full-stack-sum-types-with-typescript-rust-and-postgres.html">Full-stack sum types with TypeScript, Rust and Postgres</a></li>
|
||
<li><a href="https://dev.to/rogertorres/rust-tokio-stack-overview-runtime-9fh">Tokio stack overview: Runtime</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=iFdh4sPC5Tg">Rust for Java Developers - Introduction [Beginners]</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=S1NSsHZs6hI">FLTK Rust: a new basics tutorial</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=VlSkZYBeK8Q">Rust for Linux</a></li>
|
||
</ul>
|
||
<h3 id="miscellaneous">Miscellaneous</h3>
|
||
<ul>
|
||
<li><a href="https://blog.cloudflare.com/workers-rust-sdk/">Native Rust support on Cloudflare Workers</a></li>
|
||
<li><a href="https://portanetwork.medium.com/launching-porta-ecosystem-grants-to-grow-its-network-7f82262d4260">Launching Porta Ecosystem Grants</a></li>
|
||
<li><a href="https://blog.yossarian.net/2021/09/14/LLVM-internals-part-3-from-bitcode-to-IR">LLVM internals, part 3: from bitcode to IR</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/uazu/qcell">qcell</a>, with a type that works like a compile-time <code>RefCell</code>.</p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/952">Soni L.</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/getsynth/synth/issues/145">getsynth/synth - Allow unbounded numbers</a></li>
|
||
<li><a href="https://survey.opensuse.org/">OpenSUSE Rust Usage Survey</a></li>
|
||
<li><a href="https://rustfest.world/say-hello-rustfest-global-2021">RustFest CFP is open</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>278 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2021-09-06..2021-09-13">merged in the last week</a></p>
|
||
<ul>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88733">fix ICE for functions with more than 65535 arguments</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88336">detect stricter constraints on gats where clauses in impls vs trait</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/85200">ignore derived <code>Clone</code> and <code>Debug</code> implementations during dead code analysis</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88147">fix non-capturing closure return type coercion</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88578">suggest items be borrowed in <code>for i in items[x..]</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88757">suggest wrapping expr in parentheses on invalid unary negation</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88209">improve error message when <code>_</code> is used for in/inout <code>asm</code> operands</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/87441">emit suggestion when passing byte literal to <code>format!</code> macro</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/87915">use smaller spans for some structured suggestions</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88214">use more correct span data in <code>for</code> loop desugaring</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88771">use <code>FxHashSet</code> instead of <code>Vec</code> for well formed tys</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/83214"><code>mmap</code> the incremental data instead of reading it</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88448"><code>BTreeMap</code>/<code>BTreeSet::from_iter</code>: use bulk building to improve the performance</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/86165">add <code>proc_macro::Span::</code>{<code>before</code>, <code>after</code>}</a></li>
|
||
<li><a href="https://github.com/rust-lang/hashbrown/pull/293">hashbrown: <code>insert_unique_unchecked</code> operation</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7610">clippy: add new lint <code>iter_not_returning_iterator</code></a></li>
|
||
</ul>
|
||
<h3 id="rust-compiler-performance-triage">Rust Compiler Performance Triage</h3>
|
||
<p>Fairly busy week, with some large improvements on several benchmarks. Several
|
||
larger rollups landed, in part due to recovery from a temporary CI outage,
|
||
and continued CI trouble since then. This is likely the cause for the
|
||
somewhat unusual presence of rollups in our results.</p>
|
||
<p>Triage done by <strong>@simulacrum</strong>.
|
||
Revision range: <a href="https://perf.rust-lang.org/?start=69c4aa2901ffadf69deaf91b2f90604bcbc2eb36&end=9f85cd6f2ab2769c16e89dcdddb3e11d9736b351&absolute=false&stat=instructions%3Au">69c4aa290..9f85cd6</a></p>
|
||
<p>2 Regressions, 2 Improvements, 4 Mixed; 2 of them in rollups</p>
|
||
<p>31 comparisons made in total</p>
|
||
<p><a href="https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-09-14.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/3119">Rust-lang crate ownership policy</a></li>
|
||
<li><a href="https://github.com/rust-lang/rfcs/pull/3123">Scrape code examples from examples/ directory for Rustdoc</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>
|
||
<p><em>No RFCs are currently in the final comment period.</em></p>
|
||
<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: close] <a href="https://github.com/rust-lang/rust/pull/88028">Disable unused_must_use for statically known bools</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/87220">Make #[derive(A, B, ...)] cfg-eval its input only for A, B, ... and stabilize feature(macro_attributes_in_derive_output)</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/84267">Make <code>*const (), *mut ()</code> okay for FFI</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>
|
||
<p><em>No new RFCs were proposed this week.</em></p>
|
||
<h2 id="upcoming-events">Upcoming Events</h2>
|
||
<h3 id="online">Online</h3>
|
||
<ul>
|
||
<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>
|
||
<li><a href="https://www.meetup.com/Dallas-Rust/events/jqxqwryccmblc/">September 28, 2021, Dallas, TX, US - Last Tuesday - Dallas Rust</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>Gouach</strong></p>
|
||
<ul>
|
||
<li><a href="https://gouach.welcomekit.co/jobs/senior-c-software-engineer_bordeaux">Senior Embedded Rust Software Engineer (Bordeaux, FR)</a></li>
|
||
</ul>
|
||
<p><strong>Indeed</strong></p>
|
||
<ul>
|
||
<li><a href="https://www.indeed.jobs/jobs/staff-backend-rust-engineer-27316/">Staff Backend Rust Engineer (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>Enso</strong></p>
|
||
<ul>
|
||
<li><a href="https://github.com/enso-org/hiring/blob/main/people/senior-rust-developer.md">Senior Rust Developer (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>SmartThings</strong></p>
|
||
<ul>
|
||
<li><a href="https://smartthings.pinpointhq.com/jobs/22298?utm_medium=internal_referral&utm_source=pinpoint&utm_term=jkypj">Senior Software Engineer (Minneapolis, MN, US)</a></li>
|
||
</ul>
|
||
<p><strong>DEMV Systems</strong></p>
|
||
<ul>
|
||
<li><a href="https://arbeitnow.com/view/php-rust-backend-entwickler-in-hamburg-oder-remote-mwd-demv-systems-gmbh-480199">PHP / Rust Backend Entwickler in (Hamburg, DE or Remote) (m/w/d) </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>
|
||
</ul>
|
||
<p><strong>Polar Sync</strong></p>
|
||
<ul>
|
||
<li><a href="https://polarsync.breezy.hr/p/0c1d3630d39d">Principal/Senior Software Engineer - Rust/C++</a></li>
|
||
</ul>
|
||
<p><strong>SecureDNA</strong></p>
|
||
<ul>
|
||
<li><a href="https://www.securedna.org/jobs">Software Development Manager, Rust & Python (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>Kraken</strong></p>
|
||
<ul>
|
||
<li><a href="https://jobs.lever.co/kraken/53def500-b146-40da-89a8-98adfd7e84e4">Engineering Manager - Core Backend (Remote)</a></li>
|
||
<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 Banking Engineer - Rust (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>Parity Technologies</strong></p>
|
||
<ul>
|
||
<li><a href="https://www.parity.io/jobs/">Multiple Rust Engineering Positions Available (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>Edition!</p>
|
||
</blockquote>
|
||
<p>– <a href="https://www.youtube.com/watch?v=q0aNduqb2Ro">Niko and Daphne Matsakis on YouTube</a></p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1102">mark-i-m</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/pp4s9j/this_week_in_rust_408/">Discuss on r/rust</a></small></p> |