We are happy to announce the release of laminar 0.2.0. It focuses on code quality, performance, and some awesome features.
We also want to introduce Justin, who joined the networking team, during the development of 0.2.0!
Introduced Ordering, Sequencing of packets
Packets can be arranged into different streams.
A channel-based API, ready to switch over to MIO
Removed all locking and reference counters
Increased Unit Test coverage
Removed some dependencies
Introduced socket events: connect, timeout, packet
Restructured code for a better organization
Ordering & Sequencing
We implemented ways to order and sequence packets.
Sequencing: Only the newest packets will be passed through to the user. Older packets will be dropped if they arrive after a newer one. Like, receive order:
1,3,2,5,4the user will only get
1,3,5. Sequencing also allows some dropping to happen.
Ordering: All items are returned in order if laminar receives
1,3,2,5,4the user will get
You can view ‘arranging streams’ as a way to separate packets that have no relationship with one another into logical streams. Player movement and chat messages, for example, are often unrelated to each other. Laminar allows you to specify a stream on which the ordering or sequencing will be done.
This release, we first attempted to use Mio. However, we came across some major performance problems with the usage of Mio on Windows. We decided to wait until Mio has better Windows support before using it. We kept the channel-based API intended for usage with Mio, however.
This release, we focused a great deal on code quality and documentation. We kept the unit test coverage in the 97%+ range, reformatted our code for better readability, and documented our code - our book is hosted over here.
We removed all locking and reference counted types.