Skip to content

Commit 1c2301c

Browse files
Merge #551
551: Describe 1.84 and 1.85 changes r=pietroalbini a=Veykril Co-authored-by: Lukas Wirth <[email protected]>
2 parents afd3b3a + eb7a1a6 commit 1c2301c

File tree

5 files changed

+99
-6
lines changed

5 files changed

+99
-6
lines changed

src/changelog.rst

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,74 @@ with the change that has been applied due to it.
1818
just the language changes that had an impact to the FLS. See the `release
1919
notes`_ for a full list of changes.
2020

21+
Language changes in Rust 1.85.0
22+
-------------------------------
23+
24+
* `The 2024 Edition is now stable. <https://github.com/rust-lang/rust/pull/133349>`_
25+
26+
* No change: The FLS currently qualifies only the 2021 Edition
27+
28+
* `Stabilize async closures <https://github.com/rust-lang/rust/pull/132706>`_
29+
30+
* New paragraphs: :p:`fls_My6pMgpeFCFg`, :p:`fls_DSy7bPKGzyov`
31+
32+
* Changed syntax: :s:`ClosureExpression`
33+
34+
* `Stabilize \`#[diagnostic::do_not_recommend]\` <https://github.com/rust-lang/rust/pull/132056>`_
35+
36+
* No change: tool attributes are not part of the FLS
37+
38+
* `Add \`unpredictable_function_pointer_comparisons\` lint to warn against function pointer comparisons <https://github.com/rust-lang/rust/pull/118833>`_
39+
40+
* No change: Lints are not part of the FLS
41+
42+
* `Lint on combining \`#[no_mangle]\` and \`#[export_name]\` attributes. <https://github.com/rust-lang/rust/pull/131558>`_
43+
44+
* No change: Lints are not part of the FLS
45+
46+
Language changes in Rust 1.84.0
47+
-------------------------------
48+
49+
* `Allow \`#[deny]\` inside \`#[forbid]\` as a no-op <https://github.com/rust-lang/rust/pull/121560/>`_
50+
51+
* No change: Lints are not part of the FLS
52+
53+
* `Show a warning when \`-Ctarget-feature\` is used to toggle features that can lead to unsoundness due to ABI mismatches <https://github.com/rust-lang/rust/pull/129884>`_
54+
55+
* No change: `target-feature` is outside the scope of the Ferrocene qualification
56+
57+
* `Use the next-generation trait solver in coherence <https://github.com/rust-lang/rust/pull/130654>`_
58+
59+
* No change: the exact trait solver is not part of the FLS
60+
61+
* `Allow coercions to drop the principal of trait objects <https://github.com/rust-lang/rust/pull/131857>`_
62+
63+
* Changed paragraph: :p:`fls_SYnFJBhi0IWj`
64+
65+
* `Support \`/\` as the path separator for \`include!()\` in all cases on Windows <https://github.com/rust-lang/rust/pull/125205>`_
66+
67+
* No change: This past restriction of the `include` macro is not specified by the FLS
68+
69+
* `Taking a raw ref (\`raw (const|mut)\`) of a deref of a pointer (\`*ptr\`) is now safe <https://github.com/rust-lang/rust/pull/129248>`_
70+
71+
* Changed paragraph: :p:`fls_8i4jzksxlrw0`
72+
73+
* `Stabilize s390x inline assembly <https://github.com/rust-lang/rust/pull/131258>`_
74+
75+
* No change: These changes affect content that is informational
76+
77+
* `Stabilize Arm64EC inline assembly <https://github.com/rust-lang/rust/pull/131781>`_
78+
79+
* No change: These changes affect content that is informational
80+
81+
* `Lint against creating pointers to immediately dropped temporaries <https://github.com/rust-lang/rust/pull/128985>`_
82+
83+
* No change: Lints are not part of the FLS
84+
85+
* `Execute drop glue when unwinding in an \`extern "C"\` function <https://github.com/rust-lang/rust/pull/129582>`_
86+
87+
* No change: This restricted past behavior is specified by the FLS.
88+
2189
Language changes in Rust 1.83.0
2290
-------------------------------
2391

src/expressions.rst

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1033,7 +1033,7 @@ The :t:`dereference` is assignable when the :t:`dereference expression` is a
10331033
:t:`mutable place expression`.
10341034

10351035
:dp:`fls_8i4jzksxlrw0`
1036-
Dereferencing a :t:`raw pointer` shall require :t:`unsafe context`.
1036+
Dereferencing a :t:`raw pointer` shall require :t:`unsafe context` unless the :t:`dereference expression` is the :t:`operand` of a :t:`raw borrow expression`.
10371037

