Skip to main content
Last updated September 02, 2011 20:37, by Guy Steele

projectfortress Wiki

Welcome! We are mostly done moving our old Trac-based website to The code repository and issue tracking are now completely migrated to this new site; we still need to finish moving the old Wiki and blog contents over.

If you have questions about your mailing list subscription or accessing the Mercurial repository, click here.

  Project Overview    Getting Started    FAQ    News Archive  
  Language Overview    Tutorial    Documentation    Code Examples  
  Publications    Downloads    Video    Blog  


We think it would be good to adopt Maven, and perhaps Hudson or some similar tools. This will require some directory reorganization to bring things into their expected shape. If anyone in our community has experience with these tools, we'd love to hear from you. If there are other standard-ish tools that might be helpful, we'd like to hear about those, too.

News: August 2011

  • Basic (one-dimensional) arrays have been added to the set of "native" data types that the compiler know how to handle.
  • File input and output streams have been added to the set of "native" data types that the compiler know how to handle.
  • We have been analyzing the important special cases of dynamic type inference that can be handled especially efficiently. Not surprisingly, covariant and contravariant type parameters make this process harder.
  • Our paper on "Type Checking Modular Multiple Dispatch with Parametric Polymorphism and Multiple Inheritance" has been accepted for presentation at the 2011 ACM SPLASH conference as an OOPSLA technical paper.

News: July 2011

  • The compiler is now substantially faster in compiling certain files because of some caching (memoization) we have put into the type checker. On one file of about 160 lines, the total compilation time has dropped by a factor of ten! Your mileage may vary.
  • The compiler now implements the Character data type, character literals, and several dozen methods for the type Character. See the blog entry for more details.
  • The compiler now implements bitwise NOT, AND, OR, and XOR operations on 32-bit and 62-bit integers; MIN and MAX operations on integers as well as floats; and exponentiation on strings (resulting in the concatenation of n copies of a string). See the blog entry for more details.

News: June 2011

  • The Fortress blog is now online at, and the quick link on the wiki home page now takes you there.
  • We now have MathJax functioning in both the wiki and the blog. This third-party open-source software renders LaTeX expressions occurring in web pages. We are still addressing certain issues of convenience and performance, but already it allows us to include expressions such as \(\sqrt{x+y}\) in running text.
  • The language has been revised to solve a serious problem. Before now, methods (including getters and setters) declared in traits in APIs were always assumed to be abstract. The new rule is that a method declared in an API is assumed to be concrete unless the keyword \(\mathtt{abstract}\) is present.
  • The language has been changed to allow the type \(\mathrm{None}\) to be used as the return type of a function or method; this is also the type of a \(\mathtt{throw}\) expression. (Previous documentation has referred to this type as \(\mathrm{BottomType}\), and this type could not be mentioned in code.)
Please Confirm