0.17.0 • Published 3 years ago

shen-script v0.17.0

Weekly downloads
3
License
BSD-3-Clause
Repository
github
Last release
3 years ago

Shen Version Build Status Docs Status npm

Shen for JavaScript

An implementation of the Shen Language by Mark Tarver for JavaScript. Full documentation can be viewed at shenscript.readthedocs.io.

Features

  • Allows integration with arbitrary I/O.
  • Async operations are transparent to written Shen code.
  • Easy interop: JS can be called from Shen, Shen can be called from JS.
  • Fairly small production webpack bundle (~370KB uncompressed, ~60KB gzip compressed).
  • Decent web startup time (~50ms in Chromium, ~100ms in Firefox).

Prerequisites

Requires recent version (10+) of Node.js and npm.

Works in most modern browers (Chromium, Firefox, Safari and Edge).

Building and Testing

First, run npm install as you would with any other Node project. Then run the following scripts build and test the project. Steps need to be run in order - steps after fetch-kernel won't work if the kernel hasn't been fetched.

ScriptDescription
test-backendRuns mocha tests for the basic environment and compiler.
fetch-kernelDownloads the kernel sources from shen-sources to kernel/.
render-kernelTranslates the kernel sources to JavaScript and stores under kernel/js/.
test-kernelRuns the test suite that comes with the Shen kernel.
test-frontendRuns mocha tests for helper and interop functions.
bundle-devApplies babel transforms and webpack's into web-deployable bundle.
bundleBuilds bundle in production mode.
bundle-minBuilds minified production bundle.
bundlesGenerates all bundles.
lintIf you make changes, run lint to check adherence to style and code quality.

Running

Demo Page

Run npm start to start webpack watch or npm run bundle-dev to do a one-time build.

If you open index.html in your browser a basic webpage will load, and when ready, it will display the load time. (The production webpack bundle does not automatically create a Shen environment and does not log anything.) index.html should be viewable without hosting in a web server, but you will not be able to use the load function to load additional Shen code if opened from a relative file:// path. http-server is adequate for hosting in a web server.

If you open the JavaScript console in the developer tools, it is possible to access to the $ global object and execute commands:

$.exec("(+ 1 1)").then(console.log);

Chaining the then call is necessary because exec will return a Promise. For more information refer to the documentation.

REPL

Run npm run repl to run a command-line REPL. It should have the same behavior as the shen-cl REPL. node. functions will be available. Run (node.exit) to exit the REPL.

Neither command-line options nor the launcher kernel extension are implemented. ShenScript is not intended to take the form of a standalone executable.

0.17.0

3 years ago

0.16.0

4 years ago

0.15.0

4 years ago

0.14.0

5 years ago

0.13.0

5 years ago

0.12.0

5 years ago

0.11.0

5 years ago

0.10.0

5 years ago

0.9.0

5 years ago