Hello Everyone!
I'm happy to announce the official release of the Stanza programming language! Stanza is a new optionally-typed general purpose programming language from the University of California, Berkeley. It was designed to help programmers tackle the complexity of architecting large programs and significantly increase the productivity of application programmers across the entire software development life cycle. You can check out the website here: www.lbstanza.org.
Gambit Scheme was instrumental in the design and development of Stanza. The first prototype for Stanza was hacked together in a month as a collection of Scheme macros. This enabled us to experiment with many of the organizational techniques of multi's and methods within Stanza's unique object system. Having a REPL at our fingertips meant that we could evaluate multiple designs per day. Just change the macro definition, and then try out the revised language in the REPL!
The second prototype for Stanza was written entirely using Gambit and used Scheme as the target language. This enabled us to fine-tune all of the semantics of Stanza without having to deal with the details of code generation. Two features of Gambit/Scheme was critical. First, a dynamically typed target language is much much nicer as a target language than a statically typed one; *especially* if the language you're compiling already has its own type system. Second, Gambit's amazingly fast continuations implementation enabled us to design all of Stanza's coroutine system by first expressing it through continuations, and optimizing the implementation only after the semantics were figured out. If you're doing any sort of experiment with control flow, full continuations are a must!
Finally the bootstrap compiler for Stanza was written in Gambit and generated x86 assembly code. And now, at version 0.9.0, Stanza is entirely self-hosted. Though Gambit is no longer a part of the implementation of Stanza, it had a great influence on its design. Stanza is essentially a (highly-decorated) Scheme at heart, with an optional type system layered on top, coupled with an object system built on multimethods. Stanza's interface to C took a lot of cues from Gambit's FFI system as well.
So thanks Gambit! And also thanks Mark for being so encouraging when I ran into you at ICFP 2013 and for patiently explaining Gambit's continuation implementation to me.
We've been using Stanza internally at Berkeley for about two years now, and we've designed a hardware language called FIRRTL, a teaching language called Feeny for teaching a graduate course on virtual machines, and a tool for automatically generating circuit boards for robotics. Now, Stanza is stable and mature enough for us to feel confident to share it with everyone. We hope you'll check it out!
-Patrick
Afficher les réponses par date