forked from cadey/xesite
start removing mentions of wasmcloud
Signed-off-by: Christine Dodrill <me@christine.website>
This commit is contained in:
parent
c5fc9336f5
commit
9a9c474c76
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
title: "Wasmcloud Progress: Hello, World!"
|
title: "Trisiel Progress: Hello, World!"
|
||||||
date: 2019-12-08
|
date: 2019-12-08
|
||||||
series: olin
|
series: olin
|
||||||
tags:
|
tags:
|
||||||
|
@ -11,7 +11,7 @@ tags:
|
||||||
|
|
||||||
I have been working off and on over the years and have finally created the base
|
I have been working off and on over the years and have finally created the base
|
||||||
of a functions as a service backend for [WebAssembly][wasm] code. I'm code-naming this
|
of a functions as a service backend for [WebAssembly][wasm] code. I'm code-naming this
|
||||||
wasmcloud. [Wasmcloud][wasmcloud] is a pre-alpha prototype and is currently very much work in
|
wasmcloud. [Trisiel][wasmcloud] is a pre-alpha prototype and is currently very much work in
|
||||||
progress. However, it's far enough along that I would like to explain what I
|
progress. However, it's far enough along that I would like to explain what I
|
||||||
have been doing for the last few years and what it's all built up to.
|
have been doing for the last few years and what it's all built up to.
|
||||||
|
|
||||||
|
@ -100,7 +100,7 @@ I've even written a few blogposts about Olin:
|
||||||
|
|
||||||
But, this was great for running stuff interactively and via the command line. It
|
But, this was great for running stuff interactively and via the command line. It
|
||||||
left me wanting more. I wanted to have that mythical functions as a service
|
left me wanting more. I wanted to have that mythical functions as a service
|
||||||
backend that I've been dreaming of. So, I created [wasmcloud][wasmcloud].
|
backend that I've been dreaming of. So, I created [Trisiel][wasmcloud].
|
||||||
|
|
||||||
## h
|
## h
|
||||||
|
|
||||||
|
@ -144,9 +144,9 @@ world. I even got this program running on bare metal:
|
||||||
[hlang]: https://h.christine.website
|
[hlang]: https://h.christine.website
|
||||||
[vlang]: https://vlang.io
|
[vlang]: https://vlang.io
|
||||||
|
|
||||||
## Wasmcloud
|
## Trisiel
|
||||||
|
|
||||||
[Wasmcloud][wasmcloud] is the culmination of all of this work. The goal of
|
[Trisiel][wasmcloud] is the culmination of all of this work. The goal of
|
||||||
wasmcloud is to create a functions as a service backend for running people's
|
wasmcloud is to create a functions as a service backend for running people's
|
||||||
code in an isolated server-side environment.
|
code in an isolated server-side environment.
|
||||||
|
|
||||||
|
@ -181,11 +181,11 @@ Top-level flags (use "wasmcloud flags" for a full list):
|
||||||
|
|
||||||
This tool lets you do a few basic things:
|
This tool lets you do a few basic things:
|
||||||
|
|
||||||
- Authenticate with the wasmcloud server
|
- Authenticate with the Trisiel server
|
||||||
- Create handlers from WebAssembly files that meet the CommonWA API as realized
|
- Create handlers from WebAssembly files that meet the CommonWA API as realized
|
||||||
by Olin
|
by Olin
|
||||||
- Get logs for individual handler invocations
|
- Get logs for individual handler invocations
|
||||||
- Run WebAssembly modules locally like they would get run on wasmcloud
|
- Run WebAssembly modules locally like they would get run on Trisiel
|
||||||
|
|
||||||
Nearly all of the complexity is abstracted away from users as much as possible.
|
Nearly all of the complexity is abstracted away from users as much as possible.
|
||||||
|
|
||||||
|
|
|
@ -1,29 +1,29 @@
|
||||||
---
|
---
|
||||||
title: "Wasmcloud Progress: Rewritten in Rust"
|
title: "Trisiel Progress: Rewritten in Rust"
|
||||||
date: 2020-10-31
|
date: 2020-10-31
|
||||||
series: olin
|
series: olin
|
||||||
tags:
|
tags:
|
||||||
- wasm
|
- wasm
|
||||||
- wasmcloud
|
- trisiel
|
||||||
- wasmer
|
- wasmer
|
||||||
---
|
---
|
||||||
|
|
||||||
# Wasmcloud Progress: Rewritten in Rust
|
# Trisiel Progress: Rewritten in Rust
|
||||||
|
|
||||||
It's been a while since I had the [last update for
|
It's been a while since I had the [last update for
|
||||||
Wasmcloud](/blog/wasmcloud-progress-2019-12-08). In that time I have gotten a
|
Trisiel](/blog/wasmcloud-progress-2019-12-08). In that time I have gotten a
|
||||||
lot done. As the title mentions I have completely rewritten Wasmcloud's entire
|
lot done. As the title mentions I have completely rewritten Trisiel's entire
|
||||||
stack in Rust. Part of the reason was for [increased
|
stack in Rust. Part of the reason was for [increased
|
||||||
speed](/blog/pahi-benchmarks-2020-03-26) and the other part was to get better at
|
speed](/blog/pahi-benchmarks-2020-03-26) and the other part was to get better at
|
||||||
Rust. I also wanted to experiment with running Rust in production and this has
|
Rust. I also wanted to experiment with running Rust in production and this has
|
||||||
been an excellent way to do that.
|
been an excellent way to do that.
|
||||||
|
|
||||||
Wasmcloud is going to have a few major parts:
|
Trisiel is going to have a few major parts:
|
||||||
- The API (likely to be hosted at `api.wasmcloud.app`)
|
- The API (likely to be hosted at `api.trisiel.com`)
|
||||||
- The Executor (likely to be hosted at `run.wasmcloud.lgbt`)
|
- The Executor (likely to be hosted at `run.trisiel.dev`)
|
||||||
- The Panel (likely to be hosted at `panel.wasmcloud.app`)
|
- The Panel (likely to be hosted at `panel.trisiel.com`)
|
||||||
- The command line tool `wasmcloud`
|
- The command line tool `trisiel`
|
||||||
- The Documentation site (likely to be hosted at `docs.wasmcloud.app`)
|
- The Documentation site (likely to be hosted at `docs.trisiel`)
|
||||||
|
|
||||||
These parts will work together to implement a functions as a service platform.
|
These parts will work together to implement a functions as a service platform.
|
||||||
|
|
||||||
|
@ -32,15 +32,15 @@ href="https://github.blog/2013-04-05-new-github-pages-domain-github-io/">this
|
||||||
GitHub Pages vulnerability</a> from 2013. It is on a `.lgbt` domain because LGBT
|
GitHub Pages vulnerability</a> from 2013. It is on a `.lgbt` domain because LGBT
|
||||||
rights are human rights.](conversation://Mara/hacker)
|
rights are human rights.](conversation://Mara/hacker)
|
||||||
|
|
||||||
I have also set up a (slightly sarcastic) landing page at
|
I have also set up a landing page at
|
||||||
[wasmcloud.app](https://wasmcloud.app) and a twitter account at
|
[trisiel.com](https://trisiel.com) and a twitter account at
|
||||||
[@usewasmcloud](https://twitter.com/usewasmcloud). Right now these are
|
[@trisielcloud](https://twitter.com/trisielcloud). Right now these are
|
||||||
placeholders. I wanted to register the domains before they were taken by anyone
|
placeholders. I wanted to register the domains before they were taken by anyone
|
||||||
else.
|
else.
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
My previous attempt at Wasmcloud had more of a four tier webapp setup. The
|
My previous attempt at Trisiel had more of a four tier webapp setup. The
|
||||||
overall stack looked something like this:
|
overall stack looked something like this:
|
||||||
|
|
||||||
- Nginx in front of everything
|
- Nginx in front of everything
|
||||||
|
@ -60,10 +60,10 @@ difficulties scaling globally due to ingress and egress data costs. This model
|
||||||
is solid and _probably would have worked_ with some compression or other
|
is solid and _probably would have worked_ with some compression or other
|
||||||
improvements like that, but overall I was not happy with it and decided to scrap
|
improvements like that, but overall I was not happy with it and decided to scrap
|
||||||
it while I was porting the executor component to Rust. If you want to read the
|
it while I was porting the executor component to Rust. If you want to read the
|
||||||
source code of this iteration of Wasmcloud, take a look
|
source code of this iteration of Trisiel, take a look
|
||||||
[here](https://tulpa.dev/within/wasmcloud).
|
[here](https://tulpa.dev/within/wasmcloud).
|
||||||
|
|
||||||
The new architecture of Wasmcloud looks something like this:
|
The new architecture of Trisiel looks something like this:
|
||||||
|
|
||||||
- Nginx in front of everything
|
- Nginx in front of everything
|
||||||
- An API server that handles login with my gitea instance
|
- An API server that handles login with my gitea instance
|
||||||
|
@ -74,9 +74,9 @@ The new architecture of Wasmcloud looks something like this:
|
||||||
The main change here is the fact that the executor listens over HTTPS, avoiding
|
The main change here is the fact that the executor listens over HTTPS, avoiding
|
||||||
_a lot_ of the overhead involved in running this on a message queue. It's also
|
_a lot_ of the overhead involved in running this on a message queue. It's also
|
||||||
much simpler to implement and allows me to reuse a vast majority of the
|
much simpler to implement and allows me to reuse a vast majority of the
|
||||||
boilerplate that I developed for the Wasmcloud API server.
|
boilerplate that I developed for the Trisiel API server.
|
||||||
|
|
||||||
This new version of Wasmcloud is also built on top of
|
This new version of Trisiel is also built on top of
|
||||||
[Wasmer](https://wasmer.io/). Wasmer is a seriously fantastic library for this
|
[Wasmer](https://wasmer.io/). Wasmer is a seriously fantastic library for this
|
||||||
and getting up and running was absolutely trivial, even though I knew very
|
and getting up and running was absolutely trivial, even though I knew very
|
||||||
little Rust when I was writing [pa'i](/blog/pahi-hello-world-2020-02-22). I
|
little Rust when I was writing [pa'i](/blog/pahi-hello-world-2020-02-22). I
|
||||||
|
@ -91,7 +91,7 @@ very little accounting for what resources and system calls are used, however it
|
||||||
does keep track of execution time. The executor also needs to have the request
|
does keep track of execution time. The executor also needs to have the request
|
||||||
body of the client be wired to the standard in of the underlying module, which
|
body of the client be wired to the standard in of the underlying module, which
|
||||||
will enable me to parse CGI replies from WebAssembly functions. This will allow
|
will enable me to parse CGI replies from WebAssembly functions. This will allow
|
||||||
you to host HTTP endpoints on Wasmcloud using the same code that powers
|
you to host HTTP endpoints on Trisiel using the same code that powers
|
||||||
[this](https://olin.within.website) and
|
[this](https://olin.within.website) and
|
||||||
[this](http://cetacean.club/cgi-bin/olinfetch.wasm).
|
[this](http://cetacean.club/cgi-bin/olinfetch.wasm).
|
||||||
|
|
||||||
|
@ -103,15 +103,15 @@ again.
|
||||||
Then comes the documentation. Oh god there will be so much documentation. I will
|
Then comes the documentation. Oh god there will be so much documentation. I will
|
||||||
be _drowning_ in documentation by the end of this.
|
be _drowning_ in documentation by the end of this.
|
||||||
|
|
||||||
I need to write the panel and command line tool for Wasmcloud. I want to write
|
I need to write the panel and command line tool for Trisiel. I want to write
|
||||||
the panel in [Elm](https://elm-lang.org/) and the command line tool in Rust.
|
the panel in [Elm](https://elm-lang.org/) and the command line tool in Rust.
|
||||||
|
|
||||||
There is basically zero validation for anything submitted to the Wasmcloud API.
|
There is basically zero validation for anything submitted to the Trisiel API.
|
||||||
I will need to write validation in order to make it safer.
|
I will need to write validation in order to make it safer.
|
||||||
|
|
||||||
I may also explore enabling support for [WASI](https://wasi.dev/) in the future,
|
I may also explore enabling support for [WASI](https://wasi.dev/) in the future,
|
||||||
but as I have stated before I do not believe that WASI works very well for the
|
but as I have stated before I do not believe that WASI works very well for the
|
||||||
futuristic plan-9 inspired model I want to use on Wasmcloud.
|
futuristic plan-9 inspired model I want to use on Trisiel.
|
||||||
|
|
||||||
Right now the executor shells out to pa'i, but I want to embed pa'i into the
|
Right now the executor shells out to pa'i, but I want to embed pa'i into the
|
||||||
executor binary so there are fewer moving parts involved.
|
executor binary so there are fewer moving parts involved.
|
||||||
|
@ -126,7 +126,7 @@ limitations also don't help here.
|
||||||
[Rocket](https://rocket.rs) is an absolutely fantastic web framework and I
|
[Rocket](https://rocket.rs) is an absolutely fantastic web framework and I
|
||||||
cannot recommend it enough. I am able to save _so much time_ with Rocket and its
|
cannot recommend it enough. I am able to save _so much time_ with Rocket and its
|
||||||
slightly magic use of proc-macros. For an example, here is the entire source
|
slightly magic use of proc-macros. For an example, here is the entire source
|
||||||
code of the `/whoami` route in the Wasmcloud API:
|
code of the `/whoami` route in the Trisiel API:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
#[get("/whoami")]
|
#[get("/whoami")]
|
||||||
|
@ -165,7 +165,7 @@ CREATE TRIGGER set_timestamp_users
|
||||||
EXECUTE PROCEDURE trigger_set_timestamp();
|
EXECUTE PROCEDURE trigger_set_timestamp();
|
||||||
```
|
```
|
||||||
|
|
||||||
Every table in Wasmcloud uses this in order to make programming against the
|
Every table in Trisiel uses this in order to make programming against the
|
||||||
database easier.
|
database easier.
|
||||||
|
|
||||||
The symbol/number layer on my Moonlander has been _so good_. It looks something
|
The symbol/number layer on my Moonlander has been _so good_. It looks something
|
||||||
|
@ -196,7 +196,7 @@ As far as signups go, I am not accepting any signups at the moment. This is
|
||||||
pre-alpha software. The abuse story will need to be figured out, but I am fairly
|
pre-alpha software. The abuse story will need to be figured out, but I am fairly
|
||||||
sure it will end up being some kind of "pay or you can only run the precompiled
|
sure it will end up being some kind of "pay or you can only run the precompiled
|
||||||
example code in the documentation" with some kind of application process for the
|
example code in the documentation" with some kind of application process for the
|
||||||
"free tier" of Wasmcloud. Of course, this is all theoretical and hinges on
|
"free tier" of Trisiel. Of course, this is all theoretical and hinges on
|
||||||
Wasmcloud actually being productizable; so who knows?
|
Trisiel actually being productizable; so who knows?
|
||||||
|
|
||||||
Be well.
|
Be well.
|
||||||
|
|
Loading…
Reference in New Issue