Безопасный язык с проверяемой целочисленной арифметикой, строгими коллекциями и встроенным IFC (контроль информационных потоков). В 0.8 добавлены JSON‑диагностика, стабильные коды ошибок, ускорение «горячих» циклов и inout с записью обратно (stage‑2).
- Лицензия: MIT
- Ядро: без
unsafeво всех крейтах - Платформы: Windows / Linux / macOS
- Подсветка для VS Code: есть (см. docs/VSCode.md)
- Документация: см. раздел «Документы» ниже
Вариант A. Бинарник
- Скачайте
veil.exe(Windows) илиveil(Linux/macOS) из релизов. - Добавьте папку с бинарником в
PATH.
Вариант B. Сборка из исходников
git clone https://github.com/your-org/veil
cd veil
cargo build --release
# Windows: target\release\veil.exe
# Linux/macOS: target/release/veilПодробно: docs/Installation.md
Файл hello.veil:
fn main() { print("Hello, Veil!") }
Запуск:
veil hello.veilREPL:
veil
veil> print(1 + 2 * 3)
7
veil [FILE] [--time] [--diags {human|json}]
veil run <FILE> [--time] [--diags {human|json}]
veil repl
veil fmt <PATH> [--check] # (MVP-заглушка)
--time— печать времени выполнения для FILE.--diags {human|json}— формат диагностики (по умолчаниюhuman).VEIL_DIAGS=json— принудительно включает JSON‑диагностику.VEIL_AUDIT=1— включает аудит (логи JSONL вlogs/dev.jsonl).
Подробнее: docs/CLI.md, docs/Diagnostics.md
fn first_gt(in xs: List(Int), in t: Int) -> Int {
let mut i = 0;
let mut res = -1;
while i < len(xs) {
if xs[i] > t { res = i; break } else { () };
i = i + 1;
}
res
}
fn main() {
print(first_gt(list(1,2,3), 2))
}
- Конвертации:
int,float,to_string,parse_int - Ввод:
read_line,read_int - Строки:
str_trim,str_find,str_split,str_join,len(String)— по графемам - Списки/карты:
list,len,push,range,range2,map_new,map_get/set/has - Сортировки/поиски:
reverse,is_sorted,sort,stable_sort,lower_bound,upper_bound,binary_search - Безопасность:
declassify(value[, reason]),print(...)(печать секретов запрещена типизатором)
Справочник: docs/Stdlib.md
inout— эксклюзивная мутация c записью обратно в исходное связывание (write‑back) при успешном завершении вызова.- Запрещён aliasing в одном вызове (
inout↔inout,inout↔ref/inна одно имя). - Атомарность: при ошибке внутри вызова write‑back не выполняется.
Детали безопасности: docs/Manifest.md, docs/Memory.md
Human:
path:line:col: severity [CODE]: message
JSON:
[
{
"kind": "type",
"severity": "error",
"code": "VEIL_TYPE_INDEX_NOT_INT",
"file": "src/main.veil",
"line": 10,
"col": 5,
"message": "index must be Int, got Float",
"snippet": " xs[1.2]\n ^\n"
}
]Подробнее и контракты JSON: docs/Diagnostics.md
- Counted‑for/for‑in с телами вида
x = x ± kисполняются агрегированно (x += k * times) с проверками переполнений. - LRU‑кэш микро‑планов (настраиваемая ёмкость) + call‑scoped кэш привязанных планов на время вызова.
- Релизная сборка обязательна для бенчей.
Советы и примеры: docs/Performance.md
VEIL_AUDIT=1— лог JSON Lines вlogs/dev.jsonl.- События:
Print,Declassify.
Подробнее: docs/Audit.md
- VS Code: подсветка синтаксиса (TextMate), опционально — мини‑тема иконок для
.veil. - Установка локального .vsix: см. docs/VSCode.md
- Установка: docs/Installation.md
- CLI: docs/CLI.md
- Стандартная библиотека: docs/Stdlib.md
- Язык: docs/LanguageReference.md
- Диагностика (human/JSON): docs/Diagnostics.md
- Модель безопасности (IFC): docs/Manifest.md
- Модель памяти: docs/Memory.md
- Производительность: docs/Performance.md
- Аудит: docs/Audit.md
- Примеры (showcase): docs/Showcase.md
- VS Code: docs/VSCode.md
- Алгоритмы: docs/Algos.md
- CHANGELOG: CHANGELOG.md
MIT © 2025 Artem Fedorchuk