Roadmap
Limin Zhu edited this page Jan 13, 2017
·
41 revisions
Pages 168
- Home
- Architecture Overview
- Build Status
- Build Status (release 1.2)
- Build Status (release 1.3)
- Build Status (release 1.4)
- Build Status (release 2.0 pre)
- Building ChakraCore
- ChakraCore Code Structure
- Coding Convention
- Embedding ChakraCore
- External Issues
- JavaScript Runtime (JSRT) Overview
- JavaScript Runtime (JSRT) Reference
- Jenkins Build Triggers
- Jenkins CI Checks
- Jenkins Repro Steps
- JS_INVALID_REFERENCE
- JS_INVALID_RUNTIME_HANDLE
- JS_SOURCE_CONTEXT_NONE
- JsAddRef
- JsBackgroundWorkItemCallback
- JsBeforeCollectCallback
- JsBooleanToBool
- JsBoolToBoolean
- JsCallFunction
- JsCollectGarbage
- JsConstructObject
- JsContextRef
- JsConvertValueToBoolean
- JsConvertValueToNumber
- JsConvertValueToObject
- JsConvertValueToString
- JsCopyPropertyIdUtf8
- JsCopyString
- JsCopyStringUtf16
- JsCopyStringUtf8
- JsCreateArray
- JsCreateArrayBuffer
- JsCreateContext
- JsCreateDataView
- JsCreateError
- JsCreateExternalArrayBuffer
- JsCreateExternalObject
- JsCreateFunction
- JsCreateNamedFunction
- JsCreateObject
- JsCreatePropertyIdUtf8
- JsCreateRangeError
- JsCreateReferenceError
- JsCreateRuntime
- JsCreateString
- JsCreateStringUtf16
- JsCreateStringUtf8
- JsCreateSymbol
- JsCreateSyntaxError
- JsCreateTypedArray
- JsCreateTypeError
- JsCreateURIError
- JsDefineProperty
- JsDeleteIndexedProperty
- JsDeleteProperty
- JsDisableRuntimeExecution
- JsDisposeRuntime
- JsDoubleToNumber
- JsEnableRuntimeExecution
- JsEquals
- JsErrorCode
- JsFinalizeCallback
- JsGetAndClearException
- JsGetArrayBufferStorage
- JsGetContextData
- JsGetContextOfObject
- JsGetCurrentContext
- JsGetDataViewStorage
- JsGetExtensionAllowed
- JsGetExternalData
- JsGetFalseValue
- JsGetGlobalObject
- JsGetIndexedPropertiesExternalData
- JsGetIndexedProperty
- JsGetNullValue
- JsGetOwnPropertyDescriptor
- JsGetOwnPropertyNames
- JsGetOwnPropertySymbols
- JsGetProperty
- JsGetPropertyIdFromName
- JsGetPropertyIdFromSymbol
- JsGetPropertyIdType
- JsGetPropertyNameFromId
- JsGetPrototype
- JsGetRuntime
- JsGetRuntimeMemoryLimit
- JsGetRuntimeMemoryUsage
- JsGetStringLength
- JsGetSymbolFromPropertyId
- JsGetTrueValue
- JsGetTypedArrayInfo
- JsGetTypedArrayStorage
- JsGetUndefinedValue
- JsGetValueType
- JsHasException
- JsHasExternalData
- JsHasIndexedPropertiesExternalData
- JsHasIndexedProperty
- JsHasProperty
- JsIdle
- JsInstanceOf
- JsIntToNumber
- JsIsRuntimeExecutionDisabled
- JsMemoryAllocationCallback
- JsMemoryEventType
- JsNativeFunction
- JsNumberToDouble
- JsNumberToInt
- JsObjectBeforeCollectCallback
- JsParse
- JsParseScript
- JsParseScriptAttributes
- JsParseScriptWithAttributes
- JsParseSerialized
- JsParseSerializedScript
- JsParseSerializedScriptWithCallback
- JsPointerToString
- JsPreventExtension
- JsPromiseContinuationCallback
- JsPropertyIdRef
- JsPropertyIdType
- JsRef
- JsRelease
- JsRun
- JsRunScript
- JsRunSerialized
- JsRunSerializedScript
- JsRunSerializedScriptWithCallback
- JsRuntimeAttributes
- JsRuntimeHandle
- JsSerialize
- JsSerializedLoadScriptCallback
- JsSerializedScriptLoadSourceCallback
- JsSerializedScriptUnloadCallback
- JsSerializeScript
- JsSetContextData
- JsSetCurrentContext
- JsSetException
- JsSetExternalData
- JsSetIndexedPropertiesToExternalData
- JsSetIndexedProperty
- JsSetObjectBeforeCollectCallback
- JsSetPromiseContinuationCallback
- JsSetProperty
- JsSetPrototype
- JsSetRuntimeBeforeCollectCallback
- JsSetRuntimeMemoryAllocationCallback
- JsSetRuntimeMemoryLimit
- JsSourceContext
- JsStrictEquals
- JsStringToPointer
- JsThreadServiceCallback
- JsTypedArrayType
- JsValueRef
- JsValueType
- Label Glossary
- NuGet Packages
- Release Notes
- Resources
- Roadmap
- Software Write Barrier
- Show 153 more pages…
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
-
Node.js
- Update Node.js+ChakraCore to include ChakraCore 1.4
- Implement V8 debug protocol in the Node.js ChakraShim to enable debugging using VS Code.
- Support Chrome Debug Protocol in Node-ChakraCore.
-
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)
- Symbol.hasInstance
- Symbol.toPrimitive (under experimental features)
- Symbol.toStringTag
- Symbol.isConcatSpreadable
- 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.
Engineering Improvements
- Introduce C++ unit testing mechanism using Catch
- Move JSRT API unit tests from internal testing mechanism to new framework
- Enable easier authoring of JavaScript built-ins in JavaScript.
Releases
See Release Notes for notes on published releases.