LINUX.ORG.RU

Erlang/OTP 28.0

 ,


0

4

Встречайте очередную мажорную версию Erlang/OTP!

Erlang/OTP — программный каркас (фреймворк), содержащий набор библиотек и шаблонов проектирования для построения масштабируемых распределённых приложений на языке программирования Erlang.

Новые возможности языка:

  • Появилась возможность отправлять процессам приоритетные сообщения (см. EEP 76).
  • Улучшение под названием «zip генераторы» позволяет запускать несколько списковых генераторов (comprehensions) параллельно: [A+B || A <- [1,2,3] && B <- [4,5,6]] сформирует список: [5,7,9].
  • Списковые генераторы теперь могут быть строгими и при несовпадении шаблона кидать исключение, вместо игнорирования аргумента:
1> [X ||{ok, X} <- [{ok, 1}, error, {ok, 3}]].
[1,3]
2> [X ||{ok, X} <:- [{ok, 1}, error, {ok, 3}]].
** exception error: no match of right hand side value error
  • Теперь для чисел с плавающей точкой можно использовать любое основание (см. EEP 75).

Улучшения компилятора и JIT:

  • Ранее размер атома был ограничен 255 байтами, это означало, что атом с идентификатором состоящим только из эмодзи, мог быть не длинее 63 символов. Теперь длина идентификатора ограничена 255 символами, а не байтами.
  • Компилятор может подсказать как поправить некоторые типы ошибок. Например, при попытке использовать неопределённую переменную A, при определённой A0, может быть напечатано сообщение: 'A' is unbound, did you mean 'A0'?.
  • Опция warn_deprecated_catch включает предупреждения при использовании устаревших выражений catch в форме catch Expr вместо современного trycatchend.
  • Некоторые встроенные функции с побочными эффектами (например, binary_to_atom/1) оптимизируются в блоках trycatch таким же образом, как guard BIF’ы, что повышает производительность.
  • Анализ псевдонимов компилятором стал быстрее и менее консервативным, позволяя применять оптимизации записей и бинарных структур в большем количестве случаев.
  • Для некоторых аргументов оптимизирована работа maps:put/3.

Изменения в ERTS:

  • Добавлена функция trace:system/3. Она обладает интерфейсом, аналогичным erlang:system_monitor/2, но дополнительно поддерживает трассировку сессий.
  • Функция os:set_signal/2 теперь поддерживает установку обработчиков сигналов SIGWINCH, SIGCONT и SIGINFO.
  • Две новые встроенные функции (erlang:processes_iterator/0 и erlang:process_next/1) позволяют эффективно обходить таблицу процессов, улучшая масштабируемость по сравнению с функцией erlang:processes/0.

Интерфейс командной строки и терминал:

  • Режим запуска erl -noshell обновлен двумя подрежимами: raw и cooked. Подрежим cooked соответствует старому поведению, а режим raw может испльзоваться для обхода поддержки редактирования строк в терминале. В режиме raw нажатия считываются по мере их поступления, без ожидания нажатия «Enter». Кроме того, режим raw отключает отображение введенных символов на экране;
  • Терминальная оболочка теперь выводит подсказку о способе прерывания долго выполняющихся команд, если команда выполняется дольше пяти секунд.

STDLIB:

  • В модуле binary появилась функция join(Binaries, Separator) позволяющая объединять список двочиных строк.
  • По умолчанию наборы (sets), создаваемые модулем sets, теперь представляются в виде ассоциативных таблиц (maps).
  • Модуль регулярных выражений re перешел на использование библиотеки PCRE2 взамен устаревшей PCRE.
  • Появился модуль zstd, поддерживающий сжатие в формате Zstandard.

Dialyzer:

SSL:

  • Если ваша программа использует протокол TLS 1.3, то переход на версию Erlang/OTP 28 обеспечит ускорение от 15% до 25%.

Интеграция с редактором Emacs:

  • Команда indent-region в редакторе Emacs теперь лучше обрабатывает многострочные строки.

Подробнее обо всех изменениях и возможных проблемах совместимости смотрите в ссылке под новостью или файле README.

