doom-sokol
krustlet
doom-sokol | krustlet | |
---|---|---|
4 | 21 | |
46 | 3,534 | |
- | 0.2% | |
5.0 | 3.1 | |
8 days ago | 8 months ago | |
C | Rust | |
GNU General Public License v3.0 only | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
doom-sokol
-
Let's compile like it's 1992
Doom is actually quite easy to build because the source code is already structured to keep the platform-specific parts isolated (Doom was developed on NeXT workstations and then 'downported' to DOS.
For instance here's my WASM port of the Doom shareware version. This is a fork of doomgeneric, which itself is a fork of fbDoom - but midway through I noticed that all the abstractions added by fbDoom and doomgeneric are actually not very helpful for a WASM port that should run in browsers, and that I probably would have been better off forking the original source instead):
Github repo: https://github.com/floooh/doom-sokol
Hosted version: https://floooh.github.io/doom-sokol/
-
WASM Instructions
Here are a couple of real-world examples, these are all C/C++ code bases which run across Linux, macOS, Windows, iOS, Android and in browsers without porting:
Home computer emulators: https://floooh.github.io/tiny8bit/
CPU simulators for Z80 and 6502:
https://floooh.github.io/visualz80remix/
https://floooh.github.io/visual6502remix/
The shareware version of Doom:
https://floooh.github.io/doom-sokol/
Samples for the cross-platform libraries this stuff is built on top: https://floooh.github.io/sokol-html5/
WASM (and asm.js before it) turn the web into "just another platform" for cross-platform code bases written in any language that can compile to WASM, and that's pretty great.
-
Doomgeneric: Make Porting Doom Easier
I started my WASM DOOM port (https://floooh.github.io/doom-sokol/) from doomgeneric which was helpful at first, but since I had to 'slice' the various modal loops in Doom in order to make it work in a frame-callback app model it wasn't all that helpful in the end unfortunately.
My porting notes for anyone interested: https://github.com/floooh/doom-sokol#porting-notes
krustlet
-
WASM Instructions
Oh it’s certainly looking like that IMO.
You can run wasm in k8s: https://krustlet.dev/
Docker itself can run wasm: https://wasmlabs.dev/articles/docker-without-containers/
There are a few serverless runtimes based on wasm: https://wasmcloud.com/
A lot of those are powered by wasmtime or WasmEdge.
If you’re wanting to be able to just pull down a random app and run it as wasm, that’s inherently harder with wasm, because you have to recompile, and amazing compiling stuff is always harder than it should be. For example I compiled jq to wasm to other day, so you dont have to worry (as much) about the CVEs that was issued recently. https://github.com/rockwotj/jq-wasi
- The advantage of WASM compared with container runtimes
-
Crafting container images without Dockerfiles
It can, kubevirt is a project for running VMs https://kubevirt.io/ and there have been more esoteric things like WASM (https://github.com/krustlet/krustlet).
- The Python Paradox
-
I Don’t wanna use Docker or kubernetes
Or you can run Krustlet instead of Kubelet. That makes it so you can only run WebAssembly on the cluster - so no Go, no Python, only Rust!
-
Why did the Krustlet project die?
But the project seems to have died: https://github.com/krustlet/krustlet/graphs/contributors
-
Does anybody have a use-case for Scala WASM compilation target?
There are some cloud providers that are starting to offer wasm support. Docker is currently working on wasm https://docs.docker.com/desktop/wasm/ There is also krustlet https://krustlet.dev/ which lets you run wasm in kubernetes
- How I got involved in the Rust community
-
Are V8 isolates the future of computing?
> If one writes Go or Rust, there are much better ways to run them than targeting WASM
wasm has its place, especially for contained workloads that can be wrapped in its strict capability boundaries (think, file-encoding jobs that shouldn't access anything else but said files: https://news.ycombinator.com/item?id=29112713).
> Containers are still the defacto standard.
wasmedge [0], atmo [1], krustlet [2], blueboat [3] and numerous other projects are turning up the heat [4]!
[0] https://github.com/WasmEdge/WasmEdge
[1] https://github.com/suborbital/atmo
[2] https://github.com/krustlet/krustlet
[3] https://github.com/losfair/blueboat
[4] https://news.ycombinator.com/item?id=30155295
- Krustlet: Kubernetes Kubelet in Rust for Running WASM
What are some alternatives?
doomgeneric - Easily portable doom
miniflare - 🔥 Fully-local simulator for Cloudflare Workers. For the latest version, see https://github.com/cloudflare/workers-sdk/tree/main/packages/miniflare.
wasm4 - Build retro games using WebAssembly for a fantasy console.
youki - A container runtime written in Rust
yew - Rust / Wasm framework for creating reliable and efficient web applications
brython - Brython (Browser Python) is an implementation of Python 3 running in the browser
Transcrypt - Python 3.9 to JavaScript compiler - Lean, fast, open! -
awesome-paas - A curated list of PaaS, developer platforms, Self hosted PaaS, Cloud IDEs and ADNs.
ffi-overhead - comparing the c ffi (foreign function interface) overhead on various programming languages
workers-chat-demo
pyodide - Pyodide is a Python distribution for the browser and Node.js based on WebAssembly
e2core - Server for sandboxed third-party plugins, powered by WebAssembly