Releases: reactor/BlockHound
1.0.0.RELEASE
This is a first release of BlockHound 🎉
Changes since 1.0.0.RC1
📃 Docs
🚀 Features / Enhancements
- Simplify integrations after RC1 refactorings (#54) @bsideup
- hide
BlockHoundRuntime
from public API (#53) @bsideup
⚠️ note that this is a source (not binary) breaking change (if you were usingBlockHoundRuntime
class directly), but it was never intended to be used directly, only by instrumentation.
🐛 Bug Fixes
1.0.0.RC1
What's Changed
This this is the first release candidate and it focuses on the performance.
Previous versions were using a native agent (in C++).
But it was problematic due to the complexity of the build plus the performance overhead of the native switch.
This release includes a major rewrite that removes the native code and now only uses the bytecode instrumentation to achieve the same result.
Not only it helped us to reduce the complexity of the project (both build-wise and code-wise, making it easier for potential contributors to submit their changes), but the performance was improved significantly!
Before:
Benchmark Mode Cnt Score Error Units
BlockHoundBenchmark.baselineBlockingCallInBlockingThread avgt 9 0,520 ± 0,028 us/op
BlockHoundBenchmark.measureBlockingCallInBlockingThread avgt 9 0,853 ± 0,040 us/op
BlockHoundBenchmark.measureAllowedBlockingCall avgt 9 3,039 ± 0,145 us/op
After:
Benchmark Mode Cnt Score Error Units
BlockHoundBenchmark.measureBlockingCallInBlockingThread avgt 9 0,528 ± 0,025 us/op
BlockHoundBenchmark.measureAllowedBlockingCall avgt 9 0,538 ± 0,037 us/op
If a blocking call in non-non-blocking thread was previously having an overhead of ~0,320us/op, it is now close to 0,010us/op, which is already a great improvement!
But, there was a case where the implementation detail of BlockHound was adding even more overhead - allowed blocked calls (logging, class loading, etc etc).
And, if before it was ~2,500us/op, it went down to ~0,020us/op 🎉
🚀 Features / Enhancements
1.0.0.M5
1.0.0.M4
1.0.0.M3
1.0.0.M2
What's Changed
🚀 Features / Enhancements
- Integrate with JUnit Platform (#13) @bsideup
⚠️ Gradle users are advised to addtestCompile 'org.junit.platform:junit-platform-launcher'
due to a bug in Gradle - Statically link Windows mingw binaries (#16, #17) @jrehwaldt
🐛 Bug Fixes
- Fixes the Windows binary name (#16) @jrehwaldt