LINUX.ORG.RU

Erlang/OTP 25-rc1

 ,


0

1

Доступен первый (из трёх) релиз-кандидат грядущей мажорной версии Erlang/OTP 25.

Цель релиза – получить обратную связь от пользователей. Разработчики приветствуют даже отзывы вида: «У меня всё работает». Подробнее о способах оставить отклик и получить файлы OTP 25-rc1 можно прочитать по ссылке под новостью.

Ключевые изменения

ERTS и JIT

  • JIT теперь доступна и на 64-разрядных ARM процессорах.
  • JIT научилась осуществлять типозависимые оптимизации на основе информации из BEAM-файлов.
  • Улучшена поддержка JIT для внешних инструментов вроде perf и gdb, позволяющая показывать номера строк и оригинальный Erlang-код, когда удаётся найти таковой.

ERTS, stdlib, kernel

  • Новая настройка для ETS таблиц: {write_concurrency, auto}. Эта настройка заставляет таблицы автоматически изменять количество блокировок в зависимости от текущего уровня конкурентности. Настройка {decentralized_counters, true} включается по умолчанию, если {write_concurrency, auto} активирована. Замеры производительности можно посмотреть по ссылке.

  • BEAM-файлы собранные под OTP 21 и раньше не совместимы с новой версией. Данное ограничение необходимо для возможности задействовать свежие оптимизации в полном объёме.

  • Очередь сигналов процесса с флагом message_queue_data=off_heap оптимизирована для обеспечения параллельного приёма сообщений от множества процессов (см. замеры производительности).

  • Появилась возможность делать пути в файлах проекта относительными. Таким образом можно менять положение системного каталога Erlang без необходимости пересборки приложений.

  • Для функций :erlang:float_to_list/2 и erlang:float_to_binary/2 доступен параметр short. Он позволяет создать кратчайшее строковое представление числа, которое можно будет сконвертировать обратно в исходное.

  • В модуле uri_string доступны две новые функции quote/1 и unqoute/1. Они заменяют признанные устаревшими http_uri:encode и http_uri:decode.

  • Модуль peer заменил модуль slave, который признан устаревшим и будет удалён в OTP 27.

  • Функция обратного вызова format_status/2 для модулей gen_server, gen_statem и gen_event признана нежелательной в пользу format_status/1. Новая функция добавляет возможность ограничивать и изменять множества разных вещей, а не только состояние.

  • Модуль timer был улучшен и оптимизирован, что сделало сервер таймера более устойчивым к перегрузкам. Функция timer:sleep/1 теперь принимает произвольное большое целое.

Компилятор

  • Реализована конструкция maybe ... end из EPP-49. Она позволяет упростить код который раньше приходилось писать с множеством глубоко вложенных условий. Для включения нового функционала необходимо передать компилятору настройку {enable_feature, maybe_expr}.

  • Исключение {badrecord, ExpectedRecordTag} выбрасываемое при неудачной попытке сопоставления записи (record) с образцом или попытке её обновления, было заменено на {badrecord, ActualValue}, где ActualValue - значение которое было передано вместо ожидаемого.

  • Доступен новый атрибут -nifs(), сигнализирующий компилятору и загрузчику какие функции могут быть переопределены с помощью NIF, функцией erlang:load_nif/2.

  • Переработаны сообщения об ошибках конструирования бинарных значений.

Модуль Crypto

  • Добавлена функция crypto:hash_equals/2 способная осуществить сравнение двух дайджестов за константное время.

Разное

  • Новое HOWTO для разработчиков описывает как собирать и тестировать Erlang/OTP-приложения в процессе исправления ошибок или добавления нового функционала.

  • Теперь для каждого нового Pull-запроса на Github’е будет осуществляться автоматическое тестирование, что позволит раньше обнаруживать ошибки привносимые предлагаемыми доработками.

Подробный список изменений можно посмотреть здесь.

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

★★★★★

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

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

Да и без диалайзера там бы все логи были засраны ошибками - бери да чини.

