includejs offers a unified API for building your own JavaScript runtime, bridging multiple engines and platforms with ease.
In our journey to enhance includejs, we've also developed small - a minimalist, experimental runtime
aimed to provide ground for concepts and features we're considering for it.
Hosted on GitHub at crossnx/small.
- Multiple runtime support:
JavascriptCore,v8(more in the furture) - Cross platform support
- Direclty consumable from
CMake
🤙 Stay tuned as we continue to expand our feature set.
| Feature | JavaScriptCore | V8 |
|---|---|---|
| Boolean | ✅ Supported | ❌ Not Supported |
| Number | ✅ Supported | ❌ Not Supported |
| String | ✅ Supported | ❌ Not Supported |
| Object | ✅ Supported | ❌ Not Supported |
| Array | ✅ Supported | ❌ Not Supported |
| Promise | ✅ Supported | ❌ Not Supported |
| Function | ✅ Supported | ❌ Not Supported |
| Error | ✅ Supported | ❌ Not Supported |
| Class | ❌ Not Supported | ❌ Not Supported |
| Set | ❌ Not Supported | ❌ Not Supported |
| Map | ❌ Not Supported | ❌ Not Supported |
| BigInt | ❌ Not Supported | ❌ Not Supported |
| Symbol | ❌ Not Supported | ❌ Not Supported |
| ArrayBuffer | ❌ Not Supported | ❌ Not Supported |
| TypedArray | ❌ Not Supported | ❌ Not Supported |
- Timers
- Console
| Platform | JavaScriptCore | V8 |
|---|---|---|
| macOS | ✅ Supported | ✅ Supported |
| Linux | ✅ Supported | ✅ Supported |
| Windows | ❌ Not Supported | ❌ Not Supported |
- C++
- CMake
- JavascriptCore
- Brew (macOS)
You can consume includejs just with CMake:
cmake_minimum_required(VERSION 3.18)
project(your_runtime VERSION 0.0.1 LANGUAGES CXX)
include(FetchContent)
FetchContent_Declare(
includejs
GIT_REPOSITORY https://github.com/crossnx/includejs
GIT_TAG main
DOWNLOAD_EXTRACT_TIMESTAMP NO)
FetchContent_MakeAvailable(includejs)
add_executable(your_runtime main.cc)
target_link_libraries(your_runtime PRIVATE includejs::engine)
