awesome-repositories.com
Blog
MCP
awesome-repositories.com

Discover the best open-source repositories with AI-powered search.

ExploreCurated searchesOpen-source alternativesSelf-hosted softwareBlogSitemap
ProjectMCP serverAboutHow we rankPress
LegalPrivacyTerms
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
dop251 avatar

dop251/goja

0
View on GitHub↗
6,914 stars·453 forks·Go·MIT·26 views

Goja

Goja is a JavaScript engine and ECMAScript compliant interpreter implemented entirely in Go. It serves as an embedded scripting engine that allows Go applications to execute JavaScript code and integrate a programmable scripting layer without relying on Cgo or external native dependencies.

The project functions as a bridge between Go and JavaScript, enabling bidirectional data exchange and function invocation. It allows Go hosts to expose native structs, slices, and maps as JavaScript objects and arrays, while providing mechanisms to export script values and functions back into native Go types.

The runtime covers a broad range of language primitives, including asynchronous promise execution, proxy object implementation, and the Reflect API. It also includes support for arbitrary precision integers, typed arrays, and standard data structures like maps, sets, and weak maps.

Additional capabilities include script execution profiling for performance analysis, source code mapping for debugging, and utilities for JSON serialization and parsing.

Features

  • ECMAScript Compliant Engines - Functions as a specification-compliant engine for parsing and executing JavaScript code according to ECMAScript standards.
  • Go-Based Language Runtimes - Provides a JavaScript runtime implemented entirely in Go without relying on C bindings or external libraries.
  • Custom Scripting Engines - Provides a complete ECMAScript runtime for executing custom logic within Go applications.
  • Native Type Mappings - Exposes internal Go structs and arrays as JavaScript objects via reflection.
  • JavaScript Engine Embedding - Integrates a full JavaScript execution engine as an embedded component within Go applications.
  • Cross-Language Data Exchange - Passes native values into the script runtime and exports script objects back into native types.
  • Cross-Language Data Mapping - Transforms complex data structures between Go types and JavaScript objects for bidirectional communication.
  • Cross-Language Value Mappings - Translates data types between the Go host and JavaScript runtime while handling circular references.
  • Embedded Scripting Engines - Provides a programmable scripting layer integrated directly into Go binaries for dynamic logic.
  • Foreign Function Bindings - Exposes functions from Go to JavaScript and converts foreign function types into callable local types.
  • Function Execution Models - Executes standard, async, and generator functions while supporting functional patterns like binding, calling, and applying.
  • Host Function Exposure - Converts JavaScript functions into callable Go functions to facilitate bidirectional communication.
  • JavaScript Engines - A full JavaScript runtime implemented entirely in Go.
  • JavaScript Interop - Facilitates the exchange of data and function calls between Go and JavaScript using shared objects and maps.
  • Language Runtime Bridges - Provides a mechanism for bidirectional data exchange and function invocation between Go and JavaScript.
  • Native-to-Script Function Invocations - Allows native Go code to invoke functions defined within the JavaScript environment.
  • Prototype-Based Inheritance - Implements object inheritance and property lookup through a chain of prototype objects.
  • Pure Go Portings - Implements a JavaScript runtime entirely in Go, eliminating the need for Cgo or native dependencies.
  • JavaScript Runtimes - Provides a high-performance embedded environment to execute JavaScript and TypeScript code within a Go host.
  • Abstract Syntax Tree Parsing - Converts JavaScript source code into a structured tree of nodes for program analysis and execution.
  • Asynchronous Execution - Manages asynchronous execution flows using a promise-based model to resolve and reject deferred values.
  • Script Value Exports - Converts JavaScript objects and arrays, including circular references, into native Go types.
  • Host Object Binding - Maps native Go structs and slices to JavaScript objects using reflection to translate field names and methods.
  • Language Map Collections - Implements the native JavaScript Map object for flexible key-value storage and iteration.
  • Property Name Mappings - Translates Go field and method names into JavaScript property names while managing visibility.
  • Struct Field Mappings - Maps native Go struct fields and methods to JavaScript naming conventions.
  • Typed Arrays - Handles fixed-length binary data buffers and views using standardized integer array types.
  • Host Object Binding - Connects custom host-language objects and arrays to the script environment to manage properties.
  • Script-to-Native Type Mappings - Converts native Go map structures into JavaScript objects for standard property access and iteration.
  • CPU Profilers - Collects CPU usage and call stack samples to identify performance bottlenecks in script execution.
  • Dynamic Configuration - Enables the use of JavaScript as a flexible configuration language that can be updated at runtime.
  • Boolean Logic Types - Implements native boolean primitive types and prototype methods to evaluate truthy and falsy values.
  • Date and Time Runtimes - Manipulates date and time by parsing ISO strings and managing timestamps within the execution environment.
  • Object Property Descriptors - Manages object property descriptors to control value visibility and prototype retrieval.
  • Native Array Transformations - Converts native Go slices into JavaScript arrays, maintaining synchronization for reading and modification.
  • Numeric Operation Runtimes - Performs number manipulations including type conversion, precision formatting, and finiteness checks.
  • Custom Array Interfacing - Connects arrays with external data handlers to manage indexed element access and length modifications.
  • Proxy Objects - Implements proxy objects that wrap target objects to intercept and redefine operations like property access.
  • Reflection APIs - Provides a standardized Reflect API for performing runtime meta-operations on objects.
  • Regular Expression Engines - Implements a regular expression engine that transforms and validates patterns according to ECMAScript standards.
  • Set Operations - Implements standard JavaScript Set objects for managing unique value collections.
  • Lexical Analyzers - Transforms raw JavaScript character streams into structured tokens based on ECMAScript rules.
  • Unique Symbol Management - Manages unique symbol values and a global registry to ensure distinct identity for object properties.
  • Runtime Integer Implementations - Processes arbitrary precision integers to support numeric operations exceeding standard double-precision limits.
  • Async Flow Patterns - Implements asynchronous flow patterns by managing promise resolution and rejection to trigger deferred reactions.
  • String Manipulation - Provides native JavaScript string operations including concatenation, substringing, and case conversion.
  • UTF-16 String Implementations - Supports native string construction that handles complex character encodings and invalid UTF-16 surrogate pairs.
  • Compilers and Interpreters - ECMAScript 5.1+ implementation.
  • Language Runtimes - ECMAScript 5.1 implementation written in Go.
  • Scripting Languages - ECMAScript 5.1+ implementation in Go.

Star history

Star history chart for dop251/gojaStar history chart for dop251/goja

How this analysis was created: This summary and feature list are AI-generated from collected project material and can contain mistakes. Stars, license and language are imported from GitHub. Inclusion does not mean that we have tested or audited this project. Check the source documentation for any feature you depend on. Learn more on our About page.

AI search

Explore more awesome repositories

Describe what you need in plain English — the AI ranks thousands of curated open-source projects by relevance.

Start searching with AI

Projects sharing features with Goja

These projects share indexed features with Goja. Shared tags can include platform or build tooling; verify the primary use case before treating a result as a replacement.
  • robertkrimen/ottorobertkrimen avatar

    robertkrimen/otto

    8,439View on GitHub↗

    Otto is a Go implementation of a JavaScript interpreter and embedded scripting engine. It provides a runtime environment for executing JavaScript code within native applications and includes a parser that converts source code into an abstract syntax tree for analysis and processing. The project enables the creation of custom scripting interfaces by binding native Go functions into the JavaScript global scope. It also includes a utility to translate JavaScript regular expression patterns into compatible formats for other programming languages. The engine supports safe script sandboxing throug

    Go
    View on GitHub↗8,439
  • jerryscript-project/jerryscriptjerryscript-project avatar

    jerryscript-project/jerryscript

    7,399View on GitHub↗

    JerryScript is a lightweight, ECMAScript-compliant JavaScript engine and bytecode compiler designed for resource-constrained devices. It serves as an embedded interpreter and IoT scripting runtime, enabling the execution of JavaScript code within native C applications on hardware with limited memory. The project differentiates itself through a focus on low-memory runtime management, utilizing bytecode precompilation and pre-compiled state snapshots to reduce startup time and memory overhead. It features a C-binding native bridge for bidirectional communication between native code and scripts,

    C
    View on GitHub↗7,399
  • rhaiscript/rhairhaiscript avatar

    rhaiscript/rhai

    5,453View on GitHub↗

    Rhai is an embedded scripting engine and dynamically typed language designed for integration into Rust applications. It functions as an abstract syntax tree compiler and native interop layer, allowing developers to map Rust types and functions into a scripting environment for bidirectional communication. The project serves as a framework for creating customizable domain-specific languages. It allows for the definition of custom operators, syntax, and restricted execution environments, enabling the creation of specialized languages with tailored functional sets. The engine covers a broad rang

    Rustembeddedembedded-scripting-languageno-std
    View on GitHub↗5,453
  • drksephy/es6-cheatsheetDrkSephy avatar

    DrkSephy/es6-cheatsheet

    13,327View on GitHub↗

    This project is a JavaScript ES6 reference guide and syntax cheatsheet. It serves as an ECMAScript language guide providing technical examples and a curated list of tips for implementing modern JavaScript patterns. The guide covers a wide range of language features, including the use of classes for object blueprints, module systems for code organization, and arrow functions to preserve execution context. It provides instructions on utilizing block-scoped variables, template literals for string interpolation, and destructuring for nested data extraction. The reference also addresses asynchron

    JavaScript
    View on GitHub↗13,327
Compare all 30 related projects→

Frequently asked questions

What does dop251/goja do?

Goja is a JavaScript engine and ECMAScript compliant interpreter implemented entirely in Go. It serves as an embedded scripting engine that allows Go applications to execute JavaScript code and integrate a programmable scripting layer without relying on Cgo or external native dependencies.

What are the main features of dop251/goja?

The main features of dop251/goja are: ECMAScript Compliant Engines, Go-Based Language Runtimes, Custom Scripting Engines, Native Type Mappings, JavaScript Engine Embedding, Cross-Language Data Exchange, Cross-Language Data Mapping, Cross-Language Value Mappings.

Which projects share features with dop251/goja?

Projects with overlapping indexed features include: robertkrimen/otto — Otto is a Go implementation of a JavaScript interpreter and embedded scripting engine. It provides a runtime… jerryscript-project/jerryscript — JerryScript is a lightweight, ECMAScript-compliant JavaScript engine and bytecode compiler designed for… rhaiscript/rhai — Rhai is an embedded scripting engine and dynamically typed language designed for integration into Rust applications.… drksephy/es6-cheatsheet — This project is a JavaScript ES6 reference guide and syntax cheatsheet. It serves as an ECMAScript language guide… microsoft/chakracore — ChakraCore is an embedded JavaScript engine designed to be integrated as a library within a host application. Its… lua/lua — Lua is an embeddable scripting language written in ISO C, designed to be integrated into host applications for runtime…