Skip to content
/ isere Public

A serverless platform aimed to be running on Microcontrollers, powered by FreeRTOS, LwIP, and QuickJS

License

Notifications You must be signed in to change notification settings

jeeyo/isere

Repository files navigation

isère

workflow

A serverless platform aimed to be running on Microcontrollers, powered by FreeRTOS, LwIP, and QuickJS

Current progress

  • FreeRTOS as Kernel
  • JavaScript runtime
    • QuickJS
    • JerryScript
  • Python runtime (?)
    • MicroPython
  • HTTP server
    • Event Loop (no Keep-Alive support)
      • Socket
      • QuickJS
    • Static Files (?)
  • Unit tests
    • loader
    • js
    • httpd
    • http handler
    • logger
  • Unit tests on CI
  • File System
  • Configuration File
  • Watchdog timer
  • Integration tests
  • Integration tests on CI
  • Cloudflare Workers API (on QuickJS)
    • crypto
    • fetch
    • process (env)
    • console (log, warn, error)
    • setTimeout / clearTimeout (FreeRTOS Timer)
    • performance (?)
    • WebAssembly
  • OpenTelemetry
  • LogStash
    • unbuffered printf()
    • NDJSON logs
    • Serial-to-LogStash integration
  • Memory Leak Check
  • Valgrind
  • Optimization
    • less libc usage
  • Project Template
  • Low-power mode
  • Benchmark
  • Doxygen
  • Port
    • Raspberry Pi Pico 2 (RP2350)
    • ESP32?
  • Monitoring

Limitations

  • No Keep-Alive support
  • JavaScript handler function needs to be stored sequentially and addressible in a memory
  • File system is for storing static files and configuration files

Building and Running

Prerequisites:

Install dependencies

macOS

brew install gcc cmake make libtool protobuf ninja

If you want to build unit tests, you also need to install CppUTest

brew install cpputest
export CPPUTEST_HOME=/opt/homebrew/Cellar/cpputest/4.0/

Debian / Ubuntu

sudo apt-get install -y build-essential make cmake xxd protobuf-compiler ninja-build

For installing CppUTest, please follow Using CppUTest with MakefileWorker.mk and gcc section on CppUTest website.

Building

git clone https://github.com/jeeyo/isere.git
git submodule update --init --recursive

mkdir build
cd build
cmake -DTARGET_PLATFORM=linux -DDEBUG=on .. # see Build configurations for more options
make -j

Build configurations

Name Description Supported values Default value
TARGET_PLATFORM Target platform to build isère executable for linux, pico2 linux
DEBUG Whether to build isère executable with debug symbol off, on off
JS_RUNTIME JavaScript runtime to execute handler function quickjs, jerryscript quickjs
WITH_OTEL Whether to send metrics to OpenTelemetry Collector off, on off
OTEL_HOST OpenTelemetry Collector OLTP/HTTP Host "127.0.0.1"
OTEL_PORT OpenTelemetry Collector OLTP/HTTP Port 4318

Running

./isere

A web server will start on port 8080 with the function defined in js/handler.js

Benchmark

See BENCHMARK.md

Acknowledgment

Special thanks to

About

A serverless platform aimed to be running on Microcontrollers, powered by FreeRTOS, LwIP, and QuickJS

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published