You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: text/0000-rust-has-provenance.md
+38-4Lines changed: 38 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -163,9 +163,10 @@ Sanitizers and undefined behavior detectors like [Miri](https://github.com/rust-
163
163
[^exists]: This is the same sense in which the distinction between initialized and uninitialized memory "exists" during program execution, even though it cannot be observed on most hardware.
164
164
[^erase]: It is of course still possible to erase provenance during compilation, *if* the target that we are compiling to does not actually do the access checks that the abstract machine does. What is not safe is having a language operation that strips provenance, and inserting that in arbitrary places in the program.
165
165
166
-
*Historical note:* The author assumes that provenance in C started out purely descriptively.
167
-
However, the moment compilers started doing optimizations that exploit undefined behavior depending on the provenance of a pointer, provenance became prescriptive.
166
+
*Historical note:* The author assumes that provenance in C was originally intended to be purely descriptive.
167
+
However, the moment compilers started doing optimizations that exploit undefined behavior depending on the provenance of a pointer, provenance of de-facto-C became prescriptive.
168
168
A lot of the confusion around provenance arises from the fact that many people still think it is purely descriptive.
169
+
The standard has never been updated to clarify this, but in 2022 the committee has accepted a Technical Specification that does explicitly state that C has prescriptive provenance.
169
170
The point of this RFC is that Rust has *prescriptive* provenance.
170
171
171
172
# Guide-level explanation
@@ -246,9 +247,42 @@ That said, (2) would still be a valid option for surface Rust, so this RFC delib
246
247
# Prior art
247
248
[prior-art]: #prior-art
248
249
249
-
* "[A Provenance-aware Memory Object Model for C](https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3005.pdf)"
250
+
* "[N3057: A Provenance-aware Memory Object Model for C](https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3057.pdf)"
250
251
describes how the C standard is attempting to fit provenance concepts into C.
251
-
This technical specification has been accepted unanimously by the C standards committee, but is not part of the official ISO standard.
252
+
This [technical specification](https://www.iso.org/standard/81899.html) has been accepted unanimously by the C standards committee, but is not (yet) part of the official ISO standard.
253
+
254
+
<details><summary>C committee minutes</summary>
255
+
256
+
[2022-01-31 Final Meeting Minutes](https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2991.pdf):
257
+
258
+
Straw poll: Does WG14 wish to see TS6010 working draft (N2676 or something similar) in some future version of the standard?<br>
259
+
21/0/1. Clear consensus.<br>
260
+
Straw poll: Does WG14 wish to see TS6010 working draft (N2676 or something similar) in C23?<br>
261
+
10/8/5. Clear indication people think this is important.<br>
262
+
Straw poll: (Opinion) Is WG 14 willing to move TS 6010 to DTS ballot as it stands now?<br>
263
+
19/1/3. The committee is OK to move forward.<br>
264
+
(the numbers are yes/no/abstain)
265
+
266
+
[2022-05-16 - 2022-05-20 Final Meeting Minutes](https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3036.pdf):
267
+
268
+
Straw poll: (decision) Does WG14 want to move to a DTS ballot for TS 6010?<br>
269
+
Result: 18-0-0 (consensus)<br>
270
+
Uecker: would like to mention that other languages, especially Rust, are adopting this, so now is a useful time to progress.<br>
271
+
272
+
[2023-01-23 - 2023-01-28 Final Meeting Minutes](https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3153.pdf):
273
+
274
+
Keaton: any objections to a CD ballot for TS 6010?<br>
275
+
(none, unanimous consent)<br>
276
+
DECISION: Gustedt’s document will go to SC22 and start the two-month ballot process this week.<br>
277
+
One month available if needed for ballot resolution.<br>
278
+
Sewell: can we start with ISO working in parallel?<br>
279
+
Keaton: yes, ISO has volunteered to start its review early.<br>
280
+
ACTION: Keaton to submit TS 6010 to ISO early.<br>
281
+
ACTION: Gustedt to make up an N-document for TS 6010.<br>
282
+
283
+
(That document became [N3057](https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3057.pdf).)
0 commit comments