JavaScript runtime with stackful coroutines.
Pros:
- Massive outburst of scripts running as coroutines
- Simple API without using async/await yet running in parallel
- Built for Linux (x86_64, arm6, arm7, arm8, arm64), Windows (x86, x86_64, arm64), MacOS(x86_64, arm64), iOS(arm64), Android (arm7, arm64, x86, x86_64)
- Memory arenas per script/coroutine using single threaded non lockable memory
- Polymorphic c/c++ allocators sharing same memory arena as script context
- Similar to Flutter's Isolates for message passing between threads and scripts/coroutines
- Caching the precompiled script modules for faster reuse
- LRU cache for small script files and file handles
- Thread pool dynamically grows and shrinks depending of workload
- Using io_uring optimizations for Linux
- asynchronous threads, processes and pipes (thank you boost::asio)
- Predictive branching favoring desired outcomes (sounds smart, but it's a macro on every if statement)
- There are no mutexes or any synchronization/ blocking calls
- JavaScript library (quickjs) is using reference counting for it's garbage collections which makes c/c++ binding more deterministic and memory efficient
- C/C++ metatemplates are used to "fuse" dynamic JavaScript objects with statically typed C++ counterparts
Cons:
- no debugger
- no final release date
- no stable API
- no complete test coverage
- plan to open-source it until spring of 2023