diff --git a/CHANGELOG.md b/CHANGELOG.md index b42e258c47..30dfeef4ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,14 +15,30 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] -## [0.3] - TBA +## [0.3] - 2018-10-30 + +### Highlights + +This release brings: +- Support of flat map proofs, the new compact proof format for `ProofMap`, + supporting several keys. +- Built-in serializers of Java primitive types, some Exonum library types + and protobuf messages. +- Ability to report the transaction execution result as an exception with + extra information accessible by a client: `TransactionExecutionException`. +- A separate module `exonum-java-binding-common` that can be used in _client_ + applications to create transaction messages, check proofs, serialize/deserialize data, + perform cryptographic operations. +- Various fixes and improvements. + +The release is based on Exonum 0.8. ### Added - Flat map proofs support, including proofs of absence and multiproofs — proofs for several entries at once. (#250, #507, #532) -- `StandardSerializers` now supports `bool`, `fixed32`, `uint32`, `sint32`, - `fixed64`, `uint64`, `sint64`, `float` and `double` primitive types, - `PrivateKey`, `PublicKey` and `byte[]` serialization. (#514, #523) +- [`StandardSerializers`](https://exonum.com/doc/api/java-binding-common/0.3/com/exonum/binding/common/serialization/StandardSerializers.html) + now supports `bool`, `fixed32`, `uint32`, `sint32`, `fixed64`, `uint64`, `sint64`, `float` + and `double` primitive types, `PrivateKey`, `PublicKey` and `byte[]` serialization. (#514, #523) - A deterministic `Serializer` of any protobuf message — `StandardSerializers#protobuf`. (#493) - Static factory methods accepting protobuf messages to collections, allowing to pass Protocol Buffer messages directly instead of using @@ -32,18 +48,20 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Wallet transactions history support to the cryptocurrency-demo. (#481) ### Changed -- `Transaction#execute` can throw `TransactionExecutionException` to roll back +- [`Transaction#execute`](https://exonum.com/doc/api/java-binding-core/0.3/com/exonum/binding/transaction/Transaction.html#execute-com.exonum.binding.storage.database.Fork-) + can throw `TransactionExecutionException` to roll back any changes to the database. The exception includes an error code and an optional - description which the framework saves to the storage for later retrieval. (#392) -- Refactor `exonum-java-proofs` module to `exonum-java-binding-common` module + description which the framework saves to the storage for later retrieval. + Any other exception is considered as an unexpected error (panic in Rust terms). (#392) +- Refactored `exonum-java-proofs` module to `exonum-java-binding-common` module with `com.exonum.binding.common` root package so that more functionality is available to client applications with no dependency on `exonum-java-binding-core` (#459) - - Move `crypto` package to `exonum-java-binding-common` module. (#467) - - Move `hash` package to `exonum-java-binding-common` module. (#469) - - Move `Transaction`-related classes to the new `com.exonum.binding.transaction` package. (#469) - - Move `messages` package to `message` package in `exonum-java-binding-common` module. (#469) - - Move `proofs` package to `com.exonum.binding.common` package. (#469) - - Move `serialization` package to `com.exonum.binding.common` package. (#469) + - Moved `crypto` package to `exonum-java-binding-common` module. (#467) + - Moved `hash` package to `exonum-java-binding-common` module. (#469) + - Moved `Transaction`-related classes to the new `com.exonum.binding.transaction` package. (#469) + - Moved `messages` package to `message` package in `exonum-java-binding-common` module. (#469) + - Moved `proofs` package to `com.exonum.binding.common` package. (#469) + - Moved `serialization` package to `com.exonum.binding.common` package. (#469) - `ProofMapIndexProxy#getProof` to return a flat `UncheckedMapProof` instead of tree-like `MapProof`, which is a more efficient format in terms of space. (#478) - `ProofListIndexProxy#getProof` and `ProofListIndexProxy#getRangeProof` to return