From jnw@aviator.cis.ufl.edu Wed Jul 13 03:49:39 EDT 1994 Article: 2377 of comp.lang.dylan Xref: glinda.oz.cs.cmu.edu comp.lang.dylan:2377 Path: honeydew.srv.cs.cmu.edu!nntp.club.cc.cmu.edu!newsfeed.pitt.edu!gatech!mailer.acns.fsu.edu!usenet.ufl.edu!usenet.cis.ufl.edu!usenet!jnw From: jnw@aviator.cis.ufl.edu (Joseph N. Wilson) Newsgroups: comp.lang.dylan Subject: Marlais Version 0.4 Date: 13 Jul 1994 04:17:25 GMT Organization: University of Florida CIS dept. Lines: 163 Distribution: world Message-ID: NNTP-Posting-Host: aviator.cis.ufl.edu Version 0.4 of the Marlais interpreter is now available for anonymous ftp from several sources: ftp.cis.ufl.edu:/pub/Marlais cambridge.apple.com:/pub/dylan/Marlais Marlais is an interpreter for a language that is similar to Dylan(TM). In particular, version 0.4 supports the language described in the 1992 Dylan book (Shalit, et.al) with design note and other changes as noted in <> below. Version 0.4 of Marlais still supports the prefix syntax (Dylan Classic). Version 0.5 of Marlais is intended to support infix syntax and approximate the language described in the Dylan Interim Reference Manual. As noted in the README file, Marlais 0.4 is a "hackers release" intended as a vehicle for education, experimentation, and to encourage people to port it to different architectures, add features, and fix bugs. Marlais is alpha software and should not be used by people desiring reliability. Brent Benson (Brent.Benson@mail.csd.harris.com) is responsible for the original development of Marlais through version 0.3. I produced the modifications in version 0.4 with contributions from Patrick Beard (beard@cs.ucdavis.edu) who has produced the Mac executable version of 0.4. Version 0.4 of Marlais includes version 4.1 of the Boehm garbage collector. I welcome feedback, suggestions, and corrections. Joe Wilson University of Florida CIS Department jnw@cis.ufl.edu <> Marlais is based on the description of Dylan in [1], in the Dylan Design Notes [2], and the Dylan Interim Reference Manual [3]. It does not, however, implement the entire language yet. The following Design Note modifications are currently incorporated: * DN 1 Collection Class-For-Copy * DN 2 First, Second, Third, Last Default For those classes on which these are implemented, they take the default keyword argument. * DN 3 Make Class Specification (make ...) takes keyword arguments super-classes:, slots:, and debug-name: * DN 4 No Incremental Class Modifications * DN 5 Regularization of the Type System * DN 6 Limited Types Limited integer types supported. No support for limited collection types. * DN 7 Union Types * DN 8 Method Dispatch Ambiguity * DN 9 Punt Slot Descriptors * DN 10 Element-Setter Signals Error (with the exception of element-setter on unbounded sequences) * DN 11 Last-Setter Implemented as described, but likely fails on unbounded sequences. ? The "portable implementation" has this problem too, since size ? is not guaranteed to terminate on unbounded sequences. * DN 13 Type Restrictions Survive Assignment * DN 16 List Issues head, tail, pair, concatenate are implemented. car, cdr, cons issue warning messages. * DN 17 Define Like Bind (define (x ) y z (values 1 2 3)) and so forth * DN 20 New Syntax for Setter Variables Setter variables are of the form xxx-setter rather than (setter xxx) * DN 21 Result Type Declarations Since conditions aren't quite in the implementation, doesn't get raised when value return types don't match, but an error is reported. * DN 30 Make Range * DN 31 Method Specificity * DN 34 Select Ordering There are some features of Dylan that are not included in Marlais. Here is a partial list. * Builtin classes - Builtin classes are represented differently from classes defined with DEFINE-CLASS and (make ...) * Incomplete class hierarchy - and are the only two classes supported. The collection classes , , , , , and are supported. There is no support for . * Error handling - There is very little support for error handling and conditions. Basically there is just an (error ...) function. * Numeric operations - Only the numeric operations that I needed were included. See the file HACKING for information on adding these functions yourself. * Weak links - Not supported. (See note on pg. 93 of Dylan Book.) * Misc - If there is a feature missing that you need, let us know. It will have a better chance of making it into the next release. There are several additional features that have been added. * Simple stream I/O - There were only passing allusions to I/O in the Dylan book. Marlais has added the following I/O features: builtin class (open-input-file ) => (open-output-file ) => (close-stream ) => unspecified (eof-object? ) => (print ) => unspecified (princ ) => unspecified (format (union #t) arg1 arg2 ...) => unspecified (read []) => (read-char []) => (load ) => unspecified * Other handy features (ctime) => returns day-date-time string (time) => returns low order bits of number of seconds since some system-defined referent. (clock) => returns number of milliseconds used by process. * Leaving Marlais - The functions QUIT and BYE are provided for leaving Marlais. --- [1] Andrew Shalit. "Dylan: an object oriented dynamic language". Apple Computer, Inc. 1992. [2] Various Authors. "Dylan Design Notes". Apple Computer, Inc. 1993-1994. [3] Andrew Shalit, Orca Starbuck, et. al. "Dylan (TM) Interim Reference Manual. Apple Computer, Inc. 1992-1994