hobbes
a language, embedded compiler, and runtime for efficient dynamic expression evaluation, data storage and analysis
section description Building how to build and install hobbes Embedding use hobbes in C++ programs Evaluation evaluate basic hobbes expressions Storage record data for out-of-band analysis Networking interact with remote hobbes processes Comprehensions transform/sort/join/filter/group sequences for data analysis Pattern Matching efficiently classify and destructure data Parsing parse text with LALR(1) grammars Type Classes overloading and compile-time calculation Unqualifier Modules user-defined "compiler plugins" for custom constraint handling
Note on Hobbes Usage
Hobbes is built for high performance integration with C/C++ applications. While Hobbes is a strongly typed language that offers compile-time checks, it doesn't have a sandboxed runtime environment or runtime safety features. By design, Hobbes gives direct access to memory and does not have array bounds checks. Additionally, Hobbes supports compilation and execution of native code remotely over a network (RPC). This feature is meant for use within your trusted internal network only. If you choose to utilize such functionality, you need to be aware of these design choices and understand the security implications.
Building
To build hobbes, you will need LLVM 3.3 or later, cmake 3.4 or later, GNU gcc 4.8 or later, and a version 2.5 or later Linux kernel.
With LLVM, cmake, and g++ installed, after downloading this code you should be able to build and install hobbes just by running:
$ cmake . $ make $ make install
Depending on where you've installed LLVM, this might not work until you give cmake the path to LLVM's cmake modules. In particular, you want the path to LLVM's LLVMConfig.cmake file. If you set the environment variable LLVM_DIR to point to that directory, then the previous steps should complete successfully.
... continue reading