Playbit System interface defines an OS-like computing platform which can be implemented on a wide range of hosts

Overview

PlaySys

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:

  1. A syscall for 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.

  2. The filesystem for accessing resources like graphics surfaces and network connections. This is modeled on top of syscall operations.

Specification: spec.md

Source

  • include/playsys.h C API
  • examples/hello contains an example program
  • backends implementations of the playsys API for host platforms
    • posix C implementation of playsys functions on POSIX host's libc
    • wgpu WebGPU implementation for mac, win & linux based on Dawn
    • js JavaScript implementation for web browsers

Building

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:

TODO

Concept

PlaySys is one step in a three-part strategy to birth a new software platform:

Step 1

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

Step 2

Libraries to make GUI & CLI development easier on top of PlaySys.
The API from an app developer's perspective

Step 3

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
You might also like...
"Zero setup" cross-compilation for a wide variety of architectures.

"Zero setup" cross-compilation for a wide variety of architectures. xcross includes compact docker images and a build utility for minimal setup C/C++ cross-compiling, inspired by rust-embedded/cross

An open collection of tools and experiments for rendering wide-gamut scene-linear data into an image for an SDR or HDR display device.

Open Display Transform An open collection of tools and experiments for rendering wide-gamut scene-linear data into an image for an SDR or HDR display

  Development of a system which can capture and analyze transmitted data on a USB wire.
Development of a system which can capture and analyze transmitted data on a USB wire.

FPGA based USB protocol analyser Development of a system which can capture and analyze transmitted data on a

DigiMahal is the First Project of Our Team in Sharif University of Technology for Basics of Programming That in this Code we Implemented an Online Shop like DigiKala
DigiMahal is the First Project of Our Team in Sharif University of Technology for Basics of Programming That in this Code we Implemented an Online Shop like DigiKala

DigiMahal is the First Project of Our Team in Sharif University of Technology for Basics of Programming That in this Code we Implemented an Online Shop like DigiKala.

CQC (Charmed Quark Controller) a commercial grade, full featured, software based automation system. CQC is built on our CIDLib C++ development system, which is also available here on GitHub.

The CQC Automation System What It Is CQC is a commercial quality, software based automation system, suitable for residential or commercial application

Range library for C++14/17/20, basis for C++20's std::ranges

range-v3 Range library for C++14/17/20. This code was the basis of a formal proposal to add range support to the C++ standard library. That proposal e

RemixDB: A read- and write-optimized concurrent KV store. Fast point and range queries. Extremely low write-amplification.

REMIX and RemixDB The REMIX data structure was introduced in paper "REMIX: Efficient Range Query for LSM-trees", FAST'21. This repository maintains a

An efficient, composable design pattern for range processing
An efficient, composable design pattern for range processing

Transrangers An efficient, composable design pattern for range processing. Intro Pull-based approach Push-based approach Transrangers Performance Tran

