diff --git a/documentation/website/source/documentation/index.rst b/documentation/website/source/documentation/index.rst index 7261fc39f..2aaceb09b 100644 --- a/documentation/website/source/documentation/index.rst +++ b/documentation/website/source/documentation/index.rst @@ -1,3 +1,19 @@ +.. raw:: html + +
+
+ +
+
+ ************* Documentation ************* @@ -8,12 +24,10 @@ Documentation in the near future. :class: alert alert-block alert-warning -.. raw:: html +Learning Dylan +============== -
-
- -

Learning Dylan

+.. raw:: html

Just getting started with Open Dylan? We recommend that @@ -23,43 +37,29 @@ Documentation book.

-`An Introduction to Dylan `_ -[`pdf `__] -[`epub `__] - +`An Introduction to Dylan `_ [`pdf `__] [`epub `__] This tutorial is written primarily for those with solid programming experience in C++ or another object-oriented, static language. It provides a gentler introduction to Dylan than does the Dylan Reference Manual (DRM). -`Dylan Programming `_ -[`pdf `__] -[`epub `__] - +`Dylan Programming `_ [`pdf `__] [`epub `__] A good, book length Dylan tutorial by several Harlequin employees. -`Getting Started with Open Dylan `_ -[`pdf `__] -[`epub `__] -[`old HTML `__] - +`Getting Started with Open Dylan `_ [`pdf `__] [`epub `__] [`old HTML `__] Describes Open Dylan's development environment. The first two chapters are useful on any platform, whereas the remaining chapters document the Open Dylan IDE on Windows. -`Building Applications Using DUIM `_ -[`pdf `__] -[`epub `__] -[`old HTML `__] - +`Building Applications Using DUIM `_ [`pdf `__] [`epub `__] [`old HTML `__] Describes how to use DUIM (Dylan User Interface Manager), the portable window programming toolkit. This is only useful if you are using Open Dylan on Windows. -.. raw:: html +Articles +======== -
-

Articles

+.. raw:: html

Featured articles and blog postings.

@@ -68,12 +68,10 @@ Documentation

Learning Dylan

`Dylan Macro System <../articles/macro-system/index.html>`_ by Dustin Voss. - This article holds hard-won knowledge about how the Dylan macro system works and how to work around some of the gotchas that may catch a macro writer. `Procedural Dylan <../articles/procedural-dylan/index.html>`_ by Paul Haahr. - This essay explores Dylan from the perspective of a programmer used to traditional procedural languages, such as Pascal or C. @@ -82,23 +80,64 @@ Documentation

Tools

`Development inside emacs using DIME <../news/2011/12/12/dswank.html>`_ - An exciting look at using DIME and emacs for Dylan development. -.. raw:: html - -
-

Publications

- -`See our publications page `_. +Publications +============ + +**Extending Dylan's type system for better type inference and error detection** [`pdf `__] [`bib <../_static/documentation/mehnert2010.bib>`__] + Whereas dynamic typing enables rapid prototyping and easy + experimentation, static typing provides early error detection and + better compile time optimization. Gradual typing provides the best + of both worlds. This paper shows how to define and implement + gradual typing in Dylan, traditionally a dynamically typed + language. Dylan poses several special challenges for gradual + typing, such as multiple return values, variable-arity methods and + generic functions (multiple dispatch). + + In this paper Dylan is extended with function types and parametric + polymorphism. We implemented the type system and a + unification-based type inference algorithm in the mainstream Dylan + compiler. As case study we use the Dylan standard library (roughly + 32000 lines of code), which witnesses that the implementation + generates faster code with fewer errors. Some previously + undiscovered errors in the Dylan library were revealed. + + https://dl.acm.org/citation.cfm?id=1869643.1869645 + +**Partial Dispatch: Optimizing Dynamically-Dispatched Multimethod Calls with Compile-Time Types and Runtime Feedback** [`pdf `__] [`bib <../_static/documentation/bachrach2000.bib>`__] + We presented an approach to gaining back complete class hierarchy + information by delaying the construction of dispatch caches until + the whole class hierarchy is available at run- time. Run-time + call-site caches can then be constructed as specialized decision + trees built from disjointness and concrete- subtype operations on + actual arguments combined with compile-time inferred types + injected into the run-time. Unnecessary decision steps can be + avoided and often run-time dispatch can be completely + eliminated. We consider this to be a nice half-way house between + full static compilation and dynamic compilation which mitigates + the runtime expense of separately compiled components while + satisfying our implementation constraints of code shareable + components, multi-threaded runtime, incremental development, “pay + as you go philosophy”, and interoperability with standard tools. + +**D-Expressions: Lisp Power, Dylan Style** [`pdf `__] [`bib <../_static/documentation/bachrach1999.bib>`__] + This paper aims to demonstrate that it is possible for a language + with a rich, conventional syntax to provide Lisp-style macro power + and simplicity. We describe a macro system and syntax manipulation + toolkit designed for the Dylan programming language that meets, + and in some areas exceeds, this standard. The debt to Lisp is + great, however, since although Dylan has a conventional algebraic + syntax, the approach taken to describe and represent that syntax + is distinctly Lisp-like in philosophy. + +`See our publications page to find more `_. + +Cheat Sheets +============ .. raw:: html -
-
- -