>>> Запись в блоге: "Erlang/OTP 28 Highlights"

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 4)

вроде бы хорошая новость, радоваться бы, но реальность такова, что стагнирует ерланг, причем сильно и весьма давно. сетевой стек бы им перелопатить хорошенько. туллинг ерланговский (ребар, лсп и вот это вот все) - обнять и плакать. им бы оставить только Бим машину, а остальное эликсирщикам отдать. Хоть больше пользы будет. А это бедолаги из эликсира вынуждены тащить ерланговские кандалы.

Появилась возможность отправлять процессам приоритетные сообщения

интересно, почему им потребовалось 30 лет, чтобы понять важность этой фичи. мне в ерго пришлось ограничивать себя до 3ей версии ибо сильно был завязан на ерланговские особенности. но когда начал рабоатать над 3ей версией, эта фича была реализована сразу же, в числе первых

ergo ★★★
()
Последнее исправление: ergo (всего исправлений: 3)
Ответ на: комментарий от cdtemp

Не бросил, прост за Erlang/Elixir слежу с интересом, да и давненько не писал новости на ЛОР :3

perl5_guy ★★★★★
() автор топика

Erlang/OTP — программный каркас (фреймворк), содержащий набор библиотек и шаблонов проектирования для построения масштабируемых распределённых приложений на языке программирования Erlang.

И в чём особенность Эрланга?

  1. Изменять общие данные только в одном месте программы, обеспечив обмен сообщениями для этого, можно же почти в любом языке программирования.

  2. Обновляться без перезагрузки Насколько это необходимо-то на деле? - Взял да перезапустил свою программу раз в месяц ночью.

  3. Или если выбрали уже ограниченный от людских ошибок язык, то и ругать программистов за их глупости в исходном коде уже не надо будет? В этом дело?

  4. Эрланг же тормозной по производительности? Или это уже в прошлом?

Enthusiast ★★★
()
Ответ на: комментарий от Enthusiast

Я процитирую сам себя:

И в 2016 году у WhatsApp была команда из 50 (!) инженеров при такой статистике дневной:
* больше 1 миллиарда пользователей
* 42 миллиарда сообщений в день
* 1.6 миллиарда картинок в день
* 250 миллионов видеозвонков в день
Erlang в состоянии обеспечить надежность девять девяток: 99.9999999%

Например, еще в 2010 году Эриксон сообщал о a high-performance highly-reliable ATM switch с простоем половины секунды (!) за 20 (!) лет работы. Не одна железка, а 14 узлов было, обеспечивающих сервис, но в целом это просто невозможно ни на чем другом сделать было ни тогда, ни сейчас. Семь девяток почти недостижимы, а они смогли девять :)

А вот для сравнения, специально смотрел отчеты Авито, где работает 10000 (!) человек вот с такой вот несопоставимой нагрузкой:

В марте прошлого года число активных объявлений составляло 82 млн, таким образом, за год оно выросло почти в два раза. Предыдущий рекорд в 100 млн активных объявлений на Авито был установлен в мае 2022 года. При этом за 1,5 года количество новых ежедневно размещаемых объявлений выросло почти в 3 раза и впервые превысило 2 млн новых объявлений в день.

По данным SimilarWeb на 1 апреля 2023 года, число визитов на Авито составляет 366,7 млн в месяц — по этому показателю платформа лидирует среди классифайдов в мире. При этом в марте 2023 года активная аудитория Авито тоже установила новый рекорд — 61 млн человек в месяц.

Так что «особенности» у Erlang есть и достичь подобного не на чем больше.

Hiddenman
()
Ответ на: комментарий от Hiddenman

Особенный язык для особенных людей \0/

perl5_guy ★★★★★
() автор топика

Теперь для чисел с плавающей точкой можно использовать любое основание

Литералы чисел с плавающей точкой можно задавать в любом основании, сами числа с плавающей точкой там так и остаются в двоичном представлении (IEEEEEEEEEE(E) 754 с некоторыми оговорками).

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 1)
Ответ на: комментарий от Enthusiast

Он в своей задаче (долгоживущие масштабируемые приложения) хорош. Очень хорош.

От других языков его отличает то, что его изобретали как раз для это целевой задачи.

