Кіріспе

CMUCL – бастапқыда Карнеги Меллон университетінде әзірленген Common Lisp-тің тегін іске асырылуы. CMUCL көптеген Unix-ке ұқсас платформаларда, соның ішінде Linux және BSD-де жұмыс істейді; Windows-тың тәжірибелік порты да бар. Steel Bank Common Lisp CMUCL-ден туындаған. Scieneer Common Lisp – CMUCL-ден жасалған коммерциялық өнім.

Тарих

Ең алғашқы іске асырылу Common Lisp-тен бұрын жасалған және 1980 жылдар шамасында Spice Lisp құрамына кірген. 1985 жылы Роб МакЛаклан компиляторды қайта жазуға кірісіп, одан Python компиляторы пайда болды. CMUCL Unix жұмыс станцияларына, мысалы IBM PC RT, MIPS және SPARC-қа көшірілді. CMUCL-дің алғашқы нұсқалары Intel x86 архитектурасын қолдамады, себебі жеткілікті регистрлер болмады. CMUCL дерек түрлерін – таңбаланған және дереу алынатын түрлерді қатаң түрде ажыратып, қоқыс жинаушы CPU регистрлерінің жартысында тек таңбаланған түрлер, ал екінші жартысында тек таңбаланбаған түрлер болатынын білуге тиіс болды. Бұл Python үшін жеткілікті регистрлерді қалдырмады. CMU жобаны тоқтатқаннан кейін (CMUCL компиляторының негізін пайдаланатын Dylan іске асырылуына басымдық беріліп) күтіп-ұстау еріктілер тобына жүктелді. 1996 жылға қарай бұл топ өз инфрақұрылымында тұрақты түрде жаңа нұсқаларды шығара бастады. Соған шамамен уақытта Intel x86 архитектурасына порт жасалды, ол алдымен FreeBSD, кейін Linux жүйелерінде жұмыс істеді. Регистрлердің жетіспеушілігі мәселесі жаңа консервативті қоқыс жинаушы арқылы шешілді. Бұл жаңа қоқыс жинаушы кез келген типтегі кез келген мәнді регистрлерде қабылдайды және оның мақсатын жинауға немесе жылжытуға болмауы үшін сілтеме болуы мүмкін кез келген нәрсені сілтеме ретінде қарастырады.

Компилятор және басқа да кодты орындау бірліктері

CMUCL интерпретаторын қамтиды, ол негізінен REPL үшін қолданылады, бірақ компиляция қажет емес Lisp файлдарын жылдам жүктеу үшін де пайдаланылуы мүмкін. Компактты байт-кодты түсіндіретін машина (компилятордан шығарылатын). Бұл қазір сирек қолданылады, бірақ CMUCL-дің алғашқы нұсқаларында танымал болды, себебі интернеттегі жүктеу жылдамдығы төмен болған кезде бейнелердің өлшемі күрт қысқартылды. "Python" деп аталатын түпнұсқа кодты компилятор (Python бағдарламалау тілімен шатастырмаңыз). Егер Common Lisp бастапқы коды тиісті жарияланымдармен жазылған және жылдамдыққа баса назар аударылған болса, Python компиляторы C++ сияқты тілдерден компиляцияланған кодқа қарағанда, аз шығындармен кодты жасайды. Функция шақыру интерфейстері және пайдаланушы анықтаған дерек түрлерінің көрсеткішсіз массивтерінің болмауы сияқты кейбір тиімсіздіктер Common Lisp стандартымен анықталған және оларды жұмыс істеу қажет (мысалы, пайдаланушы анықтаған құрылымдарға ұқсайтын, бірақ іс жүзінде алдын ала бөлінген, мамандандырылған массивтердегі өрістерге қол жеткізу үшін көбірек кірістіру және макростарды пайдалану арқылы). Python компиляторында сонымен қатар күшті типтік қорытындылар бар, бұл бағдарламашыға типтерді автоматты түрде қорыту арқылы немесе жоғалған оптимизация мүмкіндіктері туралы ескертулер беру арқылы аз шығындармен код жазуға көмектеседі.

Ерекшеліктері

Өркениеттік қоқыс жинау және x86 порттарында көп процестік өңдеу мүмкіндігі. C кодымен және жүйелік кітапханалармен, соның ішінде көптеген платформалардағы ортақ кітапханалармен, Unix жүйелік шақыруларына тікелей қол жеткізуді қамтамасыз ететін сыртқы функция интерфейсі. Процестер аралық байланыс және қашықтықтан процедура шақыруларын қолдау. CLOS, Common Lisp Object System жүйесінің іске асырылуы, оның ішінде көп әдістілер және метаобъект протоколы бар. Motif интерфейсін пайдаланатын графикалық код деңгейіндегі жөндеуші және кодты профильдеу құралы. X11 терезе жүйесіне (CLX) интерфейсі және күрделі графикалық виджеттер кітапханасы (Garnet). Бағдарламашыларға кеңейтілетін кіріс және шығыс ағындары. Hemlock, Common Lisp-те іске асырылған Emacs сияқты редактор.