Commit Graph

179 Commits

Author SHA1 Message Date
Steven Allen
b1cc3e404d Merge pull request #85 from ipfs/feat/cidv1-default-base32
default cidv1 to base32
v0.0.2
2019-05-13 10:54:14 -07:00
Steven Allen
b16425b966 make CID in readme base32 2019-05-10 09:41:01 -07:00
Steven Allen
f04f9216e7 default cidv1 to base32 2019-05-06 16:22:17 -07:00
Jakub Sztandera
e7e67e08cf Add gomod and travis v0.0.1 2019-02-28 18:32:58 +01:00
Steven Allen
29a66d1820 gx publish 0.9.3 2019-02-20 20:12:25 -08:00
Steven Allen
08f30d213e Merge pull request #84 from ipfs/fix/83
fix inline CIDs generated by Prefix.Sum
2019-02-20 20:11:24 -08:00
Steven Allen
cf3b4efcaf fix inline CIDs generated by Prefix.Sum 2019-02-20 19:06:04 -08:00
Hector Sanjuan
ca991e8eb6 Merge pull request #82 from ipfs/gx/0.9.2
gx publish 0.9.2
2019-02-20 16:21:43 +00:00
Hector Sanjuan
8d327b2f4b gx publish 0.9.2 2019-02-20 16:21:01 +00:00
Hector Sanjuan
14b828acf5 Merge pull request #81 from ipfs/feat/binary-marshaler
Let Cid implement Binary[Un]Marshaler and Text[Un]Marshaler interfaces.
2019-02-20 16:20:09 +00:00
Hector Sanjuan
00439572fb Let Cid implement Binary[Un]Marshaler and Text[Un]Marshaler interfaces.
This makes Cid implement https://golang.org/pkg/encoding/#BinaryMarshaler
which is used by go-codec to decide if things know how to serialize themselves
(currently we need do manual wrapping for anything containing a CID).

Since I was at it, I did the TextMarshaling one too.
2019-02-19 16:41:30 +00:00
Jakub Sztandera
37bf2f9503 Merge pull request #80 from madper/fix_typo
fix typo in comment
2019-02-15 18:30:48 +01:00
Madper Xie
e6d04f280e fix typo in comment 2019-02-15 20:19:46 +08:00
Steven Allen
033594dcd6 gx publish 0.9.1 2018-11-02 16:51:23 -07:00
Steven Allen
c9e99b39db Merge pull request #78 from samli88/dash-codecs
add codecs for Dash blocks, tx
2018-10-23 05:29:30 +01:00
Samuel Li
3ec3578fe9 add dash to codecs table 2018-10-07 11:44:18 -07:00
Samuel Li
628ab3426c add codecs for Dash blocks, tx 2018-10-07 11:21:41 -07:00
Kevin Atkinson
6e296c5c49 gx publish 0.9.0 gx/v0.9.0 2018-09-11 19:18:20 -04:00
Kevin Atkinson
f0033600ca Gx update go-multibase. 2018-09-11 19:17:40 -04:00
Kevin Atkinson
dfc48d3ec4 Make sure we have a SHA2_256, length 32 hash when creating a CidV0. 2018-09-11 19:17:40 -04:00
Kevin Atkinson
46dd393ad1 Handel undefined Cid is JSON representation. 2018-09-07 14:03:03 -04:00
Kevin Atkinson
67a2bcf7e7 Change 'Nil' constant to 'Undef'. 2018-09-05 15:43:18 -04:00
Kevin Atkinson
643f78a8f9 Change 'IsNil' method to 'Defined'. 2018-09-05 03:26:26 -04:00
Kevin Atkinson
7b4617fa6e Eliminate unnecessary copy of Cid now that its an immutable string. 2018-09-01 00:09:38 -04:00
Kevin Atkinson
440a1c1a5a Removed description of layout of CID as it is not correct for CIDv0. 2018-08-31 00:35:55 -04:00
Kevin Atkinson
e0a5698af9 Add IsNil() method. 2018-08-31 00:35:54 -04:00
Kevin Atkinson
667c6a9418 Avoid allocating memory in Type() method. 2018-08-31 00:35:53 -04:00
Kevin Atkinson
426ebe9e55 Simplify assignment in UnmarshalJSON. 2018-08-31 00:35:52 -04:00
Kevin Atkinson
cad52160a4 Ensure we always have a valid Cid by hiding the type in a struct. 2018-08-31 00:35:51 -04:00
Kevin Atkinson
b5a08dcaaa Change EmptyCid to just Nil. 2018-08-31 00:35:51 -04:00
Kevin Atkinson
9831436a6f Change string representation to represent actual binary representation. 2018-08-31 00:35:47 -04:00
Kevin Atkinson
d7974d2277 Export version() method, various other code cleanups. 2018-08-31 00:34:19 -04:00
dignifiedquire
8009448a20 fix KeyString() 2018-08-31 00:34:03 -04:00
dignifiedquire
92496b5494 use string instead of []byte as underlying store 2018-08-31 00:34:02 -04:00
dignifiedquire
e153340e5a feat: use CIDs as their byte representation instead of a struct 2018-08-31 00:33:47 -04:00
Steven Allen
6ddb575a8d Merge pull request #60 from ipfs/kevina/cid-fmtb
Create a new Encode method that is like StringOfBase but never errors
2018-08-30 23:06:50 +00:00
Kevin Atkinson
b3d85b3dee Enhance documentation for Encode method. 2018-08-30 00:38:17 -04:00
Kevin Atkinson
bea727bbd1 Enhance tests. 2018-08-30 00:30:14 -04:00
Kevin Atkinson
9091e50b29 Rename Format method to Encode. 2018-08-30 00:30:14 -04:00
Kevin Atkinson
a0b3b11e63 Create a new Format method that is like StringOfBase but never errors 2018-08-30 00:30:14 -04:00
Steven Allen
1766ab0fcf Merge pull request #72 from ipfs/rsrch-cid-as-struct-wrapped-str
cid implementation variations++
2018-08-30 01:52:53 +00:00
Eric Myhre
924534b811 Inspect memory layout of struct wrapping string.
It's also viable.  Options list expanded.  (And regretting my ordering of it now.  Wish I'd thought of this one and realized it's distinct earlier.)
2018-08-28 01:00:21 +02:00
Eric Myhre
5ddbe21740 Merge pull request #70 from ipfs/rsrch
cid implementation research
2018-08-28 00:34:28 +02:00
Eric Myhre
2cf56e3813 Benchmarks of various Cid types as map keys.
And writeup on same.

