All Versions
10
Latest Version
Avg Release Cycle
105 days
Latest Release
1390 days ago

Changelog History

  • v1.2.0 Changes

    June 07, 2020

    🆕 🚀 New feature

    • ➕ Add PopularimeterFrame #58 (thanks @dhulihan for implementation)

    🐛 🐛 Bug fixes

    • 🛠 Fix race conditions in unknown frame #59 (thanks @astax-t)

    🍱 🏃‍♀️ Performance

    • 👌 Improve performance for ISO encoding #61

      name old time/op new time/op delta WriteISO-4 21.7µs ± 1% 9.3µs ± 1% -57.01% (p=0.001 n=7+7)

      name old alloc/op new alloc/op delta WriteISO-4 47.2kB ± 0% 5.2kB ± 0% -88.93% (p=0.001 n=7+7)

      name old allocs/op new allocs/op delta WriteISO-4 71.0 ± 0% 41.0 ± 0% -42.25% (p=0.001 n=7+7)

  • v1.1.3 Changes

    March 26, 2020

    🐛 🐛 Bug fixes

    • 🖐 Handle empty strings encoded in UTF16 #53 (thanks @highend and @qkveri for bug reporting)
  • v1.1.2 Changes

    March 10, 2020

    🐛 🐛 Bug fixes

    🏠 Internal

  • v1.1.1 Changes

    September 27, 2018
    • 🔦 Expose Tag's default encoding #35 7e43476

      // DefaultEncoding returns default encoding of tag.// Default encoding is used in methods (e.g. SetArtist, SetAlbum ...) for// setting text frames without the explicit providing of encoding.func (tag *Tag) DefaultEncoding() Encoding { return tag.defaultEncoding}// SetDefaultEncoding sets default encoding for tag.// Default encoding is used in methods (e.g. SetArtist, SetAlbum ...) for// setting text frames without explicit providing encoding.func (tag *Tag) SetDefaultEncoding(encoding Encoding) { tag.defaultEncoding = encoding}

    • ➕ Add AddTextFrame method 7e43476

      // AddTextFrame creates the text frame with provided encoding and text// and adds to tag.func (tag *Tag) AddTextFrame(id string, encoding Encoding, text string) { tag.AddFrame(id, TextFrame{Encoding: encoding, Text: text}) }

  • v1.1.0 Changes

    August 25, 2018
    • ➕ Add support for TXXX and UFID frames. Thanks to @robertgzr for PR! #37
    • 🐎 Performance compared to v1.0.2:

      name old time/op new time/op delta ParseAllFrames-4 75.5µs ± 1% 77.4µs ± 5% +2.52% (p=0.008 n=6+7) ParseAllFramesISO-4 76.4µs ± 0% 77.2µs ± 1% +1.13% (p=0.002 n=6+6) ParseArtistAndTitle-4 2.39µs ±16% 2.30µs ±21% ~ (p=0.364 n=7+7) Write-4 6.76µs ± 0% 6.77µs ± 1% ~ (p=0.902 n=7+7) WriteISO-4 9.43µs ± 1% 9.45µs ± 0% ~ (p=0.535 n=7+7)

      name old alloc/op new alloc/op delta ParseAllFrames-4 263kB ± 0% 263kB ± 0% ~ (p=0.333 n=7+7) ParseAllFramesISO-4 264kB ± 0% 264kB ± 0% ~ (p=0.512 n=7+7) ParseArtistAndTitle-4 732B ± 1% 728B ± 1% ~ (p=0.523 n=7+7) Write-4 2.55kB ± 0% 2.55kB ± 0% ~ (all equal) WriteISO-4 6.39kB ± 0% 6.39kB ± 0% ~ (p=0.140 n=6+7)

      name old allocs/op new allocs/op delta ParseAllFrames-4 61.0 ± 0% 61.0 ± 0% ~ (all equal) ParseAllFramesISO-4 66.4 ± 1% 66.6 ± 1% ~ (p=1.000 n=7+7) ParseArtistAndTitle-4 14.3 ±12% 13.9 ±15% ~ (p=0.592 n=7+7) Write-4 35.0 ± 0% 35.0 ± 0% ~ (all equal) WriteISO-4 50.0 ± 0% 50.0 ± 0% ~ (all equal)

  • v1.0.2 Changes

    August 15, 2018
    • 🛠 Fix: tag header size is not synchsafe for id3v2.3. Thanks to @tmthrgd
  • v1.0.1 Changes

    August 15, 2018
    • 🛠 Fix parsing ID3v2.3 frame sizes. Earlier id3v2 didn't parse correctly v2.3 frame sizes. Huge thanks to @rstemmer for pointing to v2.3 size format #13, #34
    • ⬇️ Reduce memory allocations in encoding operations 211759e
    • 🐎 Performance compared to v1.0.0:

      name old time/op new time/op delta ParseAllFrames-4 77.4µs ± 6% 77.1µs ± 5% -0.36% (p=0.690 n=5+5) ParseAllFramesISO-4 78.7µs ± 3% 76.3µs ± 1% -3.01% (p=0.008 n=5+5) ParseArtistAndTitle-4 2.40µs ±16% 2.45µs ±15% +2.06% (p=0.690 n=5+5) Write-4 6.89µs ± 4% 6.79µs ± 2% -1.56% (p=0.310 n=5+5) WriteISO-4 11.0µs ± 0% 9.4µs ± 0% -14.65% (p=0.016 n=4+5)

      name old alloc/op new alloc/op delta ParseAllFrames-4 263kB ± 0% 263kB ± 0% -0.01% (p=0.095 n=5+5) ParseAllFramesISO-4 264kB ± 0% 264kB ± 0% -0.08% (p=0.008 n=5+5) ParseArtistAndTitle-4 732B ± 1% 734B ± 1% +0.25% (p=0.460 n=5+5) Write-4 2.55kB ± 0% 2.55kB ± 0% ~ (all equal) WriteISO-4 6.99kB ± 0% 6.39kB ± 0% -8.58% (p=0.000 n=5+4)

      name old allocs/op new allocs/op delta ParseAllFrames-4 62.0 ± 0% 61.0 ± 0% -1.61% (p=0.029 n=4+4) ParseAllFramesISO-4 76.6 ± 1% 66.0 ± 0% -13.84% (p=0.008 n=5+5) ParseArtistAndTitle-4 14.6 ±11% 14.6 ±11% ~ (p=1.000 n=5+5) Write-4 35.0 ± 0% 35.0 ± 0% ~ (all equal) WriteISO-4 80.0 ± 0% 50.0 ± 0% -37.50% (p=0.008 n=5+5)

  • v1.0.0 Changes

    April 07, 2018
    • 🚀 id3v2 is exiting the beta and becoming stable, so the API will be changed only in major releases!
    • 🐎 Major internal improvements: reduced code and improved performance.
    • 🐎 Performance compared to v0.12.1:

      name old time/op new time/op delta ParseAllFrames-4 157µs ± 2% 155µs ± 2% -1.12% (p=0.008 n=8+9) ParseAllFramesISO-4 161µs ± 4% 158µs ± 2% -1.63% (p=0.222 n=9+9) ParseArtistAndTitle-4 37.6µs ±24% 37.7µs ±26% +0.33% (p=0.796 n=9+9) Write-4 10.8ms ± 7% 7.3ms ±12% -32.77% (p=0.000 n=9+9) WriteISO-4 9.70ms ±37% 7.01ms ± 5% -27.69% (p=0.000 n=9+9)

      name old alloc/op new alloc/op delta ParseAllFrames-4 264kB ± 0% 264kB ± 0% -0.08% (p=0.000 n=8+7) ParseAllFramesISO-4 264kB ± 0% 264kB ± 0% -0.02% (p=0.234 n=8+8) ParseArtistAndTitle-4 811B ± 2% 807B ± 1% -0.52% (p=0.127 n=9+9) Write-4 4.54kB ± 1% 4.18kB ± 0% -7.97% (p=0.000 n=7+9) WriteISO-4 8.63kB ± 4% 8.62kB ± 0% -0.11% (p=0.180 n=9+9)

      name old allocs/op new allocs/op delta ParseAllFrames-4 64.0 ± 0% 64.0 ± 0% ~ (all equal) ParseAllFramesISO-4 79.0 ± 0% 79.0 ± 0% ~ (all equal) ParseArtistAndTitle-4 17.0 ±12% 16.6 ± 9% -2.61% (p=0.519 n=9+9) Write-4 52.0 ± 0% 52.0 ± 0% ~ (all equal) WriteISO-4 97.0 ± 0% 97.0 ± 0% ~ (all equal)

  • v0.12.1 Changes

    November 18, 2017
    • Now WriteTo methods return correct n values.
    • 🐎 Significant performance improvements by writing:
    • 🐎 Performance compared to v0.12:

      name old time/op new time/op delta ParseAllFrames-4 284µs ± 6% 225µs ± 1% -20.86% (p=0.003 n=7+5) ParseArtistAndTitle-4 26.1µs ±23% 21.8µs ±30% ~ (p=0.097 n=7+7) AddTextFrame-4 1.29µs ± 2% 1.03µs ± 4% -20.39% (p=0.001 n=7+7) AddEncodedTextFrame-4 2.43µs ± 1% 2.04µs ± 1% -15.99% (p=0.001 n=7+7) ParseAndWrite-4 10.5ms ± 3% 8.7ms ±10% -17.38% (p=0.002 n=6+6) ReuseTag-4 3.42µs ± 0% 3.39µs ± 8% ~ (p=0.508 n=6+7) WriteBytesSize-4 28.9ns ± 3% 29.9ns ±15% ~ (p=0.466 n=6+7) ParseSize-4 8.36ns ± 2% 8.37ns ± 3% ~ (p=0.876 n=7+7)

      name old alloc/op new alloc/op delta ParseAllFrames-4 527kB ± 0% 525kB ± 0% -0.46% (p=0.001 n=7+7) ParseArtistAndTitle-4 810B ± 1% 808B ± 1% ~ (p=0.686 n=7+7) AddTextFrame-4 419B ± 0% 418B ± 0% -0.24% (p=0.001 n=7+7) AddEncodedTextFrame-4 1.35kB ± 0% 1.35kB ± 0% -0.21% (p=0.001 n=7+7) ParseAndWrite-4 269kB ± 0% 269kB ± 1% ~ (p=0.902 n=7+7) ReuseTag-4 2.29kB ± 0% 2.29kB ± 0% ~ (all equal) WriteBytesSize-4 10.0B ± 0% 10.0B ± 0% ~ (all equal) ParseSize-4 0.00B 0.00B ~ (all equal)

      name old allocs/op new allocs/op delta ParseAllFrames-4 98.6 ± 1% 95.4 ± 1% -3.19% (p=0.001 n=7+7) ParseArtistAndTitle-4 17.0 ±12% 16.7 ±14% ~ (p=0.848 n=7+7) AddTextFrame-4 5.00 ± 0% 5.00 ± 0% ~ (all equal) AddEncodedTextFrame-4 20.0 ± 0% 20.0 ± 0% ~ (all equal) ParseAndWrite-4 103 ± 0% 98 ± 1% -4.44% (p=0.000 n=6+7) ReuseTag-4 20.0 ± 0% 20.0 ± 0% ~ (all equal) WriteBytesSize-4 0.00 0.00 ~ (all equal) ParseSize-4 0.00 0.00 ~ (all equal)

  • v0.12 Changes

    November 07, 2017
    • ➕ Add full encoding conversion support. More in README #27
    • 📦 Get rid of subpackages. Now id3v2 is only one flat package!
    • ⏪ Restore 32bit systems support #28
    • 🐎 Major performance improvement by parsing with set Options.ParseFrames 2378552
    • 🐎 Performance compared to v0.11:

      name old time/op new time/op delta ParseAllFrames-4 219µs ± 1% 222µs ± 2% ~ (p=0.051 n=7+6) ParseArtistAndTitle-4 66.3µs ± 2% 18.9µs ±23% -71.51% (p=0.001 n=7+7) ParseAndWrite-4 10.2ms ± 7% 10.2ms ± 3% ~ (p=0.805 n=7+7) ReuseTag-4 3.13µs ± 1% 3.33µs ± 1% +6.35% (p=0.001 n=6+7)

      name old alloc/op new alloc/op delta ParseAllFrames-4 525kB ± 0% 525kB ± 0% +0.08% (p=0.001 n=7+7) ParseArtistAndTitle-4 763B ± 0% 810B ± 1% +6.14% (p=0.001 n=7+7) ParseAndWrite-4 267kB ± 0% 267kB ± 0% +0.30% (p=0.007 n=7+7) ReuseTag-4 2.16kB ± 0% 2.29kB ± 0% +5.93% (p=0.001 n=7+7)

      name old allocs/op new allocs/op delta ParseAllFrames-4 95.6 ± 1% 96.0 ± 0% ~ (p=0.192 n=7+7) ParseArtistAndTitle-4 25.0 ± 0% 17.0 ±12% -32.00% (p=0.001 n=7+7) ParseAndWrite-4 101 ± 1% 102 ± 0% +0.71% (p=0.021 n=7+7) ReuseTag-4 20.0 ± 0% 20.0 ± 0% ~ (all equal)