---- what's new in ReDIF-perl v 2.30 --------------------------------------

  - book template type in redif.spec now includes price and number
    attributes.

  - new (almost untested alpha) module ReDIF::Writer.  It's function
    stringify_template() accepts a hash structure reference and
    returns a string representing the template data.  It is not
    guaranteed to produce ReDIF-valid results, but likely to do so, if
    the data structure passed is valid.  There's some minimal POD
    documentation in the module file and there's a test file
    t/writer.t.

---- what's new in ReDIF-perl v 2.29 --------------------------------------

  - ReDIF comments introduced.  Use hash sign ('#') in the first
    position of a line to make parser ignore the line.

  - Handles' checking regexp in redif.spec changed.  Not after the
    community's decision on the question, but after my will.  Some
    middle grounds.

  - Another Sune's reported bug fixed.  Dealing with error/warning
    statistics zeroing between files parsing. (Parser/Core.pm)

  - redif.spec now includes several new attributes in the Person
    template type: Short-ID, Last-Login-Date, Registered-Date,
    Last-Modified-Date.

---- what's new in ReDIF-perl v 2.28 --------------------------------------

  - A bug in implementation of the recently introduced
    remove_newline_from_values parser option fixed.  So it simply
    didn't work.  Also it was ON by default, contrary to my intent.
    Now it is OFF by default.

  - ReDIF::Parser::Core [lib/ReDIF/Parser/Core.pm]: 
      
       . removed a die about line 302 ("INTERNAL ERROR...") 

       . now runs under "use strict;" 

  - now Parser runs at least 25-30 percent faster than before in usual
    mode!  Just used Devel::DProf to figure out some bottlenecks and
    refactored them a bit.

  - rech output slightly changed. It now prints the redif.spec version
    upon start.  Per Sune's suggestion.

---- what's new in ReDIF-perl v 2.27 --------------------------------------

  - ReDIF::Parser::Input module reworked again in attempt to solve the
    end-of-line issue, at least to bring it to the level of old
    ReDIF-perl versions.  Per Sune Karlsson's request.

  - New ReDIF::Parser compatibility option: remove_newline_from_values.
    When ON, the parser will normalize whitespace, including new-line
    chars in multi-line attribute values.

  - New parser feature.  If you have Digest::MD5 module installed, the
    parser can calculate MD5 checksums of each processed templates.
    User scripts should consult $template->{MD5SUM} element.

    The feature is disabled if you don't have the Digest::MD5 module
    installed or if you choose to disable it at installation time (at
    Configure, precisely).  See ReDIF::Parser for details.

---- what's new in ReDIF-perl v 2.26 --------------------------------------

  - Fixed two bugs in ReDIF/Parser.pm.  The most important is that
    get_next_template() function actually often behaved like
    get_next_template_good_or_bad()...  Also removed a mistakenly left
    debugging print "dir elem:..." in redif_open_dir().  Thanks, Sune!
    What else can I say?

    Upgrading to this version is strongly recommended.

---- what's new in ReDIF-perl v 2.25 --------------------------------------

  - I seem to have resolved (mainly) the line-ending issue, came up in
    previous releases.  The problems were with processing correctly
    files with different end-of-line characters.  Especially, when
    different conventions are used in one file.  Now this is far from
    100%-bullet-proof, but would work in most cases.  If you find a
    problematic case, let me know.

  - Several bugs in Input.pm module fixed.

  - A special module added for URL syntax checking.  Now redif.spec's
    "url" type checking would call a function in that
    ReDIF::URL_Syntax module.  The regular expressions used for
    checking loosely aim to comply with RFC2396 (a copy taken from the
    URI.pm distribution).

    Appropriate test script added (url_syntax.t).

  - Created a special utility module ReDIF::Testing, just for the test
    scripts.  Currently that is only used for url_syntax.t.

  - Another change in redif.spec. "documenthandle" type prohibited
    characters '(', ')' and ',' in the document id.  Fixed now.  But
    the problem persists, because ReDIF documentation doesn't define
    clearely what characters can be used in a handle, and what can't.

  - rech output changed in a minor way.  For each file with no error
    or warning messages to report rech will show the number of
    succesfully processed templates in the file.  It will do so by
    appending the number in parentheses to the "file OK" line like
    this:

       file ReDIF/test.rdf: OK (4)


---- what's new in ReDIF-perl v 2.24b --------------------------------------

  - Now ReDIF::Parser::Input uses binmode() on each opened data file,
    and that should help at least in one regard, though useless at
    this time.  The file positions of the templates (and attributes)
    in data files should be NOW platform-independent.  Why it wasn't
    before: read in perlport manpage and see binmode() function
    documentation.

  - Fixed the t/parser_open_dir.t test script, which failed on Win32
    platforms.  The file-list sorting test is made optional, depending
    on the possibility to test it.  Sometimes the list of files read
    from a directory is already alphabetically sorted, I have no idea
    why...

    Thanks to Sune Karlsson, for testing the thing on Win32 platform.
    
