jinchengJL / harmonica

harmonica programming language

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Harmonica

Harmonica Programming Language

Overview

This was a course project at Columbia University.

Harmonica is a mixture of Go-Python language with support for functional programming and concurrency.

Instructions

Installation under Ubuntu

Currently Ubuntu is the only supported system. We are doing some clang-to-llvm bindings which requires the proper clang version that's not available on macOS/Windows, so getting it to work on other platforms would be very cumbersome.

Compiling this project requires clang-3.4, llvm-3.4, and opam 1.2. These are not the default for most Ubuntu systems, so you'll need to explicitly specify the version of packages you are installing.

sudo add-apt-repository ppa:avsm/ppa
sudo apt-get update
sudo apt-get install ocaml opam
sudo apt-get install -y m4 clang-3.4 llvm-3.4
opam init
opam install llvm.3.4 ocamlfind
eval `opam config env`

make
./testall.sh


Installation under macOS

The cgen branch of this project works with macOS, but other branches do not. cgen translates harmonica programs to C instead of LLVM. In order to run it on macOS, simply do:

brew install opam
eval `opam config env`

make
./testall.sh

About

harmonica programming language


Languages

Language:OCaml 77.8%Language:LLVM 9.5%Language:Shell 5.5%Language:Makefile 3.7%Language:C 2.2%Language:Python 1.0%Language:Standard ML 0.3%