LINUX.ORG.RU

Вышел Clasp 0.4

 , clasp, , ,


5

8

20 ноября вышел в свет Clasp 0.4 — новый релиз, включающий в себя совершенно новый компилятор, способный генерировать до 200 раз более быстрый код, чем его предшественник, так же улучшено взаимодействие с C++ и теперь реализация полнее соответствует стандарту ANSI Common Lisp.

Clasp — новая реализация Common Lisp с упором на легкое взаимодействие с библиотеками C++, используя LLVM для компиляции в нативный код, с целью использования большого количества существующих библиотек и программ. Встраивание их в среду Common Lisp'а позволяет воспользоваться быстрым прототипированием, инкрементальной разработкой и другими возможностями, делающими Common Lisp столь мощным языком.

Основные изменения:

  • Совершенно новый, оптимизирующий/встраивающий (inlining) компилятор — cclasp! (небольшое сравнение с C++ / SBCL / Python)
  • Значения типов fixnum, character и single-float теперь представлены напрямую.
  • Указатели на объекты и cons-ячейки теперь тегируются для скорости.
  • Библиотека Clbind позволяет программистам выставлять наружу внешние C++-библиотеки.
  • Множество исправлений ошибок и улучшений.

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

★★★★★

Проверено: maxcom ()
Последнее исправление: Klymedy (всего исправлений: 9)
Ответ на: комментарий от FIL

питон выбирают не из-за скорости

Лисп конкурирует с питоном (так как оба с динамической типизацией). Поэтому разумно продемонстрировать, что если питон по скорости для задачи подошёл, то лисп также заведомо подойдёт.

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

Если нужна скорость, есть pypy.

pypy распространён гораздо меньше, чем обычный питон

monk ★★★★★
()

То есть, если сейчас он компилирует за минуту, то раньше он компилировал более 3 часов?

Очень терпеливые прогеры.

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

Благодаря удобству создания DSLей он подходит для разработки систем, в которых основные пользователи — больше эксперты в своей области, чем программисты.

У вас в конторе он для создания DSL'ей используется? А python, например, для этих целей не рассматривался? Для него ведь существует множество библиотек для различных прикладных областей, что подтверждает его пригодность для данной задачи.

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

Кстати, в тестах: C++ — 0.76 сек, SBCL — 0.63 сек. Так что, таки да!

Код на C++ там очень странный (и не приведён полностью). Так что не понятно, чего они там измеряли и сравнивали.

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

Да хотябы обновление кода в образе.

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

Кстати, в тестах: C++ — 0.76 сек, SBCL — 0.63 сек. Так что, таки да!

Аффтар пишет, что С++ быстрее, но ему было впадлу добавить опцию для компилятора. Но ты можешь радоваться, конечно.

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

Lua

Встройка и этим всё сказано. Для standalone подходит не то, что бы хорошо на мой взгляд.

JS

Кроме ноды и electron толком применений не видел.

Ruby

Количество сахара в синтаксисе может вызвать диабет

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

Ну так ты понял глупость своего вопроса или нет?

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

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

способный генерировать до 200 раз более быстрый код

«На 300% больше объёма».

Рассмешил содомит!

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

но ему было впадлу добавить опцию для компилятора

Какую? :

“clang++” -x c++ -O3 -gdwarf-4 -g -Wgnu-array-member-paren-init -Wno-attributes -Wno-deprecated-register -Wno-unused-variable -ferror-limit=999 -fvisibility=default -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk -mmacosx-version-min=10.7 -std=c++11 -stdlib=libc++ -O3 -O3 -gdwarf-4 -g -O3 -Wno-inline -DBUILDING_CLASP -DCLASP_GIT_COMMIT=\”cf99526\” -DCLASP_VERSION=\”0.3-test-10\” -DCLBIND_DYNAMIC_LINK -DDEBUG_CL_SYMBOLS -DDEBUG_FLOW_CONTROL -DEXPAT -DINCLUDED_FROM_CLASP -DINHERITED_FROM_SRC -DNDEBUG -DPROGRAM_CANDO -DREADLINE -DTRACK_ALLOCATIONS -DUSE_BOEHM -DUSE_CLASP_DYNAMIC_CAST -DUSE_STATIC_ANALYZER_GLOBAL_SYMBOLS -D_ADDRESS_MODEL_64 -D_RELEASE_BUILD -D_TARGET_OS_DARWIN -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS

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

Инкрементальная разработка, говорили они...

Так она инкрементальная, но после первой компиляции.

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

У вас в конторе он для создания DSL'ей используется? А python, например, для этих целей не рассматривался? Для него ведь существует множество библиотек для различных прикладных областей, что подтверждает его пригодность для данной задачи.

