15.1 comptime
comptime fnвыполняется только при компиляции;comptime { … }— блок, вычисляемый при компиляции;const— его результат.- comptime-код детерминирован: эффекты
io,net,db,time,randзапрещены. Исключения —comptime.readFile(path),comptime.embedDir(path)иcomptime.template(path)(путь внутри пакета; файл учитывается в инкрементальной сборке). comptime.embedDir("dir")— списокList<(str, str, str, bytes, i64)>: для каждого файла каталога (путь ниже каталога с разделителем/, тип содержимого по расширению из фиксированной таблицы,ETag— кавычечная хеш-строка содержимого (FNV-1a 64), сжатое gzip содержимое, размер до сжатия). Файлы отсортированы по пути (воспроизводимость), скрытые файлы и каталоги (.имя) пропускаются. Каталог ищется относительно исходного файла, затем от ближайшего каталога сoxl.toml; отсутствующий каталог или нечитаемый файл —comptime-error(D-8054; D-7883).
Определяется реализацией. Файловые операции comptime (D-8054; D-7883). Из исключений этого раздела эта реализация содержит только
comptime.embedDir;comptime.readFileиcomptime.templateне реализованы (необязательные). Учёт встроенных файлов в инкрементальной сборке не выполняется: у драйвера пока нет кэша сборки (изменение файла требует повторной сборки пакета).
- Типы — значения comptime типа
type:comptime fn sizeOf(T: type) -> usize. inline for x in comptimeIterable { … }разворачивается при компиляции.
Связанные диагностики
См. также
Исходник: docs/spec/oxl-standard.md