LINUX.ORG.RU

Новая стандартная библиотека для CL - CLR

 ,


1

11

Привет.

Как известно, текущая стандартная библиотека Common Lisp устарела, много необходимого в ней просто нет, реализации предоставляют разрозненные наборы фич, а в репозиториях куча полуподдерживаемых библиотек.

Поэтому я тут решил потихоньку пилить новую стандартную библиотеку для CL. По образу и подобию недавно заопенсорсенного .NET Base Class Library.

https://github.com/Lovesan/CLR

Код либо адаптируется из существующих библиотек - благо лицензии в основном позволяют, либо переписывается на CL из библиотек других языков.

Важный момент - это не синтаксический сахар и не простое распихивание символов по модулям, как в том же cl21, это именно стандартная библиотека.

Сейчас у меня там совсем небольшое количество кода, и в качестве бэкенда пока только SBCL и винда, но вот неполный список планирующихся фич:

  • Унифицированные *features*
  • Разнообразные распространенные утилиты, вроде with-gensyms итд
  • Унифицированный интерфейс MOP
  • Треды, примитивы синхронизации, атомарные операции, тред пулы, таски/фьючи
  • Асинхронное высокопроизводительное IO, включая работу с сетью
  • Легковесный FFI
  • Различные коллекции, в том числе lock-free. Унифицированный интерфейс коллекций.
  • Кодировки, регулярные выражения, i18n, L10n
  • Работа с датой и временем
  • Унифицированные механизмы сериализации
  • Работа с XML и JSON
  • Работа со сжатием данных
  • Стандартная система логирования
  • Для винды - интеграция с COM по подобию .NET, работа с виндовыми сервисами

Также, в качестве отдельных модулей/asdf-систем:

  • Унифицированная работа с базами данных по примеру JDBC и сотоварищей
  • Работа с безопасностью и криптографией
  • Фреймворк для тестирования кода
  • итд

Пилю пока один, но community effort был бы очень к месту. Желающие - присоединяйтесь.

★★

Common LanguageLisp Runtime — это такая игра слов?

intelfx ★★★★★
()
Последнее исправление: intelfx (всего исправлений: 1)

Мне нравится как ты упоминаешь CLR и .Net в одном предложении. Ты запили CL в CLR? Или почему ты выбрал такое название?

Quickern ★★
()

Для Scheme пили. CL - мамонт на КостыЛях

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

реализация CL - крайне нетривиальная задача, особенно на managed-платформах со своей системой типов, отличной от такой в CL

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

Да это-то понятно. Я исключительно названию идивлся, как и мсье intelfx.

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

unix будет, причем текущая версия переносится на юникс буквально написанием одной функции. в дальнейшем я думаю самое сложное будет делать IO, т.к. модель IO которую я задумал, легко реализовать на IOCP. При epoll/kqueue или тем более при отсутствии таких - я думаю реализация будет нетривиальная.

lovesan ★★
() автор топика

А почему бы не взять Clojure? Порт на CLR насколько я знаю есть, но не очень живой, можно помочь ребятам.

anonymous
()

По образу и подобию недавно заопенсорсенного .NET Base Class Library.

Лапшан, но зачем? Ведь уже есть заопенсорсенный .NET Base Class Library.

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

в дальнейшем я думаю самое сложное будет делать IO, т.к. модель IO которую я задумал, легко реализовать на IOCP. При epoll/kqueue или тем более при отсутствии таких - я думаю реализация будет нетривиальная.

В libevent, кажется, был кроссплатформенный iocp-подобный интерфейс.

Manhunt ★★★★★
()

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

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

У меня такой план - допилю базу, на основе нее напишу тестовый фреймворк, и на нем уже тесты для самой библиотеки.

lovesan ★★
() автор топика

Вау, решил пилить библиотеку!

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

