README.md
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 28 Sep 2015 14:39:57 +0100
changeset 20 2f28df70181a
permissions -rw-r--r--
Added README, license and copyright notice

# Tea Language

**Tea** is an experimental DSL based on Smalltalk language that compiles 
statically to (optimized) machine code. It depends on LLVM toolchain to 
actually optimize and generate target machine code. 

## Prerequisites

* An x96_64 Linux box
* GNU Make & C++ compiler (GCC / Clang would do it)
* LLVM *3.8* installation - requires libLLVM.so shared library

## Loading into Smalltalk/X

**1.** Get [Smalltalk/X jv-branch](https://swing.fit.cvut.cz/projects/stx-jv/) (preferably a night build).

**2.** Clone *Tea*, *Ring* and *LLVM-S* repositories

```
#!bash
    mkdir -p ~/SmalltalkXProjects/jv
    mkdir -p ~/SmalltalkXProjects/stx/goodies
    hg clone https://bitbucket.org/janvrany/stx-goodies-ring ~/SmalltalkXProjects/stx/goodies/ring
    hg clone https://bitbucket.org/janvrany/jv-llvm-s ~/SmalltalkXProjects/jv/llvm_s
    hg clone https://bitbucket.org/janvrany/jv-tea ~/SmalltalkXProjects/jv/tea
```

**3.** Compile LLVM C Extension library

```
#!bash
    cd ~/SmalltalkXProjects/jv/llvm_s/llvm_c_ext
    make LLVM_CONFIG=~/path/to/llvm-3.8/bin/llvm-config
```

**4.** Load the package into Smalltalk/X 
```
#!smalltalk
    Smalltalk loadPackage: 'stx:goodies/ring'.
    Smalltalk loadPackage: 'jv:llvm_s'.
    Smalltalk loadPackage: 'jv:tea/compiler'.
    Smalltalk loadPackage: 'jv:tea/compiler/cli'.
```

## Documentation 

* [Project wiki](https://bitbucket.org/janvrany/jv-tea/wiki/Home)

But do not expect much - it's more of an unsorted list of comments and thoughts
rather than documentation or even 'language specification'.

## Authors

* Jan Vrany

## License

This code is not an open-source (yet). You may use this code
for your own experiments and projects, given that:

* all modification to the code will be sent to the
  original author for inclusion in future releases
* this is not used in any commercial software

**This license is provisional and may (will) change in
a future.**