This is the next generation version of fly, and replaces the Node / isolated-vm portions of the runtime with a native Rust + v8 binary. It's much faster. And much more concurrent. Plus it's Rust so it's more fun.
wget -qO- https://github.com/superfly/libv8/releases/download/7.1.321/v8-osx-x64.tar.gz | tar xvz -C libfly
git submodule update --init
cd third_party/flatbuffers
cmake -G "Unix Makefiles"
make flatc
- ensure
./third_party/flatbuffers
is in$PATH
cd ../../
cd v8env
yarn install
rollup -c
cd ..
cargo run --bin server
cargo run --bin test "v8env/tests/**/*.spec.js"
The Fly runtime was originally derived from deno and shares some of the same message passing semantics. It has diverged quite a bit, but when possible we'll be contributing code back to deno.
- Send
print
(allconsole.x
calls) back into Rust to handle in various ways- Send errors to stderr
- Use envlogger (
debug!
,info!
, etc. macros) for messages - Allow sending to graylog or something external
- Feature-parity
- Image API
- Cache
- Expire (set ttl)
- TTL (get ttl)
- Tags / purge
- global.purgeTag / del
- Testing
- Runtime
- Lifecycle management
- Gracefully "replace" if running out of heap
- Handle promise rejection (trash the runtime? just log?)
- Handle uncaught error
- Lifecycle management
- Builder
- TypeScript support
- HTTP imports!
- CI builds + releases
- Mac
- Linux
- Windows
- HTTP
- Actually use the config hostnames and correct app
- Spawn multiple runtime instances for the same app (n cpus? configurable?)
- Add
Server
header for Fly and current version (maybe?) - Fetch request bodies
- Observability
- Exception reporting (via Sentry probably)
- Metrics (prometheus)
- Stability / Resilience
- do not use
unwrap
(that will panic and exit the process). Solution is to handle them and return or print proper errors - Get rid of all warnings
- Tests!
- do not use