Skip to Content Java Solaris Communities Partners My Sun Sun Store United States Worldwide

»  Spotlight Articles
»  Projects
»  Publications
»  People
»  Awards
»  Events
»  Downloads
»  Internships
»  Contrarian Minds
»  About Sun Labs

Fortress FAQ

  1. What is Fortress?
  2. Is Fortress a language intended only for high-performance computing?
  3. Is Fortress an extension of The Java(TM) Programming Language? What about Fortran?
  4. Is Fortress designed to replace the Java Programming Language?
  5. How does Fortress compare to Chapel? How does it compare to X10?
  6. In what ways does Fortress syntax resemble mathematical notation?
  7. What support does Fortress provide for parallelism and locality?
  8. Where can I download the code?
  9. How far along are you?
  10. What platforms will Fortress run on?
  11. How do you plan to convince programmers to use your language?
  12. Is there a mailing list announcing new developments regarding Fortress?
  1. What is Fortress? 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.

  2. Is Fortress a language intended only for high-performance computing? No. Fortress is a general-purpose programming language. Its support for large-scale parallelism and management of data locality, its use of mathematical notation for syntax, and its static checking of units and dimensions (among other things) make it particularly well suited to high-performance computing.

  3. Is Fortress an extension of The Java(TM) Programming Language? What about Fortran? Fortress is a new language. Although many of its features are inspired by existing languages, it isn't an extension of any of them. Syntactically, many Fortress expressions closely resemble mathematical notation.

  4. Is Fortress designed to replace the Java Programming Language? No. Although Fortress and the Java Programming Language are both general-purpose programming languages, the design tradeoffs are significantly different. The Java Programming Language is designed to use a familiar syntax and class system while providing as much portability as possible. As a result, it is well suited for network and embedded programming. In contrast, Fortress uses many novel language features in an attempt to alleviate the tension between modern software engineering principles and high performance computing. Fortress is well suited to programming on massively parallel computers, as well as on smaller systems.

  5. How does Fortress compare to Chapel? How does it compare to X10? Fortress was one of three languages for high-performance computing initially developed as part of the DARPA HPCS Program. The others are X10 (from IBM) and Chapel (from Cray). X10 is an extension to the Java(TM) Programming Language that supports high performance computing with a message-passing-based protocol for thread-to-thread communication. Chapel is a parallel language based on a shared memory model. Fortress differs from both of these languages in several respects. In an attempt to improve programmability for high-performance computing, Fortress syntax emulates mathematical notation as closely as possible. It has a novel type system to better integrate functional and object-oriented programming; it allows for specification of data distribution through the use of ``distribution" data structures; it supports static checking of physical units and dimensions; it supports embedding of domain-specific language syntax in programs; and it includes a component system to facilitate the process of compiling, linking, and deploying programs.

  6. In what ways does Fortress syntax resemble mathematical notation? The NAS (NASA Advanced Supercomputing) Conjugate Gradient Parallel Benchmark is a small program used in high-performance computing to evaluate and compare performance of parallel supercomputers. A description of this benchmark can be found at: http://www.nas.nasa.gov/Resources/Software/npb.html Here is its implementation in Fortress:

    (Click here to view the Fortress code as a separate PDF file.) Note the use of subscripts and superscripts, the fact that multiplication is represented simply by writing the operands side by side (placing spaces in between them), the rendering of rational expressions, and the use of Unicode symbols for variables and operators.

  7. What support does Fortress provide for parallelism and locality? Fortress is designed to make parallel programming as painless as possible. Many of the core language constructs in Fortress, including function argument evaluation and ``for" loops, are parallel by default. Threads can synchronize using atomic code blocks. Fortress supplements this implicit fork-join threading model with explicit futures, and provides programmers with ways to control where particular threads are run and how large objects are laid out in memory.

  8. Where can I download the code? A preliminary, open source, interpreter implementing a small core of Fortress language features is available at: http://fortress.sunsource.net/ This interpreter runs on the JVM(TM). To try out the code, you can check out our Subversion repository and follow the build instructions in the included README file. For now, we only distributing this code through the Subversion repository; no tarballs, compiled binaries, etc., are available. Our intention is to grow this implementation over time, with the help of university partners and other interested third parties. We expect that many parts of this interpreter will be used as components of a complete Fortress compiler, which is our long term goal.

  9. How far along are you? We have released a series of draft specifications of the language and we have published formal calculi and soundness proofs of several of the core language features. We've presented a demo showing parallel Fortress execution on a number of small programs at Sun Open House 2006 in Menlo Park CA. Look for links to source code, tutorials, and other supporting materials at:
    http://research.sun.com/projects/plrg

  10. What platforms will Fortress run on? Fortress has been designed to run well on a variety of platforms, including supercomputers with large stores of addressable memory, commodity clusters, workstations, etc. Many aspects of the language have been designed to be as portable as possible. Our initial implementation effort targets the JVM.

  11. How do you plan to convince programmers to use your language? Fortress uses a widely known syntax that has evolved over thousands of years: mathematical notation. It allows programmers to reason in their problem domain without translating entities such as quantities and physical units into unfamiliar abstractions. We expect these features will help to keep the learning curve down for new programmers. We are also soliciting feedback on the language design from HPC programmers, in government, academia, and industry, in order to improve the design and to get more buy-in. But our primary strategy for getting programmers to adopt our language is to design the best language we can. We aren't tying our hands behind our back by attempting to support legacy and obsolete language features.

  12. Is there a mailing list announcing new developments regarding Fortress? Yes. Join the project as an observer to automatically sign up for the Fortress-announce mailing list. Please feel free to add yourself to the other available mailing lists.

Back to Programming Language Research Group

Would you recommend this Sun site to a friend or colleague?
Contact About Sun News Employment Privacy Terms of Use Trademarks Copyright 1994-2009 Sun Microsystems, Inc.