LINUX.ORG.RU

Вышла новая версия ECL 12.12.1 — реализации языка программирования Common Lisp

 , , ,


1

3

ECL (Embeddable Common Lisp) — это одна из многочисленных реализаций языка программирования Common Lisp со стандартом ANSI INCITS 226-1994 (R2004).

Основной особенностью ECL является то, что он компилирует исходный Common Lisp код в байт-код или в портабельный Си-код, который затем компилируется стандартным Си компилятором текущей платформы, что делает компилятор ECL легко переносимым — например известны порты ECL на ARM которые работают на платформах Android и iOS.

ECL также может легко встраиваться в приложения написанные на других языках, как скриптовый язык, но с более богатыми возможностями: Common Lisp, компиляция в байт-код или машинный код (если доступен компилятор языка Си).

  • Основые видимые изменения:
    • DELETE-FILE, RENAME-FILE, chdir, mkdir и chmod теперь сигналят ошибки (работы с файлами).
    • Обновлен ASDF со встроенным ASDF-BUNDLE вместо ASDF-ECL.
    • SYS:FUNCTION-LAMBDA-LIST снова работает с макросами и специальным операторами.
    • Линковка с ecl-help для безпроблемного использования DOCUMENTATION в уже готовых приложениях.
    • ECL теперь генерирует более читабельный Си-код с правильными отступами, меньшим количеством меток и с более стандартными конструкциями.
  • Исправленные ошибки:
    • Улучшена производительность новой библиотеки для поддержки SMP.
    • Исправления ошибок в очереди POSIX сигналов, которые вызывали повторяющуюся потерю Ctrl-C.
    • Исправления опечаток, которые вызывали проблемы поддержки long long и unsigned long long.
    • Код в ecl_import_current_thread() не был совместим GC API.
    • Версия COMPILE-FILE, которая компилировала в байт-код, не поддерживала :EXTERNAL-FORMAT параметр.
    • Скомпилированная версия DOTIMES вычисляла выходную форму в неправильном контексте.
    • ecl_import_current_thread() не связывала *CURRENT-PROCESS*.
    • Изменен алгоритм для определения является ли функция замыканием или нет, и который тип Си-реализации замыкания необходим для этого.
  • Мета-объектный протокол:
    • Теперь ECL полностью поддерживает MOP.
    • Полностью изменен протокол начального этапа сборки/загрузки классов (class bootstrapping protocol), который теперь проще и более эффективен, позволяя нам иметь доступ ко всем классам на начальном этапе (сборки образа).
    • Все методы доступа переопределены, как обобщеные функции, после начальной сборки образа (bootstrapping) ECL.
    • Методы доступа стандартных классов теперь оптимизированы. Это стало возможным благодаря тому, что они полагаются на SLOT-VALUE, которые (по MOP) не могут быть переопределены или «обернуты» без ввода новых мета-классов.
    • Компилятор больше не «инлайнит» методы доступа к слотам мета-объектов, которые могут быть переопределены.
    • (SETF SLOT-VALUE) не всегда возращал присвоенное значение.
    • SLOT-BOUNDP возвращал дополнителные значиния при ошибках.
    • SLOT-VALUE-USING-CLASS не вызывал SLOT-UNBOUND

Исходный код ECL можно загрузить по адресу:

http://sourceforge.net/projects/ecls/files/latest/download

>>> Подробности

★★

Проверено: maxcom ()

надо попробовать снова stumpwm с ним пересобрать

lazyklimm ★★★★★ ()

Наверно, что-то хорошее. Но кто-нибудь реально пользуется?

das_tier ★★★★★ ()

Могу добавить, что еще было исправлено неверное определение часового пояса в некоторых случаях и улучшена интеграция со slime.

staseg ★★★★★ ()
Ответ на: комментарий от das_tier

Наверно, что-то хорошее. Но кто-нибудь реально пользуется?

Я пользуюсь. В последнее время впечатления с негативных сменились на позитивные. За последний год значительно улучшена стабильность, особенно на x86_64, исправлена многопоточность, да и разработчик на багрепорты реагирует быстро.

staseg ★★★★★ ()
Ответ на: комментарий от lazyklimm

А он так и не собирается под чем-нибудь другим? :)

buddhist ★★★★★ ()
Ответ на: комментарий от buddhist

sbcl, ccl, ecl - собирается, но

- треды(и, соответственно, slime) только в sbcl

- ecl-ный вариант почему-то тормозил при смене воркспейса внешними утилитами (wmctrl, или там таскбаром)

lazyklimm ★★★★★ ()
Ответ на: комментарий от lazyklimm

Я, емнип, не осилил собрать ни с sbcl, ни c ccl. Надо будет попробовать еще раз, может руки выпрямились.

buddhist ★★★★★ ()

В ECL меня всегда немного смущало слово «embeddable». CL — слишком здоровый язык, чтобы быть «embeddable».

buddhist ★★★★★ ()
Ответ на: комментарий от buddhist

странно, мне казалось, что он в первую очередь sbcl-ориентированный

lazyklimm ★★★★★ ()
Ответ на: комментарий от lazyklimm

странно, мне казалось, что он в первую очередь sbcl-ориентированный

Уже нет. StumpWM прекрасно работает на SBCL, CCL, CLISP, ECL (надо проверять) и с недавних пор на LispWorks.

С тредами тоже проблем не должно быть на них всех, для этого только только CLISP надо собрать с поддержкой тредов.

Со SLIME загружённым в образ StumpWM тоже нет проблем.

gensym ★★ ()
Ответ на: комментарий от gensym

Уже нет. StumpWM прекрасно работает на SBCL, CCL, CLISP, ECL (

ты читай, что я выше писал. Я вкурсе, просто на SBCL/СLISP он лучше работал изначально, остальное уже потом появилось, причём хз как щас, с полгода назад для ECL приходилось чуть make-image руками допиливать.

Со SLIME загружённым в образ StumpWM тоже нет проблем.

на CCL - есть, на ECL - хз как щас, но раньше не работало

lazyklimm ★★★★★ ()

Это же просто офигенно.

anonymous ()
Ответ на: комментарий от lazyklimm

с полгода назад для ECL приходилось чуть make-image руками допиливать.

Надо было патч отправить, сейчас допиливать не пришлось бы, или только чуток :)

gensym ★★ ()
Ответ на: комментарий от gensym

Единственная ориентированность стампа на sbcl сейчас только в том, что некоторые плагины только на нем работают.

gensym ★★ ()

DELETE-FILE, RENAME-FILE, chdir, mkdir и chmod теперь сигналят ошибки (работы с файлами)
очереди POSIX сигналов, которые вызывали повторяющуюся потерю Ctrl-C.
проблемы поддержки long long и unsigned long long.
неверное определение часового пояса

Шел XXI век.

anonymous ()
Ответ на: комментарий от anonymous

Это что, он еще и Unicode не поддерживает, лол.

anonymous ()
Ответ на: комментарий от anonymous

Это что, он еще и Unicode не поддерживает, лол.

Лол, с юникодом у него в порядке :p

gensym ★★ ()

«обобщенные» - с двумя «н»

А сам ecl более, чем прекрасен. Развитие - это хорошо.

RaySlava ()
Последнее исправление: RaySlava (всего исправлений: 1)

Теперь ECL полностью поддерживает MOP.

Круто. Это была единственная причина почему мой код не собирался в ECL.

Надеюсь только, они бросили свою привычку с каждой новой фичёй поставлять сотню багов и MOP действительно работает, а не просто «полностью поддерживается».

naryl ★★★★★ ()

> работает с макросами и специальным операторами

Быть может, «и специальными операторами»?

R_Valery ★★★ ()
Ответ на: комментарий от anonymous

Шел XXI век.

Да ты что! Это ж очень сложно реализуемо!
В купе с:

исправлена многопоточность

можно считать релиз epic win-ом.

d_Artagnan ★★ ()
Ответ на: комментарий от d_Artagnan

исправлена многопоточность

На arm можно заставить собираться?

У меня ругается на неподдерживаемые инструкции.

RaySlava ()

Оно уже нормально собирается на MinGW?

cattail ()
Ответ на: комментарий от RaySlava

посмотри например как сделано сдесь http://lambdajive.wordpress.com/2009/03/27/common-lisp-on-iphone-ecl-comes-th...
Другие рецепты тоже гуглятся. Причина в том, что ARM'ов разных много, поэтому для каждого надо крутить опции конфигурации.

gensym ★★ ()
Последнее исправление: gensym (всего исправлений: 1)
Ответ на: комментарий от cattail

Оно уже нормально собирается на MinGW?

Нормально.

staseg ★★★★★ ()
Ответ на: комментарий от deterok

Встраиваемый. Компилируется в не особо эффективный С, зато очень переносим и между ОС, и между железом.

staseg ★★★★★ ()

Дааа... Офигенно...

И почему бы на «просто С» не писать?

anonymous ()

Что-то много стало приходить хороших новостей из мира лисперов.

Конец света откладывается?

AVL2 ★★★★★ ()
Ответ на: Дааа... Офигенно... от anonymous

Человек не должен писать программу. Человек должен формулировать систему условий. В крайнем, выроженном, случае, задать алгоритм.

А программу под эти условия или алгоритм должна писать программа.

AVL2 ★★★★★ ()
Ответ на: Дааа... Офигенно... от anonymous

Re: Дааа... Офигенно...

И почему бы на «просто С» не писать?

Ты чо, на Си только чуханы да шкварные обиженники пишут. Козлы и черти — на ПХП, мужики — на джаве и питоне. Честные арестанты и блатные — на Хаски. А на лиспе — только воры в законе. Попробуй в кому скажи «просто С», тут же отпетушат и под шконарь загонят.

anonymous ()
Ответ на: комментарий от AVL2

Человек не должен писать программу. Человек должен формулировать систему условий. В крайнем, выроженном, случае, задать алгоритм.
А программу под эти условия или алгоритм должна писать программа.

Юноша бледный со взором горящим. Напиши мне в такой парадигме ядро операционной системы. Время пошло.

anonymous ()
Ответ на: комментарий от anonymous

Малыш, в твоем сообщении упущена важная деталь - сколько ты собираешься заплатить за эту работу.

anonymous ()
Ответ на: комментарий от lazyklimm

странно, мне казалось, что он в первую очередь sbcl-ориентированный

sabetts на clisp его ваять начинал.

mv ★★★★★ ()

Тред-детектор Stumpwm юзеров, надо будет запомнить людей, сам пользуюсь, правда версией из репозитория. Сабжем, как и собственно коммон-лиспом практически не пользовался, так что пофиг.

aptyp ★★★★ ()
Ответ на: комментарий от AVL2

Да...

... тег <sarcasm>, которым обрамлен Ваш постинг, для меня очевиден.

Во-первых, учитывая тонкий тртоллинг от Филипа Гринспена про то, что «любая достаточно сложная программа на С или Фортране содержит заново написанную глючную реализацию половины спецификации Common Lisp» (за полную точность цитаты не уверен, как-то так).

Во-вторых, учитывая то, что с такими тяжкими трудами в данном случае производится прекомпиляция в С. Вызывает подлинное уважение то, что несмотря ни на что, на все проблемы, это таки делают, несмотря на п.1.

Ну и в третьих, исходя из того, что пожалуй единственный из Лиспов, кто «на ходу», это Лисп, созданный для Емакс Великим Гендаль... эээ... Столлманом, остается незаданным вопрос — «и чего только люди не придумают чтоб на С не писать».

С другой стороны, если не сильно извращаться, то в принципе, почти любая программа, алгоритм которой может быть записан на английском, может быть написана на С. Рекомендую взглянуть на cdecl. Иногда, как говорят, помогает. )))

anonymous ()
Ответ на: Re: Дааа... Офигенно... от anonymous

Re: Дааа... Офигенно...

Слыш, да ты че буровишь? Че с трефным в уши рвешься? Ты рамсы не попутал? Ботало, в натуре, придерживай чтоб в блудную не попасть.

Чтоб черная масть что-то писала? Это не по-мальчуковому. Теж тут излагают — воры только алгоритмы формулируют.

А на «просто С» только вертухаи пишут, которые всю эту по мастям растасованную братву в узилище держат.

anonymous ()
Ответ на: комментарий от anonymous

А есть разница?

В данном случае можно обозначить любую цену. Тут проблема не в цене, а в том, что данное деяние можно квалифицировать как «попытку (или покушение) с заведомо негодными средствами».

На примерах. Человека нельзя посадить за попытку вскрытия им сейфа зубной щеткой. Или за попытку изнасилования при наличии у него справки об импотенции (т.е., его медицина признает импотентом). Здесь, с попыткой формализации ядра ОС, все будет абсолютно точно так же... ))) Но поржать будет от чего.

anonymous ()
Ответ на: комментарий от AVL2

Что-то много стало приходить хороших новостей из мира лисперов. Конец света откладывается?

