Новий ролаут N2O

Все хотів вести блог прямо в гітхабі, і ось я тут. Привіт, Твіттер!

Один раз в рік я випускаю обновлені версії N2O. Цього року це — більш матурніша MQTT бібліотека, яка разом із версією веб-сокету отримала тег 5.10, остання все ще залишається в окремому репозиторії; NITRO вже змержилася і сумісна з обома версіями, хто знає, можливо, в наступних версіях, або вже в новому році прийде гранд мерж MQTT і N2O репозиторіїв (залишилося пару файлів перенести зі старого репозиторія і запустити старий веб-сокетний приклад на новому дереві)! У зв'язку з дедалі більшою кількістю деприкейтів у логах, було прийнято рішення залочити всі чужі ліби та зробити щось типу SYNRC сховища репозиторіїв. Цього місяця до нього ввійшли та залочилися:

https://github.com/voxoz/cowboy — 1.0.4
https://github.com/voxoz/cowlib — 1.0.0
https://github.com/voxoz/ranch — 1.0.0
https://github.com/voxoz/erlydtl — 0.8
https://github.com/voxoz/emqttc — 0.8
https://github.com/voxoz/gen_logger — 1.2
https://github.com/voxoz/lager — 3.2.2
https://github.com/synrc/emq_dashboard — 2.1.1
https://github.com/synrc/emqttd — 2.1.2
https://github.com/voxoz/esockd — 4.1.1
https://github.com/voxoz/mochiweb — 4.2.1
https://github.com/voxoz/gproc — 0.8
https://github.com/voxoz/syn — 1.5

Водночас з цим обновився головний хедлайнер сезону, бібліотека voxoz/mq, яка включає старий EMQ 2.1.2 і його дашборд. Крім цього викотилася жовтнева хвиля екосистеми N2O, а саме (від старих до нових):

https://github.com/synrc/n2o — 5.10
https://github.com/synrc/kvs — 5.10
https://github.com/synrc/mad — 4.10
https://github.com/synrc/fs — 4.10
https://github.com/synrc/active — 4.10
https://github.com/synrc/nitro — 3.10
https://github.com/synrc/bpe — 3.10
https://github.com/synrc/sh — 2.10
https://github.com/synrc/review — 1.10
https://github.com/synrc/bert — 1.10
https://github.com/synrc/mqtt — 5.10 (N2O-MQTT)

Цілком можливо, що час, у стилі NIH-синдрому, писати протокол свого репозиторія пакетів разом з бінарною дистриб'юцією пакетів самого ерлангу (давно просять). Адже, навіть я до таких глибин ще не опускався, якщо npm-вівці можуть, а я чим гірший!

Десь мінорні фікси, десь ворнінги, всі репозиторії включені у тревісі і можна бачити їх стрим: https://travis-ci.org/voxoz, https://travis-ci.org/synrc,там же можна глянути всі логи всіх білдів. Як видно, багато репозиторіїв не були включеними, тому в найближчих планах засвітити все зеленим, це передбачає зборку ребаром та медом.

Чому критикують mad, я не знаю, наприклад на тревісі rebar на 19.3 gen_logger

==> gen_logger (compile) ERROR: OTP release 20.0.4 or later is required, you have: 19 ERROR: compile failed while processing /home/travis/build/synrc/review/deps/gen_logger: rebar_abort

The command "rebar get-deps compile" exited with 1.

не збирає, а з mad все працює:

$ cat .travis.yml language: erlang otp_release: - 19.3 script: - "curl -fsSL https://raw.github.com/synrc/mad/master/mad > mad" - "chmod +x mad" - "./mad dep com"
The command "./mad dep com" exited with 0. Done. Your build exited with 0.

mad почав підтримувати зборку кубічним тайпчекером, з'явився модуль mad_cubical, але через рік-два, хто знає, можливо, тут буде вже свій AST трансформатор на Erlang.

Загалом ця робота зайняла 170 коммітів у 30 репозиторіях і рівно 1 добу без перерви. Сюди входять усі багфігси разом із видаленням файлів та склеюванням деяких репозиторіїв, все, починаючи від імпорту, закінчуючи ченджлогами та релізами. Я заморочився, але добився що в білдлогах на 19.1, 19.2, 19.3, 20.0.4, 21.0.4, 21.1.1 немає жодного ворнінгу! Думав, взагалі по-чесному переписати esockd з gen_fsm на gen_statem але виявилося, що завдання одним днем не обмежиться, тому

{erl_opts,[nowarn_deprecated_function]}.

врятувала ситуацію. Але депрекейтеди валяться в основному на останніх ерлангах, пропонують як покроковий турторіал, що на що переписувати, я пройшов цей квест для esockd, трохи але запустити успішно з першого разу не вдалося, а це ж головна частина тракту, а якщо ліки? тому я не став.

Планую ще зробити багато гарного! Думаю зайнятися дизайном N2O, можливо на кубику протоколи N2O поки що напишу.

Максим