Вышел Elixir 1.8.0
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
Теперь 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.
Например при таком вызове:
[your code] -- calls --> [supervisor] ---- spawns --> [task]
В $callers будет сохранен идентификатор изначального процесса:
[your code] [supervisor] >> Полный список изменений, улучшений и багфиксов
Версия 1.8 содержит множество изменений на уровне инфраструктуры, времени компиляции и добавляет новые возможности интроспектирования системы.
Главные изменения:
Кастомизированный вывод структур.
Теперь можно использовать протокол Inspect для указания полей которые будут использоваться для форматирования структуры в строку, так что структура
defmodule User do @derive {Inspect, only: [:id, :name, :age]} defstruct [:id, :name, :age, :email, :encrypted_password] end
будет напечатана следующим образом:
#User
Теперь 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.
Например при таком вызове:
[your code] -- calls --> [supervisor] ---- spawns --> [task]
В $callers будет сохранен идентификатор изначального процесса:
[your code] [supervisor] >> Полный список изменений, улучшений и багфиксов
Ещё новости по теме:
18:20