= doclifter history =

2.22: 2026-02-21::
  Converted documentation to asciidoc.
  We no longer assume DocBook backends can process ISO entities.
  Improved handling of MM header macros.
  Code audited and hardened by ChatGPT-5.2.
  Documentation is fully spellchecked.

2.21: 2024-02-15::
  Allow aliasing MTO to URL - happens in some macro boilerplate
  Discard \F changes in the title field of .TH
  TAPify test machinery.
  Drop testing against Python 2

2.20: 2021-09-20::
  Handle \[en] in NAME sections.
  Use modern GCC error-line tags.
  Handle groff hex escapes like \\*[u92DC].
  Ubuntu has abolished /usr/bin/python, change shebang to python3.

2.19: 2019-03-20::
  Handle .Bf/.Ef in mdoc. 

2.18: 2018-06-12::
  .in +4/.EX...EE/.in is now translated structurally.
  Cope gracefully with some idiosyncracies in OpenSSL library pages.
  Recognize new-style pod2man header.
  Ignore .Dd $Mdocdate$.  Automatically lift 2-digit dates to 4 digits.
  Mwww fix to .MTO generation; also, ignore .LINKSTYLE.
  In mm, interpret .DS/.DE as informal figure and .FG as a caption element.
  Process mdoc .Lk request.

2.17: 2016-03-08::
  Add role mapping for bold highlights.
  Fix list syntax not being terminated by PP.
  Fix a bug that caused pages containing PIC diagrams to get clobbered.
  Fix a bug introduced in 2.16 that caused spurious failures under Python 2.
  Error messages for command and function syntax parse failures have improved.

2.16: 2016-02-25::
  Code now runs under either Python 2 or Python 3.
  Possible input encodings can be specified with the -i option.
  Change default output encoding from ISO-8859-1 to UTF-8.
  Handle .de co and .de au in NAME sections; the groff suite needs this.

2.15: 2014-06-03::
  The usual minor improvements for strange edge cases.
  Work around bugginess of --postvalid in recent xmllint versions.
  Cleanup for new version of pylint.

2.14: 2014-03-18::
  BSD port fix.

2.13: 2013-09-27::
  Simplify and improve ntroff expression evaluation.

2.12: 2013-06-17::
  New logic prevents spurious warnings from .in +N just before .nf. 
  Many more instances of .ta are now automatically handled.
  Multi-file compilation was broken, is now repaired.

