Hello and welcome to another issue of This Week in Rust! Rust is a systems language pursuing the trifecta: safety, concurrency, and speed. This is a weekly summary of its progress and community. Want something mentioned? Tweet us at @ThisWeekInRust or send us a pull request. Want to get involved? We love contributions.
This Week in Rust is openly developed on GitHub. If you find any errors in this week's issue, please submit a PR.
Updates from Rust Community
News & Blog Posts
- 🎈🎉 Announcing Rust 1.26.1. 🎉🎈
- Exploring Rust fat pointers.
- Typed key pattern. A pattern for extracting values from a weakly typed map.
- aturon.log: listening and trust, part 1. Thoughts on controversies from past week.
- Clippy is removing the
#![plugin(clippy)]
API in favour ofcargo clippy
. - Fuzz testing in Rust with Cargo-fuzz.
- Wicked fast web servers in Rust - An introduction to writing a simple web server using Thruster.
- Bobbin SDK: Richer hardware abstractions for embedded systems programming.
- [video] RustFest Paris 2018 recordings.
- [podcast] Rusty Spike Podcast - episode 30. Compile times, Aaron’s new quest, books, logic programming, JetBrains, and RustConf.
GSoC Projects
- Nebulet - Booting up. Nebulet is a microkernel that executes WebAssembly. See also: Why Nebulet?
- Cargo-ebuild - GSoC week 1 report.
RSoC Projects
Crate of the Week
This week's crate is syntect, a library for syntax highlighting using Sublime Text syntax definitions. Thanks to kornel for the suggestion!
Submit your suggestions and votes for next week!
Call for Participation
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!
Some of these tasks may also have mentors available, visit the task page for more information.
- Have you ever complained that rustc is slow? We want to know more!
- rand: Add wasm_bindgen support.
- Get started with these beginner-friendly issues.
If you are a Rust project owner and are looking for contributors, please submit tasks here.
Updates from Rust Core
141 pull requests were merged in the last week
- stable point release (1.26.1)
- infer outlives requirements (RFC #2093)
- don't ICE if crate has no valid crate types left
NaN > NaN
is now false again (Breaking change, duh!)- add suggestion applicabilities to librustc and libsyntax
- add -Z no-parallel-llvm flag
- WebAssembly: fix fast-isel lowering illegal argument and return types
- remove unused lowering field and method
- quick refactoring around Substs & friends
- operate on
HirId
instead ofNodeId
inhir::Pat::each_binding
, and consequences of that - use
Ident
s for fields in HIR - remove extra calls to kill_loans_out_of_scope_at_location
- fix behaviour of divergence in while loop conditions
- fail typecheck if we encounter a bogus break
- generate "invalidates" facts when -Znll-facts is passed
- NLL facts invalidate followup
- use
AllFacts
from polonius-engine - enforce stability of const fn in promoteds
- stabilize suggestion applicability field in json output
- shrink
LiveNode
- right-size the
VecDeque
incoerce_unsized
- optimize seen Predicate filtering
- inline
try_get
- make
&Slice
a thin pointer - find the largest niche when computing layouts
- "crate-ify" paths that begin with a renamed crate
- rustc: fix another double-lint issue with
crate::
- rustc: correctly pretty-print macro delimiters
- rename
TokenStream::empty
toTokenStream::new
- underline multiple suggested replacements in the same line
- tweak
main
type arguments and where clause spans - fix span for type-only arguments
CheckLoopVisitor
: also visit closure arguments- add lint for multiple associated types
impl Trait
diagnostic/test cleanups- prohibit turbofish in
impl Trait
methods - fix naming conventions for new lints
- MIRI API refactor
- use different datastructure for MIRI relocations
- misc changes related to Miri allocations
- allow let bindings and destructuring in constants and const fn
- allow
Size
to be any validu64
- implement the chalk-engine traits
- fun testcase: What does an expression look like, that consists only of special characters?
- escape combining characters in
char::Debug
- improve
Debug
impl oftime::Duration
- add SIMD math intrinsics and gather/scatter
Unpin
changes- make
[T]::len
andstr::len
const fn - std: ensure OOM is classified as
nounwind
- stabilize
from_ref
- stabilize
ops::RangeBounds
- stabilize
Formatter
alignment - remove the unstable Float trait
- add the 2018 edition of the book to doc.rust-lang.org
- support
--target
argument incargo rustdoc
New Contributors
- Benjamin Lamowski
- Cory Sherman
- Jaro Fietz
- Joe ST
- Martin Carton
- Mateusz Mikuła
- Nick Babcock
- Takanori Ishibashi
- uuttff8
Approved RFCs
Changes to Rust follow the Rust RFC (request for comments) process. These are the RFCs that were approved for implementation this week:
- RFC 2386:
#[used]
static variables. - RFC 2294: Allow
if let
guards inmatch
expressions. - RFC 2421: Keyword unreservations (pure, sizeof, alignof, offsetof).
Final Comment Period
Every week the team announces the 'final comment period' for RFCs and key PRs which are reaching a decision. Express your opinions now. This week's FCPs are:
- [disposition: merge] Reserve
throw
andfail
as keywords in edition 2018. - [disposition: merge] Unstable features accidentally usable on the Stable release chanel are still unstable.
- [disposition: postpone] Implied
#[derive(SuperTrait)]
. - [disposition: postpone] DynSized without ?DynSized — Lint against use of
extern type
insize_of_val
, and more.
New RFCs
Upcoming Events
The community team is trying to improve outreach to meetup organisers. Please fill out their call for contact info if you are running or used to run a meetup.
- Jun 2. Nairobi, KE - Rust on the BBC micro:bit.
- Jun 2. Florianópolis, BR - 1º Encontro Rust Floripa.
- Jun 3. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Jun 4. Karlsruhe, DE - Rust Hack & Learn Karlsruhe - Meetup & Talks.
- Jun 5. Rust Community Content Subteam Meeting at #rust-content on irc.mozilla.org.
- Jun 5. Johannesburg, ZA - Monthly Meetup of the Johannesburg Rustaceans.
- Jun 6. Rust Events Team Meeting.
- Jun 6. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Jun 6. Indianapolis, US - Indy.rs.
- Jun 6. Atlanta, US - Grab a beer with fellow Rustaceans.
- Jun 10. Mountain View, US - Open Table / Icebreaker: what projects are you working on.
- Jun 11. Seattle, US - Monthly meetup.
- Jun 13. Berlin, DE - OpenTechSchool - Rust Hack and Learn.
- Jun 13. Rust Community Team Meeting at #rust-community on irc.mozilla.org.
- Jun 13. Vancouver, CA - Rust Study/Hack/Hang-out night.
- Jun 14. Columbus, US - Columbus Rust Society - Monthly Meeting.
- Jun 14. San Diego, US - San Diego Rust June Meetup.
- Jun 14. Utah Valley, US - Utah Rust meetup.
- Aug 17. Portland, US - RustConf 2018. Registration is now open.
If you are running a Rust event please add it to the calendar to get it mentioned here. Email the Rust Community Team for access.
Rust Jobs
No jobs listed for this week.
Tweet us at @ThisWeekInRust to get your job offers listed here!
Quote of the Week
No quote was selected for QotW.