ats2-postiats-0.2.3:


This is the 26th release of ATS2, the successor of the ATS
(currently referred to as ATS1) programming language. The compiler
for ATS2 is given the name ATS/Positats, ATS2/Postiats or simply
Postiats.

The official website for ATS is:

http://www.ats-lang.org

ATS-Postiats is hosted at github:

https://github.com/githwxi/ATS-Postiats

Major releases of ATS2 are available at:

https://sourceforge.net/projects/ats2-lang/

Major releases of external packages for ATS2 are available at:

https://sourceforge.net/projects/ats2-lang-contrib/

Here is a list of major additions and changes since the last release:

1. Enforcing that the definition of each declared function be
   lam-abstract. For instanct, the following code results in an
   error during compilation:
   fun fact = fix f(n:int): int => if n > 0 then n*f(n-1) else 1
   Of course, one can always have:
   val fact = fix f(n:int): int => if n > 0 then n*f(n-1) else 1
(*
//
// HX-2015-09-15: This is re-implemented:
//
2. Supporting the use of locally defined templates:
   local fun foo(): int = 0 in fun{} foo2() = foo() + 1 end
   local fun{} foo(): int = 0 in fun{} foo2() = foo() + 1 end
*)
3. Changing some names:
   _ATS_CCOMP_HEADER_NONE -> _ATS_CCOMP_HEADER_NONE_
   _ATS_CCOMP_PRELUDE_NONE -> _ATS_CCOMP_PRELUDE_NONE_
   _ATS_CCOMP_PRELUDE_USER -> _ATS_CCOMP_PRELUDE_USER_
   _ATS_CCOMP_PRELUDE_USER2 -> _ATS_CCOMP_PRELUDE_USER2_
   _ATS_CCOMP_RUNTIME_NONE -> _ATS_CCOMP_RUNTIME_NONE_
   _ATS_CCOMP_EXCEPTION_NONE -> _ATS_CCOMP_EXCEPTION_NONE_
   _ATS_CCOMP_RUNTIME_TRYWITH_NONE -> _ATS_CCOMP_RUNTIME_TRYWITH_NONE_
4. Moving libatsynmark to utils/libatsynmark
5. Fixing an issue that causes crash due to compiling atstyvar_type.
   See hitype_tyvar_test in [pats_ccomp_hitype] for more information.
6. Changing the keyword 'require' to '#require' (for atspkgreloc)
7. Adding into ATSPRE string/string_forall and string/string_iforall
8. Reorganizing:
   moving the fprint-functions in prelude into prelude/fprintf.cats
9. Fixing a bug in CATS-parsemit (that affects parsing #if(0) ... #endif)