JIT plugin format #317
Replies: 4 comments 27 replies
-
I agree this is a good idea; it might not be suitable for every plugin necessarily, but it would be great to have. I feel like the CLAP format itself is generic enough that it might not really require any modifications to run under WASM, but in that case, there should be some generic and standardised method of providing a GUI that can run across all platforms. HTML and JavaScript seem like the natural solution for this. |
Beta Was this translation helpful? Give feedback.
-
HTML? Do many hosts render HTML and execute Javascript? I mean I don't hate the idea of having that option, but a more traditional and generic way to provide graphics is through a framebuffer that is updated by callback, that alone is good enough for most developers. But yes as long as your plugin sticks to portable code without strictly depending on platform-specific APIs then you could have one file for all platforms (which would be great for Linux as making Linux builds of plugins was never a popular choice despite the lack of obstacles). |
Beta Was this translation helpful? Give feedback.
-
I've thought about this, but it is a lot of work. For such a project to succeed, we'd need a full support library on the clap side. Making that one to be super reliable and well designed so big player will consider using it, isn't a part time job. |
Beta Was this translation helpful? Give feedback.
-
Just to let you guys know that I did reach the first significant and exciting step of getting this done which is making a WASM "plugin" that updates a framebuffer provided by the host (the simple C file in the screenshot below, compiled to WASM by Emscripten's emcc, the resulting WASM "plugin" is only 276 bytes), then made a "host" that loads the WASM plugin, calls the expected function to update a 512x512 framebuffer every frame and then displays that framebuffer. From here I should be able to move quickly. |
Beta Was this translation helpful? Give feedback.
-
Last year on KVR there was some discussion about the possibility of a CLAP JIT format. The idea was essentially that the idea of making one binary for each architecture and platform had run its course (it's inconvenient for the developer and terrible for futureproofing, as we've seen with old unupdated 32-bit plugins tragically fading into oblivion) and that we need a much more 2020s option of having one file that can potentially work on any platform, any OS or CPU architecture (even virtual ones like WebAssembly), even platforms that don't yet exist. I was told back then that this was under consideration, but I see nothing about this. Has this idea been dropped?
Beta Was this translation helpful? Give feedback.
All reactions