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!

Summary:

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

Bug fixes

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,4 the 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,4 the user will get 1,2,3,4,5 .

Arranging Streams

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.

Channel-Based API

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.

Code Quality

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.

Performance

We removed all locking and reference counted types.