Языки программирования

Gleam 1.10 улучшает компилятор, кодоген JavaScript

Gleam 1.10 улучшает компилятор, кодоген JavaScript

Вышел новый выпуск Gleam 1.10, языка программирования с безопасностью типов для виртуальной машины Erlang и среды исполнения JavaScript. Обновление содержит улучшения компилятора, направленные на хранение большего количества информации и улучшение исчерпывающего анализа. Также отмечено более быстрое выполнение JavaScript-кода.

Gleam 1.10 был представлен 14 апреля; он доступен на GitHub.

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

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

В Gleam 1.10 также улучшен анализ операторов. Компилятор Gleam является отказоустойчивым; это означает, что при обнаружении ошибки в коде компилятор не останавливается немедленно, а показывает ошибку программисту и делает все возможное, чтобы восстановить и продолжить анализ оставшегося кода. Улучшен анализ бинарных операторов, таких как + и ==, теперь даже при наличии ошибок будут проверяться обе стороны. Это позволяет улучшить информацию о языковом сервере и улучшить сообщения об ошибках.

Gleam 1.10 вышел вслед за выпуском Gleam 1.9 от 8 марта, в котором были предложены такие улучшения, как более мощные битовые массивы на JavaScript. Другие новые возможности Gleam 1.10:

  • Генерация кода JavaScript была улучшена, чтобы код выполнялся быстрее. Там, где это возможно, компилятор реструктурирует код, чтобы больше не использовать «немедленно вызываемые выражения функций» JavaScript, что устраняет накладные расходы на выделение и последующий вызов этих функций.
  • Благодаря улучшениям в битовых массивах разработчики теперь могут не использовать опцию :float при использовании литералов с плавающей запятой, так как намерение недвусмысленно.
  • Новая команда gleam export package-information записывает информацию о пакете Gleam в файл в формате JSON.
  • Языковой сервер теперь может предложить кодовое действие для замены ... в шаблоне на все поля, которые он использовал для игнорирования.
  • Для обеспечения безопасности и соответствия нормативным требованиям образы контейнеров Gleam теперь содержат информацию о происхождении программных материалов (SBoM) и уровней цепочки поставок для программных артефактов (SLSA). Это поможет при проведении аудита безопасности и соблюдения требований к программному обеспечению, написанному с помощью Gleam. Это часть усилий, направленных на подтверждение готовности к производству и содействие внедрению Gleam на предприятиях.

Читайте также