Я на 100% уверен, что эта ошибка отлавливается тестами.

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

Да и без диалайзера там бы все логи были засраны ошибками - бери да чини.

Логи были засраны по самое не могу. Десятки гигабайт логов в гзипе. Нужное потонуло в общем потоке.

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

Я на 100% уверен, что эта ошибка отлавливается тестами.

Вот не скажу за тесты, вообще уже не помню, что там с ними было.

Помню, что там был один товарищ, который любил вместо нормального деплоя просто подсовывать в продакшен бинарник, скомпилированный на его машине. Особенно доставило один раз, когда он подложил бинарник не туда, и следующий деплой этот бинарник не переписал. Соответственно, деплой прошёл — но работает всё ещё старый код.

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

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

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

Без глубокого знания otp он бесполезен.

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

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

А я каждый раз вспоминаю Хочу простой кроссплатформенный message passing, посоветуй (комментарий)

если ориентироваться на дурачков, то можно стать как они )

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

Проще, но это ложная простота. Как с SQL. Нужно 10-12 лет опыта для нормальной работы.

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

Дня хватит, чтобы почитать и понять.

Управлять современным грузовиком можно научиться за час. Чтобы работать - 10 лет.

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

хз как на грузовик.
на автобус 6 мес. учатся.

ЗЫ:
нашел в инете
«С» — до 6 месяцев;
«D» — до 7,5 месяцев;

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

Управлять современным грузовиком можно научиться за час. Чтобы работать - 10 лет.

если тебе нужно для этого 10 лет у меня для тебя плохие новости )

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

Дело же не в скорости. Для скорости есть Rust, C++, C и т.д. Основные преимущества:

  • горячее обновление кода на проде,
  • устойчивость к высоким нагрузкам, автоматический перезапуск, супервизоры и т.п.
  • дешевые потоки
  • декларативность/реактивность
o_--
()
Ответ на: комментарий от Sin2x

OTP все равно надо насколько я знаю

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

А если ты думаешь, что сразу сможешь ездить по России зимой на фуре, то либо ты дурак, либо ничего не знаешь про Россию.

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

Управлять современным грузовиком можно научиться за час. Чтобы работать - 10 лет.

то либо ты дурак, либо ничего не знаешь про Россию.

отвечу твоими же словами - если тебе нужно 10 лет, чтобы управлять грузовиком или 10 лет, чтобы начать программировать, то ты дурак (без «либо»). смирись )

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

Я про профессиональные навыки. А так ездить конечно умеют все поголовно. «За девять месяцев 2021 года в России произошло 96 314 ДТП, в которых погибли 10 516 человек.»

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

Что значит НАЧАТЬ ПРОГРАММИРОВАТЬ? Никого не интересует когда ты впервые отсортировал пузырьком написанные транслитом имена своих одноклассников. Чтоб начать писать нормальный промышленный код как раз нужно лет десять. Сначала ты заинтересовался кудахтерными технологиями. Научился переустанавливать windows, изучил Linux. Потом поступил в универ, по верхам прошелся по разным вещам. Затем года 1.5 учишься уже на практике и попутно изучаешь всякие сопутствующие технологии вечерами. И только тогда ты можешь поехать на Perl-конференцию в Махачкалу, сказать: «Я программист» и не получить в щи

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

А откуда внезапно появилась вводная про вход в профессию?😄 Речь зашла про ерланг и отп в частности. Анонимус заявил, что нужно 10 лет на примере грузовика. Дальше уже обыкновенное словоблудие пошло )

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

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

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

Зря жалеешь, из всей упоротой функциональщины единственный стоящий язык — OCaml. Ага, именно потому что он не чисто функциональный.

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

Ага, записал: Erlang, Scala, Clojure - нестоящие. В самом деле, на них ведь пишут софт, фу такими быть. То ли дело дохлый OCaml.

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

Акторы не универсальны

ошибаешься.
товарищ Хьюит, создатель этой модели, математически доказал что машина Тьюринга является частным случаем Модели Акторов.

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

Как будто в других языках по-другому?!

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