# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.5.0] - TBD ### Added - Support for Speex files - `TagExt` trait to unify tag behavior - `doc_cfg` feature for docs.rs - Fallible allocation with `ErrorKind::Alloc` to help prevent OOM - New dependency: `cfg-if` - **MP3**: Emphasis struct (`mp3::Emphasis`) for use in `Mp3Properties` - **ID3v2**: Respect the footer flag (`id3::v2::Id3v2TagFlags::footer`) when writing - **MP4**: Constants for all well-known data types (`mp4::constants`) - **MP4**: Support `rtng` (Parental advisory) atom, with corresponding `mp4::AdvisoryRating` enum ### Changed - Added `#[non_exhaustive]` to `MimeType` - Added `#[non_exhaustive]` to `PictureType` - Added `#[non_exhaustive]` to `Mp4Codec` - **APE**: Clarify why ID3v2 is read only - **MP3**: No longer error on missing Xing/VBRI header when reading properties - **MP3**: Read the entire MPEG frame header, which is exposed in `Mp3Properties` - `AudioFile` now requires `Into` - **MP4**: Empty atoms are discarded - **MP4**: Variable-size integers are shrunk when writing ### Fixed - **MP4**: Panic in `Mp4File::read_from` ([commit](https://github.com/Serial-ATA/lofty-rs/commit/9e18616a6882c659ba2d5ca6bdad9bf41171135d)) - **WAV/AIFF**: Chunk reading now makes use of fallible allocation, preventing OOM - **ID3v2**: Text is properly encoded when writing - **ID3v2**: `MVNM` and `MVIN` frames are now treated as text frames - **ID3v2**: Text encodings are verified for V2 tags - **MP4**: `plID` atom is properly treated as a 64-bit signed integer ([issue](https://github.com/Serial-ATA/lofty-rs/issues/34)) - **MP4**: `rate` and `rtng` now map to the correct `ItemKey` - **MP4**: Integer pairs are now written correctly - `TagType` and `FileType` are no longer taken by reference in any method ### Removed - `ErrorKind::BadExtension`