Skip to content

6over3/quickjs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hako QuickJS - WebAssembly JavaScript Engine
=============================================

This is a fork of QuickJS that compiles to WebAssembly using WASI SDK. It provides
a C API for embedding JavaScript execution in WebAssembly-based applications with
built-in TypeScript type stripping support.

Key Features
------------

- QuickJS JavaScript engine compiled to WebAssembly
- WASI reactor module (~800KB optimized)
- TypeScript type stripping via tree-sitter
- C API wrapper (hako.h/hako.c) for host integration
- Automated binding generation for host languages

Building
--------

Prerequisites:
  - WASI SDK (version 27 or later)
  - wasm-opt (from Binaryen)
  - Bun (for code generation)
  - wasm-objdump (from WABT, for bindings)

Build steps:

  1. Set WASI_SDK_PATH environment variable:
     export WASI_SDK_PATH=/path/to/wasi-sdk

  2. Build hako.wasm:
     ./release-hako.sh

  This runs make, compiles all sources, and optimizes the output with wasm-opt.

Code Generation
---------------

The codegen.ts tool generates language bindings from the compiled WASM module.

1. Parse WASM and generate bindings metadata:
   bun run codegen.ts parse hako.wasm hako.h bindings.json

   This extracts:
   - WASM type signatures and exports from hako.wasm
   - C function signatures and documentation from hako.h
   - Combines into bindings.json with complete metadata

2. Generate host language bindings:
   bun run codegen.ts generate csharp bindings.json HakoRegistry.cs

   Currently supports C# binding generation. The generated code includes:
   - Typed wrapper methods
   - Parameter marshalling
   - Documentation comments

Project Structure
-----------------

hako.h              - Public C API with function exports and documentation
hako.c              - Implementation wrapping QuickJS and TypeScript stripper
ts_strip/           - TypeScript type stripping using tree-sitter
release-hako.sh     - Build script with wasm-opt optimization
Makefile            - WASI build configuration
codegen.ts          - Binding generator tool

Documentation
-------------

For detailed QuickJS documentation, see doc/quickjs.pdf or doc/quickjs.html.
For Hako-specific usage, see the host implementations in the main repository.

About

Public repository of the Hako Javascript Engine.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 98.9%
  • Other 1.1%