Skip to content
CAI
Software that uses CAICheck a score

karthikv/par

44.4

Weak · 17 September 2026

6.3k

lines of production code

Erlang

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is the Par compiler, a language toolchain that compiles source code into Erlang BEAM files. It provides a complete development environment including a lexer, parser, type checker with constraint solving, and an interpreter for execution. The project includes a standard library with core data structures and I/O operations, along with bootstrapping and release tooling for cross-platform distribution.

Features

Add Windows support for the Par release script

The release process now supports Windows environments by introducing a new batch script (par.cmd) alongside the existing shell script (par). This addition allows users to run the Par application on Windows by automatically detecting the installation root (defaulting to C:\\par) and configuring the Erlang path accordingly, ensuring consistent behavior across operating systems.

release · high confidence

Initial release of the Par compiler and standard libraries

This change introduces the Par compiler, a new language toolchain that compiles to Erlang. It includes the core source code for the interpreter, type checker, and code generator, along with a standard library. The project is configured for building via Rebar3, with dependencies on \getopt\ and \unite\, and includes initial test suites for the parser, type system, and execution engine. Documentation (README) and licensing (MIT) files are also added.

(repo-wide) · high confidence

Introduce Par language compiler with type system, code generation, and standard library

This change adds the core implementation of the Par language, including a new lexer and parser (lexer.par, parser.par) that define the language's syntax for modules, imports, interfaces, and data types. It introduces a type system (type\_system.erl) with constraint solving and exhaustiveness checking, a code generator (code\_gen.erl) that produces Erlang BEAM files, and an interpreter (interpreter.erl) for execution. The release also includes a precompiled standard library (stdlib) with modules for strings, lists, sets, maps, and file operations, along with native support functions (par\_native.erl) for pretty-printing and global state management.

src · high confidence

Introduce the standard library with base, string, list, map, set, file, path, char, and OS modules

The \src/lib\ directory now contains the initial standard library, providing core functionality automatically available to all modules. This includes \Base\ for fundamental types like \Option\ and interfaces (\Sized\, \Concat\, \Mappable\, \Collection\), \String\ for UTF-8 text operations and regex support, \List\ for linked list manipulation, \Map\ and \Set\ for hash-based collections, \File\ and \Path\ for filesystem and path operations, \Char\ for character utilities, and \OS\ for environment detection. These modules replace previous ad-hoc implementations and establish the foundational API for the language.

src/lib · high confidence

New bootstrapping and release tooling for the Par compiler

The repository now includes a set of shell scripts in the bin directory to manage the self-hosting lifecycle of the Par compiler. The new bin/bootstrap script enables a safe upgrade process by compiling the new parser against the old version, precompiling the standard library, and swapping the binary, with a 'stop' command to revert if issues arise. Supporting scripts include bin/precompile for building the standard library, bin/test for running the test suite with the bootstrapped parser, and bin/release for packaging the compiler into a distributable zip file.

bin · high confidence

Test coverage

Add comprehensive test suite for the Par language; Added comprehensive test coverage for the standard library; Added golden tests for error reporting.

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 44.

Lenses

  • Code Health 77
  • Architecture 100
  • Maturity 35
  • Readiness 50
  • Security 100
  • Event-Driven 35

Changes since last survey

  • 287 commits — 235 feature/other, 52 fixes

By area

  • (root) — 107 commits
  • bin/par — 45 commits
  • src/code_gen.erl — 31 commits
  • test/golden — 29 commits
  • src/lib — 27 commits
  • src/par.erl — 11 commits
  • src/common.hrl — 9 commits
  • bin/bootstrap — 7 commits
  • test/lib — 6 commits
  • src/errors.hrl — 4 commits
  • src/type_system.erl — 3 commits
  • src/interpreter.erl — 2 commits
  • src/parser.par — 2 commits
  • bin/test — 1 commit
  • src/lexer.par — 1 commit
  • src/parser.yrl — 1 commit
  • test/stdlib_test.erl — 1 commit

Notable commits

  • fix: Add docs, fix bug with close brace location.
  • fix: Allow T on rhs for interfaces. Fix gen TV edge case.
  • fix: Bootstrap and fix bug with arity reporting.
  • fix: Bootstrap and fix issues.
  • fix: Bootstrap and fix issues.
  • fix: Bootstrap and fix issues.
  • fix: Bootstrap and fix issues. Limit calls to stdlib_modules().
  • fix: Bootstrap and fix lexer/parser.
  • fix: Check and fix arity computation.
  • fix: Continue implementing standard library. Fix various bugs.
  • fix: Disallow redef stdlib modules. Fix docs.
  • fix: Fix README link.
  • fix: Fix and simplify function app <=> lam unification.
  • fix: Fix bug creating/extending a struct literal from another module.
  • fix: Fix bug in initializing exports.
  • fix: Fix bug where compiled files aren't outputted.
  • fix: Fix bug with cst ordering.
  • fix: Fix bug with iface substitution. Combine representation of tv and iface.
  • fix: Fix bug with message receiving and improve perf slightly.
  • fix: Fix bug with name generation.
  • …and 267 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

karthikv/par was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 17 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit a909fc3d79a4814fc436be9fa8d00fe4d7ec36b6 — the exact code this score is about.
  • Scored under rubric-2026.09.12 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-f94092f054c1.