LINUX.ORG.RU

Lisp


166

8

Всего сообщений: 4

Nyxt - нетрадиционный браузер на ЛИСПе

Привет! Первый раз пощу скриншот и не обижусь, если его не пропустят по причине унылости.

Пару раз видел на форуме опросы, каким браузером кто пользуется. Ни разу в них не было браузера Nyxt. Этот браузер написан на Common Lisp, и одной из его фич является полностью жабаскриптный/html’ный UI (который генерируется силами spinneret и parenscript). Это делает его менее прибитым к используемым тулкитам и движкам (да, веб-движок там не лисповый, конечно же). В данный момент используется либо WebKit, либо Electron. Браузер далёк от идеала, но весьма приятен, управляется мышой или кнопками. Я поставил емаксоподобные сочетания клавиш.

Кроме всего прочего, может использоваться как клиент Gemini или Gopher. На скрине как раз открыта рандомная Gemini-страничка.

Ещё его можно изменять прямо в процессе его работы. Запускаете swank (команда start-swank), подключаете slime и пилите. Лисперам понравится.

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

Ещё плюсом является быстрая компиляция из исходников (не считая движка, опять же). Хоп-хоп, и за минуты 3 собрался.

Лор в нём выглядит как лор, поэтому взял унылый gemini-сайт для примера.

Такие дела.

Официальный сайт

Гитхаб, BSD 3-Clause License.

 , ,

dura4ok11
()

Еще одна мертвая ОС на мертвом* языке

В обсуждениях к скриншоту mezzano кто-то вспомнил opengenera от symbolics, захотелось и ее запустить. Конечно, смотреть тут особо нечего, интерес только для любителей такой истории. Работала она на древнем 64битном DEC Alpha, сейчас можно запустить в эмуляторе после некоторого количества танцев с бубном. На скрине видно остатки стартового экрана, логин, REPL и системное меню, которое вылазит по shift+правый клик. В REPL вывел *features* их компилятора, не знаю даже зачем.

Из софта есть REPL, текстовый редактор zmacs (клон emacs но на другом диалекте lisp), просмотрщик документов, peek - дает посмотреть сколько памяти свободно и тп, наверное можно назвать древним аналогом vmstat. почтовый клиент zmail, терминал и еще кое-чего по мелочи. Разрешение картинки 1152x900 - такое имели мониторы, на которых она работала.

Ах да, не обманитесь названием, Open Genera - самая настоящая проприетарщина, но на историю поглядеть ведь интересно.

--- * на самом деле нет

 

coredump
()

Операционная система GNU Emacs завоевывает десктоп! :)

Операционная система GNU Emacs получила новые возможности! Собрал волю в кулак и написал библиотеку, которая практически полностью реализует протокол X11. Библиотека незамысловато называется x11 и написана на чистом Emacs Lisp, но пока имеет статус technical preview, хотя в принципе уже можно писать что-то реальное. За основу пока взяты описания протокола на XML из проекта XCB, которые разворачиваются в реализацию. В результате имеем практически все расширения. Работа с протоколом осуществляется в асинхронном стиле подобно XCB. Чего пока нет:

  • MIT-SHM. Запросы реализованы, но работать через разделяемую память из операционной системы Emacs мы пока не можем, поэтому Будем через сокет закидывать. Тем более, что разница в скорости, говорят (видел где-то в инете замеры), не такая сумасшедшая.
  • XKB. Просто забыл реализовать пару конструкций XML, используемых для описания этого расширения. Это я скоро реализую, поэтому расширение будет работать в полном объеме.
  • Big-requests. Тоже будет реализовано. Расширение содержит всего один запрос. Он реализован. Но именно для этого расширения надо несколько перелопатить процедуры формирования запросов к серверу X, так как подсчет размеров запросов изменяется с этим расширением.
  • GLX. Огромнейший пласт. За него возьмусь сильно позже. Тут же еще надо полностью сгенерировать протокол GL, а он очень обширный.

Остальные расширения вроде бы должны работать, если их описания правильные и если я что-то не упустил принципиального. Я работу всех расширений даже не проверил, так как очень спешу радостью поделиться. :)

(размер экрана уменьшил до 1024x768, чтобы скриншот поменьше был)

На скриншоте сверху робкая демонстрашка в стиле LSD основного протокола X11 (Core protocol). Ну с arcs, rectangles и core fonts все и так понятно. А вот как выведены фотографии? Я пока не настолько крут, чтобы писать растеризацию jpg и png на Emacs Lisp. Пораскинув мозгами, пошел смотреть, чем может помочь ImageMagick. Оказалось, есть там возможность получить дамп картинки в нужном формате. Так и сделал: надо отобразить картинку - дергаем stream, она нам отдает дамп в буфер, мы его отсылаем в сервер X. «Привет, Isden» написана мышкой. Демка отслеживает событие motion-notify и рисует маленький квадратик под указателем. По кнопке «q» - выход (отслеживается событие key-press)

На скриншоте снизу робкая и неумелая демонстрашка расширения XRender. Тоже в стиле LSD. На ней мы видим linear gradient, radial gradient, треугольник и отрисовку сглаженных окружностей. Окружности состоят из трапезоидов. Алгоритм рассечения (tessellation) я применил первый, какой мне пришел в голову - горизонтальными трапециями. Какая есть проблема? Сглаженный текст! Что-то мне писать растеризацию TrueType или Type1 на Emacs Lisp не улыбается. Есть идея написать программку на Си с помощью Xft, которую я буду что-то просить растеризовать, а она результат будет отдавать в Emacs. То есть примерно как и с ImageMagick поступить.

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

Так что есть потенциальная возможность воплотить мечту atoku в жизнь. :)

Традиционная ссылка на обоину: #888888. Старую удалил, так как она надоела, а новую еще не искал. Этот серый цвет реально бесит. :)

 , ,

Zubok
()

Рабочее место начинающего лиспового программиста

Собственно, old good Emacs+Slime. Используемый для работы лисп - последняя версия честно купленного (не мной) LispWorks энтерпрайз эдишн. WM - лисповый StumpWM, линукс - Arch. Мыло, джаббер, irc, словарь (через dictd), спеллчекер (flyspell через aspell) и переводчики (через гуглевского бота) - всё в Емаксе. Не в Емаксе только xterm и Firefox.

Работаю ремоутером дома на кухне, использую старый тошибовский ноутбук, поэтому экран такой маленький. Деятельность нашего стартапа лежит в разработке спец.железа для бирж и телекома (торги, передача сообщений за сотни наносекунд). Пишу, в основном, на Коммон Лиспе, но также на Cи (драйвера, юзерспейс) и ассемблере.

 ,

mv
()