Skip to content

Commit ffab2d2

Browse files
authored
Merge pull request #579 from ferrocene/tshepang/document-1.89
document Rust 1.89
2 parents 959c398 + a163ba2 commit ffab2d2

File tree

6 files changed

+268
-5
lines changed

6 files changed

+268
-5
lines changed

src/attributes.rst

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,22 +483,49 @@ Attribute ``target_feature``
483483
| $$aes$$
484484
| $$avx$$
485485
| $$avx2$$
486+
| $$avx512bf16$$
487+
| $$avx512bitalg$$
488+
| $$avx512bw$$
489+
| $$avx512cd$$
490+
| $$avx512dq$$
491+
| $$avx512f$$
492+
| $$avx512fp16$$
493+
| $$avx512ifma$$
494+
| $$avx512vbmi$$
495+
| $$avx512vbmi2$$
496+
| $$avx512vl$$
497+
| $$avx512vnni$$
498+
| $$avx512vp2intersect$$
499+
| $$avx512vpopcntdq$$
500+
| $$avxifma$$
501+
| $$avxneconvert$$
502+
| $$avxvnni$$
503+
| $$avxvnniint16$$
504+
| $$avxvnniint8$$
486505
| $$bmi1$$
487506
| $$bmi2$$
488507
| $$fma$$
489508
| $$fxsr$$
509+
| $$gfni$$
510+
| $$kl$$
490511
| $$lzcnt$$
491512
| $$pclmulqdq$$
492513
| $$popcnt$$
493514
| $$rdrand$$
494515
| $$rdseed$$
495516
| $$sha$$
517+
| $$sha512$$
518+
| $$sm3$$
519+
| $$sm4$$
496520
| $$sse$$
497521
| $$sse2$$
498522
| $$sse3$$
499523
| $$sse4.1$$
500524
| $$sse4.2$$
501525
| $$ssse3$$
526+
| $$vaes$$
527+
| $$vpclmulqdq$$
528+
| $$widekl$$
502529
| $$xsave$$
503530
| $$xsavec$$
504531
| $$xsaveopt$$
@@ -540,6 +567,82 @@ The target architecture features are as follows:
540567
- avx2
541568
- avx
542569
- Advanced Vector Extensions 2
570+
* - :dp:`fls_8HPcvIaahaB9`
571+
- avx512bf16
572+
- avx512bw
573+
- Advanced Vector Extensions 512-bit - Bfloat16 Extensions
574+
* - :dp:`fls_lxcfj6XCKyMh`
575+
- vx512bitalg
576+
- avx512bw
577+
- Advanced Vector Extensions 512-bit - Bit Algorithms
578+
* - :dp:`fls_fh7i1Pcmqjdm`
579+
- avx512bw
580+
- avx512f
581+
- Advanced Vector Extensions 512-bit - Byte and Word Instructions
582+
* - :dp:`fls_M9ne2sqhRB5L`
583+
- avx512cd
584+
- avx512f
585+
- Advanced Vector Extensions 512-bit - Conflict Detection Instructions
586+
* - :dp:`fls_xWcGvl83bVWC`
587+
- avx512dq
588+
- avx512f
589+
- Advanced Vector Extensions 512-bit - Doubleword and Quadword Instructions
590+
* - :dp:`fls_5CVTkOoLHAvW`
591+
- avx512f
592+
- avx2, fma, f16c
593+
- Advanced Vector Extensions 512-bit - Foundation
594+
* - :dp:`fls_hThb8qn820wJ`
595+
- avx512fp16
596+
- avx512bw
597+
- Advanced Vector Extensions 512-bit - Float16 Extensions
598+
* - :dp:`fls_1T0VYMtG3loD`
599+
- avx512ifma
600+
- avx512f
601+
- Advanced Vector Extensions 512-bit - Integer Fused Multiply Add
602+
* - :dp:`fls_AlBD9ckWKecQ`
603+
- avx512vbmi
604+
- avx512bw
605+
- Advanced Vector Extensions 512-bit - Vector Byte Manipulation Instructions
606+
* - :dp:`fls_72cwAExPDMQ8`
607+
- avx512vbmi2
608+
- avx512bw
609+
- Advanced Vector Extensions 512-bit - Vector Byte Manipulation Instructions 2
610+
* - :dp:`fls_pSSIwmUAnUly`
611+
- avx512vl
612+
- avx512f
613+
- Advanced Vector Extensions 512-bit - Vector Length Extensions
614+
* - :dp:`fls_YOW8lcBQ5lNI`
615+
- avx512vnni
616+
- avx512f
617+
- Advanced Vector Extensions 512-bit - Vector Neural Network Instructions
618+
* - :dp:`fls_8PrvVL6dkr31`
619+
- avx512vp2intersect
620+
- avx512f
621+
- Advanced Vector Extensions 512-bit - Vector Pair Intersection to a Pair of Mask Registers
622+
* - :dp:`fls_hKvaSExdlKgd`
623+
- avx512vpopcntdq
624+
- avx512f
625+
- Advanced Vector Extensions 512-bit - Vector Population Count Instruction
626+
* - :dp:`fls_r5KEicrmEGJt`
627+
- avxifma
628+
- avx2
629+
- Advanced Vector Extensions - Integer Fused Multiply Add
630+
* - :dp:`fls_Qnx9nNiJeIAX`
631+
- avxneconvert
632+
- avx2
633+
- Advanced Vector Extensions - No-Exception Floating-Point conversion Instructions
634+
* - :dp:`fls_ZrcPWy4pxlTX`
635+
- avxvnni
636+
- avx2
637+
- Advanced Vector Extensions - Vector Neural Network Instructions
638+
* - :dp:`fls_YW7otDxAliSj`
639+
- avxvnniint16
640+
- avx2
641+
- Advanced Vector Extensions - Vector Neural Network Instructions with 16-bit Integers
642+
* - :dp:`fls_G4aOoX8a7i7r`
643+
- avxvnniint8
644+
- avx2
645+
- Advanced Vector Extensions - Vector Neural Network Instructions with 8-bit Integers
543646
* - :dp:`fls_eglaup5zyfsk`
544647
- bmi1
545648
-
@@ -556,6 +659,14 @@ The target architecture features are as follows:
556659
- fxsr
557660
-
558661
- Save and restore x87 FPU, MMX technology, and SSE state
662+
* - :dp:`fls_HGKiXfM5fGVo`
663+
- gfni
664+
- sse2
665+
- Galois Field New Instructions
666+
* - :dp:`fls_gtoLNHFmmBzd`
667+
- kl
668+
- sse2
669+
- Intel Key Locker Instructions
559670
* - :dp:`fls_406ltkru11tk`
560671
- lzcnt
561672
-
@@ -580,6 +691,18 @@ The target architecture features are as follows:
580691
- sha
581692
- sse2
582693
- Secure Hash Algorithm
694+
* - :dp:`fls_UPhNSZS89sYr`
695+
- sha512
696+
- avx2
697+
- Secure Hash Algorithm with 512-bit digest
698+
* - :dp:`fls_HoNwaLtDzwZi`
699+
- sm3
700+
- avx
701+
- ShangMi 3 Hash Algorithm
702+
* - :dp:`fls_VqjfIihpRe9m`
703+
- sm4
704+
- avx2
705+
- ShangMi 4 Hash Algorithm
583706
* - :dp:`fls_7c31e21g6bdj`
584707
- sse
585708
-
@@ -604,6 +727,18 @@ The target architecture features are as follows:
604727
- ssse3
605728
- sse3
606729
- Supplemental Streaming SIMD Extensions 3
730+
* - :dp:`fls_gRf8F9PIGySt`
731+
- vaes
732+
- avx2, aes
733+
- Vector AES Instructions
734+
* - :dp:`fls_NNj4H6A9VTR8`
735+
- vpclmulqdq
736+
- avx, pclmulqdq
737+
- Vector Carry-less multiplication of Quadwords
738+
* - :dp:`fls_qZO82VdU5Iz9`
739+
- widekl
740+
- kl
741+
- Intel Wide Keylocker Instructions
607742
* - :dp:`fls_rilqwazchfpp`
608743
- xsave
609744
-

