WDDX History

Version 0.14 (10/21/99)

Bug fixes, API changes, and POD

Changes:

  * Added some checks for undefined values to fix warnings when
    running under -w
  * Rewrote documentation. It's in POD now (finally)!
  * Prefixed internal data object serialize & deserialize subs to 
    with an underscore make them more private
  * Changed all the to_something subs to as_something subs since
    it makes more sense with the WDDX data object as an intermediary
  * Fixed recordset bugs by adding more error checking for funny data
  * Made object type checks non-dependent on object having WDDX in
    its name (so the module is more easily subclassed now)
  * Renamed to_xml() to as_packet()
  * Changed Datetime object: got rid of gmtime vs. localtime stuff
    and added use_timezone_info() method  

Version 0.13 (10/1/99)

Total rewrite: improved parsing and added full support of WDDX 1.00 DTD. 

Changes:

  * Everything. WDDX.pm is the only file that resembles its old form. I
    wasn't happy with the parsing code. All the logic was in a couple long,
    complicated subs, so it's now been broken out. Each data type now has 
    its own corresponding parser object. It's _much_ easier to maintain now, 
    so hopefully it won't take me so long for the next version. :)
  * Added code to do proper encoding of control characters, and special
    characters like '<', '&', etc. for strings.
  * Added support for the 1.00 DTD. New binary and null data types
    and restrictions on things like allowed characters in recordset field,
    names, case insensitive struct keys, etc.
  * Rewrote WDDX::Recordset object and added a slew of methods to
    for working with it.
  * Changed most variable object methods. Constructors are much less
    obfuscated. Got rid of value(). Added to_packet(), and a variety of methods 
    to go to Perl: to_scalar(), to_arrayref(), to_hashref(), to_gmtime(), 
    and to_localtime(). This new structure will support to_javascript() when 
    it's added to the next version.
  * WDDX.pm methods to create variables changed for the complex types. 
    array(), hash(), and recordset() now take array/hash references. 
    recordset() takes totally different parameters which hopefully will be 
    much easier to work with when using DBI.
  * Updated the README with all the new info. POD next time, I promise. :)
  * Moved this history info off the website and into this file.

Version 0.12 (7/19/99)

The module is now fully usable (albeit rough). It can go both from Perl to
WDDX as well as from WDDX to Perl.

Lots of changes:

   * Added serialization support so it's now possible to go from Perl to
     WDDX.
   * Fixed a problem due to a misunderstanding of the DTD. I originally
     believed that multiple variables could be contained within the root
     level of a WDDX packet, even outside a struct. As a result, I was
     requiring a <var> tag around everything including top level data. That
     was incorrect. Deserialization works as documented now.
   * Stripped out all of the tie interface code. It didn't add a lot of
     value, especially given the previous change, and it added a lot of
     complexity to the code.
   * Fixed a bug that wouldn't parse dateTime packet data properly if the
     GMT timezone adjustment caused the date to wrap.
   * Fixed a bug where certain data types (e.g. booleans) weren't parsed
     correctly within arrays.
   * Added some basic Usage documentation to the README.
   * Changed version numbering: version numbers will always have two digits
     after the decimal.

Version 0.3a (6/13/99)

First public version. Completed parsing of all WDDX structures. Can now go
fully from WDDX to Perl.

Current features:
   * Object oriented.
   * Only requires XML::Parser (plus Carp, but it's now standard and
     XML::Parser requires it too)
   * Full validation of WDDX DTD syntax during parsing.
   * Supports multiple methods for returning parsed data structures:
        o may be returned via a hash
        o may be exported as true variables to any namespace
   * Supports multiple methods for representing parsed data structures:
        o structures can be accessed as WDDX variable objects
        o structures can be accessed as straight perl values
        o structures can be accessed via tie so that data type checking is
          maintained while you work with the data; this gives you the
          benefit of working with the data in as perlish a manner as
          possible while still making it simple to reserialize the data
          back into a WDDX packet later; ties for values nested within
          complex types are generated dynamically only for those variables
          accessed

Version 0.2a (6/1/99)

Split parser and variable types into separate packages. Able to parse basic
(scalar) WDDX data types.

Version 0.1a (5/24/99)

Set up CVS tree and began writing module.
