kbool: классы в духе Free Pascal, модули и библиотека классов для bash
KEKSOV 18 минут назад Краткое содержание статьи kbool: классы в духе Free Pascal, модули и библиотека классов для bash Средний 9 мин 392 *nix * Delphi * Linux * Скрипт на bash начинается с двадцати строк. Через пару лет...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Значимый прорыв формирует отрасль ИИ: KEKSOV 18 минут назад Краткое содержание статьи kbool: классы в духе Free Pascal, модули и библиотека классов для bash Средний 9 мин 392 *nix * Delphi * Linux * Скрипт на bash начинается с двадцати строк. Через пару лет в нём две тысячи строк, три десятка функций, глобальные переменные с префиксами, чтобы они не столкнулись, source "$(dirname "$0 /lib/…" в начале каждого файла и $(…) вокруг каждого вызова, потому что функция «возвращает» значение через stdout. Переписать всё на Python можно не всегда: скрипт живёт там, где гарантированно есть только bash и базовые утилиты, или его поддерживают люди, которые пишут на bash.
Вторая половина проблемы — переносимость. sed -i, stat -c, date -d, grep -Z, \b в регулярном выражении, nc -l ведут себя по-разному на Ubuntu, на Alpine с busybox, на FreeBSD, на macOS и в Git-bash на Windows. Скрипт, который год работал на одной машине, ломается на соседней.
Технические детали
kbool — попытка дать таким скриптам привычки Free Pascal: модули, которые подключаются по имени через uses, классы, объявленные как class … end, и библиотеку классов со знакомыми именами: TStringList, TDictionary, TIniFile, TRegEx. Вышла первая версия, 0. Проект разработан с помощью ИИ, и об этом ниже есть отдельный раздел: кто что решал, как проверялся код и какие у этого цифры.
Репозиторий: лицензия MIT. Что внутриkbool — это пять git-репозиториев: корневой и четыре подмодуля. kkore — системные модули: загрузчик kk.
uses, конфигурация, обработчик ошибок. kklass — классы: поля, свойства с геттерами и сеттерами, конструкторы и деструкторы, наследование с inherited, статические члены, секции видимости. kcl — библиотека классов, 29 модулей: порты классов FPC и Delphi (TList, TStringList, TDictionary, TIniFile, TPath, TRegEx, DateUtils, Math …), обёртки над утилитами командной строки (TGrep, TSed, TAwk, TFind, THead, TTail) и небольшой HTTP-сервер.
Отраслевые последствия
ktests — тестовый фреймворк и «гейт»: одна команда, которая прогоняет все наборы тестов. POSIX sh и старые bash не поддерживаются: kbool. sh проверяет версию первым делом и отказывается работать с кодом выхода 2 и одной строкой в stderr, а не падает на середине загрузки.
КлассКласс объявляется в стиле паскалевского interface: сначала структура, потом тела методов как обычные функции bash, потом build:source /path/to/kbool/kbool. uses kklass_pascal exit # Pascal DSL; ядро kklass он загрузит сам class TCounter public var Name var Count constructor Create proc Add func Report end TCounter. Create() { Name="$1"; Count=0; } TCounter.
Add() { Count=$(( Count + ${1:-1} )); } TCounter. Report() { RESULT="$Name: $Count"; } build TCounter TCounter. new basket apples basket.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.