src/changelog.rst

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,111 @@ 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.89.0
22+
-------------------------------
23+
24+
- `Stabilize explicitly inferred const arguments (feature(generic_arg_infer)) <https://github.com/rust-lang/rust/pull/141610>`_
25+
26+
- New paragraphs:
27+
28+
- :p:`fls_reASCId0i117`
29+
- :p:`fls_Ft5rGeL7QwJM`
30+
- :p:`fls_7epZNsTYNmgE`
31+
- :p:`fls_TvuMMQnR0drL`
32+
33+
- Changed paragraph: :p:`fls_imr2jx6cbuzq`
34+
35+
- `Add a warn-by-default mismatched_lifetime_syntaxes lint <https://github.com/rust-lang/rust/pull/138677>`_.
36+
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.
37+
This lint supersedes the warn-by-default ``elided_named_lifetimes`` lint.
38+
39+
- No change: lints are not part of the FLS
40+
41+
- `Expand unpredictable_function_pointer_comparisons to also lint on function pointer comparisons in external macros <https://github.com/rust-lang/rust/pull/134536>`_
42+
43+
- No change: lints are not part of the FLS
44+
45+
- `Make the dangerous_implicit_autorefs lint deny-by-default <https://github.com/rust-lang/rust/pull/141661>`_
46+
47+
- No change: lints are not part of the FLS
48+
49+
- `Stabilize the avx512 target features <https://github.com/rust-lang/rust/pull/138940>`_
50+
51+
- Changed syntax: :s:`Feature`
52+
53+
- New paragraphs:
54+
55+
- :p:`fls_8HPcvIaahaB9`
56+
- :p:`fls_lxcfj6XCKyMh`
57+
- :p:`fls_fh7i1Pcmqjdm`
58+
- :p:`fls_M9ne2sqhRB5L`
59+
- :p:`fls_xWcGvl83bVWC`
60+
- :p:`fls_5CVTkOoLHAvW`
61+
- :p:`fls_hThb8qn820wJ`
62+
- :p:`fls_1T0VYMtG3loD`
63+
- :p:`fls_AlBD9ckWKecQ`
64+
- :p:`fls_72cwAExPDMQ8`
65+
- :p:`fls_pSSIwmUAnUly`
66+
- :p:`fls_YOW8lcBQ5lNI`
67+
- :p:`fls_8PrvVL6dkr31`
68+
- :p:`fls_hKvaSExdlKgd`
69+
- :p:`fls_r5KEicrmEGJt`
70+
- :p:`fls_Qnx9nNiJeIAX`
71+
- :p:`fls_ZrcPWy4pxlTX`
72+
- :p:`fls_YW7otDxAliSj`
73+
- :p:`fls_G4aOoX8a7i7r`
74+
- :p:`fls_HGKiXfM5fGVo`
75+
- :p:`fls_gRf8F9PIGySt`
76+
- :p:`fls_NNj4H6A9VTR8`
77+
78+
- `Stabilize these target featires for x86: kl, widekl <https://github.com/rust-lang/rust/pull/140766>`_
79+
80+
- Changed syntax: :s:`Feature`
81+
82+
- New paragraphs:
83+
84+
- :p:`fls_gtoLNHFmmBzd`
85+
- :p:`fls_qZO82VdU5Iz9`
86+
87+
- `Stabilize these target features for x86: sha512, sm3, sm4 <https://github.com/rust-lang/rust/pull/140767>`_
88+
89+
- Changed syntax: :s:`Feature`
90+
91+
- New paragraphs:
92+
93+
- :p:`fls_UPhNSZS89sYr`
94+
- :p:`fls_HoNwaLtDzwZi`
95+
- :p:`fls_VqjfIihpRe9m`
96+
97+
- `Stabilize these LoongArch target features: f, d, frecipe, lasx, lbt, lsx, lvz <https://github.com/rust-lang/rust/pull/135015>`_
98+
99+
- No change: the target is outside the scope of the FLS
100+
101+
- `Remove i128 and u128 from improper_ctypes_definitions lint <https://github.com/rust-lang/rust/pull/137306>`_
102+
103+
- No change: lints are not part of the FLS
104+
105+
- `Stabilize repr128 (#[repr(u128), #repr(i128)]) <https://github.com/rust-lang/rust/pull/138285>`_
106+
107+
- No change: this was erroneously documented as if it were already true
108+
109+
- `Allow #![doc(test(attr(..))) everywhere <https://github.com/rust-lang/rust/pull/140560>`_
110+
111+
- No change: documentation tests are outside the scope of the FLS
112+
113+
- `Extend temporary lifetime extension to also go through tuple struct and tuple variant constructors <https://github.com/rust-lang/rust/pull/140593>`_
114+
115+
- Changed paragraph: :p:`fls_DQaCUkskfXzk`
116+
- New paragraphs:
117+
118+
- :p:`fls_YeeZWqTdMivX`
119+
- :p:`fls_wyzau8hhq74d`
120+
- :p:`fls_eeaJtK4w5gVK`
121+
122+
- `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/>`_
123+
124+
- No change: the target is outside the scope of the FLS
125+
21126
Language changes in Rust 1.88.0
22127
-------------------------------
23128

src/generics.rst

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,20 @@ A :t:`constant parameter` shall be used in the following contexts:
169169
* :dp:`fls_byqjs5fvy2bj`
170170
As a :t:`value` of any :t:`expression` within a :t:`function body`.
171171

172+
:dp:`fls_reASCId0i117`
173+
An :dt:`inferred constant` is a :t:`constant argument` whose :t:`value` is
174+
inferred from the surrounding context by using ``_`` (underscore) in its place.
175+
176+
:dp:`fls_Ft5rGeL7QwJM`
177+
An :t:`inferred constant` cannot be used in :t:`item` signatures.
178+
179+
:dp:`fls_7epZNsTYNmgE`
180+
An :t:`inferred constant` cannot be surrounded by ``{}`` (curly braces).
181+
182+
:dp:`fls_TvuMMQnR0drL`
183+
An :t:`inferred constant` can be surrounded by an arbitrary number of ``()``
184+
(parentheses).
185+
172186
:dp:`fls_hidfwkwr2r73`
173187
A :t:`type parameter` has an implicit :std:`core::marker::Sized` :t:`bound`,
174188
unless an :t:`opt-out trait bound` for the :std:`core::marker::Sized` :t:`trait`

src/glossary.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6912,7 +6912,7 @@ tuple struct call expression
69126912

69136913
:dp:`fls_DQaCUkskfXzk`
69146914
A :dt:`tuple struct call expression` is a :t:`call expression` where the
6915-
:t:`call operand` resolves to a :t:`tuple struct`.
6915+
:t:`call operand` resolves to a :t:`tuple struct` or a :t:`tuple enum variant`.
69166916

69176917
.. _fls_xx4slbg8s63e:
69186918

src/ownership-and-deconstruction.rst

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -610,16 +610,20 @@ If the :t:`pattern-without-alternation` of a :t:`let statement` is an
610610
the :t:`let statement` is extended to the :t:`drop scope` of the
611611
:t:`block expression` that contains the :t:`let statement`.
612612

613+
:dp:`fls_YeeZWqTdMivX`
614+
An :dt:`extending expression` is an :t:`expression` with an
615+
:t:`extended drop scope <drop scope extension>`.
616+
613617
:dp:`fls_wyzau8hhq74d`
614-
An :dt:`extending expression` is either
618+
An :t:`extending expression` is any of the following:
615619

616620
* :dp:`fls_ju7cpftd8r2g`
617-
The :t:`expression` of a :t:`let statement`, or
621+
The :t:`expression` of a :t:`let statement`.
618622

619623
* :dp:`fls_gjd1ow3l7swe`
620624
The :t:`operand` of an :t:`extending expression` that is an
621625
:t:`array expression`, a :t:`borrow expression`, a :t:`struct expression`, a
622-
:t:`tuple expression`, or a :t:`type cast expression`, or
626+
:t:`tuple expression`, or a :t:`type cast expression`.
623627

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

644+
* :dp:`fls_eeaJtK4w5gVK`
645+
The :t:`[argument operand]s` of a :t:`tuple struct call expression`
646+
that is an :t:`extending expression`.
647+
640648
:dp:`fls_aq01wjpkxhq9`
641649
The :t:`drop scope` of the :t:`operand` of a :t:`borrow expression` that is an
642650
:t:`extending expression` is extended to the :t:`drop scope` of the

src/types-and-traits.rst

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,8 @@ of elements.
491491
The :t:`element type` shall be a :t:`fixed sized type`.
492492

493493
:dp:`fls_imr2jx6cbuzq`
494-
The :t:`size operand` shall be a :t:`constant expression`.
494+
The :t:`size operand` shall be a :t:`constant expression`
495+
or an :t:`inferred constant`.
495496

496497
:dp:`fls_r8nqxry2dlww`
497498
The :t:`type` of the :t:`size operand` is :t:`type` :c:`usize`.

0 commit comments

Comments
 (0)