• Eric Myhre's avatar
    Introduce LinkSystem. · a1482fe2
    Eric Myhre authored
    This significantly reworks how linking is handled.
    
    All of the significant operations involved in storing and loading
    data are extracted into their own separate features, and the LinkSystem
    just composes them.  The big advantage of this is we can now add as
    many helper methods to the LinkSystem construct as we want -- whereas
    previously, adding methods to the Link interface was a difficult
    thing to do, because that interface shows up in a lot of places.
    
    Link is now *just* treated as a data holder -- it doesn't need logic
    attached to it directly.  This is much cleaner.
    
    The way we interact with the CID libraries is also different.
    We're doing multihash registries ourselves, and breaking our direct
    use of the go-multihash library.  The big upside is we're now using
    the familiar and standard hash.Hash interface from the golang stdlib.
    (And as a bonus, that actually works streamingly; go-mulithash didn't.)
    However, this also implies a really big change for downstream users:
    we're no longer baking as many hashes into the new multihash registry
    by default.
    a1482fe2
quip_example_test.go 1.31 KB