Kernel.ParallelCompiler
Модуль, отвечающий за компиляцию и загрузку файлов параллельно.
Краткое описание
Функции
- async(fun)
Запускает задачу для параллельной компиляции.
- compile(files, options \\ [])
Компилирует заданные файлы.
- require(files, options \\ [])
Загружает заданные файлы параллельно.
Функции
async(fun)
Запускает задачу для параллельной компиляции.
Если у вас есть файл, который должен компилировать другие модули параллельно, запущенным процессам нужно знать среду компиляции. Эта функция позволяет разработчику создать задачу, которая знает об этих средах.
См. Task.async/1 для получения дополнительной информации. Запущенная задача должна всегда ожидать завершения, вызывая Task.await/1
compile(files, options \\ [])
Компилирует заданные файлы.
Эти файлы компилируются параллельно и могут автоматически определять зависимости между ними. Как только зависимость найдена, текущий файл перестаёт компилироваться до тех пор, пока зависимость не будет разрешена.
Возвращает {:ok, modules, warnings} или {:error, errors, warnings}.
Ошибки и предупреждения представляют собой список кортежей из трёх элементов: файл, строка и отформатированное сообщение об ошибке/предупреждении.
Параметры
:each_file- для каждого скомпилированного файла вызывает обратный вызов, передавая файл:each_long_compilation- для каждого файла, который занимает более заданного времени ожидания (см. параметр:long_compilation_threshold) на компиляцию, вызывает обратный вызов, передавая файл в качестве аргумента:each_module- для каждого скомпилированного модуля вызывает обратный вызов, передавая файл, модуль и байт-код модуля-
:each_cycle- после компиляции заданных файлов вызывает эту функцию, которая должна вернуть следующие значения:-
{:compile, modules}- продолжить компиляцию со списком дополнительных модулей для компиляции -
{:runtime, modules}- остановить компиляцию и проверить список модулей, поскольку зависящие модули изменились
-
:long_compilation_threshold- время ожидания (в секундах) после вызова обратного вызова:each_long_compilation; по умолчанию15:profile- если установлено в:time, измеряет время компиляции каждого цикла компиляции и группирует проверку прохождения:dest- целевая директория для файлов BEAM. При использованииcompile/2, эта информация используется только для правильной аннотации файлов BEAM перед загрузкой в память. Если вы хотите, чтобы файл был фактически записан вdest, используйтеcompile_to_path/3вместо этого.:beam_timestamp- метка времени изменения для всех файлов BEAM
compile_to_path(files, path, options \\ [])
require(files, options \\ [])
Загружает заданные файлы параллельно.
В отличие от компиляции, попытки автоматического решения зависимостей между файлами не предпринимаются.
Возвращает {: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.10.4/Kernel.ParallelCompiler.html