В отличие от …

от Питона, который изобретали чтоб учить школьников; от Сишки - чтоб не писать на ассемблере быстрый код; от Гошки - чтоб студенты-интерны легко посчитали на гугл-кластере сколько раз встречается слово гугл в Интернете; от Руби - как более лучшая версия перла; от Раста - для компайл-тайм гарбадж коллектора; от PHP - чтоб писать код прямо в HTML-е; от Джавы - чтоб создавать кроссплатформенные приложение, когда все устали от тонны #ifdef-ов в C/C++; от Джаваскрипта - супер язык, который изобрели, чтоб, когда ты наводишь курсор на кнопку, она стала зеленой

На всех этих языках ты можешь писать долгоживущие приложения. Но вопреки задумке и первоначальным задачам авторов этих языков.

А на Erlang/Elixir ты пишешь ровно то, для чего он и задумывался. И это видно в куче мелочей … и не мелочей.

Например, начиная с того, что на эрланге не обязательно писать stateless SQL прослойку чтоб потом легко масштабироваться. Как на любом из языков выше. Ты можешь писать stateful приложение без внешней DB и прекрасно потом распараллелиться на десяток серверов.

Как тебе такое гошник, сишник, джавист, джангист и так далее.

dredd_test
()
Ответ на: комментарий от dredd_test

Всё хорошо, но язык уж очень особенный, и писать на нём больно. Но elixir конечно получше. Говорю как кукаретик, меня в вацапы не берут естественно.

bread
()
Ответ на: комментарий от dredd_test

ты чутка пупапешь

Python ( в отличии от abc который таки да ) это щель Амёбы - крч это bash который смог

ps. переписать чтоли склейку на gleam %?

qulinxao3 ★☆
()
Последнее исправление: qulinxao3 (всего исправлений: 1)
Ответ на: комментарий от dredd_test

Как тебе такое гошник, сишник, джавист, джангист и так далее

исключительность в 9вятках - миф. в современных реалиях и на других ЯПах тоже достигается. я уже не говорю про сегфолты Бим-машины, кои вполне реальны и осязаемы.

Он в своей задаче (долгоживущие масштабируемые приложения) хорош. Очень хорош

см п.1.

другой вопрос - перформанс. он медленный, ибо VM. он очень медленный по сети и даже разрабы ерланга используют грпц, ибо сетевой стек у них застрял в нулевых. в разработке - мягко говоря, дно, ибо ребар невероятно глючен, а лсп до хоть какого-то внятного уровня сильно не дотягивает (базовые вещи делает, но он очень примитивный). форматтер - его нет (от ватсапщиков единственный и очень спорный по стилю)

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

ergo ★★★
()
Ответ на: комментарий от ergo

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

т.е. RabbitMQ тоже медленный?

seiken ★★★★★
()
Ответ на: комментарий от ergo

фанбои с их хотрелоадом сдуваются на первых же неудобных вопросах ибо это хоть и классная фича

И тем не менее, я сделаю счетчик на эрланге, который прекрасно будет выдавать на запросы «1, 2, 3, 4, …» в кластере из пары десятков машин используя только самые базовые функции языка. Без мам, пап и дедлоков.

А ты и дальше будешь строить невероятно сложные в поддержке конструкции из редисов, натсов, кафок и прочего на своем расте, гошке, чтоб хоть как-то компенсировать неспособность своего языка решать такие элементарные задачи.

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

dredd_test
()
Ответ на: комментарий от Enthusiast

Обновляться без перезагрузки Насколько это необходимо-то на деле? - Взял да перезапустил свою программу раз в месяц ночью.

Erlang написан Эриксоном для своих телекоммуникационных систем, где есть гос требования по доступности - экстренные службы (полиция, пожарка, скорая) и всякие военные должны иметь связь вне зависимости от времени суток и твоих хотелок. При этом новый код замещает старый только для новых объектов/сущностей. Старые коннекты и прочее не ломаются.

У себя на локалхосте можешь даже в понедельник в 9 утра обновить весь код с дропом текущего стейта и коннекшенов, никто не заметит.

skyman ★★★★
()
Ответ на: комментарий от ergo

а лсп до хоть какого-то внятного уровня сильно не дотягивает

Особенно смешно в свете видеоролика недавнего, где эликсирщик сказал какой-то ИИшке "добавь на страничку, которую я щас открыл в браузере, табличку с тарифами для платного аккаунта. И через минуты полторы браузер сам обновился (в очередной раз) и показал обновленную страничку с новой красивой табличкой.

«LSP не дотягивает до внятного уровня…» не позорься уже со своими знаниями из нулевых…

dredd_test
()

Ностальгичная штука - как раз вспоминал когда на современную инкарнацию этих идей в https://temporal.io/ наткнулся.

zabbal ★★★★★
()
Ответ на: комментарий от dredd_test

«LSP не дотягивает до внятного уровня…» не позорься уже со своими знаниями из нулевых…

так уж получилось, знания не из нулевых, прям не далее чем несколько месяцев назад :), пока не ушел из банка, где пилили ядро для трейдинговой платформы. возможно, и ребар и лсп справляются на твоем «хеловорлде», но на взрослых проектах длиной в 15 лет испытываешь всю беспомощьность с ними. так что не знаю, дотягиваю ли своими знаниями до твоих, но моя боль не из прочтения каких-то статей в интернете, а на основе личного пользования. если от лсп не очень больно (хотя у него нередко «фляга закипала» и приходилось целиком его рестартовать), но от ребара с его багами, прям очень горело. особенно часто ловил типа «у меня тут внутренняя ошибка, велкам ту репорт».

ergo ★★★
()
Ответ на: комментарий от ergo

Какая-то прохладная история. Эрлангист с опытом не будет рассказывать про «бесполезность хотрелоада».

Может хотрелоад в продакшине и сомнительная история.

Но вот в разработке возможность в секунду перекомпилировать и перезагрузить подправленный модуль без рестарта всего приложения очень сильно ускоряет процесс.

Достаточно пострадать на гошке с его пересборкой и рестартом контейнера на каждый чих, чтоб влюбиться в хотрелоад.

Такой кайф еще у фронтендщиков есть, начиная с вебпака, если правильно следил за развитием их систем разработки и сборки. И больше что-то ни у кого не видел

dredd_test
()
Ответ на: комментарий от Hiddenman

Например, еще в 2010 году Эриксон сообщал о a high-performance highly-reliable ATM switch с простоем половины секунды (!) за 20 (!) лет работы. Не одна железка, а 14 узлов было, обеспечивающих сервис, но в целом это просто невозможно ни на чем другом сделать было ни тогда, ни сейчас.

Так у «Эриксона» используется собственная электронная аппаратура в их телефонных станциях, а не магазинные серверы общего назначения. Специализированная аппаратура, изначально созданная под решаемую задачу, всегда будет работать устойчивее. Тут дело может быть не только в языке программирования.

Enthusiast ★★★
()
Ответ на: комментарий от dredd_test

Эрлангист с опытом не будет рассказывать про «бесполезность хотрелоада».

нубы бегают с мантрой о волшебстве хот релоада, о GC per Process, про чудеса супервижена. и только эрлангист с реальным опытом тебе скажет, что хот релоад в проде - лютый ад (начиная с написания процесса миграции стейта), что бенефит от GC per Process в ерланге ниже плинтуса ибо перформанс на порядки ниже в сравнении с одним GC на всея память в гошке. и про супервижн - как нубская вера в летиткраш приводит к «простите, я не могу отдебажить багу из прода ибо сложно понять что произошло в логе из 5млн строк ошибок» (практически цитата одного разраба из команды в банке).

Но вот в разработке возможность в секунду перекомпилировать и перезагрузить подправленный модуль без рестарта

о том и речь, локально для разработки - без вопросов, удобно. на этом плюсы заканчиваются и начинаются лютые риски.

Достаточно пострадать на гошке с его пересборкой и рестартом контейнера на каждый чих

это где такие галеры? за такой процесс разработки я бы уволил вашего engineering manager (или кто там вам его ставит). air в гошке - за глаза и работает моментально.

ergo ★★★
()

