kjnilsson/fez
48.2
Weak · 24 September 2026
4.5k
lines of production code
Erlang
with F#
5
measurements over time
What this system is
Fez is a compiler and tooling suite that translates F\# code into Erlang Core and Beam files. It provides a command-line interface for building, testing, and releasing the compiler, alongside a standard library implementation for F\# modules and Erlang-style concurrency primitives. The system supports a wide range of F\# language features, including async workflows, pattern matching, and data types, enabling developers to write F\# code that compiles to efficient, distributed Erlang applications.
Features
Expanded F\# Standard Library and Core Support
Added comprehensive implementations for F\# standard library modules, including \SeqModule\ (with functions like \scan\, \reduce\, \unfold\, \windowed\, \zip\, \groupBy\, \distinct\, \maxBy\, \minBy\, \sumBy\, \where\), \ListModule\ (with \compareWith\, \countBy\, \distinctBy\), \MapModule\, \SetModule\, and \OptionModule\. Introduced support for \FSharpAsync\ (including \Start\, \RunSynchronously\, \Parallel\), \Lazy\ evaluation, \Result\ types, and \Ref\ (mutable references). Added core operators such as \op\_Modulus\, \op\_GreaterThanOrEqual\, \op\_LessThanOrEqual\, and \byte\ conversion. Implemented \System.Char\ utility functions and basic object/inheritance dispatch mechanisms in \Fez.Core\.
src · high confidence
Introduce Fez CLI and compiler infrastructure for F\# to Erlang compilation
The Fez tooling now provides a command-line interface to compile F\# code into Erlang Core and Beam files. Users can run 'fez init' to scaffold a .NET project, 'fez compile' to generate .core files from F\# sources, and 'fez erl' to launch an Erlang shell with the correct search paths. The compiler leverages the F\# Compiler Service to parse and check F\# code, handling specific types like Option, Result, and List, and outputs Erlang modules with corresponding header information.
src/fez · high confidence
Introduce Fez.Core with Erlang-style concurrency primitives and data types
A new \Fez.Core\ module is added, providing core data types for Erlang-style distributed computing, including \Pid\, \Port\, \Node\, and a \Term\ union type that supports atoms, integers, floats, lists, bit strings, strings, maps, and PIDs. The module introduces basic process management functions such as \spawn\ and \self\, and a \send\ function that returns \unit\ rather than the message. It also adds support for reference cells (\Ref\<'a\>\) and lazy evaluation (\System.Lazy\<'a\>\) via extension members, alongside a \Binary\ type and helper module for byte array manipulation. Additionally, an \ErlangTerm\ attribute is introduced to control tuple generation and case strategies for F\#-to-Erlang term mapping.
src/fez.core · medium confidence
Introduce build, test, and release automation for the F\# to Erlang compiler
Adds a Makefile and platform-specific shell/Windows scripts (build.sh, build.cmd, run-tests.sh, run-tests.cmd) to automate the build, test, and release processes for the fez compiler. The Makefile defines targets for restoring .NET dependencies, compiling Erlang code, running EUnit tests, and creating self-contained releases for Windows, macOS, and Linux. Additionally, a ce.escript utility is added to format or display the core Erlang AST, and a thoughts.md document outlines the implementation approach for features like records, mutation, and discriminated unions.
(repo-wide) · high confidence
Test coverage
Added comprehensive test suite for core language features
Added new test files (aether\_test.fs, basics.fs, demo.fs, demo2.fs, fun.fs, soduku.fs, wip.fs) and corresponding Erlang test modules (basics\_tests.erl) to verify the compiler's handling of records, pattern matching, tuples, lists, strings, discriminated unions, async messaging, and other core F\# constructs.
test · high confidence
Dependencies
Migrate project files to .NET Core 2.1 and .NET Standard 2.0
The project files for fez, fez.core, and test have been updated to target .NET Core 2.1 and .NET Standard 2.0, replacing the previous .NET Core 2.0 and 2.1 targets. This ensures compatibility with the latest .NET Core runtime and standard libraries.
(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
Score
- CAI 45 → 48 (+2.8)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 85 → 85 (-0.1)
- Architecture 100 → 100 (+0.0)
- Maturity 37 → 49 (+12.3)
- Readiness 24 → 26 (+1.4)
- Security 100 → 87 (-13.3)
Resolved (6)
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- No exposed public API
- Test reliability not included
- TooManyMethods: Microsoft.FSharp.Collections.SeqModule (src/Microsoft.FSharp.Collections.SeqModule.erl)
- complexity unreadable for .erl, .fs — churn × complexity hotspots could not be measured
- dormant codebase — no living knowledge left to concentrate
New (6)
- Documentation: no usage examples (README.md)
- Duplicated block (12 lines × 2) (src/Microsoft.FSharp.Collections.SeqModule.erl)
- End-of-life runtime: .NET netcoreapp2.1
- Microsoft.FSharp.Collections.SeqModule.next (cognitive 36) (src/Microsoft.FSharp.Collections.SeqModule.erl)
- Microsoft.FSharp.Collections.SeqModule.next (cyclomatic 95) (src/Microsoft.FSharp.Collections.SeqModule.erl)
- No ADRs found
Architecture
- Unchanged — 0 containers · 1 contexts · 0 edges
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
kjnilsson/fez 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 24 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 0073033768766f3ff593a556f6016210945d2fdc — 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-923689c465cf.