All Projects → ekmett → Cadenza

ekmett / Cadenza

Licence: other
every day i'm truffling

Programming Languages

kotlin
9241 projects

cadenza

Travis Continuous Integration Status Most used language

This package will eventually provide a normalized-by-evaluation lambda calculus implementation in Java Kotlin using truffle with an eye towards efficient evaluation.

cadenza | \ kə-ˈden-zə \ (noun) 1. a considerably long virtuosic solo section before the final coda used to display a performer's technique

Kotlin code tends to be considerably long, if not so long as the Java code I started this project with.

Running

Ensure JAVA_HOME points to a JDK 11 instalation.

  • gradle run will run the launcher out of the local directory without installing anything.

Installing

  • gradle distZip or gradle distTar will create an archive containing the required runtime jars. However, you'll need to have JAVA_HOME set to point to your Graal installation, if you want to use the cadenza script from the installation folder.

TODO

This code is very much a work-in-progress.

  • The intention is to support an eval-apply execution model, which is a bit strange in the ecosystem of truffle languages. A lot of work is going into trying to figure out how to make that efficient.

  • I'm hopeful that I can use truffle rewrites to dynamically trampoline tail-calls, degrading tail positions from a set of recursive calls, to something that handles self-tailcalls, to something that handles self-tailcalls with differing environments to something that does an arbitrary trampoline for the worst case. This would enable us to trust the space usage.

  • Currently, Normalization-by-evaluation proceeds through an exceptional control flow path. It is worth noting this is basically completely irrelevant if we're seeking "just a better Haskell runtime" but it is pretty important for dependent types. Different ways to pass around neutral values should probably be explored.

Windows XP

In the unlikely event that anybody cares about this project that also uses Windows XP, one of the dependencies used for color pretty printing depends on the "Microsoft Visual C++ 2008 SP1 Redistributable" when invoked on Windows.

You can get a free copy from MS at:

http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=5582

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be licensed as per LICENSE.txt, without any additional terms or conditions.

Contact Information

Contributions and bug reports are welcome!

Please feel free to contact me through github or on the ##coda or #haskell IRC channels on irc.freenode.net.

-Edward Kmett

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].