Skip to content

Vaniell0/iris

Repository files navigation

Iris

Typed values across runtimes — without glue code.


Documents

Document What it covers
IRIS.md Engine: TypeRegistry, IrisValue, all backends, SDK, build options
IRSH.md Language: type system, evaluation model, IPC/pipe transport, wire protocol
IRISH.md Interpreter: three modes, terminal UX, plugin discovery, DX goals
ECOSYSTEM.md Repos, backend modes (inline/IPC/proc), authorship workflow, compatibility
WHY.md Motivation: why Iris exists, what problem it solves
ROADMAP.md What is done, what is next, what is far

In one line

Register a type once with IRIS_TYPE. Every backend — Java, IPC, OS, async pipeline — reads the same TypeDescriptor. No JNI by hand. No schema file. No codegen.

struct Point { int32_t x, y; };
IRIS_TYPE(Point, IRIS_FIELD(Point, x), IRIS_FIELD(Point, y))

// C++26 alternative — zero field list
struct Vec3 { float x, y, z; };
IRIS_REFLECT(Vec3)   // requires -DIRIS_STDMETA=ON (GCC 16+)

Build

# full build
cmake -B build -GNinja \
  -DIRIS_JAVA_BACKEND=ON \
  -DIRIS_OS_BACKEND=ON  \
  -DIRIS_STDEXEC=ON     \
  -DIRIS_STDMETA=ON     # GCC 16+ only
cmake --build build

# minimal — no JVM, no OS backend
cmake -B build -DIRIS_JAVA_BACKEND=OFF -DIRIS_OS_BACKEND=OFF

With Nix: nix develop drops into a GCC 16 shell with all dependencies.

About

Typed value bus · C++23 · P2300 async pipelines · P2996 reflection · JVM / IPC / OS backends · substrate for irsh

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors