fbpx
Wikipedia

CMU Common Lisp

CMUCL is a free Common Lisp implementation, originally developed at Carnegie Mellon University.

CMUCL
Original author(s)Carnegie Mellon University
Developer(s)Various
Initial releaseEarly 1980; 43 years ago (1980)
Stable release
21e[1] / May 14, 2023; 6 months ago (2023-05-14)
Repository
  • gitlab.common-lisp.net/cmucl/cmucl
Operating systemSeveral POSIX-compliant OSs
PlatformCross-platform
Available inCommon Lisp
TypeCompiler and runtime
LicensePublic domain
Websitecmucl.org

CMUCL runs on most Unix-like platforms, including Linux and BSD; there is an experimental Windows port as well. Steel Bank Common Lisp is derived from CMUCL. The Scieneer Common Lisp was a commercial derivative from CMUCL.

History edit

The earliest implementation predates Common Lisp and was part of Spice Lisp, around 1980. In 1985 Rob MacLachlan started re-writing the compiler to what would become the Python compiler and CMUCL was ported to Unix workstations such as the IBM PC RT, MIPS and SPARC. Early CMUCL releases did not support Intel's x86 architecture due to a lack of registers. CMUCL strictly separated type-tagged and immediate data types and the garbage collector would rely on knowing that one half of the CPU registers could only hold tagged types and the other half only untagged types. This did not leave enough registers for a Python backend.

After CMU canceled the project (in favor of a Dylan implementation using some of CMUCL's compiler base) maintenance has been taken over by a group of volunteers. By 1996 this group was making regular releases on its own infrastructure.

Around the same time a port to Intel's x86 architecture was completed, first running on FreeBSD, later Linux. The problem of lacking registers was solved by a new conservative garbage collector. This new garbage collector accepts any value of any type in the registers, and treats anything that might be a pointer as a pointer for the purpose of not collecting or moving its target.

Compiler and other code execution units edit

  • CMUCL features an interpreter that is mainly used for the REPL, but can be used for faster loading of Lisp files that don't need compilation.
  • A machine to interpret compact bytecode (which can be emitted from the compiler). This is rarely used now, but was popular in early CMUCL releases because image sizes were drastically reduced at a time where download bandwidth on the Internet was low.
  • A native code compiler named "Python" (not to be confused with the Python programming language). If Common Lisp source code has been written with appropriate declarations and is organized with speed in mind the Python compiler generates code that is almost free from overhead compared to code compiled from languages like C++. Some inefficiencies such as function call interfaces and lack of pointer-free arrays of user-defined data types are dictated by the Common Lisp standard and still need to be worked around (e.g. by inlining more and using macros to build constructs that look like user-defined structures but are actually accessing fields in preallocated specialized arrays). The Python compiler also features powerful type inferences, helping the programmer in writing overhead-free code by either inferring types automatically or issuing hints about missed optimization opportunities.

Features edit

See also edit

References edit

  1. ^ "Home · Wiki · cmucl / cmucl · GitLab".

External links edit

  • CMUCL Home Page

common, lisp, this, article, relies, excessively, references, primary, sources, please, improve, this, article, adding, secondary, tertiary, sources, find, sources, news, newspapers, books, scholar, jstor, 2022, learn, when, remove, this, template, message, cm. This article relies excessively on references to primary sources Please improve this article by adding secondary or tertiary sources Find sources CMU Common Lisp news newspapers books scholar JSTOR May 2022 Learn how and when to remove this template message CMUCL is a free Common Lisp implementation originally developed at Carnegie Mellon University CMUCLOriginal author s Carnegie Mellon UniversityDeveloper s VariousInitial releaseEarly 1980 43 years ago 1980 Stable release21e 1 May 14 2023 6 months ago 2023 05 14 Repositorygitlab wbr common lisp wbr net wbr cmucl wbr cmuclOperating systemSeveral POSIX compliant OSsPlatformCross platformAvailable inCommon LispTypeCompiler and runtimeLicensePublic domainWebsitecmucl wbr orgCMUCL runs on most Unix like platforms including Linux and BSD there is an experimental Windows port as well Steel Bank Common Lisp is derived from CMUCL The Scieneer Common Lisp was a commercial derivative from CMUCL Contents 1 History 2 Compiler and other code execution units 3 Features 4 See also 5 References 6 External linksHistory editThe earliest implementation predates Common Lisp and was part of Spice Lisp around 1980 In 1985 Rob MacLachlan started re writing the compiler to what would become the Python compiler and CMUCL was ported to Unix workstations such as the IBM PC RT MIPS and SPARC Early CMUCL releases did not support Intel s x86 architecture due to a lack of registers CMUCL strictly separated type tagged and immediate data types and the garbage collector would rely on knowing that one half of the CPU registers could only hold tagged types and the other half only untagged types This did not leave enough registers for a Python backend After CMU canceled the project in favor of a Dylan implementation using some of CMUCL s compiler base maintenance has been taken over by a group of volunteers By 1996 this group was making regular releases on its own infrastructure Around the same time a port to Intel s x86 architecture was completed first running on FreeBSD later Linux The problem of lacking registers was solved by a new conservative garbage collector This new garbage collector accepts any value of any type in the registers and treats anything that might be a pointer as a pointer for the purpose of not collecting or moving its target Compiler and other code execution units editCMUCL features an interpreter that is mainly used for the REPL but can be used for faster loading of Lisp files that don t need compilation A machine to interpret compact bytecode which can be emitted from the compiler This is rarely used now but was popular in early CMUCL releases because image sizes were drastically reduced at a time where download bandwidth on the Internet was low A native code compiler named Python not to be confused with the Python programming language If Common Lisp source code has been written with appropriate declarations and is organized with speed in mind the Python compiler generates code that is almost free from overhead compared to code compiled from languages like C Some inefficiencies such as function call interfaces and lack of pointer free arrays of user defined data types are dictated by the Common Lisp standard and still need to be worked around e g by inlining more and using macros to build constructs that look like user defined structures but are actually accessing fields in preallocated specialized arrays The Python compiler also features powerful type inferences helping the programmer in writing overhead free code by either inferring types automatically or issuing hints about missed optimization opportunities Features editGenerational garbage collection and multiprocessing capability on the x86 ports A foreign function interface which allows interfacing with C code and system libraries including shared libraries on most platforms and direct access to Unix system calls Support for interprocess communication and remote procedure calls An implementation of CLOS the Common Lisp Object System which includes multimethods and a metaobject protocol A graphical source level debugger using a Motif interface and a code profiler An interface to the X11 Window System CLX and a sophisticated graphical widget library Garnet Programmer extensible input and output streams Hemlock an Emacs like editor implemented in Common Lisp See also edit nbsp Free and open source software portalSteel Bank Common LispReferences edit Home Wiki cmucl cmucl GitLab External links editCMUCL Home Page Retrieved from https en wikipedia org w index php title CMU Common Lisp amp oldid 1166413335, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.