This page contains resources for developing SLIME itself.

Low-level structure

SLIME Runtime (loader/expression.js)

SLIME Java runtime

Shell: jsh

Launcher documentation

Loader documentation


All tests can be run via contributor/suite.jsh.js. Tomcat is installed into the shell automatically so that browser tests run.
The suite runs a set of low-level tests using all Java engines that are present. It then runs a set of higher-level tests only using the default engine.


Built jsh shells

./jsh.bash jsh/test/tools/run-in-built-shell.jsh.js script [arguments].

Remote jsh shells

See jsh.test.provision.

Manual testing required


jrunscript rhino/jrunscript/api.js jsh jsh/tools/provision/test/server.jsh.js
Test: copy and paste the Testing (standard) output and make sure it produces a Hello, World message.
Testing private repositories requires the private slime-kit repository, and can be invoked as follows:
-repository:name slime-kit -repository:location directory where slime-kit is located -repository:script test/provision-script.jsh.js -password password for server to use for davidpcaldwell

Google Chrome integration

  • profile
  • app
  • close [-exitOnClose]: allows testing the detection of Google Chrome closing. On OS X, the -exitOnClose flag will attempt to terminate Chrome when the last window for the user data directory closes. Upon closure, a message will be printed to the console announcing Chrome has closed.


Work In Progress

loader/document (HTML parsing)

Goal would be to replace DOM in loader/browser/test/api.js and JaspiHtml in jsh/unit/html.js; this feeds into loader/api/api.html.js as the html argument to ApiHtmlTests.
First step should be to build an adapter at loader/api/document-adapter.js that converts a loader/document document into a JSAPI-compatible html object. An additional property can be added to jsh/unit/html.js PartDescriptor argument to specify the creation of this new kind of document in loadApiHtml().
Test case which runs the above scenario: ./jsh.bash loader/document/test/suite.jsh.js -experimental -part document
An equivalent browser migration for replacing the JSAPI DOM in loader/browser/test/api.js is then needed.



Source-level parser