Hacker News Digest

Тег: #common-lisp

Постов: 7

IDEmacs: A Visual Studio Code clone for Emacs (codeberg.org) 🔥 Горячее

IDEmacs представляет собой набор конфигураций для Emacs, созданный для упрощения входа в этот мощный редактор через имитацию интерфейса популярных IDE. Проект ориентирован на трех основных групп пользователей: программистов, переходящих с других IDE; начинающих Common Lisp и Scheme разработчиков, которым нужна функциональность Emacs без сложной настройки; а также непрограммистов, ищущих полнофункциональный редактор для Org, Markdown или LaTeX.

Ключевая особенность IDEmacs - это сочетание традиционного для Emacs управления с клавиатуры и поддержки GUI с мышью. В отличие от большинства стартовых комплектов для Emacs, здесь не скрываются графические элементы интерфейса, что значительно снижает порог входа для новичков. Проект позиционируется как временное решение ("заплатка") для текущей ситуации, когда Emacs с Sly/Geiser остается лучшей средой разработки для Lisp/Scheme, несмотря на его сложность для начинающих.

by nogajun • 16 ноября 2025 г. в 00:56 • 283 points

ОригиналHN

#emacs#visual-studio-code#common-lisp#scheme#org#markdown#latex#ssh#vim#neovim

Комментарии (116)

  • Пользователи спорят о модернизации Emacs: одни хотят сохранить ядро, но обновить UI (giancarlostoro), другие считают устаревший интерфейс фичей (raincole), третьи критикуют производительность (koiueo).
  • Альтернативы Emacs обсуждаются активно: VS Code с плагинами (ruguo), OniVim (tiffanyh), Neovim с distant.nvim (pca006132), а также Electron-редакторы с Vim-подобными биндами (trenchpilgrim).
  • Удалённая работа через SSH/TRAMP в Emacs возможна (brendyn, v9v), но имеет проблемы с задержками, в отличие от VS Code Remote (pca006132, blubber).
  • Клавиатурные комбинации Emacs (C-x, C-c и др.) вызывают поляризацию мнений: одни считают их устаревшими (tom_), другие — неотъемлемой частью (ssivark).
  • Сообщество Emacs сопротивляется радикальным изменениям UI, предпочитая кастомизацию через "стартовые пакеты" (ssivark), хотя часть видит в этом контркультурное противодействие прогрессу (stackghost).

ECL Runs Maxima in a Browser (mailman3.common-lisp.net)

by seansh • 03 ноября 2025 г. в 06:21 • 107 points

ОригиналHN

#common-lisp#abcl#maxima#android#ndk#jvm

Комментарии (11)

  • ABCL не поддерживает Android, а Maxima и другие легаси-проекты были удалены из Play Store.
  • Пользователи жалуются на производительность ABCL и отсутствие нативных библиотек.
  • Некоторые предпочитают NDK-инструменты, чтобы избежать любой зависимости от JVM.
  • Проект в браузере выглядит как open-source-альтернатива Mathematica/Maple, но без четкой документации.

Quirks of Common Lisp Types (fosskers.ca)

Типы — это небеса

В CL тип — это множество, и каждый объект принадлежит хотя бы одному.
(type-of 37)(INTEGER 0 …)
(type-of "漣")(SIMPLE-ARRAY CHARACTER (1))

