The Jam Programming Language
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
compiler
docs
examples
test
.coveragerc
.gitignore
.travis.yml
LICENSE
Makefile
README.md
conftest.py
jam

README.md

Jam

lets Jam!

Join the chat at https://gitter.im/pektin/jam Build Status Coverage Status

Jam is a general purpose programming language that tries to combine the advantages of dynamic, interpreted programming languages with those of static, compiled ones.

See the website for more information.

Currently the compiler is being written in python, speed being a secondary concern. The plan is to bootstrap the compiler once the language is capable.

Dependencies

The compiler currently requires Python 3.4, the llvm-3.6 shared library and clang-3.6

Ubuntu (< 14.04 Trusty Tahr)

See http://llvm.org/apt/ for instructions on how to set up your system to fetch the llvm 3.6 packages, then follow instructions for newer Ubuntu versions.

Ubuntu (>= 14.04 Trusty Tahr)

sudo apt-get install python3 libllvm3.6 llvm-runtime clang-3.6

Darwin (OSX Journaled)

brew install python3

Download the source for llvm 3.6 from http://llvm.org/releases/download.html and build with:

./configure --enable-shared --disable-assertions
make install

Usage

See tutorial.

Development

Testing

Jam uses the py.test framework.

To run the tests, simply execute py.test inside the project.

py.test

Debugging

Certain parts of jam make extensive use of logging. By default only WARNING level logs are shown. The logging level is bound to the verbosity option. Simply passing in a verbosity of 1 (-v) enables INFO and 2 (-vv) enables DEBUG.

py.test -vv

Coverage

To check test coverage, use pytest-cov:

# Vague report in console
py.test --cov=compiler
# Full html report, written to htmlcov/
py.test --cov=compiler --cov-report=html

Memory (valgrind)

To run all executables created by tests with valgrind to check for leaks and other memory issues, pass the --valgrind option to py.test. Do note that valgrind is slow and the tests will take a significantly longer time to run.

py.test --valgrind