Skip to content
Merged
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
135 changes: 135 additions & 0 deletions src/attributes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -483,22 +483,49 @@ Attribute ``target_feature``
| $$aes$$
| $$avx$$
| $$avx2$$
| $$avx512bf16$$
| $$avx512bitalg$$
| $$avx512bw$$
| $$avx512cd$$
| $$avx512dq$$
| $$avx512f$$
| $$avx512fp16$$
| $$avx512ifma$$
| $$avx512vbmi$$
| $$avx512vbmi2$$
| $$avx512vl$$
| $$avx512vnni$$
| $$avx512vp2intersect$$
| $$avx512vpopcntdq$$
| $$avxifma$$
| $$avxneconvert$$
| $$avxvnni$$
| $$avxvnniint16$$
| $$avxvnniint8$$
| $$bmi1$$
| $$bmi2$$
| $$fma$$
| $$fxsr$$
| $$gfni$$
| $$kl$$
| $$lzcnt$$
| $$pclmulqdq$$
| $$popcnt$$
| $$rdrand$$
| $$rdseed$$
| $$sha$$
| $$sha512$$
| $$sm3$$
| $$sm4$$
| $$sse$$
| $$sse2$$
| $$sse3$$
| $$sse4.1$$
| $$sse4.2$$
| $$ssse3$$
| $$vaes$$
| $$vpclmulqdq$$
| $$widekl$$
| $$xsave$$
| $$xsavec$$
| $$xsaveopt$$
Expand Down Expand Up @@ -540,6 +567,82 @@ The target architecture features are as follows:
- avx2
- avx
- Advanced Vector Extensions 2
* - :dp:`fls_8HPcvIaahaB9`
- avx512bf16
- avx512bw
- Advanced Vector Extensions 512-bit - Bfloat16 Extensions
* - :dp:`fls_lxcfj6XCKyMh`
- vx512bitalg
- avx512bw
- Advanced Vector Extensions 512-bit - Bit Algorithms
* - :dp:`fls_fh7i1Pcmqjdm`
- avx512bw
- avx512f
- Advanced Vector Extensions 512-bit - Byte and Word Instructions
* - :dp:`fls_M9ne2sqhRB5L`
- avx512cd
- avx512f
- Advanced Vector Extensions 512-bit - Conflict Detection Instructions
* - :dp:`fls_xWcGvl83bVWC`
- avx512dq
- avx512f
- Advanced Vector Extensions 512-bit - Doubleword and Quadword Instructions
* - :dp:`fls_5CVTkOoLHAvW`
- avx512f
- avx2, fma, f16c
- Advanced Vector Extensions 512-bit - Foundation
* - :dp:`fls_hThb8qn820wJ`
- avx512fp16
- avx512bw
- Advanced Vector Extensions 512-bit - Float16 Extensions
* - :dp:`fls_1T0VYMtG3loD`
- avx512ifma
- avx512f
- Advanced Vector Extensions 512-bit - Integer Fused Multiply Add
* - :dp:`fls_AlBD9ckWKecQ`
- avx512vbmi
- avx512bw
- Advanced Vector Extensions 512-bit - Vector Byte Manipulation Instructions
* - :dp:`fls_72cwAExPDMQ8`
- avx512vbmi2
- avx512bw
- Advanced Vector Extensions 512-bit - Vector Byte Manipulation Instructions 2
* - :dp:`fls_pSSIwmUAnUly`
- avx512vl
- avx512f
- Advanced Vector Extensions 512-bit - Vector Length Extensions
* - :dp:`fls_YOW8lcBQ5lNI`
- avx512vnni
- avx512f
- Advanced Vector Extensions 512-bit - Vector Neural Network Instructions
* - :dp:`fls_8PrvVL6dkr31`
- avx512vp2intersect
- avx512f
- Advanced Vector Extensions 512-bit - Vector Pair Intersection to a Pair of Mask Registers
* - :dp:`fls_hKvaSExdlKgd`
- avx512vpopcntdq
- avx512f
- Advanced Vector Extensions 512-bit - Vector Population Count Instruction
* - :dp:`fls_r5KEicrmEGJt`
- avxifma
- avx2
- Advanced Vector Extensions - Integer Fused Multiply Add
* - :dp:`fls_Qnx9nNiJeIAX`
- avxneconvert
- avx2
- Advanced Vector Extensions - No-Exception Floating-Point conversion Instructions
* - :dp:`fls_ZrcPWy4pxlTX`
- avxvnni
- avx2
- Advanced Vector Extensions - Vector Neural Network Instructions
* - :dp:`fls_YW7otDxAliSj`
- avxvnniint16
- avx2
- Advanced Vector Extensions - Vector Neural Network Instructions with 16-bit Integers
* - :dp:`fls_G4aOoX8a7i7r`
- avxvnniint8
- avx2
- Advanced Vector Extensions - Vector Neural Network Instructions with 8-bit Integers
* - :dp:`fls_eglaup5zyfsk`
- bmi1
-
Expand All @@ -556,6 +659,14 @@ The target architecture features are as follows:
- fxsr
-
- Save and restore x87 FPU, MMX technology, and SSE state
* - :dp:`fls_HGKiXfM5fGVo`
- gfni
- sse2
- Galois Field New Instructions
* - :dp:`fls_gtoLNHFmmBzd`
- kl
- sse2
- Intel Key Locker Instructions
* - :dp:`fls_406ltkru11tk`
- lzcnt
-
Expand All @@ -580,6 +691,18 @@ The target architecture features are as follows:
- sha
- sse2
- Secure Hash Algorithm
* - :dp:`fls_UPhNSZS89sYr`
- sha512
- avx2
- Secure Hash Algorithm with 512-bit digest
* - :dp:`fls_HoNwaLtDzwZi`
- sm3
- avx
- ShangMi 3 Hash Algorithm
* - :dp:`fls_VqjfIihpRe9m`
- sm4
- avx2
- ShangMi 4 Hash Algorithm
* - :dp:`fls_7c31e21g6bdj`
- sse
-
Expand All @@ -604,6 +727,18 @@ The target architecture features are as follows:
- ssse3
- sse3
- Supplemental Streaming SIMD Extensions 3
* - :dp:`fls_gRf8F9PIGySt`
- vaes
- avx2, aes
- Vector AES Instructions
* - :dp:`fls_NNj4H6A9VTR8`
- vpclmulqdq
- avx, pclmulqdq
- Vector Carry-less multiplication of Quadwords
* - :dp:`fls_qZO82VdU5Iz9`
- widekl
- kl
- Intel Wide Keylocker Instructions
* - :dp:`fls_rilqwazchfpp`
- xsave
-
Expand Down
105 changes: 105 additions & 0 deletions src/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,111 @@ 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.89.0
-------------------------------

- `Stabilize explicitly inferred const arguments (feature(generic_arg_infer)) <https://github.com/rust-lang/rust/pull/141610>`_

- New paragraphs:

- :p:`fls_reASCId0i117`
- :p:`fls_Ft5rGeL7QwJM`
- :p:`fls_7epZNsTYNmgE`
- :p:`fls_TvuMMQnR0drL`

- Changed paragraph: :p:`fls_imr2jx6cbuzq`

- `Add a warn-by-default mismatched_lifetime_syntaxes lint <https://github.com/rust-lang/rust/pull/138677>`_.
This lint detects when the same lifetime is referred to by different syntax categories between function arguments and return values, which can be confusing to read, especially in unsafe code.
This lint supersedes the warn-by-default ``elided_named_lifetimes`` lint.

- No change: lints are not part of the FLS

- `Expand unpredictable_function_pointer_comparisons to also lint on function pointer comparisons in external macros <https://github.com/rust-lang/rust/pull/134536>`_

- No change: lints are not part of the FLS

- `Make the dangerous_implicit_autorefs lint deny-by-default <https://github.com/rust-lang/rust/pull/141661>`_

- No change: lints are not part of the FLS

- `Stabilize the avx512 target features <https://github.com/rust-lang/rust/pull/138940>`_

- Changed syntax: :s:`Feature`

- New paragraphs:

- :p:`fls_8HPcvIaahaB9`
- :p:`fls_lxcfj6XCKyMh`
- :p:`fls_fh7i1Pcmqjdm`
- :p:`fls_M9ne2sqhRB5L`
- :p:`fls_xWcGvl83bVWC`
- :p:`fls_5CVTkOoLHAvW`
- :p:`fls_hThb8qn820wJ`
- :p:`fls_1T0VYMtG3loD`
- :p:`fls_AlBD9ckWKecQ`
- :p:`fls_72cwAExPDMQ8`
- :p:`fls_pSSIwmUAnUly`
- :p:`fls_YOW8lcBQ5lNI`
- :p:`fls_8PrvVL6dkr31`
- :p:`fls_hKvaSExdlKgd`
- :p:`fls_r5KEicrmEGJt`
- :p:`fls_Qnx9nNiJeIAX`
- :p:`fls_ZrcPWy4pxlTX`
- :p:`fls_YW7otDxAliSj`
- :p:`fls_G4aOoX8a7i7r`
- :p:`fls_HGKiXfM5fGVo`
- :p:`fls_gRf8F9PIGySt`
- :p:`fls_NNj4H6A9VTR8`

- `Stabilize these target featires for x86: kl, widekl <https://github.com/rust-lang/rust/pull/140766>`_

- Changed syntax: :s:`Feature`

- New paragraphs:

- :p:`fls_gtoLNHFmmBzd`
- :p:`fls_qZO82VdU5Iz9`

- `Stabilize these target features for x86: sha512, sm3, sm4 <https://github.com/rust-lang/rust/pull/140767>`_

- Changed syntax: :s:`Feature`

- New paragraphs:

- :p:`fls_UPhNSZS89sYr`
- :p:`fls_HoNwaLtDzwZi`
- :p:`fls_VqjfIihpRe9m`

- `Stabilize these LoongArch target features: f, d, frecipe, lasx, lbt, lsx, lvz <https://github.com/rust-lang/rust/pull/135015>`_

- No change: the target is outside the scope of the FLS