ZTE Nubia Z17 (codenamed
ZTE Nubia Z17 (codenamed "nx563j") is a high-range smartphone from Nubia.

ZTE Nubia Z17 (codenamed "nx563j") is a high-range smartphone from Nubia. It was released in June 2017.

Comments
  • support for versions and aliases on find-llvm.sh

    support for versions and aliases on find-llvm.sh

    For some package managers suck as aptitute, LLVM's wasm-ld is installed as wasm-ld-xx where xx is a version such as 12 or 13. This tweak on find-llvm.sh adds support for test paths for Linux, with and without versio numbers.

    Also, if the user does not has a command similar to clang or clang-xx, the script halts and returns an error message with an exit 1.

    opened by cabralski 2
  • changed /bin/sh to /bin/bash

    changed /bin/sh to /bin/bash

    In this pull request, I propose the simple change of all /bin/sh to /bin/bash, due to problems on Linux. With /bin/bash, I'm certain that both MacOS and any Linux distribution will be able to run the helper scripts without editing them.

    Some systems do point sh to bash, but others do not.

    opened by cabralski 1
  • Calling convention on `x86_64` is not unique

    Calling convention on `x86_64` is not unique

    Unlike aarch64 where everybody follows ARMH's instructions, calling convention on x86_64 is not unique.

    Reference: https://en.wikipedia.org/wiki/X86_calling_conventions#x86-64_calling_conventions

    opened by be5invis 0
  • Type errors in backends/js/playsys.ts

    Type errors in backends/js/playsys.ts

    Hey!

    I noticed a bunch of type errors in playsys.ts. There also isn't a tsconfig.json. Are you using Typescript through Visual Studio, rather than npm? Are the type errors something that need to be fixed? https://www.typescriptlang.org/docs/handbook/typescript-tooling-in-5-minutes.html

    I'm asking because I want to contribute. Is tackling the ts errors a good first issue? I would start by installing typescript, setting up a package.json, creating node_modules, blah blah blah. If you don't want to go down that route, but want types, an alternative might be to just write the sys calls in js, and use DefinitelyTyped or similar.

    Also, running the ./build.sh in the directory results in

     > error: Could not resolve "src/web/playsys.ts"
    
    1 error
    
    opened by tanishqkancharla 1
Owner
Playbit
Playbit
This plugin allows Flutter desktop apps to defines system tray.

tray_manager This plugin allows Flutter desktop apps to defines system tray. tray_manager Platform Support Quick Start Installation ⚠️ Linux requireme

LeanFlutter 122 Dec 22, 2022
An embedded CAN bus sniffer which is able to monitor any of the vehicle internal CAN bus and perform some action by triggering new CAN messages.

An embedded CAN bus sniffer which is able to monitor any of the vehicle internal CAN bus and perform some action by triggering new CAN messages. In this way certain vehicle functionality can be triggered by responding to custom steering wheel button events, or use the vehicle virtual cockpit to display OBD-PIDs values instead of relying on an external display to present new information to the user

null 18 Dec 28, 2022
Vaccine Monitor app implemented in C with system Programming techniques.Projects implemented as part of the course Syspro K24

System_Programming_Projects Vaccine Monitor app implemented in C with system Programming techniques.Projects implemented as part of the course Syspro

Aristi_Papastavrou 10 Dec 30, 2021
Dwm_lut - Apply 3D LUTs to the Windows desktop for system-wide color correction/calibration

About This tool applies 3D LUTs to the Windows desktop by hooking into DWM. It works in both SDR and HDR modes, and uses tetrahedral interpolation on

null 212 Jan 3, 2023
Modifies the hosts file in order to block sites hosting Kant's rat

In the Minecraft cheating community, it's not uncommon for clients or client cracks/leaks to be malware. The most famous example of this would be the Autumn client "crack", released by Kant. This application attempts to blacklist known hosts of Kant's malware, in order to prevent someone from accidentally getting themselves ratted.

Gardening_Tool 62 Dec 13, 2022
PoC tool to coerce Windows hosts to authenticate to other machines via MS-EFSRPC EfsRpcOpenFileRaw or other functions.

PetitPotam PoC tool to coerce Windows hosts to authenticate to other machines via MS-EFSRPC EfsRpcOpenFileRaw or other functions :) The tools use the

Topotam 1.4k Jan 4, 2023
This is the repo that hosts the code for Mozilla's translation service

Translation service HTTP service that uses bergamot-translator and compressed neural machine translation models for fast inference on CPU. Running loc

Mozilla 18 Sep 7, 2022
An Arduino library which allows you to communicate seamlessly with the full range of u-blox GNSS modules

u-blox makes some incredible GNSS receivers covering everything from low-cost, highly configurable modules such as the SAM-M8Q all the way up to the surveyor grade ZED-F9P with precision of the diameter of a dime.

SparkFun Electronics 134 Dec 29, 2022
ContactGot is an offline desktop app, where clients can leave their info, while an administrator can manage which information they need to gather on certain projects.

ContactGot Contents Description How to use Requirements Engineering Installation Documentation Design Architecture Demonstration 1. Description During

Elizaveta 15 Sep 17, 2022
Iot-Surveillance-Car - This is a IOT Based Surveillance Car which can be controlled, tracked globally as well as its data can be accessed globally

Iot-Surveillance-Car - This is a IOT Based Surveillance Car which can be controlled, tracked globally as well as its data can be accessed globally. The camera on the front of the car can also be monitored globally. It can go anywhere where sim connection is available. 5th Sem Mini project

Rahul Vijan 6 Dec 3, 2022