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)