When publishing a package for use by programmers, automated changelog generation is very beneficial. In this blog post, I explore how to do it in a simple way that works everywhere.

  • HaraldvonBlauzahn@feddit.org
    link
    fedilink
    arrow-up
    0
    ·
    23 days ago

    What would really bring the state of the art forward would be automated checks whether a given interface change is really fully backwards-compatible or not. But this would need to catch changes such as

    • changed behaviour
    • removed functions, methods, enumeration values, …
    • added exception types or error codes in return values, leading to looser post-conditions (client code needs to check for additional errors)
    • stricter pre-conditions
    • in libraries, upgrade to dependencies which include any breaking changes (because they can now conflict with other deoendencies in a formerly working client project).
      • HaraldvonBlauzahn@feddit.org
        link
        fedilink
        arrow-up
        0
        ·
        23 days ago

        It is the whole topic of Rich Hickeys talk linked above that breaking an API is a choice. And it is not a solution to not define an API and not agree any contract at all.