diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f128552..a3f2954b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,11 +10,12 @@ Versioning](https://semver.org/spec/v2.0.0.html). ### Changed -- Almost the entirety of yabridge's backend has had a rewrite to get rid of any - all dependencies on the Boost libraries to make packaging easier and to remove - the runtime dependency on Boost.Filesystem for distro packaged versions of - yabridge. This prevents yabridge from breaking when Boost gets updated - independently of the yabridge package. +- Almost the entirety of yabridge's backend has been rewritten to get rid of all + dependencies on the Boost libraries to make packaging yabridge for distros + easier and to make distro packaged versions of yabridge more reliable. This + gets rid of the runtime dependency on Boost.Filesystem for those builds, and + it also makes compiling slightly faster and the binaries slightly smaller. + Before this, yabridge would need to be rebuilt whenever Boost got updated. - When mapping shared memory for audio and the user does not have permissions to lock the memory, yabridge will now retry mapping the memory without locking it instead of immediately terminating the process. An annoying desktop @@ -35,6 +36,7 @@ Versioning](https://semver.org/spec/v2.0.0.html). ### Packaging notes +- Completely removed the dependency on all Boost libraries. - Added a dependency on the headers-only [`ghc::filesystem`](https://github.com/gulrak/filesystem) library to replace Boost.Filesystem. diff --git a/README.md b/README.md index a088fb5f..e256125b 100644 --- a/README.md +++ b/README.md @@ -765,7 +765,6 @@ the following dependencies: - A Wine installation with `winegcc` and the development headers. The latest commits contain a workaround for a winelib [compilation issue](https://bugs.winehq.org/show_bug.cgi?id=49138) with Wine 5.7+. -- Boost version 1.66 or higher[\*](#building-ubuntu-18.04) - libxcb The following dependencies are included in the repository as a Meson wrap: @@ -793,9 +792,9 @@ After you've finished building you can follow the instructions under the [usage](#usage) section on how to set up yabridge. - *The versions of GCC and Boost that ship with Ubuntu 18.04 by default are too - old to compile yabridge. If you do wish to build yabridge from scratch rather - than using the prebuilt binaries, then you should take a look at the docker @@ -809,7 +808,7 @@ It is also possible to compile a host application for yabridge that's compatible with 32-bit plugins such as old SynthEdit plugins. This will allow yabridge to act as a bitbridge, allowing you to run old 32-bit only Windows VST2 plugins in a modern 64-bit Linux VST host. For this you'll need to have installed the 32 -bit versions of the Boost and XCB libraries. This can then be set up as follows: +bit versions of the XCB library. This can then be set up as follows: ```shell # Enable the bitbridge on an existing build diff --git a/ROADMAP.md b/ROADMAP.md index 056cc287..539a9c15 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -34,12 +34,6 @@ page lists some of those. files from smaller stub libraries. This would avoid having to rerun `yabridgectl sync` after an upgrade, and it would save disk space on systems without support for reflinks. -- Consider replacing Boost.Asio with the standalone Asio library, - Boost.Filesystem with a similar headers only library (as `std::filesystem` - doesn't work under `wineg++`) and all other components with custom wrappers - around Linux and Windows APIs. Getting rid of the Boost.Filesystem dependency - would be nice as it makes packaging easier, but it would require a lot of work - to make it happen. # Somewhere in the future, possibly diff --git a/docs/architecture.md b/docs/architecture.md index 7aa0cdef..29f11181 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -61,9 +61,9 @@ interacts with the Win32 message loop or the GUI has to be done from the same thread (or typically the main thread). To do this yabridge will execute certain 'unsafe' functions that are likely to interact with these things from the main thread. The main thread also periodically handles Win32 and optionally also X11 -events (when there are open editors) using a Boost.Asio timer, so these function -calls can all be done from that same thread by posting a task to the Boost.Asio -IO context. +events (when there are open editors) using an Asio timer, so these function +calls can all be done from that same thread by posting a task to the Asio IO +context. On the native Linux side it usually doesn't matter which thread functions are called from, but since REAPER does not allow any function calls that interact diff --git a/meson.build b/meson.build index 9e5fcb6d..691f761a 100644 --- a/meson.build +++ b/meson.build @@ -183,8 +183,6 @@ endif # and 64-bit versions asio_dep = dependency('asio', version : '>=1.22.0') -# TODO: Get rid of the last Boost bits and pieces -boost_dep = dependency('boost', version : '>=1.66') if meson.version().version_compare('>=0.60') # Bitsery's CMake build definition is capitalized for some reason bitsery_dep = dependency('bitsery', 'Bitsery', version : '>=5.2.0') @@ -248,7 +246,6 @@ shared_library( configuration_dep, asio_dep, - boost_dep, bitsery_dep, dl_dep, ghc_filesystem_dep, @@ -271,7 +268,6 @@ if with_vst3 configuration_dep, asio_dep, - boost_dep, bitsery_dep, dl_dep, function2_dep, diff --git a/src/wine-host/bridges/vst2.h b/src/wine-host/bridges/vst2.h index cf6c35e5..01bd3bbb 100644 --- a/src/wine-host/bridges/vst2.h +++ b/src/wine-host/bridges/vst2.h @@ -188,8 +188,7 @@ class Vst2Bridge : public HostBridge { #pragma GCC diagnostic ignored "-Wignored-attributes" /** - * The shared library handle of the VST plugin. I sadly could not get - * Boost.DLL to work here, so we'll just load the VST plugisn by hand. + * The shared library handle of the VST2 plugin. */ std::unique_ptr, decltype(&FreeLibrary)> plugin_handle_; @@ -245,8 +244,7 @@ class Vst2Bridge : public HostBridge { * practice every host will bundle all events in a single * `effProcessEvents()` call. */ - llvm::SmallVector - next_audio_buffer_midi_events_; + llvm::SmallVector next_audio_buffer_midi_events_; /** * Whether `next_audio_buffer_midi_events` should be cleared before * inserting new events. diff --git a/src/wine-host/meson.build b/src/wine-host/meson.build index d2907d85..519e5d7b 100644 --- a/src/wine-host/meson.build +++ b/src/wine-host/meson.build @@ -11,7 +11,6 @@ if is_64bit_system configuration_dep, asio_dep, - boost_dep, bitsery_dep, function2_dep, ghc_filesystem_dep, @@ -37,7 +36,6 @@ if with_bitbridge configuration_dep, asio_dep, - boost_dep, ghc_filesystem_dep, bitsery_dep, function2_dep,