# ATS2-0.2.3 released

**URL:** <https://discourse.ats-lang.org/t/ats2-0-2-3-released/143>\
**Category:** Google Group\
**Created:** [September 23, 2015, 3:10am UTC](https://discourse.ats-lang.org/t/ats2-0-2-3-released/143 "2015-09-23T03:10:56Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![gmhwxi](https://avatars.discourse-cdn.com/v4/letter/g/67e7ee/32.png) [@gmhwxi](https://discourse.ats-lang.org/u/gmhwxi)\
**Post date:** [September 23, 2015, 3:10am UTC](https://discourse.ats-lang.org/t/ats2-0-2-3-released/143/1 "2015-09-23T03:10:56Z")

</div>

Hi,

I am glad to announce the release of ATS2-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](http://www.ats-lang.org)

ATS-Postiats is hosted at github:

> **[githwxi/ATS-Postiats](https://github.com/githwxi/ATS-Postiats)**
>
> ATS2: Unleashing the Potentials of Types and Templates - githwxi/ATS-Postiats

Major releases of ATS2 are available at:

> **[ats2-lang](https://sourceforge.net/projects/ats2-lang/)**
>
> Download ats2-lang for free. ATS2: Unleashing the potentials of types and templates. ATS is a statically typed programming language that unifies implementation with formal specification. It is equipped with a highly expressive type system rooted in...

Major releases of external packages for ATS2 are available at:

> **[ats2-lang-contrib](https://sourceforge.net/projects/ats2-lang-contrib/)**
>
> Download ats2-lang-contrib for free. External Contributions to the ATS2 PL System. This project primarily consists of external contributions made to the ATS2 programming language system in the forms of library packages, tutorials, examples, and all...

A google-group for discussing ATS and related issues is at:

[https://groups.google.com/forum/?fromgroups#!forum/ats-lang-users](https://groups.google.com/forum/?fromgroups#!forum/ats-lang-users)

The following packages are included in this release:

ATS2-Postiats-0.2.3.tgz # requiring libgmp  
ATS2-Postiats-0.2.3-intmin.tgz # require no libgmp  
ATS2-Postiats-contrib-0.2.3.tgz # contributed packages  
ATS2-Postiats-include-0.2.3.tgz # CATS-files w/ BSD-like license

I have included ATS2-Postiats-contrib (instead of releasing it  
separately) as it is truly by now an indispensible part of ATS2.

After installing ATS-Postiats-include, one can compile the C code  
generated from ATS source without installing the ATS compiler. So  
a convenient way to distribute software written in ATS is to simply  
release the C code generated from the ATS source.

See below for some major additions and changes since the last release  
(ATS2-0.2.2).

Cheers,

–Hongwei Xi

Computer Science Department  
Boston University  
111 Cummington Street  
Boston, MA 02215

Email: hw…@cs.bu.edu  
Url: [http://www.cs.bu.edu/~hwxi](http://www.cs.bu.edu/~hwxi)  
Tel: +1 617 358 2511 (office)  
Fax: +1 617 353 6457 (department)

###### beg of CHANGE-ats2

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)

###### end of CHANGE-ats2

Monitor Your Dynamic Infrastructure at Any Scale With Datadog!  
Get real-time metrics from all of your servers, apps and tools  
in one place.  
SourceForge users - Click here to start your Free Trial of Datadog now!  
[http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140](http://pubads.g.doubleclick.net/gampad/clk?id=241902991&iu=/4140)  
ats-lang-users mailing list  
[ats-lan...@lists.sourceforge.net](mailto:ats-lan...@lists.sourceforge.net)  
[https://lists.sourceforge.net/lists/listinfo/ats-lang-users](https://lists.sourceforge.net/lists/listinfo/ats-lang-users)
