LINUX.ORG.RU

Релиз Erlang/OTP 24.0

 ,


1

1

Вышел важный релиз платформы для разработки высоконагруженных и отказоустойчивых систем - Erlang/OTP за номером 24.

Выпуск включает в себя более 1400 коммитов, изменивших около полумиллиона строк. Ключевым нововведением является добавление JIT-компилятора «BeamAsm» в виртуальную машину Erlang'а (BEAM). Попытки реализации данного функционала предпринимались на протяжении ~10 лет и наконец увенчались успехом.

Историю добавления JIT в BEAM можно прочитать в блоге.

Комментарии разработчиков и пользователей о производительности:

Цитата из описания pull-запроса с JIT-функционалом:

Насколько BeamAsm быстрей интерпретатора? Данный показатель в значительной степени зависит от того чем занимается ваше приложение. Например, число estone'ов, в модуле для оценки производительности, возросло на 50%, т.е. теперь, за тоже время выполняется в половину больший объём работы. Разбег в ускорении отдельных тестов варьируется от 170% (сопоставление с образцом) до близкого к нулю (обработка больших сообщений). Большой прирост наблюдается в нагрузке с интенсивными вычислениями, а код с акцентом на обмен сообщениями - практически не ускорился.

Если запустить тесты разборки JSON из комплекта Poison или Jason, наблюдается ускорение от 30 до 130 процентов (в среднем ~70%). В некоторых бенчмарках BeamAsm даже быстрее чем jiffy - json-парсер написанный на Си.

Хосе Валим, создатель языка программирования Elixir, также работающего поверх виртуальной машины BEAM, успел оценить ускорение полученное с добавлением JIT-компиляции:

Одним из многих положительных эффектов JIT оказалось сокращение времени сборки сервера hexpm (включая зависимости) с 111 секунд до 77, что на 31% быстрее. :)

Из подводных камней можно выделить:

  • Увеличение потребления памяти на 10% в сравнении с интерпретацией без JIT-компиляции.
  • JIT работает только для x86/x86-64 архитектур, но поддержка ARM64 запланирована.

Замечания по сборке Erlang/OTP 24 из исходников:

Для поддержки JIT-компиляции, сборка должна осуществляться компилятором с поддержкой C++17. Проверить работоспособность можно с помощью вызова: erlang:system_info(emu_flavor). В качестве альтернативы может быть исползован официальный докер-образ.

Другие изменения:

  • Выполнение EEP 54 (Erlang Enhancement Process), призванного реализовать вывод более человекочитаемых сообщений об ошибках во встроенных функциях. Этот механизм так же может быть использован в библиотеках или приложениях. Пример из твиттера Хосе Валима.
  • Интерфейсы графических компонентов, например Observer'а, были переписаны на wxWidgets 3.

Поздравляю сообщество разработчиков на BEAM-языках с значительным релизом, призываю обновить Erlang/OTP, для получения бесплатного прироста производительности!

>>> Подробности

★★★★

Проверено: Shaman007 ()

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

еще как возможна пошаговая отладка, но мне это за 10 лет работы с эрлангом всего пару раз потребовалось.

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

что такое грандиозное вы делаете что вам ребар чинить надо ?

какое-то поверхностное знакомство с ребаром ))

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

какое-то поверхностное знакомство с эрлангом.

да, я с ним поверхностно знаком уже лет 7 и также поверхностно его использую как основной яп в работе лет 5. ну, также поверхностно реализовал ergo (думаю, найдешь, если захочешь)

ergo ()

а код с акцентом на обмен сообщениями - практически не ускорился.

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

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

хотя с другой строны передача сообщений и так быстра.

как показал опыт, там еще есть куда расти. причем очень сильно. в 5 раз точно можно ускориться.

ergo ()

А про эликсирчик есть что сказать, ребятушки? Какая у вас там самая годная книга? БИБИЛЯ вроде кэмелбука? Про erlang тож расскажите. Прожекты интересные?

P.S. По Elixir'у пару лет взад прям всплеск был интереса, а сейчас народ подостыл. Что скажете на этот счёт? Я, например, наблюдаю много достаточно интересных вакансий, правда для начинающих нет почти.

perl5_guy ★★★★ ()

Пожалуй, самый эзотерический из известных мне языков, имеющих хоть какое-то практическое применение. Вроде бы надо сделать еще одно усилие и разобраться, что же в нем такого есть и как этим пользоваться, но… лень %)

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

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

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

Я сначала смотрю чтоб язык был годный. Elixir мне нравится оч. Далее смотрю экосистему - нормальная она у Elixir’а + наследие от Erlang’а. Rust сначала с энтузиазмом воспринял, а потом разочаровался и экосистема у него тухлая ИМХО. Все про этот язык говорят, но ничего толкового не пишут. Go мне не нравится совершенно. На Elixir есть приличное количество интересных вакансий. С удивлением обнаружил позицию Elixir-разработчика в своём родном регионе. Можно заканчивать скитания и возвращаться взад :3

Короч, в любом случае буду изучать Elixir, а там посмотрим.

P.S. Но вообще сравнивать Elixir и Rust это лол.

P.P.S. Спасибо за ответ

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

Но вообще сравнивать Elixir и Rust это лол.

а в чем проблема сравнивать два инструмента, которыми можно решить одну и ту же задачу?

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

Вроде бы надо сделать еще одно усилие и разобраться, что же в нем такого есть и как этим пользоваться, но… лень %)

И это правильно!

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