Cheat Sheets

-

Quick one-page sheets for common tasks.

@@ -111,26 +150,20 @@ Documentation * `Collections `_ * `For Scheme programmers `_ -.. raw:: html +References +========== -
-

References

+.. raw:: html

These are some lengthier reference materials. While they make for dry reading, they're full of invaluable information!

-`Dylan Reference Manual -`_ (`Errata -`_) - +`Dylan Reference Manual `_ (`Errata `_) The official definition of the Dylan language and standard library. -`Dylan Library Reference `_ -[`pdf `__] -[`epub `__] - +`Dylan Library Reference `_ [`pdf `__] [`epub `__] Describes the Open Dylan implementation of the Dylan language, a core set of Dylan libraries, and a library interchange mechanism. The core libraries provide many language extensions, a threads @@ -141,17 +174,15 @@ Documentation as a foreign function interface and some low-level access to the Microsoft Win32 API. -`DUIM library reference -`_ - +`DUIM library reference `_ Describes the libraries forming DUIM (Dylan User Interface Manager), the portable window programming toolkit. It complements Building Applications Using DUIM. -.. raw:: html +For Open Dylan Developers +========================= -
-

For Open Dylan Developers

+.. raw:: html

Notes and materials useful to those working on @@ -159,29 +190,22 @@ Documentation level details.

-`Open Dylan Hacker's Guide `_ -[`pdf `__] -[`epub `__] - +`Open Dylan Hacker's Guide `_ [`pdf `__] [`epub `__] A work in progress to help out people who are hacking on Open Dylan itself. -`Dylan Style Guide `_ -[`pdf `__] -[`epub `__] - +`Dylan Style Guide `_ [`pdf `__] [`epub `__] Notes and thoughts on how to format your Dylan code. This is the style guide that we aspire to adhere to in the Open Dylan sources. `Dylan Enhancement Proposals <../proposals/index.html>`_ - A series of proposals for improvements to the Open Dylan implementation and related libraries. -.. raw:: html +Archived Documentation +====================== -
-

Archived Documentation

+.. raw:: html

This is old documentation that we don't plan to @@ -189,14 +213,10 @@ Documentation material.

