I would like to start a discussion about how wasm and especially the Web Assembly System Interface (wasi) may be used to improve the capabilities deltachat. This is a huge topic, and especially wasi is quite young. Nonetheless I would like to see a discussion about this happening, so here we go. I'll propose some starting points, but in no way that is meant to limit the discussion to just these.
- Making
deltachat-core-rust cross platform from a single blob.
This is huge IMO. Currently it's not straight forward to get up running and playing with deltachat-core-rust's repl example. To do so, I have to setup a rust nightly toolchain, compile it (which on my fairly old laptop takes some 15+ minutes) and then I got a dynamically linked blob with all the issues related to dynamic linking. If I could simply download a .wasm file for the repl example and run it, that would be nicer.
- Security.
I Hope so that the last sentence made you wonder whether I just download and run binary blobs randomly. I admit it, I do. However, If I do so with wasi stuff, I may feel a bit more encouraged, as wasi runtimes need to offer sandboxing, making it harder for malicious code to harm me without explicitly giving consent to file access.
- Integration.
How would one use deltachat-core-rust as a library in python? Well there is bindings and modules for that, offering rich functionality once set up. However, using wasi, one would get all of that, almost for free, for almost any language! There already are bindings for Python, Java, JavaScript, Rust, etc. and more are to come. By using this technology, one binary blob may be offered as library for many languages.
Please share your thoughts on this!
I would like to start a discussion about how
wasmand especially the Web Assembly System Interface (wasi) may be used to improve the capabilities deltachat. This is a huge topic, and especiallywasiis quite young. Nonetheless I would like to see a discussion about this happening, so here we go. I'll propose some starting points, but in no way that is meant to limit the discussion to just these.deltachat-core-rustcross platform from a single blob.This is huge IMO. Currently it's not straight forward to get up running and playing with
deltachat-core-rust's repl example. To do so, I have to setup a rust nightly toolchain, compile it (which on my fairly old laptop takes some 15+ minutes) and then I got a dynamically linked blob with all the issues related to dynamic linking. If I could simply download a.wasmfile for the repl example and run it, that would be nicer.I Hope so that the last sentence made you wonder whether I just download and run binary blobs randomly. I admit it, I do. However, If I do so with
wasistuff, I may feel a bit more encouraged, aswasiruntimes need to offer sandboxing, making it harder for malicious code to harm me without explicitly giving consent to file access.How would one use
deltachat-core-rustas a library in python? Well there is bindings and modules for that, offering rich functionality once set up. However, usingwasi, one would get all of that, almost for free, for almost any language! There already are bindings for Python, Java, JavaScript, Rust, etc. and more are to come. By using this technology, one binary blob may be offered as library for many languages.Please share your thoughts on this!