Languages
An ATS introduction sends readers searching for its current version
Hongwei Xi’s programming book drew readers toward ATS, then into a clarification of what is stable, what is maintained and what is still being built.
Introduction to Programming in ATS is Hongwei Xi’s book about a language that combines functional programming, dependent and linear types, and theorem-proving. It introduces those features while warning that newcomers without substantial programming experience may find the material dense. On Hacker News, the immediate puzzle was less how to write ATS than which version a newcomer should investigate.
The book sends a reader to the repository
The book offers a long route from expressions and functions to proofs, memory access and templates. Its chapters put practical programming alongside the more demanding machinery: interaction with C comes before dependent types, while later sections cover memory allocation, locking and asynchronous channels. The introduction presents breadth, not a small language that can be absorbed at a glance.
That breadth prompted a more immediate check on the project’s health. Linking the ATS-Postiats repository, esafak initially described it as “Actively developed : https://github.com/githwxi/ATS-Postiats”. Repository activity seemed to answer whether ATS was still moving. The first substantive reply separated activity from the development of the language itself.
The version trail changes the answer
In response, mlinksva distinguished ATS2, called Postiats, from ATS3, called Xanadu. The former appeared to be receiving build changes; the latter appeared to be the focus of active development. Repeated, minimally descriptive commit messages made that distinction hard to follow. In an edit acknowledging the correction, esafak wrote “You are right, I did not know there was a third version.” The question had changed from whether development existed to where it was happening.
A later reply from doublec made the practical distinction sharper: “ATS2 is stable and usable today and release notes are in the CHANGES-ats2 in the repo.” According to that account, recent ATS2 changes mostly support building ATS3, while ATS3 can compile itself but is not yet generally usable. The three-person exchange became a clarification rather than a sustained split: esafak acknowledged the missing version, and both respondents distinguished ATS2 maintenance from ATS3 development.
The same reply supplied a reason for the new version: two-layer type checking, with ML-style checking first and dependent types above it, intended to lower the learning curve. That directly addressed the difficulty signaled by the book’s introduction. But doublec qualified the account of ATS3’s usability as a personal assessment and pointed readers to the ats-lang-users Google group for progress.
Other readers build a gentler route in
Alongside the version discussion, ddellacosta offered another entrance: Aditya Siram’s talk, A (Not So Gentle) Introduction To Systems Programming In ATS. The blog posts supplied by doublec added examples from ATS1 and ATS2. Together, those suggestions gave an interested reader ways to approach the language besides proceeding straight through the book.
The recommendations then widened beyond ATS. After srean paired it with MLton and Felix as ML-inspired systems for producing fast code through whole-program optimization, ashkankiani answered from the perspective of building a language. MLton had already influenced that work; ATS remained harder to absorb, but “I keep it as a bit of a potential north star.” For this reader, difficulty did not erase its value—it made ATS a source of design ideas to return to.
The next chapter waits on ATS3
The version exchange ended with three participants distinguishing the project’s branches rather than treating repository activity as a single signal. Two identified ATS2 as being in maintenance, and doublec supplied the practical recommendation: it remains usable, with release notes available in the repository.
ATS3’s readiness remained less definite. Its ability to compile itself did not, in doublec’s account, make it generally usable. Meanwhile, esafak’s call for community development left a separate question open: how an interested outsider finds a clear account of the language’s present state.
The next development to watch is whether ATS3’s proposed layering makes the language easier to learn. For now, doublec directed readers toward the users group for progress, while the book, talk and blog posts offered routes into the ATS already available.