Компилятор и runtime цветовых контрактов для приложений и дизайн-систем. Вы объявляете источники цвета, связи, подложки и ограничения. Lab Colors проверяет граф и вычисляет допустимые результаты при изменении наблюдаемых условий. Приложение задаёт смысл токенов и применяет полученные цвета.
Для JavaScript и TypeScript используйте пакет @labpics/colors с ядром на
Rust/WASM. Установка и первый пример
показывают путь от объявления графа до чтения цвета: compileProgramWire →
updateObserved → outputs.
Для оценки из командной строки запустите пример из корня checkout с Rust версии, указанной в Cargo.toml, или новее:
cargo run --quiet --locked -p labcolors-evaluate-cli -- \
crates/labcolors-evaluate-cli/examples/declared-point.jsonРезультат — JSON-отчёт с оценкой объявленной sRGB8-точки и LCEN-сертификатом. Руководство CLI описывает вход, ожидаемый результат и коды отказов.
- Приложение владеет именами токенов, состояниями компонентов, дизайном и отображением. Для ядра идентификаторы токенов непрозрачны.
- Core владеет цветовой математикой, графом зависимостей и проверкой ограничений. ProgramWire v1 задаёт бинарный формат графа; недопустимые входы возвращают явные ошибки.
- WASM и CLI передают запросы ядру. Отдельный labcolors-transport разбирает, сериализует и инспектирует LCEN-envelope без вычисления цвета.
Проверка относится к объявленной модели и переданным наблюдениям. Она не подтверждает фактическую отрисовку браузера или человеческое восприятие; DOM и CSS остаются у приложения.
Проверка Rust workspace из корня репозитория:
cargo test --workspace --lockedТребования к инструментам и команды JS/WASM-пакета указаны в packages/colors/package.json. GitHub Actions показывает результаты CI.
У labcolors-core по умолчанию ноль рантайм-зависимостей. Необязательная
возможность ext09-extractor подключает зависимости из
манифеста Core. Проверить конфигурацию по
умолчанию:
cargo tree -p labcolors-core --edges=no-devИсходный код — MIT. Для встроенных данных действуют CC-BY-4.0 и CC-BY-SA-4.0; источники и условия использования перечислены в NOTICE.md.