Gwydion Dylan Porting and Maintenance Guide

Edited by

Peter Housel

Eric Kidd

Douglas Auclair

Use and copying of this software and preparation of derivative works based on this software are permitted, including commercial use, provided that the following conditions are observed:

  • This copyright notice must be retained in full on any copies and on appropriate parts of any derivative works.

  • Documentation (paper or online) accompanying any system that incorporates this software, or any part of it, must acknowledge the contribution of the Gwydion Project at Carnegie Mellon University.

This software is made available "as is". Neither the authors nor Carnegie Mellon University make any warranty about the software, its performance, or its conformity to any specification.

Bug reports, questions, comments, and suggestions should be sent by E-mail to the Internet address .

Table of Contents
1. Introduction
2. Development Conventions
Basic Principles
CVS Suggestions
3. Porting Gwydion Dylan to a New Platform
4. Mindy Internals Guide
5. d2c Internals Guide
The Compiler-Base library
Miscellaneous Utility Modules
The OD-Format Module
The Dylan-Dump Module
The Compile-Time-Values Module
The Source Module
The Tokens Module
The Header Module
The Platform Module
The Errors Module
The Signature-Interface and Signature Modules
The Names Module
The Definitions Module
The Variables Module
The Policy Module
The CType Module
The Transformers Module
The Representation Module
The Classes Module
The Type-Dump Module
The C-Representation Module
The Compile-Time-Functions Module
The Flow Module
The Compiler-Parser library
The Tokenize Module
The Source-Utilities Module
The Lexer Module
The Fragments Module
The Parse-Tree Module
The Parser Module
The Macros Module
The Compiler-Front library
The Builder-Interface Module
The Primitives Module
The Front Module
The FER-OD Module
The Function-Definitions Module
The Variable-Definitions Module
The Top-Level-Forms Module
The Compiler-Convert library
The LexEnv Module
The Compile-Time-Eval Module
The Expanders Module
The FER-Convert Module
Processing of Top-Level Definitions
The Define-Macros Module
The Define-Libraries-and-Modules Module
The Define-Functions Module
The Define-Constants-and-Variables Module
The Define-Classes Module
The Top-Level-Expressions Module
The Compiler-Optimize Library
The Cheese Module
Data Formats
Control Flow
Call Optimization & Transformers
The Compiler-CBack Library
The Stack-Analysis Module
The CBack Module
The Heap Module
The Compiler-Main Library
The Main Module
The Dylan Runtime Library
6. Melange Internals Guide
A. Gwydion Project Coding Style Guide
Indent level
Indent wrapping slot descriptions
Using /// comments
Using /* ... */
Wrapping function definition headers
Indent keyword parameters beyond #key token
Wrapping variable and constant definitions
Using end mumble to terminate statements
Horizontal space for columnization or other visual effects
Keyword syntax
Blank comment line between introductory comments and definitions
Wrapping case statements (applies to select too)
Using #t for otherwise in case statements
Wrapping for clauses
Function name and open paren
Wrapping let statements
Terminate statements with semicolons
Single-line statements
Wrapping arithmetic/boolean expressions