Releases: esaulpaugh/headlong
v3.3.0 (security enhancement)
no longer implement Serializable for ABIType, Function, Tuple -- attempts at Java serialization will result in a NotSerializableException;
SHA-256 (headlong-3.3.0.jar): 595f89a8c79cc7c3ceb8134be1a78995c24b23fd25d0dc02f273ae1d1509063f
v3.2.0 (update)
in SuperSerial, only do negative sign-extension on signed ints that are full-width;
change whitespace in Function.format result;
return int from some encodeAsList methods;
add Automatic-Module-Name: headlong to MANIFEST.MF;
update bouncycastle version from 1.64 to 1.65;
SHA-256 (headlong-3.2.0.jar): 5e69e574adac5779706e3f4559c28e7a50c7eb63de524d83d05f510f81108a88
v3.1.0
rename RLPEncoder.encode to encodeString;
add RLPOutputStream;
add RLPItem.exportData(OutputStream);
add RLPItem convenience methods for functional style programming;
SHA-256 (headlong-3.1.0.jar): a833f33c8b98dc95f98c2529d4f6e8185e7703901e3b38493c0fd1b86ab43c65
v3.0.0 (api refresh)
fix int[...
and uint[...
not being canonicalized, resulting in incorrect selector and signature values;
no more checked exceptions -- checked exceptions generally replaced with IllegalArgumentException;
arrays of uint32
now correspond to long[];
arrays of uint64
now correspond to BigInteger[];
make gson and bouncycastle dependencies optional;
more consistent RLPItem convenience method behavior (e.g. asByte, asBigInt) w.r.t. signedness and/or strict/lenient decoding;
add lenient flag to RLPItem decode methods;
fix SuperSerial exceptions for zero-length BigIntegers;
fix ABI encode bug (IndexOutOfBounds/BufferOverflow) for BigIntegers with bit length of 256;
update leading zero err msg;
throw exception for RLPList found for UnitType in SuperSerial.deserialize;
explicitly check for int overflow in RLPEncoder (more predictable failure when RLP output would exceed 2 GiB);
rename RLPEncoder.encodeSequentiallyBB to encodeSequentially;
significant changes to Uint.java api and error messages;
fix possible NoSuchMethodErrors on Java 8 runtime environment related to setting ByteBuffer position;
add more javadoc;
add jmh benchmarks to project;
remove Event.topics0;
remove RLPItem.asBigDecimal (may return in future release);
remove Function.hexOf methods;
remove DECIMAL flag from Strings;
change BASE_64_URL_SAFE flag value from 3 to 2;
throw UnsupportedOperationException if Strings encoding flag not recognized;
various performance optimizations;
SHA-256 (headlong-3.0.0.jar): a88579bf1fb4bf34d30f3e450ce87fab1efef732521317973f977eeed0a359c7
v2.3.0 (update)
change (RLP object) Notation to use square brackets and single quotes;
move KeyValuePair and Record into rlp package, make the associated RLP util methods package-private;
RLPEncoder.encodeSequentially no longer accepts arrays of KeyValuePair;
for TupleType.decode(byte[]), throw IllegalArgumentException if there are unconsumed trailing bytes;
make some classes final;
add WrappedKeccak which wraps bouncycastle impl -- org.bouncycastle:bcprov-jdk15on:1.64 is now a dependency;
add Tuple serializer/deserializer SuperSerial;
add method Function.parse(String, MessageDigest);
SHA-256 (headlong-2.3.0.jar): 54911021447e580337d2b04aa8fcbb1e2abe076e8da77677392ee0307fb5f15b
v2.2.0 (bug fix)
allow RLP 0x00 to be read as an integer:
0x00 as a boolean will now not throw, but be read as false;
0x00 as a char will now not throw, but be read as '\u0000';
fix PackedEncoder not overwriting previous values with 0x00 padding when ByteBuffer is specified by caller;
change err message "illegal tuple termination" to "unrecognized type: [type]";
change illegal char err message;
change "deserialised integers with leading zeroes" err message;
SHA-256 (headlong-2.2.0.jar): 0cc80ec72ad9396caf69a410abfe4027097ecf738df756465f7c6bbce15de82c
v2.1.1 (update)
experimental PackedDecoder fully functional -- supports decoding of tuples, tuple arrays, nested tuples, nested arrays, etc.
fix index bug in (experimental) PackedDecoder for when a dynamic element is two or more positions to the left of a (static) array;
fix packed decode throwing exception for string types;
fix signed value for unsigned type exception;
move abi.util.Utils to abi package;
remove rateSize() and alt constructor from Keccak;
fix input length wasn't checked properly in Function.format;
add input length checking to TupleType.format;
fix bug in Keccak protected method updateBits which could in some cases cause incorrect results if called outside of Keccak (e.g. by a subclass or by reflective access);
some abi encoding optimizations;
update javadoc;
SHA-256 (headlong-2.1.1.jar): 9f00af68b6f74377ab8a708c13fb44ec2cb1dfeed3833c8abd886b68867d17c3
v2.1.0 (some breaking changes)
move exception package from headlong.rlp to headlong;
new class RLPStream implements Iterable<RLPItem>, AutoCloseable;
rlp iterators now implement Iterator<RLPItem> (RLPIterator, RLPListIterator, and RLPStreamIterator types no longer exposed);
reorder arguments in RLPDecoder collect apis;
SHA-256 (headlong-2.1.0.jar): 7261220adb57cdfb1b88ef49d6873389e36fe60b93efcf01d83a082c1af96a08
v2.0.0 (major api changes)
decouple rlp and abi packages (major reorg);
total redesign of exception handling in abi package (checked ABIException on abi encode and decode; unchecked IllegalArgumentException for parsing function/tuple signature);
add function type "receive" (for Solidity ver. 0.6+);
add rlp.util.Notation.forObjects(List<Object>);
in eip778.Record use List<KeyValuePair> instead of array;
SHA-256 (headlong-2.0.0.jar): 3290a04b3d31146b4bdf302f187adec5b93cf00b4d91f18eb922cae5f7d782c5
v1.5.0 (bugfix)
fix issue with incorrect non-standard packed encoding for boolean arrays when the destination ByteBuffer's position is not zero (e.g. the boolean array is not the first item being encoded);
significant refactoring to reduce complexity, line count, and jar size;
SHA-256 (headlong-1.5.0.jar): c3ead2c7a6c93ad53a19ca6ca7e8779c39715fdc9e95ebc903f0a277bb7e417c