226 lines
22 KiB
Plaintext
226 lines
22 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>
|
||
<h3 id="projecttooling-updates">Project/Tooling Updates</h3>
|
||
<ul>
|
||
<li><a href="https://www.fluvio.io/news/this-week-in-fluvio-0007/">This week in Fluvio #7: the programmable streaming platform</a></li>
|
||
<li><a href="https://datafuselabs.github.io/weekly/2021-10-06-databend-weekly/">This week in Databend #10: an elastic and reliable cloud warehouse</a></li>
|
||
<li><a href="https://sixtyfps.io/thisweek/2021-10-04.html">SixtyFPS (GUI crate) weekly update for 3rd of October 2021</a></li>
|
||
<li><a href="https://thephilbert.io/2021/10/04/gcc-rust-monthly-report-10-september-2021/">GCC Rust Monthly Report #10 September 2021</a></li>
|
||
<li><a href="https://rust-analyzer.github.io/thisweek/2021/10/04/changelog-97.html">Rust Analyzer Changelog #97</a></li>
|
||
<li><a href="https://amethyst.rs/posts/amethyst--starting-fresh">Amethyst – Starting fresh</a></li>
|
||
</ul>
|
||
<h3 id="research-and-papers">Research and Papers</h3>
|
||
<ul>
|
||
<li><a href="https://dl.acm.org/doi/abs/10.1145/3453483.3454084">SyRust: automatic testing of Rust libraries with semantic-aware program synthesis</a></li>
|
||
<li><a href="https://ocamlpro.github.io/verification_for_dummies/">Verification for dummies: SMT and Induction</a> using the <a href="https://github.com/OCamlPro/mikino_bin">mikino</a> model-checker</li>
|
||
<li><a href="https://arxiv.org/abs/2110.01098">Does the Bronze Garbage Collector Make Rust Easier to Use? A Controlled Experiment</a></li>
|
||
</ul>
|
||
<h3 id="newsletters">Newsletters</h3>
|
||
<ul>
|
||
<li><a href="https://rust-osdev.com/this-month/2021-09/">This Month in Rust OSDev (September 2021)</a></li>
|
||
<li><a href="https://rustinblockchain.org/newsletters/rib-newsletter-28/">Rust in Blockchain #28</a></li>
|
||
</ul>
|
||
<h3 id="observationsthoughts">Observations/Thoughts</h3>
|
||
<ul>
|
||
<li><a href="https://codeandbitters.com/published-crate-analysis/">Does the published crate match the upstream source?</a></li>
|
||
<li><a href="https://medium.com/@cedricbeust/what-rust-could-learn-from-kotlin-b32ebe2da28d">What Rust could learn from Kotlin</a></li>
|
||
<li><a href="https://nullderef.com/blog/plugin-dynload/">Plugins in Rust: Diving into Dynamic Loading</a></li>
|
||
<li><a href="https://tweedegolf.nl/blog/62/measuring-power-consumption-sync-vs-async">Measuring power consumption: sync vs. async</a></li>
|
||
<li><a href="https://lwn.net/Articles/870555/">Using Rust for kernel development</a></li>
|
||
<li><a href="https://blog.phylum.io/spark-and-rust-how-to-build-fast-distributed-and-flexible-analytics-pipelines">Spark and Rust - How to Build Fast, Distributed and Flexible Analytics Pipelines with Side Effects</a></li>
|
||
<li><a href="https://paulmck.livejournal.com/62436.html">So You Want to Rust the Linux Kernel?</a></li>
|
||
<li><a href="https://zhuanlan.zhihu.com/p/417431284">[ZH] Rust Web Eco Watch| SeaORM: To be the Rust version of ActiveRecord </a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=k023OIxlzpA&list=PL85XCvVPmGQgWcpd230SUixObnBoL9cif">Talks from Rust Computer Vision Meetup 2021-09-29 (YouTube playlist)</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=VQdStWU2ewY">Rust v.s Java 17 Pattern Matching</a></li>
|
||
<li>[audio] <a href="https://rustacean-station.org/episode/040-louis-pilford/">Gleam with Louis Pilfold</a></li>
|
||
</ul>
|
||
<h3 id="rust-walkthroughs">Rust Walkthroughs</h3>
|
||
<ul>
|
||
<li><a href="https://dev.to/aero/giving-your-json-a-web-api-with-rust-290">Giving Your JSON a Web API with Rust</a></li>
|
||
<li><a href="https://nrxus.github.io/faux/guide/exporting-mocks.html">Exporting Test Mocks Across Crates</a></li>
|
||
<li><a href="https://windsoilder.github.io/writing_dockerfile_in_rust_project.html">Writing dockerfile in rust project</a></li>
|
||
<li><a href="https://passcod.name/technical/rust-crimes-enum-ints.html">Rust crimes: Enum ints</a></li>
|
||
<li><a href="https://medium.com/@fujita.tomonori/scalable-server-design-in-rust-with-tokio-4c81a5f350a3">Scalable server design in Rust with Tokio</a></li>
|
||
<li><a href="https://dev.to/ballpointcarrot/running-rust-on-aws-lambda-on-arm64-4h28">Running Rust on AWS Lambda on ARM64</a></li>
|
||
<li><a href="https://hub.qovery.com/guides/tutorial/how-to-deploy-a-rust-rest-api-application-on-aws-with-ease/?utm_source=twitter.com&utm_medium=social&utm_campaign=because-some-users-asked-how-to-deploy-r&utm_content=54750877">How to deploy a Rust REST API application on AWS with ease</a></li>
|
||
<li>[PT] <a href="https://dev.to/higordiego/rust-borrowing-1220">Rust - Borrowing?</a></li>
|
||
<li>[series] <a href="https://medium.com/@otukof/build-your-text-editor-with-rust-678a463f968b">Build Your Text Editor With Rust!</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=t6rlp0TXE2I&list=PL4k64WemroGkSMVCGvtksaYvzz4mvOzfK&index=2">Building a Reddit Ticker with Rust and Flutter using Rid and Bloc/Cubit</a></li>
|
||
<li>[video] <a href="https://www.youtube.com/watch?v=8_HPKGZGM5I">Pattern Syntax 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://crates.io/crates/pubgrub">pubgrub</a>, a Rust implementation of the state of the art version solving algorithm.</p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/crate-of-the-week/2704/968">Louis Pilfold</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>
|
||
<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>
|
||
<ul>
|
||
<li><a href="https://github.com/rust-lang/this-week-in-rust/issues/2469">This Week in Rust is looking for additional editors</a></li>
|
||
<li><a href="https://veloren.net/hacktoberfest-2021/">Veloren will be participating in Hacktoberfest 2021!</a></li>
|
||
<li><a href="https://rustfest.world/news/introducing-rust-in-arts">RustFest - Introducing Rust in Arts</a></li>
|
||
<li><a href="https://github.com/jplatte/caniuse.rs/issues/16">caniuse.rs - Data to add</a></li>
|
||
<li><a href="https://github.com/rust-lang/cargo/labels/E-help-wanted">cargo - Help Wanted Issues</a></li>
|
||
</ul>
|
||
<p><strong>ockam</strong></p>
|
||
<ul>
|
||
<li><a href="https://github.com/ockam-network/ockam/issues/1928">Implement IntoIterator/FromIterator for AddressSet</a></li>
|
||
<li><a href="https://github.com/ockam-network/ockam/issues/1944">Split Context methods accepting <code>Into<T></code> generics up to improve compile time and binary size</a></li>
|
||
</ul>
|
||
<p><strong>jsonschema-rs</strong></p>
|
||
<ul>
|
||
<li><a href="https://github.com/Stranger6667/jsonschema-rs/issues/288">Implement unevaluatedProperties</a></li>
|
||
<li><a href="https://github.com/Stranger6667/jsonschema-rs/issues/287">Implement unevaluatedItems</a></li>
|
||
<li><a href="https://github.com/Stranger6667/jsonschema-rs/issues/286">Implement dependentRequired & dependentSchemas</a></li>
|
||
<li><a href="https://github.com/Stranger6667/jsonschema-rs/issues/236">Python: Add an iterator over validation errors</a></li>
|
||
</ul>
|
||
<h2 id="updates-from-the-rust-project">Updates from the Rust Project</h2>
|
||
<p>266 pull requests were <a href="https://github.com/search?q=is%3Apr+org%3Arust-lang+is%3Amerged+merged%3A2021-09-27..2021-10-04">merged in the last week</a></p>
|
||
<ul>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/84267">make <em>const (), </em>mut () okay for FFI</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89239">resolve: cache module loading for all foreign modules</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89447">improve error message for missing angle brackets in <code>[_]::method</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89408">avoid nondeterminism in <code>trimmed_def_paths</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89340">improve error message for printf-style format strings</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89327">pick one possible lifetime in case there are multiple choices</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89293">suggest using the path separator for tuple struct</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89248">suggest similarly named associated items in trait impls</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89249">improve cause information for NLL higher-ranked errors</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89233">hide <code><...> defined here</code> note if the source is not available</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89255">fix incorrect disambiguation suggestion for associated items</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89489">fix unsound optimization with explicit variant discriminants</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89250">don't anonymize bound region names during typeck</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89214">pass real crate-level attributes to <code>pre_expansion_lint</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89110">use larger span for adjustment THIR expressions</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88963">coerce const FnDefs to implement const Fn traits</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/86853">constify ?-operator for <code>Result</code> and <code>Option</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88353">partially stabilize <code>array_methods</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/87998">avoid spurious "previous iteration of loop" errors</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89443">include the length in <code>BTree</code> hashes</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88060">optimize unnecessary check in <code>Vec::retain</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/88452"><code>VecDeque</code>: improve performance for <code>From<[T; N]</code>></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/89335">optimize <code>is_sorted</code> for <code>Range</code> and <code>RangeInclusive</code></a></li>
|
||
<li>[optimize <code>str::from_utf8()</code> validation when slice contains multibyte chars and <code>str.chars().count()</code> in all * <a href="https://github.com/rust-lang/rust/pull/89165">Fix <code>read_to_end</code> to not grow an exact size buffer</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/87870">make <code><[T]>::split_at_unchecked</code> and <code><[T]>::split_at_mut_unchecked</code> public</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/87910">mark unsafe methods <code>NonZero*::unchecked_</code>{<code>add</code>, <code>mul</code>} as const</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust/pull/86828">const fn for <code>Option::</code>{<code>copied</code>, <code>take</code>, <code>replace</code>}</a>
|
||
cases](https://github.com/rust-lang/rust/pull/88834)</li>
|
||
<li><a href="https://github.com/rust-lang/hashbrown/pull/296">hashbrown: relax the bounds on <code>HashSet</code>: <code>Debug</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7747">clippy: correctly handle signs in exponents in <code>numeric_literal::format()</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7741">clippy: make <code>if_then_panic</code> handle situation of <code>BinOpKind::And || BinOpKind::Or</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7338">clippy: re-write <code>shadow</code> lints</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7734">clippy: make <code>doc_unsafe</code> warn on unsafe traits as well</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7677">clippy: fix bug for <code>large_enum_variants</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7608">clippy: add new 'while_let_some_result' linting</a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7762">clippy: add lint <code>equatable_if_let</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7761">clippy: fix ICE in <code>implicit_hasher</code></a></li>
|
||
<li><a href="https://github.com/rust-lang/rust-clippy/pull/7755">clippy: exclude enum from derivable impls</a></li>
|
||
</ul>
|
||
<h3 id="rust-compiler-performance-triage">Rust Compiler Performance Triage</h3>
|
||
<p>A fairly busy week, with a relatively high percentage of PRs landing with
|
||
regressions and improvements. The overall trajectory is fairly neutral for this
|
||
week though.</p>
|
||
<p>Triage done by <strong>@simulacrum</strong>.
|
||
Revision range: <a href="https://perf.rust-lang.org/?start=83f147b3baf21acfc367a6da1045d212cd3957e4&end=25ec8273855fde2d72ae877b397e054de5300e10&absolute=false&stat=instructions%3Au">83f147b..25ec82</a></p>
|
||
<p>5 Regressions, 5 Improvements, 5 Mixed; 1 of them in rollups</p>
|
||
<p>43 comparisons made in total</p>
|
||
<p><a href="https://github.com/rust-lang/rustc-perf/blob/master/triage/2021-10-05.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>
|
||
<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: merge] <a href="https://github.com/rust-lang/rust/pull/89542">Partially stabilize duration_consts_2</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/89509">Stabilize unreachable_unchecked as const fn</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/89507">Add <code>#[repr(i8)]</code> to Ordering</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/89433">Fix ctrl-c causing reads of stdin to return empty on Windows.</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/89381">Tracking Issue for saturating_div</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/89337">Avoid allocations and copying in <code>Vec::leak</code></a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/88652">linux/aarch64 Now() should be actually_monotonic()</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/88300">Stabilise unix_process_wait_more, extra ExitStatusExt methods</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/88041">Make all proc-macro back-compat lints deny-by-default</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/87704">Windows: Resolve process::Command program without using the current directory</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/87467">Implement RefUnwindSafe for <code>Rc<T></code></a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/pull/86984">Reject octal zeros in IPv4 addresses</a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/73179">Tracking Issue for methods to go from nul-terminated <code>Vec<u8></code> to CString </a></li>
|
||
<li>[disposition: merge] <a href="https://github.com/rust-lang/rust/issues/71436">Tracking issue for <code>proc_macro::is_available()</code></a></li>
|
||
<li>[disposition: close] <a href="https://github.com/rust-lang/rust/issues/58935">Tracking issue for <code>alloc::prelude</code></a></li>
|
||
</ul>
|
||
<h3 id="new-rfcs">New RFCs</h3>
|
||
<ul>
|
||
<li><a href="https://github.com/rust-lang/rfcs/pull/3180">Cargo --crate-type CLI Argument</a></li>
|
||
</ul>
|
||
<h2 id="upcoming-events">Upcoming Events</h2>
|
||
<h3 id="online">Online</h3>
|
||
<ul>
|
||
<li><a href="https://discord.gg/yNtPTb2">October 9, 2021 - Rust Gamedev Discord - Rust Gamedev Monthly Meetup</a></li>
|
||
<li><a href="https://berline.rs/">October 12, 2021, Berlin, DE - Rust Hack and Learn - Berline.rs</a></li>
|
||
<li><a href="https://www.meetup.com/Seattle-Rust-Meetup/events/gskksryccnbqb/">October 12, 2021, Seattle, WA, US - Monthly meetup - Seattle Rust Meetup</a></li>
|
||
<li><a href="https://rust.bettercode.eu/">October 13, 2021 - betterCode Rust</a></li>
|
||
<li><a href="https://www.meetup.com/MUCplusplus/events/281231257">October 13, 2021 - C++/Rust: Learning from Each Other - MUC++</a></li>
|
||
<li><a href="https://www.meetup.com/Rust-Los-Angeles/events/280981968/">October 13, 2021, Los Angeles, CA, US - Processing shaders in Rust with Dzmitry Malyshau - Rust Los Angeles</a></li>
|
||
<li><a href="https://www.meetup.com/Buffalo-Rust-Meetup/events/281236385/">October 20, 2021, Buffalo, NY, US - Buffalo Rust User Group, Alternate Day - Buffalo Rust</a></li>
|
||
<li><a href="https://www.meetup.com/Vancouver-Rust/events/zkqvjsyccnbbc/">October 20, 2021, Vancouver, BC, CA - WASM plugin for Istio - Vancouver Rust</a></li>
|
||
</ul>
|
||
<h3 id="north-america">North America</h3>
|
||
<ul>
|
||
<li><a href="https://www.meetup.com/Rust-ATL/events/lhpkmsyccnbrb/">October 13, 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>Grafbase</strong></p>
|
||
<ul>
|
||
<li><a href="https://careers.grafbase.com/jobs/1345933-backend-engineer">Backend Engineer (Remote)</a></li>
|
||
</ul>
|
||
<p><strong>Jigzi</strong></p>
|
||
<ul>
|
||
<li><a href="https://angel.co/company/jewish-interactive/jobs/1682182-frontend-rust-developer">Software Engineer - WebAssembly, Frontend (remote)</a></li>
|
||
</ul>
|
||
<p><strong>pganalyze</strong></p>
|
||
<ul>
|
||
<li><a href="https://devitjobs.us/jobs/pganalyze-Senior-Backend-Engineer">Senior Backend Engineer - Rust (remote)</a></li>
|
||
</ul>
|
||
<p><strong>Oso</strong></p>
|
||
<ul>
|
||
<li><a href="https://jobs.lever.co/oso/70ed08c0-521f-4089-a51c-422a73f64366">Software Engineer (NY/Remote)</a></li>
|
||
<li><a href="https://jobs.lever.co/oso/0b65731e-4cf4-4e42-96ed-5f985f08fa66">Developer Advocate (NY/Remote)</a></li>
|
||
<li><a href="https://www.osohq.com/company/jobs">And more...</a></li>
|
||
</ul>
|
||
<p><strong>Kraken</strong></p>
|
||
<ul>
|
||
<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 Rust Engineer - Banking (Remote)</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>There's a common trope among people unfamiliar with rust where they assume that if you use unsafe at all, then it's just as unsafe as C and rust provided no benefit. Comparing C's approach to safety vs Rust's is like comparing an <a href="https://en.wikipedia.org/wiki/Open-world_assumption">open world assumption</a> to a closed world assumption in formal logic systems. In C, you publish your api if it's possible to use correctly (open world). In Rust, you publish a safe api if it's <strong>im</strong> possible to use <strong>in</strong> correctly (closed world). Rust's key innovation here is that it enables you to build a 'bridge' from open world (unsafe) to a closed world (safe), a seemingly impossible feat that feels like somehow pairwise reducing an uncountable infinity with a countable infinity. Rust's decision to design an analogous closed-world assumption for safe code is extremely powerful, but it seems very hard for old school C programmers to wrap their head around it.</p>
|
||
</blockquote>
|
||
<p>– <a href="https://www.reddit.com/r/rust/comments/pzo1v9/comment/hf2thv2/?utm_source=reddit&utm_medium=web2x&context=3">/u/infogulch on /r/rust</a></p>
|
||
<p>Thanks to <a href="https://users.rust-lang.org/t/twir-quote-of-the-week/328/1122">Alice Ryhl</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/q3pb94/this_week_in_rust_411/">Discuss on r/rust</a></small></p> |