Релиз Unit 1.7

Валентин Бартенев vbart на nginx.com
Пт Дек 21 14:05:28 UTC 2018


Здравствуйте.

Рад сообщить о выпуске новой версии NGINX Unit.

Это корректирующий выпуск, который нацелен на повышение стабильности Node.js
модуля.  Нам удалось добиться существенных результатов и теперь поддержка
Node.js в лучшем состоянии.

Изменения в Unit 1.7                                            20.12.2018

    *) Изменение: теперь rpath задается в модуле Ruby, только если библиотека
       не найдена в путях по умолчанию; это позволяет соблюсти требования к
       пакетированию в некоторых системах.

    *) Исправление: не работали опции PHP "disable_functions" и
       "disable_classes", заданные через управляющий API.

    *) Исправление: не срабатывали Promises для данных из запросов в Node.js.

    *) Исправление: различные проблемы совместимости с приложениями Node.js.

    *) Исправление: в модуле Node.js происходила ошибка сегментации, если
       приложение читало тело запроса после вызова request.end().

    *) Исправление: в модуле Node.js происходила ошибка сегментации, если
       приложение пыталось дважды отправить заголовок.

    *) Исправление: при манипуляциях с полями заголовка ответа в модуле Node.js
       не принималось во внимание, что регистр их имен не должен учитываться.

    *) Исправление: неперехваченные исключения в Node.js не записывались в лог.

    *) Исправление: глобальная установка модуля Node.js из исходников не
       работала в некоторых окружениях; ошибка появилась в версии 1.6.

    *) Исправление: обратная трассировка исключений при инициализации приложений
       на Python не записывалась в лог.

    *) Исправление: модуль PHP не собирался, если интерпретатор PHP был собран
       с включенной потокобезопасностью.

Хайли лайкли, данный релиз станет последним в 2018 году.
И от всей нашей команды Unit-а я поздравляю вас с наступающим Новым Годом.

2018 год получился очень насыщенным с точки зрения развития проекта Unit.
Множество важных нововведений удалось реализовать, включая:

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

   Документация: https://unit.nginx.org/configuration/#process-management

 - Поддержка приложений на Perl, Ruby и Node.js.  Спасибо Александру Борисову,
   который занимался разработкой этих языковых модулей.

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

   Документация: https://unit.nginx.org/configuration/#ssl-tls-and-certificates

 - C API для языковых модулей был вынесен в отдельную библиотеку, что сильно
   облегчило интеграцию с Node.js и помогло с предстоящим внедрением поддержки
   Java приложений.  Ещё раз спасибо Максиму Романову за эту работу.

 - Начальная поддержка логирования доступа.

   Документация: https://unit.nginx.org/configuration/#access-log

 - Расширенные настройки приложений, включая переменные окружения, аргументы
   запуска, опции PHP и путей к php.ini. 

Не могу вообразить выпуск всей этой функциональности без кропотливой работы
нашего инженера по качеству Андрея Зеленкова.  Он беспрестанно повышал покрытие
кода Unit-а функциональными тестами, проводил различное фаззинг-тестирование и
оповещал разработчиков о любом подозрительном поведении сервера.

Также одним из ключевых достижений этого года стало существенное улучшение
полноты и качества документации.  Сайт unit.nginx.org теперь полностью
актуализирован и содержит информацию обо всех появившихся возможностях,
как в самых последних, так и во всех более ранних версиях Unit-а.
С этой задачей успешно справился наш технический писатель Артем Конев.

Кроме того, он продолжает перерабатывать документацию и планирует серию Howto
по настройке Unit-а в различных ситуациях и для запуска разных приложений.
Если у вас есть пожелания по конкретным приложениям, которые вы хотели бы
запускать в Unit-е, то, пожалуйста, создайте запрос по документации на GitHub:

 - https://github.com/nginx/unit-docs/issues

Спасибо нашим системным инженерам: Андрею Белову и Константину Павлову,
которые обеспечивали свежими пакетами репозитории для различных дистрибутивов
и подготавливали образы для Docker-а.

Спасибо нашему продуктовому менеджеру Николаю Шадрину, который помогал со
стратегией развития и блестяще выступал на конференциях по всему миру.
Вы можете увидеть его в записи с недавней конференции NGINX Conf 2018,
где он демонстрировал последние возможности Unit-а:

 - https://www.youtube.com/watch?v=JQZKbIG3uro

Безусловно всё, что я упомянул, было бы невозможно без нашего замечательного
сообщества пользователей.  Они по достоинству оценили перспективы Unit-а и
начали постепенно переносить на него свои проекты.  Благодарю всех, кто сообщал
о найденных ошибках и предлагал различные интересные идеи к реализации, оставлял
ценные пожелания по дальнейшему развитию проекта, которые безусловно будут
учтены по мере возможности.  Мы приглашаем каждого принять участие через список
рассылки:

 - http://mailman.nginx.org/mailman/listinfo/unit

или в GitHub:

 - https://github.com/nginx/unit

Особенно хочется отметить 洪志道 (Hong Zhi Dao), как одного из самых активных
участников сообщества, который не только сообщает об ошибках, но и регулярно
вычитывает код, задает наводящие вопросы и присылает различные патчи с
улучшениями.  Спасибо ему огромное за вклад в проект.

Отдельное спасибо ответственным за пакеты Unit-а в различных системах, среди
которых: Сергей Осокин (FreeBSD), Ralph Seichter (Gentoo), André Klitzing
(Alpine Linux) и Julian Brost (Arch Linux).  Извините, если кто-то поддерживает
репозиторий с пакетами Unit-а в одном из дистрибутивов и не был упомянут.
Вы можете открыть запрос на GitHub для внесения вашего репозитория в секцию
Installation сайта unit.nginx.org:

 - https://github.com/nginx/unit-docs/issues

К сожалению, нам не удалось достигнуть всех наших грандиозных целей на этот год.
Разработку некоторой функциональности пришлось перенести на будущий год.

Сейчас продолжается работа над поддержкой WebSocket, модулем Java,
маршрутизацией запросов и раздачей статики.

Мы уже достигли неплохого прогресса в поддержке Java.  Эта разработка ведется
в отдельном публичном репозитории на GitHub:

 - https://github.com/mar0x/unit

Таким образом, если вы заинтересованы в запуске приложений на Java, то уже
можете принять участие и пробовать.

Множество других интересных возможностей и анонсов ждет Unit в 2019 году.
Спасибо всем, кто следит за проектом, и желаю всего наилучшего.

--
Валентин Бартенев


Подробная информация о списке рассылки nginx-ru