[gambit-list] {Spam?} Introducing Stanza: A New Optionally-Typed General Purpose Programming Language from U.C. Berkeley.

Patrick Li patrickli.2001 at gmail.com
Tue May 17 17:31:57 EDT 2016


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20160517/1ab9e0ea/attachment.htm>


More information about the Gambit-list mailing list