Ergo Framework – это реализация идей, технологий и шаблонов проектирования из мира Erlang на языке программирования Go. Он построен на акторной модели, сетевой прозрачности и наборе готовых компонентов для разработки. Это значительно упрощает создание сложных и распределенных решений, обеспечивая при этом высокий уровень надежности и производительности.
27 февраля вышла новая версия популярного сервера передачи сообщений ejabberd. Ejabberd поддерживает протоколы XMPP и MQTT и написан на языке программирования Erlang.
Основным новшеством этого выпуска является ранее анонсированная поддержка федерации с серверами по протоколу Matrix. Таким образом, пользователи серверов Ejabberd смогут прозрачно обмениваться сообщениями с пользователями Matrix так же, как и с другими пользователями XMPP. Настроить мост Ejabberd-Matrix можно по этому руководству.
Состоялся очередной релиз ErgoFramework, реализующего полный сетевой стек Erlang и его библиотеку OTP на языке Go.
Фреймворк предоставляет разработчику гибкий инструментарий из мира Erlang для создания распределённых решений на языке Go с помощью готовых шаблонов проектирования общего назначения gen.Application, gen.Supervisor и gen.Server. а также специализированных - gen.Stage (distributed pub/sub), gen.Saga (distributed transactions. реализация шаблона проектирования SAGA) и gen.Raft (реализация протокола Raft).
Ergo Framework — фреймворк на основе акторов для создания микросервисов с использованием технологий и шаблонов проектирования Erlang/OTP в Golang
Фреймворк предоставляет разработчику гибкий инструментарий из мира Erlang для создания распределённых решений на языке Go с помощью готовых шаблонов проектирования gen.Application, gen.Supervisor и gen.Server. Поскольку в языке Go отсутствует прямой аналог процесса Erlang, то во фреймворке используются goroutine как основы для gen.Server с обёрткой recover для возможности обработки исключительных ситуаций.
Код проекта распространяется под лицензией MIT.
Ключевые новшества в этом релизе:
сompression;
proxy с поддержкой оконечного (end-to-end) шифрования;
Доступен первый (из трёх) релиз-кандидат грядущей мажорной версии Erlang/OTP 25.
Цель релиза – получить обратную связь от пользователей. Разработчики приветствуют даже отзывы вида: «У меня всё работает». Подробнее о способах оставить отклик и получить файлы OTP 25-rc1 можно прочитать по ссылке под новостью.
Вышел важный релиз платформы для разработки высоконагруженных и отказоустойчивых систем - Erlang/OTP за номером 24.
Выпуск включает в себя более 1400 коммитов, изменивших около полумиллиона строк. Ключевым нововведением является добавление JIT-компилятора «BeamAsm» в виртуальную машину Erlang'а (BEAM). Попытки реализации данного функционала предпринимались на протяжении ~10 лет и наконец увенчались успехом.
Несколько часов назад команда Erlang объявила об очередном релизе языка программирования и всей платформы.
Напомню, что Erlang/OTP предназначен для создания широко масштабируемых систем, работающих в режиме мягкого реального времени с требованиями высокой доступности. Платформа давно и успешно используется в таких сферах, как телекоммуникации, банки, электронная коммерция, телефония и мгновенная передача сообщений.
Elixir — динамически типизированный функциональный язык для написания распределенных и параллельных приложений разработанный как альтернатива Erlang и работающий на Erlang VM.
Версия 1.8 содержит множество изменений на уровне инфраструктуры, времени компиляции и добавляет новые возможности интроспектирования системы.
Главные изменения:
Кастомизированный вывод структур.
Теперь можно использовать протокол Inspect для указания полей, которые будут использоваться для форматирования структуры в строку, так что структура
defmodule User do
@derive {Inspect, only: [:id, :name, :age]}
defstruct [:id, :name, :age, :email, :encrypted_password]
end
будет напечатана следующим образом:
#User<id: 1, name: "Jane", age: 33, ...>
Теперь Elixir поддерживает базу часовых поясов
В языке существуют 4 типа данных для работы со временем: Time, Date, NativeDateTime(время без часового пояса) и DateTime(с часовым поясом). Развитию последнего препятствовало отсутствие поддержки базы часовых поясов.
Теперь появился интерфейс Calendar.TimeZoneDatabase который позволит разработчикам подключать свои собственные базы часовых поясов. Так же это позволяет добавить новые возможности, в DateTime, например DateTime.shift_zone/3.
Также добавлены функции Date.day_of_year/1, Date.quarter_of_year/1, Date.year_of_era/1 and Date.day_of_era/1.
Добавлен ключ $callers для улучшения возможностей инструментария
Одним из самых распространенных способов запуска процессов является модуль Task. При этом Elixir сохраняет идентификатор процесса родителя в словаре запущенного процесса по ключу $ancestors. Это позволяет утилитам анализировать систему и прослеживать происхождение различный событий. Однако этого недостаточно, так как часто дочерний процесс запускается не напрямую, а через посредника, например supervisor. В таком случае хоть ваш код и вызывает запуск Task, однако, родителем будет указан процесс супервизора.
В новой версии Elixir добавлен ключ $callers который указывает на оригинальный процесс, вызвывший запуск Task.
N2O — высокопроизводительный и компактный full-stack релей-сервер приложений на Erlang, форкнутый от фреймворка Nitrogen и вобравший в себя когда-то лучшие его идеи. Четыре года назад N2O избавился от ненужных зависимостей и стал одновременно мощным средством для создания web-приложений. А сегодня, начиная с версии N2O 4.5, протоколы данных переведены на более высокий уровень и становятся лежащими поверх протокола MQTT 5.0, обеспечивающего доставку сообщений в ненадёжных сетях с уровнями QoS 0, 1 и 2.
Крупнейшний в рунете XMPP-сервер jabber.ru сообщил, что планирует активно развиваться в ближайшее время.
В частности уже была добавлена поддержка хранения истории сообщений на стороне сервера, а в будущем планируется обновить сайт и выпустить мобильное приложение.
19 марта вышла новая версия популярного Jabber-сервера ejabberd, написанного на Erlang.
ejabberd — XMPP-сервер, ключевыми характеристиками которого являются:
Кроссплатформенность — ejabberd запускается под Windows, Linux и BSD.
Дружественность к администратору — администратору не нужно ставить отдельный веб-сервер для веб-панели управления, БД или еще что-либо — все это уже реализовано в ejabberd и готово к работе.
Полное соответствие стандарту XMPP, также в ejabberd стараются реализовать большинство расширений протокола XMPP.
N2O разрабатывался как многофункциональный websocket-сервер приложений широкого назначения. Будучи ответвлен изначально от классического сервер-рендер фреймворка Nitrogen, он развился в мощное средство (включающее и поддержку SPA-приложений) обеспечения пула долгоживущих TCP-соединений и доставки кода/данных, выступая в качестве высокоемкостного релея, благодаря надежной и высокоустойчивой платформе Erlang/OTP.
Соединяя в себе все черты full-stack веб-фреймворков — роутинг, шаблоны, Pub/Sub, сессии, хранилище, REST и поддержка собственных протоколов — N2O добавляет совершенно уникальные возможности для создания различных DSL. Вы можете транслировать в JavaScript бизнес-логику, написанную на языках Erlang (Elixir, Erlang, Joxa), генерировать трансформации Erlang-записей в JSON, определять JavaScript-протоколы на языке Erlang и многое другое.
Сейчас N2O развивается в сторону поддержки SVG-клиентов и бинарных протоколов.
Основные изменения в версии 1.8:
полная семантическая верстка HTML5 в DSL;
автоматические реконнекты;
новый сессионный менеджер автогенерируемых логинов;
расширение бинарного протокола для Data-on-Wire;
зависимость от jQuery стала опциональной;
Shen: компилятор JavaScript из Erlang;
улучшенная rebar-совместимая система сборки MAD;
возможность запаковать сайт в виде исполняемого файла, который можно запустить на Windows, Linux и Mac;
улучшенный REST-эндпойнт;
возможность создания SPA-приложений;
новые примеры приложений Skyline (DSL) и Games (SPA).
9 апреля вышел новый мажорный релиз языка программирования и платформы для создания отказоустойчивых, распределенных и высоконагруженных приложений — Erlang/OTP.
Основные изменения:
Erlang/OTP был портирован на ОС реального времени OSE.
Maps — новый тип данных (долгожданные словари с паттерн-матчингом).
Множество улучшений в поддержке ASN.1.
Новая опция {active, N} для TCP, UDP, и SCTP сокетов.
Новый (опциональный) механизм балансировки использования планировщика.
Экспериментальные «dirty» планировщики.
Анонимные функции теперь могут быть именованными (EEP-0037, для удобной рекурсии).
N2O (Nitrogen 2x Optimized) — это усовершенствованная версия знаменитого Erlang веб фреймворка Nitrogen, но работающая полностью на вебсокетах и в несколько раз быстрее оригинального Нитрогена.
Основные изменения:
оптимизация всех слоев;
использование бинарного протокола BERT для контролов;
отложенная доставка JavaScript на клиент;
совместим по стилям с Twitter Bootstrap;
минимальное количество Erlang процессов на запрос;
поддержка шаблонов DTL;
быстрая разработка REST приложений;
XHR Fallback для старых браузеров без поддержки WebSockets;
неблокирующая загрузка кода: раньше загрузка модуля производилась в однопоточном режиме и блокировала работу виртуальной машины Erlang;
HTTP клиент поддерживает HTTPS через прокси;
многочисленные улучшения механизма портов;
компилятор ASN.1 теперь будет автоматически включать необходимые функции в сгенерированный модуль.
Этот релиз содержит некоторые изменения, которые ломают обратную совместимость с более ранними версиями Erlang/OTP. Для получения дополнительной информации обратитесь к подробному списку изменений.