Loading comparison...
Loading comparison...
A statically-typed functional language with dependent types and linear types for systems programming with formal verification.
ATS (Applied Type System) is a statically-typed programming language created by Hongwei Xi at Boston University, with ATS2 (Postiats) being its second major iteration released in 2013. The language uniquely combines functional programming, imperative programming, and theorem proving within a single system, enabling developers to write code with formal correctness guarantees enforced by the compiler. ATS's dependent type system allows types to be parameterized by values, enabling compile-time verification of properties like array bounds, pointer validity, and resource usage — catching entire categories of bugs that runtime testing cannot.
Linear types in ATS track resource ownership at the type level, providing memory safety guarantees comparable to Rust but through a more expressive type-theoretic foundation. The language compiles to C, producing efficient executables suitable for systems programming, embedded systems, and performance-critical applications. ATS has demonstrated competitive performance with C and C++ in benchmarks while providing mathematical proof that programs satisfy their specifications.
The language supports proof-carrying code where programmers write proofs alongside implementations, and the type checker verifies that proofs are valid. ATS has been used for building verified web servers, certified numerical libraries, and provably correct data structures. While the language has a steep learning curve due to its advanced type system, it represents the frontier of practical programming language research where formal methods meet real-world software engineering.
ATS diffs are uniquely critical because changes affect both executable code and formal proofs simultaneously — a modified type signature can invalidate correctness proofs across the codebase. Comparing ATS files requires reviewing changes to dependent types, linear resource tracking annotations, and proof terms that guarantee program properties.
Teams working with ATS should diff files carefully when modifying verified algorithms, updating type-level invariants, or changing memory management patterns.
UtraDiff compares ATS files with syntax highlighting for dependent types, linear type annotations, proof functions, and template implementations. Side-by-side view reveals changes to type-level proofs and resource tracking annotations that enforce memory safety at compile time.
Inline view consolidates modifications across staload imports and function signatures with complex type constraints. Alt+arrow navigation jumps between changed proof obligations, critical for verifying that safety invariants are preserved.
Supported extensions: .dats .sats .hats