Skip to content

Repository files navigation

FTS — Formal Type Surface

FTS is an indentation-based executable specification language. A human-readable .fts model can define domain objects, deterministic utilities, executable examples, checked properties, morphisms, and machine-checkable evidence.

This repository is a snapshot. Development happens in digitable-lol/flang — open issues and pull requests there. Nothing here is updated automatically: no robot overwrites this repository, so anything you push stays. It also means the code here ages, and flang is the copy to read when the two disagree.

Why the two repositories became one

FTS is the total subset of the flang language: every .fts model is a valid flang program lying entirely in the total class, the one whose termination the compiler proves rather than the author promises (flang/SPEC.md, section 1).

The FTS core is by now written in flang itself and lives in flang/core/, next to the reference implementation it is checked against. Keeping it in a separate repository would mean maintaining two copies of the same code, and the copies would diverge the first time someone fixed one of them and forgot the other.

What is here

The FTS core, the tools built on it (ftsc, ftsvm, ftspec), the JSON schema, the examples, and the documentation in docs/ — the FTS part of the flang repository, without the language itself.

Which repository you need

  • FTS as a library, as a CLI, or as an MCP server for agents: this mirror is usable, but flang carries the newer version of the same code;
  • the language — sum types, collections, strings as data, recursion, pattern matching — its compilation to JavaScript, C, Go, Rust, or Python, or the FTS core written in flang: flang only. None of that is mirrored here.

An introductory course, in Russian: FTS: зачем разработчику исполняемая спецификация.

License

BSD 2-Clause. See LICENSE; the intent behind it, in Russian, is in LICENSE-RU.md.

Earlier versions were released under Apache-2.0, inherited from the original repository rather than chosen. Anyone who received the code under Apache-2.0 keeps those rights; the change applies to later versions.

About

FTS — типизированная формальная поверхность: исполняемые спецификации на русском и английском, компилятор, инструменты и сертификаты.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages