On Fri, Feb 21, 2025 at 07:45:50PM +0100, Patrice Dumas wrote:
> Hello,
> 
> I propose to remove the part of the History node in the Texinfo manual
> that starts with "The new Perl program was much slower than the old C
> program." and ends with "still believed that this structure could in
> theory lend better to contributions.".
> 
> This is information that was relevant in 2012, but not so much nowadays.
> 
> Any opposition?

I generally agree.  I suggest also that the discussion of the never-released
ca. 2012 version of texi2html be trimmed down or removed.

Current text (possibly slightly edited from the original if I remember
correctly):

"Extensive tests of the language and processor were developed at the
same time as @command{texi2any}; we encourage anyone thinking of writing
a program to parse Texinfo input to make use of these tests."

I never understood how anybody was supposed to make use of these tests
if they were writing their own program to process Texinfo, as they were
highly coupled to the texi2any code.

I'm not sure that the whole paragraph about a "reference implementation"
is particularly relevant either.

I feel this text is too specific and not particularly interesting for
this node:

"Multilingual support for C and C in @command{texi2any} has progressed
importantly.  Perl multilingual support is only required for index entries
sorting nowadays, to be able to have spaces and punctuation marks sort
before letters.

I've tried editing the node, reordering some parts and deleting others.
I kept the text "much slower than old C program" to give a reason for
why parts of the program have since been rewritten in C.

diff --git a/doc/texinfo.texi b/doc/texinfo.texi
index 017d730480..79fabe2aff 100644
--- a/doc/texinfo.texi
+++ b/doc/texinfo.texi
@@ -616,32 +616,25 @@ @node History
 @cindex Cons, Lionel
 @cindex Dumas, Patrice
 In 2012, the C @command{makeinfo} was itself replaced by a Perl
-implementation generically called @command{texi2any}.  This version
+implementation generically called @command{texi2any}, written by
+Patrice Dumas. This version
 supports the same level of output customization as
 @command{texi2html}, an independent program originally written by
-Lionel Cons, later with substantial work by many others.  The many
-additional features needed to make @command{texi2html} a replacement
-for @command{makeinfo} were implemented by Patrice Dumas.  The first,
-never-released version of @command{texi2any} was based on the
-@command{texi2html} code.
+Lionel Cons, later with substantial work by many others.
 
 @cindex Tree representation of documents
 @cindex Syntax tree representation of documents
 @cindex Abstract syntax tree representation of documents
-That implementation, however, was abandoned in favor of the current
-program (also written by Patrice Dumas), which parses the Texinfo
-input into a tree for processing.  It inherited the design of
+@command{texi2any} inherited the design of
 customization and other features from @command{texi2html} (for more
 on @command{texi2html} compatibility, @pxref{@command{texi2html}}).
-However, @command{texi2any} is a full reimplementation: it constructs
+However, @command{texi2any} was a full reimplementation: unlike
+@command{texi2html}, it constructs
 a tree-based representation of the input document for all back-ends
 to work from.
 
-The new Perl program was much slower than the old C program.
-So why did we switch?  In short, we intended and hoped that the program would
-be much easier than the previous C implementation of @command{makeinfo} to
-extend to different output styles, back-end output formats, and all other
-customizations.  In more detail:
+The new Perl program was intended to have the following advantages over
+the old C program:
 
 @itemize @bullet
 @item HTML customization.  Many GNU and other free software packages
@@ -654,10 +647,7 @@ @node History
 
 @item Unicode, and multilingual support generally, especially of east
 Asian languages.  At that time, doing it in C would have been tantamount
-to rewriting the entire program.  Since then, multilingual support for C and C
-in @command{texi2any} has progressed importantly.  Perl multilingual support is
-only required for index entries sorting nowadays, to be able to have spaces and
-punctuation marks sort before letters.
+to rewriting the entire program.
 
 @item Additional back-ends.  The @command{makeinfo} code had become
 convoluted to the point where adding a new back-end was quite complex,
@@ -665,45 +655,23 @@ @node History
 the new implementation provides a clean tree-based representation for
 all back-ends to work from.  People have requested numerous different
 back-ends (@LaTeX{}, the latest (X)HTML, @dots{}); this change made them
-much more feasible to implement.  Which leads to the last item:
-
-@item Making contributions easier.  In general, due to the cleaner
-structure, the separate parser/back-ends implementation
-should be considerably easier than the former C @command{makeinfo}
-implementation for anyone to read and contribute to, with the resulting
-obvious benefits.  After thirteen years, contributed back-ends were yet to
-happen, but it is still believed that this structure could in theory lend
-better to contributions.
-
+much more feasible to implement.
 @end itemize
 
 @cindex Future of Texinfo implementations
 With the release of @command{texi2any} as the reference implementation in 2012,
 development of both the C implementation of @command{makeinfo} and
-@command{texi2html} halted.  Since then, the parser, part of the Info converter
+@command{texi2html} halted.
+
+At the time,
+the new Perl program was much slower than the old C program.
+Since then, the parser, part of the Info converter
 and the HTML converter as a whole have been translated to C, leading to
 important gains in speed compared to the pure Perl implementation of
 @command{texi2any}.  The main program has also been translated to C.  The
 @command{texi2any} C implementation embeds a Perl interpreter for the parts
 that require Perl.
 
-@cindex @command{texi2any}, as reference implementation
-@cindex Reference implementation
-@cindex Implementation, @command{texi2any} as reference
-@cindex Texinfo language tests
-@cindex Tests, of Texinfo language
-@anchor{Reference Implementation}@c
-@command{texi2any} is intended to be a reference implementation
-that defines parts of the language not fully specified by the manual.
-Without such a reference, alternative implementations would be very
-likely to have subtle, or not-so-subtle, differences in behavior,
-and thus Texinfo documents would become dependent on the processor.
-It is also important to have consistent command-line options for
-all processors.  Extensive tests of the language and processor were
-developed at the same time as @command{texi2any}; we encourage anyone
-thinking of writing a program to parse Texinfo input to make use of
-these tests.
-
 
 @node Writing a Texinfo File
 @anchor{Beginning and Ending a File}@c old name

"

Reply via email to