Skip to content

Conflate 0.4.0: typed polyglot boundaries

Latest

Choose a tag to compare

@Hacker-lot Hacker-lot released this 14 Sep 13:17

Keep Python for data handling and reports, use Rust for memory-safe processing, and bring in C++ or Java where you already have code. Conflate lets those parts share values in one .confl file. Version 0.4 adds typed inputs and outputs to each block.

Try the Python and Rust orders example: Rust rejects invalid quantities and overflowing totals; Python formats the accepted orders into a report.


@python(out: seed: int)

seed = 40



@cpp(in: seed: int; out: answer: int)

int answer = seed.as<int>() + 2;



@python(in: answer: int)

print(answer)  # 42

Blocks keep their host language syntax. Conflate checks required inputs and

outputs, generates native entry points, and moves portable values between

Python, C++, Rust, Java, and Go. Existing bare markers and persistent

cross-language functions remain supported.

Try it

Install Python 3.11+ and a C++20 compiler (g++ or clang++), then:

python -m pip install https://github.com/Hacker-lot/conflate/releases/download/v0.4.0/conflate_lang-0.4.0-py3-none-any.whl

git clone https://github.com/Hacker-lot/conflate.git

cd conflate

conflate --doctor

conflate --run-source examples/typed-statistics.confl

Expected output: 4 readings; average 20.5 C.

Build before running

conflate --build examples/typed-pipeline.confl -o build/typed-pipeline

conflate --run-build build/typed-pipeline

The new local build directory contains a source snapshot, manifest, and

prepared native artifacts. Building does not execute program statements.

Source integrity, Conflate version, host, and relevant language registrations

are checked when running a build.

Scope

This is an experimental orchestration language with runtime boundary checks,

not a standalone binary compiler or a whole-program static type checker.

Keep Python, Conflate, and the relevant toolchains installed. Values are copied

through JSON; native input-declaration discovery and exported function signatures

have documented limits. Go and JavaScript have additional integer precision

limits. Registered command-manifest backends still build at runtime.

The release also fixes Unix launcher exit-code propagation. The local suite

and clean-wheel installation were tested with real native toolchains.

See the language specification,

examples, and

CI. Reproducible bug reports

and feedback on the boundary semantics are welcome.

Full polyglot walkthrough

Run Python, C++, Rust, Java, and Go in one typed pipeline: tour and commands. The example and walkthrough GIF are attached to this release. An optional PHP command-manifest bridge is also attached and tested in CI. These examples work with the 0.4.0 runtime; the release wheel is unchanged.

Project page