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