-`Developing Component Software with CORBA -`_ - +`Developing Component Software with CORBA `_ A tutorial and reference for CORBA interoperability using the Open Dylan ORB. -`OLE, COM, ActiveX and DBMS library reference -`_ - +`OLE, COM, ActiveX and DBMS library reference `_ Describes high and low level interfaces to COM, OLE, and ActiveX component technology, and generic DBMS support, through SQL with an ODBC backend. diff --git a/documentation/website/source/documentation/publications.rst b/documentation/website/source/documentation/publications.rst index 7bf9849b0..a5b4bc769 100644 --- a/documentation/website/source/documentation/publications.rst +++ b/documentation/website/source/documentation/publications.rst @@ -2,12 +2,7 @@ Publications about Dylan ************************ -**Extending Dylan's type system for better type inference and error -detection** -(by Hannes Mehnert at ILC 2010 -`pdf `__ -`bib <../_static/documentation/mehnert2010.bib>`__) - +**Extending Dylan's type system for better type inference and error detection** (by Hannes Mehnert at ILC 2010 `pdf `__ `bib <../_static/documentation/mehnert2010.bib>`__) Whereas dynamic typing enables rapid prototyping and easy experimentation, static typing provides early error detection and better compile time optimization. Gradual typing provides the best @@ -27,11 +22,7 @@ detection** https://dl.acm.org/citation.cfm?id=1869643.1869645 -**Automatically generated type-safe GTK+ binding for Dylan** -(by Hannes Mehnert at ILC 2009 -`pdf `__ -`bib <../_static/documentation/mehnert2009.bib>`__) - +**Automatically generated type-safe GTK+ binding for Dylan** (by Hannes Mehnert at ILC 2009 `pdf `__ `bib <../_static/documentation/mehnert2009.bib>`__) We present an automated way to get language bindings for GTK+ for Dylan, an object-oriented functional programming language related to Lisp. Dylan supports multiple inheritance, polymorphism, @@ -40,11 +31,7 @@ detection** is type-safe, no up- and downcasts are needed. -**A domain-specific language for manipulation of binary data in Dylan** -(by Hannes Mehnert and Andreas Bogk at ILC 2007 -`pdf `__ -`bib <../_static/documentation/mehnert2007.bib>`__) - +**A domain-specific language for manipulation of binary data in Dylan** (by Hannes Mehnert and Andreas Bogk at ILC 2007 `pdf `__ `bib <../_static/documentation/mehnert2007.bib>`__) We present a domain specific language for manipulation of binary data, or structured byte sequences, as they appear in everyday applications such as networking or graphics file manipulation. Our @@ -56,11 +43,7 @@ detection** https://dl.acm.org/citation.cfm?id=1622123.1622148 -**Efficient Compression of Generic Function Dispatch Tables** -(by Eric Kidd - Technical Report Dartmouth College 2001 -`pdf `__ -`bib <../_static/documentation/kidd2001.bib>`__) - +**Efficient Compression of Generic Function Dispatch Tables** (by Eric Kidd - Technical Report Dartmouth College 2001 `pdf `__ `bib <../_static/documentation/kidd2001.bib>`__) A generic function is similar to an overloaded operator, but provides a way to select an appropriate behavior at run-time instead of compile-time. Dujardin and colleagues have proposed an @@ -75,11 +58,7 @@ detection** https://dl.acm.org/citation.cfm?id=867862 -**Partial Dispatch: Optimizing Dynamically-Dispatched Multimethod Calls with Compile-Time Types and Runtime Feedback** -(by Jonathan Bachrach and Glenn Burke - Technical Report 2000 -`pdf `__ -`bib <../_static/documentation/bachrach2000.bib>`__) - +**Partial Dispatch: Optimizing Dynamically-Dispatched Multimethod Calls with Compile-Time Types and Runtime Feedback** (by Jonathan Bachrach and Glenn Burke - Technical Report 2000 `pdf `__ `bib <../_static/documentation/bachrach2000.bib>`__) We presented an approach to gaining back complete class hierarchy information by delaying the construction of dispatch caches until the whole class hierarchy is available at run- time. Run-time @@ -95,11 +74,7 @@ detection** components, multi-threaded runtime, incremental development, “pay as you go philosophy”, and interoperability with standard tools. -**D-Expressions: Lisp Power, Dylan Style** -(by Jonathan Bachrach and Keith Playford - Technical Report 1999 -`pdf `__ -`bib <../_static/documentation/bachrach1999.bib>`__) - +**D-Expressions: Lisp Power, Dylan Style** (by Jonathan Bachrach and Keith Playford - Technical Report 1999 `pdf `__ `bib <../_static/documentation/bachrach1999.bib>`__) This paper aims to demonstrate that it is possible for a language with a rich, conventional syntax to provide Lisp-style macro power and simplicity. We describe a macro system and syntax manipulation @@ -109,11 +84,7 @@ detection** syntax, the approach taken to describe and represent that syntax is distinctly Lisp-like in philosophy. -**Modern languages and Microsoft's component object model** -(by David N. Gray, John Hotchkiss, Seth Laforge, Andrew Shalit and -Toby Weinberg - Communications of the ACM May 1998 -`bib <../_static/documentation/gray1998.bib>`__) - +**Modern languages and Microsoft's component object model** (by David N. Gray, John Hotchkiss, Seth Laforge, Andrew Shalit and Toby Weinberg - Communications of the ACM May 1998 `bib <../_static/documentation/gray1998.bib>`__) As the computer industry's reliance on component software increases, it becomes increasingly difficult to integrate complex component systems. Modern development environments take a variety of approaches @@ -124,12 +95,7 @@ Toby Weinberg - Communications of the ACM May 1998 http://dl.acm.org/citation.cfm?id=274957 -**A Monotonic Superclass Linearization for Dylan** -(by Kim Barrett and Bob Cassels and Paul Haahr and David A. Moon and -Keith Playford and P. Tucker Withington at OOPSLA 1996 -`html `__ -`bib <../_static/documentation/barrett1996.bib>`__) - +**A Monotonic Superclass Linearization for Dylan** (by Kim Barrett and Bob Cassels and Paul Haahr and David A. Moon and Keith Playford and P. Tucker Withington at OOPSLA 1996 `html `__ `bib <../_static/documentation/barrett1996.bib>`__) Object-oriented languages with multiple inheritance and automatic conflict resolution typically use a linearization of superclasses to determine which version of a property to inherit when several @@ -148,11 +114,7 @@ Keith Playford and P. Tucker Withington at OOPSLA 1996 https://dl.acm.org/citation.cfm?id=236337.236343 -**Discovering the way programmers think about new programming environments** -(by Joseph Dumas and Paige Parsons - Communications of the ACM June -1995 -`bib <../_static/documentation/dumas1995.bib>`__) - +**Discovering the way programmers think about new programming environments** (by Joseph Dumas and Paige Parsons - Communications of the ACM June 1995 `bib <../_static/documentation/dumas1995.bib>`__) An interesting usability study of a prototype development environment for the Dylan programming language is presented here. This study's purpose is to determine just how close the