Spec-Zone.ru › Elixir 1.14

Kernel.ParallelCompiler

Модуль, отвечающий за компиляцию и загрузку файлов параллельно.

Краткое описание

Типы

error()
line()

Строка. 0 обозначает отсутствие строки.

location()
warning()

Функции

async(fun)

Запускает задачу для параллельной компиляции.

compile(files, options \\ [])

Компилирует указанные файлы.

compile_to_path(files, path, options \\ [])

Компилирует заданные файлы и записывает полученные BEAM-файлы в указанный путь.

print_warning(arg)

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

require(files, options \\ [])

Загружает указанные файлы параллельно.

Типы

error()Source

@type error() :: {file :: Path.t(), location(), message :: String.t()}

line()Source

@type line() :: non_neg_integer()

Строка. 0 обозначает отсутствие строки.

location()Source

@type location() :: line() | {pos_integer(), column :: non_neg_integer()}

warning()Source

@type warning() :: {file :: Path.t(), location(), message :: String.t()}

Функции

async(fun)Source

Запускает задачу для параллельной компиляции.

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

См. Task.async/1 для получения дополнительной информации. Запущенная задача должна всегда ожидать завершения, вызвав Task.await/1

compile(files, options \\ [])Source

@spec compile([Path.t()], keyword()) ::
  {:ok, [atom()], [warning()]} | {:error, [error()], [warning()]}

Компилирует указанные файлы.

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

Возвращает {:ok, modules, warnings} или {:error, errors, warnings}.

Как ошибки, так и предупреждения представляют собой список троек, содержащих файл, строку и отформатированное сообщение об ошибке/предупреждении.

Параметры

  • :each_file - для каждого скомпилированного файла вызывается обратный вызов, передающий файл

  • :each_long_compilation - для каждого файла, который занимает более заданного времени ожидания (см. параметр :long_compilation_threshold) компиляции, вызывается этот обратный вызов, передающий файл как аргумент

  • :each_module - для каждого скомпилированного модуля вызывается обратный вызов, передающий файл, модуль и байт-код модуля

  • :each_cycle - после компиляции указанных файлов вызывается эта функция, которая должна возвращать следующие значения:

    • {:compile, modules, warnings} - для продолжения компиляции со списком дополнительных модулей для компиляции
    • {:runtime, modules, warnings} - для остановки компиляции и проверки списка модулей, потому что зависимые модули изменились
  • :long_compilation_threshold - время ожидания (в секундах) для проверки модулей, которые занимают слишком много времени на компиляцию. Для каждого файла, который превышает пороговое значение, вызывается обратный вызов :each_long_compilation. Начиная с Elixir v1.11, во внимание берется только время, затраченное на компиляцию самого модуля, время ожидания не учитывается. По умолчанию 10 секунд.

  • :profile - если установлено в значение :time, измеряется время компиляции каждого цикла компиляции и проверяется групповой проход

  • :dest - целевая директория для BEAM-файлов. При использовании compile/2, эта информация используется только для правильной аннотации BEAM-файлов перед их загрузкой в память. Если вы хотите, чтобы файл был действительно записан в dest, используйте compile_to_path/3 вместо этого.

  • :beam_timestamp - отметка времени изменения для всех BEAM-файлов

compile_to_path(files, path, options \\ [])Source

@spec compile_to_path(
  [Path.t()],
  Path.t(),
  keyword()
) :: {:ok, [atom()], [warning()]} | {:error, [error()], [warning()]}

Компилирует заданные файлы и записывает полученные BEAM-файлы в указанный путь.

См. compile/2 для получения дополнительной информации.

print_warning(arg)Source

@spec print_warning(warning()) :: :ok

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

require(files, options \\ [])Source

@spec require([Path.t()], keyword()) ::
  {:ok, [atom()], [warning()]} | {:error, [error()], [warning()]}

Загружает указанные файлы параллельно.

В отличие от компиляции, зависимости между файлами не пытаются автоматически решаться.

Возвращает {:ok, modules, warnings} или {:error, errors, warnings}.

Как ошибки, так и предупреждения представляют собой список троек, содержащих файл, строку и отформатированное сообщение об ошибке/предупреждении.

Параметры

  • :each_file - для каждого скомпилированного файла вызывается обратный вызов, передающий файл

  • :each_module - для каждого скомпилированного модуля вызывается обратный вызов, передающий файл, модуль и байт-код модуля

© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.14.1/Kernel.ParallelCompiler.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API