Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

CMU Common Lisp

From Wikipedia, the free encyclopedia
Free Common Lisp implementation
icon
This articlerelies excessively onreferences toprimary sources. Please improve this article by addingsecondary or tertiary sources.
Find sources: "CMU Common Lisp" – news ·newspapers ·books ·scholar ·JSTOR
(May 2022) (Learn how and when to remove this message)
CMUCL
Original authorCarnegie Mellon University
DeveloperVarious
Initial releaseEarly 1980; 46 years ago (1980)
Stable release
21f[1] / October 1, 2025; 4 months ago (2025-10-01)
Operating systemSeveralPOSIX-compliant OSs
PlatformCross-platform
Available inCommon Lisp
TypeCompiler andruntime
LicensePublic domain
Websitecmucl.org
Repository

CMUCL is afreeCommon Lisp implementation, originally developed atCarnegie Mellon University.

CMUCL runs on mostUnix-like platforms, includingLinux andBSD; there is an experimentalWindows port as well.Steel Bank Common Lisp is derived from CMUCL. TheScieneer Common Lisp was a commercial derivative from CMUCL.

History

[edit]

The earliest implementation predates Common Lisp and was part ofSpice 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 aDylan 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 onFreeBSD, laterLinux. 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 theREPL, 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 when download bandwidth on the Internet was low.
  • A native codecompiler named "Python" (not to be confused withthe 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 powerfultype 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]
Implementations
Software
Libraries
Applications
Development
environments
Publications
Design committee
People
Other
Retrieved from "https://en.wikipedia.org/w/index.php?title=CMU_Common_Lisp&oldid=1333075204"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp