Closing in on an initial release of Tart

I’ve been absent from the list for a while due to a number of unexpected circumstances, including a hard drive failure on my primary desktop machine. However, the good news is that after 4 years of work, my LLVM-based compiler is nearing the state where I feel comfortable declaring an official 0.1 release.

The language is called “Tart” and the one line summary is “Tart is to C++ as Python is to Perl”. There’s no one big idea that defines Tart, instead there are hundreds of little ideas, mostly inspired by other languages such as C#, Python, Scala, and many more. It’s intention is to be a general-purpose, statically-typed language for application developers that are concerned about performance - I’d like to target computer games and real-time audio processing as two application areas for which Tart will (eventually) be well-suited.

Tart’s focus is on solving day to day problems with practical solutions, rather than being an academically “pure” language. It supports a range of different programming methodologies (OOP, closures, reflection, and template metaprogramming are some examples), rather than enforcing one particular vision of software development. At the same time, however, it tries to be “minimalist”, providing a single obvious way of solving the most common problems, and eliminating language features that don’t justify themselves in terms of improved programmer productivity. To give an example of Tart’s flexibility, all of the core Tart classes - including such fundamental classes as Object, Array, Exception and String - are written in Tart.

Because this is an 0.1 release, many things are still missing - such as a complete I/O library. Much documentation still needs to be written. Tart’s garbage collector (which is written in Tart of course!) is not yet capable of supporting concurrent programming, but there’s no serious obstacle that would prevent it from supporting multiple threads in the future.

Tart currently runs on 64-bit Unix and OS X systems. The compiler and linker run on 32-bit Linux and OS X systems as well, although there’s currently a bug that causes many of the unit tests to fail. There has been significant progress made towards getting it running on Windows, but this is still incomplete. I’d eventually like to get Tart running on small embedded systems such as Arduino and BeagleBoard.

A working Eclipse plugin for editing Tart source code is available, as is a TextMate bundle.

Here’s where to find more info:

The main project site:

Developer mailing list:

Introduction document:

“Taste of tart”, an even shorter introduction:

Generated API docs:


I’m open to any suggestions, ideas, patches, or discussion - please join the tart-dev list if you are interested. (Let’s be courteous to the LLVM developers and not clutter up the llvm-dev mailing list with long discussions please.)