208 lines
19 KiB
Plaintext
208 lines
19 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/11/01/Rust-1.56.1.html">Announcing Rust 1.56.1</a></li>
|
||
<li><a href="https://blog.rust-lang.org/2021/11/01/cve-2021-42574.html">Security advisory for rustc (CVE-2021-42574)</a></li>
|
||
</ul>
|
||
<h3 id="foundation">Foundation</h3>
|
||
<ul>
|
||
<li><a href="https://foundation.rust-lang.org/posts/2021-10-26-member-spotlight-tag1/">Member Spotlight: Tag1</a></li>
|
||
</ul>
|
||
<h3 id="projecttooling-updates">Project/Tooling Updates</h3>
|
||
<ul>
|
||
<li><a href="https://sixtyfps.io/thisweek/2021-11-01.html">SixtyFPS (GUI crate): Changelog for 31th of October 2021</a></li>
|
||
<li><a href="https://mssun.me/research/ccs21mirchecker.html">MirChecker: Detecting Bugs in Rust Programs via Static Analysis</a></li>
|
||
<li><a href="https://www.apollographql.com/blog/announcement/tooling/apollo-rs-graphql-tools-in-rust/?utm_campaign=2021-11-01_apollo-rs&utm_medium=social&utm_source=twitter">apollo-rs: spec-compliant GraphQL tools in Rust</a></li>
|
||
<li><a href="https://thephilbert.io/2021/11/01/gcc-rust-monthly-report-11-october-2021/">GCC Rust Monthly Report #11 October 2021</a></li>
|
||
<li><a href="https://www.fluvio.io/news/this-week-in-fluvio-0011/">This week in Fluvio #11: the programmable streaming platform</a></li>
|
||
<li><a href="https://datafuselabs.github.io/weekly/2021-11-03-databend-weekly/">This week in Databend #14: an elastic and reliable cloud warehouse</a></li>
|
||
</ul>
|
||
<h3 id="research-papers">Research Papers</h3>
|
||
<ul>
|
||
<li><a href="https://www.micahlerner.com/2021/10/31/rudra-finding-memory-safety-bugs-in-rust-at-the-ecosystem-scale.html">Rudra: Finding Memory Safety Bugs in Rust at the Ecosystem Scale</a></li>
|
||
</ul>
|
||
<h3 id="observationsthoughts">Observations/Thoughts</h3>
|
||
<ul>
|
||
<li><a href="https://fkohlgrueber.github.io/blog/tree-structure-of-file-systems/">The Tree Structure of File Systems</a></li>
|
||
<li><a href="https://rustmagazine.github.io/rust_magazine_2021/chapter_10/toc.html">[ZH] Rust Chinese Magazine Issue 10 has been released!</a></li>
|
||
<li><a href="https://rust-coding-guidelines.github.io/rust-coding-guidelines-zh/">[ZH] The first draft of the Rust Secure Coding Specification in Chinese has been released. Everyone is welcome to contribute!</a></li>
|
||
<li><a href="https://zhuanlan.zhihu.com/p/428305373">[ZH] Trojan Source| Hiding invisible vulnerabilities in Rust code</a></li>
|
||
</ul>
|
||
<h3 id="rust-walkthroughs">Rust Walkthroughs</h3>
|
||
<ul>
|
||
<li><a href="https://medium.com/chainsafe-systems/mina-rs-update-some-rust-serialization-tricks-with-serde-153518830f97">Advanced Serde - Loose type deserialization for non-self-describing protocols</a></li>
|
||
<li><a href="https://acv.engineering/posts/an-intro-to-the-rust-programming-language/">An Intro to the Rust Programming Language</a></li>
|
||
<li><a href="https://reltech.substack.com/p/getting-started-with-raspberry-pi">Getting Started with Rust on a Raspberry Pi Pico (Part 2)</a></li>
|
||
<li><a href="https://www.poor.dev/blog/terminal-anatomy/">Anatomy of a Terminal Emulator</a></li>
|
||
<li><a href="https://www.jameselford.com/blog/working-with-signals-in-rust-pt1-whats-a-signal/">Working with signals in Rust - some things that signal handlers can't handle</a></li>
|
||
<li><a href="https://www.shogan.co.uk/development/my-first-rust-app-initial-impressions-and-what-i-struggled-with/">Beginning Rust: Writing a Small CLI Tool</a></li>
|
||
<li><a href="https://dev.to/calebsander/git-internals-part-1-the-git-object-model-474m">Git Internals part 1: The git object model</a></li>
|
||
<li><a href="https://github.com/ockam-network/ockam/tree/develop/documentation/use-cases/run-ockam-on-riscv">Getting started with Rust on RISC-V Linux</a></li>
|
||
<li><a href="https://www.infinyon.com/blog/2021/10/smartstream-array-map-reddit/">Streaming the Reddit API using Fluvio's WASM ArrayMap</a></li>
|
||
<li>[video] <a href="https://youtu.be/K2oHkucybNs">I'm learning Rust - Setup & fundamentals</a></li>
|
||
<li>[video] <a href="https://skillsmatter.com/skillscasts/17292-rust-london-october2021">Rust London: Building the Internet Of (Trusted) Things with Ockam and Embedded Rust</a></li>
|
||
<li>[video] <a href="https://skillsmatter.com/skillscasts/17294-actor-programming-with-ockam-workers">Rust London: Actor Programming with Ockam Workers</a></li>
|
||
<li>[video] <a href="https://skillsmatter.com/skillscasts/17295-how-to-end-to-end-encrypt-all-application-layer-communication-with-ockam">Rust London: How to end-to-end encrypt all application layer communication - with Ockam</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=tGn0mQF0804">Implementing Hazard Pointers in Rust (part 3)</a></li>
|
||
<li>[series] [video] <a href="https://www.youtube.com/watch?v=1EU-uUwbRx8">Writing a Programming Language (in Rust) 3: List destructuring</a></li>
|
||
<li>[series] [video] <a href="https://www.youtube.com/watch?v=w31vYT2UVXU">Writing a Programming Language (in Rust) 4: List unspread and list iteration</a></li>
|
||
<li>[series] [video] <a href="https://www.youtube.com/watch?v=NRf2v9eCzDg">Writing a Programming Language (in Rust) 5: Function calls (Part 1)</a></li>
|
||
<li>[series] [video] <a href="https://www.youtube.com/watch?v=Ml8kwsq_PSo&list=PLv0rYYvcn-23cGZUATZdCN-mX4Yx_HFy4&index=1">Rust Book Club</a></li>
|
||
</ul>
|
||
<h3 id="miscellaneous">Miscellaneous</h3>
|
||
<ul>
|
||
<li><a href="https://www.guidedtrack.com/programs/kfqw8vs/run">Rust Editor Experience Survey</a></li>
|
||
<li><a href="https://www.infinyon.com/blog/2021/10/smartstream-array-map-reddit/">Streaming the Reddit API using Fluvio's WASM ArrayMap</a></li>
|
||
<li>[video] [IT] <a href="https://video.linux.it/videos/watch/01b44259-e257-4bad-9685-8c91735aa08b">Introduzione a 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/hkmatsumoto/roogle">roogle</a>, a type-based Rust API search engine inspired by Haskell's Hoogle.</p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/978">Hirochika Matsumoto</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/ockam-network/ockam/issues/2161">ockam - Remove/clean up pub extern crate in top level of ockam_core</a></li>
|
||
<li><a href="https://github.com/ockam-network/ockam/issues/2162">ockam - Remove unnecessary core/heapless/hashbrown re-exports from signature_core::lib</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>316 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2021-10-25..2021-11-01">merged in the last week</a></p>
|
||
<ul>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90462">fix CVE-2021-42574</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89652">add LLVM Control Flow Integrity support to the Rust compiler</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89581">add <code>-Z no-unique-section-names</code> to reduce ELF header bloat</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90267">fix: inner attribute followed by outer attribute causing ICE</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90399">skipping verbose diagnostic suggestions when calling <code>.as_ref()</code> on type not implementing <code>AsRef</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90202">improve and test cross-crate hygiene</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90145">use <code>SortedMap</code> in HIR</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89677">stabilize <code>is_symlink()</code> for <code>Metadata</code> and <code>Path</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89951">stabilize <code>option_result_unwrap_unchecked</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/86336">impl <code>Pattern</code> for <code>char</code> array</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89876">make most <code>std::ops</code> traits <code>const</code> on numeric types</a></li>
|
||
<li><a href="https://github.com/rust-lang/rustc_codegen_gcc/pull/102">codegen_gcc: remove unused dependency on object</a></li>
|
||
<li><a href="https://github.com/rust-lang/rustc_codegen_gcc/pull/108">codegen_gcc: fix negation operation</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-bindgen/pull/2108">bindgen: don't generate 2^64 byte padding fields on unions</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-bindgen/pull/2109">bindgen: avoid case of a self-referential type alias</a></li>
|
||
<li><a href="https://github.com/rust-lang/cargo/pull/10017">cargo: change <code>--scrape-examples</code> flag to <code>-Z rustdoc-scrape-examples</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/cargo/pull/9525">cargo: scrape code examples from <code>examples/</code> directory for rustdoc</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88268">rustdoc: fix generics generation in search index</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90278">rustdoc: use better highlighting for <code>*const</code>, <code>*mut</code>, and <code>&mut</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/90333">rustdoc: remove flicker during page load</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7810">clippy: move <code>if_then_panic</code> to pedantic and rename to <code>manual_assert</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7847">clippy: fix false positive in <code>match_overlapping_arm</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7860">clippy: fix <code>question_mark</code> false positive on custom error type</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7875">clippy: add `unit-hash lint</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7878">clippy: new lint: <code>string-slice</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7890">clippy: ignore references to type aliases in <code>ptr_arg</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7891">clippy: fix ICE in <code>undocumented_unsafe_blocks</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7895">clippy: disable <code>if_not_else</code> lints from firing on <code>else</code>-<code>if</code>s</a></li>
|
||
<li><a href="https://github.com/rust-lang/rustfmt/pull/5019">rustfmt: prevent trailing whitespace in where clause bound predicate</a></li>
|
||
<li><a href="https://github.com/rust-lang/rustfmt/pull/5035">rustfmt: retain trailing comments in module when using <code>rustfmt::skip</code> attribute</a></li>
|
||
</ul>
|
||
<h3 id="rust-compiler-performance-triage">Rust Compiler Performance Triage</h3>
|
||
<p>The only significant regressions were 1. two PRs that slowed down doc
|
||
generation, and 2. some slowdown from the new lints to flag occurrences of
|
||
Unicode bidirectional control characters. The doc generation regression is being
|
||
investigated.</p>
|
||
<p>Triage done by <strong>@pnkfelix</strong>.
|
||
Revision range: <a href="https://perf.rust-lang.org/?start=3c8f001d454b1b495f7472d8430ef8fdf10aac11&end=6384dca100f3cedfa031a9204586f94f8612eae5&absolute=false&stat=instructions%3Au">3c8f00..6384dc</a></p>
|
||
<p>6 Regressions, 3 Improvements, 1 Mixed; 4 of them in rollups
|
||
39 comparisons made in total</p>
|
||
<p><a href="https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-11-02.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/3176">Multiple artifact deps on the same crate with different names, for different targets</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>[disposition: merge] <a href="https://github.com/rust-lang/rfcs/pull/3185">Static async fn in traits</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rfcs/pull/2972">Constrained Naked Functions</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/90473">stabilize format args capture</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/90128">Stabilize -Z symbol-mangling-version=v0 as -C symbol-mangling-version=v0</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/90058">Stabilize -Z strip as -C strip</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/89551">Stabilize <code>const_raw_ptr_deref</code> for <code>*const T</code></a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/88805">Clarification of default socket flags</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/88714">use CLOCK_BOOTTIME in <code>Instant::now</code></a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/87479">GATs: Decide whether to have defaults for <code>where Self: 'a</code></a></li>
|
||
</ul>
|
||
<h3 id="new-rfcs">New RFCs</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/rust-lang/rfcs/pull/3189">take on bool</a></li>
|
||
<li><a href="https://github.com/rust-lang/rfcs/pull/3191">New Cargo and Rust options to support embedding Natvis into a PDB</a></li>
|
||
</ul>
|
||
<h2 id="upcoming-events">Upcoming Events</h2>
|
||
<h3 id="online">Online</h3>
|
||
<ul>
|
||
<li><a href="https://www.meetup.com/indyrs/events/281258179">November 3, 2021, Indianapolis, IN, US - Indy.rs - with Social Distancing - Indy Rust</a></li>
|
||
<li><a href="https://www.meetup.com/San-Diego-Rust/events/281801412">November 9, 2021, San Diego, CA, US - San Diego Rust November 2021 Tele-Meetup - San Diego Rust</a></li>
|
||
<li><a href="https://berline.rs/">November 9, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs</a></li>
|
||
<li><a href="https://www.meetup.com/Seattle-Rust-Meetup/events/gskksryccpbmb/">November 9, 2021, Seattle, WA, US - Monthly Meetup - Seattle Rust Meetup</a></li>
|
||
<li><a href="https://discord.gg/9Xj8H2EXTD">November 10, 2021, Malaysia - Rust Meetup - Rust Malaysia</a></li>
|
||
<li><a href="https://linuxfoundation.org/webinars/rust-for-linux-writing-abstractions-and-drivers/">November 11, 2021 - Rust For Linux: Writing Safe Abstractions & Drivers - The Linux Foundation</a></li>
|
||
<li><a href="https://www.meetup.com/Vancouver-Rust/events/zkqvjsyccpbwb/">November 17, 2021, Vancouver, BC, CA - Borrowing and Lifetimes through Metaphors - Vancouver Rust</a></li>
|
||
</ul>
|
||
<h3 id="north-america">North America</h3>
|
||
<ul>
|
||
<li><a href="https://www.meetup.com/Rust-ATL/events/lhpkmsyccpbnb/">November 10, 2021, Atlanta, GA, US - Grab a beer with fellow Rustaceans - Rust Atlanta</a></li>
|
||
<li><a href="https://www.meetup.com/Desert-Rustaceans/events/281729697">November 10, 2021, Mesa, AZ, US - Booze.rs - Desert Rust</a></li>
|
||
</ul>
|
||
<h3 id="europe">Europe</h3>
|
||
<ul>
|
||
<li><a href="https://www.meetup.com/belgrade-rust-meetup-group/events/281523208/">November 11, 2021, Belgrade, RS - First! - Belgrade Rust Meetup Group</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>System Initiative</strong></p>
|
||
<ul>
|
||
<li><a href="https://www.systeminit.com/jobs/software-engineer-iii">Software Engineer III (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>AdInMo</strong></p>
|
||
<ul>
|
||
<li><a href="https://www.adinmo.com/project/senior-back-end-engineer/">Senior Back-End Engineer (UK, UA or Remote)</a></li>
|
||
</ul>
|
||
<p><strong>Sigma Prime</strong></p>
|
||
<ul>
|
||
<li><a href="https://github.com/sigp/positions-vacant/blob/master/rust-network-developer.md">Rust Network Developer (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>Metawork</strong></p>
|
||
<ul>
|
||
<li><a href="https://jobs.ashbyhq.com/metawork/05a36b82-22d4-48c6-b31d-93ea785a3cea">Product Engineer (Remote US)</a></li>
|
||
<li><a href="https://jobs.ashbyhq.com/metawork/90575f85-de36-461e-a540-fbee126ad186">Platform Engineer (Remote US)</a></li>
|
||
</ul>
|
||
<p><strong>Timescale</strong></p>
|
||
<ul>
|
||
<li><a href="https://boards.greenhouse.io/timescale/jobs/5542785002">Senior Rust Engineer (Remote: US Timezones)</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>I always tell myself that code quickly written just to compile looks like Order 66 executed on Christmas day </p>
|
||
<p>[...]</p>
|
||
<p>Clones and unwrapping as far as the eye can see.</p>
|
||
</blockquote>
|
||
<p>– <a href="https://www.reddit.com/r/rust/comments/qjgwhr/whats_your_vote_for_funniest_feature_of_rust/hiq37zq">Dhghomon on /r/rust</a></p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1129">UtherII</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/qmd3qv/this_week_in_rust_415/">Discuss on r/rust</a></small></p> |