Rhino 1.5R2
Table of contents
- Graphical debugger
- Footprint reductions
- Interpreted mode performance improvements
- JS/CORBA Adapter
- Directory restructuring and Ant buildfile
- FlattenedObject deprecated
- WrapHandler interface
- ClassOutput interface
This is a log of significant changes since the release of Rhino 1.5 Release 1.
Graphical debugger
Thanks to a contribution by Christopher Oliver, Rhino now has a graphical debugger. See Rhino Debugger for more details.
Footprint reductions
Igor Bukanov has provided a wealth of changes to reduce the number and size of objects required by Rhino. In particular, he introduced a new way to represent the built-in objects like Date and RegExp that reduces the amount of memory required and speeds up Context.initStandardObjects
.
Interpreted mode performance improvements
Igor Bukanov also made a number of improvements to interpreter mode performance.
JS/CORBA Adapter
Matthias Radestock wrote a module that allows JavaScript code to interact with CORBA. See jscorba for more details.
Directory restructuring and Ant buildfile
I’ve restructured the the Rhino directory and written an Ant buildfile. This should make building easier and more consistent with other open source Java projects.
FlattenedObject deprecated
I wrote FlattenedObject to provide a means for dealing with JavaScript objects in prototype chains. Where Scriptable defines the primitive operations, FlattenedObject defines the aggregate operations of manipulating properties that may be defined in an object or in an object reachable by a succession of getPrototype calls. However, I now believe that I designed FlattenedObject poorly. Perhaps it should have been a clue that I was never satisfied with the name: if it’s hard to express the name of the object it may mean the function the object is supposed to fulfill is not well defined either. The problem is that it is inefficient since it requires an extra object creation, and balky because of that extra level of wrapping.
So I’ve checked in changes that deprecate FlattenedObject. I’ve introduced new static methods in ScriptableObject (thanks to beard@netscape.com for the idea) that replace the functionality. These methods perform the get, put, and delete operations on a Scriptable object passed in without the overhead of creating a new object.
WrapHandler interface
Embeddings that wish to provide their own custom wrappings for Java objects may implement this interface and call Context.setWrapHandler. See WrapHandler javadoc.
ClassOutput interface
An interface embedders can implement in order to control the placement of generated class bytecodes. See the javadoc.