GithubHelp home page GithubHelp logo

Comments (4)

willbryant avatar willbryant commented on June 13, 2024 2

If it's just the simple API left that can't be solved by bumping soversion, I suggest... breaking both versions!

Seriously. Since the risk is not so much that it will break some compiles but that it won't break some compiles, it might be best to change the signature in such a way that it will break it - for everyone. Something as simple as renaming the function would work.

We could even add a #define to get back one of the two old syntaxes, so people who just need to keep compiling older sources against a newer release of the library can just add that define to restore compatibility.

from blake2.

sneves avatar sneves commented on June 13, 2024

I've thought about this for quite a while, and I agree with you. The only thing libb2 brings to the table, really, is the packaging and the dynamic dispatch for x86.

However, merging libb2 and the main repo would require a major API change (the main repo's API has changed since libb2 became its own thing), which might possibly break existing applications. I don't really know if anything serious uses libb2.

from blake2.

julian-klode avatar julian-klode commented on June 13, 2024

AFAICT, the API is the same (function argument count, struct names, field names, etc), just the ABI differs (mostly different integer types, maybe some re-ordering). So it's just an issue of bumbing the soversion, or well, that libtool version thing appropriately; and then rebuilding clients. Stuff like that happens all the time, so no biggie.

from blake2.

QuLogic avatar QuLogic commented on June 13, 2024

The only thing libb2 brings to the table, really, is the packaging

This is very very useful for downstream distributions.

However, merging libb2 and the main repo would require a major API change (the main repo's API has changed since libb2 became its own thing), which might possibly break existing applications. I don't really know if anything serious uses libb2.

The ABI change is a big problem, but libb2 has bumped the soversion in the latest release, so everyone would need to rebuild if they were using it. The most annoying thing is that the simple API passes pointers and lengths in a different order, so all you get is warnings about pointer-int conversion. Distros are starting to package libb2 and likely would want to unbundle any other users, so this is a major pain point if upstreams want to continue bundling (which they originally got from blake2) but still support building against a system copy (which is libb2).

from blake2.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.