Забавно, только вчера тыкал Wings3D - а он внезапно оказался на эрланге. Хотя казалось бы, каким боком…

unsigned ★★★★
()
Ответ на: комментарий от ergo

это где такие галеры? за такой процесс разработки я бы уволил вашего engineering manager (или кто там вам его ставит). air в гошке - за глаза и работает моментально.

Гошники, любители докеров, микросервисов и кубернетисов, наизобретали. Но я там уже не работаю (c)

И air выглядит слишком простым для полета мысли любителей современного devops-а. Там митинги на несколько команд собирают чтоб обсудить сколько контейнеров и в каком порядке должно участвовать в сборке, чтоб все кошерно было. А у тебя ‘air за глаза’.

dredd_test
()
Ответ на: комментарий от dredd_test

по всей видимости ты совсем далек от разработки, раз смешиваешь все в кучу - и деплой, и разработку, и докеры тебе не в радость. от компоуза докеров тебе наверное совсем плохо :), в то время как это «мастхэв» для разработки в наше время.

ergo ★★★
()
Ответ на: комментарий от Enthusiast

можно же почти в любом языке программирования

Настоящий программист может написать эрланговскую программу на любом языке программирования!

BydymTydym ★★
()
Ответ на: комментарий от ergo

Вот щас бы в 2025-ом рассказывать про мастхев-докер.

Уже успел и повосторгаться, и побыть в команде идеологом и внедренцем контейнеров для разработки, и написать пачку компоуз файлов, и разочароваться потом, и вынести весь докер нахрен, поменяв его на подман и/или LXC.

раз смешиваешь все в кучу - и деплой, и разработку

Ну это не я. Это гошники. Там действительно навертели, наверное тоже от большой любви к докеру.

dredd_test
()
Ответ на: комментарий от dredd_test

И больше что-то ни у кого не видел

Lisp и Smalltalk еще с 80х такое умеют.

treflip
()
Ответ на: комментарий от dredd_test

Уже успел и повосторгаться, и побыть в команде идеологом и внедренцем контейнеров для разработки, и написать пачку компоуз файлов, и разочароваться потом

а что не так с докером?

PS: как тебе подман? стабилен?

PPS: на lxc же восход солнца вручную делать надо или там уже что-то вменяемое появилось?

ergo ★★★
()
Ответ на: комментарий от ergo

а что не так с докером?

PS: как тебе подман? стабилен?

Ну не хочу оффтопик разводить. Подман стабилен и правильнее сделан. LXC тоже норм, но использую не так часто, в основном вместо виртуалок.

dredd_test
()
Ответ на: комментарий от BydymTydym

Настоящий программист может написать эрланговскую программу на любом языке программирования!

Среду разработки и отладки для программ на Эрланге предоставляет только «Эриксон»? Мне неохота «прилипать» к единственному поставщику денег для развития отладочного ПО для Эрланга. Если «Эриксону» поплохеет из-за заградительных пошлин на ввоз своего оборудования связи в США, то сообщество вряд ли потянет полноценное развитие языка без денег на это. В этом отношении Скала выглядит экономически устойчивее. Да и работодателей побольше на ней. Впрочем, это совершенно не означает технического превосходства Скалы над Эрлангом.

Эрланг побеждает Скалу за счет своей отказоустойчивой виртуальной машины? А «тбанковцы» выбрали Скалу из-за близости с Джавой на единой с ней виртуальной машине?

Enthusiast ★★★
()
Ответ на: комментарий от Enthusiast

для скалы шире число потенциальных программистов т.е. чисто для банка больше гарантий что не придётся искать специалистов на вес золота али учить их на ускоренных 7 летних! курсах

qulinxao3 ★☆
()
Ответ на: комментарий от bread

Злые вы... Детей вот пугаете... Эрлангировать им не даёте...

Somebody ★★★
()
Последнее исправление: Somebody (всего исправлений: 1)
Ответ на: комментарий от qulinxao3

Разбежавишсь спрыгну со скалы
Вот я был, и вот меня не стало
И когда об этом вдруг узнаешь ты
Найдёшь нового среди широкого числа потенциальных программистов.

perl5_guy ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.