Clojure:

  • Медленная
  • На JVM, в которой нет даже поддержки tailcall(какой вообще может быть функциональный язык без TCO?)
  • Для нее нет ни нормального REPL, ни IDE - ничего сравнимого со SLIME, в силу особенностей ее архитектуры, и в частности, из-за JVM
  • STM ни к селу ни к городу, батя грит плохо зделоли, лучше бы зделоли как в Scala(это же касается иммутабельности кстати)
  • Объектная система, включая мультиметоды - убога и ограничена, опять же, JVM
  • Нет Condition System
  • Нет reader-макросов и других мощных фич CL, вроде динамических переменных
  • Опять же, из-за JVM, у нее можно считать отсутствует вменяемый FFI
  • Некоторым не нравится Lisp-1, но это уже субъективно, конечно
  • Всякие несуразности типа nil не list итд
  • Довольно тупой синтаксис, типа там квадратных скобок и вообще массивов и хешей в коде.
  • В коммьюнити куча немытых необразованных хипстеров которые изобретают кривые велосипеды с квадратными колесами.
  • ...итд.
lovesan ★★
() автор топика
Ответ на: комментарий от lovesan

Ну вот, а ведь был такой клёвый шанс опробовать TDD во всю мощь, ведь библиотека базовых функций - самое оно.

Если тесты писать уже при написанной библиотеке, интерфейс её будет уже сформирован. Хотя, впрочем, если её при этом ещё и переписать, то...

Ну, клёво, в общем :)

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

Зачем нужен CL когда уже давно есть Haskell?

А зачем нужен в Киеве дядька, когда давно уже в огороде есть бузина?

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

Зачем нужен Haskell когда уже давно есть CL?

Зачем нужны оба эти языка, если на них всё равно никто ничего не пишет*?

* в пределах погрешности измерения

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

Ну я так и сказал: в пределах погрешности измерения. Так то я сам видел пару полезных программ и на CL и на хаскелле.

Суть в том, что на go, который появился вот только что, уже больше полезного сейчас (а не когда-то в прошлом веке) софта написали.

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

Суть в том, что на go, который появился вот только что, уже больше полезного сейчас (а не когда-то в прошлом веке) софта написали.

Я на lisper.ru объяснил как раз, что одна из причин этого - отсутствие вменяемых библиотек, и в первую и главную очередь - стандартной. У того же go она есть и огромна, хотя как язык он - говно полное(ну а самые его главные фичи, горутины и каналы - на том же CL реализуются с помощью тред-пула и блокирующей очереди, скажем - максимум строчек за 100).

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

Я давно не видел ничего полезного на VB.

На нем вполне решают реальные бизнес задачи вне локалхоста-апологета-Х. Мне он тоже не нужен, а вот для моих задач CL прекрасно подходит, а убогий го — нет.

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

на том же CL реализуются с помощью тред-пула и блокирующей очереди, скажем - максимум строчек за 100

Какое невежество и дилетанство.

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

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

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

Я даже отвечать ничего не буду. На лицо диванный кукаретик-пустозвон

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

На нем вполне решают реальные бизнес задачи вне локалхоста-апологета-Х. Мне он тоже не нужен, а вот для моих задач CL прекрасно подходит, а убогий го — нет.

Это же прекрасно! Возможно, благодаря именно тебе и топикстартеру, лет через десять среднестатистическому убогому линуксоиду будет известно не о двух, а о целых трёх полезных программах на CL!

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

я таски запилю скоро, на манер System.Threading.Task и scala.concurrent.Future, а это посложнее каналов будет - посмотришь, бгг, у кого там невежество

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

а о целых трёх полезных программах на CL!

Если честно, меня это не волнует, так как мне платят за решенные задачи с помощью удобного инструмента — CL.

лет через десять среднестатистическому убогому линуксоиду будет известно не о двух

пффф

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

у тебя просто анальная боль от того что самый настоящий лисп в продакшне юзают :) а на бесполезную поделку типа CL все насрать :)

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