LINUX.ORG.RU

Вышел Clasp 0.4

 , , , ,


4

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 ()

Дикие результаты у SBCL.

Deleted ()

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

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

nezamudich ★★ ()

integer arithmetic heavy functions, CClasp performs pretty well (~4x slower than C++)

да уж, pretty well...

dib2 ★★★★★ ()

до 200 раз более быстрый код

Думал ошибка, ан нет: «capable of generating 200x faster code»

anonymous ()

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

Как же он раньше тормозил...

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

Как же он раньше тормозил...

Кто знает, может в следующем релизе будет еще в 200 раз быстрее.

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

Очень сильно, как пишет автор в посте о новом компиляторе - большое достижение, что компилятор прошел путь от 1000x до 4x скорости C++ / SBCL.

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

Нажористый такой борщ на монадках да с лямбдами.

anonymous ()

сам не пользуюсь но думаю что нужно.

BillDver ★★★ ()

чем оно лучше Moscow ML?

anonymous ()

Clasp 0.4 или как сделать lisp из c++,python,sed,awk,sh (краткий список requirenments).

PS. удивляет малое количество lisp`ов при вдоль и поперёк расписанной технологии.

PPS. стремительность lisp скоро войдёт в поговорки, ведь он рвёт в клочья JS, который в худшем случае не медленнее C++, не говоря уж о тормозном старичке С.

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

Они там всерьез с питоном скоростью меряются, какие тут ошибки:

Совершенно новый, оптимизирующий/встраивающий (inlining) компилятор — cclasp! (небольшое сравнение с C++ / SBCL / Python)

Virtuos86 ★★★★★ ()

Clasp — новая реализация Common Lisp с упором на легкое

а теперь и с ароматом жасмина

gray ★★★★★ ()

И вот какой смысл мериться с питоном? Если его выбирают по другим причинам, нежели скорость выполнения.
И если есть сравнение с cpython, то почему нету с pypy.
p.s. какие-то ущербные тесты.

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

Ты не понимаешь. Тесты, показывающие прирост производительности в 200 раз, не могут быть ущербными.

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

Тесты, показывающие прирост производительности в 200 раз, не могут быть ущербными.

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

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

Там в комментах он написал, что его коллеги ученые используют cpython, поэтому он решил, что честно будет мерить с ним.

loz ★★★★★ ()

Надо подумать, стоит ли поговнить тут цепепе? :-)

anonymous ()

Ну так-то наверное чувак молодец, что ускорил что-то там в 200 раз. С другой стороны, лисп? Для каких задач лисп сейчас является наиболее подходящим языком?

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

Для каких задач лисп сейчас является наиболее подходящим языком?

Для возвышения над одноклассниками в средней школе ;)

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

I-Love-Microsoft ★★★★★ ()

Попробую заменить им CCL на девелоперском сетапе. В продакшене он у нас все равно SBCL не заменит.

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

затем связать через какой-нибудь IPC с остальной частью системы написанной на традиционных ЯП

Зачем обязательно IPC? JSON, и коммуницируешься с кем угодно. Множество систем сейчас многоязычные, и это никому не мешает. А вот выбор формата данных на самом деле не менее важный, чем языка.

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

Для каких задач лисп сейчас является наиболее подходящим языком?

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

Но сам язык и спецификация достаточно протухшие, поэтому тут уже сам решаешь что важнее. Трейд-оффы есть везде.

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

Зачем обязательно IPC? JSON, и коммуницируешься с кем угодно.

JSON чуть менее уродлив, чем XML. Использовать его в Лиспе, где родными являеются S-выражения можно, но чуждо. Unix-way (IPC) лучше. Даже лучше, чем FFI. :-)

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

Попробую заменить им CCL на девелоперском сетапе.

Если не секрет, почему отделяете CCL при разработке от SBCL в продакшене? Неужели скорость компиляции CCL так важна? :-)

anonymous ()

выставлять наружу внешние C++-библиотеки

«Нарушение законодательства РФ о защите детей от информации, причиняющей вред их здоровью и развитию»

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

JS, который в худшем случае не медленнее C++, не говоря уж о тормозном старичке С

Ты наркоман?

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

JSON чуть менее уродлив, чем XML.

Согласен.

Использовать его в Лиспе, где родными являеются S-выражения можно, но чуждо.

Так тут как раз идея в том, что Лисп не задает другим правила и создает другим неудобства, а просто полноправное звено большой многоязычной системы. JSON при этом является терпимым common denominator.

Unix-way (IPC) лучше.

У нас сервисы разнесены по разным машинам. Если хочется поддерживать и первый, и второй вариант, то лучше использовать какое-нибудь ZeroMQ, которое прозрачно обворачивает все виды коммуникаций.

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

s-exp далеко не везде реализованы. Похоже, начальство решает, что написать парсер слишком сложно и надо выбирать из тех форматов, для которых он уже есть.

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

Если не секрет, почему отделяете CCL при разработке от SBCL в продакшене? Неужели скорость компиляции CCL так важна? :-)

Да, у нас огромные макроэкспаншны которые SBCL суммарно компилирует около получаса. Никакого терпения не хватит :)

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

Что ж тут честного, мериться с тормозным питоном?

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

Лисп - язык общего назначения. Для каких задач должен наиболее подходить язык общего назначения?

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

Для каких задач лисп сейчас является наиболее подходящим языком?

Для вычисления факториала и троллинга на ЛОРе.

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

Для каких задач лисп сейчас является наиболее подходящим языком?

Главным образом - исследовательское программирование, в т.ч. проверка идей, написание прототипов решения прикладных задач :-). Для сугубо системных, таких, как программирование драйверов и рантаймов, есть Си. :-) Ну а для всякого рода «склеиваний программ» есть всякие Shell. Для «склеиваний функций, классов, фрейморвоков, батареек и всего и вся, ощущая себя кул-программистом» есть Питон. :-) Цепепе нужен непонятно для чего. Говорят, для того, чтобы активно искать общность во время проектирования классовой иерархии, чтобы «ясно выражать свои идеи в ОО-стиле через абстрактные классы». А по существу, чтобы пользоваться такими вещами, как std::string<> и std::vector<>, потому что «жонглировать байтами в стиле Си небезопасно!!1 И память просто обязана освобождаться в деструкторах!!!11» :-)

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

троллинга на ЛОРе.

Для этого лучше подходит цепепе :-) Аудитория гораздо больше :-)

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

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

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

Не любого скриптового, а скриптовых языков кроме perl, php, python. Потому что REPL-а нету.

Тут остаются в основном такие как Lua, JS, Ruby. Т.е. вопрос теперь в том чем лисп лучше виабу-лиспа?

Также вроде есть Smalltalk.

ЗЫ у tcl есть REPL?

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

Да, у нас огромные макроэкспаншны которые SBCL суммарно компилирует около получаса. Никакого терпения не хватит :)

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

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

у tcl есть REPL?

У tcl есть только REPL (tclsh) и встраиваемый интерпретатор (libtcl.so).

У CL есть две критические и уникальные (AFAIK только в Smalltalk было что-то похожее) фичи, которые делают инкрементальную разработку возможной и очень удобной. Интерактивный отладчик с рестартами и стандартная библиотека с рассчетом на обновляемость кода в рантайме (defvar/defparameter и т.д.)

Gentooshnik ★★ ()

Покажите мне пример кода на Lisp 2+2=4 с выводом результата в консоль?

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

стремительность lisp скоро войдёт в поговорки, ведь он рвёт в клочья JS, который в худшем случае не медленнее C++, не говоря уж о тормозном старичке С.

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

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

И вот какой смысл мериться с питоном?

Показать, какой медленный (и при этом широко распространённый) питон. В 25 раз медленнее Clasp и в 100 раз медленнее SBCL.

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

Тебе тоже написать, что питон выбирают не из-за скорости?
Если нужна скорость, есть pypy.

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