Releases: relab/hotstuff
Legacy API
Legacy API Release
This release is made to retain an easy way to access the legacy API via the v0.5.0 version tag. We will keep this legacy API (essentially the module system) in the master branch and switch to main as the default branch based on the new package-restructuring branch and continue development on top of that work.
What's Changed
- Fix payloadSize not being passed to the client by @oncethor in #32
- Updates to Go 1.18 and updates dependencies by @meling in #50
- controller: write host assignments to a file by @johningve in #54
- cli: enable profiling for local worker by @johningve in #59
- Add a build script for Windows by @johningve in #62
- modules/registry: use generics to constrain types by @johningve in #60
- consensus: add a SubConfig method to Configuration by @johningve in #56
- Crypto refactor by @johningve in #36
- Handel by @johningve in #37
- Reproduce safety error in Fast-HotStuff with Twins by @johningve in #55
- Fix go version by @AeonSw4n in #72
- Package reorganization by @johningve in #61
- Refactor module system by @johningve in #73
- Removed leafBlock from synchronizer by @leandernikolaus in #76
- build(deps): bump github.com/containerd/containerd from 1.6.2 to 1.6.12 by @dependabot[bot] in #86
- Updated GitHub workflows by @meling in #85
- Execution count error #81 by @hanish520 in #88
- build(deps): bump golang.org/x/net from 0.0.0-20220722155237-a158d28d115b to 0.7.0 by @dependabot[bot] in #90
- build(deps): bump github.com/containerd/containerd from 1.6.12 to 1.6.18 by @dependabot[bot] in #92
- build(deps): bump github.com/docker/docker from 20.10.14+incompatible to 20.10.24+incompatible by @dependabot[bot] in #95
- build(deps): bump golang.org/x/image from 0.0.0-20220413100746-70e8d0d3baa9 to 0.5.0 by @dependabot[bot] in #93
- Replace go.uber.org/multierr with stdlib/errors.Join by @meling in #97
- Latency simulation support by @hanish520 in #96
- build(deps): bump github.com/docker/distribution from 2.8.1+incompatible to 2.8.2+incompatible by @dependabot[bot] in #99
- Implement event-based contexts for view changes and timeouts by @johningve in #74
- build(deps): bump google.golang.org/grpc from 1.47.0 to 1.53.0 by @dependabot[bot] in #100
- modules/registry: fix ListModules with interface types by @johningve in #102
- Fixed the view-change failure. by @hanish520 in #104
- Fix lint issues that cause GitHub actions to fail by @meling in #114
- Fix flaky TestHandler by @meling in #121
- Fix synchronizer timer by @johningve in #105
- Upgrade dependencies by @meling in #118
- feat(eddsa): Added EDDSA crypto module by @hanish520 in #112
- Fix eddsa private key parsing bug by @hanish520 in #123
- build(deps): bump github.com/docker/docker from 25.0.4+incompatible to 25.0.5+incompatible by @dependabot[bot] in #125
- Added the APpLIED workshop paper reference by @meling in #133
- Fix TimeoutMsgFromProto reported in issue 129 by @meling in #130
- Upgraded to Go 1.23.4 and dependencies by @meling in #136
- Replace old location and latency management with cleaner and easier to use design by @meling in #137
- Tree configuration by @hanish520 in #138
- Fix #116 by @AlanRostem in #146
- Cue-based experiment configurations by @meling in #139
- Fix #148 - Location config bug by @AlanRostem in #149
- Remove deprecated grpc API calls by @AlanRostem in #145
- Upgraded to Uber's mocking framework, adapted tests and automated in makefile. by @AlanRostem in #152
- Omit Handel Aggregation protocol by @AlanRostem in #156
- Remove deprecated observer pattern in event loop. by @AlanRostem in #162
- Kauri-impl by @hanish520 in #158
- Cue config integration by @AlanRostem in #155
- EventQueue fixes by @AlanRostem in #163
- Added fixed view duration in synchronizer for tree leader by @hanish520 in #165
- Simplify config handling and other fixes to orchestration by @AlanRostem in #170
- Following testing convention in TestOrchestration by @AlanRostem in #167
- Cue/cli compatibility fixes by @AlanRostem in #169
- Implemented methods to compute waiting time at the replicas by @hanish520 in #171
- ConsensusLatency: Add consensus latency metrics by @hanish520 in #187
- Added timestamp to the block by @hanish520 in #192
New Contributors
- @oncethor made their first contribution in #32
- @AeonSw4n made their first contribution in #72
- @dependabot[bot] made their first contribution in #86
- @hanish520 made their first contribution in #88
Full Changelog: v0.4.0...v0.5.0
v0.4.0
This release includes bug fixes and improvements to several modules.
Highlights:
- add an implementation of the Twins strategy for testing protocol safety
- the event loop has been improved
- logging package moved out of
internal - log levels can now be set on a per-package basis
API changes (generated by gorelease)
github.com/relab/hotstuff/consensus
incompatible changes
Executor.Exec: changed from func(Command) to func(*Block)
Executor: changed from Executor to Executor
ForkHandler.Fork: changed from func(Command) to func(*Block)
ForkHandler: changed from ForkHandler to ForkHandler
compatible changes
(*OptionsBuilder).SetShouldVerifyVotesSync: added
ExecutorExt: added
ForkHandlerExt: added
Modules.EventLoop: added
Options.ShouldVerifyVotesSync: added
github.com/relab/hotstuff/consensus/byzantine
compatible changes
Byzantine: added
github.com/relab/hotstuff/eventloop
incompatible changes
(*EventLoop).RegisterAsyncHandler: removed
(*EventLoop).RegisterAsyncObserver: removed
compatible changes
(*EventLoop).Tick: added
github.com/relab/hotstuff/logging
compatible changes
package added
github.com/relab/hotstuff/modules
compatible changes
GetModule: added
Modules.EventLoop: added
RegisterModule: added
github.com/relab/hotstuff/synchronizer
compatible changes
(*Synchronizer).OnLocalTimeout: added
github.com/relab/hotstuff/twins
compatible changes
package added
Documentation update
v0.3.1 plotting: make it possible to create CSV files
v0.3.0
This release incorporates months of work on updating the experimentation workflow for hotstuff. Now we have a brand new tool that can deploy and execute experiments on remote servers and collect results -- all written in Go!
This release also introduces a new module system, an implementation of a simplified hotstuff protocol, and other improvements.
Some of the APIs are now maturing, while many are changed since the last release. I have more experience with the system as a whole now, so I hope the APIs will remain somewhat stable in the future.
Pre-release v0.2.2
This release fixes some spelling mistakes in the documentation.
Pre-release v0.2.1
This release includes bug fixes and documentation updates.
Modular version
This is the first pre-release of a modular relab/hotstuff.
Pre-rewrite
This is the old version of relab/hotstuff before it was rewritten with modularity in mind.