BREAKING CHANGES
- Uses new Tendermint ReverseIterator API. See tendermint/tendermint#2913
IMPROVEMENTS
- Uses GoAmino v0.14
BREAKING CHANGES
- Changed internal database key format to store int64 key components in a full 8-byte fixed width (#107)
- Removed some architecture dependent methods (e.g., use
Get
instead ofGet64
etc) (#96)
IMPROVEMENTS
- Database key format avoids use of fmt.Sprintf fmt.Sscanf leading to ~10% speedup in benchmark BenchmarkTreeLoadAndDelete (#107, thanks to @silasdavis)
BREAKING CHANGES
- refactored API for clean separation of mutable and immutable tree (#92, #88);
with possibility to:
- load read-only snapshots at previous versions on demand
- load mutable trees at the most recently saved tree
BUG FIXES
- remove memory leaks (#92)
IMPROVEMENTS
- Change tendermint dep to ^v0.22.0 (#91)
BREAKING CHANGES
- getRangeProof and Get[Versioned][Range]WithProof return nil proof/error if tree is empty.
IMPROVEMENTS
- some minor changes: mainly lints, updated parts of documentation, unexported some helpers (#80)
IMPROVEMENTS
- RangeProof.ComputeRootHash() to compute root rather than provide as in Verify(hash)
- RangeProof.Verify*() first require .Verify(root), which memoizes
BREAKING CHANGES
- RangeProof.VerifyItem doesn't require an index.
- Only return values in range when getting proof.
- Return keys as well.
BUG FIXES
- traversal bugs in traverseRange.
- Swap
tmlibs
fortendermint/libs
- Remove
sha256truncated
in favour oftendermint/crypto/tmhash
- same hash function but technically a breaking change to the API, though unlikely to effect anyone.
NOTE this means IAVL is now dependent on Tendermint Core for the libs (since it
makes heavy use of the db
package). Ideally, that dependency would be
abstracted away, and/or this repo will be merged into the Cosmos-SDK, which is
currently is primary consumer. Once it achieves greater stability, we could
consider breaking it out into it's own repo again.
July 1st, 2018
BUG FIXES
- fix bug in iterator going outside its range
BREAKING CHANGES
- Nodes are encoded using proto3/amino style integers and byte slices (ie. varints and varint prefixed byte slices)
- Unified RangeProof
- Proofs are encoded using Amino
- Hash function changed from RIPEMD160 to the first 20 bytes of SHA256 output
BREAKING CHANGES
- LoadVersion and Load return the loaded version number
- NOTE: this behaviour was lost previously and we failed to document in changelog, but now it's back :)
IMPROVEMENT
- Remove spurious print statement from LoadVersion
BREAKING CHANGES
- NewTree order of arguments swapped
- int -> int64, uint64 -> int64
- NewNode takes a version
- Node serialization format changed so version is written right after size
- SaveVersion takes no args (auto increments)
- tree.Get -> tree.Get64
- nodeDB.SaveBranch does not take a callback
- orphaningTree.SaveVersion -> SaveAs
- proofInnerNode includes Version
- ReadKeyXxxProof consolidated into ReadKeyProof
- KeyAbsentProof doesn't include Version
- KeyRangeProof.Version -> Versions
FEATURES
- Implement chunking algorithm to serialize entire tree
First versioned release! (Originally accidentally released as v0.2.0)