hobbes  by morganstanley

Language/compiler for efficient dynamic expression evaluation, data storage, and analysis

created 8 years ago
1,183 stars

Top 33.7% on sourcepulse

GitHubView on GitHub
Project Summary

Hobbes is a language, embedded compiler, and runtime designed for efficient dynamic expression evaluation, data storage, and analysis within C++ applications. It targets developers needing high-performance, type-safe evaluation of dynamic code, offering features like pattern matching, comprehensions, and a JIT compiler.

How It Works

Hobbes leverages LLVM for its JIT compilation, enabling efficient execution of dynamic expressions. It features a C++ API for embedding, allowing seamless integration into existing applications. The language supports algebraic data types, type classes with functional dependencies, and LALR(1) parsers, drawing inspiration from ML-family languages and Haskell. Its design prioritizes performance and flexibility, offering direct memory access and features like remote code execution and structured data storage.

Quick Start & Requirements

  • Build: Requires LLVM 3.3+, CMake 3.4+, GCC 4.8+, Linux kernel 2.5+. Build via cmake . && make && make install.
  • Embedding: Compile C++ applications linking against libhobbes.a or libhobbes-pic.a. Requires LLVM headers and libraries.
  • Interactive Interpreter: The hi utility provides an interactive shell.
  • Data Storage: The hog utility manages structured data recording.
  • Documentation: Detailed sections on Evaluation, Storage, Networking, Comprehensions, Pattern Matching, Parsing, Type Classes, and Unqualifier Modules are available in the README.

Highlighted Details

  • Performance: JIT compilation via LLVM for efficient dynamic evaluation.
  • Data Analysis: SQL-like comprehensions for sorting, joining, filtering, and grouping data.
  • Extensibility: User-defined "unqualifiers" for custom constraint handling and type class implementations.
  • Networking: Supports remote code execution (RPC) for distributed computations.

Maintenance & Community

Information on maintainers, community channels (Discord/Slack), or roadmaps is not explicitly detailed in the README.

Licensing & Compatibility

The README does not specify a license. Compatibility for commercial use or closed-source linking is not detailed.

Limitations & Caveats

Hobbes is not sandboxed and provides direct memory access without runtime safety features like array bounds checking. Remote code execution is intended for trusted internal networks only. The README does not specify a license, which could be a significant adoption blocker.

Health Check
Last commit

3 months ago

Responsiveness

1 day

Pull Requests (30d)
0
Issues (30d)
0
Star History
6 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.