From c2bafddf30df7537ed1d3d67981f34f2c3d8ca42 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Wed, 3 Jul 2024 16:35:06 +0200 Subject: [PATCH 1/8] Add changelog appendix --- src/changelog.rst | 271 ++++++++++++++++++++++++++++++++++++++++++++++ src/index.rst | 1 + 2 files changed, 272 insertions(+) create mode 100644 src/changelog.rst diff --git a/src/changelog.rst b/src/changelog.rst new file mode 100644 index 00000000..420d961f --- /dev/null +++ b/src/changelog.rst @@ -0,0 +1,271 @@ +.. SPDX-License-Identifier: MIT OR Apache-2.0 + SPDX-FileCopyrightText: The Ferrocene Developers + +.. default-domain:: spec +.. informational-page:: + +.. _fls_grvqHf0SUaiN: + +Ferrocene Specification Changelog +================================= + +.. _fls_6TRrFesJWnoL: + +Version 1.79.0 (2024-06-13) +--------------------------- + +* :dp:`fls_tPldXLk59Axx` + `Stabilize inline \`const {}\` expressions. `_ + + * :dp:`fls_sLrh1GVvUGPn` + New section: Const blocks :p:`fls_G59PiNQkVUnQ` + +* :dp:`fls_juWXW4VMwAs7` + `Prevent opaque types being instantiated twice with different regions within the same function. `_ + + * :dp:`fls_cpxs2P41vApm` + No change: This is already described in types and trait :p:`fls_hza5n5eb18ta` + +* :dp:`fls_HbxNaRTX5XoS` + `Stabilize WebAssembly target features that are in phase 4 and 5. `_ + + * :dp:`fls_Dbufw279W10c` + No change: `cfg` and `cfg_attr` configuration predicates are not part of the FLS. + +* :dp:`fls_Dbufw279W10c` + `Add the \`redundant_lifetimes\` lint to detect lifetimes which are semantically redundant. `_ + + * :dp:`fls_OuDLgCAVNzjU` + No change: Lints are not part of the FLS. + +* :dp:`fls_mdAd1wCv1hMI` + `Stabilize the \`unnameable_types\` lint for public types that can't be named. `_ + + * :dp:`fls_7gae0TTCRc3v` + No change: Lints are not part of the FLS. + +* :dp:`fls_sH93ZYSVlOOv` + `Enable debuginfo in macros, and stabilize \`-C collapse-macro-debuginfo\` and \`#[collapse_debuginfo]\`. `_ + + * :dp:`fls_7gae0TTCRc3v` + New section: Attribute `collapse_debuginfo` :p:`fls_qyudjGHZfyJH` + +* :dp:`fls_0bG3GNvXbmiS` + `Propagate temporary lifetime extension into \`if\` and \`match\` expressions. `_ + + * :dp:`fls_t42bsw6HdHCS` + New paragraphs + + * :dp:`fls_exj3aCyohLLd` + :p:`fls_Rj9zhVutfQod` + + * :dp:`fls_XzTrtPQRZYbg` + :p:`fls_oodpp3LpXC13` + + * :dp:`fls_h7crW9ZLee4J` + :p:`fls_xGThCPoTUSAi` + +* :dp:`fls_jnWGDInGZLL9` + `Restrict promotion of \`const fn\` calls. `_ + + * :dp:`fls_Ics3st856gPP` + No change: This is already specified in values :p:`fls_3h5vr7xk2rrt` + +* :dp:`fls_zKkF8t5P9LnS` + `Warn against refining impls of crate-private traits with \`refining_impl_trait\` lint. `_ + + * :dp:`fls_EjcpyoBxaI8Z` + No change: Lints are not part of the FLS. + +* :dp:`fls_NT29OnE6BTsu` + `Stabilize associated type bounds (RFC 2289). `_ + + * :dp:`fls_ZuyjKP2KfCAV` + New paragraph: :p:`fls_mcUMWsYcxzmZ` + +* :dp:`fls_L5lm8jUfg3ju` + `Stabilize importing \`main\` from other modules or crates. `_ + + * :dp:`fls_FE6Rujg0JzpG` + Various changes: + + * :dp:`fls_FE6Rujg0JzpG` + New section: Program Entry Point :p:`fls_8JB3SJqamdpU` + + * :dp:`fls_gSXmkIYYhTfP` + New definition: :t:`crate type` :p:`fls_unxalgMqIr3v` :p:`fls_e7jGvXvTsFpC` :p:`fls_kQiJPwb2Hjcc` + + * :dp:`fls_b3x3YUEfjKZy` + Removal of definition `main function` + + * :dp:`fls_b3x3YUEfjKZy` + binary crate and proc-macro crate rewritten :p:`fls_9ub6ks8qrang` :p:`fls_Mf62VqAhoZ3c` + + * :dp:`fls_Xtl4nwOusufp` + library crate removed + + * :dp:`fls_b9cUKnX6rji2` + Introduction of `main function signature` functions :p:`fls_sbGnkm8Ephiu` + +* :dp:`fls_uvV5kAESyCEp` + `Check return types of function types for well-formedness `_ + + * :dp:`fls_vTQTiu4TVDdz` + No change: This is a bug fix in the trait resolution which is not described in the FLS. + +* :dp:`fls_KNfRdLR5TCJl` + `Rework \`impl Trait\` lifetime inference `_ + + * :dp:`fls_0z5Tru7S30qq` + No change: Capturing of lifestime within \`impl Trait\` types is not described in the FLS. + +* :dp:`fls_l87kw1tZR9Op` + `Change inductive trait solver cycles to be ambiguous `_ + + * :dp:`fls_w1EhKv4rXFx8` + No change: The trait solver is not part of the FLS. + +.. _fls_L2xtE9W3fzl6: + +Version 1.78.0 (2024-05-02) +--------------------------- + +* :dp:`fls_r1ypVWRwRO3R` + `Stabilize \`#[cfg(target_abi = ...)]\` `_ + + * :dp:`fls_PFmLCi644GtO` + No change: \`cfg\` and \`cfg_attr\` configuration predicates are not part of the FLS. + +* :dp:`fls_dgJ261l3EW21` + `Stabilize the \`#[diagnostic]\` namespace and \`#[diagnostic::on_unimplemented]\` attribute `_ + + * :dp:`fls_NsIMHy9kDXYw` + No change: Tool attributes are not part of the FLS. + +* :dp:`fls_K642a6dH3DOE` + `Make async-fn-in-trait implementable with concrete signatures `_ + + * :dp:`fls_KA0eXH2moxGW` + No change: No paragraph in the FLS forbids this prior incompatability + +* :dp:`fls_mGo1ObKqvauG` + `Make matching on NaN a hard error, and remove the rest of \`illegal_floating_point_literal_pattern\` `_ + + * :dp:`fls_rerCWvAc0vU4` + New paragraph: :p:`fls_JP8YSbxSN0Ym` + +* :dp:`fls_rerCWvAc0vU4` + `static mut: allow mutable reference to arbitrary types, not just slices and arrays `_ + + * :dp:`fls_rerCWvAc0vU4` + No change: This lifted restriction is not described in the FLS. + +* :dp:`fls_J2h9pGT9tGP0` + `Extend \`invalid_reference_casting\` to include references casting to bigger memory layout `_ + + * :dp:`fls_grfw95iCYdZa` + No change: Lints are not part of the FLS. + +* :dp:`fls_sPzJMf8GbyoC` + `Add \`non_contiguous_range_endpoints\` lint for singleton gaps after exclusive ranges `_ + + * :dp:`fls_etIqYVoecqrE` + No change: Lints are not part of the FLS. + +* :dp:`fls_QFXTGAxM46Cx` + `Add \`wasm_c_abi\` lint for use of older wasm-bindgen versions `_ + + * :dp:`fls_lWhlYmqX8WAf` + No change: Lints are not part of the FLS. + +* :dp:`fls_7pkPlAfcIDes` + `Update \`indirect_structural_match\` and \`pointer_structural_match\` lints to match RFC `_ + + * :dp:`fls_VxtpIUFcaOaD` + No change: Lints are not part of the FLS. + +* :dp:`fls_iyJF0c5sYNgt` + `Make non-\`PartialEq\`-typed consts as patterns a hard error `_ + + * :dp:`fls_8xkvaTWDsjnu` + No change: This behavior is already described in the FLS in :p:`fls_zCswsyuitexI` + +* :dp:`fls_N7Bc0yYbybZV` + `Split \`refining_impl_trait\` lint into \`_reachable\`, \`_internal\` variants `_ + + * :dp:`fls_9MCZ2zPE4rGq` + No change: Lints are not part of the FLS. + +* :dp:`fls_onjwaXIGx3iR` + `Remove unnecessary type inference when using associated types inside of higher ranked \`where\`-bounds `_ + + * :dp:`fls_qBYEI3IahJMh` + No change: The FLS does not specify type inference to such a degree. + +* :dp:`fls_OD9Icyu1uWjS` + `Weaken eager detection of cyclic types during type inference `_ + + * :dp:`fls_0DUycmb1P2Os` + No change: The FLS does not specify type inference to such a degree. + +* :dp:`fls_0DUycmb1P2Os` + `\`trait Trait: Auto {}\`: allow upcasting from \`dyn Trait\` to \`dyn Trait + Auto\` `_ + +.. _fls_rDta70LeEpBl: + +Version 1.77.0 (2024-03-21) +--------------------------- + +* :dp:`fls_QgJ561lpEWUi` + `Reveal opaque types within the defining body for exhaustiveness checking. `_ + + * :dp:`fls_oQuyRstkj66J` + No change: The introspection of the concrete type of the match expression scrutinee is not discussed in paragraph :p:`fls_e02um1gb89d0` + +* :dp:`fls_QDMaabnEQ73n` + `Stabilize C-string literals. `_ + + * :dp:`fls_qVDTWYszGfym` + New section: :p:`fls_U1gHCy16emVe` + +* :dp:`fls_b4OXjAKJACyj` + `Stabilize THIR unsafeck. `_ + + * :dp:`fls_JgalEDgK0Bsz` + No change: Not a language change. + +* :dp:`fls_YU2GiEPMgtTs` + `Add lint \`static_mut_refs\` to warn on references to mutable statics. `_ + + * :dp:`fls_XM7iKLpkqHSW` + No change: Lints are not part of the FLS. + +* :dp:`fls_fbhpU8aeBdi6` + `Support async recursive calls (as long as they have indirection). `_ + + * :dp:`fls_UOGatsGucUFV` + No change: This async restriction is not described in the FLS. + +* :dp:`fls_EhBt0aHL7deR` + `Undeprecate lint \`unstable_features\` and make use of it in the compiler. `_ + + * :dp:`fls_scU89ha8iV7z` + No change: Lints are not part of the FLS. + +* :dp:`fls_1YbvTHuZaB20` + `Make inductive cycles in coherence ambiguous always. `_ + + * :dp:`fls_6iBlIG98rAwR` + No change: The trait solver in coherence resolution is not part of the FLS + +* :dp:`fls_p6qz5mUXFdjX` + `Get rid of type-driven traversal in const-eval interning `_, only as a `future compatibility lint `_ for now. + + * :dp:`fls_8xQA9b8ItnNo` + No change: This restriction of const promotion is not described in the FLS. + +* :dp:`fls_RIZfxwq10lkv` + `Deny braced macro invocations in let-else. `_ + + * :dp:`fls_OAopLKUtBleB` + New paragraph: :p:`fls_1s1UikGU5YQb` diff --git a/src/index.rst b/src/index.rst index 51edad6a..d6110608 100644 --- a/src/index.rst +++ b/src/index.rst @@ -40,6 +40,7 @@ Ferrocene Language Specification licenses glossary undefined-behavior + changelog Indices and tables ------------------ From a84709c870ea280a22696a20b52246e7014e26d5 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Wed, 3 Jul 2024 16:35:18 +0200 Subject: [PATCH 2/8] Typo --- exts/ferrocene_spec/definitions/__init__.py | 2 +- src/changelog.rst | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/exts/ferrocene_spec/definitions/__init__.py b/exts/ferrocene_spec/definitions/__init__.py index e4213f29..897db7ec 100644 --- a/exts/ferrocene_spec/definitions/__init__.py +++ b/exts/ferrocene_spec/definitions/__init__.py @@ -214,7 +214,7 @@ def get_object_types(): def id_from_text(kind, text): # We lowercase the text so that capitalization does not matter for # references and definitions, which is sometimes the case for when they are - # used as the start of a sentence. + # used at the start of a sentence. # Notably though, this breaks for paragraph ids which are unique randomized # strings where capitalization matters for hyperlinking, so we don't do so # for those diff --git a/src/changelog.rst b/src/changelog.rst index 420d961f..b5ebb6d1 100644 --- a/src/changelog.rst +++ b/src/changelog.rst @@ -29,7 +29,7 @@ Version 1.79.0 (2024-06-13) * :dp:`fls_HbxNaRTX5XoS` `Stabilize WebAssembly target features that are in phase 4 and 5. `_ - * :dp:`fls_Dbufw279W10c` + * :dp:`fls_Dasfwf79310c` No change: `cfg` and `cfg_attr` configuration predicates are not part of the FLS. * :dp:`fls_Dbufw279W10c` @@ -41,13 +41,13 @@ Version 1.79.0 (2024-06-13) * :dp:`fls_mdAd1wCv1hMI` `Stabilize the \`unnameable_types\` lint for public types that can't be named. `_ - * :dp:`fls_7gae0TTCRc3v` + * :dp:`fls_hhfg0T312c3v` No change: Lints are not part of the FLS. * :dp:`fls_sH93ZYSVlOOv` `Enable debuginfo in macros, and stabilize \`-C collapse-macro-debuginfo\` and \`#[collapse_debuginfo]\`. `_ - * :dp:`fls_7gae0TTCRc3v` + * :dp:`fls_7gae0TTCRc32` New section: Attribute `collapse_debuginfo` :p:`fls_qyudjGHZfyJH` * :dp:`fls_0bG3GNvXbmiS` @@ -89,7 +89,7 @@ Version 1.79.0 (2024-06-13) * :dp:`fls_FE6Rujg0JzpG` Various changes: - * :dp:`fls_FE6Rujg0JzpG` + * :dp:`fls_12aas6RugJzd` New section: Program Entry Point :p:`fls_8JB3SJqamdpU` * :dp:`fls_gSXmkIYYhTfP` @@ -98,7 +98,7 @@ Version 1.79.0 (2024-06-13) * :dp:`fls_b3x3YUEfjKZy` Removal of definition `main function` - * :dp:`fls_b3x3YUEfjKZy` + * :dp:`fls_42a1YU4ffKZa` binary crate and proc-macro crate rewritten :p:`fls_9ub6ks8qrang` :p:`fls_Mf62VqAhoZ3c` * :dp:`fls_Xtl4nwOusufp` @@ -151,13 +151,13 @@ Version 1.78.0 (2024-05-02) * :dp:`fls_mGo1ObKqvauG` `Make matching on NaN a hard error, and remove the rest of \`illegal_floating_point_literal_pattern\` `_ - * :dp:`fls_rerCWvAc0vU4` + * :dp:`fls_8fsC2vAc0asa` New paragraph: :p:`fls_JP8YSbxSN0Ym` * :dp:`fls_rerCWvAc0vU4` `static mut: allow mutable reference to arbitrary types, not just slices and arrays `_ - * :dp:`fls_rerCWvAc0vU4` + * :dp:`fls_ffeAD2Ac0U12` No change: This lifted restriction is not described in the FLS. * :dp:`fls_J2h9pGT9tGP0` @@ -208,7 +208,7 @@ Version 1.78.0 (2024-05-02) * :dp:`fls_0DUycmb1P2Os` No change: The FLS does not specify type inference to such a degree. -* :dp:`fls_0DUycmb1P2Os` +* :dp:`fls_0gsyc3a1P2s2` `\`trait Trait: Auto {}\`: allow upcasting from \`dyn Trait\` to \`dyn Trait + Auto\` `_ .. _fls_rDta70LeEpBl: From e208393cfce76deac27445a5218d180b5373b205 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Thu, 4 Jul 2024 12:16:17 +0200 Subject: [PATCH 3/8] remove paragraph ids from the changelog --- src/changelog.rst | 261 +++++++++++++++------------------------------- src/conf.py | 2 +- 2 files changed, 83 insertions(+), 180 deletions(-) diff --git a/src/changelog.rst b/src/changelog.rst index b5ebb6d1..21239d03 100644 --- a/src/changelog.rst +++ b/src/changelog.rst @@ -4,268 +4,171 @@ .. default-domain:: spec .. informational-page:: -.. _fls_grvqHf0SUaiN: - Ferrocene Specification Changelog ================================= -.. _fls_6TRrFesJWnoL: - Version 1.79.0 (2024-06-13) --------------------------- -* :dp:`fls_tPldXLk59Axx` - `Stabilize inline \`const {}\` expressions. `_ - - * :dp:`fls_sLrh1GVvUGPn` - New section: Const blocks :p:`fls_G59PiNQkVUnQ` - -* :dp:`fls_juWXW4VMwAs7` - `Prevent opaque types being instantiated twice with different regions within the same function. `_ - - * :dp:`fls_cpxs2P41vApm` - No change: This is already described in types and trait :p:`fls_hza5n5eb18ta` - -* :dp:`fls_HbxNaRTX5XoS` - `Stabilize WebAssembly target features that are in phase 4 and 5. `_ +* `Stabilize inline \`const {}\` expressions. `_ - * :dp:`fls_Dasfwf79310c` - No change: `cfg` and `cfg_attr` configuration predicates are not part of the FLS. + * New section: Const blocks :p:`fls_G59PiNQkVUnQ` -* :dp:`fls_Dbufw279W10c` - `Add the \`redundant_lifetimes\` lint to detect lifetimes which are semantically redundant. `_ +* `Prevent opaque types being instantiated twice with different regions within the same function. `_ - * :dp:`fls_OuDLgCAVNzjU` - No change: Lints are not part of the FLS. + * No change: This is already described in types and trait :p:`fls_hza5n5eb18ta` -* :dp:`fls_mdAd1wCv1hMI` - `Stabilize the \`unnameable_types\` lint for public types that can't be named. `_ +* `Stabilize WebAssembly target features that are in phase 4 and 5. `_ - * :dp:`fls_hhfg0T312c3v` - No change: Lints are not part of the FLS. + * No change: `cfg` and `cfg_attr` configuration predicates are not part of the FLS. -* :dp:`fls_sH93ZYSVlOOv` - `Enable debuginfo in macros, and stabilize \`-C collapse-macro-debuginfo\` and \`#[collapse_debuginfo]\`. `_ +* `Add the \`redundant_lifetimes\` lint to detect lifetimes which are semantically redundant. `_ - * :dp:`fls_7gae0TTCRc32` - New section: Attribute `collapse_debuginfo` :p:`fls_qyudjGHZfyJH` + * No change: Lints are not part of the FLS. -* :dp:`fls_0bG3GNvXbmiS` - `Propagate temporary lifetime extension into \`if\` and \`match\` expressions. `_ +* `Stabilize the \`unnameable_types\` lint for public types that can't be named. `_ - * :dp:`fls_t42bsw6HdHCS` - New paragraphs + * No change: Lints are not part of the FLS. - * :dp:`fls_exj3aCyohLLd` - :p:`fls_Rj9zhVutfQod` +* `Enable debuginfo in macros, and stabilize \`-C collapse-macro-debuginfo\` and \`#[collapse_debuginfo]\`. `_ - * :dp:`fls_XzTrtPQRZYbg` - :p:`fls_oodpp3LpXC13` + * New section: Attribute `collapse_debuginfo` :p:`fls_qyudjGHZfyJH` - * :dp:`fls_h7crW9ZLee4J` - :p:`fls_xGThCPoTUSAi` +* `Propagate temporary lifetime extension into \`if\` and \`match\` expressions. `_ -* :dp:`fls_jnWGDInGZLL9` - `Restrict promotion of \`const fn\` calls. `_ + * New paragraphs: - * :dp:`fls_Ics3st856gPP` - No change: This is already specified in values :p:`fls_3h5vr7xk2rrt` + * :p:`fls_Rj9zhVutfQod` + * :p:`fls_oodpp3LpXC13` + * :p:`fls_xGThCPoTUSAi` -* :dp:`fls_zKkF8t5P9LnS` - `Warn against refining impls of crate-private traits with \`refining_impl_trait\` lint. `_ +* `Restrict promotion of \`const fn\` calls. `_ - * :dp:`fls_EjcpyoBxaI8Z` - No change: Lints are not part of the FLS. + * No change: This is already specified in values :p:`fls_3h5vr7xk2rrt` -* :dp:`fls_NT29OnE6BTsu` - `Stabilize associated type bounds (RFC 2289). `_ +* `Warn against refining impls of crate-private traits with \`refining_impl_trait\` lint. `_ - * :dp:`fls_ZuyjKP2KfCAV` - New paragraph: :p:`fls_mcUMWsYcxzmZ` + * No change: Lints are not part of the FLS. -* :dp:`fls_L5lm8jUfg3ju` - `Stabilize importing \`main\` from other modules or crates. `_ +* `Stabilize associated type bounds (RFC 2289). `_ - * :dp:`fls_FE6Rujg0JzpG` - Various changes: + * New paragraph: :p:`fls_mcUMWsYcxzmZ` - * :dp:`fls_12aas6RugJzd` - New section: Program Entry Point :p:`fls_8JB3SJqamdpU` +* `Stabilize importing \`main\` from other modules or crates. `_ - * :dp:`fls_gSXmkIYYhTfP` - New definition: :t:`crate type` :p:`fls_unxalgMqIr3v` :p:`fls_e7jGvXvTsFpC` :p:`fls_kQiJPwb2Hjcc` + * Various changes: - * :dp:`fls_b3x3YUEfjKZy` - Removal of definition `main function` + * New section: Program Entry Point :p:`fls_8JB3SJqamdpU` + * New definition: :t:`crate type` :p:`fls_unxalgMqIr3v` :p:`fls_e7jGvXvTsFpC` :p:`fls_kQiJPwb2Hjcc` + * Removal of definition `main function` + * binary crate and proc-macro crate rewritten :p:`fls_9ub6ks8qrang` :p:`fls_Mf62VqAhoZ3c` + * library crate removed + * Introduction of `main function signature` functions :p:`fls_sbGnkm8Ephiu` - * :dp:`fls_42a1YU4ffKZa` - binary crate and proc-macro crate rewritten :p:`fls_9ub6ks8qrang` :p:`fls_Mf62VqAhoZ3c` +* `Check return types of function types for well-formedness `_ - * :dp:`fls_Xtl4nwOusufp` - library crate removed + * No change: This is a bug fix in the trait resolution which is not described in the FLS. - * :dp:`fls_b9cUKnX6rji2` - Introduction of `main function signature` functions :p:`fls_sbGnkm8Ephiu` +* `Rework \`impl Trait\` lifetime inference `_ -* :dp:`fls_uvV5kAESyCEp` - `Check return types of function types for well-formedness `_ + * No change: Capturing of lifestime within \`impl Trait\` types is not described in the FLS. - * :dp:`fls_vTQTiu4TVDdz` - No change: This is a bug fix in the trait resolution which is not described in the FLS. +* `Change inductive trait solver cycles to be ambiguous `_ -* :dp:`fls_KNfRdLR5TCJl` - `Rework \`impl Trait\` lifetime inference `_ - - * :dp:`fls_0z5Tru7S30qq` - No change: Capturing of lifestime within \`impl Trait\` types is not described in the FLS. - -* :dp:`fls_l87kw1tZR9Op` - `Change inductive trait solver cycles to be ambiguous `_ - - * :dp:`fls_w1EhKv4rXFx8` - No change: The trait solver is not part of the FLS. - -.. _fls_L2xtE9W3fzl6: + * No change: The trait solver is not part of the FLS. Version 1.78.0 (2024-05-02) --------------------------- -* :dp:`fls_r1ypVWRwRO3R` - `Stabilize \`#[cfg(target_abi = ...)]\` `_ - - * :dp:`fls_PFmLCi644GtO` - No change: \`cfg\` and \`cfg_attr\` configuration predicates are not part of the FLS. +* `Stabilize \`#[cfg(target_abi = ...)]\` `_ -* :dp:`fls_dgJ261l3EW21` - `Stabilize the \`#[diagnostic]\` namespace and \`#[diagnostic::on_unimplemented]\` attribute `_ + * No change: \`cfg\` and \`cfg_attr\` configuration predicates are not part of the FLS. - * :dp:`fls_NsIMHy9kDXYw` - No change: Tool attributes are not part of the FLS. +* `Stabilize the \`#[diagnostic]\` namespace and \`#[diagnostic::on_unimplemented]\` attribute `_ -* :dp:`fls_K642a6dH3DOE` - `Make async-fn-in-trait implementable with concrete signatures `_ + * No change: Tool attributes are not part of the FLS. - * :dp:`fls_KA0eXH2moxGW` - No change: No paragraph in the FLS forbids this prior incompatability +* `Make async-fn-in-trait implementable with concrete signatures `_ -* :dp:`fls_mGo1ObKqvauG` - `Make matching on NaN a hard error, and remove the rest of \`illegal_floating_point_literal_pattern\` `_ + * No change: No paragraph in the FLS forbids this prior incompatability - * :dp:`fls_8fsC2vAc0asa` - New paragraph: :p:`fls_JP8YSbxSN0Ym` +* `Make matching on NaN a hard error, and remove the rest of \`illegal_floating_point_literal_pattern\` `_ -* :dp:`fls_rerCWvAc0vU4` - `static mut: allow mutable reference to arbitrary types, not just slices and arrays `_ + * New paragraph: :p:`fls_JP8YSbxSN0Ym` - * :dp:`fls_ffeAD2Ac0U12` - No change: This lifted restriction is not described in the FLS. +* `static mut: allow mutable reference to arbitrary types, not just slices and arrays `_ -* :dp:`fls_J2h9pGT9tGP0` - `Extend \`invalid_reference_casting\` to include references casting to bigger memory layout `_ + * No change: This lifted restriction is not described in the FLS. - * :dp:`fls_grfw95iCYdZa` - No change: Lints are not part of the FLS. +* `Extend \`invalid_reference_casting\` to include references casting to bigger memory layout `_ -* :dp:`fls_sPzJMf8GbyoC` - `Add \`non_contiguous_range_endpoints\` lint for singleton gaps after exclusive ranges `_ + * No change: Lints are not part of the FLS. - * :dp:`fls_etIqYVoecqrE` - No change: Lints are not part of the FLS. +* `Add \`non_contiguous_range_endpoints\` lint for singleton gaps after exclusive ranges `_ -* :dp:`fls_QFXTGAxM46Cx` - `Add \`wasm_c_abi\` lint for use of older wasm-bindgen versions `_ + * No change: Lints are not part of the FLS. - * :dp:`fls_lWhlYmqX8WAf` - No change: Lints are not part of the FLS. +* `Add \`wasm_c_abi\` lint for use of older wasm-bindgen versions `_ -* :dp:`fls_7pkPlAfcIDes` - `Update \`indirect_structural_match\` and \`pointer_structural_match\` lints to match RFC `_ + * No change: Lints are not part of the FLS. - * :dp:`fls_VxtpIUFcaOaD` - No change: Lints are not part of the FLS. +* `Update \`indirect_structural_match\` and \`pointer_structural_match\` lints to match RFC `_ -* :dp:`fls_iyJF0c5sYNgt` - `Make non-\`PartialEq\`-typed consts as patterns a hard error `_ + * No change: Lints are not part of the FLS. - * :dp:`fls_8xkvaTWDsjnu` - No change: This behavior is already described in the FLS in :p:`fls_zCswsyuitexI` +* `Make non-\`PartialEq\`-typed consts as patterns a hard error `_ -* :dp:`fls_N7Bc0yYbybZV` - `Split \`refining_impl_trait\` lint into \`_reachable\`, \`_internal\` variants `_ + * No change: This behavior is already described in the FLS in :p:`fls_zCswsyuitexI` - * :dp:`fls_9MCZ2zPE4rGq` - No change: Lints are not part of the FLS. +* `Split \`refining_impl_trait\` lint into \`_reachable\`, \`_internal\` variants `_ -* :dp:`fls_onjwaXIGx3iR` - `Remove unnecessary type inference when using associated types inside of higher ranked \`where\`-bounds `_ + * No change: Lints are not part of the FLS. - * :dp:`fls_qBYEI3IahJMh` - No change: The FLS does not specify type inference to such a degree. +* `Remove unnecessary type inference when using associated types inside of higher ranked \`where\`-bounds `_ -* :dp:`fls_OD9Icyu1uWjS` - `Weaken eager detection of cyclic types during type inference `_ + * No change: The FLS does not specify type inference to such a degree. - * :dp:`fls_0DUycmb1P2Os` - No change: The FLS does not specify type inference to such a degree. +* `Weaken eager detection of cyclic types during type inference `_ -* :dp:`fls_0gsyc3a1P2s2` - `\`trait Trait: Auto {}\`: allow upcasting from \`dyn Trait\` to \`dyn Trait + Auto\` `_ + * No change: The FLS does not specify type inference to such a degree. -.. _fls_rDta70LeEpBl: +* `\`trait Trait: Auto {}\`: allow upcasting from \`dyn Trait\` to \`dyn Trait + Auto\` `_ Version 1.77.0 (2024-03-21) --------------------------- -* :dp:`fls_QgJ561lpEWUi` - `Reveal opaque types within the defining body for exhaustiveness checking. `_ +* `Reveal opaque types within the defining body for exhaustiveness checking. `_ - * :dp:`fls_oQuyRstkj66J` - No change: The introspection of the concrete type of the match expression scrutinee is not discussed in paragraph :p:`fls_e02um1gb89d0` + * No change: The introspection of the concrete type of the match expression scrutinee is not discussed in paragraph :p:`fls_e02um1gb89d0` -* :dp:`fls_QDMaabnEQ73n` - `Stabilize C-string literals. `_ +* `Stabilize C-string literals. `_ - * :dp:`fls_qVDTWYszGfym` - New section: :p:`fls_U1gHCy16emVe` + * New section: :p:`fls_U1gHCy16emVe` -* :dp:`fls_b4OXjAKJACyj` - `Stabilize THIR unsafeck. `_ +* `Stabilize THIR unsafeck. `_ - * :dp:`fls_JgalEDgK0Bsz` - No change: Not a language change. + * No change: Not a language change. -* :dp:`fls_YU2GiEPMgtTs` - `Add lint \`static_mut_refs\` to warn on references to mutable statics. `_ +* `Add lint \`static_mut_refs\` to warn on references to mutable statics. `_ - * :dp:`fls_XM7iKLpkqHSW` - No change: Lints are not part of the FLS. + * No change: Lints are not part of the FLS. -* :dp:`fls_fbhpU8aeBdi6` - `Support async recursive calls (as long as they have indirection). `_ +* `Support async recursive calls (as long as they have indirection). `_ - * :dp:`fls_UOGatsGucUFV` - No change: This async restriction is not described in the FLS. + * No change: This async restriction is not described in the FLS. -* :dp:`fls_EhBt0aHL7deR` - `Undeprecate lint \`unstable_features\` and make use of it in the compiler. `_ +* `Undeprecate lint \`unstable_features\` and make use of it in the compiler. `_ - * :dp:`fls_scU89ha8iV7z` - No change: Lints are not part of the FLS. + * No change: Lints are not part of the FLS. -* :dp:`fls_1YbvTHuZaB20` - `Make inductive cycles in coherence ambiguous always. `_ +* `Make inductive cycles in coherence ambiguous always. `_ - * :dp:`fls_6iBlIG98rAwR` - No change: The trait solver in coherence resolution is not part of the FLS + * No change: The trait solver in coherence resolution is not part of the FLS -* :dp:`fls_p6qz5mUXFdjX` - `Get rid of type-driven traversal in const-eval interning `_, only as a `future compatibility lint `_ for now. +* `Get rid of type-driven traversal in const-eval interning `_, only as a `future compatibility lint `_ for now. - * :dp:`fls_8xQA9b8ItnNo` - No change: This restriction of const promotion is not described in the FLS. + * No change: This restriction of const promotion is not described in the FLS. -* :dp:`fls_RIZfxwq10lkv` - `Deny braced macro invocations in let-else. `_ +* `Deny braced macro invocations in let-else. `_ - * :dp:`fls_OAopLKUtBleB` - New paragraph: :p:`fls_1s1UikGU5YQb` + * New paragraph: :p:`fls_1s1UikGU5YQb` diff --git a/src/conf.py b/src/conf.py index 23abdd17..febbccf1 100644 --- a/src/conf.py +++ b/src/conf.py @@ -56,4 +56,4 @@ lint_alphabetical_section_titles = ["glossary"] -lint_no_paragraph_ids = ["index"] +lint_no_paragraph_ids = ["index", "changelog"] From 93604efb409fb6a0517f2fec3840dad3208bf9a1 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Thu, 4 Jul 2024 12:21:06 +0200 Subject: [PATCH 4/8] fix broken links to sections --- src/changelog.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/changelog.rst b/src/changelog.rst index 21239d03..b3b1de76 100644 --- a/src/changelog.rst +++ b/src/changelog.rst @@ -12,7 +12,7 @@ Version 1.79.0 (2024-06-13) * `Stabilize inline \`const {}\` expressions. `_ - * New section: Const blocks :p:`fls_G59PiNQkVUnQ` + * New section: :ref:`fls_G59PiNQkVUnQ` * `Prevent opaque types being instantiated twice with different regions within the same function. `_ @@ -32,7 +32,7 @@ Version 1.79.0 (2024-06-13) * `Enable debuginfo in macros, and stabilize \`-C collapse-macro-debuginfo\` and \`#[collapse_debuginfo]\`. `_ - * New section: Attribute `collapse_debuginfo` :p:`fls_qyudjGHZfyJH` + * New section: :ref:`fls_qyudjGHZfyJH` * `Propagate temporary lifetime extension into \`if\` and \`match\` expressions. `_ @@ -58,7 +58,7 @@ Version 1.79.0 (2024-06-13) * Various changes: - * New section: Program Entry Point :p:`fls_8JB3SJqamdpU` + * New section: :ref:`fls_8JB3SJqamdpU` * New definition: :t:`crate type` :p:`fls_unxalgMqIr3v` :p:`fls_e7jGvXvTsFpC` :p:`fls_kQiJPwb2Hjcc` * Removal of definition `main function` * binary crate and proc-macro crate rewritten :p:`fls_9ub6ks8qrang` :p:`fls_Mf62VqAhoZ3c` @@ -143,7 +143,7 @@ Version 1.77.0 (2024-03-21) * `Stabilize C-string literals. `_ - * New section: :p:`fls_U1gHCy16emVe` + * New section: :ref:`fls_U1gHCy16emVe` * `Stabilize THIR unsafeck. `_ From 428db51ba0c97b4ffdbaea35d81a7a154c7f54dd Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Thu, 4 Jul 2024 12:39:51 +0200 Subject: [PATCH 5/8] harmonize wording --- src/changelog.rst | 62 ++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 33 deletions(-) diff --git a/src/changelog.rst b/src/changelog.rst index b3b1de76..5dde13b4 100644 --- a/src/changelog.rst +++ b/src/changelog.rst @@ -16,19 +16,19 @@ Version 1.79.0 (2024-06-13) * `Prevent opaque types being instantiated twice with different regions within the same function. `_ - * No change: This is already described in types and trait :p:`fls_hza5n5eb18ta` + * No change: already described in :p:`fls_hza5n5eb18ta` * `Stabilize WebAssembly target features that are in phase 4 and 5. `_ - * No change: `cfg` and `cfg_attr` configuration predicates are not part of the FLS. + * No change: ``cfg`` and ``cfg_attr`` configuration predicates are not part of the FLS * `Add the \`redundant_lifetimes\` lint to detect lifetimes which are semantically redundant. `_ - * No change: Lints are not part of the FLS. + * No change: lints are not part of the FLS * `Stabilize the \`unnameable_types\` lint for public types that can't be named. `_ - * No change: Lints are not part of the FLS. + * No change: lints are not part of the FLS * `Enable debuginfo in macros, and stabilize \`-C collapse-macro-debuginfo\` and \`#[collapse_debuginfo]\`. `_ @@ -36,19 +36,15 @@ Version 1.79.0 (2024-06-13) * `Propagate temporary lifetime extension into \`if\` and \`match\` expressions. `_ - * New paragraphs: - - * :p:`fls_Rj9zhVutfQod` - * :p:`fls_oodpp3LpXC13` - * :p:`fls_xGThCPoTUSAi` + * New paragraphs: :p:`fls_Rj9zhVutfQod`, :p:`fls_oodpp3LpXC13`, :p:`fls_xGThCPoTUSAi` * `Restrict promotion of \`const fn\` calls. `_ - * No change: This is already specified in values :p:`fls_3h5vr7xk2rrt` + * No change: already described in :p:`fls_3h5vr7xk2rrt` * `Warn against refining impls of crate-private traits with \`refining_impl_trait\` lint. `_ - * No change: Lints are not part of the FLS. + * No change: lints are not part of the FLS * `Stabilize associated type bounds (RFC 2289). `_ @@ -67,30 +63,30 @@ Version 1.79.0 (2024-06-13) * `Check return types of function types for well-formedness `_ - * No change: This is a bug fix in the trait resolution which is not described in the FLS. + * No change: the exact trait resolution implementation is not part of the FLS * `Rework \`impl Trait\` lifetime inference `_ - * No change: Capturing of lifestime within \`impl Trait\` types is not described in the FLS. + * No change: capturing of lifestime within ``impl Trait`` types is not described in the FLS * `Change inductive trait solver cycles to be ambiguous `_ - * No change: The trait solver is not part of the FLS. + * No change: the exact trait solver is not part of the FLS Version 1.78.0 (2024-05-02) --------------------------- * `Stabilize \`#[cfg(target_abi = ...)]\` `_ - * No change: \`cfg\` and \`cfg_attr\` configuration predicates are not part of the FLS. + * No change: ``cfg`` and ``cfg_attr`` configuration predicates are not part of the FLS * `Stabilize the \`#[diagnostic]\` namespace and \`#[diagnostic::on_unimplemented]\` attribute `_ - * No change: Tool attributes are not part of the FLS. + * No change: tool attributes are not part of the FLS * `Make async-fn-in-trait implementable with concrete signatures `_ - * No change: No paragraph in the FLS forbids this prior incompatability + * No change: no paragraph in the FLS forbids this prior incompatability * `Make matching on NaN a hard error, and remove the rest of \`illegal_floating_point_literal_pattern\` `_ @@ -98,39 +94,39 @@ Version 1.78.0 (2024-05-02) * `static mut: allow mutable reference to arbitrary types, not just slices and arrays `_ - * No change: This lifted restriction is not described in the FLS. + * No change: this lifted restriction was not previously described in the FLS * `Extend \`invalid_reference_casting\` to include references casting to bigger memory layout `_ - * No change: Lints are not part of the FLS. + * No change: lints are not part of the FLS * `Add \`non_contiguous_range_endpoints\` lint for singleton gaps after exclusive ranges `_ - * No change: Lints are not part of the FLS. + * No change: lints are not part of the FLS * `Add \`wasm_c_abi\` lint for use of older wasm-bindgen versions `_ - * No change: Lints are not part of the FLS. + * No change: lints are not part of the FLS * `Update \`indirect_structural_match\` and \`pointer_structural_match\` lints to match RFC `_ - * No change: Lints are not part of the FLS. + * No change: lints are not part of the FLS * `Make non-\`PartialEq\`-typed consts as patterns a hard error `_ - * No change: This behavior is already described in the FLS in :p:`fls_zCswsyuitexI` + * No change: already described in :p:`fls_zCswsyuitexI` * `Split \`refining_impl_trait\` lint into \`_reachable\`, \`_internal\` variants `_ - * No change: Lints are not part of the FLS. + * No change: lints are not part of the FLS * `Remove unnecessary type inference when using associated types inside of higher ranked \`where\`-bounds `_ - * No change: The FLS does not specify type inference to such a degree. + * No change: the FLS does not specify type inference to such a degree * `Weaken eager detection of cyclic types during type inference `_ - * No change: The FLS does not specify type inference to such a degree. + * No change: the FLS does not specify type inference to such a degree * `\`trait Trait: Auto {}\`: allow upcasting from \`dyn Trait\` to \`dyn Trait + Auto\` `_ @@ -139,7 +135,7 @@ Version 1.77.0 (2024-03-21) * `Reveal opaque types within the defining body for exhaustiveness checking. `_ - * No change: The introspection of the concrete type of the match expression scrutinee is not discussed in paragraph :p:`fls_e02um1gb89d0` + * No change: the FLS does not specify introspection of the concrete type of the match expression scrutinee to such a degree * `Stabilize C-string literals. `_ @@ -147,27 +143,27 @@ Version 1.77.0 (2024-03-21) * `Stabilize THIR unsafeck. `_ - * No change: Not a language change. + * No change: not a language change * `Add lint \`static_mut_refs\` to warn on references to mutable statics. `_ - * No change: Lints are not part of the FLS. + * No change: lints are not part of the FLS * `Support async recursive calls (as long as they have indirection). `_ - * No change: This async restriction is not described in the FLS. + * No change: this lifted restriction was not previously described in the FLS * `Undeprecate lint \`unstable_features\` and make use of it in the compiler. `_ - * No change: Lints are not part of the FLS. + * No change: lints are not part of the FLS * `Make inductive cycles in coherence ambiguous always. `_ - * No change: The trait solver in coherence resolution is not part of the FLS + * No change: the FLS does not describe the trait solver to such a degree * `Get rid of type-driven traversal in const-eval interning `_, only as a `future compatibility lint `_ for now. - * No change: This restriction of const promotion is not described in the FLS. + * No change: this lifted restriction was not previously described in the FLS * `Deny braced macro invocations in let-else. `_ From 7042eac4b7ccbc5dc219e287983e69b5bd28d3f2 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Thu, 4 Jul 2024 12:41:18 +0200 Subject: [PATCH 6/8] update section titles --- src/changelog.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/changelog.rst b/src/changelog.rst index 5dde13b4..da9018d7 100644 --- a/src/changelog.rst +++ b/src/changelog.rst @@ -7,8 +7,8 @@ Ferrocene Specification Changelog ================================= -Version 1.79.0 (2024-06-13) ---------------------------- +Language changes in Rust 1.79.0 +------------------------------- * `Stabilize inline \`const {}\` expressions. `_ @@ -73,8 +73,8 @@ Version 1.79.0 (2024-06-13) * No change: the exact trait solver is not part of the FLS -Version 1.78.0 (2024-05-02) ---------------------------- +Language changes in Rust 1.78.0 +------------------------------- * `Stabilize \`#[cfg(target_abi = ...)]\` `_ @@ -130,8 +130,8 @@ Version 1.78.0 (2024-05-02) * `\`trait Trait: Auto {}\`: allow upcasting from \`dyn Trait\` to \`dyn Trait + Auto\` `_ -Version 1.77.0 (2024-03-21) ---------------------------- +language changes in Rust 1.77.0 +------------------------------- * `Reveal opaque types within the defining body for exhaustiveness checking. `_ From f78428063513a617e9cb3a3ff7188bcec8c2fe51 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Thu, 4 Jul 2024 12:49:20 +0200 Subject: [PATCH 7/8] change title and add introduction --- src/changelog.rst | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/changelog.rst b/src/changelog.rst index da9018d7..fad058e8 100644 --- a/src/changelog.rst +++ b/src/changelog.rst @@ -4,8 +4,19 @@ .. default-domain:: spec .. informational-page:: -Ferrocene Specification Changelog -================================= +FLS Changelog +============= + +This page describes the changes that have been applied to the FLS itself to +address changes and new features introduced in each Rust release. Every item +listed in the "Language" section of the release note is reproduced here, along +with the change that has been applied due to it. + +.. caution:: + + This page is **not** an exhaustive list of all of the changes in a release, + 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.79.0 ------------------------------- @@ -168,3 +179,8 @@ language changes in Rust 1.77.0 * `Deny braced macro invocations in let-else. `_ * New paragraph: :p:`fls_1s1UikGU5YQb` + +.. Note: for the publicly rendered version of the FLS we want to link to + upstream's release notes. In the Ferrocene subtree this should be replaced + to the link to the Ferrocene release notes! +.. _release notes: https://doc.rust-lang.org/releases.html From 5170776e36ed2528092c96334d1eac2c5fe3c420 Mon Sep 17 00:00:00 2001 From: Pietro Albini Date: Thu, 4 Jul 2024 13:00:29 +0200 Subject: [PATCH 8/8] improve description of the "importing main" change --- src/changelog.rst | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/changelog.rst b/src/changelog.rst index fad058e8..dcc84327 100644 --- a/src/changelog.rst +++ b/src/changelog.rst @@ -63,14 +63,18 @@ Language changes in Rust 1.79.0 * `Stabilize importing \`main\` from other modules or crates. `_ - * Various changes: + * No change: this lifted restriction was not previously described in the FLS + + * While updating the FLS to account for this feature, we realized that the + way the FLS described crate types was incorrect. We rectified this: * New section: :ref:`fls_8JB3SJqamdpU` - * New definition: :t:`crate type` :p:`fls_unxalgMqIr3v` :p:`fls_e7jGvXvTsFpC` :p:`fls_kQiJPwb2Hjcc` - * Removal of definition `main function` - * binary crate and proc-macro crate rewritten :p:`fls_9ub6ks8qrang` :p:`fls_Mf62VqAhoZ3c` - * library crate removed - * Introduction of `main function signature` functions :p:`fls_sbGnkm8Ephiu` + * New glossary entry: :t:`crate type` + * New paragraphs: :p:`fls_unxalgMqIr3v`, :p:`fls_e7jGvXvTsFpC`, :p:`fls_kQiJPwb2Hjcc`, :p:`fls_OyFwBtDGVimT` + * Updated glossary entries: :t:`binary crate`, :t:`proc-macro crate` + * Updated paragraphs: :p:`fls_9ub6ks8qrang`, :p:`fls_Mf62VqAhoZ3c` + * Moved paragraph: :p:`fls_sbGnkm8Ephiu` + * Removed paragraph about library crates * `Check return types of function types for well-formedness `_