В цифровую эпоху приватность и надёжность хранения данных важны как никогда.

Сетевое разделение и недоверенные посредники ломают взаимодействие: санкции, ковровые блокировки, атаки на инфраструктуру, глухомань.

Владельцы серверов владеют данными: могут их свободно читать, сливать, менять, удалять.

Наблюдается кризис доверия к софту и запрос на импортозамещение.

Техно-гильдия Giper.Dev приняла этот вызов, и вот что у нас получилось:

Свободные стандарты

MarkedText — разметка текста

Tree — сам себе AST

HARP — β графовый REST API

UCF — компактный юникод

VaryPack — компактные структуры

Свободные реализации

MAM — экосистема кода

mol — экосистема модулей

HyOO — экосистема $mol приложений

Giper Baza — β реактивная платформа

Giper Web — α экосистема Web4-сервисов

Далее мы пробежимся по эволюционному пути Гипер технологий, подсветим типичные проблемы на каждом уровне, расскажем про свои оригинальные подходы к их решению, и пофантазируем о светлом будущем, как его видим мы.

Видео запись

Это — слайды с 22 конференции разработчиков свободных программ. Можете глянуть видео запись:

Или читать далее, как статью...

Дмитрий Карловский

Программист, дизайнер, мечтатель

30 лет в разработке

... из них 20 в вебе, и 10 в оупенсорсе

Библиотеки, Фреймворки, Экосистемы

... Cтатьи, Видео, Митапы, Сообщества

Яндекс, Газпром, Дойче Банк, 1С

... Giper.Dev

MAM управляет Абстрактными Модулями

Своя модульная система, основанная на соглашениях, форсирующих лучшие практики.

Абстрактный Модуль — это просто директория с модулями на разных языках.

/acme/taxi/map/

map.ts — программная логика

map.css — каскадные стили

map.glsl — шейдеры

map.view.tree — композиция компонент

MAM: Разрешение циклических зависимостей

Зависимости определяются не импортами, а по фактическому использованию имён в коде.

// /my/store/local/local.ts
class $my_store_local extends $my_store {}

// /my/store/store.ts
class $my_store extends $my_object {
	static default() {
		return new $my_store_local
	}
}

Сборщик учитывает приоритет зависимостей, чтобы разрезать циклы в самых слабых местах, что гарантирует корректный порядок файлов.

/my/object
/my/store
/my/store/local

MAM: Соответствие имени и расположения

$acme_taxi_map => /acme/taxi/map

/acme/taxi/map => $acme_taxi_map

Глобально уникальное имя

Понятная прикладная семантика

Явная иерархия владения кодом

Имя в ментальной модели

Токен в нейросети

Стабильная привязка стилей

Семантичная привязка аналитики

Тэг в сообщении коммита

Ключевое слово в поиске

MAM: Множественные слои сборки на основе тэгов

Теги в менах файлов как теги слоёв:

web.js =

/mol/store/local/local.web.ts
/acme/taxi/app/app.ts

web.test.js =

/mol/test/test.ts
/mol/store/store.test.ts
/mol/store/local/local.test.ts

node.js =

/mol/store/local/local.node.ts
/acme/taxi/app/app.ts

node.test.js = node.js +

/mol/test/test.ts
/mol/store/store.test.ts
/mol/store/local/local.test.ts

Фрактальные тесты страхуют друг друга и быстро исполняются с разными уровнями изоляции.

Фрактальное тестирование

MAM: VerLess не ломает обратную совместимость

Есть только одна версия — актуальная, а если хочется сломать API, то создаётся новый модуль, что позволяет им сосуществовать.

Было старое API

/my/schema 1000 SLOC

Новое API у старого кода

/my/schema 1000 SLOC

/my/schema2 100 SLOC

Старое API у нового кода

/my/schema 100 SLOC

/my/schema2 1000 SLOC

Это даёт безболезненные автоматизированные обновления, плавные миграции и концентрацию усилий всего сообщества на актуальном коде, вместо поддержки кучи устаревших версий в разных комбинациях.

MAM: Фрактальная организация репозиториев

Мы берём всё лучшее из монорепо и полирепо миров: плавная фрактальная декомпозиция репозиториев без изменения API.

В корне только неймспейсы вендоров:

/

./.meta.tree
./giper => giper.git
./acme => acme.git

Вендор у себя полностью контролирует организацию своих репозиториев. Типичный подход — неймспейсы проектов:

/acme

./acme.meta.tree
./taxi => taxi.git
./foto => foto.git

Если какой-то проект разрастается, то легко выделить подпроект в отдельный репозиторий, не меняя имён и не ломая обратную совместимость. Сборщик сам выкачивает репозитории по мере необходимости.

/acme/taxi

./map
./pay

/acme/taxi

./taxi.meta.tree
./map => map.git
./pay

Подробнее о MAM

MAM: сборка фронтенда без боли

Tree — сам себе AST

Tree — простой формат представления абстрактных синтаксических деревьев в читаемой форме, как основа для различных прикладных языков.

XML

JSON

YAML

TOML

Tree

Размер в читаемом виде

195%

140%

125%

110%

100%

Сложность синтаксиса

90

30

210

90

10

Однозначность синтаксиса

✅

✅

❌

✅

✅

Удобочитаемость

❌

❌

✅

✅

✅

Не нужно экранирование

❌

❌

❌

❌

✅

Точные координаты узлов

❌

❌

❌

❌

✅

Поточная обработка

❌

❌

✅

✅

✅

Расширяемая модель данных

✅

❌

✅

❌

✅

Широкая распространённость

✅

✅

✅

❌

❌

Его невозможно плохо отформатировать и при этом он куда компактней альтернатив.

Разные Tree языки на базе единого формата

Из XML позаимствовано разделение на единый формат и множество языков, что позволяет легко создавать свои языки, используя единую инфраструктуру.

! doctype html
	html
		head
			meta @ charset \utf-8
			script @ src \web.js
		body
			h1 \Hello & Bye
			p \Forget < and >
server port 8000
client
	name \Client1
	address \192.168.1.100
client
	name \Client2
	address \192.168.1.101

Грамматика Tree на grammar.tree

Вот все 10 паттернов грамматики формата на языке формальных грамматик:

tree .optional .list_of line

line .sequence
	.optional indent
	.optional nodes
	new_line

nodes .sequence
	.optional .list_of name
		.with_delimiter space
	.optional data
	.with_delimiter space

name .list_of .byte
	.except special
data .sequence
	data_prefix
	.optional .list_of .byte
		.except new_line

special .any_of
	new_line
	data_prefix
	indent
	space

new_line .byte \0A
indent .list_of .byte \09
data_prefix .byte \5C
space .list_of .byte \20

Tree код - это буквально список строк из опциональных отступов табами, опционального списка имён разделённых пробелами и опциональными сырыми данными без экранирования до конца строки, предварёнными бэкслешем.

Подробнее о Tree

Tree — единый AST чтобы править всеми

Что не так с сорсмапами и как с ними не связываться?

На диаграмме вы видите, как мы из 2 файлов сгенерировали 1 путём 3 трансформаций, которые что-то вырезали, что-то добавили, а что-то перемешали. Но привязка к исходным кодам никуда не потерялась, так что в отладчике будут отображаться исходные коды, а не сгенерированные.

$mol — реактивный конструктор

Фактически фреймворк $mol — это просто множество готовых компактных модулей, где каждый делает лишь одну вещь, но делает её хорошо и легко стыкуется с остальными. В энциклопедии можно найти много статей об инновациях в его архитектуре.

mol энциклопедия

$mol_view — гипер настраиваемые виджеты

Свои компоненты создаются комбинацией и глубокой кастомизацией существующих: настраивается как визуал, так и поведение, и даже компоновка.

Вот весь код компонента профиля пользователя, который берёт имя из модельки и рисует форму его редактирования и вывода актуального результата:

$acme_profile $mol_page
	User $my_user
		name? => name?
	sub /
		<= Edit $mol_string
			value? <=> name?
		<= View $mol_view
			sub / <= name

А вот весь код приложения, которое рендерит профиль, подменяя модельку и выводя в нужно месте дополнительные данные.

$acme_taxi_app $mol_book2
	pages /
		<= Profile $acme_profile
			User <= User $my_taxi_user
			sub /
				^
				<= Role 

Возможно всё это благодаря тому, что каждое имя тут — это не просто свойство класса, а точка расширения, которую можно кастомизировать. Этакие автоматические слоты на максималках.

$mol: Гарантированная отзывчивость

Другая уникальная фича — возможность вывалить кучу данных в сложной вёрстке и не париться над оптимизациями, так как всё будет летать благодаря...

Автоматическая виртуализация рендеринга

То, что не попадает в видимую область не то что рендериться не будет, а даже и загружаться. Возможно всё это благодаря...

$mol_wire — эффективная реактивная система

Реактивная система как связующие артерии даёт эффективную динамическую коммуникацию.

Проектируем идеальную систему реактивности

В отличие от других реактивных систем, наша понимает не только зависимости по данным, но и учитывает владение.

В этом примере, мы переключились с поста, к которому у нас есть доступ, на пост, к которому доступа нет, и вместо того, чтобы пытаться обновить отображение, получив ошибки, $mol_wire сперва поймёт, что отображение нужно вообще уничтожить.

