
Новшества и версии
Сейчас есть две актуальные версии 0.0.71 и 0.1.2, которые можно установить соответственно:
npm install impress@0.0.71 # старый стиль приложений с поддержкой развертывания на множество серверов
npm install impress@0.1.2 # новый стиль приложений с сендбоксингом и поддержкой множества серверов
Все новогодние праздники были цинично потрачены на реализацию сендбоксинга и глубокий рефакторинг Impress. Переписано до 80% ядра и версия 0.1.2 оттестирована на приложениях, написанных для 0.0.71 с их минимальной коррекцией. Функционально в этих версиях все одинаково, кроме сендбоксинга и особенностей написания приложений. Рефакторинг из старого стиля в новый очень прост и сводится к замене обращения к API сервера приложений. На днях я выпущу небольшую инструкцию по портированию, т.к. есть уже достаточное количество внешних разработчиков, использующих Impress, подложить им такой подарок на НГ не хотелось бы. С инструкцией же они, справятся с портированием за несколько минут, надеюсь.
Итак, функциональные новшества, присутствующие в обоих версиях:
- Реализация межпроцессового взаимодействия в виде трансляции сообщений между процессами через ZeroMQ (межсерверное взаимодействие) и
IPC (в рамках одного сервера). Это необходимо, чтобы пользователи, приклеенные к своему процессу, могли взаимодействовать друг с другом. - Добавлена поддержка WebSocket (ее уже давно просили) и обновлена реализация Server-Sent Events. В демонстрационном приложении есть примеры их использования. Более того, эти протоколы могут быть доступны на том же порту (например 80), на котором приложения отдают свои страницы, просто по другому URL, что позволяет обойтись без CORS (кроссдоменных запросов, а другой порт, почему-то считается уже другим доменом).
- Удалено много зависимостей, и модули используются только если они установлены и добавлены в конфигурацию. Это все благодаря библиотеке geoip-lite, которая решила вдруг оставлять 120Мб временных файлов и тяжелым драйверам БД, которые не все сразу нужны. Патч для geoip-lite я уже отправил автору, в npm его еще нет, но кому критично — ставьте через github, тут он уже доступен. UPD: как раз 2014-01-13 новая версия попала в npm.
- Проведена оптимизация кеширования шаблонов, статики и обработчиков бизнес-логики, в том числе оптимизировано слежение за файловый системой и обновление кеша при изменении файлов на диске. А в новой версии, кеширование полностью переписано, чтобы обеспечить экранирование приложений в сандбоксах.
Слайд для заманивания на просмотр презентации (кликабилен)

Ссылки
На Github: https://github.com/tshemsedinov/impress
В npm: https://npmjs.org/package/impress