2.11: 2013-06-01::
  W3C moved a math DTD; cope.
  Improved .Bl/.El handling and updated canned strings in mdoc.
  Accept \(hy in name sections.
  Handle &numsp;, inadvertently omitted from DocBook v4.
  Added -V for version option.

2.10: 2013-03-17::
  Preserve trailing comments after table rows (example: matherr(3)).
  Add support for some previously missing groff extension glyphs.
  Improved handling of .Bd/.Be in mdoc.

2.9: 2012-07-30::
  Handle foojzs pages better.  Interpret some cases of .rj.
  Recognize "Feature Test" as a function synopsis ender.
  Handle m, r and d troff conditionals.
  Process .ti with positive indent into <blockquote> around the following line.
  Support all mdoc special-character strings.
  Improved recognition of program listings.
  Fix brown-paper-bag bug in processing of mdoc 

2.8: 2012-06-24::
  Fix a bug in command-synopsis parsing pointed out by Tom Browder
  Lifts 97% of 11029 pages in a full Ubuntu Precise Pangolin release.

2.7: 2011-08-23::
  Improvement for lynxprep handling by Jon Vyse.

2.6: 2010-11-26::
  Clean up glitches revealed by pychecker.  Fix buggy interpretation of ms .AI
  macro.  Map TBL "box" attribute to Docbook frame="border".

2.5: 2010-10-19::
  Handle groff \m color extension. Deal gracefully with manpages generated by 
  reStructuredText.  Cope with groff-style \F font escapes better.
  Partial interpretation of troff \h.

2.4: 2010-07-22::
  eqn markup is now handled if the eqn -TMathml switch produces results.
  Bell Labs or Berkeley meaning of .P1 is dispatched to depending on 
  whether .P2 is present.  Added -w option for strict portability checking.
  Fedora bug 220736 fixed. All troff glyphs are now mapped (added
  bracket-pile characters, yogh, hooked-o, and underdot).  You are now
  warned of sequences that look like glyphs but can't be mapped.
  Table handling for mdoc pages has been much improved.  Tests for
  requests that can't be turned into structure are stricter.
  Appropriate cases of \o are now translated into Latin-1 and Latin-2::
  letters with accents.  Inline ad-hoc tables made with .ta and
  literal tabs are now lifted. Groff extended escapes $* and $@ are
  now handled.  Speed optimizations so it's about 30% faster, and a
  profiling switch on manlifter. Rudimentary DocBook V5 translation, but
  inclusions and character entities are iffy and untested.
  Lifts 94% of 11863 pages in a full Ubuntu Lucid Lynx install.

2.3: 2006-12-25::
  Work around a bug in db2man.xsl.  Implement Markus Hoenicka's
  requested behavior for multiple-file conversions. Implement
  translation of groff extended .cc and .c2 requests.  Ignore
  the .TA macro that occurs duplicatively with .ta in X.org 
  manual pages.  Cope with unresolved .Sx refererences in mdoc.
  Handle .Ex and .Ee.  Cope with X consortium macro preamble better.
  .RS/.RE is now fully handled, no more spurious warnings.

2.2: 2005-01-15::
  Have manlifter create subdirectories and the xslfragment 
  only in batch mode.  Use current list indent on block start/end.

2.1: 2005-01-14::
  Interrupt handlers are refactored so manlifter can be aborted with
  a single ^C; as a result, exit values 4 and 5 have swapped places.
  In manlifter, don't remove the result file unless we're in batchmode.
  Lifts 96% of 11121 pages in a full Fedora Core 3 install.

2.0: 2004-12-24::
  Added manlifter to the distribution. doclifter no longer strips off file 
  extensions before appending .xml. Major improvement in parsing of
  displays; C function prototypes are now recognized in them.

1.15: 2004-11-20::
  Fix logic for flushing mdoc namediv.  Handle tables within mdoc
  lists better.  Strip out some pod2man-generated cliches.

1.14: 2004-09-02 
  Added -e option to set encoding in the output XML.  Documented 
  required file extensions for mm, me, ms.  Now lift some trivial uses
  of eqn(1) markup.  Better handling of mm header markup.  Interpret
  the X source distribution's local macros as a secondary markup.
  Nuke &hairsp; it's documented but apparently not actually defined.

1.13: 2004-08-13::
  Manual date now goes in refentryinfo, as Steve Cheng suggested.
  Restored correct parsing of multicommand synopses.

1.12: 2004-07-27::
  Implemented handling of mdoc .Brq macro.  Code no longer chokes on
  multiple Synopsis headers.

1.11: 2004-07-26::
  Speed optimizations.  Improved pod2man detection.  Close <anchor/> properly.
  .UN before .SH or .SS sets the XML ID of the generated section.
  Boldfaced lines immediately before tables are interpreted as titles. .UR now
  generates <link> for local links.  Improved .RE handling that fixes
  a couple of edge cases.  Multiline table entries are now interpreted as full
  blocks, so commands work normally there.

1.10: 2004-07-06::
  Enhance to handle lynx dump pages.  Fix .Fa interpretation.  
  Gets 96% of 10862 Fedora Core 2 pages.

1.9: 2004-06-01::
  John Franklin's support for the Vt macro in mdoc.  Tuning for Psyco.

1.8: 2004-03-01::
  Avoid choking on malformed tables in Qt pages.  Fix minor bug in handling 
  of nested .if/.ie requests. Process Fa macro correctly.

1.7: 2004-02-17::
  Handle .Pa tags in synopses better.  This version lifts 96% of 10316::
  man pages in a full Fedora Core 1 installation.

1.6: 2004-01-02::
  Simpler, better entity translation logic; the -s and -x options are gone.

1.5: 2003-12-29::
  Fixes to RPM packaging.

1.4: 2003-12-26::
  Handle .TQ reduction.  Translate attempts to fake up double quotes
  in text with `` and ''.  Catch a few more .RS/.RE cases.

1.3: 2003-12-15::
  Process .RS/.RE tags to generate list nesting.  As a side effect,
  this change fixes bad interactions between .ig and .TP. Fix a bug in 
  gathering hints from function prologs.  Use <varname>
  rather than <symbol> for variables.  Work around a common bug in ISC
  man pages. Evaluate one-line .el macros properly.

1.2: 2003-12-08::
  SGML-generation support removed; the -s and -x options now
  control whether troff special characters are translated to the
  ISO entity set or the XHTML entity set.
  Corrected a bug in processing of synopses with multiple commands.
  Handle \f[012434] font changes in synopses correctly. -D option
  supports posting hints at startup time.  Better recognition of 
  filenames and commands in running text.  Error return values
  now convey more information.

1.1: 2003-12-04::
  Fixed a bug in conditional evaluation that twadmin(8) tickled.
  Better detection of pure inclusions. Better blank-section 
  elimination.  Kleene star recognized as ... synonym in command
  synopses.  Correct some bugs in semantic-hint collection.
  Limited internationalization -- recognize "NAME" in a couple
  of different languages.  Recognize Qt manual pages and use their
  conventions.  Better lifting of mandoc-generated pages. Translate
  groff-style \[...] escapes, flag unknown ones.  Can now parse
  K&R style function prototypes as well as ANSI ones. This version 
  lifts 96% of 9829 manual pages in a full Red Hat 9 installation
  with Fedora updates to *validated* XML-DocBook.

1.0.6: 2003-11-20::
  Lots of changes made so the XML output will pass validation.
  Appropriately wrap <citerefentry> sequences generated from SEE ALSO.
  Clean up generated <sbrk/> tags when we don't find a function or
  command synopsis.  Push back folded highlights so paragraph generation
  doesn't get screwed up.  Don't generate invalid class attribute for
  <programlisting> and <symbol>.  The .RS command no longer ends a
  .IP or .TP entry.  Correct .Ql so it doesn't generate spurious 
  line breaks. Fix a bug in <group> syntax processing.  Declare <envar>
  <constant>, and <errorcode> in-line tags (avoids fooups in processing 
  mdoc). Fix lexer bug that dropped a character after triple-quote in tokens.
  Evaluate groff-style \\n[...] register escapes, \\n(.$., \w, and .g.
  Generate IDs correctly even when section titles are in CJK.  Accept
  options starting with +. The mdoc interpreter can now deal with an
  out-of-order Synopsis section. This version lifts 94% of 9829 manual
  pages in a full Red Hat 9 installation with Fedora updates.

1.0.5: 2003-10-21::
  Translate Version 8 .L macro and friends.  Fix some minor markup
  problems in doclifter.xml.

1.0.4: 2003-03-18::
  Improved synopsis line detection. Added Berkely Bsx. Ox, Nx macros.
  Implemented extended groff ab, als, nop and return requests.  Some 
  effort is now made to identify markup that refers to section headers
  and lift it to link tags (by Aaron Hawley).  Corrected erroneous
  handling of string quotes around request arguments.  Implemented
  mdoc .Ex and .Rv macros.  Better handling of \d, \u, and \v troff
  requests.

1.0.3: 2003-02-14::
  Enable translation of PIC diagrams using pic2plot. Lift highlighted 
  .*_t and errno appropriately.  Implemented .fam and \F groff
  extensions.  Improved synopsis line detection.  Interpret DS/DE in
  manual pages (it's illegal but unambiguous).  Work around common
  error of putting an opening ' at the left margin. This version lifts 
  96% of 6705 manual pages in a Red Hat 8.0 install.

1.0.2: 2003-02-13::
  Corrected a bug in processing of the .SM highlight on manual pages.
  This affects other font changers with two-character names, notably CW.

1.0.1: 2002-09-17::
  Prevent some false matches on mwww macros.  Don't generate 
  entity inclusion files into the internal set; Tim Waugh says
  it's not necessary and indeed it seems not to be when I'm using xmlto.

1.0.0: 2002-08-17::
  Better firewalling against unbalanced font changes -- unbalanced
  markup can no longer break the translation. Drastically 
  improved parsing of function prototypes. Support for mwww macros.
  Added groff-1.18's euro and micro signs.  Also now interpreting
  various historical fossils from Ultrix and elsewhere that show up
  on Linux manual pages.  This version lifts 95% of the 5548 man pages
  in a full Red Hat 7.3 workstation install.

0.99: 2002-07-30::
  C declaration parsing for sections 2 and 3 by Pradeep Padala.
  Improvements in command-synopsis parsing.  Applied Michael
  Smith's XML-compliance patch.  Default changed to XML to 
  go with 7.3 toolchain.  Added -s option.  This version lifts
  97% of 4253 man pages in a full Red Hat 7.3 install.

0.95: 2002-07-15::
  Point release for Pradeep Padala.
  Added Windows port fix. Better command marking from synopsis 
  sections.  Oops, allow tildes in URLs.  We can handle multiple
  stacked .TP entries now.  Implement groff mso, ignore ftr.
  Crude, non-semantic lifting of function synopses.

0.9: 2001-11-09::
  Add mm support.  Resolve Latin 1 and Latin 2 entities correctly.  
  Don't let line numbering be confused by saved sections.  Handle 
  non-syntactic [] in optional filename extensions.  Improved 
  generation of included entities.

0.8: 2001-11-05::
  Catch and foil attempts to rename immutable macros.  Better
  handling of unbalanced highlights.  Multiple name lines are
  now passed through with the first one parsed. 96% success on 
  sections 1 and 8 of a full Red Hat install.

0.7: 2001-10-31::
  Multiple vertically-stacked hanging tags are now translated into
  Synopsis sections.  Mdoc bibliography macros are supported.
  Paragraphed text in Synopsis sections is now handled. Tcl/Tk
  extension macros are processed.  92% success on section 1 of a
  full Red Hat install.

0.6: 2001-10-18::
  Better handling of weird highlight and paragraphing combinations.

0.5: 2001-10-02::
  Support for Berkeley mdoc.

0.4: 2001-09-05::
  Don't rely on compilerlike.py being available.

0.3: 2001-09-04::
  More steps towards mandoc interpretation.  Checkpoint release for 
  Jorge Godoy and Jeffrey Franks.

0.2: 2001-08-31::
  Extra arguments of .TH are now passed through.  \c is now handled
  properly rather than just being nuked.  Now formats a dozen or
  so more problem pages.  Magic inclusion semantics and -I.  Full
  support for extended groff_char(7) characters.  Implemented .tr.

0.1: 2001-08-27::
  Initial build.

0.0: 2001-08-16::
  First RCS commit.  Project launched

