I’m working on the PR which will formalize this now, but yes, that is currently the plan. For 2.32, the expiring deprecations will become errors, but will still be parseable and --auto-format’s --canonicalize=deprecations will recognize them and produce the updated syntax.
For 2.33 and on, they will not be recognized at all. It’s looking like Tuples will finally be able to land in 2.33, and they are really reliant on the new array syntax, so a delay in the deprecation schedule could start holding up features. If there are things we can do to make this less painful for the R packages I’d love to hear them
Tagging @paul.buerkner, as brms is by far the most prominent R package that depends on running Stan code via both cmdstan and CRAN’s rstan. Edit: the only strict dependency is on CRAN’s rstan, but running via cmdstan is important functionality.
If Paul feels good about the way forward, then I’m happy.
Is it planned that the auto-formatter will be able to digest the old Stan code with 2.33 and onwards?
I’d guess that as long as all this means is to switch on some parser option, then it’s manageable. In case the old syntax cannot be parsed at all with 2.33 going forward, then that could be an issue, I guess.
(great to read implicitly that tuples are going to land in 2023 presumably)
The plan is that in 2.33, the compiler can forget about the old syntax entirely. If the goal of deprecations is to allow the language and compiler code base to evolve, freezing the auto formatter would prevent us from actually deleting that old code.
Of course, if you have code from 2.19 or whatever version before 2.33, you can run the auto formatter from an “old” version (e.g. 2.31) as part of your update cycle and that will always work. It might be reasonable to provide a really striped down binary which only does migration of pre-2.33 code (e.g. not even compilation), since that binary would never really need to be updated.
I predict we get a lot of problems if RStan in CRAN is not supporting new array syntax when the old syntax stops working in a new release. It would be good to be certain that there is a new working CRAN RStan before removing the old array support. Ping @bgoodri@andrjohns