Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Veil 0.8

Безопасный язык с проверяемой целочисленной арифметикой, строгими коллекциями и встроенным 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.veil

REPL:

veil
veil> print(1 + 2 * 3)
7

CLI

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 (stage‑2)

  • inout — эксклюзивная мутация c записью обратно в исходное связывание (write‑back) при успешном завершении вызова.
  • Запрещён aliasing в одном вызове (inoutinout, inoutref/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

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages