During RustWeek I had a chance to catch up with dtolnay about moving default_field_values forward towards stabilization. One of the (mild) blockers is incorporating support for it in syn. To minimize strife, the idea will be to release syn 3.0 with this change, but before we can commit fully to that release, it would be very useful to have a full list of all potential AST changes in the pipeline, so that we're not stuck with a syn 3.0 that doesn't support a feature a mere month after release.
We have an idea about making AST nodes non-exhaustive to better support evolution in the future, but the point still stands.
I am asking for help to compile this list. If there are any syntax visible changes that will likely require AST changes (lean towards assuming they will, if you're unsure), I would love to hear about them.
8 Likes
Field projections (Tracking Issue for Field Projections · Issue #145383 · rust-lang/rust · GitHub ) are likely to need new syntax, although I don't think the specific new syntax has been decided on yet.
Pattern types (Tracking Issue for pattern types · Issue #123646 · rust-lang/rust · GitHub ) are a new sort of type which will need some syntax. For the time being (while the feature is being developed), they're using a macro-like syntax, but the macro will need to expand to something and it's plausible that a more built-in syntax will need to be adopted.
3 Likes
These are also still experimental, but potentially:
opened 10:36PM - 30 Nov 25 UTC
T-lang
C-tracking-issue
B-experimental
This is a tracking issue for *experimental* work related to https://github.com/r… ust-lang/rfcs/pull/3721#issuecomment-3208342727
The feature gate for the issue is `#![feature(try_blocks_heterogeneous)]`.
For *homogeneous* try blocks, see #31436
### About tracking issues
Tracking issues are used to record the overall progress of implementation.
They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions.
A tracking issue is however *not* meant for large scale discussion, questions, or bug reports about a feature.
Instead, open a dedicated issue for the specific matter and add the relevant feature gate label.
Discussion comments will get marked as off-topic or deleted.
Repeated discussions on the tracking issue may lead to the tracking issue getting locked.
### Steps
- [ ] Implement the RFC (cc @rust-lang/XXX -- can anyone write up mentoring
instructions?)
- [x] #149489
- [ ] Adjust documentation ([see instructions on rustc-dev-guide][doc-guide])
- [ ] Style updates for any new syntax ([nightly-style-procedure])
- [ ] Style team decision on new formatting
- [ ] Formatting for new syntax has been added to the [Style Guide]
- [ ] (non-blocking) Formatting has been implemented in `rustfmt`
- [ ] Stabilization PR ([see instructions on rustc-dev-guide][stabilization-guide])
[stabilization-guide]: https://rustc-dev-guide.rust-lang.org/stabilization_guide.html#stabilization-pr
[doc-guide]: https://rustc-dev-guide.rust-lang.org/stabilization_guide.html#documentation-prs
[nightly-style-procedure]: https://github.com/rust-lang/style-team/blob/main/nightly-style-procedure.md
[Style Guide]: https://github.com/rust-lang/rust/tree/HEAD/src/doc/style-guide
### Unresolved Questions
- [ ] #154127
- [ ] #154128
### Implementation history
- #149489
2 Likes
don't forget const trait impls and const trait bounds
1 Like
one other thing that would be really nice would to have better parser error recovery so using a proc-macro on some large section of code doesn't just replace everything with compile_error!() whenever the code is incomplete while you're editing it in an IDE.
6 Likes
looking through recent commits to rustc_parse:
committed 08:33AM - 24 May 26 UTC
committed 01:22PM - 07 May 26 UTC
committed 06:11PM - 29 Apr 26 UTC
committed 06:57AM - 19 Apr 26 UTC
committed 07:12AM - 12 Feb 26 UTC
Co-authored-by: Michael Goulet <michael@errs.io>
committed 03:59PM - 09 Feb 26 UTC
Revert, but without type const.
Update symbol for feature err, then update sugg… estion output, and lastly update tests that change because of those.
Update these new tests with the correct syntax, and few existing tests with the new outputs the merge with main added.
Fix for tidyfmt and some errors when manually resolving a merge conflicts.
Update these tests to use update error messages and type const syntax.
Update comments and error message to use new syntax instead of old type_const attribute.
Remove the type_const attribute
update some more tests to use the new syntax.
Update these test cases.
update feature gate test
Change gate logic for `mgca_type_const_syntax` to work also if `min_generic_const_args` is enabled.
Create a new feature gate that checks for the feature before expansion.
Make rustfmt handle the `type const` syntax correctly.
Add a convience method to check if a RhsKind is type const.
Rename `Const` discriminant to `Body` for `ConstItemRhsKind`
Give the `TraitItemKind` flag an enum instead of a simple bool to better describe what the flag is for.
Update formatting for these match statements.
Update clippy test to use type const syntax.
Update test to use type const syntax.
update rustfmt to match ast items.
Update clippy to match ast and hir items.
Few more test cases that used old attribute, instead of 'type const'
Update to match the output from the feature gate checks.
tidyfmt adjustments.
Update the is_type_const, so I can constrain record!(..) in encoder.rs
Update conditional compilation test.
Move the feature gate to after expansion to allow for cfg(...) to work.
Update some more tests to use the new syntax.
Update type const tests in associated-const-bindings to use new syntax.
Don't check based off the attribute, but the item here.
Update some tests outside of the const_generics folder that were using #[type_const]
update the tests in associated consts that use #[type_const] to use type const
Update these mgca tests with the type const syntax.
Add a flag to TraitItemKind for detecting type const for now. Maybe later change ItemConstRhs to have optional consts but that touches a lot more lines of code.
Don't need into for these now that it's a query.
Add is_type_const query to handle foreign def ids.
update this test to use type const syntax.
Fix logic here, we only want to lower if there is expression in this case.
Update built-in macros to use ConstItemRhsKind
Update more instance of the old ConstItemRhs.
Rename ConstItemKind to ConstItemRhsKind, I noticed there is a typed called ConstantItemKind, so add the Rhs to the name to avoid confusion.
Update lower to use ConstItemKind
Add an other helper method to check if the rhs kinda has an expr.
Update item parse to use ConstItemKind enum.
Felt the field name could a be little clear when editing a few other things.
Change the ConstItem struct see know if we have a type const or regular const.
Make sure this syntax is properly feature gated.
committed 07:01PM - 28 Jan 26 UTC
T-lang came back on the stabilization PR asking for CR to be disallowed
to leave… room for all stray CRs to be rejected in the future.
At that point, the test can remain but the implementation can be
removed.
If that plan does not go through, we'll need to re-evaluate
- whether this is more lint-like and should defer to the calling tool
that is managing the frontmatter
- how much Rust should treat the frontmatter as Rust and apply the same
grammar restrictions of "no stray CR" (like raw string literals)
committed 03:12PM - 21 Jan 26 UTC
committed 04:46AM - 14 Jan 26 UTC
committed 07:34AM - 23 Dec 25 UTC
committed 04:18AM - 10 Dec 25 UTC
148725 moved the default to being homogeneous; this adds heterogeneous ones back… under an obvious-bikeshed syntax so people can experiment with that as well.
Essentially resolves 149025 by letting them move to this syntax instead.
committed 04:00PM - 18 Nov 25 UTC
committed 01:57AM - 10 Nov 25 UTC
committed 11:22AM - 21 Oct 25 UTC
committed 01:12PM - 19 Aug 25 UTC
committed 01:46PM - 26 Jun 25 UTC
committed 03:10PM - 05 May 25 UTC
6 Likes
epage
May 30, 2026, 1:43am
7
Mut restrictions got mentioned. Another half is impl restrictions. Both are part of a gsoc project to implement the rfc, see Google Summer of Code
3 Likes
Lets open another thread for that conversation. I'd like to hear more.
1 Like