Git Product home page Git Product logo

Comments (7)

sunfishcode avatar sunfishcode commented on July 26, 2024 1

I've been thinking about this more, and CloudABI seems like it could be a really nice fit. I'm envisioning a set of APIs layered like this:

  • basic argv/argc/etc.
  • CloudABI level
  • greater Posix API level

CloudABI fits in nicely with WebAssembly's sandboxing story; we could think of it as conceptually extending the sandbox to the syscall layer.

And then, for use cases which want more complete networking/filesystem/etc. support, we can add extra functions beyond that. There will be details to explore, but this general approach seems to have a lot of potential.

from wasi-libc.

sunfishcode avatar sunfishcode commented on July 26, 2024 1

The initial issue is now addressed. Please feel free to open new issues if there are any further questions or ideas here!

from wasi-libc.

sunfishcode avatar sunfishcode commented on July 26, 2024

I like this idea. And I think it highlights the fact that there won't be one set of syscalls which will apply to all use cases. Some use cases will want to use a restricted set, such as CloudABI, while others won't want to be restricted.

from wasi-libc.

lachlansneff avatar lachlansneff commented on July 26, 2024

I've been thinking about this as well. CloudABI's main issue is the need to specify files and sockets that it can open/access in a configuration file, which can be quite restricting (and also would completely kill any attempts to port language interpreters to wasm).

I foresee an API similar to POSIX that's designed to be run in lightweight containers or with whitelisted resources so that sandboxing is separate from the design of the API. And then go for an API similar to CloudABI if people would find it useful.

I think layering of APIs over time is a good idea though. We should attempt to get down the basic apis that don't really change much in use-case, like arguments and environment variables as soon as possible.

A CloudABI based system interface has a lot of progress, but I'm not sure it should be the first standardized api.

from wasi-libc.

syrusakbary avatar syrusakbary commented on July 26, 2024

CloudABI could be a great fit for WebAssembly, indeed.

We wrote more about it here: https://medium.com/wasmer/webassembly-cloudabi-b573047fd0a9
Might be useful for anyone looking to get deeper context on the field 😊

from wasi-libc.

sunfishcode avatar sunfishcode commented on July 26, 2024

I've been investigating CloudABI as I mentioned above. CloudABI has a lot to offer, but isn't quite the right shape for WebAssembly. I also investigated the "PWSIX" concept (for background on that term, see Mozilla's blog post here), we found there are significant parts of POSIX that don't fit well on WebAssembly, and so we believe that WASI, which takes much inspiration from those systems, but is also tailored to WebAssembly's unique needs, is the best way forward.

from wasi-libc.

syrusakbary avatar syrusakbary commented on July 26, 2024

That sounds good. We will be adapting the Wasmer WebAssembly runtime to support WASI as well.

Great work there!

from wasi-libc.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.