1
0
Fork 0

Rename breaking changes document to CHANGELOG.md

We'll also keep track of non-breaking changes at this point since the
number of sweeping changes has slowed down a bit.
This commit is contained in:
Robbert van der Helm 2023-03-07 17:01:43 +01:00
parent d3cb5f2bee
commit 011fa58bf5

View file

@ -1,13 +1,19 @@
# Breaking changes # Changelog
Since there is no stable release yet, there is also no proper changelog yet. But All notable changes to this project will be documented in this file.
since not everyone might want to dive through commit messages to find out what's
new and what's changed, this document lists all breaking changes in reverse The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
chronological order. If a new feature did not require any changes to existing and this project adheres to [Semantic
code then it will not be listed here. Versioning](https://semver.org/spec/v2.0.0.html).
Since there is no stable release yet, the changes are organized per day in
reverse chronological order. The main purpose of this document in its current
state is to list breaking changes.
## [2023-02-28] ## [2023-02-28]
### Breaking changes
- `ViziaState::from_size()` now takes a third boolean argument to control - `ViziaState::from_size()` now takes a third boolean argument to control
whether the window's size is persisted or not. This avoids a potential bug whether the window's size is persisted or not. This avoids a potential bug
where an old window size is recalled after the plugin's GUI's size has changed where an old window size is recalled after the plugin's GUI's size has changed
@ -15,6 +21,8 @@ code then it will not be listed here.
## [2023-02-20] ## [2023-02-20]
### Breaking changes
- The way audio IO layouts are configured has changed completely to align better - The way audio IO layouts are configured has changed completely to align better
with NIH-plug's current and future supported plugin API backends. Rather than with NIH-plug's current and future supported plugin API backends. Rather than
defining a default layout and allowing the host/backend to change the channel defining a default layout and allowing the host/backend to change the channel
@ -38,6 +46,8 @@ code then it will not be listed here.
## [2023-02-01] ## [2023-02-01]
### Breaking changes
- The `Vst3Plugin::VST3_CATEGORIES` string constant has been replaced by a - The `Vst3Plugin::VST3_CATEGORIES` string constant has been replaced by a
`Vst3Plugin::VST3_SUBCATEGORIES` constant of type `&[Vst3SubCategory]`. `Vst3Plugin::VST3_SUBCATEGORIES` constant of type `&[Vst3SubCategory]`.
`Vst3SubCategory` is an enum containing all of VST3's predefined categories, `Vst3SubCategory` is an enum containing all of VST3's predefined categories,
@ -46,6 +56,8 @@ code then it will not be listed here.
## [2023-01-31] ## [2023-01-31]
### Breaking changes
- NIH-plug has gained support MIDI SysEx in a simple, type-safe, and - NIH-plug has gained support MIDI SysEx in a simple, type-safe, and
realtime-safe way. This sadly does mean that every `Plugin` instance now needs realtime-safe way. This sadly does mean that every `Plugin` instance now needs
to define a `SysExMessage` type definition and constructor function as Rust to define a `SysExMessage` type definition and constructor function as Rust
@ -62,6 +74,8 @@ code then it will not be listed here.
## [2023-01-12] ## [2023-01-12]
### Breaking changes
- The Vizia dependency has been updated. This updated version uses a new text - The Vizia dependency has been updated. This updated version uses a new text
rendering engine, so there are a couple breaking changes: rendering engine, so there are a couple breaking changes:
- The names for some of Vizia's fonts have changed. The constants and font - The names for some of Vizia's fonts have changed. The constants and font
@ -74,6 +88,8 @@ code then it will not be listed here.
## [2023-01-11] ## [2023-01-11]
### Breaking changes
- `Editor::param_values_changes()` is no longer called from the audio thread and - `Editor::param_values_changes()` is no longer called from the audio thread and
thus no longer needs to be realtime safe. thus no longer needs to be realtime safe.
- A new `Editor::param_value_changed(id, normalized_value)` method has been - A new `Editor::param_value_changed(id, normalized_value)` method has been
@ -83,6 +99,8 @@ code then it will not be listed here.
## [2023-01-06] ## [2023-01-06]
### Breaking changes
- The threads used for the `.schedule_gui()` and `.schedule_background()` - The threads used for the `.schedule_gui()` and `.schedule_background()`
methods are now shared between all instances of a plugin. This makes methods are now shared between all instances of a plugin. This makes
`.schedule_gui()` on Linux behave more like it does on Windows and macOS, and `.schedule_gui()` on Linux behave more like it does on Windows and macOS, and
@ -91,12 +109,16 @@ code then it will not be listed here.
## [2023-01-05] ## [2023-01-05]
### Breaking changes
- `Buffer::len()` has been renamed to `Buffer::samples()` to make this less - `Buffer::len()` has been renamed to `Buffer::samples()` to make this less
ambiguous. ambiguous.
- `Block::len()` has been renamed to `Block::samples()`. - `Block::len()` has been renamed to `Block::samples()`.
## [2022-11-17] ## [2022-11-17]
### Breaking changes
- The `Params` derive macro now also properly supports persistent fields in - The `Params` derive macro now also properly supports persistent fields in
`#[nested]` parameter structs. This takes `#[nested(id_prefix = "...")]` and `#[nested]` parameter structs. This takes `#[nested(id_prefix = "...")]` and
`#[nested(array)]` into account to allow multiple copies of a persistent `#[nested(array)]` into account to allow multiple copies of a persistent
@ -105,12 +127,16 @@ code then it will not be listed here.
## [2022-11-17] ## [2022-11-17]
### Breaking changes
- The order of `#[nested]` parameters in the parameter list now always follows - The order of `#[nested]` parameters in the parameter list now always follows
the declaration order instead of nested parameters being ordered below regular the declaration order instead of nested parameters being ordered below regular
parameters. parameters.
## [2022-11-08] ## [2022-11-08]
### Breaking changes
- The `Param::{next_previous}{_step,_normalized_step}()` functions now take an - The `Param::{next_previous}{_step,_normalized_step}()` functions now take an
additional boolean argument to indicate that the range must be finer. This is additional boolean argument to indicate that the range must be finer. This is
used for floating point parameters to chop the range up into smaller segments used for floating point parameters to chop the range up into smaller segments
@ -118,6 +144,8 @@ code then it will not be listed here.
## [2022-11-07] ## [2022-11-07]
### Breaking changes
- `Param::plain_value()` and `Param::normalized_value()` have been renamed to - `Param::plain_value()` and `Param::normalized_value()` have been renamed to
`Param::modulated_plain_value()` and `Param::modulated_normalized_value()`. `Param::modulated_plain_value()` and `Param::modulated_normalized_value()`.
These functions are only used when creating GUIs, so this shouldn't break any These functions are only used when creating GUIs, so this shouldn't break any
@ -127,6 +155,8 @@ code then it will not be listed here.
## [2022-11-06] ## [2022-11-06]
### Breaking changes
- `nih_plug_vizia::create_vizia_editor_without_theme()` has been removed, and - `nih_plug_vizia::create_vizia_editor_without_theme()` has been removed, and
`nih_plug_vizia::create_vizia_editor()` has gained a new argument to specify `nih_plug_vizia::create_vizia_editor()` has gained a new argument to specify
what amount of theming to apply. This can now also be used to completely what amount of theming to apply. This can now also be used to completely
@ -146,11 +176,15 @@ code then it will not be listed here.
## [2022-10-23] ## [2022-10-23]
### Breaking changes
- `nih_plug_vizia` has been updated. Widgets with custom drawing code will need - `nih_plug_vizia` has been updated. Widgets with custom drawing code will need
to be updated because of changes in Vizia itself. to be updated because of changes in Vizia itself.
## [2022-10-22] ## [2022-10-22]
### Breaking changes
- The `Editor` trait and the `ParentWindowHandle` struct have been moved from - The `Editor` trait and the `ParentWindowHandle` struct have been moved from
`nih_plug::plugin` to a new `nih_plug::editor` module. If you only use the `nih_plug::plugin` to a new `nih_plug::editor` module. If you only use the
prelude module then you won't need to change anything. prelude module then you won't need to change anything.
@ -177,6 +211,8 @@ code then it will not be listed here.
## [2022-10-20] ## [2022-10-20]
### Breaking changes
- Some items have been moved out of `nih_plug::param::internals`. The main - Some items have been moved out of `nih_plug::param::internals`. The main
`Params` trait is now located under `nih_plug::param`, and the `Params` trait is now located under `nih_plug::param`, and the
`PersistentTrait` trait, implementations, and helper functions are now part of `PersistentTrait` trait, implementations, and helper functions are now part of
@ -193,6 +229,8 @@ code then it will not be listed here.
## [2022-10-13] ## [2022-10-13]
### Breaking changes
- The `#[nested]` parameter attribute has gained super powers and has its syntax - The `#[nested]` parameter attribute has gained super powers and has its syntax
changed. It can now automatically handle many situations that previously changed. It can now automatically handle many situations that previously
required custom `Params` implementations to have multiple almost identical required custom `Params` implementations to have multiple almost identical
@ -203,12 +241,16 @@ code then it will not be listed here.
## [2022-09-22] ## [2022-09-22]
### Breaking changes
- `nih_plug_vizia` has been updated. Custom widgets will need to be updated - `nih_plug_vizia` has been updated. Custom widgets will need to be updated
because of changes Vizia itself. because of changes Vizia itself.
- `nih_plug_egui` has been updated from egui 0.17 to egui 0.19. - `nih_plug_egui` has been updated from egui 0.17 to egui 0.19.
## [2022-09-06] ## [2022-09-06]
### Breaking changes
- Parameter values are now accessed using `param.value()` instead of - Parameter values are now accessed using `param.value()` instead of
`param.value`, with `param.value()` being an alias for the existing `param.value`, with `param.value()` being an alias for the existing
`param.plain_value()` function. The old approach, while perfectly safe in `param.plain_value()` function. The old approach, while perfectly safe in
@ -220,6 +262,8 @@ code then it will not be listed here.
## [2022-09-04] ## [2022-09-04]
### Breaking changes
- `Smoother::next_block_mapped()` and `Smoother::next_block_exact_mapped()` have - `Smoother::next_block_mapped()` and `Smoother::next_block_exact_mapped()` have
been redesigned. They now take an index of the element being generated and the been redesigned. They now take an index of the element being generated and the
float representation of the smoothed value. This makes it easier to use them float representation of the smoothed value. This makes it easier to use them
@ -230,6 +274,8 @@ code then it will not be listed here.
## [2022-08-19] ## [2022-08-19]
### Breaking changes
- Standalones now use the plugin's default input and output channel counts - Standalones now use the plugin's default input and output channel counts
instead of always defaulting to two inputs and two outputs. instead of always defaulting to two inputs and two outputs.
- `Plugin::DEFAULT_NUM_INPUTS` and `Plugin::DEFAULT_NUM_OUTPUTS` have been - `Plugin::DEFAULT_NUM_INPUTS` and `Plugin::DEFAULT_NUM_OUTPUTS` have been
@ -239,12 +285,16 @@ code then it will not be listed here.
## [2022-07-18] ## [2022-07-18]
### Breaking changes
- `IntRange` and `FloatRange` no longer have min/max methods and instead have - `IntRange` and `FloatRange` no longer have min/max methods and instead have
next/previous step methods. This is for better compatibility with the new next/previous step methods. This is for better compatibility with the new
reversed ranges. reversed ranges.
## [2022-07-06] ## [2022-07-06]
### Breaking changes
- There are new `NoteEvent::PolyModulation` and `NoteEvent::MonoAutomation` - There are new `NoteEvent::PolyModulation` and `NoteEvent::MonoAutomation`
events as part of polyphonic modulation support for CLAP plugins. events as part of polyphonic modulation support for CLAP plugins.
- The block smoothing API has been reworked. Instead of `Smoother`s having their - The block smoothing API has been reworked. Instead of `Smoother`s having their
@ -256,12 +306,16 @@ code then it will not be listed here.
## [2022-07-05] ## [2022-07-05]
### Breaking changes
- The `ClapPlugin::CLAP_HARD_REALTIME` constant was moved to the general - The `ClapPlugin::CLAP_HARD_REALTIME` constant was moved to the general
`Plugin` trait as `Plugin::HARD_REALTIME_ONLY`, and best-effort support for `Plugin` trait as `Plugin::HARD_REALTIME_ONLY`, and best-effort support for
VST3 has been added. VST3 has been added.
## [2022-07-04] ## [2022-07-04]
### Breaking changes
- The `CLAP_DESCRIPTION`, `CLAP_MANUAL_URL`, and `CLAP_SUPPORT_URL` associated - The `CLAP_DESCRIPTION`, `CLAP_MANUAL_URL`, and `CLAP_SUPPORT_URL` associated
constants from the `ClapPlugin` are now optional and have the type constants from the `ClapPlugin` are now optional and have the type
`Option<&'static str>` instead of `&'static str`. `Option<&'static str>` instead of `&'static str`.
@ -275,6 +329,8 @@ code then it will not be listed here.
## [2022-07-02] ## [2022-07-02]
### Breaking changes
- The `Params::serialize_fields()` and `Params::deserialize_fields()` methods - The `Params::serialize_fields()` and `Params::deserialize_fields()` methods
and the `State` struct now use `BTreeMap`s instead of `HashMap`s so the order and the `State` struct now use `BTreeMap`s instead of `HashMap`s so the order
is consistent the plugin's state to JSON multiple times. These things are part is consistent the plugin's state to JSON multiple times. These things are part
@ -283,6 +339,8 @@ code then it will not be listed here.
## [2022-06-01] ## [2022-06-01]
### Breaking changes
- The `ClapPlugin::CLAP_FEATURES` field now uses an array of `ClapFeature` - The `ClapPlugin::CLAP_FEATURES` field now uses an array of `ClapFeature`
values instead of `&'static str`s. CLAP 0.26 contains many new predefined values instead of `&'static str`s. CLAP 0.26 contains many new predefined
features, and the existing ones now use dashes instead of underscores. Custom features, and the existing ones now use dashes instead of underscores. Custom
@ -290,6 +348,8 @@ code then it will not be listed here.
## [2022-05-27] ## [2022-05-27]
### Breaking changes
- `Plugin::process()` now takes a new `aux: &mut AuxiliaryBuffers` parameter. - `Plugin::process()` now takes a new `aux: &mut AuxiliaryBuffers` parameter.
This was needed to allow auxiliary (sidechain) inputs and outputs. This was needed to allow auxiliary (sidechain) inputs and outputs.
- The `Plugin::initialize()` method now takes a `&mut impl InitContext` instead - The `Plugin::initialize()` method now takes a `&mut impl InitContext` instead
@ -297,6 +357,8 @@ code then it will not be listed here.
## [2022-05-22] ## [2022-05-22]
### Breaking changes
- The current processing mode is now stored in `BufferConfig`. Previously this - The current processing mode is now stored in `BufferConfig`. Previously this
could be fetched through a function on the `ProcessContext`, but this makes could be fetched through a function on the `ProcessContext`, but this makes
more sense as it remains constant until a plugin is deactivated. The more sense as it remains constant until a plugin is deactivated. The