Experiences creating a portable cedar

  • Authors:
  • R. Atkinson;A. Demers;C. Hauser;C. Jacobi;P. Kessler;M. Weiser

  • Affiliations:
  • Xerox PARC, 3333 Coyote Hill Road, Palo Alto, CA;Xerox PARC, 3333 Coyote Hill Road, Palo Alto, CA;Xerox PARC, 3333 Coyote Hill Road, Palo Alto, CA;Xerox PARC, 3333 Coyote Hill Road, Palo Alto, CA;Xerox PARC, 3333 Coyote Hill Road, Palo Alto, CA;Xerox PARC, 3333 Coyote Hill Road, Palo Alto, CA

  • Venue:
  • PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
  • Year:
  • 1989

Quantified Score

Hi-index 0.00

Visualization

Abstract

Cedar is the name for both a language and an environment in use in the Computer Science Laboratory at Xerox PARC since 1980. The Cedar language is a superset of Mesa, the major additions being garbage collection and runtime types. Neither the language nor the environment was originally intended to be portable, and for many years ran only on D-machines at PARC and a few other locations in Xerox. We recently re-implemented the language to make it portable across many different architectures. Our strategy was, first, to use machine-dependent C code as an intermediate language, second, to create a language-independent layer known as the Portable Common Runtime, and third, to write a relatively large amount of Cedar-specific runtime code in a subset of Cedar itself. By treating C as an intermediate code we are able to achieve reasonably fast compilation, very good eventual machine code, and all with relatively small programmer effort. Because Cedar is a much richer language than C, there were numerous issues to resolve in performing an efficient translation and in providing reasonable debugging. These strategies will be of use to many other porters of high-level languages who may wish to use C as an assembler language without giving up either ease of debugging or high performance. We present a brief description of the Cedar language, our portability strategy for the compiler and runtime, our manner of making connections to other languages and the Unix* operating system, and some measures of the performance of our “Portable Cedar”.