| <?php |
| $title = "JavaScript"; |
| include("../../header.inc"); |
| ?> |
| <h2>JavaScript</h2> |
| |
| <h3>Overview</h3> |
| |
| <p>This is the project page for WebKit's JavaScript implementation. |
| JavaScript is the primary programming language used on web pages. Originally named LiveScript and now also known as ECMAScript, |
| it's a safe, dynamic language that's arguably one of the most well-known programming languages in the world. |
| There's a <a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">JavaScript standard</a>, created by ECMA. |
| WebKit's JavaScript engine, JavaScriptCore, based on KJS, is a framework separate from WebCore and WebKit, and is used |
| on Mac OS X for applications other than web page JavaScript.</p> |
| |
| <h3>Get Involved!</h3> |
| |
| <a href="http://bugs.webkit.org/buglist.cgi?product=WebKit&component=JavaScriptCore&resolution=---"> |
| View bugs in the JavaScriptCore component in Bugzilla. |
| </a> |
| |
| <p>Here are some of the tasks that you can get involved with in JavaScript.</p> |
| |
| <dl> |
| <dt>Bytecode Interpreter</dt> |
| <dd>JavaScriptCore currently creates a syntax tree and then uses that syntax tree when executing JavaScript. |
| We'd like to use a bytecode interpreter instead, and if it's done right it will make JavaScript run faster and use less memory.</dd> |
| |
| <dt>Generational Garbage Collector</dt> |
| <dd>The garbage collector in JavaScriptCore has been improved quite a bit from the earliest versions. |
| But much greater efficiency can be achieved with a garbage collector that uses a generational algorithm, |
| so we don't have to mark all the objects every time we garbage collect. This should make JavaScript |
| run significantly faster.</dd> |
| |
| <dt>Elminate Smart Pointer Wrappers</dt> |
| <dd>The KJS programming interface for JavaScript involves smart pointers that wrap the actual JavaScript objects. For example, |
| <tt>KJS::Object</tt> is used to wrap <tt>KJS::ObjectImp</tt>. Since JavaScriptCore now uses conservative garbage collection, the smart pointers |
| aren't needed any more. Our plan is to eliminate <tt>KJS::Object</tt> and rename <tt>KJS::ObjectImp</tt> to <tt>KJS::JSObject</tt>, |
| and do similar things for the other JavaScript value types. Removing this extra |
| struct wrapper should result in better code generation, making the library smaller and JavaScript execution faster.</dd> |
| |
| <dt>Mozilla JavaScript Test Suite</dt> |
| <dd>JavaScriptCore has an implementation of the Mozilla JavaScript Test Suite, and there are currently many failures. |
| Fixing any of those failures would help our JavaScript engine be more compliant with the specification, and more |
| compatible with real-world web sites as well.</dd> |
| |
| <dt>ECMAScript for XML</dt> |
| <dd>The <a href="http://www.ecma-international.org/publications/standards/Ecma-357.htm">E4X standard</a> adds some XML-related |
| features to the JavaScript language. We should consider adding these to the JavaScriptCore engine.</dd> |
| |
| <dt>Language Extensions</dt> |
| <dd>The Mozilla project has begun adding some |
| <a href="http://www.mozilla.org/projects/deerpark/new-web-dev-features.html">extensions to JavaScript</a>. |
| Someone needs to evaluate these and decide which of them we should implement. We should also consider extensions of our own driven by |
| demand in contexts like Dashboard widgets.</dd> |
| |
| <dt>C Language Binding</dt> |
| <dd>JavaScriptCore currently has the original C++ method of binding native code to JavaScript, an Objective-C binding that's exported from WebKit |
| as WebScriptObject, and a browser plug-in oriented C binding. We'd like to create a generic C language binding suitable for use by |
| any project that wants to take advantage of the JavaScript engine, but which is easier to maintain compatibly than a C++ binding.</dd> |
| </dl> |
| |
| <?php |
| include("../../footer.inc"); |
| ?> |