Greetings,

The tabulation boxes are marked as deprecated since 4.03.0. I've tried to google for
any reasons that justify the removal but found only a note by Pierre Weis in the Matis issue tracker[1]:


The proposed printf-like syntax is fine, but tabulation boxes are now deprecated. 
Indeed, tabulation boxes interaction with other pretty-printing boxes have never been sorted out and tabulation boxes usage is orthogonal to the rest of the Format module.
If considered useful, tabulation boxes could be implemented out of the Format module.

First of all the tabulation boxes can't be implemented outside of the format module since the tab stops are actually stored in the stack of tabulation boxes. If this data field would be removed from the formatter we will need to pass an extra argument to all pretty-printers that use the tabulation break, or use some global variable. Neither solution can be considered acceptable. 

Speaking about the usefulness. The tabulation boxes are useful for printing assembly outputs. And since compiler writing is sort of an application area for OCaml, it shouldn't be considered as a rare case. It is also very useful for printing Fortran code, that can be considered an assembler for the numeric computing. It also just allows printing nicely formatted texts, that it the main purpose of the Format library. As an example, tabulation boxes are used in BAP and CIL frameworks. 

To summarize, the deprecation will eventually make few project non-compilable. And there is no clear substitution for the deprecated feature. 

Given that, I would like to hear the justifications for the deprecation of tabulation boxes and suggested workarounds. 

One possible workaround, that I could see, is making the `formatter` type extensible with existential boxes or, more generally, with existential attributes. In that case, we will indeed be able to implement tabulation boxes outside of the format module. 

Best wishes,
Ivan Gotovchits

[1]: https://caml.inria.fr/mantis/view.php?id=4665