home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk1.iso / answers / Modula-3-faq < prev    next >
Internet Message Format  |  1993-12-13  |  21KB

  1. Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!nic.hookup.net!decwrl!pa.dec.com!src.dec.com!src.dec.com!muller
  2. From: Eric Muller <muller@src.dec.com>
  3. Newsgroups: comp.lang.modula3,news.answers,comp.answers
  4. Subject: Modula-3 Frequently Asked Questions (FAQ)
  5. Followup-To: comp.lang.modula3
  6. Date: 13 Dec 1993 17:54:50 GMT
  7. Organization: DEC Systems Research Center
  8. Lines: 478
  9. Approved: news-answers-request@MIT.Edu
  10. Expires: 15 Jan 1994 00:00:00 GMT
  11. Message-ID: <2eia9a$qpd@src-news.pa.dec.com>
  12. NNTP-Posting-Host: procope.pa.dec.com
  13. Xref: senator-bedfellow.mit.edu comp.lang.modula3:2164 news.answers:15733 comp.answers:2985
  14.  
  15. Archive-name: Modula-3-faq
  16. Last-modified: Sep 9 1993
  17.  
  18.  
  19.          Modula-3 Frequently Asked Questions
  20.          ===================================
  21.  
  22.  
  23. 1. The language
  24.     1.1 What is Modula-3?
  25.     1.2 Is Modula-3 a superset of Modula-2?
  26. 2. The documentation
  27.     2.1 Where can I get a description of Modula-3? 
  28.     2.2 Where can I get other information on Modula-3?
  29. 3. The implementations
  30.     3.1 Where can I get an implementation?
  31.     3.2 What is SRC Modula-3?
  32.     3.3 What is m3pc?
  33.     3.4 What is GNU Modula-3?
  34. 4. Some specific questions
  35.         4.1 Why is "Hello World" so large?
  36.         4.2 Why objects and interfaces?
  37.     4.3 What is the story with Trestle and OpenWindows?
  38.         4.4 When is the next release of SRC Modula-3 ?
  39. 5. FTP
  40.     5.1 What if I don't have ftp access?
  41. 6. Contributing
  42.     6.1 Can I contribute Modula-3 software?
  43.  
  44.  
  45.  
  46.  
  47. 1.1. What is Modula-3?
  48.  
  49.    Modula-3 is a systems programming language that descends from Mesa,
  50.    Modula-2, Cedar, and Modula-2+.  It also resembles its cousins
  51.    Object Pascal, Oberon, and Euclid.
  52.  
  53.    The goal of Modula-3 is to be as simple and safe as it can be while
  54.    meeting the needs of modern systems programmers.  Instead of
  55.    exploring new features, we studied the features of the Modula
  56.    family of languages that have proven themselves in practice and
  57.    tried to simplify them into a harmonious language.  We found that
  58.    most of the successful features were aimed at one of two main
  59.    goals: greater robustness, and a simpler, more systematic type
  60.    system.
  61.  
  62.    Modula-3 retains one of Modula-2's most successful features, the
  63.    provision for explicit interfaces between modules.  It adds objects
  64.    and classes, exception handling, garbage collection, lightweight
  65.    processes (or threads), and the isolation of unsafe features.
  66.  
  67.  
  68. 1.2. Is Modula-3 a superset of Modula-2?
  69.  
  70.    No; valid Modula-2 programs are not valid Modula-3 programs.  However,
  71.    there is a tool to help convert Modula-2 programs to Modula-3.
  72.  
  73.  
  74. 2.1. Where can I get a description of Modula-3? 
  75.    
  76.    The definition of Modula-3 is contained in:
  77.  
  78.         System Programming with Modula-3
  79.         Edited by Greg Nelson
  80.         Prentice Hall Series in Innovative Technology
  81.         ISBN 0-13-590464-1
  82.         L.C. QA76.66.S87 1991
  83.  
  84.    also known as SPwM3.  Here is the table of contents:
  85.  
  86.         1. Introduction
  87.         2. Language Definition
  88.         3. Standard Interfaces
  89.         4. An Introduction to Programming with Threads
  90.         5. Thread Synchronization: A Formal Specification
  91.         6. I/O Streams: Abstract Types, Real Programs
  92.         7. Trestle Window System Tutorial
  93.         8. How the Language Got its Spots
  94.  
  95.    Chapters 2 and 3 have been reprinted in Sigplan Notices, Volume 27,
  96.    Number 8, August 1992, pp 15-42.
  97.  
  98.    Sam Harbison has written a more tutorial book about Modula3:
  99.  
  100.         Modula-3
  101.         Samuel P. Harbison
  102.         Prentice Hall, 1992
  103.         ISBN 0-13-596396-6
  104.  
  105.    The errata sheet is available via anonymous ftp from gatekeeper.dec.com 
  106.    in pub/DEC/Modula-3/errata.
  107.  
  108.  
  109. 2.2. Where can I get other information on Modula-3?
  110.  
  111.    There is a Usenet newsgroup, comp.lang.modula3.  The archives of
  112.    that group are available via anonymous ftp from gatekeeper.dec.com
  113.    in pub/DEC/Modula-3/comp.lang.modula3.  If you do not have
  114.    access to Usenet, there is a relay mailing list; send a message to
  115.    m3-request@src.dec.com to be added to it.
  116.  
  117.    There are a couple high-level overview articles available:
  118.  
  119.         "Modula-3", Sam Harbison, Byte, Vol. 15, No. 12, November 1990,
  120.         pp 385+.
  121.  
  122.         "Safe Programming with Modula-3", Sam Harbison, Dr. Dobb's Journal,
  123.         Vol. 17, No. 10, October 1992, pp 88+.
  124.  
  125.    A description of the Modula-3 type system is in
  126.  
  127.         "The Modula-3 Type System", Luca Cardelli, Jim Donahue, Mick Jordan,
  128.         Bill Kalsow, Greg Nelson, Conference Record of the Sixteenth Annual
  129.         ACM Symposium on Principles of Programming Languages (POPL), Austin
  130.         Texas, January 11-13 1989, pp 202-212.
  131.  
  132.    The Trestle window system toolkit, higher-level FormsVBT toolkit, and
  133.    Zeus animation system available with Modula-3, are documented in the
  134.    following reports:
  135.  
  136.         "Trestle Reference Manual", Mark S. Manasse and Greg Nelson,
  137.         SRC Research Report 68, December 1991.
  138.  
  139.         "Trestle Tutorial", Mark S. Manasse and Greg Nelson, SRC Research
  140.         Report 69, May 1, 1992.
  141.  
  142.         "VBTkit Reference Manual: A toolkit for Trestle", edited by
  143.         Marc H. Brown and James R. Meehan.  (soon to be a SRC Research
  144.         Report)  A draft version is available via anonymous FTP from
  145.         gatekeeper.dec.com in pub/DEC/Modula-3/contrib/vbtkit.25Mar93.ps.Z.
  146.  
  147.         "The FormsVBT Reference Manual", Marc H. Brown and James R. Meehan,
  148.         (soon to be a SRC Research Report).  A draft version is available
  149.         via anonymous FTP from gatekeeper.dec.com in
  150.         pub/DEC/Modula-3/contrib/formsvbt.25Mar93.ps.Z and
  151.         pub/DEC/Modula-3/contrib/formsvbt.AppC.26Mar93.ps.Z.
  152.  
  153.         "Zeus: A System for Algorithm Animation and Multi-View Editing",
  154.         Marc H. Brown, SRC Research Report 75, February 28, 1992.
  155.         Available via anonymous FTP from gatekeeper.dec.com in
  156.         pub/DEC/SRC/research-reports/SRC-075*.ps.Z.
  157.  
  158.         "Color and Sound in Algorithm Animation", Marc H. Brown and
  159.         John Hershberger, SRC Research Report 76a, August 30, 1991.
  160.         Available via anonymous FTP from gatekeeper.dec.com in
  161.         pub/DEC/SRC/research-reports/SRC-076a*.ps.Z.
  162.  
  163.         "The 1992 SRC Algorithm Animation Festival", Marc H. Brown, 
  164.     SRC Research Report 98, March 27, 1993.  Available via anonymous ftp
  165.         from gatekeeper.dec.com in 
  166.         pub/DEC/SRC/research-reports/SRC-098*.ps.Z.
  167.  
  168.    Hardcopy versions of these reports can be ordered by e-mail; send your
  169.    request including a postal mail address to src-reports@src.dec.com.
  170.  
  171.  
  172. 3.1. Where can I get an implementation?
  173.  
  174.    Two implementations are available, SRC Modula-3 and a
  175.    PC version of it (m3pc).  Work is also progressing on GNU Modula-3.
  176.  
  177.    As far as we know, implementations are not available for VMS, Macintosh,
  178.    or Alpha AXP/OSF.
  179.  
  180.  
  181. 3.2. What is SRC Modula-3?
  182.  
  183.    SRC Modula-3 was built by the DEC Systems Reseach Center
  184.    and is available via anonymous ftp from gatekeeper.dec.com in
  185.    pub/DEC/Modula-3/release.
  186.  
  187.    The current version, 2.11, implements the language defined in SPwM3.
  188.    There are versions for the following machines:
  189.  
  190.         AIX386  IBM PC running AIX/PS2,
  191.         AP3000  Apollo DN4500 running Domain/OS
  192.         ARM     Acorn R260 running RISC iX 1.21
  193.         DS3100  DECstation 3100 and 5000 running Ultrix 4.0 and 4.2
  194.         HP300   HP 9000/300 running HP-UX 8.0
  195.     HPPA    HP 700/800 running HP-UX 8.0
  196.         IBMR2   IBM R6000 running AIX 3.1, 
  197.         IBMRT   IBM RT running IBM/4.3, 
  198.         NEXT    NeXT running ??
  199.     OKI     Okidata 7300 (i860) running AT&T SVR4.0
  200.         SPARC   SPARCstation running SunOS 4.1.x
  201.         SUN3    SUN3 running SunOS
  202.     SUN386  Sun 386i  running SunOS 4.0.1
  203.         UMAX    Encore Multimax running UMAX 4.3 (R4.1.1)
  204.         VAX     VAX running Ultrix 3.1
  205.  
  206.    SRC Modula-3 includes a user manual, compiler, runtime library,
  207.    some libraries and a few other goodies (see below).
  208.  
  209.    The compiler generates C as an intermediate language and should be
  210.    fairly easy to port.  Except for the very lowest levels of the
  211.    thread implementation, the entire system is written in Modula-3.
  212.  
  213.  
  214. 3.3. What is m3pc?
  215.  
  216.    m3pc is available via anonymous ftp from gatekeeper.dec.com in
  217.    pub/DEC/Modula-3/contrib/m3pc.
  218.  
  219.    From: laszlo@post.ifi.uni-klu.ac.at (Prof.Dr.Laszlo BOESZOERMENYI)
  220.    Subject: M3 pn PC
  221.    Date: 8 Mar 1993 13:13:52 GMT
  222.  
  223.    The Modula-3 system ported by us on the PC and available on the
  224.    gatekeeper, runs with MSDOS, gnu c compiler and djgpp memory
  225.    manager (detailed description in the read me file).
  226.  
  227.    You may compile, link and run Modula-3 programs, without threads.
  228.    From the library modules only those are tested which are used by
  229.    the compiler.  In the course of a student project a
  230.    "student-friendly" environment is in development.  It will be
  231.    available at end of June (hopefully).
  232.  
  233.  
  234. 3.4. What is GNU Modula-3?
  235.  
  236.    From: moss@cs.cmu.edu (Eliot Moss)
  237.    Subject: GNU Modula-3 alpha release status
  238.    Date: 25 Mar 93 17:53:12 GMT
  239.  
  240.    We said we'd try to get the initial (alpha) release of GNU
  241.    Modula-3 out some time this month (March), and we're in the
  242.    process of figuring out what to release and how to package it
  243.    up. We expect to have something in roughly two weeks (watch
  244.    this space for a notice).
  245.  
  246.    What would this be? First, it is a compiler for the VAX (only)
  247.    under Ultrix (only), definitely without threads, and probably
  248.    still failing a small number of the tests in the SRC test
  249.    suite (which implies that not all of libm3 is likely to work
  250.    either). The actual release information will detail more about
  251.    what's working and what's not at that time. We DO currently
  252.    pass all the compiler tests that the SRC compiler did when it
  253.    was first released (i.e., the ones we fail are more obscure
  254.    things that users uncovered over time).
  255.  
  256.    Second, the release itself will be a compressed tar file
  257.    including sources and executables. The executables will
  258.    probably work only if you put libraries, etc., in the expected
  259.    places (otherwise, you'll need to rebuild from sources).The
  260.    compiler is written in C and should be compiled with a recent
  261.    version of gcc (so you'll need gcc installed). The system also
  262.    uses gld (the GNU linker).
  263.  
  264.    This release should be most useful to people undertaking ports
  265.    to other machines and operating systems, since it will give
  266.    them a head start on understanding the compiler and getting
  267.    the full system ready. It may be of some use for ordinary
  268.    programming, but it really depends on whether you tend to use
  269.    features that tickle the remaining bugs. We are indeed
  270.    interested in alpha test reports, but only if they tell us
  271.    something new (i.e., we'll provide a list of known
  272.    deficiencies).
  273.  
  274.    When the release is made, we'll also start email discussions
  275.    with the various parties who have indicated they might
  276.    undertake ports, to help sort out who will do what.
  277.  
  278.    Regards, and thanks for your continued interest and
  279.    encouragement -- EM
  280.  
  281.    From: moss@cs.cmu.edu (Eliot Moss)
  282.    Subject: GNU Modula-3 pre-release
  283.    Date: Wed, 5 May 1993 23:49:33 GMT
  284.  
  285.    At long last, the GNU Modula-3 project has a pre-release ready, for
  286.    the VAX/Ultrix platform ONLY. Various folks had notified us of
  287.    their interest in doing ports or alpha testing, and they have
  288.    already been sent email with particulars on how to obtain the tar
  289.    file, etc. There are a number of known bugs; I'll see about making
  290.    a list available by ftp or something, for interested parties.
  291.  
  292.    It is our opinion that the prerelease is not mature enough for
  293.    general use, but we wished to give a head start to those folks
  294.    attempting ports, and we will make periodic patches available. If
  295.    you want to use this compiler for serious program development or
  296.    need something solid with debugging support for classroom use, you
  297.    should wait until we've fixed more of the problems. (But to give a
  298.    sense of what we HAVE accomplished, as I recall, all but 3 of the
  299.    SRC compiler tests compile (there are 137 of them).) We hope to do
  300.    a more general release, and support more platforms, in the summer.
  301.  
  302.    If you're interested in helping and have not previously contacted
  303.    us, please send email to me and/or Rick Hudson
  304.    (hudson@cs.umass.edu).
  305.  
  306.    Thanks to Digital and SRC for supporting us, and to Rick Hudson, Amer Diwan,
  307.    and Norm Walsh, the guys who do all the hard work!
  308.  
  309.  
  310. 4.1. Why is "Hello World" so large?
  311.  
  312.    Modula-3 programs are larger than C programs for the following reasons:
  313.  
  314.      1) The fixed runtime is substantially larger.  It contains a
  315.         garbage collector, a thread runtime, and exception support.
  316.         Note that "Hello World" is virtually all runtime.  For
  317.         larger programs the runtime is not an issue.
  318.  
  319.      2) The generated code includes runtime checks for out-of-bound
  320.         array references and NIL pointer.  Many of these checks could
  321.         be removed by a better compiler.  The current compiler is
  322.         only a research prototype.
  323.  
  324.      3) The compiler generates C code as its intermediate language
  325.         consequently the final machine code suffers.  For example,
  326.         the compiler is constantly storing single-precision floating
  327.         point values into memory to get around C's predisposition
  328.         for double precision.
  329.  
  330. 4.2. Why objects and interfaces?
  331.  
  332.    Allan Heydon on comp.lang.modula3,  May 4th 1993:
  333.  
  334.    Modula-3 provides two separate mechanisms for data-hiding: one for 
  335.    hiding details about how interfaces are implemented, and the other 
  336.    for hiding details about how objects are implemented.
  337.  
  338.    The first data-hiding mechanism is realized by the distinction between 
  339.    interfaces and modules. Clients can only import interfaces, so the 
  340.    names declared in the modules implementing those interfaces are hidden 
  341.    from clients. Note that this mechanism has only two levels; a name 
  342.    is either declared in an interface, or it isn't. If a name is only 
  343.    declared in a module, it can't be used by a client. 
  344.  
  345.    The second data-hiding mechanism is realized by opaque types and 
  346.    revelations. A Modula-3 interface may declare an object type to be 
  347.    opaque, in which case only a subset of the fields and methods of 
  348.    that object are revealed to clients importing the interface. Furthermore, 
  349.    the Modula-3 revelation mechanism allows a designer to reveal successively 
  350.    more fields and methods of an object in a series of interfaces. The 
  351.    fields and methods visible to a client then depends on which interfaces 
  352.    the client imports. 
  353.  
  354.    The latter mechanism is quite flexible. As opposed to the interface/module 
  355.    data-hiding mechanism, opaque types allow you to define an arbitrary 
  356.    number of levels at which more and more information about the implementation 
  357.    of your object is revealed. 
  358.  
  359.    See Sections 2.2.10, 2.4.6, and 2.4.7 of "Systems Programming with 
  360.    Modula-3" for more information about opaque types and about partial 
  361.    and complete revelations. 
  362.  
  363. 4.3. What is the story with Trestle and OpenWindows?
  364.  
  365.    Mark Manasse says: 
  366.  
  367.    I think that the OpenWindows release should be enough (no need to 
  368.    get the MIT X release], although there are a few things in Trestle
  369.    that trigger devastating bugs in OpenWindows. But the only library
  370.    we depend on is Xlib, R4 or later.
  371.  
  372.    The main thing I know that crashes OW 2.0 is the code where we call 
  373.    GrabKey specifying AnyKey.  You can either loop over all of the 
  374.    keys, or you can just comment out the call; programs won't run exactly 
  375.    the same, but you probably won't notice the difference.
  376.  
  377.  
  378. 4.4 When is the next release of SRC Modula-3 ?
  379.  
  380.   The next release will be 3.0.  Here are some of the new things you will
  381.   find in it:
  382.   
  383.   1. the compiler has a new internal interface between the front-end and
  384.      the back-end, M3CG.  This interface is supposed to be easy to
  385.      implement.
  386.   
  387.   2. the front-end can compute in the target arithmetic system; in particular
  388.      it is possible to cross-compile to machines with larger integers than
  389.      the host.
  390.   
  391.   3. one back-end has been implemented on top of gcc.  The implementation of
  392.      M3CG interface generates the tree representation used internally in gcc.
  393.      From the gcc point of view, this back-end looks like a new front-end.
  394.      Using this back-end, we have cross-compiled solitaire for mips, alpha and
  395.      386 processors; there is no reason to believe that there would be a
  396.      problem for the other architectures supported by gcc.
  397.   
  398.   4. Dave Hanson wrote another implementation of the M3CG that is
  399.      self-contained. He is currently working on the 386 code generation (he
  400.      has done the mips code generation already).
  401.   
  402.   5. gdb has been modified to understand Modula-3 debugging information
  403.      produced by the back-ends.  gdb can now parse Modula-3 expressions, print
  404.      Modula-3 values and evaluate some of the Modula-3 built-in operations.
  405.      There is also a little bit of support for multi-threaded programs (you
  406.      can look at the stacks of other threads).
  407.   
  408.   6. there is a replacement for m3make, m3build, that does not rely on
  409.      cpp/awk/sed/make and what not, and removes some of the limitations of
  410.      m3make.  m3makefiles are very similar.
  411.   
  412.   7. libm3 has been significantly changed by the Interface Police, mostly in
  413.      the area of OS interfaces and data structures.
  414.   
  415.   8. for the OS interfaces, we still have the U* interfaces, but applications
  416.      are not supposed to use those.  Instead they should use a new set of
  417.      interfaces that are os-independent; for example, there is a Pathname
  418.      interface that manipulates file names; there is a Process interface that
  419.      manipulate child processes.  These interfaces enabled a prototype port
  420.      of the C based version to Windows NT machines.
  421.   
  422.   9. for the data structures, generics have been introduced and the various
  423.      data structures are more consistent.
  424.   
  425.   10. because of 6 and 8, we can think about going to different os than Unix.
  426.       In particular a Windows NT port will be available at some point (may not
  427.       be in 3.0).
  428.   
  429.   11. the runtime has been improved quite a bit.
  430.   
  431.   12. new platforms: Alpha running OSF/1, 386 running Linux.  We will pay
  432.       more attention to the porting instructions and support.
  433.   
  434.   13. I am not sure about all the changes in the libraries other than
  435.       libm3.  I suspect that there will be few changes in trestle, but that
  436.       mentor changed quite a bit. 
  437.   
  438.   14. The Windows NT port uses native threads.  This should be a good model
  439.       for other implementations of Thread using native threads.
  440.  
  441.   The current status is:
  442.   . the front-end is very stable
  443.   . the gcc-based back-end has been stable for 4 months
  444.   . the gdb extensions are brand new and need some test
  445.   . the interface police work is very stable
  446.   . we are working on bringing the system up on the machines we have in the
  447.     building, and building the export machinery.
  448.   
  449.   We don't have a date for the 3.0 release.  Given the amount of changes
  450.   introduced by 3.0, I suspect that the first few releases will not work out
  451.   of the box for any machine but the ones for which we can test (decstations
  452.   [mips and alpha], linux).  Consequently, I expect a high rate of releases
  453.   for a while.  We will try to post accurate information about the status of
  454.   each machine, but we can only rely what you tell us.
  455.   
  456.   At this point, I would not encourage anybody to start a new port.  If you
  457.   have a new port, or are close to complete one, you can send us your bits,
  458.   we will try to put them in 3.0.
  459.   
  460.   
  461. 5.1. What if I don't have ftp access?
  462.   
  463.    Unfortunately, we cannot deliver Modula-3 other than by 
  464.    anonymous ftp.  
  465.  
  466.    Fortunately, Prime Time Freeware (PTF) includes Modula-3.  PTF is
  467.    a set of two ISO-9660 CDroms filled with 3GB of freeware, issued
  468.    semi-annually.  The latest issue, Volume 1, Number 2, July 1992,
  469.    contains SRC Modula-3 2.07.  PTF is distributed via bookstores and
  470.    mail.  You can reach PTF using:
  471.  
  472.     Email:  ptf@cfcl.com
  473.         Fax:    [1] (408) 738 2050
  474.         Voice:  [1] (408) 738 4832
  475.         Mail:   Prime Time Freeware
  476.              415-112 N. Mary Ave., Suite 50
  477.         Sunnyvale, CA 94086
  478.             USA
  479.  
  480. 6.1. Can I contribute Modula-3 software?
  481.  
  482.    Certainly.  Send us what you are willing to share, be it programs,
  483.    libraries or other things.  We'll put them in the distribution.
  484.  
  485.    Right now, the pub/DEC/Modula-3/contrib directory contains:
  486.  
  487.       m3rpc   an rpc system from Xerox Parc
  488.       M2toM3  a translator from Modula-2 to Modula-3
  489.       m3pc    an implementation of Modula-3 for PCs.
  490.    
  491. ----
  492. Eric.
  493.