lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

Announcing the release of vstruct 1.0b3. It's actually been out for a
while, but I haven't gotten around to posting on the ML to that effect.
Release notice follows (and is mirrored on

	What is it?
A library for packing and unpacking binary data, not unlike lhf's lpack
or Roberto's struct library. This is the beta 3 release; feedback, bug
reports, patches, criticism, proofreading, anything and everything else
welcome. At this point, I'm just doing bugfixes and minor adjustments
in preparation for the final 1.0 release; major feature changes (such
as bit-aligned IO) will go into 1.1.

	Why use it?
- read and write support for signed and unsigned integers, fixed point
rationals, fixed-length, null-terminated, null-padded & counted strings,
skipping and padding, booleans, floats, and bitmasks
- unpack/pack from/to strings, files, or anything that supports
file-like :read/:write/:seek operations
- any type can be any byte-aligned width - 24-bit integers? booleans
stored as uint32_ts? 128-bit masks? No problem.
- supports naming, grouping and repetition of fields (and groups, nested
arbitrarily deep). You can specify the structure of the data in the
format string and get back a table with conveniently named fields (and
possibly subtables); and then you can unpack an array of 10,000 of them
just by putting "* 10000" on the end.
- written entirely in Lua, and thus very portable and easy to extend.

	Why NOT use it?
- written entirely in Lua, and thus slower and more memory-hungry than C
- no support for bit-aligned fields (yet - planned for 1.1)

	What's planned for beta 4?
- Hopefully the next version will actually be 1.0 final rather than a beta!
- that said, 1.0 may put memoization back in as an optional feature

	Where is it?
The beta 3 package can be found in tar.bz2 format here:
The project is also available via public read-only git repository:
Documentation and credits are in the README. Put it someplace in your
LUA_PATH which looks for "?/init.lua".