(typep 37 'integer)T, аналогично 'real, 'number, t.
Типы не образуют строгую иерархию: строка всегда string, но не обязательно simple-array.

Типы для корректности

(defun f (n) (+ n "漣")) — компилятор жалуется: "漣" не NUMBER.
(defstruct sky (molecules 0 :type integer))
(make-sky :molecules 1.1) — ошибка типа.
То же для длины массива: (simple-array character (17)) отвергнет строку из 18 символов.

Типы для оптимизации

Подсказки помогают компилятору.
(defun add (n) (+ n 37)) без аннотаций → общий код.
Добавим (declare (type fixnum n)) — генерируется короткая машинная инструкция LEA.

Классы — это земля

Классы реальны: (defclass point () ((x :initarg :x) (y :initarg :y))).
Наследование и множественный диспатч generic-функций работают как в CLOS.

Сердце машины

  • «Абстрактные» классы — просто не создают экземпляров.
  • fixnum — самый быстрый целый, в SBCL 61 бит (63 на 64-битных).
    (type-of 4611686018427387904)(INTEGER 4611686018427387904) — уже bignum.

Итог

CL даёт строгие типы без потери гибкости: проверки на этапе компиляции и выполнения, оптимизация, но возможность менять код в REPL.

by todsacerdoti • 31 августа 2025 г. в 00:06 • 101 points

ОригиналHN

#common-lisp#clos#sbcl#types#optimization#compilation#bignum#fixnum#runtime#type-checking

Комментарии (18)

  • Участники согласились, что статья преувеличивает гарантии статической проверки типов в Common Lisp: SBCL даёт лишь «вежливые» предупреждения, а стандарт вообще не требует обязательной проверки.
  • Обсуждали «квирки» иерархии типов: отношения между string, simple-array и vector уточняли через subtypep и typep; выяснилось, что они связаны отношениями подтипов.
  • Отметили особенность «апгрейда» типов элементов массивов: итоговый тип всегда супертип заявленного, причём сохраняются отношения подтипов.
  • Вспомнили специальную форму the, которая служит как для оптимизации, так и для runtime-assert’ов, но не даёт жёстких гарантий.
  • Пошутили о том, что массив с элементами типа NIL формально считается строкой, поскольку NIL — подтип любого типа, включая CHARACTER.

Lisp from Nothing, Second Edition (t3x.org) 🔥 Горячее

LISP FROM NOTHING
344 стр., 2025, Lulu Press, 6"×9", 19 иллюстраций, код бесплатно.

Купить: мягкий переплёт | твёрдый | PDF
Исходники | Превью (PDF) | Опечатки | Видео-обзор

Книга исследует минимальный LISP, способный интерпретировать и компилировать себя, и показывает, каким был хакинг в эпоху перфокарт и мейнфреймов. Во втором издании добавлена глава о связи LISP с λ-исчислением, улучшены макросы и стиль.

Примеры кода

Весь код книги (~100 КБ)
λ-исчисление в Scheme (~6 КБ)
Генератор перфокарт Postscript
Обложка главы «Let There Be LISP»

by nils-m-holm • 27 августа 2025 г. в 09:50 • 341 points

ОригиналHN

#lisp#scheme#common-lisp#lambda-calculus#compilers#interpreters#garbage-collection#punch-cards#mainframes#nils-m.-holm

Комментарии (97)

  • Читатели восторженно отзываются о сайте и книгах Нильса М. Хольма, называя их «личной поэзией» и «культурными артефактами», созданными ради самого процесса.
  • Автор подтверждает: главное для него — красота и простота изложения, а не практическая польза или научная новизна.
  • Покупатели жалуются на выбор: «хочется всё сразу», но автор советует начать с одной книги и прислал шпаргалку «какую выбрать».
  • Обсуждаются входные требования: книга не для новичков; рекомендуют The Little Schemer, ANSI Common Lisp и A Gentle Introduction.
  • Возник спор о названии «Lisp from Nothing» при пометке «не вводная книга»; автор уточняет, что «nothing» значит «с нуля», а не «для нулевых».

Seed: Interactive software environment based on Common Lisp (github.com)

Seed — интерактивная среда разработки на Common Lisp.
Позволяет писать, отлаживать и запускать код в одном окне, поддерживает REPL, графику и встроенные библиотеки.
Подходит для прототипирования, научных задач и обучения.

by todsacerdoti • 24 августа 2025 г. в 06:57 • 104 points

ОригиналHN

#common-lisp#repl#prototyping#node.js#github

Комментарии (21)

  • Проект Seed вызывает интерес, но README скуден: не хватает скриншотов и понятного описания.
  • Многие сравнивают его с CLOG, который лучше документирован, активнее и имеет больше примеров.
  • Разработчик (phantomics) заверяет: Seed не заброшен, старый код заморожен, а новый ветви revival ведётся переписывание.
  • Старый Seed можно глянуть на Vimeo и YouTube; новый всё ещё требует Node.js только для сборки JS-библиотек, но не для рантайма.
  • Пользователи просят встроить демо прямо в README и убрать зависимость от Node/Gulp, а кто-то мечтает запустить Seed на Mezzano.

Show HN: Using Common Lisp from Inside the Browser (turtleware.eu)

Web Embeddable Common Lisp (WECL) — запуск Common Lisp в браузере через WebAssembly.
Проект экспериментальный; API нестабильны, баг-репорты не принимаются.
Исходники: fossil.turtleware.eu/wecl.

Быстрый старт

Подключите boot.js и wecl.js, пишите код в <script type="text/common-lisp">.
Пример считает обратный отсчёт и выводит «BOOM!».
Демо: easy.html | easy.lisp

JS-FFI

Набор макросов для вызова JavaScript из Lisp:

макрос назначение
define-js-variable переменная, выражение подставляется каждый раз
define-js-object объект, сохраняется в хранилище
define-js-function функция
define-js-method метод объекта
define-js-getter/setter/accessor чтение/запись поля
define-js-script шаблон JS-выражения
define-js-callback Lisp-функция, вызываемая из JS
lambda-js-callback анонимный callback

Типы аргументов: :object, :js-ref, :fixnum, :symbol, :string, :null.

Emacs-интеграция

LIME/SLUG позволяет REPL и отладку прямо из Emacs.

Инъекция в любой сайт

Загрузка WECL в произвольную страницу через bookmarklet или расширение.

Ограничения

  • Размер wasm-модуля ≈ 10 МБ (кешируется).
  • Нет потоков, FFI неполный, производительность средняя.

Финансирование

Разработка поддерживается подписчиками Patreon.

by jackdaniel • 21 августа 2025 г. в 12:08 • 87 points

ОригиналHN

#common-lisp#webassembly#javascript#emacs#functional-programming#web-development

Комментарии (24)

  • Обсуждение началось с альтернативной истории: если бы JS изначально был похож на Lisp, возможно, функциональное программирование стало бы мейнстримом раньше.
  • Участники отмечают, что WebAssembly и Gambit-JS уже позволяют писать на Scheme/Common Lisp в браузере, улучшая DX и переиспользование кода.
  • Некоторые сомневаются, что Lisp автоматически «функциональнее» JS, и подчеркивают, что императивный стиль часто естественнее.
  • Поднимаются риски: рост размера рантайма, проблемы на медленных каналах и возможное доминирование Microsoft, если бы IE/VBScript победил.

Nyxt: The Emacs-like web browser (lwn.net)

Nyxt — браузер в духе Emacs, написанный на Common Lisp под BSD-лицензией. Цель — клавиатурное управление и полная расширяемость для разработчиков; Linux — приоритетная платформа.

Проект запущен в 2017 г. Джоном Меркурисом, спонсируется двухчеловечной Atlas. Идея — дать «хороший Emacs-опыт в интернете», но без самого Emacs: технический долг и ограничения плагинов не позволили реализовать задумку иначе. Поддерживаются vi- и CUA-схемы клавиш.

Стабильная ветка 3.12.0 (октябрь 2024) использует WebKitGTK, экспериментально Blink. Обновления безопасности только для последней стабильной версии.

Разрабатывается 4.0: рендер-агностик, WebKitGTK + Electron (из-за производительности и поддержки macOS/Windows). Пока доступен превью-AppImage на Electron; WebKitGTK требует сборки из исходников. Основные изменения — рефакторинг, багфиксы, улучшения UI.

Установка стабильной версии в Linux — Flatpak.

by signa11 • 11 августа 2025 г. в 01:46 • 133 points

ОригиналHN

#common-lisp#webkitgtk#blink#electron#chromium#emacs#linux#macos#windows

Комментарии (35)

  • Пользователи восторжены идеей «Emacs для браузера», но ждут стабильной 4.0 и полной совместимости с сайтами.
  • Основные тормозы: отсутствие uBlock Origin/umatrix, странный поиск в модальном окне, проблемы с Electron и сборкой под Guix/Mac.
  • Движок — Chromium через Electron, поэтому sandbox-защита сопоставима с Chrome, но «взлом» вне песочницы пугает.
  • Критики считают проект хакерским, а не продуктовым: мало внимания UX и «обычным» пользователям.
  • Сторонники отвечают: целевая аудитория — энтузиасты Emacs/Luakit, а не массовый рынок.