tl;dr interfaces are not cheap if you're already at the scale where you
started caring about whether or not you have pointers.
2018-08-24 14:03:54 +02:00
Eric Myhre
5a6d4bdf06 More readme on the state of iface research. 2018-08-24 13:18:50 +02:00
Eric Myhre
fb8ecaccad Enumerate some more options in prose. 2018-08-24 12:37:52 +02:00
Eric Myhre
348b9201a6 Start a readme for this research project.
Right now this is mostly this is to document the behavior of interface-keyed
maps.  I suspect some of those caveats might be non-obvious to a lot of folks.
2018-08-24 12:24:34 +02:00
Eric Myhre
b4ab25ffda Discovered interesting case in map key checking.
Using interfaces as a map's key type can cause some things that were otherwise
compile-time checks to be pushed off into runtime checks instead.
This is a pretty major "caveat emptor" if you use interface-keyed maps.
2018-08-24 12:18:07 +02:00
Eric Myhre
c724ad0d22 cid impl via struct and via string together.
Added back in some of the parser methods.  (These were previously named "Cast"
and I think that's silly and wrong so I fixed it.)

Functions are named overly-literally with their type (e.g. ParseCidString and
ParseCidStruct rather than ParseCid or even just Parse) because for this
research package I don't want to bother with many sub-packages.  (Maybe I'll
regret this, but at the moment it seems simpler to hold back on sub-packages.)

Functions that produce Cids are literal with their return types, as well.
Part of the purpose of this research package is going to be to concretely
benchmark exactly how much performance overhead there is to using interfaces
(which will likely cause a lot of boxing and unboxing in practice) -- since we
want to explore where this boxing happens and how much it costs, it's important
that none of our basic implementation functions do the boxing!

The entire set of codec enums came along in this commit.  Ah well; they would
have eventually anyway, I guess.  But it's interesting to note the only thing
that dragged them along so far is the reference to 'DagProtobuf' when
constructing v0 CIDs; otherwise, this enum is quite unused here.
2018-08-24 12:00:31 +02:00
Eric Myhre
ff25e9673c Open research dir; want to explore cid impl perf.
It's been discussed in several issues and PRs already that we might want to
explore various ways of implementing CIDs for maximum performance and
ease-of-use because they show up extremely often.  Current CIDs are pointers,
which generally speaking means you can't get one without a malloc; and also,
they're not particularly well-suited for use in map keys.

This branch is to attempt to consolidate all the proposals so far -- and do so
in a single branch which can be checked out and contains all the proposals at
once, because this will make it easy to do benchmarks and compare all of the
various ways we could implement this in one place (and also easier for humans
to track what the latest of each proposal is, since they're all in one place).

To start with: a Cid implementation backed by a string; and matching interface.

(I'm also taking this opportunity to be as minimalistic as possible in what
I port over into these experimental new Cid implementations.  This might not
last; but as long as all this work is to be done, it's a more convenient time
than usual to see what can be stripped down and still get work done.)

More to come.
2018-08-24 10:53:52 +02:00