1$Id: NEWS,v 1.27 2002/07/23 13:57:45 t1mpy Exp $
2
3this file will not be updated anymore. Please go to http://sourceforge.net/news/?group_id=979 for the latest news
4
5Old News:
6
72001-09-08 Version 3.8.0pre2
8* ID3Lib maintainer has disappeared.  Project maintenance taken over by existing
9  developers
10* Many bug fixes -- mostly compilation problems -- more detailed info will be
11  provided in a later release.
12
132000-11-20 Version 3.8.0pre1
14
15* First prerelease of 3.8.0 stable.
16* Clean separation of interface and implementation to help ensure interface and
17  binary compatibility of future releases
18* Completely revamped implementation of tag reading and writing
19* Better debugging output in debug mode
20* New documentation (much more still needed)
21* Command-line options processing now more cross-platform
22* Removed all exception handling
23* Minor changes to public interface
24* Use of std::string and other STL classes in implementation
25* id3com source code removed from source distribution.  It has moved to its own
26  project at http://sourceforge.net/projects/id3com
27* Many more changes than can be mentioned here:  see ChangeLog file
28
292000-09-07 Version 3.7.13
30
31* id3com is broken; maintainer has disappeared; anyone care to fix it?
32* Complete reimplementation of ID3_Field: cleaner, safer, faster, clearer, more
33  efficient
34* Much more robust MusicMatch parsing
35* Improved conversion from ID3v2 to ID3v1
36* Cleaner implementation of file processing
37* Examples now use popt for command-line processing
38* Improved portability for Macintosh
39* Improved build process for platforms without popt or zlib
40* New documentation about the MusicMatch tagging format
41* Minor updates to ID3_Field interface
42* New interface behavior:
43    // copies entire string (same for unicode_t*)
44    size_t ID3_Field::Get(const uchar*, size_t)
45    // for lists, copies a specific item in string (0-based)
46    size_t ID3_Field::Get(const uchar*, size_t, index_t);
47    // returns the size in characters for strings, in bytes for all else
48    size_t ID3_Field::Size() cosnt;
49    // returns the rendered size of the field
50    size_t ID3_Field::BinSize() cosnt;
51
522000-07-07 Version 3.7.12
53
54* Removed debugging output left over from 3.7.11
55* Update() now updates all tag types by default, not just ID3v2
56* Added a second, optional parameter to ID3_GetComment to find a comment with
57  a specific description
58* Converting an ID3v1 comment to an ID3v2 COMM frame now has the description
59  "ID3v1 Comment"
60* An ID3v2 COMM frame will only be converted to an ID3v1 comment if it has a
61  description of "ID3v1 Comment"
62
632000-07-05 Version 3.7.11
64
65* Now parses and converts files with MusicMatch tags (beta - needs testing!)
66* New tag type enums: ID3TT_LYRICS3, ID3TT_LYRICS3V2, ID3TT_MUSICMATCH,
67  ID3TT_PREPENDED, ID3TT_APPENDED.  Deprecated ID3TT_LYRICS
68* Improved file processing routines; cleaned up interface w.r.t. files
69* Stripping one type of appended tag strips them all
70* New C function: ID3Tag_HasTagType
71* New methods for ID3_Tag: GetPrependedBytes(), GetAppendedBytes(),
72  GetFileSize(), and GetFileName()
73* New function for calculating size of non-tag data in file: ID3_GetDataSize()
74* Render now parameterized on ID3_TagType
75* Bug fixes
76
772000-06-23 Version 3.7.10
78
79* New and updated example tags
80* Corrected unicode parsing and rendering
81* Improved parsing/conversion of Lyrics3 v2.00 tags
82* Fixed errors with exception handling (thanks to Luca Leonardo Scorcia for the
83  bug reports)
84* Fixed bugs/memory leaks with removing frames and updating tag (thanks to Luca
85  Leonardo Scorcia for the bug reports)
86* Fixed finding of frames with empty text fields (thanks to Luca Leonardo
87  Scorcia for the bug reports)
88* Improved documentation/implementation for uint28
89* Added GetTextID() method for ID3_Frame objects
90* Tag doesn't render if there aren't any frames; frame doesn't render if there
91  aren't any fields
92* Reordered ID3_AddSyncLyrics() parameters for better consistency with other
93  helper functions
94* ID3_GetSyncLyricsInfo() parameters updated to be more specific
95* Several other minor bug fixes
96
972000-05-28 Version 3.7.9
98
99* Added new test programs in examples/ for creating example tag files
100* Further improvements to compile on (Unix) systems that don't have zlib
101* Fixed a bug when parsing compressed frames (thanks to Christian Becker for
102  the bug report and example file)
103* Fixed several bugs when writing to files (thanks to Lothar Egger and Peter
104  Thorstenson for the bug reports)
105* New delphi example code for use with id3com (thanks Michael Little)
106* Bugfixes for id3com (thanks John Adcock)
107* Changed behavior of Link() and Clear() in ID3_Tag: Clear() doesn't remove
108  file reference, and Link'ing to an already-linked tag just changes the file
109  reference
110* Cleaned up the class interfaces to use size_t, flags_t, and index_t rather
111  than luint, so as to be more descriptive
112* ID3_Tag::RemoveFrame() now returns the pointer to the frame removed (NULL if
113  not present), thus releasing the tag from its repsonsibility of managing that
114  frame's memory
115* Cleaned up C interface so that appropriate function parameters are const
116* Cleaned up implementation of ID3_Tag::Clear() to fix inconsistencies
117* Deprecated ID3_Tag's HasV2Tag(), HasV1Tag(), and HasLyrics() methods in
118  favor of ID3_Tag::HasTagType() method
119* All Render() methods now const
120* Added GetUnsync() method to ID3_Tag
121* Cleaned up internal class definitions (thereby destroying binary
122  compatibility)
123* ID3v2 tag now won't render (and its reported size is 0) if there aren't any
124  frames (per the spec)
125* Fixed a bug when copying frames that prevented rendering compressed frames in
126  certain situations
127* Fixed a bug with resyncing that caused it to improperly handle the last byte
128* Fixed a bug with recognizing certain sync signals
129* Lots of other minor changes
130
1312000-05-11 Version 3.7.8
132
133* Major bug fix that caused all string frames to be written out as unicode, yet
134  with the wrong encoding information given
135* Bug fix for stripping id3v2 tags that wouldn't remove enough data
136* Bug fix for writing id3v1 tags that might add extraneous data to the tag
137
1382000-05-10 Version 3.7.7
139
140* As part of the major rewrite of underlying codebase started with previous
141  release, this release features near-complete reimplementation of most of the
142  ID3v2 parsing code - smaller, faster, and better organized
143* Much imporved Lyrics3 v2 tag support, along with much improved synchronized
144  lyrics (SYLT) support (thanks Severino Delaurenti)
145* Updated id3com to reflect changes to compression strategy introduced in last
146  release (thanks John Adcock)
147* Cleaned up the parameters to several functions/methods with regards to
148  constness
149* Several new methods to several classes
150* A variety of bugfixes
151
1522000-05-03 Version 3.7.6
153
154* Beginning of major rewrite of underlying codebase to improve efficiency,
155  expandability; the interface will need minor updates through this endeavor
156  (sorry!)
157* Major bugfix in ID3_Tag::Strip which was deleting too much info from a file
158  in certain circumstances
159* Add descriptions to frames; can access either through a ID3_Frame method for
160  a frame object, or via the static method on the class (w/ ID3_FrameID param)
161  (thanks John Adcock for descriptions, Daryl Pawluk for spotting misorder)
162* Frame compression is determined frame by frame, so deprecated
163  ID3_Tag::SetCompression() for ID3_Frame::SetCompression().
164  ID3_Tag::SetCompression() is now a no-op (updated C interface accordingly)
165* New method ID3_Frame::Contains(ID3_FieldID) for determining if a frame
166  contains a particular field
167* New static method ID3_Tag::IsV2Tag() deprecates ID3_IsTagHeader()
168* Other minor bugfixes
169
1702000-04-28 Version 3.7.5
171
172* Fixed nasty bug with rewriting tags to windows files (thanks John Adcock)
173* More fixes, improvements to id3com files (thanks John Adcock)
174* Added parsing of Lyrics3 v1.00 tags (thanks Severino Delaurenti)
175* Updated documentation, but still in flux
176* Other minor bugfixes
177
1782000-04-26 Version 3.7.4
179
180* Fixed windows project files so that they all work correctly with new release
181  (thanks John Adcock, Robert Moon, and Lothar Egger)
182* Added a simple VB app to test id3lib using id3com.dll (thanks John Adcock)
183* Added better implementation of PRIV (Private) frame (thanks John Adcock)
184* Fixed padding logic (thanks John Adcock)
185* New "Spec Versioning" system under the hood produces minor interface change
186  - Defined new enum: ID3_V2Spec (ID3V2_2_0, ID3V2_2_1, ID3V2_3_0, etc.)
187  - {Get,Set}Spec now used in favor of deprected {Get,Set}Version, GetRevision
188  - Field definitions updated accordingly; now smaller and more exact
189
1902000-04-24 Version 3.7.3
191
192* C/C++ interface changes:
193  - Moved V1_LEN* constants into an enumeration so that they can be used as
194    array size initializers in C.  Renamed the constants for consistency
195    (LEN_V1 -> ID3_V1_LEN, LEN_V1_TITLE -> ID3_V1_LEN_TITLE, etc.)
196  - Renamed ID3_TagType's enums to be more consistent with rest of library's
197    enums (V1_TAG -> ID3TT_ID3V1, V2_TAG -> ID3TT_ID3V2, etc.)
198  - ID3_Err enumeration now defines ID3E_NoError
199* C++ interface changes:
200  - ID3_Frame now has a copy constructor
201  - ID3_Tag::AddNewFrame deprecated for AttachFrame (no other difference in
202    behavior)
203  - ID3_Tag::Link(char *, bool, bool) deprecated for
204    ID3_Tag::Link(char *, luint). Now accepts ID3_TagTypes to determine which
205    tags to parse. i.e, mytag.Link("myfile.mp3", ID3TT_ID3V2 | ID3TT_LYRICS);
206  - ID3_Tag::operator<<, ID3_Tag::AddFrame: relevant parameters now const
207* C interface changes:
208  - ID3Tag_Parse, ID3Tag_Update, ID3Tag_Strip now return an ID3_Err
209  - Added functions ID3Tag_UpdateByTagType, ID3Frame_New, ID3Frame_NewID,
210    ID3Frame_Delete
211* Implementation changes:
212  - AddFrame, AddFrames now add copies of the frames passed in.
213  - AttachFrame adds the actual frame passed to it.
214  - The tag takes responsibility for managing its frames' memory in all cases.
215* Miscellaneous changes:
216  - Moved most enum and struct declarations to include/id3/globals.h so they
217    are accessible to C interface
218  - id3com.dsp file is 'fixed', but the project still doesn't compile w/o
219    errors
220  - Most doxygen comments moved from tag.h to respective files
221  - Fixed a bug in id3lib.spec which caused rpm binaries to be compiled without
222    exception handling
223  - examples, include/id3/* header files no longer include config.h
224  - Other minor bugfixes
225
2262000-04-21 Version 3.7.2
227
228* Implementation of C interface for all platforms (in src/c_wrapper.cpp, which
229  replaces dll_wrapper.cpp)
230* Added examples/demo_simple.c which demonstrates basic use of C interface
231* Auto-generated documentation no longer shipped with main tarball distribution
232* mp3 example files no longer included (still available via CVS)
233* Updated Windows project files so that they'll (hopefully) compile cleanly
234  again
235
2362000-04-19 Version 3.7.1
237
238* Interface changed: functions in version.{h,cpp} replaced with constants
239  defined in globals.h
240* Added a spec file for creating rpm's
241* C interface now defined in include/id3.h, replaces include/src/dll.h;
242* Lots of file movement.  src/id3/* to src/; src/examples to examples;
243* Examples now compiled as installable binaries, rather than 'checks'
244* Removed unnecessary files: externals.h, types.h, version.{h,cpp}, dll.h
245
2462000-04-15 Version 3.7.0
247
248* New project management: MusicMatch handed reigns over to Scott Thomas Haug
249* New project licensing: LGPL (http://www.gnu.org/copyleft/lesser.html)
250* New versioning: 3.7.x is unstable series leading up to 3.8.x stable
251* Many bug fixes
252* Better windows compatibility, with new windows project files
253* Improved documentation, using the Doxygen documentation system
254  (http://www.stack.nl/~dimitri/doxygen/)
255* Extended API, improved implementation
256* More supported frames
257* Now parses and rerenders unrecognized frame types
258* Better version handling in configuration files, similar to the glib library
259  (http://www.gtk.org)
260
2611999-12-02 Version 3.6.2
262
263* Improved portability: another minor portability fixes, along with the
264  inclusion of zlib sources and project files for windows compilation.
265
2661999-12-01 Version 3.6.1
267
268* Code movement: moved the header files from src/id3 to include/id3 to allow
269  for easier windows compilation.
270* Improved portability: made changes in several files to improve compilation
271  on windows.  (thanks to elrod for the fixes)
272* Random cleanup: some spelling errors fixed, some minor file administration,
273  etc.
274
2751999-11-30 Version 3.6.0
276
277* Code overhaul: more descriptive variable naming, streamlined implementation
278  logic, cleaner interface specification, generalization of magic numbers and
279  strings.
280* Better documentation: transcribed the the "Documentation for ID3Lib 3.05"
281  document (written by Dirk Mahoney, 22 Nov 1998) into the actual source, using
282  javadoc-like tags so as to create documentation with the application doc++.
283  Using this program (and ones like it) allows for creating the documentation
284  in many different formats, including html, texinfo, man, latex, and the like.
285* Added functionality: Added additional functions for simplified access to
286  common tags, such as artist, title, and album.
287* More robust error checking: Improved upon the exception handling already in
288  place to better handle error conditions, such as invalid tags, unrecognized
289  frames, and the like.  Work is still needed to ensure the library can handle
290  error situations gracefully.
291* Improved portability: restructured the code into a GNU-like directory.
292  hierarchy.  By making use of the GNU tools automake and autoconf, a wide
293  variety of platforms can be easily supported.  This allows for a standard
294  "./configure; make; make install" installation process, as well as an
295  equally trivial method for uninstallation: "make uninstall".  Likewise,
296  "make check" builds the example applications (see below).
297* Enhanced examples: the src/examples/ subdirectory has both new and improved
298  examples demonstrating how to make use of id3lib.  The original "id3convert"
299  example now can convert both ways between id3v1 and id3v2 tags, as well as
300  strip both types of tags off of files via command-line switches.
301  Additionally, an "id3info" app has been added for displaying id3v1/v2 tag
302  information about a file.
303* Bug fixing: Fixes, fixes, and more fixes.  A continual process.
304* The zlib library files were removed from the project.  The need for zlib
305  was instead made a requirement through the configuration process via autoconf
306  and automake.
307* All of the id3lib library files were renamed by removing the "id3_" prefix.
308  Instead, the library files were placed in an id3 subdirectory in the src
309  directory.  Likewise, when the library is installed on a system, an "id3"
310  subdirectory is created in the indicated include directory, and the header
311  files are placed there.  Pragmatically, this means that code that makes use
312  of id3lib needs to "#include <id3/tag.h>" rather than "#include <id3_tag.h>".
313  This was done to create more structure and to avoid clutter in the include
314  directory.
315* The versioning strategy has been updated to be more in line with the
316  "libtool" way.  However, in order to be more compatible with how versions
317  progressed previously, I've taken the approach that many other libraries have
318  taken: I've "massaged" the version:revision:age numbers so that the resulting
319  compiled library shows up as id3lib.so.3.6.0 (or whatever the current release
320  is).  This is /strongly/ advised against in the libtool documentation, so I'm
321  considering going to a more "traditional" libtool versioning approach (see
322  the libtool info page for more information).
323
324There is yet much to do!  Please see the TODO file for known bugs and lacking
325features...
326