dop251/goja

ECMAScript/JavaScript engine in pure Go

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 41 minutes ago
Added to GitGenius on September 9th, 2026
Created on November 4th, 2016
Open Issues & Pull Requests: 32 (+0)
GitHub issues: Enabled
Number of forks: 472
Total Stargazers: 7,082 (+0)
Total Subscribers: 94 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 16.3 hours
Mean response time: 25.3 days
90th percentile: 34.4 days
Tracked items: 70

How this project is maintained

Around half of the issues opened in the past year never receive a reply. Only 18% of issues opened in the past year have been closed. Three people close 78% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 15
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 1,024 days
Stale 30+ days: 14
Stale 90+ days: 14

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • bug (14)
  • question (5)
  • enhancement (3)
  • invalid (3)

Most active issues this week

Detailed Description

Goja is an ECMAScript/JavaScript engine written in pure Go.

Goja solves the problem of executing JavaScript code within Go applications without requiring external dependencies or cgo bindings. It implements ECMAScript 5.1 with emphasis on standard compliance, passing nearly all tc39 test262 tests for implemented features. The engine can run substantial JavaScript projects like Babel and the TypeScript compiler. It supports regular expressions, strict mode, sourcemaps, and most ES6 functionality, though ES6 support remains incomplete.

Goja suits scenarios where JavaScript drives a Go-based engine with frequent bidirectional calls between the two languages, since it avoids the overhead of cgo marshalling that would accompany V8 or SpiderMonkey wrappers. Its pure Go implementation means no external build dependencies and portability across all platforms Go supports, making it valuable for research or controlled execution environments. However, if the bulk of computational work happens in JavaScript rather than at language boundaries, V8 or SpiderMonkey will deliver significantly better performance. The tool is not goroutine-safe; each Runtime instance must be used by a single goroutine, though multiple independent instances can coexist. It does not provide setTimeout or setInterval, as these are not part of the ECMAScript standard; a hosting application must supply concurrency control and these functions if needed.

Development activity shows consistent incremental progress on ES6 feature support tracked through an open milestone, with features being added in dependency order. Known incompatibilities exist around JSON parsing of broken UTF-16 surrogates and Date constructor behavior with integer overflow due to reliance on Go's standard library, which the README explicitly documents.