DYLAN
Answers to Frequently Asked Questions
last updated 11 August 1995
This memo answers questions which are frequently asked about the Dylan
programming language, and its implementations. If you want to keep up
with Dylan news, consider joining the announce-dylan or info-dylan
mailing lists, or the comp.lang.dylan
newsgroup, described below.
The latest version of this memo is available by anonymous ftp from
http://www.cambridge.apple.com.
The Apple Dylan ftp site is
cambridge.apple.com:/pub/dylan/
The Dylan WWW page at Carnegie Mellon University is
http://legend.gwydion.cs.cmu.edu:8001/dylan/
The Dylan newsgroup is comp.lang.dylan
On Applelink, Dylan files are regularly uploaded to this area:
Developer Support:Developer Services:Development Platforms:Dylan Related
On eWorld, Go (cmd-G) to dev service, then click on
Tool Chest:Development Platforms:Dylan Related
On CompuServe, Type GO APPLE to get to the Apple support forum.
There are 16 libraries, go into Programmers/Developers Library #15
Power Macintosh Apple Dylan Technology Release
On 8/5/96, Apple announced the availability of the Power Macintosh
version of the Apple Dylan Technology Release. The Technology Release
is available through ADC (formerly APDA) either as a package or
standalone CD. The standalone CD provides an economical way for
developers who already have the documentation to obtain this native
version. The CD also includes the 68K version released previously. The
package includes the CD and 6 manuals. Both items will also be
available for sale at the ADC booth in MacWorld Boston.
We are expecting to ship this release on August 7,1996. The ADC order #
for the package is M5466Z/A and is listed at $59.95. The ADC order # for
the standalone CD is M5475Z/A and is listed at $39.95.
Customers can order:
By PHONE: United States 1-800-282-2732 (Toll-free)
Canada 1-800-637-0029 (Toll-free)
International 1-716-871-6555
By FAX: APDA Fax number 1-716-871-6511
By EMAIL: AppleLink.......ORDER.ADC
Internet....... ORDER.ADC@applelink.apple.com
Web.............http://www.devcatalog.apple.com
International customers may also order by contacting one of the licensed
resellers in 30 countries.
[1-2] Where can I get a copy of the language specification?
The first book on the Dylan language was published in 1992.
Since then, the language has undergone a great deal of change in
response to feedback from potential users and implementors. A
substantially revised language reference (The Dylan Interim Reference
Manual, or DIRM) was published in June, 1994, and is available as a
browsable web document and in various formats (Acrobat, Postscript,
RTF) by anonymous ftp. See [1-1] for more information about web and
ftp sites.
The current round of language design is now essentially complete, and
we are finishing a definitive reference specification known as the
Dylan Reference Manual (DRM). A draft will be made available online by Fall 1995.
Of course, we realize that many people want to read about Dylan now!
So to fill the gap until the new book is published, an interim Dylan
reference book is available by anonymous ftp, in the directory
/pub/dylan/dylan-manual/, as well as in the other file areas listed in topic
[1-1] above. It is available in both RTF (Rich Text Format) and
PostScript formats (214 pages). The interim book is a combination of the
original Dylan book, the previously published design notes, and additional
previously unpublished design decisions. The document is called "interim"
not because the language design is unfinished, but because this is a very
rough document intended for use until the new book is ready.
[1-3] Are there any public mailing lists for discussing
Dylan?
Yes. The info-dylan mailing list is a forum for discussing all
subjects related to Dylan. Each day's messages are gathered into
a digest and sent as a single compound message to the list
info-dylan-digest. The mailing list is also linked to the
Newsgroup comp.lang.dylan.
The announce-dylan mailing list is a moderated list, for major
announcements about Dylan (such as the availability of new
implementations of the language). All messages sent to announce-dylan
are also sent to info-dylan.
To subscribe to info-dylan or announce-dylan send mail to
majordomo@cambridge.apple.com. The body of the message should be
"subscribe <list-name>",
where <list-name> is the name of the mailing list you want to subscribe to.
To unsubscribe to one of the mailing lists, send majordomo a message with the body
"unsubscribe <list-name>".
If you would like to subscribe or unsubscribe an address which
is different from the return address of the message, include
the address after the <list-name>. For complete majordomo
instructions, send a message with the body "help".
The name of the digest form of info-dylan is info-dylan-digest.
Please do not send administrative requests to the mailing lists! If you have trouble with info-dylan, send mail to sysadmin@cambridge.apple.com.
[1-4] Where else can I get information about Dylan?
The Gwydion Project at Carnegie Mellon University maintains
a World Wide Web (WWW) page of general information on Dylan.
This is accessible using Mosaic or other web-browsing software.
This page contains the Interim Reference Manual as well as the
origin al Dylan book in on-line form, annotated with links to
the design notes and changes that have been approved. This web
page also contains the current FAQ from Apple and other general
information of interest to the Dylan community.
The URL is "http://legend.gwydion.cs.cmu.edu:8001/dylan/".
The Gwydion Project maintains an FTP-accessible on-line repository
of Dylan libraries and code that the authors wish to share with the
rest of the community. The Gwydion site is currently available as:
http://legend.gwydion.cs.cmu.edu:8001/gwydion/index.html
ftp://legend.gwydion.cs.cmu.edu/afs/cs/project/gwydion/release/
For further info, contact
gwydion-group@cs.cmu.edu.
[1-5] Where should I send comments on the Dylan language?
Most comments can be sent to info-dylan. If you wish to send
a private letter to the Apple engineers working on Dylan,
you can send a message to
dylan-comments@cambridge.apple.com.
(AppleLink users can send mail to DYLAN).
[1-6] What should I do if I want to implement Dylan?
Send mail to
dylan-comments@cambridge.apple.com. We have put
together a program to support implementors, and we want to hear
from you. (AppleLink users can send mail to DYLAN).
If you've written an implementation of Dylan and want to release
it, please contact us for a trademark license.
[2] General Questions About Dylan and Implementations
[2-1] What is Dylan?
Dylan is a new Object Oriented Dynamic Language (OODL).
Dylan combines the features of static and dynamic languages. The
goal of the language is to support a high level of programmer
productivity, while still allowing the efficient delivery of
applications and libraries.
Dylan is consistently object-oriented. It is not based on a
particular previously-existing procedural language with some
kind of object-oriented extension.
[2-2] What is the target audience for Dylan?
The target audience for Dylan is developers of commercial application software, most of whom are currently using static languages such as C and C++, as well as in-house developers and system integrators who are using languages such as Smalltalk and who need a high-level, very productive language. We expect Dylan will appeal to many other groups of programmers as well, such as educational users who want a very clean object-oriented language design.
[2-3] How does Dylan differ from previous OODLs?
Dylan is designed to allow the powerful and flexible
programming techniques and development environments associated
with OODLs, while also allowing the small, fast delivered applications
currently associated with static languages.
Unlike many dynamic languages, Dylan's design consciously enables the
runtime environment to execute without the development environment present.
In addition, Dylan will let you selectively turn off dynamic capabilities
when they are no longer needed, allowing more efficient compilation.
[2-4] Does Apple have an implementation of Dylan?
Apple is currently working on an implementation of Dylan.
Apple's current implementation will be made available in a form of a
"technology release" to the Macintosh developer community by the end
of 1995. Getting a language broadly used requires time, experimentation
and prototyping. The goal of this release is to start promoting the use
of the Dylan language as a first step towards building a large community
of Dylan developers. We also would like to to receive feedback from the
developer community. More details regarding where and how to order the
Apple Dylan technology release will be announced on the Dylan mailing
lists and the Dylan WWW page later-on during 1995.
The Apple Dylan technology release will include:
- Dylan compiler and runtime
- Integrated development environment featuring incremental
development and advanced configurable browsing and viewing of code
- Dylan application framework
- Dylan user-interface builder
- Cross-language support allowing seamless access to existing C code and APIs
The technology release will be hosted on 68K-based Macintosh systems.
However, you will be able to produce code targeting both the 680x0 and Power Macintosh systems.
The development environment will let you create projects with all the advantages of a rapid-prototyping environment. Your project is stored in a database, unlike traditional, file-based systems. Customizable browsers will give you a powerful new way to look at and manipulate your application as it executes. You can browse class hierarchies graphically, find all references to a given routine or variable, and inspect objects in your program while it's running.
The incremental compiler will allow you to actually change code in a running program and see the results right away. No more waiting for a long edit, compile, link, execute, debug cycle. This gives you freedom as a programmer to explore various options and rapidly improve your software.
Automatic memory management will free you from the burden of manually allocating, tracking, and deallocating memory usage in your application. This will happens seamlessly and behind the scenes, saving you both programming and debugging time.
Concurrently with the development of the technology release, Apple is working on defining the plans for an Apple Dylan product that will be available in the future. Based on input received from the developer community during the last year, the final product is expected to better address key market requirements such as multi-platform development and deployment. Details about availability of a final Apple Dylan product from Apple will be made available on the Dylan mailing lists and the Dylan WWW page as development continues.
[2-5] How can I apply to be an early seed site for Apple's Dylan implementation?
Send a message to the AppleLink address DYLAN, or the Internet address
dylan@applelink.apple.com. The message should include your name, address,
phone number, and a brief description of how you plan on using Apple Dylan.
[2-6] What third-party implementations of Dylan are available?
Several third-parties have expressed interest in implementing Dylan.
[a] Marlais is an experimental interpreter written
in C. It was created by Brent Benson, and is being extended by Joe Wilson, Patrick
Beard, and others. It supports the official algebraic syntax, as well as the older
lisp-like syntax. Marlais runs on a variety of unix platforms, as well as Macintosh
and Windows. The latest version of Marlais is 0.5.11, and is available from
ftp://ftp.cis.ufl.edu/pub/Marlais/.
MacMarlais is the Macintosh port of Marlais, ported by Patrick Beard. It offers an
interpreted environment with an integrated editor and interactive listener window.
The latest version is available from
ftp://ftp.bdt.com/home/beard/.
[b] Harlequin is currently investing in
a commercial implementation of Dylan. They are building a PC based Windows
95/NT hosted version of the language. For more information, write to
dylanworks@harlequin.com, or check out
http://www.harlequin.com/full/dylan.html.
[c] The Gwydion Project at
Carnegie Mellon University is building an innovative new software
development and maintenance environment around the Dylan language.
A part of this work will involve the development of a high-performance
Dylan implementation that will produce code for many platforms.
For more information on this project, see the Gwydion project's World
Wide Web page:
http://legend.gwydion.cs.cmu.edu:8001/gwydion/
[d] As a development tool, the Gwydion project has
produced a byte-coded Dylan implementation called "Mindy".
Mindy is documented on the Gwydion web page (see above), and is available by
anonymous ftp legend.gwydion.cs.cmu.edu in the file:
/afs/cs.cmu.edu/project/gwydion/release/mindy.tar.gz
Due to CMU security measures, if you use the ftp 'cd'
command, then you must 'cd' to the release directory in
one cd command line; for example, do not try to 'cd' to
"/afs/cs/project/gwydion/".
[e] Thomas 1.1 is an experimental
interpreter written in Scheme. It was created by Matt Birkholz, Jim
Miller, and Ron Weiss at the DEC Cambridge Research Lab in 1992. It
supports the older lisp-like syntax, and does not incorporate many of
the more recent language changes. Thomas is available at the Dylan
ftp site at cambridge.apple.com
[2-7] Is Dylan related to the Newton PDA?
Not at this time. If you are looking for more information on
Newton development, you need to contact the Newton Developer Relations
at NEWTON.DEVS@applelink.apple.com
[2-8] Is Dylan designed to be a replacement for Common Lisp?
No. We see Common Lisp and Dylan filling two distinct needs.
[2-9] Is Dylan a proprietary language?
Clearly Dylan is not a proprietary language. The Dylan language design is in the public domain. Apple wants Dylan to be available on as many computers as possible. To this end, we are encouraging groups outside Apple to implement Dylan. At the same time, it is our intention to work with different Dylan implementors for them to pass a standard test suite to ensure quality and consistency among implementations. Implementations will have to pass the test suite in order to use the name Dylan.
[3] Questions About the Dylan Language Design
[3-1] Is the Dylan language design frozen?
The current language design is complete. At this time, we will only be making small tweaks, or changes necessary to resolve bugs or inconsistencies in the specification.
[3-2] What does the Dylan syntax look like?
The first Dylan book published in 1992 used a parenthesized, lisp-like syntax. The current language definition uses an algebraic syntax, which will be very familiar to users of Pascal or C.
[3-3] Will Dylan have a standard macro system with the algebraic syntax?
Yes. This will be based on substitution at the parse level (like Lisp) rather than text substitution (like C). A description will be included in the next version of the Dylan language reference manual.
[3-4] Are there plans to specify a standard I/O package for Dylan? What about threads?
Threads, I/O, and other language features may be provided as optional libraries in the future. They are not currently part of the language. Because of the great variety of computing platforms from PDA to mainframe we do not want to standardize on these features too strictly.
[3-5] Why is 'make' allowed to return a previously allocated instance, or an object which is an indirect instance of the class passed to make?
We feel that this is a very important abstraction mechanism. A class should have flexibility in how it implements make, as long as the object returned fulfills the protocol of the class.
For example, this allows a library to document a single abstract class which is supported by several undocumented implementation classes. The abstract class can choose which implementation class to instantiate based on the additional arguments to make. This allows optimizations which are transparent to the clients of the library.
The default method for make of a user-defined class returns a fresh direct instance of the requested class.
[3-6] The Dylan'92 manual doesn't require implementations to optimize tail-recursion. Was this an intentional omission, or an editorial oversight?
It was an editorial oversight. Dylan implementations are required to be properly tail recursive.
[3-7] The Dylan'92 manual doesn't say much about modules. Will this be specified in the future?
The new language document includes a complete module specification.
[3-8] Can the 'method' special form be used to create closures?
Yes.
[3-9] I don't understand how setter variables work. Is 'setter' a special form?
This has been clarified in the new language design. The new design is included in the interim Dylan reference book.
[3-10] What kind of object is used to return multiple values?
When a function returns multiple values, the return values are not stored in a wrapper object; they are returned directly. For example, if a function returns "the values 4 and 5", it returns two integers. It does not return a data structure which contains two integers.
Returning multiple values is similar to calling a function with more than one argument. When passing multiple objects as arguments to a function, the objects do not have to be stored in a single data structure before they are passed.
[3-11] Is the specification of sealing complete?
Yes. The new language design includes a complete specification of sealing. This design is included in the interim Dylan reference book.
[3-12] Will Dylan include 'eval'?
Some implementations may choose to support eval, but we do not have plans to add it to the language standard. We feel that the delivery of applications which are space efficient requires the separation of development time activity from runtime activity.
[3-13] Will Dylan include an application framework?
We recognize the value of application frameworks, especially cross-platform application frameworks. Unfortunately, because of the great variation in computing platforms, a single application framework will not be part of the Dylan language. On each platform, there should either be a Dylan-specific application framework, or Dylan should be able to use application frameworks written in other languages.
[3-14] Will Dylan interface to other languages?
We recognize that seamless integration with other languages, especially C and C++, is essential. We are working on addressing this issue. The solutions may not be part of the Dylan language proper. Apple Dylan supports Creole, allowing seamless access to existing C code and APIs. The Dylan implementations from Harlequin and CMU provide similar functionality.