Skip to content
CAI
Software that uses CAICheck a score

fika-lang/fika

56.1

Adequate · 18 September 2026

3k

lines of production code

Elixir

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Fika is a domain-specific language and runtime built on the Erlang VM, designed to compile source files into BEAM bytecode for execution via a command-line interface or a web server. The system provides a complete compiler pipeline that parses Fika syntax, performs static type checking with support for unions and effects, and generates Erlang code. It features a router mechanism that supports hot-reloading of HTTP route definitions, allowing developers to iterate on web services without restarting the application.

Features

Add router example demonstrating record syntax for route definitions

A new example file (examples/router.fi) has been added to demonstrate how to define HTTP routes using a list of records containing method, path, and handler fields. The example includes simple handlers for the root path and a /foo path, illustrating the use of record syntax in the language.

examples · high confidence

Initial compiler infrastructure with type checking and Erlang code generation

The Fika compiler now provides a complete pipeline for compiling source files into Erlang BEAM bytecode. This includes a parser for the Fika language, a type checker that supports function signatures, type inference, and subtyping, and an Erlang translator that converts the abstract syntax tree into Erlang forms. The system uses a central CodeServer (GenServer) to manage compilation state, store type information, and handle parallel compilation of modules. Default type signatures for kernel operations (arithmetic, comparison, logic) and list operations (map, filter, reduce, length) are included, along with support for external function calls and effect types.

lib/fika/compiler · high confidence

Initial configuration structure for the Fika application

The application now includes a standard Elixir configuration setup with environment-specific files (dev, test, prod, releases). This introduces the \:fika\ application configuration, allowing users to define the router path (e.g., \examples/router.fi\ in dev, \router.fi\ in prod) and control runtime behaviors such as disabling the web server in test mode or enabling CLI start in release mode. Environment variables like \FIKA\_DEV\_TOKEN\ and \FIKA\_REMOTE\_ENDPOINT\ are now supported for release configurations.

config · high confidence

Initial parser implementation for the Fika language

The \lib/fika/compiler/parser\ module now provides the foundational grammar for the Fika language, enabling the compiler to parse source code into an Abstract Syntax Tree (AST). This implementation supports defining public and external functions, handling expressions including arithmetic, logical, and comparison operators, and managing control flow via \if-else\ and \case\ expressions. It also introduces support for anonymous functions, record and map literals, and a type system featuring base types, union types, and effect types. Additionally, the parser allows identifiers to start with keywords (with specific exceptions) and permits comments between expressions.

lib/fika/compiler/parser · high confidence

Initial project scaffolding and documentation

Establishes the foundational structure for the Fika language project by adding configuration files for Elixir formatting (.formatter.exs), Git attributes (.gitattributes), and environment versions (.tool-versions). Includes a comprehensive README.md detailing installation, usage via the Elixir shell or CLI, and web server setup, alongside an example.fi file demonstrating the language's syntax features such as functions, types, and operators.

(repo-wide) · high confidence

Initial release of the Fika language runtime and tooling

This change introduces the core Fika language runtime, including a CLI for executing code and a web server for handling HTTP requests. Users can now run Fika scripts via the command line, define routes in .fi files, and benefit from automatic reloading of routes when source files change. The release also includes a deployment helper to package the executable and establishes the foundational OTP application structure with a supervisor, code server, and file watcher.

lib/fika · high confidence

New stdlib list functions and IO effect module

Users can now use new list manipulation functions (map, reduce, filter, length) and an IO effect module (gets, puts) in Fika code. These are implemented as external bindings to Elixir's Enum and IO modules. A new Mix compile task is also added to handle compilation of .fi files.

fika, lib/mix · high confidence

New type representation modules for the compiler's type checker

The type checker now includes dedicated modules for representing specific data structures, including Effect, FunctionRef, List, Map, Record, Tuple, and Union types. These modules provide structured data definitions and string formatting implementations, enabling the compiler to accurately model and display complex type signatures during static analysis.

_lib/fika/compiler/type\checker/types · high confidence

Behavioural changes

Disable Erlang distribution in CLI releases

The release environment scripts (rel/env.bat.eex and rel/env.sh.eex) now explicitly set RELEASE\_DISTRIBUTION=none, ensuring that the CLI application runs as a standalone node without attempting to start an Erlang distribution. This prevents unintended network connectivity or clustering behavior when running the command-line interface.

rel · high confidence

Introduction of dynamic route reloading and in-memory route storage

The router now supports hot-reloading of routes without requiring a full application restart. A new \Fika.Router.Store\ module manages route definitions in an Agent, allowing routes to be loaded from a specified file and reloaded on demand. The \Fika.Router.Supervisor\ initializes this store and starts the web server (Plug.Cowboy on port 9090), ensuring that changes to the router configuration file are reflected immediately in the running application.

lib/fika/router · high confidence

Parallel type checking and improved function subtyping

The type checker now processes function signatures in parallel using a GenServer-based architecture (ParallelTypeChecker) to improve compilation performance, while also introducing a new FunctionMatch module that correctly handles function subtyping during signature resolution. Additionally, a new Match module implements pattern matching logic for type checking, supporting unions, tuples, and records.

_lib/fika/compiler/type\checker · high confidence

Test coverage

Added comprehensive test coverage for the Fika compiler; Added test support modules for parser and evaluator; Initial test infrastructure setup.

Dependencies

Initial project setup with core dependencies

The Fika application is initialized with a new mix project configuration and lock file, establishing the foundational dependencies required for the system. This includes nimble\_parsec for parser combinator functionality, plug\_cowboy for the web server, file\_system for file watching and auto-reloading, finch for HTTP client operations, jason for JSON handling, and bakeware for release assembly. The project also specifies Elixir version 1.10 as a requirement.

(dependencies) · high confidence

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 56.

Lenses

  • Code Health 97
  • Architecture 100
  • Maturity 43
  • Readiness 55
  • Security 66

Changes since last survey

  • 95 commits — 93 feature/other, 2 fixes

By area

  • lib/fika — 57 commits
  • (root) — 27 commits
  • test/fika — 3 commits
  • .github/workflows — 2 commits
  • docs/hacking_syntax.md — 2 commits
  • test/support — 2 commits
  • (repo) — 1 commit
  • rel/env.bat.eex — 1 commit

Notable commits

  • fix: Fix string interpolation compilation (#48)
  • fix: Parser fixes (#44)
  • change: Acknowledge FOSSUnited's support in README
  • change: Add CLI to exec Fika code
  • change: Add README with a short description
  • change: Add TestEvaluator helper module (#38)
  • change: Add anonymous functions (#58)
  • change: Add back tinyletter URL
  • change: Add boolean data type (#6)
  • change: Add case expression (#67)
  • change: Add comparison operators for Int (#42)
  • change: Add doc for contributing to Fika syntax
  • change: Add effect type and IO module (#57)
  • change: Add function arguments with types
  • change: Add if-else expression (#14)
  • change: Add link to discord server in README
  • change: Add links to images
  • change: Add lists
  • change: Add logical operators (#28)
  • change: Add logo
  • …and 75 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

fika-lang/fika 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 18 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 2b2e1d41d08541b9d5de3225cebe86d9e45f4b16 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-5d04157a340d.