#semver — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #semver, aggregated by home.social.
-
[Перевод] One Branch To Rule Them All
Всем привет. На связи Михаил, технический лидер проекта Axelix . Я уже довольно давно хотел написать небольшую статью о нашей модели ветвления git в надежде, что она может пригодиться и другим. В мире существует немало стратегий ветвления git, например: Gitflow, GitHub-flow, Trunk-Based-Development (TBD) и так далее. По своему опыту могу сказать, что команды обычно не берут какую-либо стратегию в точности в её исходной форме, а либо изобретают нечто совершенно новое сами, либо просто берут, к примеру, уже упомянутый GitFlow и адаптируют его под свои нужды.
https://habr.com/ru/companies/spring_aio/articles/1072386/
#axelix #git #semver #версионирование #gitflow #tbd #trunkbaseddevelopment #github_flow #monorepo #lockstep
-
semver: when a complete rewrite of your entire codebase only needs to cause a version change from 1.0.0 to 1.0.1
-
@jdm_ thank you for checking it out!
Also, this is actually still only half the story! There will probably be more blog posts.
To make this work, I had to work out a principled model for how re-exports interact with stability and doc(hidden). In discussing this with other Rustaceans, it turns out that this model is more complete and better-behaved than what rustc / rustdoc use internally. The rustc/rustdoc current internal model is a bit ... footgunny. For example, folks have accidentally stabilized things without anyone noticing 😬
So now we opened a proposal to adopt the cargo-semver-checks model in rustc + rustdoc: https://github.com/rust-lang/rust/issues/161153
-
Rust CI now runs cargo-semver-checks to prevent accidental breakage in the standard library 🦀
If you're wondering why that's important and why it took 15kLoC+, this post is for you.
https://predr.ag/blog/protecting-the-rust-stdlib-from-breakage/ -
"You fixed something — your change made a program compile when it shouldn't have — and that's proof your API has a major breaking change"
@lorilorusso interviewed me to understand how cargo-semver-checks will catch breakage in your traits and types
https://www.youtube.com/watch?v=38h2OiVI1ms -
With any luck, this is the cargo-semver-checks release that will start scanning the Rust standard library for breakage.
Enjoy v0.50.0! What a fitting moment for a nice round number 🎉 Expect a blog post soon!
-
Как мы перестали копировать .gitlab-ci.yml и спасли пайплайны от хаоса с помощью модулей
Копипаст .gitlab-ci.yml по десяткам сервисов привел к config drift: пайплайны расходились, а правка одной строчки требовала 10+ MR. Вынесли логику CI в отдельный репозиторий модулей, подключаемых через include с версионированием по SemVer — в проекте остается только короткий файл с переменными. В итоге миграция с Kaniko на BuildKit заняла 5 дней вместо 2-3 недель, а типовой багфикс на 20 сервисах — 1 час вместо 11. Смотреть, как устроены модули ->
https://habr.com/ru/articles/1061280/
#gitlab_ci #gitlabciyml #devops #semver #yaml #gitlab_ci_include #gitlab_ci_components #cicdcatalog #cicd
-
Happy cargo-semver-checks release day 🎉
After 30+ PRs and 15kLoC, we can now lint the Rust standard library for accidental breakage! I'll work with Rust maintainers to get that plugged in, then it's blog post time to tell you how it works! Stay tuned 🦀
https://github.com/obi1kenobi/cargo-semver-checks/releases/tag/v0.49.0
-
Still some cleanup to do before this can merge, but I'm exhausted. I'm 30 PRs and 15080 cumulative lines in on my week off from work 😅
I'm calling this a win, and going to lay down and read a book.
-
Day 5, a picture worth a thousand words 👇
I put an API-breaking `#[doc(hidden)]` in my local build of the Rust standard library, and asked cargo-semver-checks to find it. See for yourself!
-
Second, an improvement to how we normalize types.
We'll need this to implement type-checking lints in the future. This will eliminate a large class of expensive type-checks where the previous logic was unnecessarily conservative and quite inefficient.
https://github.com/obi1kenobi/trustfall-rustdoc-adapter/pull/1086
-
It's Thursday, day 4. Today's haul so far is ~2500 LoC.
First, making use of default-value stability which we previously exposed in rustdoc JSON. Pairing with Codex on this caught a subtle new edge case that affects which traits are considered sealed.
Copious test cases come standard, of course.
https://github.com/obi1kenobi/trustfall-rustdoc-adapter/pull/1087 -
I had to take a brief detour to triage a surprising new class of SemVer breakage.
It's always *a time* when the net result is "8 issues across 5 repos" 😅
The net result is the same: even more lints!
https://github.com/obi1kenobi/cargo-semver-checks/issues/1658 -
It's Wednesday, day 3.
Default-stability is in rustdoc JSON in today's nightly Rust. Only *stable* defaults are public API, so we pretend unstable values don't exist.
I'm working on a PR for this, and also on type normalization improvements to let us have type-checking lints 👀
-
RE: https://hachyderm.io/@predrag/116840347170828291
Day 2 of trying to scan the Rust standard library for accidental breakage with cargo-semver-checks 👇
-
Second, the last required upstream PR got merged into rustdoc!
It lets us know which default values (like on associated consts, or default method impls in traits) are considered stable and therefore public API. This is the last "partial stability" mechanism we need.
https://github.com/rust-lang/rust/pull/158468 -
It's Tuesday, and so far so good!
Two things happened today, by which I mean after midnight last night.
First, I merged a PR to allow unstable stdlib items to be considered non-public-API. Similarly, const-unstable items are considered non-const in public API:
https://github.com/obi1kenobi/trustfall-rustdoc-adapter/pull/1080 -
I'm taking a few days off from work, so let's see how far I can get with having cargo-semver-checks scan the Rust standard library for accidental breakage...
Idea courtesy of a random hallway conversation with Amanieu at the Rust All Hands part of @rustnl this year.
-
New cargo-semver-checks release 🦀
I'm hard at work on solving type checking lints, so this one is just a maintenance release — one new lint plus some bug fixes. Enjoy!
https://github.com/obi1kenobi/cargo-semver-checks/releases/tag/v0.48.0 -
Три мажора, две ошибки: проектирование API приостановки для интерпретатора машины Тьюринга
Когда «снисходительность к входным данным» становится ловушкой? Когда имя хука начинает диктовать потребителю модель мышления? Когда подстановка снимка состояния — это не приём, а сигнал, что фазы жизненного цикла стоят не на том такте? Три мажорных релиза одной библиотеки — про эти три вопроса. К разбору полётов
https://habr.com/ru/articles/1041090/
#машина_тьюринга #npmпакет #breaking_changes #open_source #проектирование_интерфейсов #генераторы #интерпретаторы #semver #хуки #разбор_полетов
-
Most engineers pick version numbers by feel. Learn how Semantic Versioning and Changesets turn your releases into a reliable contract your users can depend on. https://hackernoon.com/a-developers-guide-to-system-versioning-with-semver-and-changesets #semver
-
I spent most of this year so far figuring out possible designs to solve those problems.
RustWeek + All Hands were phenomenally useful! I worked w/ rustdoc, types, compiler, cargo, and other folks to poke holes in the designs and then patch them.
Thank you @rustnl for making it happen!
-
What we'll get out of it:
- support for type-checking lints (#1 top user request)
- fix the remaining classes of false-positives (#2 top user request)
- Rust itself can use cargo-semver-checks to prevent accidental breakage in the standard library (!!)
- a "SemVer crater" ability:
https://predr.ag/blog/cargo-semver-checks-2025-year-in-review/#the-path-forward-for-2026-and-beyond -
Hard problems:
- connecting rustdoc JSON across crate boundaries
- generating rustdoc JSON in a performant, caching-friendly way
- generating "witness programs" to catch type-related breakage
- extending our static analysis to cover std too
- making all of this not take hours to run in your CI, lol -
Reflecting after the Rust All Hands: cargo-semver-checks is in a fascinating spot.
We've never simultaneously had:
- so many hard problems that must be solved at once
- so many "this is hard but we're confident it'll work" solutions in flight at onceThrilling, but exhausting. But THRILLING 🦀
-
I'm working on cargo-semver-checks, and I realized that an edge case of one of my edge cases has an edge case that breaks my planned design.
That means that so far, I'm having an average Saturday in cargo-semver-checks land 😅
-
Was that change really a patch—or did you just break someone’s build? Manual #SemVer is fragile, especially in growing teams. @JagoVreede enforces it with code.
Make your versions trustworthy again and avoid hidden breaking changes: https://javapro.io/2026/03/26/semantic-versioning-done-automatically/
-
#semver anyone? Semantic versioning like
3.14.1 as major.minor.patch
is defined on https://semver.org/ with
PATCH version when you make backward compatible bug fixes
What is a "backward compatible bug fix"? After a bug fix, the software is no longer compatible with the buggy version, ON PURPOSE. Any dependent software which accommodates so far to the bug may now have problems?
What am I missing?