A group of developers has released the first public, open-source version of Avail, a multi-purpose paradigmatic programming language designed to articulate and solve complex programming problems.
Avail 1.0.0 is a statically typed programming language whose syntax and features lend themselves to solving software engineering problems with their natural expressions. The current release is a development milestone, not yet ready for production use. Using the Java Virtual Machine for its runtime, Avail uses dynamic, modular and unrestricted grammar to concurrently explore “all possible parses in pursuit of a semantically unambiguous interpretation,” according to the Avail website. The Avail team’s goal is to provide development tools to build a language around a particular problem, rather than adapting an existing language to solve it.
“Avail is the pioneer of articulate programming,” the language’s website stated. “Its numerous features cooperate for a singular purpose: to enable a programmer to talk about [his or her] objects of interest using the best language for the domain of her problem.”
Some other features of Avail include:
• An infinite algebraic type lattice that confers a distinct type upon every distinct value
• Intrinsic support for immutable types, including tuples, sets, maps, functions and continuations
• Automatic memory management capable of coalescing equivalent immutable values
• A concurrency model featuring lightweight threads multiplexed onto a pool of native threads, managed by a time-slicing, priority-driven preemptive scheduler
• Fully asynchronous I/O: no Avail thread is ever blocked waiting for an I/O event
• A module system supporting hierarchical encapsulation and method renaming
• Separation of source code and object code
• A universal serialization framework supporting functions, continuations and lightweight threads
• A mechanism for observing expressions rather than values
• An optimizing dynamic translator that supports type inference, function inlining, and de-optimization
• Bidirectional foreign function interface to Java
“Programmers must continually solve adaptation problems in order to translate high-level concepts from the rich vocabulary of a natural language,” Avail’s introduction states. “Many everyday problems are hard enough to describe and solve using humanity’s best tools for communication: natural language and visual metaphor. Any programmer who has ever worked on a nontrivial problem does not need to imagine the difficulty of encoding a good solution using only low-level concepts and a handful of special keywords.”
Avail’s documentation is available here, and the articulate language can be downloaded for Windows using a Git and Apache Ant binary installer. It requires Java SE 7 to run the VM. Ant and Git command-line tools can be used to clone the Avail repository for Linux and Mac OS X.