You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Many programs won't need the full power of WebGPU, GLFW, and other "GUI-like" libraries. Also reduces binary size/build time.
Not sure if I really want to do this, as I didn't like the split that evo-luvi had (and quickly removed it). But now, there are many more libraries and many of them are somewhat specialized. It's nice getting to use them out-of-the-box, but obviously this isn't free.
How: Instead of a single "chunky" binary, there'd be two versions:
Headless: Includes statically-linked core libraries only, plus FFI bindings so the rest can be loaded on demand
Regular: Everything (huge and kind of bloated), FFI bindings are loaded automatically (no problem with static linkage)
As for libraries, anything required for graphics, windowing, etc. can be moved out of the headless version. Networking/utilities stay.
TBD: Does it make sense to link with OpenSSL dynamically in the headless version? (Probably, yes)
Should also consider cost/benefit for these primary supported use cases:
Multimedia, graphics, audio, native or web apps with UI or WebView (heavy)
Servers or other networking-heavy non-graphical apps (lighter)
General-purpose tools, CLI apps, scripts (even more lightweight)
Some dependencies are basically free, while some (OpenSSL) are workhorses that come with a heavy cost.
One other, semi-related question is which of the embedded dependencies could be moved to external packages. Realistically, anything that requires C/FFI glue would have to have at least some runtime components that ship by default. The Lua FFI side is pretty lightweight and can be loaded on demand, so there's no reason to omit that. And the static libs can be provided as DLL/SO.
Many programs won't need the full power of WebGPU, GLFW, and other "GUI-like" libraries. Also reduces binary size/build time.
Not sure if I really want to do this, as I didn't like the split that evo-luvi had (and quickly removed it). But now, there are many more libraries and many of them are somewhat specialized. It's nice getting to use them out-of-the-box, but obviously this isn't free.
How: Instead of a single "chunky" binary, there'd be two versions:
As for libraries, anything required for graphics, windowing, etc. can be moved out of the headless version. Networking/utilities stay.
TBD: Does it make sense to link with OpenSSL dynamically in the headless version? (Probably, yes)
Roadmap:
EVO_HEADLESS
define (or similar)The text was updated successfully, but these errors were encountered: