вторник, 28 октября 2008 г.

cl-libxml2-0.1

Спустя две недели после начало работы (в основном, ночной), свершилось - cl-libxml2 версии 0.1 доступна для использования, критики и прочего ... Это, конечно, только начало, но с этим уже вполне можно работать, а самое главное есть вполне вменяемая поддержка xpath и xslt.

И надо же было так совпасть, что релиз совпал с моим днем рождением :-) Типа сделал сам себе подарок :-)

понедельник, 13 октября 2008 г.

cl-libxml2

В предыдущем сообщении я рассказал об идеи сервера-приложений, которая меня уже давно привлекает и над зачатками которой я уже успел поработать. Но после окончательной кристаллизации идеи выявилась проблема - я не хочу писать это на Python. Не то, чтобы я имел что-то против Python, очень хороший, милый такой язык :-), но не восхищает. Я не получаю такого удовольствия от программирования на Python, как от программирования на Common Lisp. Меня давно подмывало реализовать эту идею на CL, но тут выходит на сцену относительная малочисленность lisp-разработчиков и некоторый недостаток библиотек.

В данном случае, речь идёт о недоступности полноценного решения для работы с XML. Да, cxml, вкупе с cxml-stp - отличная библиотека, но там не реализовано критически важная для меня поддержка XSLT. В принципе, близка к первому релизу Xuriella XSLT (основанная на cxml), но, как мне сообщил один из разработчиков, с производительностью у этой библиотеки пока беда... Это, вероятно, поправимо, но со временем, причем, не вполне определённым. Вообще, мне представляется довольно странным, что в открытом доступе нет обёрток для libxml2. Мне кажется, что есть некоторая нелюбовь lisp-хакеров к написанию оберток над библиотеками, написанными на других языках, возможно некоторым это кажется унизительным :-)

В общем, отчаявшись найти устраивающее меня решение для работы с xml я наконец решился начать делать самому cl-libxml2. В основу я положил CFFI, а в дизайне ориентируюсь на cxml-stp, за тем исключением (весьма существенным), что для обработки списков (элементов, атрибутов и т.д.) будут использоваться решения на базе iterate.