Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions src/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,37 @@ with the change that has been applied due to it.
just the language changes that had an impact to the FLS. See the `release
notes`_ for a full list of changes.

Language changes in Rust 1.90.0
-------------------------------

- `Split up the unknown_or_malformed_diagnostic_attributes lint <https://github.com/rust-lang/rust/pull/140717>`_

- No change: lints are not part of the FLS

- `Allow constants whose final value has references to mutable/external memory, but reject such constants as patterns <https://github.com/rust-lang/rust/pull/140942>`_

- This lifted restriction was not specified in the FLS
- The restriction on patterns is documented in :p:`fls_wJ9f906BlBvg`
- New paragraph: :p:`fls_zyuxqty09SDO`

- Above paragraph replaces :p:`fls_6g7c1kjrmfnr` and :p:`fls_hkbwa8xx2fwx`

* New paragraphs:

- :p:`fls_ooOYxhVh8hZo`

- :p:`fls_zkNFeBLy80UA`

- :p:`fls_VhzGfnWg7YrG`

- :p:`fls_ibYKKQdB2tDn`

- :p:`fls_dQdSxf8kOgbi`

- `Allow volatile access to non-Rust memory, including address 0 <https://github.com/rust-lang/rust/pull/141260>`_

- No change: lints are not part of the FLS

Language changes in Rust 1.89.0
-------------------------------

Expand Down Expand Up @@ -317,6 +348,8 @@ Language changes in Rust 1.83.0

* Changed paragraphs: :p:`fls_to4e7imq2c0w`, :p:`fls_6g7c1kjrmfnr`, :p:`fls_hkbwa8xx2fwx`

* Removed paragraph: :p:`fls_ox6sgl9n43g2`

* `Allow creating references to statics in \`const\` initializers. <https://github.com/rust-lang/rust/pull/129759>`_

* No change: This previous restriction is not specified in the FLS
Expand Down
16 changes: 6 additions & 10 deletions src/expressions.rst
Original file line number Diff line number Diff line change
Expand Up @@ -209,9 +209,6 @@ involve :t:`[type]s` that require :t:`destruction`:
* :dp:`fls_b5fraqx07wuo`
:t:`[If let expression]s`,

* :dp:`fls_6g7c1kjrmfnr`
:t:`[Immutable borrow expression]s`.

* :dp:`fls_rpapnm3afan8`
:t:`[Index expression]s`,

Expand Down Expand Up @@ -248,9 +245,6 @@ involve :t:`[type]s` that require :t:`destruction`:
* :dp:`fls_3bucpdj828bq`
:t:`[Range expression]s`,

* :dp:`fls_hkbwa8xx2fwx`
:t:`[Borrow]s`,

* :dp:`fls_fobs8ebt7dhc`
:t:`[Struct expression]s`,

Expand All @@ -271,6 +265,12 @@ involve :t:`[type]s` that require :t:`destruction`:
* :dp:`fls_qvofy4wkql0s`
:t:`[While loop expression]s`.

* :dp:`fls_zyuxqty09SDO`
All forms of :t:`[borrow]s` except those of expressions that are subject to
:t:`drop scope extension` to the end of the program
and which are either :t:`[mutable borrow]s`
or borrows of expressions that result in values with :t:`interior mutability`.

:dp:`fls_3i7efddbsmn0`
An :t:`expression` is not considered a :t:`constant expression` when it
explicitly invokes an :t:`associated trait function` or uses
Expand Down Expand Up @@ -312,10 +312,6 @@ A :t:`constant context` is a :t:`construct` that requires a
* :dp:`fls_ucFupTeCyylb`
The :t:`block expression` of a :t:`const block expression`.

:dp:`fls_ox6sgl9n43g2`
It is a static error to create a :t:`mutable reference` in a
:t:`constant context`.

:dp:`fls_od0h3v40kjp6`
An invocation of the :std:`core::ptr::addr_of` :t:`macro` expands to a
:t:`constant expression` allowed in any :t:`constant context` and
Expand Down
6 changes: 6 additions & 0 deletions src/patterns.rst
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,12 @@ When a :t:`path pattern` refers to an :t:`associated constant` or a
:t:`constant`, the :t:`type` of the :t:`associated constant` or :t:`constant`
shall be :t:`structurally equal`.

:dp:`fls_wJ9f906BlBvg`
When a :t:`path pattern` refers to an :t:`associated constant` or a
:t:`constant`, the :t:`constant` must not contain any references to
:t:`[mutable static]s`, :t:`[static]s` with :t:`interior mutability`,
or :t:`[external static]s`.

:dp:`fls_hF19K8sWU8FF`
When the type of the :t:`path pattern` is of an :t:`enum type` or
:t:`struct type`, then the :t:`enum type` or :t:`struct type` shall be subject
Expand Down
17 changes: 17 additions & 0 deletions src/values.rst
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,23 @@ The :t:`expression` of a :t:`constant initializer` shall be a
The value of a :t:`constant` is determined by evaluating its
:t:`constant initializer`.

:dp:`fls_ooOYxhVh8hZo`
After :t:`type coercion`, the value of the constant cannot contain any
:t:`[mutable reference]s`, except when

- :dp:`fls_zkNFeBLy80UA`
The :t:`mutable reference` is contained within an :t:`external static`, or

- :dp:`fls_VhzGfnWg7YrG`
The :t:`mutable reference` is contained within a :t:`mutable static`
or a :t:`static` whose type is subject to :t:`interior mutability`, or

- :dp:`fls_ibYKKQdB2tDn`
The :t:`mutable reference` is contained within an :t:`union`, or

- :dp:`fls_dQdSxf8kOgbi`
The :t:`referent` is a value of a :t:`zero-sized type`.

.. rubric:: Dynamic Semantics

:dp:`fls_xezt9hl069h4`
Expand Down
2 changes: 1 addition & 1 deletion version.rst
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
.. SPDX-License-Identifier: MIT OR Apache-2.0
SPDX-FileCopyrightText: The Ferrocene Developers
SPDX-FileCopyrightText: The Rust Project Developers
.. |spec_version| replace:: 1.88.0
.. |spec_version| replace:: 1.90.0