Skip to content
/ braid Public

a multi-stage heterogeneous programming language applied to real-time 3D graphics

License

Notifications You must be signed in to change notification settings

cucapra/braid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f595276 · Feb 21, 2019
Feb 21, 2019
Jul 8, 2017
Jan 28, 2018
Jun 23, 2018
Apr 26, 2018
Jun 22, 2018
Jun 23, 2018
Aug 11, 2017
Feb 21, 2018
Oct 28, 2017
Apr 15, 2018
Aug 11, 2017
Mar 23, 2017
Mar 8, 2018
Mar 9, 2018
Jul 11, 2017
Jan 28, 2018
Nov 25, 2017
May 4, 2017
Jun 22, 2018
Jul 8, 2017
Jul 6, 2017
Nov 25, 2017
Jul 11, 2017

Repository files navigation

Braid: a Static Staging Compiler

build status

Braid is an experimental programming language for heterogeneous systems based on multi-stage programming. See the documentation for an introduction to the language.

The compiler is written in TypeScript and runs on Node. You can build the compiler and run a few small programs by typing make test (if you have npm). Check out the code documentation for an introduction to the compiler's internals.

Using and Hacking

To get started, make sure you have Node and clone the repository. The included Makefile should build everything, or you can type these commands to use npm to get things ready:

$ npm install
$ npm run build

The latter produces the parser and compiles the source code with TypeScript's tsc command. Then, you might want to run:

$ npm link

to install an alias to the braid command. Then, type:

$ braid --help

to see some options. In particular, run braid example.ss to interpret programs; run braid -c example.ss to compile programs to JavaScript; and run braid -cx example.ss to compile programs and then execute the resulting JavaScript.

Credits

This is a project of Capra at Cornell. The license is MIT.

Adrian Sampson started this project in collaboration with Kathryn S McKinley and Todd Mytkowicz at Microsoft Research, where it was released as open source. It has since been improved by Richie Henwood, Eric Lin, and Yiteng Guo.