parent 3a5b85fc
# Appliance.js (`appliance` on npm)
# dukboots
An experimental alternative to Node.js
**Appliance.** *Noun.* A device or piece of equipment designed to perform a specific task.
An experimental alternative to Node.js. `"duk"` because it uses the [Duktape](http://duktape.org/) ECMAScript engine, and `"boots"` because I want to be able to [boot it](https://github.com/wmhilton/boots) directly on bare metal.
## Existing projects that are way farther along than this one
......@@ -11,7 +9,7 @@ An experimental alternative to Node.js
- [NodeOS](https://github.com/NodeOS/NodeOS)
- [runtime.js](http://runtimejs.org/)
## Then why does this exist...?
### Then why does this exist...?
This way I can try really crazy stuff in a zero pressure environment.
Once I've made enough mistakes to scrap it and do a full rewrite, maybe
......@@ -25,7 +23,7 @@ claims require bold whatever whatever and I need a space to fully work through
my ideas on how to fix the world, see what the impact is, and why they won't work
so we're all still doomed.
## How?
### How?
Pragmatism. Sure, I'd love a JavaScript OS that runs directly on bare metal
or a hypervisor, but that's simply ONE idea. To start, I'm doing the simpler
......@@ -33,7 +31,7 @@ object of targeting the Alpine Linux Docker image. That has most of the
size advantage of a unikernel anyway. And yes, that totally means I'm cheating
and not using [boots](https://github.com/wmhilton/boots) at all. For now.
## What's the Philosophy?
### What's the philosophy behind it?
Wait... do I need a manifesto or something? Probably, eventually. For now, I'll
just leave some quotes from this wise collector of quotes: http://quotes.cat-v.org/programming/
......@@ -62,7 +60,7 @@ just leave some quotes from this wise collector of quotes: http://quotes.cat-v.o
> The competent programmer is fully aware of the limited size of his own skull. He therefore approaches his task with full humility, and avoids clever tricks like the plague.
> — Edsger W. Dijkstra
## So what is this thing?
## So what IS this?
A C program. You can compile it with `build.sh` which just runs gcc with a bunch of arguments.
It sadly uses the C standard library for now, so you have to build it against something.
......@@ -73,6 +71,18 @@ I've got a fancy Gitlab Pipeline that compiles and tests the program on both
Ubuntu and Alpine Linux. Mostly because it would slow things down if I had to
always compile against Alpine Linux when my dev environment is Bash for Windows.
I also have compiled binaries for Windows now thanks to this [incredible Docker image](https://hub.docker.com/r/thewtex/cross-compiler-windows-x64)!
## Downloads
Here's some precompiled binaries courtesy of Gitlab CI:
- Download the [dukboots binary for Ubuntu](https://gitlab.com/wmhilton/dukboots/builds/artifacts/master/download?job=compile-for-ubuntu)
- Download the [dukboots binary for Alpine Linux](https://gitlab.com/wmhilton/dukboots/builds/artifacts/master/download?job=compile-for-alpine)
- Download the [dukboots binary for Windows](https://gitlab.com/wmhilton/dukboots/builds/artifacts/master/download?job=compile-for-windows)
## Agenda
- [ ] An event loop. Like `libuv` but... not `libuv`. Something small and manageable.
......@@ -82,8 +92,7 @@ to compile). But I am currently thinking [OpenMP](https://en.wikipedia.org/wiki/
way to go. Combine that with `duk_suspend` and `duk_resume` for C code and there
you have it. Then we just need to write an ethernet driver in assembly. ;)
- [ ] Pure `musl`? Or whatever? We need to eventually isolate all OS kernel calls
since we won't need no stinkin' operating system.
- [ ] Pure `musl`? Or whatever? We need to eventually isolate all OS kernel calls since we won't need no stinkin' operating system.
## Module strategy
A project for teaching myself the Gitlab CI
An experimental alternative to Node.js.
Download <a href="releases/latest/dukboots-ubuntu">Dukboots for Ubuntu</a>.
Check out the source and README on <a href="https://gitlab.com/wmhilton/dukboots">gitlab.com/wmhilton/dukboots</a>
Download the latest and greatest compiled build of Dukboots to try out:
<li><a href="releases/latest/dukboots-ubuntu">Dukboots for Ubuntu</a>
<li><a href="releases/latest/dukboots-alpine">Dukboots for Alpine Linux</a>
<li><a href="releases/latest/dukboots-windows.exe">Dukboots for Windows</a>
Download <a href="releases/latest/dukboots-alpine">Dukboots for Alpine Linux</a>.
\ No newline at end of file
"name": "appliance",
"version": "0.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
"keywords": [],
"author": "William Hilton <wmhilton@gmail.com>",
"license": "Unlicense"
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment