$Id: NEWS,v 1.27 2002/07/23 13:57:45 t1mpy Exp $

this file will not be updated anymore. Please go to http://sourceforge.net/news/?group_id=979 for the latest news

Old News:

2001-09-08 Version 3.8.0pre2
* ID3Lib maintainer has disappeared.  Project maintenance taken over by existing
  developers
* Many bug fixes -- mostly compilation problems -- more detailed info will be
  provided in a later release.

2000-11-20 Version 3.8.0pre1

* First prerelease of 3.8.0 stable.
* Clean separation of interface and implementation to help ensure interface and
  binary compatibility of future releases
* Completely revamped implementation of tag reading and writing
* Better debugging output in debug mode
* New documentation (much more still needed)
* Command-line options processing now more cross-platform
* Removed all exception handling
* Minor changes to public interface
* Use of std::string and other STL classes in implementation
* id3com source code removed from source distribution.  It has moved to its own
  project at http://sourceforge.net/projects/id3com
* Many more changes than can be mentioned here:  see ChangeLog file

2000-09-07 Version 3.7.13

* id3com is broken; maintainer has disappeared; anyone care to fix it?
* Complete reimplementation of ID3_Field: cleaner, safer, faster, clearer, more
  efficient
* Much more robust MusicMatch parsing
* Improved conversion from ID3v2 to ID3v1
* Cleaner implementation of file processing
* Examples now use popt for command-line processing
* Improved portability for Macintosh
* Improved build process for platforms without popt or zlib
* New documentation about the MusicMatch tagging format
* Minor updates to ID3_Field interface
* New interface behavior: 
    // copies entire string (same for unicode_t*)
    size_t ID3_Field::Get(const uchar*, size_t) 
    // for lists, copies a specific item in string (0-based)
    size_t ID3_Field::Get(const uchar*, size_t, index_t);
    // returns the size in characters for strings, in bytes for all else
    size_t ID3_Field::Size() cosnt;
    // returns the rendered size of the field
    size_t ID3_Field::BinSize() cosnt;

2000-07-07 Version 3.7.12

* Removed debugging output left over from 3.7.11
* Update() now updates all tag types by default, not just ID3v2
* Added a second, optional parameter to ID3_GetComment to find a comment with
  a specific description
* Converting an ID3v1 comment to an ID3v2 COMM frame now has the description
  "ID3v1 Comment"
* An ID3v2 COMM frame will only be converted to an ID3v1 comment if it has a
  description of "ID3v1 Comment"

2000-07-05 Version 3.7.11

* Now parses and converts files with MusicMatch tags (beta - needs testing!)
* New tag type enums: ID3TT_LYRICS3, ID3TT_LYRICS3V2, ID3TT_MUSICMATCH, 
  ID3TT_PREPENDED, ID3TT_APPENDED.  Deprecated ID3TT_LYRICS
* Improved file processing routines; cleaned up interface w.r.t. files
* Stripping one type of appended tag strips them all
* New C function: ID3Tag_HasTagType
* New methods for ID3_Tag: GetPrependedBytes(), GetAppendedBytes(), 
  GetFileSize(), and GetFileName()
* New function for calculating size of non-tag data in file: ID3_GetDataSize()
* Render now parameterized on ID3_TagType
* Bug fixes

2000-06-23 Version 3.7.10

* New and updated example tags
* Corrected unicode parsing and rendering
* Improved parsing/conversion of Lyrics3 v2.00 tags
* Fixed errors with exception handling (thanks to Luca Leonardo Scorcia for the
  bug reports)
* Fixed bugs/memory leaks with removing frames and updating tag (thanks to Luca
  Leonardo Scorcia for the bug reports)
* Fixed finding of frames with empty text fields (thanks to Luca Leonardo 
  Scorcia for the bug reports)
* Improved documentation/implementation for uint28
* Added GetTextID() method for ID3_Frame objects
* Tag doesn't render if there aren't any frames; frame doesn't render if there
  aren't any fields
