So, I was playing around with packet compression for Sauerbraten
using an adaptive range compressor. It turned out that did not work
out so well on Sauerbraten's data, because I had already so tightly
quantized it that the gains were small. But since the packet
compressor was still good on other data besides Sauerbraten's and was
of higher quality than other similar performing range compressors I
could find, I decided to keep it in ENet.
This also gave me a chance to break the protocol and introduce some
various things, thus there will be a dual release of 1.2.2, which
does not contain any protocol or API changes, and 1.3.0, which
contains the packet compression changes amongst others. In 1.3.0 I
also changed how session disambiguation works, to the effect that I
cut down on packet header size (by 4 bytes) unless the user enables
checksums. Since I was free to break the API a bit, I did the
specify channel limit on host creation thing, and also added a
connect data field to connect events since someone wanted that a
while ago. Also noteworthy is that even in 1.2.2, packet checksums
can be enabled by setting a callback, no longer breaking binary
compatibility of the longer amongst same-numbered builds, which
should make it easier on those Linux distributions that distribute it
as a shared library.
So now I think the feature set is mostly complete, and I would like
people to test the pre-release packages to make sure there are no
issues with them, after which I will do a real release if everything
is okay.
1.2.2 pre-release: http://lee.fov120.com/enet-1.2.2-not-released.tar.gz
1.3.0 pre-release: http://lee.fov120.com/enet-1.3.0-not-released.tar.gz
Note that CVS currently only contains the 1.2.2 changes. The 1.3.0
pre-release was taken from my private Sauerbraten tree, and will only
be stuffed into CVS when I am ready for the final release.
Proposed ChangeLogs:
ENet 1.3.0 (May 20, 2010):
* enet_host_create() now requires the channel limit to be specified as
a parameter
* enet_host_connect() now accepts a data parameter which is supplied
to the receiving receiving host in the event data field for a connect
event
* added an adaptive order-1 range coder as a built-in compressor option
which can be set with enet_host_compress_with_range_coder()
* added support for packet compression configurable with a callback
* improved session number handling to not rely on the packet checksum
field, saving 4 bytes per packet unless the checksum option is used
* removed the dependence on the rand callback for session number
handling
Caveats: This version is not protocol compatible with the 1.2 series or
earlier. The enet_host_connect and enet_host_create API functions
require
supplying additional parameters.
ENet 1.2.2 (May 20, 2010):
* checksum functionality is now enabled by setting a checksum callback
inside ENetHost instead of being a configure script option
* added totalSentData, totalSentPackets, totalReceivedData, and
totalReceivedPackets counters inside ENetHost for getting usage
statistics
* added enet_host_channel_limit() for limiting the maximum number of
channels allowed by connected peers
* now uses dispatch queues for event dispatch rather than potentially
unscalable array walking
* added no_memory callback that is called when a malloc attempt fails,
such that if no_memory returns rather than aborts (the default
behavior),
then the error is propagated to the return value of the API calls
* now uses packed attribute for protocol structures on platforms with
strange alignment rules
* improved autoconf build system contributed by Nathan Brink allowing
for easier building as a shared library
Caveats: If you were using the compile-time option that enabled
checksums,
make sure to set the checksum callback inside ENetHost to enet_crc32 to
regain the old behavior. The ENetCallbacks structure has added new
fields,
so make sure to clear the structure to zero before use if
using enet_initialize_with_callbacks().
_______________________________________________
ENet-discuss mailing list
[email protected]
http://lists.cubik.org/mailman/listinfo/enet-discuss