- `Remove i128 and u128 from improper_ctypes_definitions lint <https://github.com/rust-lang/rust/pull/137306>`_

- No change: lints are not part of the FLS

- `Stabilize repr128 (#[repr(u128), #repr(i128)]) <https://github.com/rust-lang/rust/pull/138285>`_

- No change: this was erroneously documented as if it were already true

- `Allow #![doc(test(attr(..))) everywhere <https://github.com/rust-lang/rust/pull/140560>`_

- No change: documentation tests are outside the scope of the FLS

- `Extend temporary lifetime extension to also go through tuple struct and tuple variant constructors <https://github.com/rust-lang/rust/pull/140593>`_

- Changed paragraph: :p:`fls_DQaCUkskfXzk`
- New paragraphs:

- :p:`fls_YeeZWqTdMivX`
- :p:`fls_wyzau8hhq74d`
- :p:`fls_eeaJtK4w5gVK`

- `extern "C" functions on the wasm32-unknown-unknown target now have a standards compliant ABI <https://blog.rust-lang.org/2025/04/04/c-abi-changes-for-wasm32-unknown-unknown/>`_

- No change: the target is outside the scope of the FLS

Language changes in Rust 1.88.0
-------------------------------

Expand Down
14 changes: 14 additions & 0 deletions src/generics.rst
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,20 @@ A :t:`constant parameter` shall be used in the following contexts:
* :dp:`fls_byqjs5fvy2bj`
As a :t:`value` of any :t:`expression` within a :t:`function body`.

:dp:`fls_reASCId0i117`
An :dt:`inferred constant` is a :t:`constant argument` whose :t:`value` is
inferred from the surrounding context by using ``_`` (underscore) in its place.

:dp:`fls_Ft5rGeL7QwJM`
An :t:`inferred constant` cannot be used in :t:`item` signatures.

:dp:`fls_7epZNsTYNmgE`
An :t:`inferred constant` cannot be surrounded by ``{}`` (curly braces).

:dp:`fls_TvuMMQnR0drL`
An :t:`inferred constant` can be surrounded by an arbitrary number of ``()``
(parentheses).

:dp:`fls_hidfwkwr2r73`
A :t:`type parameter` has an implicit :std:`core::marker::Sized` :t:`bound`,
unless an :t:`opt-out trait bound` for the :std:`core::marker::Sized` :t:`trait`
Expand Down
2 changes: 1 addition & 1 deletion src/glossary.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6912,7 +6912,7 @@ tuple struct call expression

:dp:`fls_DQaCUkskfXzk`
A :dt:`tuple struct call expression` is a :t:`call expression` where the
:t:`call operand` resolves to a :t:`tuple struct`.
:t:`call operand` resolves to a :t:`tuple struct` or a :t:`tuple enum variant`.

.. _fls_xx4slbg8s63e:

Expand Down
14 changes: 11 additions & 3 deletions src/ownership-and-deconstruction.rst
Original file line number Diff line number Diff line change
Expand Up @@ -610,16 +610,20 @@ If the :t:`pattern-without-alternation` of a :t:`let statement` is an
the :t:`let statement` is extended to the :t:`drop scope` of the
:t:`block expression` that contains the :t:`let statement`.

:dp:`fls_YeeZWqTdMivX`
An :dt:`extending expression` is an :t:`expression` with an
:t:`extended drop scope <drop scope extension>`.

:dp:`fls_wyzau8hhq74d`
An :dt:`extending expression` is either
An :t:`extending expression` is any of the following:

* :dp:`fls_ju7cpftd8r2g`
The :t:`expression` of a :t:`let statement`, or
The :t:`expression` of a :t:`let statement`.

* :dp:`fls_gjd1ow3l7swe`
The :t:`operand` of an :t:`extending expression` that is an
:t:`array expression`, a :t:`borrow expression`, a :t:`struct expression`, a
:t:`tuple expression`, or a :t:`type cast expression`, or
:t:`tuple expression`, or a :t:`type cast expression`.

* :dp:`fls_Rj9zhVutfQod`
The :t:`block expression` and :t:`else expression` of an :t:`if expression`
Expand All @@ -637,6 +641,10 @@ An :dt:`extending expression` is either
The :t:`tail expression` of a :t:`block expression` that is an
:t:`extending expression`.

* :dp:`fls_eeaJtK4w5gVK`
The :t:`[argument operand]s` of a :t:`tuple struct call expression`
that is an :t:`extending expression`.

:dp:`fls_aq01wjpkxhq9`
The :t:`drop scope` of the :t:`operand` of a :t:`borrow expression` that is an
:t:`extending expression` is extended to the :t:`drop scope` of the
Expand Down
3 changes: 2 additions & 1 deletion src/types-and-traits.rst
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,8 @@ of elements.
The :t:`element type` shall be a :t:`fixed sized type`.

:dp:`fls_imr2jx6cbuzq`
The :t:`size operand` shall be a :t:`constant expression`.
The :t:`size operand` shall be a :t:`constant expression`
or an :t:`inferred constant`.

:dp:`fls_r8nqxry2dlww`
The :t:`type` of the :t:`size operand` is :t:`type` :c:`usize`.
Expand Down