Лисп в изгнании
230 subscribers
152 photos
21 videos
5 files
232 links
Авторский канал на околоайтишную тематику.

По всем вопросам @awkravchuk
Download Telegram
О, на видосике я и кондей 😋
This media is not supported in your browser
VIEW IN TELEGRAM
🇲🇪 В Черногории все еще красный уровень опасности из-за жары, температура сегодня будет около 40 градусов.

Черногория-Новости
😢53👍1🫡1
#common_lisp #лытдыбр

Немного инсайдерской инфы: судя по тому, что бессменный автор де-факто стандартного пакетного менеджера для CL Quicklisp, Zach Beane, запостил на той неделе issue по поводу warning'а компиляции в моей библиотеке cl-fast-ecs, входящей в Quicklisp, и развешал тегов canbuild и cantbuild в репозитории с заявками на включение в дистрибуцию, есть подозрение, что в ближайшее время нас может ждать новый релиз Quicklisp. Ну или нет 🤷‍♂️ с инсайдерской инфой всегда так)
👾1
#common_lisp #лытдыбр

"Ни месяца без новой опенсорсной библиотеки", — под таким жизнеутверждающим лозунгом выложил новый микрофреймворк на Common Lisp для нахождения маршрутов в играх алгоритмом A*, cl-astar. Почему микрофреймворк? Потому что там всё на макросах, я ж у мамы амбассадор лингвистической абстракции 😊 Библиотека выстроена вокруг макроса DEFINE-PATH-FINDER, в который прокидываются результаты вызова других вспомогательных макросов и лямбд, задающих требуемые параметры — тип координат, функция стоимости передвижения, эвристика оценки расстояния до цели, определение соседей у узла маршрута, способ обработки результата и прочее, и этот супермакрос из всех этих веточек и мусора собирает функцию, которая и будет искать маршрут. Причём результирующая функция сильно вылизана с точки зрения оптимизации, по результатам бенчмарков находит путь в рандомном лабиринте из 100x100 узлов чуть меньше, чем за миллисекунду, что не сильно медленнее реализаций этого алгоритма на C++ 💪

Уже переписал с использованием этого микрофреймворка передвижение персонажей в последнем шедевре Cycle of Evil, и оно сразу стало более адекватным. Собственно, микрофреймворк уже доступен в Quicklisp-репозитории LuckyLambda и распространяется по либеральной MIT-лицензии, так что призываю к его использованию в ваших проектах 😊
🔥18👍2
#лытдыбр #мемасики #scheme #common_lisp

Наткнулся тут в недавней статье про Medley/Interlisp на шикарное сравнение:
• Scheme — это экзотический спорткар. Быстрый. На ручной коробке. Без радио.
• Emacs Lisp — это Subaru GL 4WD 1984 года: "машина, которая всегда впереди тебя".
• Common Lisp — это Ходячий замок Хаула 🤣
😁5
#лытдыбр #проекты

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

Благо, удалось извлечь из этого проекта пользу: он был развёрнут на FreeBSD и PostgreSQL поверх OpenZFS, и теперь я из практики знаю, как обращаться с этим ультрахардкорным стеком 😊
🔥6👍1🙈1
#лытдыбр #common_lisp

Сделал ещё один маленький шажок к ресурсной системе игрового движка на CL — теперь при запуске автоматически происходит переход в каталог с ресурсами, причём хоть при загрузке кода в Emacs, хоть при запуске из сдампанного lisp-образа, хоть из линуксового AppImage 😊

Соответствующие изменения уже есть в последней версии нашего крайнего шедевра Cycle of Evil, в шаблоне игры на Common Lisp и в туториале по cl-fast-ecs я уже вот-вот накоплю силы для второй части, честно-честно 😅
🔥13
#мысль_в_душе #common_lisp

По результатам обсуждения макросов CL в коммьюнити Lisp forever пришла в голову такая мысль: не секрет, что в большинстве лиспов у функций сохраняется информация об исходном коде, так что, например, при возникновении исключительной ситуации в стек-трейсе можно написать что-то в духе (foo) from foo.lisp line 42. Почему бы не сохранять также для каждой строчки инфу о раскрытых макросах, которые были на этой строчке, чтобы ещё можно было написать, типа, (foo) from macro expansion of (with-open-file) in foo.lisp line 42?

С каждым днём мне всё труднее удерживать себя от того, чтобы бросить всё и начать пилить свой супербыстрый и суперкрутой диалект лиспа 😅
5👍3
#лытдыбр #common_lisp

Отправил в библиотеку cl-tiled PR с фичой, которой нам сильно не хватало для игры на весенний лисповый геймджем, а именно — поддержки объектов-шаблонов Tiled. Ну то есть как нам, не хватало моему товарищу, занимавшемуся картами, я-то просто сочувственно цокал языком 😅

Теперь шаблоны в cl-tiled будут поддерживаться прозрачным образом, даже код старых игр менять не придётся. Вы знаете, где выгрузить фуру с лайками и прочими положительными реакциями типа 🎉, чтобы автор библиотеки быстрее принял пуллреквест 😊
🔥7
This media is not supported in your browser
VIEW IN TELEGRAM
#лытдыбр #common_lisp