---- what's new in ReDIF-perl v 2.24 ---------------------------------------

  - bugfixing the ReDIF/init.pm and the test scripts in t/, many of
    which were wrongly trying to use ./spec/redif.spec

  - introducing new redif.spec concept: context postprocessing.  Each
    of the cluster or template types can have a procedure defined for
    additional checking or tweakening of the corresponding context
    object.  That is done in redif.spec in a manner, similar to data
    types check-evals.

  - redif.spec parser changed: now all perl and cluster/template
    blocks are terminated by a line with a single closing curly brace
    ('}') in the FIRST position on the line, and optional
    whitespace(s) after, but nothing else.
 
    Previously, all blocks closed with any line, which held single '}'
    in any position.

---- what's new in ReDIF-perl v 2.23 ---------------------------------------

  - fixed a very small problem in ReDIF/init.pm which caused wrong
    start-up behaviour sometimes.

---- what's new in ReDIF-perl v 2.22 ---------------------------------------

  - redif.spec: changed case-normalization of the Person template
    handles to make it compatible with established practice

  - spec/redif.spec file would not anymore appear in the packages to
    minimize confusion between three redif.spec files present in the
    package (the third one is a test's private copy in t/ dir).  Use
    lib/ReDIF/redif.spec if you need the actual specification.

  - a "closing an already closed template" complain (Carp::cluck)
    removed, bacause it was appearing when a bad-started template was
    read right after some valid ReDIF...

---- what's new in ReDIF-perl v 2.21 ---------------------------------------

  - a very serious memory leak, discovered by Sune Karlsson, fixed.
    (Although I still don't know the reason why an eval operator
    leaked.  Probably it shouldn't have and it may be a bug of perl.)
    As a side-effect, performance improved greatly, roughly twice at
    my estimation.  But still performance is lower than that of the
    older before-unicode version (e.g. 2.16)

  - fixed minor problems in rr.pm which caused complains in "perl -w"
    mode

  - added redif_open_dir() and redif_open_dir_recursive() functions to
    the ReDIF::Parser.  That is to ease porting from now deprecated
    rr.pm-based applications.

  - fixed a problem in ReDIF::init module, which didn't allow to
    actually use install-time defined ReDIF home directory setting.
    It was always trying to use current directory as home, unless
    specified with command-line option or with an environment
    variable.

  - also now ReDIF home is NOT anymore NECESSARY to use ReDIF::Parser
    or rech.  Since redif.spec is installed with all .pm files, we do
    not actually need the home for many operations.  So if your script
    used ReDIF home dir, provided by ReDIF::init, you probably should add
    a check for it (look in rech for an example).

---- what's new in ReDIF-perl v 2.20 ---------------------------------------

  - rech output improved/fixed

---- what's new in ReDIF-perl v 2.19 ---------------------------------------

  - new templates validation rule: if an error happens while checking
    value of an attribute which is not required, the error is turned 
    into a warning

  - now rech always quotes the original data text on errors & warnings
    (before that it was close to original but reformated).

  - fixed processing of "X-" attributes, including cluster-level:
    (e.g. author-x-haircolor: red)

  - removed huge flow of warnings generated in "perl -w" mode.  that may be
    incomplete.  please let me know if you come accross any unfixed causes

  - unicode (UTF-8) support.  see README.unicode for more info

  - completely new parser interface module ReDIF::Parser with new
    capabilities (see ReDIF::Parser manpage).  use it instead of
    outdated and deprecated rr.pm!

  - changed redif.spec format: more readable, easier to understand.
    among the rest, it now has version parameter.

  - new redif.spec features: RePEc handles case-correction and some other

  - now continuation lines in ReDIF templates doesn't have to start
    with a whitespace, it would be enough that they don't start with 
    an attribute-like construct: /^[a-zA-Z\-]+:/ (so called
    "sloppy-lines")

  - another potentially problematic change: now even if using rr.pm,
    the attribute values don't have some formatting it used to have.
    Line-break characters in the multi-line attribute values are not
    eliminited anymore.  They used to be joined into a single line.

  - changed some options of rech and rere, see their respective
    manpages for details.  rech now doesn't need a configuration file
    and has new (improved) output format    

  - ReDIF::init's initialize() is now silent by default

  - added lots of tests for automated and simplified code quality control

  - added/updated more documentation bits and pieces in pod (manpages)
    and in READMEs

  - almost every piece of old code rewritten, became more readable,
    manageable, more logically structured into modules

