Knowledge

CMU Common Lisp

Source 📝

408:). 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 506: 362:, 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. 220: 25: 380:. 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. 396:
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
369:
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.
896: 347: 1055: 412:, helping the programmer in writing overhead-free code by either inferring types automatically or issuing hints about missed optimization opportunities. 46: 39: 1065: 1045: 924: 735: 1060: 89: 583: 423: 61: 1050: 511: 600: 903: 838: 729: 68: 108: 266: 75: 335: 745: 405: 57: 366: 197: 171: 448: 430: 320: 132: 1024: 1013: 686: 576: 889: 35: 680: 640: 613: 519: 343: 1019: 917: 858: 793: 657: 486: 452: 82: 775: 569: 8: 848: 724: 719: 705: 608: 219: 539: 372:
Around the same time a port to Intel's x86 architecture was completed, first running on
967: 635: 462:, the Common Lisp Object System, which includes multimethods and a metaobject protocol. 244: 992: 987: 946: 813: 788: 477: 339: 972: 808: 466: 434: 282: 230: 798: 646: 275: 997: 409: 393:, but can be used for faster loading of Lisp files that don't need compilation. 249: 1039: 977: 962: 470: 313: 287: 206: 441: 982: 592: 316: 259: 853: 624: 359: 139: 127: 863: 823: 713: 652: 433:
which allows interfacing with C code and system libraries, including
327: 24: 696: 401: 271: 910: 828: 818: 756: 373: 358:
The earliest implementation predates Common Lisp and was part of
803: 670: 561: 941: 868: 751: 740: 619: 490: 480:(CLX), and a sophisticated graphical widget library (Garnet). 377: 331: 236: 783: 665: 459: 438: 390: 389:
CMUCL features an interpreter that is mainly used for the
383: 501: 556: 298: 1037: 426:and multiprocessing capability on the x86 ports. 483:Programmer-extensible input and output streams. 365:After CMU canceled the project (in favor of a 577: 1056:Common Lisp (programming language) software 925:Object-Oriented Programming in Common Lisp 584: 570: 465:A graphical source-level debugger using a 218: 109:Learn how and when to remove this message 493:-like editor implemented in Common Lisp. 437:on most platforms, and direct access to 404:named "Python" (not to be confused with 350:was a commercial derivative from CMUCL. 319:implementation, originally developed at 1066:Public-domain software with source code 384:Compiler and other code execution units 1038: 540:"Home · Wiki · cmucl / cmucl · GitLab" 45:Please improve this article by adding 565: 512:Free and open-source software portal 18: 1046:Carnegie Mellon University software 13: 904:The Art of the Metaobject Protocol 730:Another System Definition Facility 14: 1077: 550: 504: 23: 1061:Free compilers and interpreters 591: 406:the Python programming language 16:Free Common Lisp implementation 532: 1: 746:Common Lisp Interface Manager 525: 177:21e / May 14, 2023 47:secondary or tertiary sources 7: 1051:Common Lisp implementations 897:Paradigms of AI Programming 497: 416: 346:is derived from CMUCL. The 338:; there is an experimental 154:; 44 years ago 10: 1082: 449:interprocess communication 431:foreign function interface 353: 321:Carnegie Mellon University 133:Carnegie Mellon University 1014:Common Lisp Object System 1006: 955: 934: 881: 837: 774: 704: 695: 662:ManKai Common Lisp (MKCL) 599: 293: 281: 265: 255: 243: 229: 196: 192: 170: 166: 148: 138: 126: 890:Common Lisp the Language 179:; 15 months ago 1025:Greenspun's tenth rule 681:Steel Bank Common Lisp 641:Embeddable Common Lisp 614:Armed Bear Common Lisp 520:Steel Bank Common Lisp 453:remote procedure calls 344:Steel Bank Common Lisp 34:relies excessively on 1020:Common Lisp HyperSpec 918:Practical Common Lisp 794:Common Music Notation 687:Symbolics Common Lisp 658:Macintosh Common Lisp 458:An implementation of 330:platforms, including 476:An interface to the 348:Scieneer Common Lisp 326:CMUCL runs on most 123: 968:Richard P. Gabriel 636:Corman Common Lisp 424:garbage collection 128:Original author(s) 121: 1033: 1032: 993:Guy L. Steele Jr. 988:Robin Popplestone 947:Guy L. Steele Jr. 877: 876: 789:Common Lisp Music 478:X11 Window System 469:interface, and a 307: 306: 119: 118: 111: 93: 58:"CMU Common Lisp" 1073: 973:Philip Greenspun 935:Design committee 702: 701: 586: 579: 572: 563: 562: 544: 543: 536: 514: 509: 508: 507: 435:shared libraries 303: 300: 231:Operating system 222: 217: 214: 212: 210: 208: 187: 185: 180: 162: 160: 155: 124: 120: 114: 107: 103: 100: 94: 92: 51: 27: 19: 1081: 1080: 1076: 1075: 1074: 1072: 1071: 1070: 1036: 1035: 1034: 1029: 1002: 951: 930: 873: 840: 833: 770: 716:Library Manager 691: 647:GNU Common Lisp 630:CMU Common Lisp 601:Implementations 595: 590: 557:CMUCL Home Page 553: 548: 547: 538: 537: 533: 528: 510: 505: 503: 500: 419: 410:type inferences 386: 356: 297: 225: 205: 188: 183: 181: 178: 158: 156: 153: 149:Initial release 115: 104: 98: 95: 52: 50: 44: 40:primary sources 28: 17: 12: 11: 5: 1079: 1069: 1068: 1063: 1058: 1053: 1048: 1031: 1030: 1028: 1027: 1022: 1017: 1010: 1008: 1004: 1003: 1001: 1000: 998:Daniel Weinreb 995: 990: 985: 980: 975: 970: 965: 959: 957: 953: 952: 950: 949: 944: 938: 936: 932: 931: 929: 928: 921: 914: 907: 900: 893: 885: 883: 879: 878: 875: 874: 872: 871: 866: 861: 856: 851: 845: 843: 835: 834: 832: 831: 826: 821: 816: 811: 806: 801: 796: 791: 786: 780: 778: 772: 771: 769: 768: 765: 762: 759: 754: 749: 743: 738: 733: 727: 722: 717: 710: 708: 699: 693: 692: 690: 689: 684: 678: 673: 668: 663: 660: 655: 650: 644: 638: 633: 627: 622: 617: 611: 605: 603: 597: 596: 589: 588: 581: 574: 566: 560: 559: 552: 551:External links 549: 546: 545: 530: 529: 527: 524: 523: 522: 516: 515: 499: 496: 495: 494: 484: 481: 474: 463: 456: 445: 427: 418: 415: 414: 413: 400:A native code 398: 394: 385: 382: 355: 352: 342:port as well. 305: 304: 295: 291: 290: 285: 279: 278: 269: 263: 262: 257: 253: 252: 250:Cross-platform 247: 241: 240: 239:-compliant OSs 233: 227: 226: 224: 223: 202: 200: 194: 193: 190: 189: 176: 174: 172:Stable release 168: 167: 164: 163: 150: 146: 145: 142: 136: 135: 130: 117: 116: 31: 29: 22: 15: 9: 6: 4: 3: 2: 1078: 1067: 1064: 1062: 1059: 1057: 1054: 1052: 1049: 1047: 1044: 1043: 1041: 1026: 1023: 1021: 1018: 1015: 1012: 1011: 1009: 1005: 999: 996: 994: 991: 989: 986: 984: 981: 979: 978:David A. Moon 976: 974: 971: 969: 966: 964: 963:Scott Fahlman 961: 960: 958: 954: 948: 945: 943: 940: 939: 937: 933: 927: 926: 922: 920: 919: 915: 913: 912: 908: 906: 905: 901: 899: 898: 894: 892: 891: 887: 886: 884: 880: 870: 867: 865: 862: 860: 857: 855: 852: 850: 847: 846: 844: 842: 836: 830: 827: 825: 822: 820: 817: 815: 812: 810: 807: 805: 802: 800: 797: 795: 792: 790: 787: 785: 782: 781: 779: 777: 773: 766: 763: 760: 758: 755: 753: 750: 747: 744: 742: 739: 737: 734: 731: 728: 726: 723: 721: 718: 715: 712: 711: 709: 707: 703: 700: 698: 694: 688: 685: 682: 679: 677: 674: 672: 669: 667: 664: 661: 659: 656: 654: 651: 648: 645: 642: 639: 637: 634: 631: 628: 626: 623: 621: 618: 615: 612: 610: 607: 606: 604: 602: 598: 594: 587: 582: 580: 575: 573: 568: 567: 564: 558: 555: 554: 541: 535: 531: 521: 518: 517: 513: 502: 492: 488: 485: 482: 479: 475: 472: 471:code profiler 468: 464: 461: 457: 454: 450: 446: 443: 440: 436: 432: 428: 425: 422:Generational 421: 420: 411: 407: 403: 399: 395: 392: 388: 387: 381: 379: 375: 370: 368: 363: 361: 351: 349: 345: 341: 337: 333: 329: 324: 322: 318: 315: 311: 302: 296: 292: 289: 288:Public domain 286: 284: 280: 277: 273: 270: 268: 264: 261: 258: 254: 251: 248: 246: 242: 238: 234: 232: 228: 221: 216: 204: 203: 201: 199: 195: 191: 175: 173: 169: 165: 151: 147: 143: 141: 137: 134: 131: 129: 125: 113: 110: 102: 91: 88: 84: 81: 77: 74: 70: 67: 63: 60: –  59: 55: 54:Find sources: 48: 42: 41: 37: 32:This article 30: 26: 21: 20: 923: 916: 909: 902: 895: 888: 882:Publications 841:environments 776:Applications 725:AllegroServe 720:AllegroCache 675: 629: 534: 447:Support for 442:system calls 371: 364: 357: 325: 309: 308: 256:Available in 209:.common-lisp 140:Developer(s) 105: 96: 86: 79: 72: 65: 53: 33: 983:Kent Pitman 839:Development 676:Scieneer CL 593:Common Lisp 317:Common Lisp 260:Common Lisp 1040:Categories 854:Clozure CL 849:Allegro CL 625:Clozure CL 609:Allegro CL 526:References 360:Spice Lisp 198:Repository 184:2023-05-14 152:Early 1980 69:newspapers 36:references 864:LispWorks 824:OpenMusic 714:Quicklisp 706:Libraries 653:LispWorks 328:Unix-like 767:Weblocks 764:Ironclad 736:Caveman2 697:Software 498:See also 417:Features 402:compiler 376:, later 272:Compiler 245:Platform 235:Several 99:May 2022 911:On Lisp 859:Hemlock 829:StumpWM 819:N-World 757:CL-HTTP 632:(CMUCL) 487:Hemlock 374:FreeBSD 354:History 340:Windows 294:Website 283:License 276:runtime 182: ( 157: ( 144:Various 83:scholar 1016:(CLOS) 956:People 814:Maxima 804:FriCAS 748:(CLIM) 732:(ASDF) 683:(SBCL) 671:Poplog 616:(ABCL) 215:/cmucl 213:/cmucl 207:gitlab 85:  78:  71:  64:  56:  1007:Other 942:X3J13 869:SLIME 809:Mirai 752:CLSQL 741:CLiki 649:(GCL) 643:(ECL) 620:CLISP 491:Emacs 489:, an 467:Motif 378:Linux 367:Dylan 332:Linux 312:is a 310:CMUCL 299:cmucl 237:POSIX 122:CMUCL 90:JSTOR 76:books 799:ICAD 784:ACL2 666:Mocl 460:CLOS 451:and 439:Unix 397:low. 391:REPL 334:and 314:free 301:.org 274:and 267:Type 211:.net 159:1980 62:news 761:CLX 336:BSD 38:to 1042:: 429:A 323:. 49:. 585:e 578:t 571:v 542:. 473:. 455:. 444:. 186:) 161:) 112:) 106:( 101:) 97:( 87:· 80:· 73:· 66:· 43:.

Index


references
primary sources
secondary or tertiary sources
"CMU Common Lisp"
news
newspapers
books
scholar
JSTOR
Learn how and when to remove this message
Original author(s)
Carnegie Mellon University
Developer(s)
Stable release
Repository
gitlab.common-lisp.net/cmucl/cmucl
Edit this at Wikidata
Operating system
POSIX
Platform
Cross-platform
Common Lisp
Type
Compiler
runtime
License
Public domain
cmucl.org
free

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.