Guy Steele's new programming language

Fortress is an experimental new language with implicit support for parallel computation and an extensible syntax that lets you program with Unicode characters, subscripts, and superscripts.
Written by Ed Burnette, Contributor

How would you like to program like this?

Fortress example

You can with Fortress, a new general-purpose statically typed language being developed by Guy Steele's Programming Language Research Group at Sun. Fortress allows the use of Unicode characters in program identifiers, as well as subscripts and superscripts (ASCII equivalents are available). This and other design decisions were motivated in part by a goal of making the scientist/programmer's life as easy as possible, preserving the look of standard mathematical notation. From the web site:

Fortress is a new programming language designed for high-performance computing (HPC) with high programmability. In order to explore breakaway approaches to improving programmability, the Fortress design has not been tied to legacy language syntax or semantics; all aspects of HPC language design have been rethought from the ground up.

As a result, we are able to support features in Fortress such as transactions, specification of locality, and implicit parallel computation, as integral features built into the core of the language. Features such as the Fortress component system and test framework facilitate program assembly and testing, and enable powerful compiler optimizations across library boundaries. Even the syntax and type system of Fortress are custom-tailored to modern HPC programming, supporting mathematical notation and static checking of properties such as physical units and dimensions, static type checking of multidimensional arrays and matrices, and definitions of domain-specific language syntax in libraries.

Moreover, Fortress has been designed with the intent that it be a "growable" language, gracefully supporting the addition of future language features. In fact, much of the Fortress language itself (even the definition of arrays and other basic types) is encoded in libraries atop a relatively small core language.

A prototype implementation that runs on the Java VM is now available in source code format under the BSD license. There is also a mailing list for interested parties.

Related articles:

Editorial standards