Spec-Zone.ru › Elixir 1.10

Kernel.ParallelCompiler

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

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

Функции

async(fun)

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

compile(files, options \\ [])

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

compile_to_path(files, path, 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

Spec-Zone.ru

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