Hi, there, 

HX-2020-11-22: 

(* 
HX-2018-04-07: Let us get started!!! 
*) 

As of today, I am pleased to announce that ATS3 has reached a stage 
where it can be realistically used in software construction. This is 
achieved after slightly more than two and one-half years of continual 
development by yours truly :) 

###### 
# 
# The current status 
# 
###### 

XATSOPT: 

Xatsopt is a functioning compiler implemented in ATS2 for translating 
ATS3 into a typed intermediate language of the name XATSCML, which is 
both C-like and ML-like. It is planned for xatsopt to further 
translate XATSCML into XATSCL0, a low-level C-like language. I now 
primarily see xatsopt as a library (libxatsopt) for implementing tools 
to support programming with ATS3. 

XATS2JS: 

Xats2js is a functioning compiler implemented in ATS2 for translating 
XATSCML into JavaScript (or JS for short). It should be noted that 
xats2js can compile tail-recursive calls into local jumps, effectively 
supporting the common practice in functional programming of writing 
loops as tail-recursive functions. 

I will give detailed explanation elsewhere on using xats2js. Generally 
speaking, one can now practice a form of co-programming with ATS3 and 
JS. The JS code generated by xats2js from compiling ATS3 source can be 
directly combined with other JS code (as if the generated code were 
manually written in JS) 

###### 
# 
# Future Development 
# 
###### 

Documenting Xatsopt: 

This has been assigned a high priority. It is hoped that other 
people interested in ATS3 can start developing tools for ATS3 after 
a minimal amount of documentation on xatsopt is made available. 

Advanced Type-Checking: 

While one can specify with linear types and dependent types in ATS3, 
there is no type-checking for such advanced types in xatsopt. I plan 
to concentrate on implementing support for such type-checking in the 
next phase of ATS3 development. 

###### 
# 
# A little history of ATS3 
# 
###### 

Essentially, ATS3 refers to the third edition of ATS, and ATS/Xanadu 
is currently the only implementation of ATS3. Note that the names ATS3 
and ATS/Xanadu are often used interchangeably. 

In the ATS family of languages, the first implementation is named 
ATS/Proto (2004) and the language it implements is referred to as 
ATS0. Please note that the implementation of ATS/Proto is written in 
OCaml. The next implementation is ATS/Geizella (2007), which is also 
written in OCaml. And the language implemented by ATS/Geizella is 
referred to as ATS1. ATS/Anairiats (2008) is an implementation of ATS1 
in itself; the implementation is first compiled by ATS/Geizella and 
then by itself, succeeding in so-called bootstrapping. The next 
edition of ATS is ATS2, which is given an implementation of the name 
ATS/Postiats (2013) written in ATS1. 

ATS/Xanadu implements ATS3 and the implementation is written in ATS2. 
While there is currently no plan to bootstrap ATS3 by implementing it 
in itself, it is perceivable that ATS/Xanadu can be readily translated 
(manually) into such an implementation since the difference between 
ATS2 and ATS3 in terms of both syntax and semantics is fairly minor 
(for the part being used in compiler implementation). 

################################################################## 

Cheers! 

--Hongwei 

################################################################## 

For previously post messages: 

https://github.com/githwxi/ATS-Xanadu/tree/master/docgen/NOTES 
##################################################################


-- 
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 ats-lang-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ats-lang-users/3601c4d6-1c7c-4eb3-97fa-726b1ec60a72n%40googlegroups.com.

Reply via email to