On Monday, 3 August 2015 at 09:21:50 UTC, Atila Neves wrote:
http://code.dlang.org/packages/cerealed
What's new?
* Performance improvements
* New UDAs for networking packets for even less required
boilerplate
The first new thing is self-explanatory. The second one is
explained briefly in this blog post:
https://www.reddit.com/r/programming/comments/3flnlt/cerealed_a_d_library_for_declarative_binary/
(also on HN but you know how that goes)
The summary is you can now write this:
struct UdpPacket {
static struct Header {
ushort srcPort;
ushort dstPort;
ushort length;
ushort checksum;
}
enum headerSize = unalignedSizeof!Header;
alias header this;
Header header;
@LengthInBytes("length - headerSize") ubyte[] data;
}
Code? Who needs code when the compiler can write it for you?
Atila
1. Are there any convenience functions similar to msgpack's
pack() and unpack() providing compactness and elegance as
import msgpack;
auto x = [1,2];
assert(x.pack.unpack!typeof(x) == x);
2. How does the Cereal performance compare to Msgpack after the
recent optimizations?