10381038
:dp:`fls_d68ddlse4zp`
10391039
If the context of a :t:`dereference expression` is an
@@ -3697,7 +3697,7 @@ Closure Expressions
36973697
.. syntax::
36983698

36993699
ClosureExpression ::=
3700-
$$move$$? $$|$$ ClosureParameterList? $$|$$
3700+
$$async$$? $$move$$? $$|$$ ClosureParameterList? $$|$$
37013701
(ClosureBody | ClosureBodyWithReturnType)
37023702

37033703
ClosureBody ::=
@@ -3721,6 +3721,9 @@ Closure Expressions
37213721
A :t:`closure expression` is an :t:`expression` that defines a
37223722
:t:`closure type` and constructs a value of that :t:`type`.
37233723

3724+
:dp:`fls_My6pMgpeFCFg`
3725+
An :t:`async closure expression` is a :t:`closure expression` subject to keyword ``async`` that defines an :t:`async closure type` and constructs a value of that :t:`type`.
3726+
37243727
:dp:`fls_UgJgur0z6d4a`
37253728
The :t:`return type` of a :t:`closure type` is determined as follows:
37263729

@@ -3730,6 +3733,9 @@ The :t:`return type` of a :t:`closure type` is determined as follows:
37303733
* :dp:`fls_wLVeE6cNG8oa`
37313734
Otherwise the :t:`return type` is the :t:`type` of the :t:`closure body`.
37323735

3736+
:dp:`fls_DSy7bPKGzyov`
3737+
The :t:`return type` of an :t:`async closure type` is an :t:`anonymous return type` with a :std:`core::future::Future` :t:`trait bound` and a :t:`binding argument` for the ``Output`` :t:`associated type alias` with the actual :t:`return type` of the corresponding :t:`closure type`.
3738+
37333739
:dp:`fls_srbl7ptknjyk`
37343740
A :t:`closure body` is a :t:`construct` that represents the executable portion
37353741
of a :t:`closure expression`.

src/glossary.rst

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -539,6 +539,27 @@ an asynchronous manner.
539539
:dp:`fls_je689rormhd6`
540540
See :s:`AsyncBlockExpression`.
541541

542+
.. _fls_oUdQnbW1MAFW:
543+
544+
async closure expression
545+
^^^^^^^^^^^^^^^^^^^^^^^^
546+
547+
:dp:`fls_SxydbQPPX9Jw`
548+
An :dt:`async closure expression` is a :t:`closure expression` subject to keyword ``async`` that defines an :t:`async closure type` and constructs a value of that :t:`type`.
549+
550+
:dp:`fls_JZsDFMg85a3u`
551+
See :s:`ClosureExpression`.
552+
553+
.. _fls_Pq4ohvrMOi5p:
554+
555+
async closure type
556+
^^^^^^^^^^^^^^^^^^
557+
558+
:dp:`fls_IT28HJaF8rnm`
559+
An :dt:`async closure type` is a unique anonymous :t:`function type` that encapsulates
560+
all :t:`[capture target]s` of a :t:`closure expression` producing a :std:`core::future::Future`.
561+
562+
542563
.. _fls_lYrTaCM1LcXU:
543564

544565
async control flow boundary

src/types-and-traits.rst

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2046,9 +2046,7 @@ occur when:
20462046
:t:`type`.
20472047

20482048
* :dp:`fls_SYnFJBhi0IWj`
2049-
The source :t:`type` is a :t:`trait object type` and the target :t:`type` is a
2050-
:t:`trait object type` with the same :t:`[trait bound]s` and additional
2051-
:t:`[auto trait]s`.
2049+
The source :t:`type` is a :t:`trait object type` and the target :t:`type` is a :t:`trait object type` with the same or no :t:`[principal trait bound]`, and the target :t:`type` has the same or less non-:t:`principal trait` :t:`[trait bound]s`.
20522050

20532051
:dp:`fls_iiiu2q7pym4p`
20542052
An :t:`unsized coercion` is a :t:`type coercion` that converts a :t:`sized type`

version.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
.. SPDX-License-Identifier: MIT OR Apache-2.0
22
SPDX-FileCopyrightText: The Ferrocene Developers
3-
.. |spec_version| replace:: 1.83.0
3+
.. |spec_version| replace:: 1.84.0

0 commit comments

Comments
 (0)