An -*- outline -*- of the user-visible changes in CL-BibTeX

* News in version 1.0

** CL-BibTeX is now released under GNU LGPL 2.1 or later 
   with Franz-style Lisp clarification.

** An ASDF system definition file is included.

   It was contributed by Hans Halvorson.

* News in version 0.4

** BibTeX's output line breaking mechanism has been implemented.

   Printing the .bbl file is now done with the new functions BBL-PRINT
   and BBL-TERPRI, which break output lines after *BBL-MAX-PRINT-LINE*
   characters (the default is 79).

   Output line breaking can be disabled by setting or binding
   *BBL-MAX-PRINT-LINE* to nil.  This can be desirable, for instance,
   for formatting bibliographies that contain very long lines with
   \url macros, because the comment characters (%) introduced by the
   line breaking mechanism show up in the formatted URL.  (However,
   the real solution for the problem with \url macros is to simply
   break the URLs in the bibliography file using whitespace, because
   url.sty ignores whitespace when typesetting the URL.)

** The compiler now deals with WHILE$ loops with complicated data flow.

   The predicate function can now pass values to the body function on
   the stack.  Such a WHILE$ loop gets converted to a simple LOOP form
   with a RETURN call, rather than a DO form.

** The compiler now makes some variables constant.

   Variables that get assigned a value exactly once (before any
   reference to them) are turned into constants.  This makes the
   data-flow in the resulting Lisp programs clearer.

** The compiler now tries to deal with slightly broken style files.

   Many BibTeX style files are slightly broken in a way such that the
   stack becomes corrupted in some corner cases.  The compiler cannot
   analyze those functions completely.  

   Now, instead of giving up, the compiler tries to fix the bad stack.
   This results in Lisp files that contain calls to ERROR.  If the
   compiler guesses right, the generated Lisp program will work as
   well as the original style file; but when one of the broken corner
   cases occurs, a run-time error will be signaled.

** The system now has a test-suite for testing the correctness.

** Bug fixes:

*** A bug regarding functions that return multiple values has been fixed.

    The bug showed up when compiling certain style files generated
    with the custom-bib system (merlin.mbs).  The compiler erroneously
    complained about an IF$ form with bad stack balance.

*** The compiler now coerces booleans to integers in assignments.

*** When an undefined macro is used in an entry, don't skip the whole entry.

    Just emit a warning and use an empty string.

*** Some minor differences with BibTeX's output have been corrected.

    There were too many tildes in some formatted names.  The sort
    order was sometimes wrong, due to a bug in PURIFY$.  Changing the
    case of a string resulted in extraneous whitespace after control words.

*** The capitalization of "foreign characters" has been corrected.

*** Crossrefs are also resolved when all entries are cited (\cite{*}).


* News in version 0.3.1

  This is a bug-fix release.


* News in version 0.3

** The compiler now supports BibTeX macros (named strings).

** The compiler now makes some variables lexical (rather than special).

   The compiler keeps track whether a variable is accessed before it
   is assigned in any function.  If not, we make the variable lexical
   in all functions (in a second compiler pass).

   This makes the translated style file more readable because the data
   flow is much clearer, and many temporary assignments can be dropped.

** The compiler is more careful with respect to the package system.
   
   Symbols that were generated from BST function names could clash
   with symbols naming built-in Common Lisp functions.  The compiler
   now takes care to shadow all generated symbols.

** Bug fixes:

*** The interpreter and the compiler now handle empty BST function blocks { }. 

*** A capitalization bug has been fixed.


* News in version 0.2

** Nested .aux files are now handled.

** The crossref feature has been implemented.

** A model for Lisp BibTeX styles has been implemented.

   A Lisp BibTeX style is a Lisp program in a file with type "lbst".
   The Lisp program is supposed to define a BibTeX style using the
   macro DEFINE-BIBTEX-STYLE or the function REGISTER-BIBTEX-STYLE.

   The BIBTEX function first looks for already registered styles, then
   it tries to find and load "lbst" files, then it tries to find and
   interpret "bst" files.

   The BST->CL compiler now puts all the code of a BibTeX style into a
   separate package and emits a DEFINE-BIBTEX-STYLE form.

** A shell script that calls CL-BibTeX has been added.

** Portability improvements.

   CL-BibTeX now works with CMUCL, SBCL 0.7.9, and CLISP 2.30.

