
Rust 1.21 - steveklabnik
https://blog.rust-lang.org/2017/10/12/Rust-1.21.html
======
vanderZwan
> _We now run LLVM in parallel while generating code, which should reduce peak
> memory usage._

I did a double take there, since more parallelism often has the opposite
effect (like computation, memory usage that would be spread out over time now
happens at once, causing more memory overhead). The linked github issue[0]
explains though:

> _It also allows the main thread to switch between either translation or
> running LLVM, which allows to reduce peak memory usage since not all LLVM
> module have to be kept in memory until linking._

So I guess the idea is: the code that has already been translated can be
processed by LLVM before all translation is finished, so it can also be
released earlier. Very nice!

[0] [https://github.com/rust-lang/rust/pull/43506](https://github.com/rust-
lang/rust/pull/43506)

------
kibwen
For those curious about getting involved with Rust, note that right now is an
ideal time. :) This last quarter of the year is reserved for "the impl
period", a collection of all-out heads-down sprints designed to make sure that
none of the remaining milestones from our 2017 roadmap get left behind. There
are currently 37 working groups in a variety of disciplines, some more
involved than others and some more popular than others, but mentorship is
offered to all who'd like to contribute!

See our most recent newsletter for the impl period here:
[https://internals.rust-lang.org/t/the-impl-period-
newsletter...](https://internals.rust-lang.org/t/the-impl-period-
newsletter-2/6034)

~~~
vanderZwan
What if you have _absolutely zero_ experience with LLVM or compilers in
general (beyond reading about them)

~~~
zacmps
There's plenty of groups working on rust libraries rather than directly on the
compiler.

~~~
estebank
And even in the compiler itself there's plenty of work to be done that doesn't
even come close to the LLVM and that have mentoring instructions[1]. The point
of entry that I personally found successful when starting to contribute was
modifying and expanding the compiler's diagnostic output[2], as it gives you
something to grep for and work it out from there.

Also, be aware that beyond just asking questions in the issue tracker and on
the official #rust IRC channel, each Working Group has a room on gitter[3]
where there are people more than eager to help any newcomers.

My advice would be to look out for anything that you might find interesting,
ask for help whenever you get stuck and just read the code. There's plenty of
opportunities to make an impact[4] :)

[1]: [https://github.com/rust-
lang/rust/labels/E-mentor](https://github.com/rust-lang/rust/labels/E-mentor)

[2]: [https://github.com/rust-
lang/rust/issues?utf8=%E2%9C%93&q=is...](https://github.com/rust-
lang/rust/issues?utf8=%E2%9C%93&q=is%3Aopen%20label%3AE-mentor%20label%3AA-
diagnostics)

[3]: [https://gitter.im/rust-impl-period/](https://gitter.im/rust-impl-
period/)

[4]: [https://github.com/rust-
lang/rust/blob/master/CONTRIBUTING.m...](https://github.com/rust-
lang/rust/blob/master/CONTRIBUTING.md)

------
aeleos
I have recently started to get involved helping out with the rust-bindgen
program for generating rust bindings to C++ programs. It really is amazing the
amount of work they put into creating issues for small things for new people
to fix and mentoring them through the issue. I don't know of any programming
languages that put this much work into helping new people get started. It
really was a great experience to be have bite sized things to fix that
actually feel like contributing to a project without worry that you are taking
on more than you can chew.

~~~
jnordwick
I had the same experience. I was given a small performance issue with
iterators to diagnose and had help from someone more experienced in that area.

I learned about how llvm does loop optimization and wrote a small null loop
optimization pass. It turned out to be related to another problem and not
need, but the experience was terrific.

------
vvanders
Looks like it's missing from the release notes 1.21 should also contains fixes
for building Emscripten on Win32 which was broken by some small changes in
1.20.

Given that Emscripten isn't a tier 1 platform it wasn't a big deal but wanted
to call it out in case anyone ran into it with 1.20.

~~~
steveklabnik
Yeah, we don't include all fixes in the release notes; a volunteer goes
through and looks at PRs tagged for the release notes, and possibly goes
through all the PRs to see if there's anything missing. Determining what to
include and what not to can be tricky!

Basically, the blog post is a subset of the release notes, the release notes
are a subset of PRs, and PRs are a subset of commits.

~~~
iopq
Yeah, but this post seemed pretty barren. Since I skim a lot, it felt like
nothing happened in the last release.

~~~
steveklabnik
Yes, this release was fairly small. It happens!

------
sinhpham
What happened to impl Trait? I was quite excited to see it under 1.21 in the
milestone predictions thread, but it has since been moved to "horizon".

[https://internals.rust-lang.org/t/rust-release-milestone-
pre...](https://internals.rust-lang.org/t/rust-release-milestone-
predictions/4591)

~~~
GolDDranks
To explain more besides Steve's commit, there has been another RFC that
significantly expands the scope of impl Trait. It was accepted, but it also
had the effect of punting the stabilisation of the feature a bit until things
settle down. I don't know if the "conservative" version of impl Trait is going
to land first anyway, but I find it just reassuring that people aren't rushing
things.

(For reference: The original impl Trait: [https://github.com/rust-
lang/rfcs/pull/1522](https://github.com/rust-lang/rfcs/pull/1522) The
refinement, readying it for stabilisation: [https://github.com/rust-
lang/rfcs/pull/1951](https://github.com/rust-lang/rfcs/pull/1951) The latest
one, which gives it more expressive power: [https://github.com/rust-
lang/rfcs/pull/2071](https://github.com/rust-lang/rfcs/pull/2071) )

------
Animats
Well, I rebuilt my RSS feed reader with the new Rust version, and nothing
broke. Today is going to be a good day.

~~~
bluejekyll
I have yet to see any breakage of any of my projects on stable break after an
update with rustup to new versions, and only one on nightly.

There are some deprecation warnings that I've had to cleanup, but otherwise,
it's been an amazingly stable upgrade process since the 1.0 release.

------
jnordwick
No matter how bad those Learn X in 21 Days books were, I really wish there was
something for Rust. Sometimes it seems like Rust moves too fast and docs are
always quickly out if date or fail to inclusive enough to be useful.

I often hear "since 1.x you should be doing y with z feature now but that is
only in current and the rust book doesn't have a section on it yet"

Rust to me is still very much feels to me a moving target.

~~~
biokoda
That is entirely untrue. Releases are regular, big changes are anything but.

~~~
kbenson
Responding "this is entirely untrue" to someone who is saying how something
_feels_ to them is not only overly harsh, but entirely inappropriate. You
cannot dictate people's feelings. You might think they have misconceptions
that are leading to how they feel, but that doesn't make how they feel untrue.

I can understand if you feel frustrated because you don't think this feeling
is warranted, but this is not a constructive way to express that, nor fix the
problem.

~~~
Nomentatus
I think there was just enough content in his reply to escape the accusation
that he was merely gainsaying (which would be dictating feelings, as opposed
to providing information that might dispel them.)

------
jasonlotito
Can anyone recommend a good video course for learning Rust? I find I do better
with video courses than simply reading (though I will take a look at the books
mentioned in other comments).

~~~
steveklabnik
[http://intorust.com/](http://intorust.com/) is pretty good

