Isère (/iːˈzɛər/)
A serverless platform aimed to be running on Microcontrollers
The goal is to create a low-power serverless platform that can handle simple stateless request like logging in which will require accessing to database and creating JWT token
- FreeRTOS as Kernel
- QuickJS as JavaScript runtime
- setTimeout / clearTimeout (FreeRTOS Software Timer)
- HTTP server
- Event Loop
- Static Files (?)
- Unit tests
- loader
- js
- httpd
- logger
- polyfills
- setTimeout
- Unit tests on CI
- File System Abstraction
- Configuration File
- Integration tests
- Integration tests on CI
- Node-like APIs (ref. workerd)
- assert
- buffer
- crypto
- diagnostics_channel ❌
- events
- path
- process.env
- stream (?)
- string_decoder
- util
- Fetch API
- QuickJS Memory Leak Check
- Use less printf()
- QuickJS Project Template
- Low-power mode
- Benchmark
- Port to Raspberry Pi Pico (RP2040) (LittleFs + FreeRTOS+POSIX + FreeRTOS+TCP)
- Integrate with some Analytics and Monitoring Platforms
- Port to ESP32?
- MicroPython?
- No Keep-Alive support
- JavaScript handler function needs to be stored sequentially and addressible in a Flash memory
- File system is for storing static files and configuration files
Prerequisites:
- automake
- make
- gcc
- libtool
- ninja (optional for building c-capnproto)
# install dependencies
brew install automake libtool ninja
# or
sudo apt install -y build-essential libtool ninja-build
git clone <this f***ing repo>
git submodule update --init
# compile dependencies
make -j deps
# compile examples javascript
make -j .examples
# compile isere
make -j
# run isere
./isere
try to access http://localhost:8080/
and see the process logs
feel free to try modify examples/echo.esm.js
(don't forget to recompile it using make -j .examples
)
make -j unittest
./unittest