manuel/wat-js
{ "createdAt": "2012-07-21T18:44:20Z", "defaultBranch": "master", "description": "Concurrency and Metaprogramming for JS", "fullName": "manuel/wat-js", "homepage": "", "language": "JavaScript", "name": "wat-js", "pushedAt": "2018-01-30T17:49:16Z", "stargazersCount": 262, "topics": [], "updatedAt": "2025-10-07T02:47:16Z", "url": "https://github.com/manuel/wat-js"}Concurrency and Metaprogramming for JS
Section titled “Concurrency and Metaprogramming for JS”Wat is a tiny language with powerful concurrency and metaprogramming features for embedding in JavaScript programs.
-
Delimited continuations http://www.cs.indiana.edu/~dyb/pubs/monadicDC.pdf
-
Delimited dynamic binding http://okmij.org/ftp/papers/DDBinding.pdf
-
First-class lexical environments and fexprs http://www.wpi.edu/Pubs/ETD/Available/etd-090110-124904/unrestricted/jshutt.pdf
-
First-order control (sequential, conditional, loop, throw, catch, finally) running on JS stack
-
Interop with JavaScript objects, functions, and callbacks
-
JSON-based bytecode for embedding Wat code in JavaScript
Wat is developed by Manuel Simoni (msimoni@gmail.com).
Browser
Section titled “Browser”<html><head> <script type="text/javascript" unsrc="./build/wat.js"></script></head><body> <script type="text/javascript"> var vm = wat.vm(); console.log(vm.eval("(+ 1 2)")); </script></body></html>Node.js
Section titled “Node.js”> var vm = require("./build/wat").vm();> vm.eval("(+ 1 2)");3More documentation upcoming!
Section titled “More documentation upcoming!”For now, follow http://axisofeval.blogspot.com/search/label/wat and/or https://twitter.com/msimoni for updates.