All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Binaries for AArch64 (Apple Silicon) macOS devices are now built, tested automatically, and distributed, thanks to the M1 CI runners recently introduced by GitHub.
- Bump MSRV to 1.73.
0.2.0 - 2023-12-11
- OptiVorbis now conforms to the
SOURCE_DATE_EPOCH
specification defined by the Reproducible Builds project, allowing it to generate the same output files for the same set of operations with a given set of input files. (Related issue: #41)- When the
SOURCE_DATE_EPOCH
environment variable is set, identical files processed in different OptiVorbis runs will have identical stream serials, which may cause minor interoperability problems. Therefore, it is recommended to use this reproducible output mode only when the benefits of achieving reproducible output outweigh the costs of non-compliance with the Ogg specification. - It is possible to switch off support for this specification at compile time
by disabling the new
source-date-epoch
feature, which is enabled by default.
- When the
- Make
BitpackReader
andBitpackWriter
read and write one instead of several bytes a time, which causes the Rust compiler to not issue costlymemcpy
calls for most bitpacked data operations on buffered I/O sources and sinks. (#32)- This results in a ~15% execution time improvement for the official,
statically linked OptiVorbis Linux binaries, due to
musl
's less optimizedmemcpy
implementation, but it also slightly improves performance forglibc
binaries by ~1%. - Unbuffered I/O sources and sinks that make one system call per read or write operation will have worse performance, but since the bitpacking code documentation already discouraged them due to their fundamentally bad performance, this should not be an issue for most applications.
- This results in a ~15% execution time improvement for the official,
statically linked OptiVorbis Linux binaries, due to
- Added
documentation
metadata to the project workspace packages to make the documentation slightly more discoverable oncrates.io
. - Minor dependency updates.
- Remove the redundant
PacketType::from_repr
method to drop the dependency onstrum_macros
. Please use theTryFrom<u8>
trait implementation instead. - Remove build dependencies on
git2
andtime
in favor of gathering build date and version metadata during CI workflows, which greatly reduces build times (~42% on a developer workstation).
0.1.4 - 2023-06-18
- Bump MSRV to 1.65.
- Fix RUSTSEC-2023-0042 by
updating
ouroboros
. - Several minor dependency updates.
0.1.3 - 2023-04-03
- Bump MSRV to 1.64.
- Improve some documentation wording.
- The author field of the Cargo packages in the repository now includes an e-mail address.
- The CI workflow now passes the unstable
-Zdoctest-xcompile
option to run doctests when cross-compiling AArch64/ARM64 binaries, increasing test coverage for these platforms. - Refactor the Cargo workspace to leverage property inheritance.
- Several dependency updates. The most important of these is the build-time
dependency on
git2
, which is necessary to avoidlibgit2-sys
conflicts on projects that depend on the latestgit2
version.
0.1.2 - 2022-08-14
- The Ogg to Ogg remuxer now errors out by default if no Vorbis audio streams
are found, better matching user expectations, as this usually signals usage
mistakes. The previous behavior of outputting an empty Ogg file can be
opted-in via the new
error_on_no_vorbis_streams
remuxer option. - The build dependency on the
chrono
crate was removed. The build script now depends on thetime
crate, which is more lightweight and better maintained.
0.1.1 - 2022-07-07
- Document minimum supported Rust version (MSRV) in the
README.md
file.
- Fix build of the
optivorbis
crate as published in crates.io, by updating a dependency that previously required patching its source to be compatible with the crate.
0.1.0 - 2022-07-06
- First public release.