The Playbit System interface
PlaySys defines an OS-like computing platform which can be implemented on a wide range of hosts like Linux, BSD, Web/WASM, macOS and Windows. This is accomplished via two mechanisms:
syscallfor communication between a program and its host play system. This is just a single function call and does not depend on any specific programming language.
The filesystem for accessing resources like graphics surfaces and network connections. This is modeled on top of
examples/hellocontains an example program
backendsimplementations of the playsys API for host platforms
Building the "hello" example on macOS (>=10.15, x86_64) with WebGPU:
cd path/to/playsys backends/wgpu/setup.sh backends/wgpu/build.sh examples/hello/build.sh -run out/hello_mac_x64
Note: If you're having issues with clang/llvm, install a non-Apple version from for example homebrew:
brew install llvm.
Building the "hello" example for web browsers:
PlaySys is one step in a three-part strategy to birth a new software platform:
PlaySys — a syscall-like API that is the interface betweet a program and the OS/environment. It is how the program percieves and experiences reality. Filesystem acts as an arbitrary extension to a minimal syscall API, which includes an io_uring-like interface. Capability based: e.g. does this system support pointer input? GPU compute? Writable filesystem?
An "OS" from a program's perspective
Libraries to make GUI & CLI development easier on top of PlaySys.
The API from an app developer's perspective
Implementations of PlaySys:
- an OS using the Linux kernel providing a window manager
An "OS" from a user's perspective
- an implementation for web platform:
run PlaySys programs in a web browser.
An "app" from a user's perspective