Наш DSL требует работы с большим количеством деревьев. Лисп для этого субьективно удобнее. Плюс, у нас на макросах написан сильно оптимизирующий компилятор, на питоне это было бы сделать в разы сложнее.

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

-O3 -O3 -gdwarf-4 -g -O3

Вот, видишь, между -gdwarf-4 и -g нету -O3? Без неё будет медленнее. Надо каждую опцию обрамлять -O3. </sarcasm>

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

Для идиотов:

Note: There are compiler settings (loop unrolling) where the C code runs even faster than SBCL.

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

Чем же, в сравнении с другими языками высокого уровня

С статически типизированными — необходимостью делать тучу явных приведений типов.

С perl, ruby, python — скоростью работы.

Ну и лаконичность синтаксиса. Как на чём-нибудь ещё будет

(mapcar #'list '(1 2 4) '(x z y) '("ok" "x" "y"))
; вернёт '((1 x "ok") (2 z "x") (4 y "y"))
?

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

Я всю жизнь ждал возможности лаконично сделать из трех списков три списка. У нас как раз открыта вакансия склейщика списков. Так что пример актуальный, хороший, годный.

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

Кстати, есть примеры, когда прямо крайне нужно использовать гетерогенные списки, а не таплы/классы/что там еще? Это к сочетанию твоего 1 и 3 пунктов. Ну, если у тебя будет '(box apple car cat govno), как ты его использовать будешь?

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

Наш DSL требует работы с большим количеством деревьев.

Какая прикладная область, если не секрет?

Плюс, у нас на макросах написан сильно оптимизирующий компилятор, на питоне это было бы сделать в разы сложнее.

На python'е, по-моему мнению, сначала бы написали библиотеку полностью на нём самом. А потом, когда интерфейс бы устаканился, критичные участки (или всю библиотеку) переписали бы на С++.

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

Это не область, а способ решения задачи. Так расскажи теперь, где и зачем применяются гетерогенные списки.

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

Я всю жизнь ждал возможности лаконично сделать из трех списков три списка. У нас как раз открыта вакансия склейщика списков. Так что пример актуальный, хороший, годный.

По Сеньке и шапка. :-) Теперь можно посмотреть новости, порассуждать, и в люлю. И программа «минимум» на сегодня выполнена :-)

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

Нет областей, где лисп заруливал бы другие языки

Под «другими языками» аноним явно подразумевает множество придуманных DSL как «общего», так и «частного» назначения :-) В силу не великой грамотности, аноним никогда не слышал, что Лисп - это не язык, а стройматериал :-) И даже когда аноним услышал такую «невнятную» мулю, она ему, всё равно, невдомёк. Такое бывает, часто :-)

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

Лисп конкурирует с питоном

Ты бредишь, оказывая какому-то жалкому недоязычку, честь конкурировать с Лиспом :-) С Лиспом может конкурировать только Си - т.е. язык лямбда-исчисления с языком машины Тьюринга. :-)

Поэтому разумно продемонстрировать, что если питон по скорости для задачи подошёл, то лисп также заведомо подойдёт.

И опять ты противопоставляешь не сопоставимое :-)

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

но лиспофанбои всё равно всегда будут твердить, что он нужен «длявсево»

А заурядные фонатики пайфона и цепепе всегда будут рассказывать про мамкин борщ, анафорические лямбды, монадки, наивно полагая, что это смешно :-)

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

Нет, конечно. Если это еще один ничем не выделяющийся язык из общей массы «языков общего назначения», то нахер он вообще такой нужен? Под нож Оккама его.

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

Пришёл, увидел, применил, оценил удобство применения, матюгнулся, переписал.

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

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

Это ты :-) тот анон :-), у которого безудержное :-) веселье :-)?

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

domain specific language
«общего» назначения

Иди учись.

Лисп - это не язык, а стройматериал

Некоторым и говно стройматериал.

всё равно, невдомёк

Потому что из говна много не настроишь.

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

domain specific language
«общего» назначения

Иди учись.

Лисп - это не язык, а стройматериал

Некоторым и говно - стройматериал.

всё равно, невдомёк

Потому что из говна много не настроишь.

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

наивно полагая, что это смешно

Это само по себе не смешно. Но на это слетаются «низаурядные» вроде тебя, и тогда становится смешно.

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

Какая прикладная область, если не секрет?

Обработка естественных языков.

А потом, когда интерфейс бы устаканился, критичные участки (или всю библиотеку) переписали бы на С++.

