JavaScript:Home Page: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(Add start-up cache project.)
(Switch to spidermonkey out-dated)
 
(8 intermediate revisions by 6 users not shown)
Line 1: Line 1:
JavaScript language and implementation plans go here.  For background, see:
{{OutdatedSpiderMonkey}}


* [[JavaScript:New to SpiderMonkey|"So you're new to SpiderMonkey"]] is a guide for new contributors to the JavaScript engine.
The primary project page for SpiderMonkey has moved to ''[[JavaScript|JavaScript]]''.
* The [http://www.mozilla.org/js/language Mozilla JS language] page.
* The [http://www.ecmascript.org/ ECMAScript (ES) language] site.
* [http://developer.mozilla.org/en/docs/SpiderMonkey SpiderMonkey pages] at the [http://developer.mozilla.org Mozilla Developer Network].
* [http://developer.mozilla.org/en/docs/JavaScript JavaScript pages] at the [http://developer.mozilla.org Mozilla Developer Network].


== Hackers ==
== Tracked Projects  ==
 
* [[JavaScript:Hackers|JavaScript engine hackers and areas of expertise]]
 
== Guidelines ==
 
* [[JavaScript:SpiderMonkey:Coding_Style|SpiderMonkey coding style guide]]
* [[JavaScript:Bug Triage Tags|Bug Triage Tags]]


== Benchmarks ==
We have [[JavaScript:SpiderMonkey:LongTermPlans|long-term inchoate plans]] for how SpiderMonkey will technically evolve.  Historically these plans have been "tribal" knowledge, communicated during the design process of other patches, or during reviews.  Now we're trying to actually document them.  Documentation of these plans says nothing about the schedule for when these changes will happen.  It could be sooner, it could be later.  It will depend on the particular plan, its invasiveness, whether it is a natural step (or slight tangent) in the fixing of some other issue of importance, and so on.


* [[Benchmark Intro]]
We also track a variety of (typically) shorter-term projects. These projects are likely to be fixed sooner than the rather-vaguer plans referenced above.  They typically have a project plan with milestones, tasks, and owners.
* [[Sunspider Info]]
* [[V8bench Info]]
* [[Kraken Info]]
 
== Tracked Projects ==
 
Projects here have a project plan with milestones, tasks, and owners.


*[[Javascript:SpiderMonkey:ProjectGenerationGarbageCollection|Generational Garbage Collection]]: General Garbage Collection project plan and milestone.
*[[Javascript:SpiderMonkey:ProjectGenerationGarbageCollection|Generational Garbage Collection]]: General Garbage Collection project plan and milestone.
*[[Javascript:SpiderMonkey:OdinMonkey|OdinMonkey]]: OdinMonkey project plan and milestone.
*[[Javascript:SpiderMonkey:OdinMonkey|OdinMonkey]] (asm.js compiler): OdinMonkey project plan and milestone.
*[[Javascript:SpiderMonkey:PropertyElementStorage|Property Element Storage]]: Property and Element Storage project plan and milestone.
*[[Javascript:SpiderMonkey:PropertyElementStorage|Property Element Storage]]: Property and Element Storage project plan and milestone.
*[[Javascript:SpiderMonkey:Debugging|Debugging]]: Debugging JavaScript, in web content (both desktop and mobile) and in chrome (add-ons and Firefox itself)
*[[Javascript:SpiderMonkey:Debugging|Debugging]]: Debugging JavaScript, in web content (both desktop and mobile) and in chrome (add-ons and Firefox itself)
*[[Javascript:SpiderMonkey:StackSnapshots|Stack Snapshots]]: Lightweight records of where errors occurred, where event handlers were registered, and so on.
*[[Javascript:SpiderMonkey:StackSnapshots|Stack Snapshots]]: Lightweight records of where errors occurred, where event handlers were registered, and so on.
*[[Javascript:SpiderMonkey:HeapProfiling|Heap Profiling]]: Integrated tools for tracking memory use, finding leaks, and so on.
*[[Javascript:SpiderMonkey:HeapProfiling|Heap Profiling]]: Integrated tools for tracking memory use, finding leaks, and so on.
*[[https://wiki.mozilla.org/Javascript:SpiderMonkey:StartupCache|Start-up Cache]]: Improve start-up time JavaScript for Gaia applications.
*[[Javascript:SpiderMonkey:StartupCache|Start-up Cache]]: Improve start-up time JavaScript for Gaia applications.
*[[Web Browser Grand Prix]]: Optimize for Tom's Hardware Guide's "Web Browser Grand Prix" (WBGP) benchmarks.


== Active Projects  ==
== Active Projects  ==
Line 39: Line 22:
*[[Javascript:SpiderMonkey:ExactStackRooting|Exact Stack Rooting]]: Conservative rooting has a number of well known downsides.
*[[Javascript:SpiderMonkey:ExactStackRooting|Exact Stack Rooting]]: Conservative rooting has a number of well known downsides.
*[http://bugzilla.mozilla.org/show_bug.cgi?id=608741 Type Inference]: perform hybrid dynamic/static analysis of JavaScript code to provide better type/invariant information to the JIT compiler
*[http://bugzilla.mozilla.org/show_bug.cgi?id=608741 Type Inference]: perform hybrid dynamic/static analysis of JavaScript code to provide better type/invariant information to the JIT compiler
*[[Javascript:SpiderMonkey:BaselineCompiler|Baseline Compiler]]: New Baseline JIT to replace Interperter+JM.
*[[Javascript:SpiderMonkey:BaselineCompiler|Baseline Compiler]]: New Baseline JIT to replace Interpreter+JM.
*[[IonMonkey|IonMonkey]]: upgrade current JIT compiler with classic SSA-based compiler techniques to allow better optimization of JIT code
*[[IonMonkey|IonMonkey]]: upgrade current JIT compiler with classic SSA-based compiler techniques to allow better optimization of JIT code
*[[JS engine modularization]]: incremental long-term project to modularize JS engine source code.
*[[JS engine modularization]]: incremental long-term project to modularize JS engine source code.
Line 57: Line 40:
* [http://developer.mozilla.org/en/docs/Rhino Rhino documentation at MDC]. Rhino is an implementation of JavaScript in Java.
* [http://developer.mozilla.org/en/docs/Rhino Rhino documentation at MDC]. Rhino is an implementation of JavaScript in Java.


== Blue Sky ==
== Benchmarks ==


* [[JavaScript:JS3 Requirements|JS3 Requirements]]
* [[Benchmark Intro]]
* [[Sunspider Info]]
* [[V8bench Info]]
* [[Kraken Info]]


== References ==
== References ==


* [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Language_Resources ECMAScript language specifications]
* "[http://www.cs.kent.ac.uk/people/staff/rej/gcbook/gcbook.html Garbage Collection: algorithms for automatic dynamic memory management]", by Richard Jones, is a comprehensive reference book about different garbage collection algorithms.
* "[http://www.cs.kent.ac.uk/people/staff/rej/gcbook/gcbook.html Garbage Collection: algorithms for automatic dynamic memory management]", by Richard Jones, is a comprehensive reference book about different garbage collection algorithms.
* Also Richard Jones's webpage has a collection of [http://www.cs.kent.ac.uk/people/staff/rej/gc.html references].
* Also Richard Jones's webpage has a collection of [http://www.cs.kent.ac.uk/people/staff/rej/gc.html references].
* Several conferences where most memory management papers go: [http://portal.acm.org/browse_dl.cfm?linked=1&part=series&idx=SERIES858&coll=portal&dl=ACM&CFID=43281450&CFTOKEN=59448574 ISMM], [http://portal.acm.org/browse_dl.cfm?linked=1&part=series&idx=SERIES363&coll=portal&dl=ACM&CFID=43281450&CFTOKEN=59448574 PLDI], [http://portal.acm.org/browse_dl.cfm?linked=1&part=series&idx=SERIES318&coll=portal&dl=ACM&CFID=43281450&CFTOKEN=59448574 OOPSLA], [http://portal.acm.org/browse_dl.cfm?linked=1&part=series&idx=SERIES11259&coll=portal&dl=ACM&CFID=43281450&CFTOKEN=59448574, VEE].
* Several conferences where most memory management papers go: [http://portal.acm.org/browse_dl.cfm?linked=1&part=series&idx=SERIES858&coll=portal&dl=ACM&CFID=43281450&CFTOKEN=59448574 ISMM], [http://portal.acm.org/browse_dl.cfm?linked=1&part=series&idx=SERIES363&coll=portal&dl=ACM&CFID=43281450&CFTOKEN=59448574 PLDI], [http://portal.acm.org/browse_dl.cfm?linked=1&part=series&idx=SERIES318&coll=portal&dl=ACM&CFID=43281450&CFTOKEN=59448574 OOPSLA], [http://portal.acm.org/browse_dl.cfm?linked=1&part=series&idx=SERIES11259&coll=portal&dl=ACM&CFID=43281450&CFTOKEN=59448574, VEE].
* [[JavaScript:Bug Triage Tags|Bug Triage Tags]]

Latest revision as of 21:00, 27 April 2021

Ambox outdated.png THIS PAGE IS OBSOLETE
This article is in parts, or in its entirety, outdated. Hence, the information presented on this page may be incorrect, and should be treated with due caution. Visit SpiderMonkey.dev for more up to date information.

The primary project page for SpiderMonkey has moved to JavaScript.

Tracked Projects

We have long-term inchoate plans for how SpiderMonkey will technically evolve. Historically these plans have been "tribal" knowledge, communicated during the design process of other patches, or during reviews. Now we're trying to actually document them. Documentation of these plans says nothing about the schedule for when these changes will happen. It could be sooner, it could be later. It will depend on the particular plan, its invasiveness, whether it is a natural step (or slight tangent) in the fixing of some other issue of importance, and so on.

We also track a variety of (typically) shorter-term projects. These projects are likely to be fixed sooner than the rather-vaguer plans referenced above. They typically have a project plan with milestones, tasks, and owners.

  • Generational Garbage Collection: General Garbage Collection project plan and milestone.
  • OdinMonkey (asm.js compiler): OdinMonkey project plan and milestone.
  • Property Element Storage: Property and Element Storage project plan and milestone.
  • Debugging: Debugging JavaScript, in web content (both desktop and mobile) and in chrome (add-ons and Firefox itself)
  • Stack Snapshots: Lightweight records of where errors occurred, where event handlers were registered, and so on.
  • Heap Profiling: Integrated tools for tracking memory use, finding leaks, and so on.
  • Start-up Cache: Improve start-up time JavaScript for Gaia applications.
  • Web Browser Grand Prix: Optimize for Tom's Hardware Guide's "Web Browser Grand Prix" (WBGP) benchmarks.

Active Projects

  • Exact Stack Rooting: Conservative rooting has a number of well known downsides.
  • Type Inference: perform hybrid dynamic/static analysis of JavaScript code to provide better type/invariant information to the JIT compiler
  • Baseline Compiler: New Baseline JIT to replace Interpreter+JM.
  • IonMonkey: upgrade current JIT compiler with classic SSA-based compiler techniques to allow better optimization of JIT code
  • JS engine modularization: incremental long-term project to modularize JS engine source code.

Retired Projects

Benchmarks

References