Shine - A symbolic regression machine
C++ C Python
Switch branches/tags
Nothing to show
Latest commit 40b1d39 Mar 28, 2011 @perone perone Added new logo =)
Failed to load latest commit information.


Shine - Symbolic Regression Machine

This is a library under development, the first Release Candidate is about to be
released soon.

1) What is Shine ?

Shine is a library that automatically makes the code generation of the LLVM IR 
(Intermediate Representation) from Genetic Programming trees. It also provides
an easy API for optimizing and JITing Genetic Programming ASTs into native code.
Shine follow this flow:

a. Load LLVM bitcode
    This LLVM bitcode can be from any language supported by the LLVM compiler
b. Load Genetic Programming trees
    In this phase, each node representing a non-terminal (a function) is resolved
    and matched again the previous loaded LLVM bitcode file.
c. Codegen the AST
    Shine converts this AST into LLVM IR.
d. Optimization
    Shine run LLVM optimization passes in the merged LLVM IR module representing
    each tree.
e. JIT
    Shine uses LLVM to convert this LLVM IR into native code and then returns
    a function pointer to that native function.

2) What license uses Shine ?

Shine is licensed under LPGL.

3) Language bindings ?

Python language bindings are under development, actually, Shine is a component of
a bigger project to use state-of-art compiler technology such as optimizations and
JIT compiling for a Genetic Programming system. In future, Pyevolve will use 
Shine to JIT its Genetic Programming trees into native code.

4) How to install or compile ?

    LLVM 2.9 rc1+
    glib-2.0 for tests
    g++ and cmake (for compiling)

Get the trunk in a directory, let's call it "shine_lib".

a. Creating a developer build with tests:

# cd shine_lib
# mkdir build
# cd build
# cmake -DCMAKE_BUILD_TYPE=Developer -DBUILD_TESTING=true ..

-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- You have selected the building of the tests.
-- checking for module 'glib-2.0'
--   found glib-2.0, version 2.26.1
-- Found Doxygen: /usr/bin/doxygen
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tarantula/shine_lib/dev

# make

(wait for the compilation)

# sudo make install

b. Creating the docs

Inside the created "build" directory.

# make doxygen

A new directory called "doc" will be created with the API documentation.

5) Creating a distribution package

Inside the created "build" directory.

# cpack -G DEB

- Christian S. Perone