As mentioned in the comments the main reason for latexrelease
is being able to roll back. Roll forward is much harder to manage (and to test) and given that we now offer development release which are ahead of the official release less needed.
Having said this, the current latexrelease
was/is simply buggy when it comes to rolling forward. For one it had the code in a different order than it is in the kernel (which doesn't matter much when rolling back but matters a lot when rolling forward). And there have been a number of other issues that I found when trying to do roll forward using earlier TeXLive releases as a starting point.
I think I have fixed all of them but I only tested from yearly releases as it is rather difficult to build a release from say 2020-02-02 just for testing. So fingers crossed but you may want to check out if the following file works for you:
https://pastebin.com/raw/sZFgEwMr
pastebin told me it is perhaps offensive content :-) (probably because the word latex appears a lot?) but it should be just the package code.
Update
I should note that rolling forward using latexrelease
is obviously only rolling forward the kernel files (as these are the only ones that can be patched this way). While rolling back can also be done for package, that is obviously not possible when rolling forward, because the package from 2019 can't know what changes it needs in 2020. For the kernel that also only works by getting a new LaTeX release from 2020 and using that to patch a 2019 kernel.
So concerning the comment below: amsmath is still on 2019 version and that version used \newcommand
for \negmedspace
and this breaks because patching the kernel to 2020 defines that command already in the kernel.
Possible solutions: either update amsmath to 2020 or try
\RequirePackage[2020/10/01]{latexrelease}
\AddToHook{package/before/amsmath}{%
\let\negmedspace\relax
\let\negthickspace\relax
}
Explanation: after using latexrelease
the new hook management scheme is available so we can state that just before loading amsmath it should undefine the problem commands.
But not that this only works because the change here is trivial. If more had changed in amsmath that need updating it really would get out of hand.
latexrelease
tags in the source code is hard and we've obviously got something wrong along the way. Could you please report an issue at github.com/latex3/latex2e/issues?