The short: The v2 branch is the experimental branch where I've integrated a lot of work from an intern project we had last summer. This is a slow burn project for me, so I would recommend everyone stick with the version 1.
Details about the v2 branch:
- This adds mainly type features. We are experimenting with adding uniform, constant and varying modifiers to data types as well as string and floating points to the language.
- The interpreter has been rewritten to do a type check in a more formal way so it can infer the types (which will be important for LLVM). It uses a very interesting template strategy to use as specialized versions of the code as possible to hide the cost of the complexity of having to loop over each component of the vector.
- This adds a lot of complexity to the implementation that I have yet to battle test.
- This is the branch that I will most likely eventually integrate the LLVM
LLVM status
- I have a separate version of the language which was a variant that I used to test the ideas of LLVM. It was relatively successful, but it was not compatible. So, I decided to mutate SeExpr into a form that would be ready to integrate this.
- If there is interest in this variant language I can put it up on github, but I will warn that it is not stable and it does not have important features like the builtin library.
- It does have some interesting tidbits like being able to reproduce many of the builtin functions of seexpr as user-defined functions that auto-inline into the native code.
Overall, my plan is to write up a clearer roadmap of SeExpr and translate that into github issues. I'd love to help from anyone that has time after that point!
-Andy