* Reordered ID3_AddSyncLyrics() parameters for better consistency with other
  helper functions
* ID3_GetSyncLyricsInfo() parameters updated to be more specific
* Several other minor bug fixes

2000-05-28 Version 3.7.9

* Added new test programs in examples/ for creating example tag files
* Further improvements to compile on (Unix) systems that don't have zlib
* Fixed a bug when parsing compressed frames (thanks to Christian Becker for 
  the bug report and example file)
* Fixed several bugs when writing to files (thanks to Lothar Egger and Peter 
  Thorstenson for the bug reports)
* New delphi example code for use with id3com (thanks Michael Little)
* Bugfixes for id3com (thanks John Adcock)
* Changed behavior of Link() and Clear() in ID3_Tag: Clear() doesn't remove
  file reference, and Link'ing to an already-linked tag just changes the file
  reference
* Cleaned up the class interfaces to use size_t, flags_t, and index_t rather
  than luint, so as to be more descriptive
* ID3_Tag::RemoveFrame() now returns the pointer to the frame removed (NULL if
  not present), thus releasing the tag from its repsonsibility of managing that
  frame's memory
* Cleaned up C interface so that appropriate function parameters are const
* Cleaned up implementation of ID3_Tag::Clear() to fix inconsistencies
* Deprecated ID3_Tag's HasV2Tag(), HasV1Tag(), and HasLyrics() methods in 
  favor of ID3_Tag::HasTagType() method
* All Render() methods now const
* Added GetUnsync() method to ID3_Tag
* Cleaned up internal class definitions (thereby destroying binary 
  compatibility)
* ID3v2 tag now won't render (and its reported size is 0) if there aren't any
  frames (per the spec)
* Fixed a bug when copying frames that prevented rendering compressed frames in
  certain situations
* Fixed a bug with resyncing that caused it to improperly handle the last byte
* Fixed a bug with recognizing certain sync signals
* Lots of other minor changes

2000-05-11 Version 3.7.8

* Major bug fix that caused all string frames to be written out as unicode, yet
  with the wrong encoding information given
* Bug fix for stripping id3v2 tags that wouldn't remove enough data
* Bug fix for writing id3v1 tags that might add extraneous data to the tag

2000-05-10 Version 3.7.7

* As part of the major rewrite of underlying codebase started with previous
  release, this release features near-complete reimplementation of most of the 
  ID3v2 parsing code - smaller, faster, and better organized
* Much imporved Lyrics3 v2 tag support, along with much improved synchronized
  lyrics (SYLT) support (thanks Severino Delaurenti)
* Updated id3com to reflect changes to compression strategy introduced in last
  release (thanks John Adcock)
* Cleaned up the parameters to several functions/methods with regards to 
  constness
* Several new methods to several classes
* A variety of bugfixes

2000-05-03 Version 3.7.6

* Beginning of major rewrite of underlying codebase to improve efficiency,
  expandability; the interface will need minor updates through this endeavor
  (sorry!)
* Major bugfix in ID3_Tag::Strip which was deleting too much info from a file
  in certain circumstances
* Add descriptions to frames; can access either through a ID3_Frame method for
  a frame object, or via the static method on the class (w/ ID3_FrameID param)
  (thanks John Adcock for descriptions, Daryl Pawluk for spotting misorder)
* Frame compression is determined frame by frame, so deprecated 
  ID3_Tag::SetCompression() for ID3_Frame::SetCompression().  
  ID3_Tag::SetCompression() is now a no-op (updated C interface accordingly)
* New method ID3_Frame::Contains(ID3_FieldID) for determining if a frame
  contains a particular field
* New static method ID3_Tag::IsV2Tag() deprecates ID3_IsTagHeader()
* Other minor bugfixes

2000-04-28 Version 3.7.5

