- Difficulty: Hard
- Duration: 350 hours
- Required Skills: Rust, memory management, data structures
- Preferred Skills: Garbage collection algorithms, language runtimes
Boa currently uses a prototype garbage collector, with experimental work happening in the separate Oscars repository. While functional, the GC architecture needs significant redesign to better support performance, maintainability, and future language features.
This project focuses on evaluating, refining, and integrating a production-ready garbage collector into Boa.
- Analyze the current GC design and limitations
- Improve or redesign the GC architecture (e.g. tracing strategy, allocation model, rooting)
- Integrate the improved GC into Boa’s runtime
- Add stress tests and benchmarks for GC behavior
- Produce documentation explaining the design and trade-offs
- Incremental or generational GC strategies
- GC-aware optimizations in the VM
- Tooling to visualize heap and GC activity
Matrix Boa/GC Matrix Boa/General
- Difficulty: Medium
- Duration: 175–200 hours
- Required Skills: Rust, API design
- Preferred Skills: SemVer, library maintenance, documentation
Boa is approaching its 1.0 release. A key requirement for this milestone is ensuring that our public APIs are well-defined, intentional, and stable, as breaking changes become significantly more costly after 1.0. This project focuses on auditing Boa’s public API surface, identifying areas that may cause long-term maintenance or compatibility issues, and helping prepare the engine for a stable 1.0 release.
- Identify and document all public-facing APIs (types, traits, functions, feature flags)
- Review APIs for stability, consistency, and long-term viability
- Propose improvements or refactors to reduce future breaking changes
- Help resolve or unblock remaining items needed for the 1.0 milestone
- Improve documentation around public APIs and versioning guarantees
- Introduce tooling or CI checks to detect accidental public API changes
- Improve feature gating or visibility (pub vs pub(crate)) across the codebase
- Assist in defining Boa’s post-1.0 stability and deprecation policy
- Difficulty: Medium–Hard
- Duration: 175–350 hours
- Required Skills: Rust, profiling, algorithms
- Preferred Skills: Compiler or VM internals, benchmarking
Performance is a core goal of Boa. While already competitive in many areas, there are clear opportunities to improve execution speed, memory usage, and startup time.
This project focuses on identifying performance bottlenecks and implementing targeted optimizations across the VM, bytecode execution, and runtime systems.
- Much improved results on boajs.dev/benchmarks
- Identify high-impact performance bottlenecks
- Implement measurable optimizations (e.g. faster bytecode dispatch, improved data structures)
- Add or improve benchmarks to prevent regressions
- Document performance changes and results
- Reduced allocation pressure and memory churn
- Improve documentation and tooling for profiling and benchmarking
- Difficulty: Medium
- Duration: 175 hours
- Required Skills: Rust, reading specifications
- Preferred Skills: JavaScript engine internals
Boa already performs well on ECMAScript conformance tests, but maintaining and improving compliance is an ongoing effort as the specification evolves.
This project focuses on closing remaining gaps, improving correctness in edge cases, and strengthening test coverage.
- Identify areas where Boa diverges from the ECMAScript specification
- Implement missing or partially compliant features
- Improve or expand test coverage
- Reduce known test failures and inconsistencies
- Document tricky or non-obvious spec decisions
- Focus on a specific ECMAScript feature set (e.g. async, modules, Intl groundwork)
- Improve error reporting and diagnostics for spec failures
- Difficulty: Medium
- Duration: 175 hours
- Required Skills: Rust, tooling, debugging
- Preferred Skills: Runtime diagnostics, profiling tools
As Boa grows, better tooling is needed to understand and debug engine behavior. This project focuses on improving observability for developers working on the engine.
- Improve logging and diagnostics in the VM and runtime
- Add optional tracing or debug modes
- Improve internal metrics (allocation counts, GC timing, bytecode execution stats)
- Document tooling for contributors and users
- Debug-friendly execution modes
- Performance and memory visualization tooling
- Integration with existing Rust profiling tools