Semver violations are common, better tooling is the answer

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • cargo-semver-checks

    Scan your Rust crate for semver violations.

  • If you'd like to dig deeper, here are some links:

    - cargo-semver-checks: https://github.com/obi1kenobi/cargo-semver-checks

    - Trustfall query engine, which powers cargo-semver-checks: https://github.com/obi1kenobi/trustfall

    - Trustfall playground, where you can query Rust library APIs in your browser -- for example, "which structs in `itertools` are importable by more than one path": https://play.predr.ag/rustdoc#?f=2&q=*3-Structs-importable-f...

    - 10min conference talk on Trustfall: https://www.hytradboi.com/2022/how-to-query-almost-everythin...

    I'm also giving a talk at P99 CONF in a few months about how Trustfall's new optimizations API made cargo-semver-checks over 2300x faster: https://twitter.com/PredragGruevski/status/16893002495908003...

  • trustfall

    A query engine for any combination of data sources. Query your files and APIs as if they were databases!

  • If you'd like to dig deeper, here are some links:

    - cargo-semver-checks: https://github.com/obi1kenobi/cargo-semver-checks

    - Trustfall query engine, which powers cargo-semver-checks: https://github.com/obi1kenobi/trustfall

    - Trustfall playground, where you can query Rust library APIs in your browser -- for example, "which structs in `itertools` are importable by more than one path": https://play.predr.ag/rustdoc#?f=2&q=*3-Structs-importable-f...

    - 10min conference talk on Trustfall: https://www.hytradboi.com/2022/how-to-query-almost-everythin...

    I'm also giving a talk at P99 CONF in a few months about how Trustfall's new optimizations API made cargo-semver-checks over 2300x faster: https://twitter.com/PredragGruevski/status/16893002495908003...

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • sbt-mima-plugin

    A tool for catching binary incompatibility in Scala

  • In the Scala ecosystem, MiMa [1] has been in widespread use for years. It automatically checks compatibility for the binary API of a library. Every library with any amount of success uses it. One could say it's the foundation of a stable ecosystem. We also have sbt-version-policy [2] to set it up with minimal configuration (and directly relate it to SemVer).

    More recently, we got tasty-mima [3], which checks compatibility at the type system level, rather than the binary level.

    [1] https://github.com/lightbend/mima

    [2] https://github.com/scalacenter/sbt-version-policy

    [3] https://github.com/scalacenter/tasty-mima

  • sbt-version-policy

    Compatibility checks for your dependencies

  • In the Scala ecosystem, MiMa [1] has been in widespread use for years. It automatically checks compatibility for the binary API of a library. Every library with any amount of success uses it. One could say it's the foundation of a stable ecosystem. We also have sbt-version-policy [2] to set it up with minimal configuration (and directly relate it to SemVer).

    More recently, we got tasty-mima [3], which checks compatibility at the type system level, rather than the binary level.

    [1] https://github.com/lightbend/mima

    [2] https://github.com/scalacenter/sbt-version-policy

    [3] https://github.com/scalacenter/tasty-mima

  • tasty-mima

    TASTy Migration Manager

  • In the Scala ecosystem, MiMa [1] has been in widespread use for years. It automatically checks compatibility for the binary API of a library. Every library with any amount of success uses it. One could say it's the foundation of a stable ecosystem. We also have sbt-version-policy [2] to set it up with minimal configuration (and directly relate it to SemVer).

    More recently, we got tasty-mima [3], which checks compatibility at the type system level, rather than the binary level.

    [1] https://github.com/lightbend/mima

    [2] https://github.com/scalacenter/sbt-version-policy

    [3] https://github.com/scalacenter/tasty-mima

  • unity

    Discontinued unity - run experiments/regression tests on CUE modules (by cue-unity)

  • This is more a coordination problem, semver doesn't really matter here, except as a good enough standard or guardrail for most. It's going to get broken from time to time, and that is fine.

    The CUE Unity project is an interesting take on how to "solve" the bigger issue of breaking changes or regressions.

    https://github.com/cue-unity/unity

    Basically, the idea is that users can register their project, tests, or benchmarks in Unity. The project maintainers can then test new code against these projects before releasing, or even before pushing a commit, because a regression is found for example. This works by injecting the version (or local code) into the dependency management system. For CUE, this is a `go mod edit`, or setting up the environment with the cli at version / local. How this is set up and managed isn't as important as getting the process in place and making it an easy workflow for both sides. Hence why I call it a coordination problem.

  • crater

    Run experiments across parts of the Rust ecosystem! (by rust-lang)

  • yup, they reference it as an inspiration: https://github.com/rust-lang/crater

    it's probably impossible to automate an entire ecosystem, and there is value to enabling a tighter integration within a project ecosystem (a subset of the language ecosystem).

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts