Clone this wiki locally
This is a living document. It describes the priorities as they exist today and will evolve over time.
All the changes done in the public repository flow into Chakra and Microsoft Edge on a regular basis as described in the Contribution guidelines. The following is a summary of the ChakraCore team's backlog for the next 6 months. Last updated 1/12/17.
Enhancing Host & Platform Support
Cross-platform: (See #111: [Discussion] Linux / Cross-platform planning.) An implementation of ChakraCore interpreter and runtime on Linux, targeting x64 Ubuntu 16.04 LTS and Clang 3.8+
- Get GC host app to build and run (no concurrency and no partial collections)
- Get lib\runtime\base directory to compile
- Get lib\Parser to compile
- Get lib\runtime\bytecode directory to compile
- Get lib\runtime\library directory to compile
- Get lib\runtime\language directory to compile, rewrite assembly portions
- Make it link on Linux
Make it run and pass unit tests on Linux
- Run hello world
- Run tests in the Basics directory
- Run Date-related unit tests
- Run Exception/Stack-walking related unit tests
- Run benchmarks
- Pass all unit tests
- Enable Jenkins CI support for Linux
- Build and pass unit tests on OS X
- Enable Jenkins CI support for OS X
- Match node-chakracore on xplat
- Enable Intl on xplat
- Match Windows-ChakraCore on test262
- Enable profiling interpreter on xplat
- Enable dynamic interpreter thunks on xplat
- Enable JIT on xplat
- Implement broader software-based write barrier support in the GC
- Enable concurrent GC on xplat
- Enable partial GC on xplat
- Ensure xplat perf is fully on par with Windows
Language Innovation & Standards
- Begin decoding WebAssembly post-order binary format and converting to ASM.JS bytecode
- 0xB format
- 0xC format
- 0xD format
- Complete module implementation (ES6)
- Eval support in default parameter list (ES6)
- Well-known symbols: (ES6)
- Prototype shared memory and atomics (ESNext)
- Regex Buffet (ESNext)
- RegExp named capture groups
- RegExp lookbehind
- Object.getOwnPropertyDescriptors (ESNext)
Performance - Staying Fast and Lean
- Implement ability to "re-defer" functions and pitch byte code for already JITted functions.
- Determine closure captures precisely in the presence of deferred functions.
- Identify legal re-deferral candidates.
- Put function in deferred state and change entry point.
- Design heuristics
Diagnostics & Tooling Enhancements
- Merge JsRTDebugging branch to master. This branch contains an implementation of flat C debugging APIs following the existing JSRT pattern that can easily be bridged to the V8 debug protocol.
Integrate Time Travel Debugging implementation into master
- Review and agree on JSRT API shape
- Enhance the Node.js ChakraShim to enable TTD recording of Node.js and playback using ch.exe.
- Introduce C++ unit testing mechanism using Catch
- Move JSRT API unit tests from internal testing mechanism to new framework
See Release Notes for notes on published releases.