Умудрился тут себе заработать воспаление плечевого сустава, так что уле=еле полулёжа сижу за компом, закидавшись обезболивающими. Но всё же потихоньку нахожу в себе силы пилить вторую часть туториала по геймдеву на Common Lisp, чтобы успеть опубликовать его до середины октября и иметь возможность пошутить шуточку "и года не прошло с первой части" 😅

Вон даже осилил сделать подгрузку анимированных тайлов 😊
🔥8
#лытдыбр

А вот и отзывы подъехали к моему ECS-фреймворку для Common Lisp, хоть сейчас верстай лендинг с разделом Testimonials 😅
🔥9😁42💯2
#лытдыбр

Пока из-за больного плеча валялся на диване нетрудоспособным тюленчиком, осилил дочитать книжку Кристиана Кеннека "Lisp in small pieces", в которой подробно рассматривается строение интерпретаторов и компиляторов разных лиспов, и, конечно же, я загорелся идеей сделать свой крутой компилятор своего диалекта лиспа 😅 Как будто у меня хобби мало — уже поджимают сроки со второй частью туториала по геймдеву на Common Lisp, и буквально сегодня объявили дату осеннего Lisp Game Jam (спойлер, это 25 октября).

В общем, сегодня схожу на первый сеанс ЛФК, меня там каак вылечат, и тут-то я всё и сделаю))
8😢2👍1
#лытдыбр #common_lisp

Пока потихоньку доделываю туториал по геймдеву на CL, умудрился наткнуться и починить багу в библиотеке для UI Nuklear (она во второй части туториала тоже будет фигурировать 😊). Бага причём есть не только в liballegro-бэкэнде (я уже давно прикипел к этой библиотеке), но и в некоторых других бэкэндах, но на них у меня сил, конечно, не хватит 😅
🔥5
#лытдыбр

Пулл-реквест в библиотеку Nuklear приняли, в результате чего я попал, гм, в первую четырнадцатку соучастников 😅
🔥18👍1
#лытдыбр

В преддверии Autumn Lisp Game Jam '24, на котором я решил на этот раз выступить с rogue-like игрой (надо ж все жанры понадкусывать, как яблоки в том анекдоте 😅), решил ознакомиться поподробнее с современным состоянием жанра и почти случайно наткнулся на такой шедевр, как Path of Achra. Графика там, конечно, на уровне приснопамятной Rogue, прямиком из конца семидесятых (см. рис. 1), но буквально с первого данжа игра невероятно затягивает, я в нее последнюю неделю каждый вечер залипаю 😊 Возможно, дело в том, что такого рода игры бросают в тебя серьёзные челленджи, но при этом также дают массу различных инструментов, чтобы с ними справляться — тут только разных типов урона 11 штук, а вариаций персонажей и вовсе 640)

Рекомендую причаститься, благо, в стиме есть бесплатное демо (в которое я и играю, скидки-то проворонил 😅)
🔥71
#common_lisp

Тут подъехала кулстори, что лицо Горлума из кинотрилогии "Властелин Колец" моделировали в софтине, написанной на Common Lisp 💪

https://archive.org/details/izware_mirai_1.1sp2

Mirai is a 3D creation and editing suite available originally from Nichimen Graphics Corporation, later from Winged Edge Technologies, and currently from Izware. The modeller uses the winged edge data structure, is written in Common Lisp, and traces its lineage to the S-Geometry software from Symbolics. It has been used primarily by game developers and high-end character animators—for example by Bay Raitt's facial morph targets for the Gollum character in The Lord of the Rings film trilogy.

UPD. В коментах ещё подкинули ссылку на статью об этой софтине на сайте Franz Inc., которые Allegro Common Lisp.
🔥10👍1
#лытдыбр #common_lisp

Определённо наличие дедлайнов, даже довольно произвольных, тонизирует — уже написал больше текста второй части туториала, чем было в первой, а ещё даже не закончил с рассмотрением первой темы из двух, вынесенных в её заголовок 😅
3👍2🔥2🕊1
#лытдыбр #соцсети

Наконец исполнил свою давнюю мечту и сделал персональный телеграм-канал для щитпоста на околопрограммерские темы, вот он: Щепелявый Щитпост 😅 Накидал там мемасов, которые давно под рукой валялись, так что подписывайтесь (но лучше не надо, щитпост же))
4
#лытдыбр #common_lisp

Вчера утром никого не трогаю, дописываю вторую часть туториала, вдруг раз — на почту уведомление, мол, в коментах к нашей игре на прошлогодний осенний Lisp-джем Mana Break чувачок пишет, что у него под линуксом игра не запускается. "Под такой благословенной ОС и не запускается", — думаю я, "непорядок, нужно чинить". Лезу разбираться, и выясняется, что в течение уже неопределённо долгого времени (с мая?) билды под некоторыми дистрибутивами действительно могут не запускаться из-за того, что окошечная библиотека GTK при запуске не может найти иконку image-missing, которая нужна, чтобы показать, что он не может найти иконку 😵‍💫

Попытался починить, даже багу в багтрекере AppImageKit завёл, возился-возился, потом плюнул и добавил всё правильно разруливающий в потрохах GTK GTK-плагин к утилите для создания линуксового AppImage, — это сработало, так что добавил его и внутрь своего докер-образа для сбора игр (заодно и версию SBCL бампнул), кроме того, пришлось внести изменения в cookiecutter-шаблон для игр на CL. Ух, вот это я понимаю прокрастинация 😅
👍6😭2🥴1