Новий ролаут 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

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