From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 654CB7F615 for ; Mon, 19 Dec 2016 18:59:24 +0100 (CET) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=ivg@ieee.org; spf=Pass smtp.mailfrom=ivg@ieee.org; spf=None smtp.helo=postmaster@mail-lf0-f51.google.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of ivg@ieee.org) identity=pra; client-ip=209.85.215.51; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="ivg@ieee.org"; x-sender="ivg@ieee.org"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of ivg@ieee.org designates 209.85.215.51 as permitted sender) identity=mailfrom; client-ip=209.85.215.51; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="ivg@ieee.org"; x-sender="ivg@ieee.org"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-lf0-f51.google.com) identity=helo; client-ip=209.85.215.51; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="ivg@ieee.org"; x-sender="postmaster@mail-lf0-f51.google.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3AYN/xAhziIdFu/hPXCy+O+j09IxM/srCxBDY+r6Qd?= =?us-ascii?q?0uIWIJqq85mqBkHD//Il1AaPBtSAra0bwLOO7eigATVGusnR9ihaMdRlbFwst4?= =?us-ascii?q?Y/p0QYGsmLCEn2frbBThcRO4B8bmJj5GyxKkNPGczzNBX4q3y26iMOSF2kbVIm?= =?us-ascii?q?bre9JomHhM2y06W2+obPK1FDjT+5JLdzNwmerAPLt8BQj5E0eYgrzR6cg2VBfa?= =?us-ascii?q?x5wn9vO1mTngrnrpOx4pFL8ildtrQm7cEWAvayRLgxUbENVGduCGsy/sC+7RQ?= =?us-ascii?q?=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0BuAAALH1hYhjPXVdFDGh0BBQELARgGD?= =?us-ascii?q?IMNAQEBAQF5gQYHgTawE4JBgg4wgmeCCiqFeIF9B0ESAQEBAQEBAQEBAQESAQE?= =?us-ascii?q?BCAsLCR0wgjMYgkcdAQE3AR4HNwIkEgEFASIuiFAOLpsjP4saaIIogwwBAQWHe?= =?us-ascii?q?AEKAQEBHAMFEoYkh1yBaoJXgl2QA4RwhgKBS4UHhTKFMItQhH2QYhQegRQmA2t?= =?us-ascii?q?nPgODOCCCBiA0AYkJAQEB?= X-IPAS-Result: =?us-ascii?q?A0BuAAALH1hYhjPXVdFDGh0BBQELARgGDIMNAQEBAQF5gQY?= =?us-ascii?q?HgTawE4JBgg4wgmeCCiqFeIF9B0ESAQEBAQEBAQEBAQESAQEBCAsLCR0wgjMYg?= =?us-ascii?q?kcdAQE3AR4HNwIkEgEFASIuiFAOLpsjP4saaIIogwwBAQWHeAEKAQEBHAMFEoY?= =?us-ascii?q?kh1yBaoJXgl2QA4RwhgKBS4UHhTKFMItQhH2QYhQegRQmA2tnPgODOCCCBiA0A?= =?us-ascii?q?YkJAQEB?= X-IronPort-AV: E=Sophos;i="5.33,374,1477954800"; d="scan'208,217";a="250738304" Received: from mail-lf0-f51.google.com ([209.85.215.51]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 19 Dec 2016 18:59:23 +0100 Received: by mail-lf0-f51.google.com with SMTP id b14so59405856lfg.2 for ; Mon, 19 Dec 2016 09:59:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ieee-org.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to:cc; bh=AQq/CAB9tui791XOJEJFpyto8vHKleT9yKpgcdiHczg=; b=hS3/R5bvEL1AuAU7NThYzriYAGpIASXiL4pnJuS9J0HNUyLvaQ8nCp3GcgqPwNJD7v r7Cv85SYJQB6c//i4Lpid51mSp/HUWJq7OXHcsuQoA3FL/qRl5GJjaesmKOE6s4Iet+o p+Ko2wGjs5QSTZLWQ/l8cKNVcFIt+ZUNUNVx9f4oJL9B7YvCiFkcSc0+12smrTPJekMM v0k/e/LIJrlz62lRHCT63t/ZKKI45g46UTuOYpRZ6EtLjc+p2hEEKVxJhBeT/8djgZUS ijkSlWcZjnPbxlZJf/fdeVwQezvr6x+dr0rJLc7k2CbV2Lv/xjnK8Mrs+IAgwNXfMrh3 zloQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=AQq/CAB9tui791XOJEJFpyto8vHKleT9yKpgcdiHczg=; b=U6Xse/X2vSrlfmXjrY9f+v2hGYq9N5V9ihQliOsdGUG8l36vQkIiw+MKAnIG0saaiW ZXa25yAQ9Qiw8IGetf/2downp2cUx2eggAdBGO8QQGYD354cKfk+ZghACE3N5JpRsTHX PHX6vlsX/bXS7X+3svaslBRoZ+ThnpseSd9jrEIAkscFzqMkW/KPWROQBjWivnb0kO5Y tlWUMQbIDtONjXCeUqd/uMqOdgGMkl7nr6+JXfTiy1GEajeAjm5ubTCPh7J7ynF0wk6c BytrVk9A5Vau3Baeeruj+w6SnWYIGpxPSIC022CWG4h9H+2e3wkXD87qOC3Tp9g5AbVp xTig== X-Gm-Message-State: AKaTC038+q/aYhUlmuceO32RruQo+sjw6wsfv6GN6uBDbcx569XYJLP5i7x5UeFr9pWrodzacBRanwrYyXqLSyiB X-Received: by 10.46.78.2 with SMTP id c2mr7430149ljb.62.1482170362789; Mon, 19 Dec 2016 09:59:22 -0800 (PST) MIME-Version: 1.0 Received: by 10.114.93.99 with HTTP; Mon, 19 Dec 2016 09:59:22 -0800 (PST) From: Ivan Gotovchits Date: Mon, 19 Dec 2016 12:59:22 -0500 Message-ID: To: caml-list Cc: Pierre.Weis@inria.fr Content-Type: multipart/alternative; boundary=f403045ec2eaf89cc6054406ad0c Subject: [Caml-list] Deprecation of tabulation boxes --f403045ec2eaf89cc6054406ad0c Content-Type: text/plain; charset=UTF-8 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 --f403045ec2eaf89cc6054406ad0c Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Greetings,

The tabulation boxes are mar= ked 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 th= e Matis issue tracker[1]:


The proposed printf-like syntax is= fine, but tabulation boxes are now deprecated.=C2=A0
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 modu= le.
If considered useful, tabulation boxes could be implemented out of t= he Format module.

First of all the ta= bulation boxes can't be implemented outside of the format module=C2=A0s= ince the tab stops are actually stored in the stack of tabulation boxes. If= this data field would be removed from the formatter=C2=A0we will need to p= ass an extra argument to all pretty-printers that use the tabulation break,= or use some global variable. Neither solution can be considered acceptable= .=C2=A0

Speaking about the usefulness. The tabulat= ion boxes are useful for printing assembly outputs. And since compiler writ= ing is sort of an application area for OCaml, it shouldn't be considere= d as a rare case. It is also very useful for printing Fortran code, that ca= n be considered an assembler for the numeric computing. It also just allows= printing nicely formatted texts, that it the main purpose of the Format li= brary. As an example, tabulation boxes are used in BAP and CIL frameworks.= =C2=A0

To summarize, the deprecation will eventual= ly make few project non-compilable. And there is no clear substitution for = the deprecated feature.=C2=A0

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

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

Best wishes,
Ivan Gotovch= its

--f403045ec2eaf89cc6054406ad0c--