А вчера был реализован transaction API в той же libapg.
Теперь фронтенд может собрать набор операций, получить план до их исполнения и применить его.
Что умеет:
- Разрешение транзитивных зависимостей с помощью графа.
- Нахождение конфликтов уже установленных пакетов.
- Вывод плана до коммита.
- Откат записей базы данных при ошибке.
@nuros_tg | GitHub | Packages
Теперь фронтенд может собрать набор операций, получить план до их исполнения и применить его.
Что умеет:
- Разрешение транзитивных зависимостей с помощью графа.
- Нахождение конфликтов уже установленных пакетов.
- Вывод плана до коммита.
- Откат записей базы данных при ошибке.
@nuros_tg | GitHub | Packages
Cosmoblade и AnmiTaliDev жёстко про ArchLinux Install Scripts.
@nuros_tg | GitHub | Packages
Please open Telegram to view this post
VIEW IN TELEGRAM
Вот что прятал артист Shaman* в своей папке...
...за это мелкомягкие** хотели его устранить.
Это утилита carryon, чтобы можно было легко собрать конфигурации и пакеты в один файл, для того, чтобы дистрохоппить или переустанавливать систему.
* — признан иноагентом в Нуростане
** — признана экстремистской организацией в Нуростане
@nuros_tg | GitHub | Packages
...за это мелкомягкие** хотели его устранить.
Это утилита carryon, чтобы можно было легко собрать конфигурации и пакеты в один файл, для того, чтобы дистрохоппить или переустанавливать систему.
* — признан иноагентом в Нуростане
** — признана экстремистской организацией в Нуростане
@nuros_tg | GitHub | Packages
👏1
NurOS
Стоит ли переводить neoinit на toml?
Neoinit теперь будет использовать TOML.
Вы выбрали формат TOML взамен YAML. В скором времени мы начнем переписывать код, который использовался в TOML.
@nuros_tg | GitHub | Packages
Вы выбрали формат TOML взамен YAML. В скором времени мы начнем переписывать код, который использовался в TOML.
@nuros_tg | GitHub | Packages
🔥1
NurOS
Новые прогнозы на наши планы на 2026 год... Q1 (январь–март) — потерян. Q2 (апрель–июнь) — Привести Tulpar и libapg к состоянию production-ready. — Сервер сборки пакетов Apger. — Собрать 100 пакетов и поддерживать их. Q3 (июль–сентябрь) — Первая общедоступная…
Теперь публичный API libapg задокументирован.
Мы задокументировали заголовочные файлы libapg с помощью Doxygen, Sphinx и Breathe с использованием темы Furo.
Документация собирается через GitHub Actions и доступна по этому адресу.
@nuros_tg | GitHub | Packages
Мы задокументировали заголовочные файлы libapg с помощью Doxygen, Sphinx и Breathe с использованием темы Furo.
Документация собирается через GitHub Actions и доступна по этому адресу.
@nuros_tg | GitHub | Packages
Проект althost передан под крыло neoinit и переписан на Zig.
Теперь althost — утилита для управления hostname, альтернатива hostnamectl, ранее написанная на Rust, переписана на Zig в организации NeoInit.
А также, как раз таки, была создана организация neoinit.
URL организации neoinit. URL проекта althost.
@nuros_tg | GitHub | Packages
Теперь althost — утилита для управления hostname, альтернатива hostnamectl, ранее написанная на Rust, переписана на Zig в организации NeoInit.
А также, как раз таки, была создана организация neoinit.
URL организации neoinit. URL проекта althost.
@nuros_tg | GitHub | Packages
🔥1
Примерно так я работаю последние пару дней, пока я в деревне...
Фото взято из Telegram-канала /home.
@nuros_tg | GitHub | Packages
Фото взято из Telegram-канала /home.
@nuros_tg | GitHub | Packages
Что было сделано вчера?
Во-первых, я хорошо погулял.
Во-вторых, я хорошо погулял.
В-третьих, я хорошо погулял.
А также в libapg был большой апдейт:
- Закрыли пункт roadmap install policy.
- Добавили .clang-format.
- Удалили репозиторий из конфигурации, это работа фронтенда, а не бэкенда.
- Добавили скрипты проверок.
- Отформатировали код.
- Добавили три теста для той же install policy.
@nuros_tg | GitHub | Packages
Во-первых, я хорошо погулял.
Во-вторых, я хорошо погулял.
В-третьих, я хорошо погулял.
А также в libapg был большой апдейт:
- Закрыли пункт roadmap install policy.
- Добавили .clang-format.
- Удалили репозиторий из конфигурации, это работа фронтенда, а не бэкенда.
- Добавили скрипты проверок.
- Отформатировали код.
- Добавили три теста для той же install policy.
@nuros_tg | GitHub | Packages
Мы все спали, пока Meigo писал Одиссею несколько раз...
Вышел Tulpar Server 2.0 (preview 1).
Вот список изменений (текст писал не я):
@nuros_tg | GitHub | Packages
Вышел Tulpar Server 2.0 (preview 1).
Вот список изменений (текст писал не я):
* Feat: native APG (tar.xz) reading and metadata parsing, libAPG-faithful;
* Feat: APG validator (apgcheck-style v1/v2 structure + checksum verification) with a libAPG meta.json/metadata.json compatibility warning;
* Feat: version comparison and dependency-constraint parsing ported from libAPG (>=, <=, ==, !=, >, <);
* Feat: tolerant checksum handling — sha256/crc32/md5, both hash path and path hash line orders, canonical output on write;
* Feat: repository index over pool/<channel>/<name>/<arch>/ with a generated canonical repodata.json;
* Feat: clean v2 REST API — list/filter/search, package detail, download .apg + .sig, /repodata.json;
* Feat: authenticated package publishing (POST /api/v2/packages, multipart, Bearer token) with validation;
* Feat: package delete / yank (DELETE /api/v2/packages/..., Bearer token);
* Feat: Bearer-token auth with constant-time comparison;
* Feat: check CLI subcommand to validate an .apg offline (exit 0/1);
* Feat: /metrics HTTP endpoint (JSON snapshot);
* Feat: /api/v2/health and /api/v2/version endpoints;
* Feat: package channels support (e.g. main/core/extra);
* Feat: signature-safe serving — package bytes are stored and served verbatim so detached .apg.sig stays valid;
* Feat (backported from 1.x): per-IP request rate limiting with automatic bans;
* Feat (backported from 1.x): manual IP ban / unban / banlist;
* Feat (backported from 1.x): per-IP concurrent-download cap and download-speed throttling;
* Feat (backported from 1.x): periodic metrics collector (CPU, heap/non-heap, banned IPs, counters);
* Feat (backported from 1.x): in-memory request log (now bounded);
* Feat (backported from 1.x): interactive admin console (help/packages/reindex/metrics/log/ban/unban/banlist/version/restart/stop);
* Feat (backported from 1.x): TLS/HTTPS support (now fully functional);
* Fix: Gradle 9 build failure — switched from io.github.goooler.shadow 8.1.8 (referenced the removed mainClassName) to com.gradleup.shadow 9.4.2;
* Fix: path-traversal in package serving and publishing — segment validation + canonical-path containment;
* Fix: rate-limited requests now return HTTP 429 (legacy returned HTTP 200);
* Fix: ban evasion — X-Forwarded-For is trusted only when explicitly behind a configured reverse proxy;
* Fix: download-limiter race conditions — atomic acquire/release, no slot leaks, cap can't be transiently exceeded;
* Fix: request log no longer grows unbounded;
* Fix: TLS now actually wired up (legacy setupssl never attached the connector);
* Fix: atomic publish writes (temp file + atomic move) with temp cleanup on failure;
* Build: add committed Gradle wrapper (gradlew, gradlew.bat, gradle-wrapper.jar) — referenced by README but previously missing;
* Build: stop tracking build/, .idea/, .gradle/ (141 stale files) and extend .gitignore;
* Build: add dependencies — kotlinx-serialization-json, commons-compress + xz, ktor auth / content-negotiation / http-redirect / test-host;
* Removed: Jython + apgunpacker.py Python dependency (replaced by native tar.xz reading);
* Removed: legacy /api/v2.0/* and VadimAPI endpoints (superseded by the v2 REST API);
* Removed: server self-update (UpdateManager) — out of scope for the repository server;
* Changed: reworked HOCON config schema (server / repo / limits / publish / metrics / tls / cli);
* Test: 88 unit + integration tests (APG domain, repository index, REST routes, security, publish, metrics); all passing;
* Docs: rewrite README for 2.0 (v2 API, configuration, publishing, package format);
* Docs: add Contributor Covenant 2.0 CODE_OF_CONDUCT.md (aligns with the NurOS organization);
@nuros_tg | GitHub | Packages
🔥1