Is there any reason to *not* use the LaTeX3 Programming Layer (expl3)

expl3latex3

I am just discovering the LaTeX3 Programming Layer (expl3) and am pleased by the very elegant solutions that it provides. Considering that it exists for quite a while now, but still is in development (Is there some final 'stable' release planned, or is this just some smooth transition?), would there be any reason not to use LaTeX3 by now for everything (possible)?

E.g. I write some smaller packages for my own use, and LaTeX3 greatly simplifies this, but I am not sure whether to commit to this fully yet.

Best Answer

Please note that the code formerly distributed as expl3 is now part of the LaTeX format (under the name L3 programming layer). It is nevertheless (and will remain so) possible to say \usepackage{expl3} but it isn't necessary since 2020 unless you want to pass certain debugging options.

There are very good reasons to use the L3 programming layer. The layer is fully supported and the LaTeX project team will gradually move code over from legacy 2e to use the L3 programming layer. All new code, for example the Hook management system (which was introduced in 2020), is already fully build on the L3 programming layer.

The concern raised in the other post needs qualification: the list may appear to be long but if you look at the removal dates (which are a year or 2 after a function was deprecated) then they are essentially all from the time when the L3 programming layer was still separate from the LaTeX format and (while essentially stable then) was distributed as a separate "experimental" package called expl3. We may even in the future deprecate a function because it turned out that the interface needed improving or the name was badly chosen, but as Joseph said in his reply, we have decided that in the future we will not remove such deprecated interfaces from the kernel.

Related Question