REPL(ID:2379/rep001)

Restricted EPL 


Restricted EPL. Bell Labs 1966 Bob Daly

A subset of EPL (the efficient part) used to write the core of Multics.

System Module Interfaces (PL/I Subset for System Programming) for Multics


"As we developed early versions of the system, we found that the PL/I language had many powerful features that could cause the EPL compiler to generate truly terrible code. Working with the compiler team, Bob Daley created a subset of the EPL subset of PL/I, to be used for programming the Multics supervisor and critical commands. The EPL compiler was modified to do an even better job in producing code for that language subset. This language, called "Restricted EPL" (REPL) was used for the initial version of the system. It is described in MSPM Section BB.2.01, EPL Subset for System Programming."



Related languages
EPL => REPL   Subset
PL/I => REPL   Subset

References:
  • R. Montrose Graham "System Module Interfaces (PL/I Subset for System Programming)" MULTICS SYSTEM-PROGRAMMERS' MANUAL Section BB.2 PUBLISHED: 6/24/66 view details External link: Online at multicians
  • Freiburghouse, R. A. "The Multics PL/1 Compiler" view details Abstract: The Multics PL/1 compiler is in many respects a "second generation" PL/1 compiler. It was built at a time when the language was considerably more stable and well defined than it had been when the first compilers were built [1,2]. It has benefited from the experience of the first compilers and avoids some of the difficulties which they encountered. The Multics compiler is the only PL/1 compiler written in PL/1 and is believed to be the first PL/1 compiler to produce high speed object code. Extract: The language
    The language
    The Multics PL/1 language is the language defined by the IBM "PL/1 Language Specifications" dated March 1968. At the time this paper was written most language features were implemented by the compiler but the run time library did not include support for input and output, as well as several lesser features. Since the multi-tasking primitives provided by the Multics operating system were not well suited to PL/1 tasking, PL/1 tasking was not implemented. Inter-process communication (Multics tasking) may be performed through calls to operating system facilities.

    Extract: Design objectives
    Design objectives
    The project's design decisions and choice of techniques were influenced by the following objectives:

    1) A correct implementation of a reasonably complete PL/1 language.
    2) A compiler which produced relatively fast object code for all language constructs. For similar language constructs, the object code was expected to equal or exceed that produced by most Fortran or COBOL compilers.
    3) Object program compatibility with EPL object programs and other Multics languages.
    4) An extensive compile time diagnostic facility.
    5) A machine independent compiler capable of bootstrapping itself onto other hardware.
    The compiler's size and speed were considered less important than the above mentioned objectives. Each phase of the original compiler occupies approximately 32K, but after the compiler bas compiled itself that figure will be about 24K. The original compiler was about twice as slow as the Multics Fortran compiler. The bootstrapped version of the PL/1 compiler is expected to be considerably faster than the original version but it will probably not equal the speed of Fortran.
    Extract: SUMMARY
    SUMMARY
    Our experiences both as users and implementors of PL/1 have led us to form a number of opinions and insights which may be of general interest.

    It is feasible, but difficult, to produce efficient object code for the PL/1 language as it is currently defined. Unless a considerable amount of work is invested in a PL/1 compiler, the object code it generates will generally be much worse than that produced by most Fortran or COBOL compilers.


    The difficulty of building a compiler for the current language has been seriously underestimated by most implementors. Unless the language is markedly improved and simplified this problem will continue to restrict the availability and acceptance of the language and will lead to the implementation of incompatible dialects and subsets. [7]


    Simplification of the existing language will make it more suitable to users and implementors. We believe that the language can be simplified and still retain its "universal" character and capabilities.


    The experience of writing the compiler in PL/1 convinced us that a subset of the language is well suited to system programming. This conviction is supported by Professor Corbat㠩n his report on the use of PL/1 as an implementation language for the Multics system. [8] Many PL/1 concepts and constructs are valuable, but PL/1 structures and list processing seem to be the principal improvement over alternative languages. [9] External link: History of Multics PL/1
          in [AFIPS] Proceedings of the 1969 Fall Joint Computer Conference FJCC 35 view details