published the window management/platform abstraction library I’ve been working on to crates.io: https://crates.io/crates/portlight
crates.io
crates.io: Rust Package Registryyeah! the primary motivation was to be able to write embedded GUIs for audio plugins, which is a use case that imposes some fairly idiosyncratic requirements on a windowing library. specifically, it necessitates support for:
- embedded/child windows
- not being in control of the platform event loop (with different implications on windows/mac vs. on x11/wayland)
- multiple copies of the library running in the same address space
winit has partial support for some of those things on some platforms, but getting it all the way there would be a pretty significant amount of work, and in some cases it would have fairly invasive consequences both for the API and for the internals of the library, which I think would (justifiably) make it hard to get buy-in from maintainers
the situation with audio plugin GUIs in the C++ world is fairly similar. most windowing/GUI libraries are not suitable for some combination of the above reasons, and so instead of the usual set of libraries like Qt or SDL, plugins tend to use libraries explicitly written for their use case, like JUCE