- Full Mono support now available for Helios 2.x.
- Improved exception logging inside
TcpSocketChannel
and others.
You can see the full set of changes for Helios 2.1.3 here.
- Made DNS resolution configurable - can target IPV4 / IPV6 or any other
AddressFamily
. - Caught
ObjectDisposedException
s that are thrown on shutdown so they are no longer logged.
- Fixed byte buffers - there were reporting that they were encoding as
LittleEndian
. Turns out they were usingBigEndian
. This has been fixed. - Fixed issue with
AbstractDerivedByteBuf
where callingRetain
would return the original underlying buffer and not the derived buffer. - Made configuration warnings in
ServerBootstrap
less cryptic.
- Added support for batch writes
- Made write objects reusable
- IPv6 support for legacy API
Net performance impact of above changes as reported by build server:
Before
Metric | Units | Max | Average | Min | StdDev |
---------------- |---------------- |---------------- |---------------- |---------------- |---------------- | TotalCollections [Gen0] | collections / s | 40.14 | 40.14 | 40.14 | 0.00 | TotalCollections [Gen1] | collections / s | 2.86 | 2.86 | 2.86 | 0.00 | TotalCollections [Gen2] | collections / s | 0.53 | 0.53 | 0.53 | 0.00 | TotalBytesAllocated | bytes / s | 293,950.63 | 293,950.63 | 293,950.63 | 0.00 | [Counter] inbound ops | operations / s | 55,782.90 | 55,782.90 | 55,782.90 | 0.00 | [Counter] outbound ops | operations / | 55,783.07 | 55,783.07 | 55,783.07 | 0.00 | Max concurrent connections | operations | 440.00 | 440.00 | 440.00 | 0.00 |
After
Metric | Units | Max | Average | Min | StdDev |
---------------- |---------------- |---------------- |---------------- |---------------- |---------------- | TotalCollections [Gen0] | collections | 26.41 | 26.41 | 26.41 | 0.00 | TotalCollections [Gen1] | collections | 8.33 | 8.33 | 8.33 | 0.00 | TotalCollections [Gen2] | collections | 0.08 | 0.08 | 0.08 | 0.00 | TotalBytesAllocated | bytes | 38,170.63 | 38,170.63 | 38,170.63 | 0.00 | [Counter] inbound ops | operations | 99,728.63 | 99,728.63 | 99,728.63 | 0.00 | [Counter] outbound ops | operations | 99,728.67 | 99,728.67 | 99,728.67 | 0.00 | Max concurrent connections | operations | 945.00 | 945.00 | 945.00 | 0.00 |
- Added DNS support to
ServerBootstrap
so hostnames can be bound.
- Added
MessageToMessageDecoder<T>
base class to Helios.Codecs
Major performance and stability rewrite of Helios, including breaking API changes.
The existing API has been left intact, but marked as Obsolete
. Going forward please use the IChannel
APIs provided inside the Helios.Channels
namespace. They are virtually identical to the equivalent DotNetty APIs, although with some minor differences as a result of existing code and styles within Helios itself.
Bugfixed - fixed an issue with NoOpDecoder
where it wouldn't properly drain incoming IByteBuffer
instances.
Bugfix - we no longer throw exceptions upon shutting down TCP reactors.
Major update to Helios designed to help support Akka.NET v1.
- Added Mono support to all outbound clients. All benchmarks have been run on Mono as well as the full build suite.
- Fixed data loss issued caused during periods of high-speed writes. This has been resolved.
- Added stubs for tracing and monitoring.
- Integrated Helios.DedicatedThreadPool for a massive performance boost on the
DedicatedThreadFiber
, used by default on most socket clients.
- Minor bug fixes for concurrent exceptions