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

RESTAS - платформа для разработки web-приложений на Common Lisp

Я сделал первый релиз RESTAS-0.0.1 - платформы для разработки веб-приложений на Common Lisp. На данной платформе сейчас работает ресурс lisper.ru, а также я использую её в своих рабочих проектах. Я начал разрабатывать RESTAS чуть менее года назад, поскольку существующие для CL фрэймворки меня совершенно не устраивали. Понаписал сначала кучу всякой ерунды и потом стал обрубать ненужное и выделять главное, пару раз полностью переписывал, так что последние полгода размер исходного кода только уменьшался. Изначально проект зависел от другой моей библиотеки - cl-libxml2, но эта зависимость была удалена и сейчас RESTAS акцентирует внимание на трёх основных моментах:
  • Диспетчеризация на основе системы маршрутов, аналогичных системе маршрутов Ruby On Rails, но без привязки к модели MVC.
  • Механизме повторного использования кода - системе плагинов. По задумке, она должна позволить разрабатывать веб-приложения, такие как форум, вики и т.п. и в последующем легко встраивать их в сайты на базе RESTAS. Проблема достаточно сложная, но сейчас я вижу хорошие перспективы для её приемлемого и довольно простого решения.
  • Интерактивной разработке и горячей замене кода. Любой код, относящийся к RESTAS (такой, как определение маршрута или плагина) может быть в любой момент "перекомпилирован" (например, с помощью C-M-x в SLIME) и внесённые изменения можно немедленно увидеть в браузере. Никаких перезагрузок веб-сервера и т.п. сложных действий.
Документации пока нет и единственное, что я могу сейчас предложить, помимо исходного кода lisper.ru (http://github.com/archimag/rulisp), это примеры двух простейших демонстрационных приложений и одного чуть более полезного плагина (который, будет развиваться):
В данный момент проект имеет следующие зависимости:
и для имеющих настроенную CL-среду его установка не должна вызвать каких-либо сложностей

Я приглашаю всех интересующихся веб-разработкой на языке Common Lisp принять участие в развитии этого проекта. Специально для обсуждения связанных с этим вопросов создал отдельный форум.

Ссылки:
Страница проекта: http://code.google.com/p/restas/ (пока там ничего нет)
Обсуждение: http://lisper.ru/forum/restas
Исходный код: http://github.com/archimag/restas
Скачать архив: http://restas.googlecode.com/files/restas-0.0.1.tar.bz2

9 комментариев:

  1. Очень интересный проект
    я начинающий лиспер, поэтому могу пока лишь только высказать пожелание: хотелось бы увидеть веб-сервисы на lisp (xmlrpc или wsdl)

    ОтветитьУдалить
  2. кстати, это именно из-за лиспа такая чувмовая скорость загрузки страниц?)

    ОтветитьУдалить
  3. > хотелось бы увидеть веб-сервисы на lisp
    > (xmlrpc или wsdl)

    Э... название RESTAS изначально означало "REST Application Server". Т.е. я предпочитаю стиль REST, и не люблю различные формы rpc, и особенно SOAP.

    > это именно из-за лиспа такая чувмовая скорость
    > загрузки страниц?

    Ну не знаю, что у вас за скорость такая :) некоторая информация о производительности системы есть здесь: http://lisper.ru/forum/thread/6

    ОтветитьУдалить
  4. Очень, очень настойчиво требую документации.

    В посте также не указано, почему существующие фреймворки для CL не устраивают автора. (Я в лиспе не разбираюсь, поэтому это мне не очевидно.)

    И еще хотелось бы увидеть сравнение с фреймворками Схемы (PLT).

    Надеюсь, я не сильно много требую? :)

    ОтветитьУдалить
  5. > Очень, очень настойчиво требую документации.

    Угу, было бы неплохо, но есть проблемы со временем и мотивацией :)

    > почему существующие фреймворки для CL
    Это наверное тема для отдельной статьи, но мне, по крайней мере, нужны были routes, а этого нигде нет.

    > И еще хотелось бы увидеть сравнение
    > с фреймворками Схемы (PLT).

    Зачем? Я не пишу на схеме :)

    ОтветитьУдалить
  6. На аглицком надо вести блог, на аглицком... Желающих присоединиться к разработке или даже просто заюзать и репортить баги будет на порядок больше.

    ОтветитьУдалить
  7. > На аглицком надо вести блог, на аглицком...

    Во-первых, мой английский не насколько хорошо, что бы я мог на нём писать. С чтением проблем обычно нет, но вот писать...
    :(

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

    ОтветитьУдалить
  8. К сожалению, русского лисп-сообщества, как такового, не существует.

    ОтветитьУдалить
  9. > К сожалению, русского лисп-сообщества,
    > как такового, не существует.

    Угу, но ведь оно не может появиться само по себе? Кто-то (и хорошо бы не он один) ведь должен что-то для этого делать?

    P.S. Ну, мировго сообщества как бы тоже нет ;)

    ОтветитьУдалить