Наша реактивная система сама контролирует время жизни объектов: на лету лениво создаёт зависимости и автоматически их уничтожает разрушая ссылки на них. Это делает GC не нужным, и это интересный вектор исследования для компилируемых языков без GC.

VaryPack — компактные произвольные структуры

Бинарная компактная упаковка произвольных структур данных без ломающих совместимость расширений для дедупликация значений. Базово поддерживает лишь юниты, числа, ссылки, строки, массивы и кортежи, а остальные типы уже представляются через них.

VaryPack: прямая и обратная совместимость

Любой объект представляется кортежем, где вначале идёт шейп (массив имён полей), а затем все значения.

[
	Coord( 12, 34 ),
	Coord( 56, 78 ),
]

А так как у одинаковых структур одинаковые шейпы, то они легко дедуплицируются, заменяясь на ссылки.

[
	( [ "x", "y" ], 12, 34 ),
	( #2, 56, 78 ),
]

А даже если для какого-то шейпа не реализована отдельная структура, то используется обобщённый объект.

[
	{ x: 12, y: 34 },
	{ x: 56, y: 78 },
]

Таким образом разные реализации могут взаимодействовать друг с другом, не ломая ни прямую, ни обратную совместимости.

UCF: компактная кодировка юникода

Текст хранится до 2 крат эффективней благодаря UCF-кодировке, что особенно актуально при упаковке небольших значений перед шифрацией.

Язык

UCF

UTF-8

UTF-16

Английский

?

?

??

Русский

?

??

??

Китайский

??

???

??

Эмодзи

??

????

?? ??

Подробнее про VaryPack

Проектируем как синьор: универсальная бинаризация

Ну всё, пора закапывать UTF-8

Giper Baza — децентрализованное хранилище

Наконец, самое пока что амбициозное — децентрализованная СУБД, написанная на $mol, с использованием VaryPack.

? Граф данных на графе узлов

? Каждый узел — мастер

? Согласие без согласования

? Сквозное шифрование

✍ Тотальные цифровые подписи

? Максимальная доступность

? Синхронизация на лету

Giper Baza: Строгая доступность

Гарантии видимости в распределённых хранилищах

Гипер База ориентированна на самые строгие гарантии без компромиссов с доступностью при разделении сети — Strict Available. Это позволяет ей работать даже полностью оффлайн, и даже прямо в браузере без доступа к серверу.

Giper Baza: Консенсус через беспорядочную конвергенцию

При восстановлении соединения внесённые локально изменения начинают в фоне синхронизироваться в реальном времени с бесконфликтным слиянием правок. Возможно это благодаря хранению всех данных в виде конвергентных структур.

Классификация подходов обеспечения согласия между параллельными агентами

Giper Baza: Графовая модель данных

Модель данных - граф с эфемерными узлами и материальными рёбрами, сгруппированными в так называемые ленды — атомарные кластеры графа, с независимым набором прав доступа.

Так же у нас есть графовый REST API на базе HARP позволяющий одной короткой строчкой получать нужные срезы данных.

Giper Baza: Реактивное состояние

Ключевая особенность архитектуры микровервисов на Гипер Базе — работа через реактивное локальное состояние, вместо коммуникации через события, сообщения, команды, запросы, ответы.

Краевой случай

Реактивное состояние

Целевые сообщения

Подписался после изменения

? Актуальное значение

? Потерял данные

Упал при обработке

? Поднялся и продолжаешь

? Событие потеряно

Повторил обработку

? Идемпотентный результат

? Дублирование эффектов

Реакция после серии изменений

? Актуальное значение

? Обработка старых событий

Обработка в разном порядке

? Единый результат

? Разные эффекты

Нет прямой связи

? Дойдёт потом / через других

? Ошибка доставки

В традиционной событийной модели приходится лепить кучу костылей с материализацией событий, чтобы достигнуть идемпотентности, актуальности, персистентности и наблюдаемости.

Ну ас же микросервисам не нужна прямая коммуникация — они реагируют на изменение одних состояний и сами меняют другие. А взаимодействие микросервисов происходит неявно, через синхронизацию Гипер базы, даже если она идёт опосредованно, асинхронно и через не доверенные промежуточные узлы.

Giper Baza: Нулевое доверие

Нулевое доверие между узлами, дающая независимость от изолированности периметра. А так как у нас нет доверенных узлов, то сеть работает по принципу децентрализованной хореографии вместо централизованной оркестрации.

Сквозное шифрование и цифровые подписи всех данных, что позволяет даже восстанавливать данные на сервере с клиентских устройств.

На диаграмме пример рабочего процесса с хакатона по безопасному управлению ТЭЦ. Тут админ приносит на флешке пакет обновления от вендора в виде кусочка Гипер Базы. Оно доходит до контроллера, который проверяет лицензию, и накатывает обновление. В данном случае лицензия истекла.

А так как поведение системы не зависит от истории сообщений, а зависит лишь от текущего состояния базы, то админ всегда понимает, что происходит в системе.

Baza Pack — универсальный срез базы

И протокол синхронизации, и модуль хранения в файлах, используют единый формат пакетов. Он же может использоваться и в качестве универсального формата документов, которые можно мёржить обычным склеиванием, без потери правок.

Giper Baza: Атомарность через Тик-Ток Зеркала

Для атомарной записи данных мы используем оригинальный алгоритм, гарантирующий мгновенное восстановление базы после перезагрузки.

Свойство

TTM

REDO WAL

UNDO WAL

COW

LSS

FSync / Write

? 1

? 1

? 2

? 2+

? 1

Total Write Amp

? 2

? 2

? 2

? ×Path

?

Over Size

? 0

? +News

? 0

? 0

? +History

Fragmentation

? Write

? Write

? Write

? Read/Write

? Read

Regular Tasks

? —

? Apply

? —

? —

? GC

Recovery

? Just

? Fast

? Fast

? Slow

? Fast

GiperBaza: Области применения

? Коллаборативные системы

? Гео распределённые системы

? Универсальный формат документов

? Система контроля версий файлов

? Криптовалюты — нужен консенсус

? Соревновательные игры — нужен оракул

За исключением криптовалют (где важна лениаризуемость) и соревновательных игр (где нужен оракул), применять это можно практически везде. Вот несколько ярких примеров:

OnLine Transaction Processing: коммуникация микросервисов через общее состояние.

Client-Server API: двусторонняя синхронизация состояния в реальном времени.

Open Documents: универсальный формат документов с бесконфликтным слиянием.

Decentralized Version Control System: бесконфликтное слияние версий файлов.

Giper Baza: Статус и планы

Успехи

✅ Реализации на TS для браузера/ноды

✅ Автоматический интерфейс с формами

✅ Общедоступные сервера синхронизации

✅ Несколько коммерческих внедрений

✅ Сообщество гипер разработчиков

Гипер База | Гипер Веб

Телеграм | Ютуб

Личка | Донаты

Ряд технологий, доказавших своё превосходство на деле.

Сообщество разработчиков, уверенных, что за этим всем будущее.

Множество внедрений в коммерческих продуктах.

Прототипы некоммерческих продуктов, которые уже можно пощупать.

Планы

? Giper Web — экосистема Web4-сервисов

? Giper Drive — контроль версий файлов

? Giper Space — коллаборативные сервисы

? Giper Fleet — хореография серверов

? Giper Cartel — экосистема организаций

✨ Giper Like — цифровая экономика без денег

✨ Jack.Tree — язык мета-программирования

✨ Giper OS — реактивная операционная система

✨ Giper Net — меш сеть из IoT-девайсов

Гипер Веб — экосистема веб-сервисов на Гипер Базе, закрывающих все цифровые потребности человечества: от безопасного мессенджера, до конструктора магазинов.

Гипер Драйв — система реального времени для контроля версий и доставки файлов.

Гипер Спейс — децентрализованная соцсеть для совместного творчества, общения, документооборта и тд.

Гипер Флот — управление контейнерами и серверами через хореографию на Гипер Базе.

Гипер Картель — экосистема организаций, занимающихся обучением Гипер Технологиям и внедрением их в различных продуктах и сервисах.

Гипер Лайк — личные микрофонды и потребительские сообщества.

Джек — язык мета-программирования, компилирующийся в компактные WASM бинарники для публикации в Гипер Вебе.

Гипер Ось — реактивная операционная система для приложений из Гипер Базы.

Гипер Сеть — меш сеть, интернет вещей, умный дом и тп, но на Гипер Базе.

Двигаемся мы хоть и медленно, но верно, присоединяйтесь и вы, чтобы светлое будущее поскорее наступило!


Актуальный оригинал на $hyoo_page.

Комментарии (3)


  1. maisvendoo
    09.10.2026 06:47

    Еще когда на OSSDEVCONF слушал доклад, возникла мысль про UCF, но вопрос не задал (но его всё же задали, по-моему). А зачем вводить новую кодировку? Чем плох нынешний юникод?


    1. nin-jin Автор
      09.10.2026 06:47

      Русский текст в ней занимает в 2 раза больше места. Например, в 16 байт влезает до 14 зашифрованных букв, что покрывает почти все русские слова. При UTF-8 кодировке влезло бы только 6, а значит для большей части слов пришлось бы резервировать уже 32 байта.


  1. cry_san
    09.10.2026 06:47

    Есть смутное сомнение, что с приходом нейросетей, стали курить что-то более забористое.
    Надеюсь, никогда с этим плодом воображения работать не заставят.