Skip to content

oprs/biwascheme

This branch is 681 commits behind biwascheme/biwascheme:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

12a824f · Feb 11, 2012
Dec 7, 2011
Dec 2, 2011
Oct 3, 2011
Feb 10, 2012
Jan 23, 2012
Jul 28, 2011
Dec 7, 2011
Dec 5, 2011
Dec 2, 2011
Feb 11, 2012
Mar 19, 2009
Dec 2, 2011
Dec 7, 2011
Dec 7, 2011
Dec 3, 2011
Dec 2, 2011
Nov 20, 2011
Dec 7, 2011
Dec 7, 2011

Repository files navigation

BiwaScheme

biwascheme logo

BiwaScheme is a Scheme interpreter written in JavaScript.

Works with web browsers (including mobile devices) and Node.js.

Demos

see http://www.biwascheme.org/

Download

How to use

Just load biwascheme.js (or biwascheme-min.js) and write Scheme code.

<!DOCTYPE html>
<html>
<body>

<div id="bs-console"></div>

<script src="biwascheme.js">
(display "hello, world!")
</script>

</body>
</html>

How to use with node.js to run a biwa script

  1. $ npm install biwascheme

  2. create a file a.scm:

    (display "Hello, world!") (newline)

  3. $ biwas a.scm

How to use from inside node.js as a module

  1. $ npm install biwascheme

  2. create a file server.js:

    var BiwaScheme = require("biwascheme"); BiwaScheme.run("(+ 1 2)"); // or // BiwaScheme.run_file("a.scm");

  3. $ node server.js

Files

  • release/
    • the following files are generated here with $ make
      • biwascheme.js
      • biwascheme-min.js
      • node_biwascheme.js
  • demo/
    • Demos
  • src/
    • deps/
      • Dependencies (jQuery, underscore)
    • system/
      • Source code of the interpreter
    • library/
      • Built-in library functions
    • platform/
      • Platform dependent code (browser, node, etc.)
  • test/
    • Unit tests
  • tuplespace/
    • (experimental) TupleSpace implemented in Scheme
  • web/
  • www.biwascheme.org.js
    • web server

Building biwascheme.js

Prerequisites:

  • make
  • sed
  • node (Node.js)
  • uglifyjs ($ npm install uglify-js -g)

Make compiles src/*.js into release/biwascheme.js.

$ make

Links

Development memos

How to add a new file

  • edit Makefile
  • edit src/development_loader.js

How to release

TODO: fix this after migration to Heroku

  1. Edit History.txt
  2. Edit VERSION
  3. Edit node_modules/biwascheme/package.json
  4. $ make -B
  5. Make sure it is working:
    • run tests
      • open test/spec.html
      • open test/spec.html#release
      • open test/spec.html#min
      • run test/browser_functions/
    • run demos
      • demo/*
      • open repl.html
      • open website/i.html
      • open test/tracer.html
      • open test/tracer_auto.html
    • try npm package
      • $ npm install node_modules/biwascheme/ -g
      • $ biwas -v
  6. Commit and create tag ($ git tag x.y.z)
  7. Push changes to github with --tags
  8. Update website on web server (git pull)
  9. Publish npm package
  • $ npm publish node_modules/biwascheme/
  1. Copy generated files (release/*.js, src/version.js) to web server
  • copy src/deps/underscore(.string).js, too

How to upgrade dependencies

jQuery:

  • update src/deps/jquery.js

underscore:

  • update src/deps/underscore.js
  • update node_modules/biwascheme/package.json

underscore.string:

  • update src/deps/underscore.string.js
  • update node_modules/biwascheme/package.json

Website

www.biwascheme.org is (going to be) hosted by Heroku.

Files for website is stored in the branch 'website'. This is almost same as master, but:

  • contains compiled release/*.js and src/version.js
  • contains Procfile for Heroku cedar
  • has different package.json for Heroku
  • has different favicon.ico (master: black, website: white)

Run local website

You can run the website locally with Node and express.

$ make
$ npm install
$ node www.biwascheme.org.js
$ open http://localhost:7001

Interesting SRFIs

Partially implemented:

  • 1 list libraries
  • 13 string libraries
  • 19 time
  • 38 (write-with-shared-structure)
  • 43 vector libraries

Not yet:

  • 26 (cut)
  • 39 (parameterize) is it identical to the one in R7RS?

Maybe:

  • 41 stream
  • 42 (list-ec)
  • 44 collection
  • 48 (format) (intermediate, ~d, ~b, etc.)
  • 78 (check) -> list-ec
  • 88 keyword (like 'test:')

License

MIT-LICENSE

Acknowledgements

Contact

https://github.com/biwascheme/biwascheme

Yutaka HARA (yhara) yutaka.hara.gmail.com http://twitter.com/yhara_en

About

A practical Scheme interpreter writtern in JavaScript

Resources

License

Stars

Watchers

Forks

Packages

No packages published