* Fixed nasty bug with rewriting tags to windows files (thanks John Adcock)
* More fixes, improvements to id3com files (thanks John Adcock)
* Added parsing of Lyrics3 v1.00 tags (thanks Severino Delaurenti)
* Updated documentation, but still in flux
* Other minor bugfixes

2000-04-26 Version 3.7.4

* Fixed windows project files so that they all work correctly with new release
  (thanks John Adcock, Robert Moon, and Lothar Egger)
* Added a simple VB app to test id3lib using id3com.dll (thanks John Adcock)
* Added better implementation of PRIV (Private) frame (thanks John Adcock)
* Fixed padding logic (thanks John Adcock)
* New "Spec Versioning" system under the hood produces minor interface change
  - Defined new enum: ID3_V2Spec (ID3V2_2_0, ID3V2_2_1, ID3V2_3_0, etc.)
  - {Get,Set}Spec now used in favor of deprected {Get,Set}Version, GetRevision
  - Field definitions updated accordingly; now smaller and more exact

2000-04-24 Version 3.7.3

* C/C++ interface changes:
  - Moved V1_LEN* constants into an enumeration so that they can be used as 
    array size initializers in C.  Renamed the constants for consistency
    (LEN_V1 -> ID3_V1_LEN, LEN_V1_TITLE -> ID3_V1_LEN_TITLE, etc.)
  - Renamed ID3_TagType's enums to be more consistent with rest of library's
    enums (V1_TAG -> ID3TT_ID3V1, V2_TAG -> ID3TT_ID3V2, etc.)
  - ID3_Err enumeration now defines ID3E_NoError
* C++ interface changes:
  - ID3_Frame now has a copy constructor
  - ID3_Tag::AddNewFrame deprecated for AttachFrame (no other difference in 
    behavior)
  - ID3_Tag::Link(char *, bool, bool) deprecated for 
    ID3_Tag::Link(char *, luint). Now accepts ID3_TagTypes to determine which
    tags to parse. i.e, mytag.Link("myfile.mp3", ID3TT_ID3V2 | ID3TT_LYRICS);
  - ID3_Tag::operator<<, ID3_Tag::AddFrame: relevant parameters now const
* C interface changes:
  - ID3Tag_Parse, ID3Tag_Update, ID3Tag_Strip now return an ID3_Err
  - Added functions ID3Tag_UpdateByTagType, ID3Frame_New, ID3Frame_NewID,
    ID3Frame_Delete
* Implementation changes:
  - AddFrame, AddFrames now add copies of the frames passed in.  
  - AttachFrame adds the actual frame passed to it.
  - The tag takes responsibility for managing its frames' memory in all cases.
