Re:Cosmopolitan v3.5.0
by DrNosferatu on Monday June 24, 2024 @05:18AM
(#40773925)
A Web Interface for Cosmopolitan Apps would be a great bridge for an UI.
[ Parent
| on HN ]
Re:Cosmopolitan v3.5.0
by auggierose on Monday June 24, 2024 @05:20AM
(#40773941)
I am looking for an Electron replacement for writing my apps. Could cosmopolitan be the basis of something like that, or is that not really its purpose?
Lua is perfect for Redbean because it's tiny and made for embedding, which is this exactly use case. Something like TypeScript would require a transpiler to JS and a JS runtime, which as far as I know, even the smallest one would be much bigger than Lua. And Lua has well defined semantics to call C and be called by C, which may be hard to do with JS/TS.
Re:Cosmopolitan v3.5.0
by DrNosferatu on Monday June 24, 2024 @06:30AM
(#40774313)
Any examples and good tutorials on how to best go about it?
Best go about using Redbean? The project is well documented: https://redbean.dev/
Just go through it, it answers all questions you may come up with IMO.
Or you mean about embedding Lua? The official docs are great too: https://www.lua.org/pil/24.html
If you prefer a tutorial, there's plenty as Lua has been around for a long time. Search on Youtube for example and there's lots of videos.
The top hit on DDG for me was https://lucasklassmann.com/blog/2019-02-02-embedding-lua-in-... which seems pretty straightforward to follow.
quickjs [1] has native support for Cosmopolitan, is meant to be easily embeddable, and is included as part of the standard Cosmopolitan distribution. It looks like qjs also has patches for recent-ish versions of the Typescript compiler as well. Someone has made a nodejs-style project called txiki.js [2] using vanilla qjs. Maybe it would build with Cosmopolitan with some tweaking. But if you're thinking of packaging a whole browser engine like Electron that might be a Sisyphian effort.
[1] https://bellard.org/quickjs/ [2] https://github.com/saghul/txiki.js/
I would suggest iced if you're ok with Rust https://github.com/iced-rs/iced
It's amazing, but I should warn documentation right now is not quite thorough