CMU Common Lisp

CMU Common LispCMUCL),是自由Common Lisp實現,最初在卡內基·梅隆大學開發。

CMUCL
原作者卡內基·梅隆大學
首次發布1980年,​44年前​(1980
當前版本21d[1](2018年12月8日,​6年前​(2018-12-08
原始碼庫 編輯維基數據鏈接
作業系統遵守POSIX的OS
平台跨平台
語言Common Lisp
類型編譯器運行時系統
許可協議公有領域
網站www.cons.org/cmucl/

CMUCL運行在大多數類Unix平台上,包括LinuxBSD;也有試驗性的Windows移植。Steel Bank Common Lisp派生自CMUCL。Scieneer Common Lisp是CMUCL的商業衍生品。

歷史

它的最早實現先於Common Lisp,派生自出現在大約1980年的Spice Lisp英語Spice Lisp。在1985年,Rob MacLachlan開始重寫編譯器,它後來成為「Python」編譯器,並且CMUCL被移植到Unix工作站,比如IBM PC RT英語IBM PC RTMIPSSPARC。早期的CMUCL發行不支持Intelx86架構,由於它缺乏暫存器。CMUCL嚴格的分離有類型標記的類型和中間數據類型,而垃圾回收器依賴於,已知一半的CPU暫存器只持有有標記的類型,而另一半只持有無標記的。它沒有為「Python」後端留下足夠的暫存器。

在CMU取消了這個項目(將某些CMUCL編譯器基礎用於了Dylan實現)之後,維護由一組志願者接管。在1996年他們在自己的下部構造上製作了正規發行。

大約同時完成了到Intel的x86架構的移植,最初運行在FreeBSD上,後來運行在Linux上。缺乏暫存器的問題,通過採用新的保守垃圾回收器解決了。這個新垃圾回收器,接受在暫存器中的任何類型的任何值,並把可以是指針的任何東西當作指針處理,用途是不回收或移動它的目標。

編譯器和其他代碼執行單元

  • CMUCL的特徵是主要用於REPL的一個解釋器,但是它可以用來快速裝載不需要編譯的Lisp文件。
  • 解釋(從編譯器發出的)緊緻字節碼的一個機器。這在現在很少使用了,但是在早期CMUCL發行中很流行,因為在網際網路下載帶寬很低的時代,這可以大幅縮減映像的大小。
  • 叫做「Python」(不要混淆於Python程式語言)的本機代碼編譯器。如果Common Lisp原始碼具有適當的聲明,並且在組建時考慮到了速度,「Python」編譯器生成的代碼,相比於用C++編譯的代碼沒有更多的開銷。一些低效的東西比如函數調用接口,和缺乏用戶定義數據類型的無指針數組,是Common Lisp標準主導造成的,仍然需要解決(比如通過內聯更多和使用宏來建造,看似用戶定義結構的構造,而實際上訪問在預先分配的特殊數組中的欄位)。「Python」編譯器的特徵是有強力的類型推論,通過要麼自動推論出類型,要麼對錯過的優化機會的提示,幫助編程者書寫無開銷的代碼。

特徵

引用

參閱

外部連結