Там нету критических участков, там весь контент (написанный на DSLе) — критический участок. Говоря простыми словами, это как разворачивание регекспов (только на порядки более сложных) в компайл-тайме. Либо пишешь это на лиспе, либо хачишь компилятор обычного популярного языка. Первое проще.

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

либо хачишь компилятор обычного популярного языка

либо gcc + tmpfile + dlopen.

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

когда прямо крайне нужно использовать гетерогенные списки

AST, передача данных, описание конфигурации. В современных системах вместо лиспа используется XML и JSON. Можешь посмотреть область применения.

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

Иди учись.

Пойду, ибо учусь каждый день. И всё равно, ни хрена не знаю :-) Но для особо одарённых знатоков, любящих для пущей важности дуть свои щёки, можно порекомендовать повторить тему про кавычки в русском языке, это для начала :-) Ну а напоследок прикинуть, что их любимые руби-пайфоны - это таки DSL «общего назначения» :-) Сходи ка ты, дядя, погуляй :-)

Некоторым и говно стройматериал.

Тут он прав :-) Бгг :-)

Потому что из говна много не настроишь.

Плохому танцору туфли мешают :-) Гуляй :-)

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

Это само по себе не смешно. Но на это слетаются «низаурядные» вроде тебя, и тогда становится смешно.

А ты борщевик? :-) Если да, то какой масти? :-)

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

Си
язык машины Тьюринга

Жги ещё, грамотей.

Понимаю, для тебя, знатока, конечно же это откровение и новинка, но Си - это DSL для удобного непосредственного программирования прообраза машины Тьюринга :-). Гуляй себе :-)

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

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

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

Плохому танцору туфли мешают

Плохие туфли мешают любому танцору. Оригинальная фраза звучала по-другому. Ты по Фрейду перефразировал, из подсознательного понимания убогости лиспа?

А ты борщевик?

Нет. А ты мне уже расскажешь, где применяешь свой лисп?

руби-пайфоны - это таки DSL

Руби ещё сойдёт за DSL. А на питоне чего только не пишут.

гуляй-погуляй

Почему ты хочешь, чтоб я ушел? Боишься снова обосраться?

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

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

Баттхёрт засчитан? :-)

Плохие туфли мешают любому танцору. Оригинальная фраза звучала по-другому.

Или анон озвучит оригинальную фразу, или слив засчитан :-)

Нет. А ты мне уже расскажешь, где применяешь свой лисп?

Нет :-)

Руби ещё сойдёт за DSL. А на питоне чего только не пишут.

На Shell и Awk чего только не пишут. :-) Но из этого не следует, что пайфон, shell и awk - не DSL :-)

Почему ты хочешь, чтоб я ушел? Боишься снова обосраться?

Свежий воздух пойдёт анониму на пользу :-)

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

Баттхёрт засчитан
слив засчитан
Нет

Считай что хочешь, борщехлёб. Похоже, с твоим образованием это единственное доступное интеллектуальное развлечение.

На Shell и Awk чего только не пишут

Лиспофанбои чего только не трендят. Но это не значит, что лисп - не DSL для повышения ЧСВ у маминых погромистов.

на Shell и Awk чего только

Расскажи, чего, кроме скриптов для автоматизации работы утилит ОС, пишут на Shell и Awk, или опять обосрался.

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

Считай что хочешь, борщехлёб. Похоже, с твоим образованием это единственное доступное интеллектуальное развлечение.

Иными словами, слив засчитан :-)

Лиспофанбои чего только не трендят.

И самыми любимыми их рассказами являются рассказы про 10-е правило Гринсп[еу]на и следствие Морриса. :-) Эта пластинка звучит у них неустанно :-)

Но это не значит, что лисп - не DSL для повышения ЧСВ у маминых погромистов.

Лисп - это не DSL, Лисп - это концепция, придуманная Маккарти :-)

Расскажи, чего, кроме скриптов для автоматизации работы утилит ОС, пишут на Shell и Awk, или опять обосрался.

Невежда :-) Ты бы очень удивился, узнав, что они даже используются в банковских системах в прикладных задачах :-) Гуляй, гуляй :-)

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

10-е правило Гринсп[еу]на

Это где сравнивают языки с непересекающимися юскейсами? Типичный борщехлёб-стайл, давай что-то новенькое.

Лисп - это не DSL

Прости, семейство DSL.

в банковских системах в прикладных задачах

Пруф.

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

Прости, семейство DSL.

ЛИСП - это концепция. Никакое это не семейство. Языки на базе этой концепции, например, Common Lisp, благодаря макрам, можно (с натугой) назвать «DSL для создания DSL». :-)

Пруф.

Извини, нет права :-)

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