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 "