Наоборот, пророчество сбывается:

И я видел, что Агнец снял первую из семи печатей, и я услышал одно из четырех животных, говорящее как бы громовым голосом: иди и смотри. Я взглянул, и вот, конь белый, и на нем всадник, и дан был ему Лисп; и вышел он как победоносный, и чтобы победить. 
anonymous ()
Ответ на: комментарий от naryl

Я так не думаю, простите.

На мой взгляд, проблема в том, что лет 20-30 назад было предпринято несколько попыток по созданию языка общения с инопланетянами (попутно были предприняты попытки легкого троллинга со стороны апологетов). Увы и ах, инопланетяне так и не появлись, по-этому, эти языки так и остались в нафталине. Эпизодически те, кому делать особо нефиг, заново открывают для себя эти языки, стряхивают нафталин, пересыпают им заново и прячут обратно. Собственно, я не против. Вдруг инопланетяне все-таки появятся и на одном из языков типа пролога, лиспа или чего-то еще, стольже важного, нужного и актуального, мы сможем с ними объясниться.

А пока и прекомпиляцию в С можно вытерпеть... Чего уж там... Индустрия и не такое вытерпливала.

anonymous ()

Теперь ECL полностью поддерживает MOP.

Странно, у меня CLOSER-MOP не загружается в образ. Специально обновил дистрибутивы в QuickLisp. Это мне нужно для продолжений из CL-CONT.

dave ★★★★★ ()
Ответ на: комментарий от dave

Странно, у меня CLOSER-MOP не загружается в образ. Специально обновил дистрибутивы в QuickLisp. Это мне нужно для продолжений из CL-CONT.

Да есть такое. Вот, ниже ссылка насчет поддержки closer-mop в ECL. Есть патчи с двух сторон. Возможно, нужно подождать, пока появится новый closer-mop в Quicklisp'e.

http://sourceforge.net/mailarchive/forum.php?thread_name=CANejTzo6PsaWjQj66GW...

gensym ★★ ()
Ответ на: комментарий от gensym

На планете прочитал: «ECL News [..] * The MOP has been fixed to work with the upcoming release of Closer-MOP».

Ну, ладно. Буду ждать. Мне не особо критично. Это мне нужно для одной моей новой библиотеки. Просто было бы приятно, если бы абсолютно все работало и на ecl. Сейчас пашет на lispworks, ccl, sbcl и clisp. Надо бы проверить на acl.

dave ★★★★★ ()
Ответ на: комментарий от anonymous

Шел XXI век.

Темы про ЛИСП - они тем и хороши, что от них веет какой-то утончённой древностью. Типа как прочесть «Освоена запись на дискеты 1.56МБ - на 15 килобайт больше предыдущего рекорда. Добавлена поддержка лампочки дисковода и чтение перевёрнутой дискеты». Вспомнишь, умилишься, вытрешь скупую программерскую слезу и опять за C#! :)

matumba ★★★★★ ()
Ответ на: Да... от anonymous

Странные вы люди. Если бы вы упрекнули меня в капитанстве очевидности, я бы еще понял. Но вы в простых и очевидных вещах видите сарказм и это удивительно!

Что вас так удивляет в утевржеднии, что программировать должны люди, а кодить - машины? Вы изучили переносимый ассемблер или даже переносимый ассемблер с классами и теперь полагаете, что человек должен как поводырь, писать компьютеру последовательность простейших действий, приводящих к результату, в лучшем случае используя макрокоманды или искуственные насквозь абстракции в виде мешанины массивов и привязанных к ним за уши функций?

Ах да, современные компиляторы настолько тупы, что только так и можно написать хоть сколько-нибудь эфффективную программу? Ну так и программы для шахмат тоже двадцать лет назад были тупы, а теперь?

Лет через десять-двадцать программа, написаная человеком в виде последовательности операторов будет таким же анахронизмом.

AVL2 ★★★★★ ()
Ответ на: комментарий от anonymous

Юноша бледный со взором горящим. Напиши мне в такой парадигме ядро операционной системы. Время пошло.

написать несложно. Сколмпилировать сложнее. Пока.

AVL2 ★★★★★ ()
Ответ на: комментарий от anonymous

А про хаскель там ничего нет? А то недавно сковырнулся там один воин на белом коне. Прямо в пучины фейсбука угодил. ЖАрят его там на сковородках, рельсами припекают...

AVL2 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.