# 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.**