Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Is some kind of a browser microkernel possible? Could you ship, say, JS Canvas support in a separate optional module?


I've done something like that in my TUI browser:

https://codeberg.org/bptato/chawan/src/commit/3f2fffd882ff47...

It just spins up a background process when a canvas context is created and sends drawing commands through IPC. As a result, you can rm the 970k canvas binary (most of it is just Unifont) and with some luck you will only break canvas rendering.

Of course this only works for things that are relatively self-contained. So you can add/remove image decoders or protocol handlers without recompiling (the main binary has zero networking code), but the JS API is still baked in.

(I imagine you could also implement some less performance-sensitive APIs in JS and load the bytecode on demand, but I haven't tried.)


A separate module that is configurable at build time would probably be doable. A separate module that is loaded at runtime probably isn't feasible.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: