[gambit-list] What papers and strategies underly Gambit's design, in particular the compiler & VM?
mikael.rcv at gmail.com
Fri Jun 8 17:44:51 EDT 2012
(dear ml, please see the question to you highlighted in green below)
2012/6/8 Marc Feeley <feeley at iro.umontreal.ca>
> Mikael. Sorry for the long silence... I've been rather busy lately.
> As you might expect documenting all of the inner workings of Gambit is a
> major endeavor. You will find in my publications some of the most
> important design strategies that were used while building Gambit. I know
> that it doesn't cover all aspects, and some important things are yet to be
> Currently I don't have time for an open-ended documentation effort.
> However, I am willing to invest a few hours a week to explain the design
> strategies that users care to know about.
> So how about this... someone should create a wiki page with an ordered
> wish list of specific things to document. Every week I will pick the next
> thing off of the list and reply to the ML.
The way you propose sounds like it makes a lot of sense.
I intend to put something like this together soon. If others would make sth
like this I suppose just kind of merging the two would be fine.
Anyone please feel free to suggest questions or angles on subjects that
should be addressed in this document, so that these will be covered too.
So basically, what about Gambit have you always wanted to get a good
understanding of (and which is not quite obvious from looking at Gambit's
sourcecode), and what are the questions that would take you to getting this
By the way, in the list of publications you forgot to put my PhD which
> documents the implementation of futures (
Ah right, current Gambit has a the |future| form so it's clearly in the
current version indeed.
> On 2012-05-27, at 10:13 AM, Mikael wrote:
> > Hi,
> > In the purpose of making it clear and easy-enough for the unintroduced
> to understand the inner workings of Gambit in its current version, it'd be
> great to know what strategies/philosophies, papers and other reference
> documents underly Gambit - its compiler, environment and so on, beyond the
> Scheme (R5RS etc.) and SRFI specs.
> > I'd be happy to make a Wiki page, Theory and papers, or alike, of this.
> > My best understanding is that compilation to C/asm of Scheme with callcc
> support generally is perceived as a process that's intricate and of an
> abstract nature, asking this quite a lot therefore. :-)
> > The papers I'm aware of are basically those on Marc's homepage and those
> listed by Alex below. And, beyond knowing which they are, it'd be great to
> have a clue of how central the respective paper is in Gambit's particular
> design / how strictly it was adhered to, on the scale from directly/being
> implemented as it is to indirectly/used rather for inspiration.
> > Things whose answers can be found in the papers would include:
> > * How the internal value, object, procedure and closure representations
> look and fit together
> > Closures effectively special-purpose vectors of boxes?
> > All values and object references are internally native-size integers
> with a number of reserved bytes describing the value type, what about them?
> > * Value and object allocations, made how and what optimizations for
> fast dead object detection and subsequent reclaim are there
> > * The layout of the asm/C-level stack and trampolines and how the GC
> resolves the locations of all object reference, anatomy of a procedure call
> and return
> > * How the CPS transformation works
> > * What optimizations are made, in terms of register use optimizations,
> compile-time pre-evaluation or deductions of datatype
> > At some point I got that generally |cdr| is translated to +1 in
> asm/c, for instance
> > * What does the internal form of interpreted code actually look/work
> > * Interrupt checks, made provenly at what granularity
> > * Code debuggability, made in compiled code on what basis
> > * Motivations for the GVM code's design
> > * Hashtable algorithm
> > * Number handling
> > I suppose there's key areas beyond these also. And, I suppose quite
> possibly, some key things are not described in any paper.
> > Find below an attempt to figure out which of Marc's papers are in use
> for these respects of Gambit today.
> > If you know such papers/docs or you see areas beyond those listed above
> that ought to be considered as in the scope too, please tell.
> > Kind regards,
> > Mikael
> > * Marc Feeley. Speculative inlining of predefined procedures in an R5RS
> Scheme to C compiler. In Olaf Chitil, Zoltán Horváth, and Viktória Zsók,
> editors, Implementation and Application of Functional Languages (IFL'07),
> volume 5083 of Lecture Notes in Computer Science, pages 237-253, 2008. [PDF]
> > * Fernanda Kri and Marc Feeley. Genetic instruction scheduling and
> register allocation. In International Conference on the Quantitative
> Evaluation of Systems (QEST'04), pages 76-83, 2004. [PDF]
> > * Marc Feeley. A better API for first-class continuations. In Scheme
> and Functional Programming Workshop (SFPW'01), pages 1-3, September 2001.
> > * Danny Dubé and Marc Feeley. Demand-driven type analysis: an
> introduction. In Scheme and Functional Programming Workshop (SFPW'01),
> pages 21-32, September 2001. [PDF]
> > * Marc Feeley. A portable implementation of first-class continuations
> for unrestricted interoperability with C in a multithreaded Scheme. In
> Scheme and Functional Programming Workshop (SFPW'00), pages 65-66,
> September 2000. [PDF]
> > * Mauricio Solar and Marc Feeley. Scheduling algorithm considering
> latency time on a shared-memory machine. In XVI World Computer Congress,
> International Conference on Software: Theory and Practice, August 2000.
> > * Marc Feeley, James S. Miller, Guillermo J. Rozas, and Jason A.
> Wilson. Compiling higher-order languages into fully tail-recursive portable
> C. Technical Report 1078, département d'informatique et r.o., Université de
> Montréal, August 1997. [PDF]
> > * Dominique Boucher and Marc Feeley. Abstract compilation: a new
> implementation paradigm for static analysis. In International Conference on
> Compiler Construction (CC'96), pages 192-207, April 1996.[PDF]
> > * Manuel Serrano and Marc Feeley. Storage use analysis and its
> applications. In ACM SIGPLAN International Conference on Functional
> Programming (ICFP'96), pages 50-61, May 1996. [PDF]
> > * Marc Feeley. Polling efficiently on stock hardware. In ACM Conference
> on Functional Programming Languages and Computer Architecture (FPCA'93),
> pages 179-187, 1993. [PDF]
> > * Marc Feeley and Guy Lapalme. Closure generation based on viewing
> LAMBDA as EPSILON plus COMPILE. Computer Languages, 17(4):251-267, 1992.
> > Marc Feeley and Guy Lapalme. Using closures for code generation.
> Computer Languages, 12(1):47-66, 1987. [PDF]
> > * Marc Feeley. Deux approches à l'implantation du language Scheme.
> Master's thesis, Université de Montréal, May 1986. [PDF]
> > 2011/6/9 Alex Queiroz
> > Hallo,
> > On Wed, Jun 8, 2011 at 11:14 PM, Jason E. Aten <j.e.aten at gmail.com>
> > >
> > > If others on the list have pointers to papers as well, I'd enjoy
> > > about the best thoughts on how to implement continuations.
> > >
> > "Representing Control in the Presence of First-Class Continuations"
> > http://www.cs.indiana.edu/~dyb/papers/stack.ps
> > "A portable implementation of first-class continuations for
> > unrestricted interoperability with C in a multithreaded Scheme"
> > http://repository.readscheme.org/ftp/papers/sw2000/feeley.pdf
> > "Implementation strategies for first-class continuations"
> > http://www.springerlink.com/content/h5808n962434j275/fulltext.pdf
> > More in:
> > http://library.readscheme.org/page6.html
> > Cheers,
> > --
> > -alex
> > _______________________________________________
> > Gambit-list mailing list
> > Gambit-list at iro.umontreal.ca
> > https://webmail.iro.umontreal.ca/mailman/listinfo/gambit-list
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Gambit-list