Kernel.ParallelCompiler
Модуль, отвечающий за компиляцию и загрузку файлов параллельно.
Краткое описание
Типы
- line()
Строка. 0 обозначает отсутствие строки.
Функции
- 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