@@ -27,14 +27,15 @@ This release fixes two issues, a soundness bug in the new
27
27
components of the Rust distribution were [ not compiled with ` -fPIC ` ] [ fpic ] . The
28
28
latter results in the text section of executables being writable in some
29
29
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
31
31
more work. For mostly-Rust codebases, the practical impact of losing read-only
32
32
text sections is relatively small (since Rust's type system is its first line of
33
33
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.
36
36
37
37
[ fpic ] : https://github.com/rust-lang/rust/pull/39523
38
+ [ PIC ] : https://en.wikipedia.org/wiki/Position-independent_code
38
39
39
40
The problem with ` as_mut_slice ` , a three line function, was [ discovered] just
40
41
minutes after publishing Rust 1.15.0, and is a reminder that writing unsafe code
@@ -100,14 +101,11 @@ out a mutable slice.
100
101
So we made that change, and we're releasing a fix. In Rust we take pride in not
101
102
breaking APIs, but since this is a new, minor feature, and the present
102
103
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
104
105
don't consider this a breaking change that requires a careful transition, but a
105
106
necessary bug fix. For more about Rust's approach to ensuring stability see the
106
107
[ "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.
111
109
112
110
[ stab ] : https://blog.rust-lang.org/2014/10/30/Stability.html
113
111
[ RFC 1122 ] : https://github.com/rust-lang/rfcs/blob/master/text/1122-language-semver.md
0 commit comments