hylo-lang/hylo
48.8
Weak · 1 October 2026
46.7k
lines of production code
Swift
primary language
2
measurements over time
What this system is
Hylo is a systems programming language compiler that transforms source code into native machine code via an LLVM backend, while also providing an interpreter for execution. It features a comprehensive type system with ownership semantics, concurrency primitives, and a standard library supporting collections, threading, and memory management. The toolchain includes a command-line driver for controlling compilation phases, automated test generation, and utilities for symbol demangling and code formatting.
How it got here
2021–2022 — Hylo compiler core implementation
20 changes.
The project was rebranded to Hylo and rebuilt with a comprehensive CMake and Swift Package Manager infrastructure. This period focused on implementing the core compiler pipeline, including the lexer, parser, AST, type-checking constraint system, and IR generation modules.
2023 — LLVM backend and standard library foundation
25 changes.
This period focused on establishing the Hylo compiler's native code generation capabilities by introducing the LLVM backend and implementing symbol mangling infrastructure. Concurrently, the team built out the core standard library with essential types, traits, and memory management primitives, while significantly expanding test coverage across the lexer, parser, type checker, and end-to-end execution paths.
2024–2026 — Concurrency, threading, and interpreter infrastructure
10 changes.
This period focused on expanding the language's runtime capabilities by introducing asynchronous concurrency primitives, low-level OS threading, and a new efficient string representation. Concurrently, significant internal refactoring standardized compile-time value handling and requirement rewriting, while establishing the core memory management and type layout infrastructure for the interpreter.
Features
Add CLI tool for demangling symbols
A new command-line interface has been added to the hylo-demangle module, allowing users to pass a mangled symbol name as an argument to receive its demangled form on standard output. The tool imports the IR module to perform the demangling and provides clear error messages for missing inputs or symbols that cannot be demangled. Additionally, the FullPathInFatalErrors.swift file in this location is now a symlink to the shared version in the parent directory, ensuring consistent error handling behavior across modules.
Sources/hylo-demangle · high confidence
Add arithmetic and comparison operators to Float32
The Float32 type in the standard library now supports standard arithmetic operations (addition, subtraction, multiplication, division, remainder) and comparison operators (less than, greater than, equality, etc.), along with compound assignment operators. It also includes a static \pi()\ constant and conforms to \ExpressibleByFloatLiteral\, \ExpressibleByIntegerLiteral\, \Deinitializable\, and \Copyable\. Note that division and remainder operations currently lack runtime checks for division by zero.
StandardLibrary/Sources/Core/Numbers/Floats · high confidence
Add low-level threading support to the standard library
This change introduces the initial implementation of threading capabilities in the Hylo standard library, providing a high-level API for creating and managing OS threads on Linux and macOS. Users can now spawn new threads using \spawn\_thread\, passing closures with or without arguments (including mutable references), and wait for their completion via \ThreadCompletion\. The implementation includes utilities to retrieve the current thread ID, yield execution time to the scheduler, and query the system's available parallelism. Under the hood, this is built on POSIX pthreads, exposing FFI bindings for thread creation, joining, and attribute management.
StandardLibrary/Sources/LowLevel · high confidence
Added new Hylo language examples
The Examples directory now includes four new Hylo source files: \hello.hylo\ (a standard Hello World program), \fortytwo.hylo\ (a minimal program returning 42), \factorial.hylo\ (a recursive factorial implementation), and \concurrent\_greeting.hylo\ (demonstrating thread spawning and awaiting with the concore2full library). These files replace the previous \.val\ extensions and provide fresh starting points for users learning the language.
Examples · high confidence
Automated XCTest generation for .hylo test cases
The TestGeneratorPlugin now automatically generates XCTest cases from annotated .hylo files during the build process. By scanning the target's TestCases directory for .hylo files and invoking the GenerateHyloFileTests tool, the plugin produces a HyloFileTests.swift file, allowing developers to write tests in the .hylo format without manually maintaining corresponding XCTest boilerplate.
Plugins/TestGeneratorPlugin · high confidence
FrontEnd module introduces core AST property maps and access effect tracking
The FrontEnd module now includes foundational data structures for program analysis, including ASTProperty, DeclProperty, ExprProperty, and PatternProperty to map AST nodes to associated values, as well as AccessEffect and AccessEffectSet to track how values are accessed (e.g., immutable, mutable, consumed). It also adds Conformance and ConformanceOrigin to represent type conformances, Diagnostic and DiagnosticSet for error reporting, and BuiltinFunction to define built-in operations. Additionally, it introduces Program and ScopedProgram protocols for representing typed programs, ConditionalCompilationFactors for build configuration, and various predicate types (FloatingPointPredicate, IntegerPredicate) and utility structs (SemanticVersion, SourceFile, ScopedValue) to support the type-checking and compilation pipeline.
Sources/FrontEnd · high confidence
Initial LLVM code generation backend
Introduces the LLVM code generation backend for the Hylo compiler, enabling the transpilation of Hylo Intermediate Representation (IR) into LLVM IR. This change adds the core infrastructure for compiling Hylo programs to native machine code, including type lowering for built-in types, product types, tuples, unions, and buffers; code generation for functions, subscripts, and global static storage; and the ability to emit object files. It also establishes the \SwiftyLLVM\ module integration and provides optimization passes.
Sources/CodeGen/LLVM · high confidence
Integers gain comprehensive standard library traits and operations
The integer types (Int, Int8, Int32, Int64, UInt, UInt8, UInt32, UInt64) now conform to a full hierarchy of standard library traits including AdditiveArithmetic, Numeric, BinaryInteger, FixedWidthInteger, Hashable, and Comparable. This enables users to perform standard arithmetic, bitwise operations, comparisons, and hashing on all integer sizes, while also providing specific capabilities like overflow reporting, bit-width queries, and power-of-two rounding.
StandardLibrary/Sources/Core/Numbers/Integers · high confidence
Introduce AST statement definitions for the FrontEnd module
This change adds the foundational Abstract Syntax Tree (AST) node definitions for various statement types within the new Sources/FrontEnd/AST/Stmt directory. Users can now expect the compiler to recognize and process standard control-flow structures including assignments, blocks, loops (for, while, do-while), conditionals (if/else), and flow-control statements (break, continue, return, yield, discard). The diff also introduces specific support for conditional compilation directives (allowing checks against OS, architecture, features, and compiler versions) and conditional bindings, establishing the structural backbone for the merged FrontEnd module's parsing and semantic analysis capabilities.
Sources/FrontEnd/AST/Stmt · high confidence
Introduce Hylo IR symbol mangling and demangling
The IR module now includes a complete system for generating and parsing unique, assembly-safe identifiers for compiler symbols. This adds support for mangling declarations (functions, types, bindings), generic parameters, and complex types (tuples, unions, buffers, associated types). The implementation uses a Base64 encoding scheme to ensure all generated symbols are valid LLVM assembly identifiers, enabling the compiler to correctly reference and resolve internal entities during code generation.
Sources/IR/Mangling · high confidence
Introduce Hylo language parser and lexer
The \Sources/FrontEnd/Parse\ module now provides the core lexical and syntactic analysis for the Hylo language. The new \Lexer\ handles tokenization, including support for conditional compilation keywords (\\#if\, \\#else\, \\#elseif\, \\#endif\), pragmas, and numeric literals with exponents. The \Parser\ constructs the Abstract Syntax Tree (AST) from these tokens, implementing parsing for declarations, expressions, and control flow, while \ParserState\ manages the parsing context and error reporting via a new \DiagnosticSet\ system.
Sources/FrontEnd/Parse · high confidence
Introduce abstract interpretation infrastructure and new IR analysis passes
The IR analysis module now includes a reusable abstract interpretation framework (AbstractContext, AbstractDomain, AbstractInterpreter) and foundational data structures for control-flow (ControlFlowGraph) and dominance (DominatorTree) analysis. This enables new optimization and checking passes, specifically frame reification for projection callers, access reification to narrow memory access capabilities, and yield coherence checking for subscripts.
Sources/IR/Analysis · high confidence
Introduce core standard library collection types and memory management primitives
The standard library now includes foundational collection types: \Array\ (a dynamic, random-access collection with methods like \append\, \insert\, \remove\, and \pop\_last\), \BoundedArray\ (a fixed-capacity collection suitable for non-movable elements), and \BitArray\ (a space-efficient array of bits). Additionally, the library provides \DynamicBuffer\ for contiguous memory storage, low-level memory allocation via \hylo\_aligned\_alloc\/\hylo\_aligned\_free\, and basic I/O utilities in \Print\ for writing to standard output.
StandardLibrary/Sources · high confidence
Introduce interpreter runtime infrastructure for memory and type layout
The interpreter now includes core runtime components to manage execution state and memory. A new \BuiltinValue\ enum handles integer values (i1 through i128) derived from IR constants. \TypeLayout\ and \TypeLayoutCache\ provide memoized calculation of memory layouts for types, including support for unions with discriminators. The \Memory\ struct manages allocations, ensuring proper alignment and bounds checking, while \TargetABI\ (specifically \UnrealABI\) defines the layout rules for builtin types. These changes establish the foundation for the interpreter to correctly handle variable storage and type representation during execution.
Sources/Interpreter · high confidence
Introduce new IR instruction set for memory, control flow, and bundles
The IR now includes a comprehensive set of new instructions to handle memory management, control flow, and advanced language features. Memory operations include \Access\ (replacing previous borrow models), \AllocStack\/\DeallocStack\, \Load\/\Store\, \MarkState\, \MemoryCopy\, and \Move\. Control flow is handled by \Branch\, \CondBranch\, and \Return\. The IR also supports complex type interactions through \OpenUnion\/\CloseUnion\ for union payloads, \Project\/\EndProject\ for value projections, and \ProjectBundle\/\CallBundle\ for subscript and method bundles. Additional instructions like \CaptureIn\/\ReleaseCaptures\ manage remote value lifetimes, while \AdvancedByBytes\/\AdvancedByStrides\ and \PlaceToPointer\/\PointerToPlace\ handle low-level address arithmetic and conversions. \ConstantString\ and \GenericParameter\ provide support for literals and generics, and \CallFFI\ enables foreign function interface calls.
Sources/IR/Operands/Instruction · high confidence
Introduce scoped and escaping concurrency primitives
The standard library now includes \Future\ and \EscapingFuture\ types, along with \spawn\_\ and \escaping\spawn\\ functions, enabling users to spawn asynchronous computations and await their results. \Future\ is designed for local scope usage, while \EscapingFuture\ allows the result handle to be passed across scope boundaries, with both types integrating with the underlying \concore2full\ runtime via \SpawnFrame\ and \SpawnFrameBase\ structures.
StandardLibrary/Sources/Concurrency · high confidence
Introduce the 'hc' compiler driver with structured diagnostics and compilation control
The compiler now exposes a unified command-line interface via the 'hc' executable, built on ArgumentParser. Users can control the compilation pipeline using the --last-phase flag to stop after type-checking, lowering, or emitting, and can inspect intermediate outputs (raw AST, IR, LLVM IR, assembly) via the --emit flag. Diagnostics are now rendered with optional ANSI styling for better readability, and subprocess errors provide detailed output including standard output and error streams. The driver also supports parallel type-checking as an experimental feature and allows linking against native libraries.
Sources/Driver · high confidence
Introduces new type-checking data structures and constraint system
The type-checking module now includes new foundational types to support the constraint-based solver: \ConstraintSystem\ manages the solving of type and name constraints, \Solution\ represents the resulting substitutions and diagnostics, and \SubstitutionMap\ handles variable assignments. Supporting structures like \ProofObligations\ define the constraints to be solved, while \NameResolutionResult\ and \ArgumentResolutionResult\ model the outcomes of name lookup and argument matching. New enums such as \NameUse\ and \BindingDeclUse\ track how names and bindings are utilized, and \RefinementClosure\/\RefinementSequence\ manage trait refinement relationships.
Sources/FrontEnd/TypeChecking · high confidence
Introduction of UTF8Array type for efficient string storage
The core library now includes a new \UTF8Array\ type that manages UTF-8 code units using an optimized inline storage strategy for short strings (up to 7 units) and out-of-line heap allocation for longer content. This change provides users with a more efficient underlying representation for string data, automatically handling memory management and null-terminated buffer projections for interoperability.
StandardLibrary/Sources/Core/String · high confidence
Introduction of the IR module with core data structures and emitter
The compiler now includes a dedicated IR (Intermediate Representation) module that transforms typed ASTs into a form suitable for flow-sensitive analysis and code generation. This change introduces the core IR data structures, including \Function\, \Block\, \Instruction\, and their respective IDs, along with an \Emitter\ responsible for lowering declarations and synthesized code. It also adds support for representing type layouts, conformance witnesses, and method bundle references, establishing the foundational infrastructure for subsequent IR passes and LLVM code generation.
Sources/IR · high confidence
New AST declaration models for the FrontEnd module
The \Sources/FrontEnd/AST/Decl\ directory now contains the foundational Abstract Syntax Tree (AST) structures for the compiler's FrontEnd module. This change introduces new types for core language constructs, including \FunctionDecl\, \MethodDecl\, \SubscriptDecl\, \TraitDecl\, \ProductTypeDecl\, and \ConformanceDecl\, alongside supporting structures for generics (\GenericClause\, \GenericParameterDecl\), access control (\AccessModifier\), and capture semantics (\CapturingDecl\, \ImplicitCapture\). It also adds models for module organization (\ModuleDecl\, \TranslationUnit\, \NamespaceDecl\) and synthesized code generation (\SynthesizedFunctionDecl\), establishing the data structures required to represent and validate source code declarations.
Sources/FrontEnd/AST/Decl · high confidence
New FrontEnd AST expression and modifier types
The FrontEnd module now includes a comprehensive set of Abstract Syntax Tree (AST) nodes for expressions and declaration modifiers. This adds support for access and member modifiers (private, internal, public, static), as well as a wide range of expression types including literals (boolean, integer, float, string, unicode, buffer, map), control flow (conditional, match), function calls, lambdas, captures, casts, and sequence operations. These new types form the structural foundation for parsing and representing source code within the renamed FrontEnd compiler target.
Sources/FrontEnd/AST/DeclModifiers, Sources/FrontEnd/AST/Expr · high confidence
New TestUtils module for Hylo compiler testing
A new \TestUtils\ module has been added to provide shared infrastructure for testing the Hylo compiler. This includes \HyloTestCase\ for managing a shared, type-checked standard library instance across tests, \AnnotatedHyloFileTest\ for parsing and validating \//!\ source annotations (such as expected diagnostics), and \ProgramInstances\ for convenient compilation and interpretation of test files. The module also provides XCTest compatibility shims for non-Apple platforms and helper functions for checking errors and diagnostics.
Sources/TestUtils · high confidence
New documentation generation and formatting tooling
The Tools directory now includes scripts and templates to support documentation extraction and code formatting. A new \doc-index.html.gyb\ template generates an index page for implementation documentation, while \gyb.py\ provides the underlying template engine. The \run-swift-format.sh\ script automates linting and fixing of Swift source code, and \set-hc-version.sh\ manages the compiler version string. Additionally, \retry-once\ is added to handle spurious failures in CI environments.
Tools · high confidence
New test generation tool and shared test infrastructure
Introduces the GenerateHyloFileTests command-line tool, which automatically generates XCTest cases from annotated .hylo source files to streamline the testing of Hylo programs. The tool supports various test types including compilation, type checking, and parsing, and now includes support for generating tests that apply optimizations. Additionally, a shared FullPathInFatalErrors.swift file is symlinked into the test module to ensure consistent error reporting across tests.
Sources/GenerateHyloFileTests · high confidence
New utility types and algorithms in Sources/Utils
This change introduces a comprehensive suite of new utility types and algorithms to the \Sources/Utils\ module. Key additions include concurrency-safe wrappers like \AnyHashableAndSendable\ and \SharedMutable\, lazy evaluation types (\Lazy\, \LazyThrowing\), and a \BitArray\ for efficient bit manipulation. The update also adds data structures such as \DirectedGraph\ (with BFS and reachability support), \DoublyLinkedList\, \CustomWitnessedSet\, and \DistinctNameGenerator\. Furthermore, it extends standard library types with new methods on \Collection\, \Sequence\, \Dictionary\, and \Optional\, alongside helper protocols like \HashableWitness\ and \EquatableWitness\ for custom conformance.
Sources/Utils · high confidence
Repository rebranding to Hylo and addition of CMake build support
The project has been renamed from Val to Hylo, reflected in the repository name, documentation, and the compiler executable name (hc). A CMake build system has been added alongside the existing Swift Package Manager support, allowing users to build the compiler using CMake and Ninja or Xcode. The repository now requires LLVM 20 and Swift 6.2 or higher, and includes configuration files for editor consistency, linting, and CI integration.
(repo-wide) · high confidence
Standard library core types and traits introduced
The StandardLibrary/Sources/Core module now provides the foundational building blocks for the language, including core traits like Collection, Hashable, Equatable, and Comparable, as well as essential types such as Optional, Range, Pointer, and String. This update adds standard collection algorithms (count, contains, reduce, rotate), memory management utilities (MemoryLayout, unsafe\_bitcast), and assertion handling with stacktrace support, establishing the base API for data structures and runtime behavior.
StandardLibrary/Sources/Core · high confidence
Architecture
Introduce new FrontEnd/Types module with unified type system representation
The \Sources/FrontEnd/Types\ directory now contains the complete type system implementation for the compiler's front end, consolidating type definitions into a new module. This includes the \AnyType\ type-erased container, the \TypeProtocol\ for type operations, and specific types for functions (\ArrowType\, \MethodType\), generics (\BoundGenericType\, \GenericTypeParameterType\), and built-ins (\BuiltinType\). The change also introduces \ValueFlags\ to track structural properties and \GenericEnvironment\ to manage constraint solving, effectively replacing the previous scattered type definitions with a cohesive, modular structure.
Sources/FrontEnd/Types · high confidence
Behavioural changes
Added Windows-specific build tool dependency target
A new dummy target has been added to support building with SPM\_BUILD\_TOOL\_SUPPORT\_NO\_REENTRANT\_BUILD=1 on Windows. This change allows build tool plugins to be built by requesting a single target, avoiding the creation of a separate product for each executable target.
Sources/BuildToolDependencies · high confidence
CLI entry point refactored to use symlinks and Driver abstraction
The Sources/hc module now deduplicates the FullPathInFatalErrors.swift file by replacing the source file with a symlink to the shared version, and the main entry point has been simplified to import and invoke Driver.main(), centralizing the CLI execution logic.
Sources/hc · high confidence
Consolidated AST module with core library support and pattern matching enhancements
The AST implementation has been reorganized into the \Sources/FrontEnd/AST\ directory, merging previously separate Core and FrontEnd modules into a unified structure. This change introduces a \CoreEntities\ system that provides structured access to standard library traits (such as \Collection\, \Equatable\, and \Copyable\) and renames the module loading entry point from \makeModule\ to \loadModule\ for consistency. Additionally, the language now supports parsing and type-checking of option patterns (e.g., \if let\), and the \ConditionalBindingStmt\ node has been renamed to \ConditionalBindingStmt\ to improve naming clarity.
Sources/FrontEnd/AST · high confidence
Introduce new compile-time term representation and type-erased container
The Terms module has been restructured to support a new compile-time value representation. A new \AnyTerm\ type-erased container now wraps term instances, providing a unified way to handle different term types while preserving equality and hashing semantics. Several new concrete term types have been added: \ConcreteTerm\ for wrapping hashable and sendable values, \ErrorTerm\ to represent type-checking errors, \GenericTermParameter\ for generic type parameters (skolems), and \TermVariable\ for variable references. These changes introduce new flags in \ValueFlags\ (such as \.hasError\, \.hasSkolem\, \.hasVariable\) to distinguish term behaviors at compile time, enabling more precise tracking of term states during compilation.
Sources/FrontEnd/Terms · high confidence
Introduce structured AST node identity system
The FrontEnd AST now uses a new, type-safe identity system for all Abstract Syntax Tree nodes. This change introduces a \NodeIDProtocol\ hierarchy with specific ID types for declarations (\DeclID\), expressions (\ExprID\), statements (\StmtID\), patterns (\PatternID\), and scopes (\ScopeID\), along with type-erased wrappers like \AnyNodeID\ and \AnyDeclID\. Node identities are now backed by a \NodeRawIdentity\ struct that encodes base and offset bits, enabling efficient hashing and comparison. A centralized \NodeKind\ enum explicitly lists all supported node types (declarations, expressions, patterns, statements) and supports serialization/deserialization, ensuring that node types are consistently identified and tracked throughout the compiler's front-end processing.
Sources/FrontEnd/AST/NodeIDs · high confidence
Introduce structured IR constant operands
The IR now exposes a dedicated \Constant\ protocol and a set of concrete constant types (FloatingPointConstant, IntegerConstant, WordConstant, FunctionReference, VoidConstant, MetatypeType, and WitnessTable) within the \Sources/IR/Operands/Constant\ module. This change replaces ad-hoc constant handling with a unified, type-safe representation for values like floats, integers, function references, and witness tables, ensuring that constants carry explicit IR types and support canonicalization and hashing.
Sources/IR/Operands/Constant · high confidence
Redesigned IR Operand model with existential constants and new built-in helpers
The IR operand representation has been refactored to replace the previous \Constant\ enum with an existential \any Constant\ type, allowing for more flexible constant handling. The \Operand\ type now exposes public properties for accessing the instruction ID, the constant payload, and a boolean flag indicating if the operand is a constant. New convenience methods have been added to create built-in Boolean (\i1\) and machine-word-sized integer (\word\) constants, alongside an existing void constant. The operand's description format has been simplified, and the type now conforms to \Equatable\ and \Hashable\ based on its underlying values.
Sources/IR/Operands · high confidence
Refactored requirement rewriting system for improved abstraction and debugging
The requirement rewriting logic in the type checker has been restructured to use a more abstract, equatable, and testable \RewritingSystem\ and \RewritingRule\ architecture. This change introduces a dedicated \RequirementPrinter\ to generate clearer textual descriptions of requirement rules and terms, aiding in debugging and understanding the rewriting process. The underlying data structures for terms and rules are now more explicitly defined and conform to standard protocols, facilitating better integration with testing and future enhancements to the completion procedures.
Sources/FrontEnd/TypeChecking/Rewriting · high confidence
Refactored type-checking constraint system with improved diagnostic origins
The type-checking constraint system in the FrontEnd module has been refactored to improve diagnostic accuracy and internal structure. Call constraints now track the specific source location of the callee expression (renamed from 'site' to 'valueSite') and account for mutation markers, while member constraints explicitly record the purpose of name usage. A new ConstraintOrigin structure categorizes the reason for each constraint (e.g., annotations, arguments, where clauses), enabling more precise error reporting for issues like where clause violations. The system also introduces methods to collect open variables and supports parallel type checking through these updated constraint definitions.
Sources/FrontEnd/TypeChecking/Constraints · high confidence
Reworked compile-time value representation with canonicalization and flags
The internal representation of compile-time values has been restructured to introduce a new \CompileTimeValue\ enum that unifies type and term handling, along with a dedicated \ValueFlags\ struct to track properties such as errors, type variables, and canonicality. This change ensures that function IDs and type representations are maintained in canonical form, improving consistency during specialization and generic argument resolution.
Sources/FrontEnd/CompileTimeValues · medium confidence
Standard library now supports choosing between built-in and bundled sources
Users can now control how the standard library sources are located by setting the \HYLO\_USE\_BUILTIN\_STDLIB\ environment variable. When enabled, the compiler loads sources directly from the source tree (\Sources\ directory), ensuring that diagnostics point to original files and edits fix issues; otherwise, it falls back to bundled resources. This change also introduces a \pthreadVCE3.lib\ polyfill for Windows to provide threading and basic LibC functions, and refactors the AST initialization to use \loadModule\ and \compilationConditions\ for clearer conditional compilation handling.
StandardLibrary · high confidence
Test coverage
Added driver and source-line parsing tests; Added end-to-end execution tests; Added end-to-end tests for concurrency features; Added end-to-end tests for projection and subscript mechanics; Added interpreter test suite for memory, type layout, and execution; Added standard library test suite for core types and concurrency; Added tests for assembly sanitization, Base64VarUInt encoding, and symbol mangling; Added unit tests for Utils library components; Expanded end-to-end test coverage for Hylo language features; Expanded lowering test coverage for Hylo; Expanded parser test coverage for Hylo language constructs; Expanded type-checking test coverage for the Hylo compiler; Initial test suite for Hylo compiler components; Test infrastructure setup and deduplication via symlinks.
Dependencies
Initial Swift Package Manager configuration for Hylo
The project is now distributed as a Swift Package, defining the 'Hylo' package with a minimum deployment target of macOS 15 and Swift tools version 6.2. This configuration establishes the core build structure, including executable products 'hc' and 'hylo-demangle', and library targets such as 'FrontEnd', 'IR', 'CodeGenLLVM', 'Interpreter', and 'StandardLibrary'. It introduces dependencies on Apple's standard libraries (swift-argument-parser, swift-collections, swift-algorithms, swift-format, swift-syntax, swift-numerics, swift-tools-support-core) and third-party packages (BigInt, Durian, SPIManifest, Yams), alongside the internal 'Swifty-LLVM' dependency, to support the compiler's frontend, intermediate representation, LLVM code generation, and interpretation capabilities.
(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 56 → 49 (-7.2)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 85 → 85 (-0.3)
- Architecture 91 → 83 (-8.2)
- Maturity 72 → 72 (-0.1)
- Readiness 61 → 41 (-19.7)
- Security 40 → 40 (+0.0)
- Performance 63 (new)
Resolved (5)
- Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
- Documentation: hard to navigate (Docs/Compiler/MetatypeLowering.md)
- Documentation: no contributor guidance (README.md)
- Off-boarding risk: anonymized user #1
- Off-boarding risk: anonymized user #2
New (36)
- Ambiguous overload resolution for name(of:). Two methods share the same name and parameter signature (ID), differing only in return type (Name? vs Name). This forces callers to rely on context or explicit casting, which is error-prone and violates the principle of least surprise.
- BuiltinFunction.description (cognitive 29) (Sources/FrontEnd/BuiltinFunction.swift)
- BuiltinFunction.description (cyclomatic 178) (Sources/FrontEnd/BuiltinFunction.swift)
- Coverage not measured — Swift suite
- Documentation: no architecture or design documentation (Docs/Compiler/MetatypeLowering.md)
- Documentation: no installation or build instructions (Docs/Compiler/CLI.md)
- Duplicated block (10 lines × 2) (Sources/IR/Module.swift)
- Duplicated block (11 lines × 2) (Sources/FrontEnd/TypeChecking/TypeChecker.swift)
- Duplicated block (12 lines × 2) (Sources/FrontEnd/Terms/GenericTermParameter.swift)
- Duplicated block (17 lines × 2) (Sources/FrontEnd/Terms/TermVariable.swift)
- Duplicated block (5 lines × 2) (Sources/FrontEnd/TypeChecking/TypeChecker.swift)
- Duplicated block (6 lines × 2) (Sources/FrontEnd/AST/AST.swift)
- Duplicated block (6 lines × 2) (Sources/IR/Module.swift)
- Duplicated block (7 lines × 2) (Sources/FrontEnd/Assertions.swift)
- Duplicated block (7 lines × 2) (Sources/FrontEnd/Terms/TermProtocol.swift)
- Duplicated block (7 lines × 2) (Sources/FrontEnd/TypeChecking/TypeChecker.swift)
- Duplicated block (7 lines × 2) (Sources/FrontEnd/Types/CallableTypeParameter.swift)
- Duplicated block (7 lines × 9) (Sources/CodeGen/FullPathInFatalErrors.swift)
- Duplicated block (7 lines × 9) (Sources/CodeGen/FullPathInFatalErrors.swift)
- Duplicated block (7 lines × 9) (Sources/CodeGen/FullPathInFatalErrors.swift)
- …and 16 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
hylo-lang/hylo 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 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit b86ff706a3a81ef6ae52e15d912988a6c6d5fe1b — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.