Skip to content

Commit 4fab8ff

Browse files
committed
Edits
1 parent 40094bf commit 4fab8ff

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

_posts/2017-02-09-Rust-1.15.1.md

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,15 @@ This release fixes two issues, a soundness bug in the new
2727
components of the Rust distribution were [not compiled with `-fPIC`][fpic]. The
2828
latter results in the text section of executables being writable in some
2929
configurations, including common Linux configurations, subverting an important
30-
attack mitigation, and causing longer startup times by causing the linker to do
30+
attack mitigation, and creating longer startup times by causing the linker to do
3131
more work. For mostly-Rust codebases, the practical impact of losing read-only
3232
text sections is relatively small (since Rust's type system is its first line of
3333
defense), but for Rust linked into other codebases the impact could be
34-
unexpectedly quite significant. The details of the bug are not that interesting
35-
though, and rest of this post focuses on the former soundness bug.
34+
unexpectedly quite significant. [PIC] issues are well understood and not
35+
Rust-specific, so the rest of this post focuses on the soundness bug.
3636

3737
[fpic]: https://github.com/rust-lang/rust/pull/39523
38+
[PIC]: https://en.wikipedia.org/wiki/Position-independent_code
3839

3940
The problem with `as_mut_slice`, a three line function, was [discovered] just
4041
minutes after publishing Rust 1.15.0, and is a reminder that writing unsafe code
@@ -100,14 +101,11 @@ out a mutable slice.
100101
So we made that change, and we're releasing a fix. In Rust we take pride in not
101102
breaking APIs, but since this is a new, minor feature, and the present
102103
implementation is spectacularly unsound, we decided to go ahead and release the
103-
fix immediately, hopefully before too many codebases pick it up - that is, we
104+
fix immediately, hopefully before too many codebases pick it up that is, we
104105
don't consider this a breaking change that requires a careful transition, but a
105106
necessary bug fix. For more about Rust's approach to ensuring stability see the
106107
["Stability as a Deliverable"][stab] blog post, [RFC 1122], on language
107-
evolution, and [RFC 1105], on library evolution (curiously, RFC 1105 does not
108-
actually contain any language allowing for library breakage due to soundness,
109-
but the intent has always been clear that Rust reserves the right to break code to
110-
fix soundness holes).
108+
evolution, and [RFC 1105], on library evolution.
111109

112110
[stab]: https://blog.rust-lang.org/2014/10/30/Stability.html
113111
[RFC 1122]: https://github.com/rust-lang/rfcs/blob/master/text/1122-language-semver.md

0 commit comments

Comments
 (0)