И вот через пять минут я снова во всех телеэкранах Ютуба 📺
Без регистрации и смс можно посмотреть здесь (правда, и без возможности писать в чат, увы)
Без регистрации и смс можно посмотреть здесь (правда, и без возможности писать в чат, увы)
YouTube
Функциональное программирование на C //Демо-занятие курса «Программист С»
Общеизвестно, что C не является языком функционального программирования. Однако это не мешает применять в коде на C различные концепции, используемые в функциональных языках. На бесплатном вебинаре мы рассмотрим ряд таких концепций и обсудим их применимость…
👍2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
#проекты #fennel
Мини-видос рабочего процесса над новым игровым проектом, который мы с товарищем замышляем уже в течение пары месяцев. У проекта пока даже нет названия, даже рабочее название не устоялось 😅
Делаю на Fennel и Defold. Fennel очень нраится, по сути это тонкий слой лиспового синтаксиса поверх Lua, но насколько же на нём приятнее писать 😊 Defold для себя только открываю, но движ этот также вполне приятственный - ядро на C++, обвязка на Lua, API логичное, всё по науке.
В опенсорс проект, скорее всего, выкладывать не будем, но точно будет в Google Play в этом годуя надеюсь 😅
Мини-видос рабочего процесса над новым игровым проектом, который мы с товарищем замышляем уже в течение пары месяцев. У проекта пока даже нет названия, даже рабочее название не устоялось 😅
Делаю на Fennel и Defold. Fennel очень нраится, по сути это тонкий слой лиспового синтаксиса поверх Lua, но насколько же на нём приятнее писать 😊 Defold для себя только открываю, но движ этот также вполне приятственный - ядро на C++, обвязка на Lua, API логичное, всё по науке.
В опенсорс проект, скорее всего, выкладывать не будем, но точно будет в Google Play в этом году
❤1👍1
Лисп в изгнании pinned «Привет. Меня зовут Андрей, и так сложилось, что подобно языкам программирования LISP-семейства, покинувшим мейнстрим в начале 90-х годов прошлого века, я был вынужден покинуть страну, в которой прожил большую часть жизни, и сейчас живу в Черногории. Однако…»
#лытдыбр
Как выяснилось, Raspberry Pi с платой расширения X829 (dual 2.5" SATA HDD expansion board) мешает работать беспроводным устройствам, из-за того, что, кто бы мог подумать, USB 3.0 создаёт помехи на 2.4 ГГц канале (или что-то в таком духе, в детали не вчитывался). В принципе, я это заметил сразу, как купил малинку и поставил её прямо на роутер, отчего у меня всё поотваливалось от Wi-Fi, но до недавних пор особых проблем это не доставляло. Собственно, до тех пор, пока я не решил подключить малинку к телевизору, а к малинке - универсальный пульт ДУ, чтобы комфортно тупить в ютубы прямо с дивана, но выяснилось, что пульт дистанционного управления работает только на дистанции 5-10 см, хотя раньше таким не грешил. Полез разбираться, думал, помехи от Wi-Fi контроллера в малинке, надо будет отключить, всё равно проводом к сети подключена, а тут на тебе - USB3. Поди ж ты.
Решил в итоге приобретением пятиметрового USB-удлинителя с экранированием, 10€, между прочим. Зато теперь можно втыкать видосики, не вставая с дивана 🤗
Как выяснилось, Raspberry Pi с платой расширения X829 (dual 2.5" SATA HDD expansion board) мешает работать беспроводным устройствам, из-за того, что, кто бы мог подумать, USB 3.0 создаёт помехи на 2.4 ГГц канале (или что-то в таком духе, в детали не вчитывался). В принципе, я это заметил сразу, как купил малинку и поставил её прямо на роутер, отчего у меня всё поотваливалось от Wi-Fi, но до недавних пор особых проблем это не доставляло. Собственно, до тех пор, пока я не решил подключить малинку к телевизору, а к малинке - универсальный пульт ДУ, чтобы комфортно тупить в ютубы прямо с дивана, но выяснилось, что пульт дистанционного управления работает только на дистанции 5-10 см, хотя раньше таким не грешил. Полез разбираться, думал, помехи от Wi-Fi контроллера в малинке, надо будет отключить, всё равно проводом к сети подключена, а тут на тебе - USB3. Поди ж ты.
Решил в итоге приобретением пятиметрового USB-удлинителя с экранированием, 10€, между прочим. Зато теперь можно втыкать видосики, не вставая с дивана 🤗
😁1
2023-02-02-204806_1046x709_scrot.png
63.5 KB
#мемасики
ТЫ - ГЛАВА ОДНОГО ИЗ СТРАТЕГИЧЕСКИХ ПОДРАЗДЕЛЕНИЙ GOOGLE
@
С СЕРЕДИНЫ 2010Х ЛИЧНО НАПРАВЛЯЕШЬ ДЕСЯТКИ ТЫСЯЧ ЧЕЛОВЕКО-ЧАСОВ НА РЕСЁРЧ В ОБЛАСТИ ИСКУССТВЕННЫХ НЕЙРОСЕТОК
@
ЕЩЁ БОЛЬШЕ ТРАТИШЬ НА СБОР И ОЧИСТКУ ДАТАСЕТА ТЕКСТОВ ИЗ ИНТЕРНЕТА
@
НА ОБУЧЕНИЕ НЕЙРОСЕТКИ ТРЕБУЕТСЯ СТОЛЬКО МАШИННОГО ВРЕМЕНИ В ДАТАЦЕНТРАХ ГУГЛА, ЧТО ДЕШЕВЛЕ БЫЛО БЫ ЖЕЧЬ КОСТЁР ИЗ 100-БАКСОВЫХ КУПЮР
@
РЕЗУЛЬТАТ ТВОИХ ТРУДОВ РЕЛИЗИТСЯ
@
НЕПОСВЯЩЁННАЯ ПУБЛИКА В УЖАСЕ И БЛАГОГОВЕНИИ ОДНОВРЕМЕННО
@
РАЗДАЮТСЯ КРИКИ "НАС ЗАМЕНИТ ИИ", ПОТИХОНЬКУ ПОЯВЛЯЮТСЯ НЕОЛУДДИТЫ
@
СТУДЕНТ ЗАЩИЩАЕТ ДИПЛОМ, СГЕНЕРИРОВАННЫЙ НЕЙРОСЕТКОЙ
@
АДСКИЙ ХАЙП НА ВЕСЬ МИР
@
КАЗАЛОСЬ БЫ, ЛАНДШАФТ ИНДУСТРИИ ПОИСКОВИКОВ ДОЛЖЕН НЕОБРАТИМО ИЗМЕНИТЬСЯ
@
(см. рис. 1)
@
ЖИДКО ПУКНУВ, УМИРАЕШЬ
Как же мне удержаться от чего-то подобного в лонгриде, который я готовлю для хабра, это ж хабрасуицид 😅
Кто слишком много сидел на двачах? ✋
ТЫ - ГЛАВА ОДНОГО ИЗ СТРАТЕГИЧЕСКИХ ПОДРАЗДЕЛЕНИЙ GOOGLE
@
С СЕРЕДИНЫ 2010Х ЛИЧНО НАПРАВЛЯЕШЬ ДЕСЯТКИ ТЫСЯЧ ЧЕЛОВЕКО-ЧАСОВ НА РЕСЁРЧ В ОБЛАСТИ ИСКУССТВЕННЫХ НЕЙРОСЕТОК
@
ЕЩЁ БОЛЬШЕ ТРАТИШЬ НА СБОР И ОЧИСТКУ ДАТАСЕТА ТЕКСТОВ ИЗ ИНТЕРНЕТА
@
НА ОБУЧЕНИЕ НЕЙРОСЕТКИ ТРЕБУЕТСЯ СТОЛЬКО МАШИННОГО ВРЕМЕНИ В ДАТАЦЕНТРАХ ГУГЛА, ЧТО ДЕШЕВЛЕ БЫЛО БЫ ЖЕЧЬ КОСТЁР ИЗ 100-БАКСОВЫХ КУПЮР
@
РЕЗУЛЬТАТ ТВОИХ ТРУДОВ РЕЛИЗИТСЯ
@
НЕПОСВЯЩЁННАЯ ПУБЛИКА В УЖАСЕ И БЛАГОГОВЕНИИ ОДНОВРЕМЕННО
@
РАЗДАЮТСЯ КРИКИ "НАС ЗАМЕНИТ ИИ", ПОТИХОНЬКУ ПОЯВЛЯЮТСЯ НЕОЛУДДИТЫ
@
СТУДЕНТ ЗАЩИЩАЕТ ДИПЛОМ, СГЕНЕРИРОВАННЫЙ НЕЙРОСЕТКОЙ
@
АДСКИЙ ХАЙП НА ВЕСЬ МИР
@
КАЗАЛОСЬ БЫ, ЛАНДШАФТ ИНДУСТРИИ ПОИСКОВИКОВ ДОЛЖЕН НЕОБРАТИМО ИЗМЕНИТЬСЯ
@
(см. рис. 1)
@
ЖИДКО ПУКНУВ, УМИРАЕШЬ
Кто слишком много сидел на двачах? ✋
👍1🤔1🌚1
#common_lisp #проекты
В качестве первого шага кпробуждению монолита возрождению проекта
И первое действие в рамках этого шага — разобраться с хранением данных. Как помнят бывалые зрители моих прошлых стримов, в какой-то момент из соображений производительности я породил вот такое чудовище: growable-vector, по той причине, что лисповский массив, созданный с
Написал небольшой бенчмарк и прогнал его под SBCL и CCL, кстати, если у вас есть под рукой какой-нибудь CL, буду очень признателен, если запустите у себя и запостите результат в комментах, особенно если у вас MacOS 😊
По результатам бенчмарка можно сделать следующие выводы:
1. Доступ к каждому элементу массива безхахахах, волосатый вектор 😂
2. Для CCL картина похожая, только он в этом бенчмарке сам на порядок медленее SBCL. Что интересно, оба случая компилируются CCL в вызов некоей функции
3. Наконец, суть моего говнокода по имени
Это всё наводит меня на мысль, что можно упростить код ECS–подсистемы, не потеряв в производительности — просто заменить мой всратый
В качестве первого шага к
d2clone-kit
я хотел... нет, не выкинуть всё и переписать заново (хотя иногда накатывает), а выделить свою рукодельную реализацию паттерна Entity-Component-System в отдельную библиотеку, распространяемую по более пермиссивной опенсорсной лицензии — глядишь, благодаря использованию её в других проектах получится улучшить то, что я там написал 😅И первое действие в рамках этого шага — разобраться с хранением данных. Как помнят бывалые зрители моих прошлых стримов, в какой-то момент из соображений производительности я породил вот такое чудовище: growable-vector, по той причине, что лисповский массив, созданный с
:adjustable t
, работает в плане доступа к его элементам ощутимо медленнее, чем массив фиксированного размера, который simple-vector
.Написал небольшой бенчмарк и прогнал его под SBCL и CCL, кстати, если у вас есть под рукой какой-нибудь CL, буду очень признателен, если запустите у себя и запостите результат в комментах, особенно если у вас MacOS 😊
По результатам бенчмарка можно сделать следующие выводы:
1. Доступ к каждому элементу массива без
:adjustable t
где-то на порядок быстрее, чем для vector
, который adjustable. Немудрено: если раскомментировать вызовы disassemble
, видно, что в первом случае SBCL просто напрямую обращается к памяти инструкцией mov
, а во втором случае — вызывает для каждого доступа функцию sb-kernel:hairy-data-vector-ref
spbuiltin-aref1
— видимо, в ней есть hot path для simple-vector
.3. Наконец, суть моего говнокода по имени
growable-vector
в том, чтобы обернуть фиксированный simple-vector
с излишком места, и хранить этакий рукодельный fill-pointer
, чтобы не дрочить аллокатор при каждом добавлении элемента в массив. Так вот, в бенчмарке я промерил ещё и worst case scenario — переаллокацию массива при каждом доступе через функцию adjust-array
(которая, вопреки интуиции, работает и с не-adjustable массивами — с неймингом в CL всё традиционно плохо), и выяснилось, что этот вариант занимает столько же времени, сколько доступ к волосатому vector
. То есть аллокатор памяти, по крайней мере в SBCL и CCL, гораздо шустрее, чем я себе представлял. Там, правда, на GC ушло непропорционально много времени, но это ожидаемо для такого количества переаллокаций (в бенчмарке 100000).Это всё наводит меня на мысль, что можно упростить код ECS–подсистемы, не потеряв в производительности — просто заменить мой всратый
growable-array
на обычный simple-vector
, а условный кастомный fill-pointer
хранить где-то в вышележащем коде. Ну или нет. Короче, нужно заныривать в код, что я и планирую в ближайшую неделю-другую постримить уже наконец, только бы со свободным временем разобраться 😩👍2❤1🔥1
#clojure #проекты
В том году взял на себя труд изучить
• форка популярной, но заброшенной автором библиотеки для
• вьетнамских флэшбеков от погружения всточную канаву экосистему
• пре-альфа-версии веб-сервиса, предназначенного для погружения в бессознательное с помощью снов,подробнее пока спойлерить не буду, с потенциальной перспективой монетизации. Пока не выкладываю в паблик, потому что стыдно всё пока жутко недоделанное, даже дизайн я делал вот этой парой рук 🙌, а они для этого совсем не предназначены)
По-прежнему жду, что случится чудо и в сутках будет хотя бы часов по 80, чтобы я мог успевать уделять внимание всем своим проектам 😅
В том году взял на себя труд изучить
Clojure
на практике — в рамках реализации одной из своих давнишних идей. В результате я теперь являюсь обладателем:• форка популярной, но заброшенной автором библиотеки для
ClojureScript
, в котором я собрал все фиксы от коммьюнити;• вьетнамских флэшбеков от погружения в
node.js
;• пре-альфа-версии веб-сервиса, предназначенного для погружения в бессознательное с помощью снов,
По-прежнему жду, что случится чудо и в сутках будет хотя бы часов по 80, чтобы я мог успевать уделять внимание всем своим проектам 😅
GitHub
GitHub - lockie/re-frame-cookie-fx: Oh cookie, yummy!
Oh cookie, yummy! Contribute to lockie/re-frame-cookie-fx development by creating an account on GitHub.
👍3🔥1
#fennel
С удивлением узнал, что в замечательном Fennel нельзя смешивать в одном файле декларации обычных функций и макросов, как это можно делать примерно в любом диалекте лиспа: если попытаться скомпилировать такой файл в Lua-код, Fennel ругается, что, видите ли,
С удивлением узнал, что в замечательном Fennel нельзя смешивать в одном файле декларации обычных функций и макросов, как это можно делать примерно в любом диалекте лиспа: если попытаться скомпилировать такой файл в Lua-код, Fennel ругается, что, видите ли,
symbols may only be used at compile time
, а если переопределить макрос в качестве обычной функции, возвращающей список с синтаксическими конструкциями, то его не получится экспортировать вперемешку с остальными функциями, потому что, видите ли, tried to reference a macro at runtime
. Понятно, что Филу Хагельбергу (автору Fennel) так проще реализовать компилятор, но блин, это как в том анекдоте категории Б про серебряные ложечки, осадочек-то остаётся 😂👍1😁1
#clojure
Вспоминал тут про один свой давнишний пет-проект в виде вебсайта на Python/Django, к которому уже давно пора прикрутить рекламу и окончательно забыть, чтобы хотя бы затраты на хостинг отбивать. Пришла в голову шальная мысль, а почему бы его не переписать на каком-нибудь лиспе, например, на наиболее подходящей для веба Clojure. Единственное, что останавливает — что в мире Clojure(Script) нет ничего даже близкого к джанговской админке, чтобы натравил её на табличку в БД, а она тебе готовый веб-интерфейс для управления объектами в ней, даром что веб–1.0-ный. Типичный ответ на вопрос о такой фиче — "тут вам не полновесная Django, а скорее минималистичный Flask, делайте сами".
Можно даже попробовать занять эту нишу — написать для кложуровского ring нехитрую библиотеку, которая будет ходить в заданную табличку в БД и предоставлять к ней административный интерфейс; правда, там ещё миллион мелочей, вроде авторизации, аудита, возможности расширения, смены дизайна интерфейса и т.д.
Ну и это закрывая глаза на факт, что я итак уже с трудом вывожу все свои проекты 🤣
Вспоминал тут про один свой давнишний пет-проект в виде вебсайта на Python/Django, к которому уже давно пора прикрутить рекламу и окончательно забыть, чтобы хотя бы затраты на хостинг отбивать. Пришла в голову шальная мысль, а почему бы его не переписать на каком-нибудь лиспе, например, на наиболее подходящей для веба Clojure. Единственное, что останавливает — что в мире Clojure(Script) нет ничего даже близкого к джанговской админке, чтобы натравил её на табличку в БД, а она тебе готовый веб-интерфейс для управления объектами в ней, даром что веб–1.0-ный. Типичный ответ на вопрос о такой фиче — "тут вам не полновесная Django, а скорее минималистичный Flask, делайте сами".
Можно даже попробовать занять эту нишу — написать для кложуровского ring нехитрую библиотеку, которая будет ходить в заданную табличку в БД и предоставлять к ней административный интерфейс; правда, там ещё миллион мелочей, вроде авторизации, аудита, возможности расширения, смены дизайна интерфейса и т.д.
Ну и это закрывая глаза на факт, что я итак уже с трудом вывожу все свои проекты 🤣
😢2👍1🤔1
#лытдыбр
У Oracle в крайней версии VirtualBox, я смотрю, опять случились unprovoked irreversible enhancements.
Ю — Юзаб
или
т
и
У Oracle в крайней версии VirtualBox, я смотрю, опять случились unprovoked irreversible enhancements.
Ю — Юзаб
или
т
и
😁3🤔1
Forwarded from Черногория - новости
This media is not supported in your browser
VIEW IN TELEGRAM
🇲🇪 Кроме медведей в горах на севере Черногории достаточно много диких кабанов, будьте острожны катаясь на лыжах или гуляя по заснеженным долинам.
Черногория-Новости
Черногория-Новости
#common_lisp #обзор
Тут широко известный в узких кругах господин Ионеску вчера опубликовал статью, в которой описывает необычный подход к развёртыванию приложений на Common Lisp, зависящих от C-шных сторонних библиотек. Вместо того, чтобы таскать за собой все нужные бинарники библиотек, как это обычно делается (например, в Deploy господина Shinmera, он же Николас Хафнер), чтобы не огребать проблем с поиском библиотек на машине пользователя и их потенциальной несовместимостью, г-н Ионеску предлагает следующий танец с бубном: линкуем сам бинарник лиспа (пока всё работает только с
Подход интересный, но трудный в реализации и, как мне представляется, чересчур замысловатый. Вместо того, чтобы полагаться на наличие у пользователя установленного
Тут широко известный в узких кругах господин Ионеску вчера опубликовал статью, в которой описывает необычный подход к развёртыванию приложений на Common Lisp, зависящих от C-шных сторонних библиотек. Вместо того, чтобы таскать за собой все нужные бинарники библиотек, как это обычно делается (например, в Deploy господина Shinmera, он же Николас Хафнер), чтобы не огребать проблем с поиском библиотек на машине пользователя и их потенциальной несовместимостью, г-н Ионеску предлагает следующий танец с бубном: линкуем сам бинарник лиспа (пока всё работает только с
SBCL
) с нужными библиотеками — в статье морскими свинками выступают libfixposix
и OpenSSL
, а затем с помощью трюка под названием :canary обманываем CFFI
, чтобы он искал библиотеку не вовне, а использовал статически слинкованную с SBCL
библиотеку.Подход интересный, но трудный в реализации и, как мне представляется, чересчур замысловатый. Вместо того, чтобы полагаться на наличие у пользователя установленного
SBCL
(речь тут в первую очередь, конечно, про полноценные UNIX'овые системы), Ионеску с помощью весьма замысловатых сборочных скриптов делает некую его кастомную версию, без которой ничего не будет работать. Если уж говорить про развёртывание видеоигр (которым в 100% случаев нужны внешние C-шные библиотеки для работы), то тут выбор №1 — это, конечно, AppImage, но если думать дальше, то имеет смысл строить что-то в духе комбинации pip
+ virtualenv
в Python. Какие-то шаги в эту сторону делает господин Фукамачи, в виде проекта Roswell, но, как и всем его творениям, ему не хватает стабильности и отсутствия дурацких косяков. В общем, пока как делали AppImage'и, так и будем делать 😁#лытдыбр
Уже давно задолбался получать при запуске своей игры ошибку "Intializing audio addon failed" из-за того, что ALSA-устройство захвачено играющей музыкой, поэтому я наконец, спустя более, чем десятилетие использования Gentoo сдаюсь и включаю юзфлаг
Тем не менее, ушла эпоха. Боюсь дожить до дня, когда systemd окончательно вытеснит остальные системы инициализации 😅
Уже давно задолбался получать при запуске своей игры ошибку "Intializing audio addon failed" из-за того, что ALSA-устройство захвачено играющей музыкой, поэтому я наконец, спустя более, чем десятилетие использования Gentoo сдаюсь и включаю юзфлаг
pulseaudio
. Нет-нет, поттерингоподелия в своей генточке я терпеть не собираюсь, поэтому в качестве компромисса звуковым сервером будет PipeWire, спасибо его создателям.Тем не менее, ушла эпоха. Боюсь дожить до дня, когда systemd окончательно вытеснит остальные системы инициализации 😅
#common_lisp #проекты
Продолжая сдувать пыль с проекта d2clone-kit, выясняю ряд интересных вещей. Например, что господин Майкл Фиано вот уже в который раз обратно переименовал свой пакет
Ещё pulseaudio-бэкэнд в библиотеке, узнаётся стиль господина Поттеринга ; а мне повторная инициализация нужна, чтобы в рамках интерактивной разработки раз за разом запускать игру заново в одном и том же репле, так что пришлось насильно выставлять аудиодрайвером OpenAL.
Кроме того, почему-то отвалилось оформление элементов UI красивыми кастомными картиночками, нужно понять, что там за этот год успели в
Продолжая сдувать пыль с проекта d2clone-kit, выясняю ряд интересных вещей. Например, что господин Майкл Фиано вот уже в который раз обратно переименовал свой пакет
golden-utils
в mfiano-utils
, а заодно опять переложил его то ли с гитлаба на свой персональный хостинг, то ли со своего персонального хостинга на гитхаб, я признаться, устал следить за этим мельтешением — господин Фиано явно делает всё, чтобы его библиотекой пользоваться было невозможно, поэтому я сделал то, что уже давно намеревался — заменил эту его либу на стабильный, как скала, serapeum
, тем более что мне оттуда был нужен только макрос mvlet
.Ещё pulseaudio-бэкэнд в библиотеке
liballegro_audio
, как выясняется, не поддерживает фокусов с повторной инициализацией в одном и том же процессе — тупо крэшится с сегфолтомКроме того, почему-то отвалилось оформление элементов UI красивыми кастомными картиночками, нужно понять, что там за этот год успели в
Nuklear
поломать 😁GitLab
Andrew Kravchuk / d2clone-kit · GitLab
Diablo 2 is arguably one of the best action RPG created ever. This is humble attempt to recreate and, hopefully, deconstruct it using Common Lisp programming language and...
#лытдыбр
Марк Цукерящер, я смотрю, вообще там эцсамое. Как это, another person? Этот телефон вон у меня рядом с монитором лежит, алло
Марк Цукерящер, я смотрю, вообще там эцсамое. Как это, another person? Этот телефон вон у меня рядом с монитором лежит, алло
😱1
#common_lisp
С утра, ещё толком не проснувшись, прочитал в фиде статью про нынешние реализации Common Lisp , и приспичило посмотреть, как там проект Clasp поживает — это тот новенький, который на LLVM. Поискал ебилды для Gentoo, нашёл в оверлее tgbugs-overlay, но он у меня не захотел компилироваться. На базе него сделал себе в локальном оверлее ебилд, и после нескольких взмахов напильником получилось его собрать, вот он. Ожидал, что будет компилироваться несколько часов, — видел такие страшилки где-то в районе версии 1.0 этого проекта, однако на моём Ryzen 3600 оно собралось за 12 минут 😅
Первые впечатления следующие:
• Ого, оно работает! (см. рис. 1)
• Компилирует лисповый код Clasp страшно медленно, наверное, на порядок медленее SBCL.
• С кодировочками строк есть косячок (см. рис. 2).
• С совместимостью есть проблемы, но совсем не оттуда, откуда я ожидал (см. рис. 3): внезапно Clasp не смог подгрузить совершенно тривиальную библиотеку для парсинга JSON Jonathan из-за того, что в ней используется дурацкий синтаксический сахар cl-annot. Впрочем, я вроде бы всё равно собирался заменить JSON в своём движка d2clone-kit на обычные S-expr'ы. Там поглядим, может, в список поддерживаемых движком компиляторов и Clasp добавится 😊
С утра, ещё толком не проснувшись, прочитал в фиде статью про нынешние реализации Common Lisp , и приспичило посмотреть, как там проект Clasp поживает — это тот новенький, который на LLVM. Поискал ебилды для Gentoo, нашёл в оверлее tgbugs-overlay, но он у меня не захотел компилироваться. На базе него сделал себе в локальном оверлее ебилд, и после нескольких взмахов напильником получилось его собрать, вот он. Ожидал, что будет компилироваться несколько часов, — видел такие страшилки где-то в районе версии 1.0 этого проекта, однако на моём Ryzen 3600 оно собралось за 12 минут 😅
Первые впечатления следующие:
• Ого, оно работает! (см. рис. 1)
• Компилирует лисповый код Clasp страшно медленно, наверное, на порядок медленее SBCL.
• С кодировочками строк есть косячок (см. рис. 2).
• С совместимостью есть проблемы, но совсем не оттуда, откуда я ожидал (см. рис. 3): внезапно Clasp не смог подгрузить совершенно тривиальную библиотеку для парсинга JSON Jonathan из-за того, что в ней используется дурацкий синтаксический сахар cl-annot. Впрочем, я вроде бы всё равно собирался заменить JSON в своём движка d2clone-kit на обычные S-expr'ы. Там поглядим, может, в список поддерживаемых движком компиляторов и Clasp добавится 😊
🔥3👍1