bug-texinfo
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: bad makeinfo slowdown


From: Karl Berry
Subject: Re: bad makeinfo slowdown
Date: Mon, 8 Nov 2010 23:35:56 GMT

FWIW, I added this attempt at a rationale to the manual (History
section) this morning.  Comments welcome.

--

The new Perl program is much, much slower than the old C program.  We
hope the speed gap will close in the future, but it may not ever be
entirely comparable.  So why did we switch?  There were several
important reasons.

@itemize @bullet
@item HTML customization.  Many GNU and other free software packages
had been happily using the HTML customization features in
@command{texi2html} for years.  Thus, in effect two independent
implementations of the Texinfo language had developed, and keeping
them in sync was not simple.  Adding the HTML customization possible
in @command{texi2html} to a C program would have been nearly
impossible.

@item Unicode, and multilingual support generally, especially of east
Asian languages.  Although of course it's perfectly plausible to write
such support in C, in the particular case of @command{makeinfo}, it
would have been tantamount to rewriting the entire program.  In Perl,
much of that comes essentially for free.

@item Additional back-ends.  The @command{makeinfo} code had grown
convoluted to the point where adding a new back-end was quite complex,
with unfortunate interactions with existing back-ends.  In contrast,
the Perl implementation provides a clean tree-based structure for all
back-ends to work from.  People have requested numerous different
back-ends (@LaTeX{}, the latest (X)HTML, @dots{}), and they will now
be much more feasible to implement.  Which leads to the last item:

@item Making contributions easier.  In general, due to the cleaner
structure, the Perl program should be considerably easier than the C
for anyone to read and contribute to, with the resulting obvious
benefits.
@end itemize



reply via email to

[Prev in Thread] Current Thread [Next in Thread]