New release GTK3 -> GTK4 [1.0.0-alpha.27.0.3]

Message ID
DKIM signature
Download raw message
Zrythm 1.0.0-alpha.27.0.3 has been released!

This release features a major change: the GUI toolkit that Zrythm uses
has changed from GTK3 to GTK4. This change was done to take advantage
of GTK4's built-in caching and hardware rendering capabilities.

This change has solved a major issue we were having with the UI being
slow on low spec systems or when lots of objects were on the screen. It
also makes development of UI elements easier thanks to a simpler
drawing API and built-in caching capabilities on the GTK4 side.

The main drawback of this change is that the native mechanism that was
used to embed plugin UIs is no longer available in GTK4, so native LV2
plugin support has been temporarily disabled until we find a solution.
Meanwhile, Carla is now a hard dependency and will be used to load all
plugin formats, including LV2.

We expect there to be some regressions partly due to GTK4 not being
widely adopted yet and also due to changes in the way input handling
and other things work in GTK4, and we are releasing early to encourage
more testing of these latest changes.

Special thanks to falktx for exposing API to make using Carla easier on
the Zrythm side and to GTK and libadwaita developers (especially
Benjamin Otte, Matthias Clasen, Emmanuele Bassi, Alexander Mikhaylenko,
Timm B├Ąder and Christian Hergert) for their help and for fixing bugs we
found quickly.

The full changelog follows:

## [1.0.0-alpha.27.0.3] - 2022-01-10
### Added
- New dependency libadwaita
- New searchable preference dialog
- Add plugin latency handling for plugins running through Carla
- New Hebrew translation
- Various drawing optimizations
- Various DSP optimizations

### Changed
- Updated plugin browser filter section
- Change UI toolkit from GTK3 to GTK4
- Bump version requirements for some dependencies
- Use `LD_LIBRARY_PATH` to override library paths in `zrythm_launch`
- Run all plugins via Carla
- Port most widget drawing from cairo (software rendering) to GTK
snapshot API (OpenGL)
- Show toast messages when backups are saved instead of showing a
blocking popup
- Use SCSS to compile CSS theme
- Allow DSEG font loading directly from file
- Update Indonesian, Ukrainian, Greek, Italian, Spanish, Slovenian,
French, Turkish, Portuguese (Brazil), Portuguese, Chinese (Simplified),
Russian translations
- Use libdir option for Zrythm lib directory instead of 'lib'
- Port some widgets to new GTK4 alternatives
- Use meson dictionary to generate list of languages
- Use Carla patchbay variant instead of rack for loading plugins to
support CV ports
- Change global single-key shortcuts to require Ctrl modifier
- Make strict compilation flags stricter
- Add additional gtksourceview5 language spec lookup path
- Redraw rulers and arrangers on every frame
- Recalculate DSP graph when reallocating engine ports
- Use `int_fast64_t` and `uint_fast64_t` for large DSP numbers instead
of `long` for better cross-platform compatibility
- Set Carla plugin window parent on Windows so the plugin window stays
on top of Zrythm
- Do not attempt to run `diff` to check for changes when closing the

### Fixed
- Fix issues with plugin search in plugin browser
- Fix timeline minimap not drawing its contents
- Meson: fix use of sse flags on non-`x86_64` systems
- Fix modulators not being saved with the project
- Only recreate plugin port list when selected plugin changes (fixes
lag in unrelated actions)
- Fix output track hash being saved as INT instead of UINT in channel
leading to overflows and project corruption
- Fix stack smashing in recording manager when recording automation
(pre-create dynamic array)
- Fix error when opening a project from a running instance
- Fix incorrectly freeing memory owned by GLib
- Fix various memory issues and possible NULL dereferences reported by
- Fix Carla not being notified of buffer size changes
- Fix missing icons in mixer and transport display
- Fix automation not being drawn when the line is vertical

### Removed
- Remove unused widgets/files
- Remove unnecessary widget properties from UI files
Reply to thread Export thread (mbox)