Новый ролаут N2O для 2020 года

Давайте уже после праздников!

Итак, как вы знаете, теперь Сохацкий работает на МВД Украины, а именно в ДП "Інфотех". Как обычно, команда была сформирована благодаря моей скандальной репутации и безжалостному хедхантингу. В результате, за 3 месяца у нас написан прототип национальной системы документооборота, и как следствие, новый ролаут N2O стека.

Мы используем две системы релизов: первая — это система релизов HEX.PM, куда мы релизим ежедневно; и вторая — это система релизов Github, фактически просто система тегов, здесь мы релизим раз в пол года, и это главным образом влияет на rebar3 и mad сборки, которые используют rebar.config, mix сборки же всегда используют только релизы HEX. Каждый ролаут — это фриз всех совместимых между собой версий, который мы делаем обычно редко, поэтому рассматривайте этот как праздник.

Это первый ролаут, где для каждой либы: 1) прописан mix.exs файл с полной поддержкой Elixir (мы пишем на Elixir) и публикацией на HEX, 2) прописаны Erlang type spec, 3) билд проверяется dialyzer, 4) тригерится два CI (Github Action и Travis CI), 5) создана папка man с XHTML документацией которая может быть конвертирована в ROFF с помощью mad.

N2O

Новая версия N2O стала еще легче, она теперь не содержит ни одной части NITRO имплементации Nitrogen Web Framework. Имплементация NITRO протокола вместе с JavaScript companion library переехала, как и полагается, в NITRO. Теперь N2O занимает 700 строк эрланга и 500 строк джаваскрипта. Пофиксан критический баг в кодировании UTF-8 бинарей в BERT.JS.

KVS

KVS был полностью переписан (если кто помнит экспериментальную версию KVX), и был обратно забекпортирован в мастер. Был значительно изменён код работы с курсорами (Ирина Костюк), а из баз теперь поддерживаются только MNESIA и ROCKSDB. Также KVS теперь получил свою админку (пока не зарелижена в нем самом, чтобы не тащить зависимость от NITRO) и имеет возможность быть выставленым в мир через REST библиотеку Дмитрия Бушмелева.

BPE

Главная новость BPE — это поддержка BPMN 2.0 семантики (паралельные процесы, гейтвеи), поддержка BPMN 2.0 XML формата и анонс понятия группы процессов (для супервижена). Благодарности и деньги на кофе можете присылать на мой патреон, я передам их главному автору этих нововведений Александру Наумову.

NITRO

Больше всего нововведений получила библиотека NITRO, так как наш проект во многом зависит от специализированых контрольных элементов. Если грамотно провести анализ требований, почти любое приложение можно закрыть двумя-тремя сложными абстрактными контролами. Такой контрольный элемент, хедлайнер этих нововведений, — это comboLookup.

Он позволяет указывать адрес фида в базе данных из которого вы хотите получать итемы по автокомплишину. Вы просто опреляете функцию стриминга на стороне сервера (которая знает рекорды хранящиеся в фиде) и всё. Автор контрольного элемента --- Руслан Мороз. Его расширенная (мультиселект) векторная версия использует Sortable.js и адаптирована Александром Наумовым. Следующие версии будут иметь более матурный внутрениий протокол querySource.

FORM

Библиотека форм обзавелась публичным API, поддержкой новых контрольных элементов NITRO, поддержкой векторных и скалярных полей, NITRO биндингами (когда nitro:q возвращает сразу Erlang термы) и фиксами старых контролов (calendar и т.п). Формы форсировал Александр Пальчиковский.

https://github.com/synrc/sample — 1.1
https://github.com/synrc/rpc — 3.1
https://github.com/synrc/exe — 4.1
https://github.com/synrc/nitro — 5.1
https://github.com/synrc/form — 5.1
https://github.com/synrc/bpe — 5.1
https://github.com/synrc/fs — 6.1
https://github.com/synrc/active — 6.1
https://github.com/synrc/n2o — 7.1
https://github.com/synrc/kvs — 7.1
https://github.com/synrc/mad — 7.1

Ваш Эрланг отдел ДП "Інфотех".