What is AST?
AST (AT&T Software Technology) OpenSource software is a collection of libraries and commands for UNIX and Windows. Included are re-implementations of many POSIX and X/Open APIs and utilities. It provides a portable and efficient environment that behaves consistently across a range of operating system and hardware implementations. portable because one collection of source builds unattended on all target architectures, efficient because the underlying algorithms are continually updated to match best in class performance.
Isn't AST old technology?
Although AST has been around since the mid 80's it has kept up with the times and is actively used and supported both inside and outside AT&T. And even though the world seems to be all about small device Apps, Java, JavaScript, Cloud, etc., support for all that technology basically relies on the software pardigms introduced by AT&T Bell Labs' UNIX and C in the early 70's (.e.g., processing massive data, cheap reliable servers, VM infrastructure.) This is not a swipe at modern software practice, but a recognition that there is still a place for UNIX, C and AST technology in the current software ecology.
Why did we write AST?
Much of AST has its roots in the first releases of ksh88 and nmake in the late 80's. Hardware, UNIX operating system, and C language implementations varied wildly between vendors and System-V vs. BSD. It was very difficult to package software that would be compatible with that rapidly evolving environment. In addition, it had negative impacts on stability between releases of our own code (we do a fine job of destabilizing all by ourselves, thank you very much, so evolving target software seriously compounded the problem.) In addition, AST was being used on very large amounts of data (for the day) and some of the standard libraries were simply not up to par with the requirements (remember, commodity disks were measured in Mi bytes and memory was measured in Ki bytes.) ksh and nmake were pushing space and time boundaries not met by the (at that time de-facto) standard libraries, so we ended up designing and implementing sfio(3), vmalloc(3), and cdt(3), and never stopped.
What benefits do you see in using AST?
Portability and efficiency were early goals of the effort. This has paid off many times over. One of the joys of coding against AST is that once you get a new library or command working on your master build machine you know that, modulo resources, it has a 99% probability of building and running on any AST supported architecture.
What's so great about ``disciplines & methods'' -- isn't that just roll your own C++?
The discipline & method API style is the best concept to arise out of the AST corpus. We wish we could have learned it earlier on. It allows us to design an API once and then evolve it without forcing consumers to recode or retool. The resulting coding style places the public and private parts in the right place in the software hierarchy: algorithms are implemented in private source files, not public headers; private data is hidden in private source files, not public headers; there are no language overloading constructs to affect code readability; old code benefits from new algorithms without being recompiled; methods fit perfectly in the runtime plugin model. So yes, we like it.
Who are the authors of AST?
AST is developed primarly by Glenn Fowler, David Korn, and Phong Vo of AT&T Research. These three have been together from the start. A few of the utilities were built from GNU or BSD source code.
What are the licensing terms for AST?
AST is available under the EPL 1.0 (Eclipse Public License version 1.0) license which is an Open Source License approved by the Open Source consortium. A few utilities use BSD or GPL licenses. All of these are Open Source licenses.
Can closed source applications use AST?
The EPL license does not require you to make your source code available in order to use EPL software. The GPL license requires you to make source code available for any binaries that use GPL code. As long as you do not use any GPL code, you can use AST without making your source code available.
Why isn't AST split into smaller packages?
The decision on what components should go into what packages has always been fairly subjective. We hope that the GIT repository, started mid 2012, will eliminate the need for smaller packages.
What is ast-open package?
The ast-open package contains all of the AST Open Source. Inside AT&T there is also an ast package that contains AT&T proprietary code along with ast-open.
Is AST supported?
Currently AST is unsupported. However since AST is used internally at AT&T, it is actively maintained for internal use. By providing AST under an Open Source license, we are hoping that some organization(s) will eventually provide support for AST.
Where do I report bugs in AST?
There are two mailing groups for AST that you can use for this purpose as well as to get more AST information. is more general, whereas is for users that are developing applications that run using AST. Anyone may read the group archives, but you must join the group before you can post to it. We are happy to receive bug fixes from users and will merge them into our base software.
Does AST conform to the X/Open standards?
The intention is to conform to the latest standards. To the best of our knowledge the documentation notes individual components that stray from the standards. If you find otherwise, send a message to and it will be addressed.


Which languages have been used to develop AST?
AST is written almost entirely in C and ksh(1). jmake(1), the nmake(1) JAVA component, is written in JAVA.
Why don't you incorporate some user community patches in a timely manner?
Much of AST's leverage has been through its API design. When a patch infringes on the current design, or a future design, it warrants some thought. That thought process typically can't be forced. The hardest problems involve { dgk gsf kpv } and go back and forth, sometimes for weeks. Current issues requiring more thought involve threads and process global resources: critical data structure manipulation, current working directory, signal traps, signal delivery, thread resource recovery, converting standalone commands to thread safe builtins. A guiding principle is to contain as much complexity as possible behind much simpler APIs.
Another timely patch answer:
AST is built on a build farm consisting of different UNIX and Windows systems and different compiler implementations and settings. A patch doesn't make it into a beta release until it builds and tests OK on the farm. Since AST uses the bleeding edge changes for its own build process, additional initial testing is done on the master build system before releasing it to the farm. The worst case scenario here is a patch-introduced bug that affects ksh(1) or nmake(1) and causes the next farm build to crash.
show all answers hide all answers

August 27, 2012