* Miscellaneous changes:
  - Moved most enum and struct declarations to include/id3/globals.h so they
    are accessible to C interface
  - id3com.dsp file is 'fixed', but the project still doesn't compile w/o 
    errors
  - Most doxygen comments moved from tag.h to respective files
  - Fixed a bug in id3lib.spec which caused rpm binaries to be compiled without
    exception handling
  - examples, include/id3/* header files no longer include config.h
  - Other minor bugfixes

2000-04-21 Version 3.7.2

* Implementation of C interface for all platforms (in src/c_wrapper.cpp, which
  replaces dll_wrapper.cpp)
* Added examples/demo_simple.c which demonstrates basic use of C interface
* Auto-generated documentation no longer shipped with main tarball distribution
* mp3 example files no longer included (still available via CVS)
* Updated Windows project files so that they'll (hopefully) compile cleanly
  again

2000-04-19 Version 3.7.1

* Interface changed: functions in version.{h,cpp} replaced with constants 
  defined in globals.h
* Added a spec file for creating rpm's
* C interface now defined in include/id3.h, replaces include/src/dll.h; 
* Lots of file movement.  src/id3/* to src/; src/examples to examples;
* Examples now compiled as installable binaries, rather than 'checks'
* Removed unnecessary files: externals.h, types.h, version.{h,cpp}, dll.h

2000-04-15 Version 3.7.0

* New project management: MusicMatch handed reigns over to Scott Thomas Haug
* New project licensing: LGPL (http://www.gnu.org/copyleft/lesser.html)
* New versioning: 3.7.x is unstable series leading up to 3.8.x stable
* Many bug fixes
* Better windows compatibility, with new windows project files
* Improved documentation, using the Doxygen documentation system 
  (http://www.stack.nl/~dimitri/doxygen/)
* Extended API, improved implementation
* More supported frames
* Now parses and rerenders unrecognized frame types
* Better version handling in configuration files, similar to the glib library
  (http://www.gtk.org) 

1999-12-02 Version 3.6.2

* Improved portability: another minor portability fixes, along with the
  inclusion of zlib sources and project files for windows compilation.

1999-12-01 Version 3.6.1

* Code movement: moved the header files from src/id3 to include/id3 to allow
  for easier windows compilation.
* Improved portability: made changes in several files to improve compilation
  on windows.  (thanks to elrod for the fixes)
* Random cleanup: some spelling errors fixed, some minor file administration, 
  etc.

1999-11-30 Version 3.6.0

* Code overhaul: more descriptive variable naming, streamlined implementation
  logic, cleaner interface specification, generalization of magic numbers and
  strings.
* Better documentation: transcribed the the "Documentation for ID3Lib 3.05"
  document (written by Dirk Mahoney, 22 Nov 1998) into the actual source, using
  javadoc-like tags so as to create documentation with the application doc++. 
  Using this program (and ones like it) allows for creating the documentation
  in many different formats, including html, texinfo, man, latex, and the like.
* Added functionality: Added additional functions for simplified access to
  common tags, such as artist, title, and album.
* More robust error checking: Improved upon the exception handling already in
  place to better handle error conditions, such as invalid tags, unrecognized
  frames, and the like.  Work is still needed to ensure the library can handle
  error situations gracefully.
* Improved portability: restructured the code into a GNU-like directory.
  hierarchy.  By making use of the GNU tools automake and autoconf, a wide
  variety of platforms can be easily supported.  This allows for a standard
  "./configure; make; make install" installation process, as well as an
  equally trivial method for uninstallation: "make uninstall".  Likewise,
  "make check" builds the example applications (see below).
* Enhanced examples: the src/examples/ subdirectory has both new and improved
  examples demonstrating how to make use of id3lib.  The original "id3convert"
  example now can convert both ways between id3v1 and id3v2 tags, as well as
  strip both types of tags off of files via command-line switches.
  Additionally, an "id3info" app has been added for displaying id3v1/v2 tag
  information about a file.
* Bug fixing: Fixes, fixes, and more fixes.  A continual process.
* The zlib library files were removed from the project.  The need for zlib
  was instead made a requirement through the configuration process via autoconf
  and automake.
* All of the id3lib library files were renamed by removing the "id3_" prefix.
  Instead, the library files were placed in an id3 subdirectory in the src
  directory.  Likewise, when the library is installed on a system, an "id3"
  subdirectory is created in the indicated include directory, and the header
  files are placed there.  Pragmatically, this means that code that makes use
  of id3lib needs to "#include <id3/tag.h>" rather than "#include <id3_tag.h>".
  This was done to create more structure and to avoid clutter in the include
  directory.
* The versioning strategy has been updated to be more in line with the 
  "libtool" way.  However, in order to be more compatible with how versions
  progressed previously, I've taken the approach that many other libraries have
  taken: I've "massaged" the version:revision:age numbers so that the resulting
  compiled library shows up as id3lib.so.3.6.0 (or whatever the current release
  is).  This is /strongly/ advised against in the libtool documentation, so I'm
  considering going to a more "traditional" libtool versioning approach (see
  the libtool info page for more information).

There is yet much to do!  Please see the TODO file for known bugs and lacking
features...
