Thanks for your enthusiasm! ATS3: For constructing quality code productively 1. Correctness through advanced types 2. Productivity through code sharing and meta-programming
Right now, there is not yet a compiler from ATS3 to C. I am still in the process of designing an intermediate language for compiling to C/C++. We can compile ATS3 to JavaScript and also to Python3. For this release, I will just push out a compiler from ATS3 to JS (ATS3-to-JS-in-ATS3). This compiler has been successfully bootstrapped in the sense that it can compile its own source, which for now consists of about 160K lines written in ATS3. By the way, the first compiler for ATS3 is ATS3-to-JS-in-ATS2, which consists of about 120K lines written in ATS2 (ATS-Postiats). What I will push out is a big file of JS code that you can use node (or nodejs) to run to compile ATS3 programs. Yes, you can use 'bun' to run it, too. For now, we will focus on using 'node'. In the future, we may even use Quick JS (QJS) by Fabrice Bellard to run the file. Programming in ATS3 as of now is likely a very different programming experience. Please be patient. In a nutshell, an ATS3 program can contain many templates; the compiler fetches the code for these templates; in the fetched code, there can be further templates, and the compiler does template resolution recursively. And the programmer writes code to affect the outcome of template resolution. If you have experience with C++ templates; it helps. If you are familiar with type classes in Haskell, it helps, too. If one programmer implements some templates and another puts them on the search path of the compiler, then code sharing happens. Templates are different from library functions in one big sense: the user of a template can write code to modify the template from the outside. There will be many many more new concepts on the way. Hopefully, learning ATS3 can become an enlightening journey for you. If you would like to help enlighten others by posting something here or elsewhere, please be my guest. Cheers! Hongwei Xi On Thursday, April 24, 2025 at 2:52:10 PM UTC-4 gmhwxi wrote: > Hi, there, > > I will be releasing the first version of ATS3 shortly. > More will be said in a followup email. > > For those who are familiar with ATS2, I would like to emphasize > that ATS3 is very different from ATS2 at this point. Many advanced > features of ATS2 have yet to be incorporated into ATS3. > > As you can see, there are two words in 'program verification'. > Verification needs to be built on top of a productive approach > to program construction. > > While ATS2 focuses on program verification, ATS3 has shifted the > focus on program construction. The first priority of ATS3 is to provide > a means for programmers to construct programs in a higher productive > manner. The feature of templates in ATS3 is my attempt at it, and it is > likely my last attempt at it as well. One could only experiment for so much > and so long in one's own limited capacity. > > Cheers! > > Hongwei Xi > Principal Designer and Implementer of ATS PL System > > > > -- You received this message because you are subscribed to the Google Groups "ats-lang-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/ats-lang-users/27c2d4f6-9c69-4619-bf83-5e5a699fb287n%40googlegroups.com.
