The Lua/APR binding now contains proper serialization support based on the excellent table-to-source serializer included in Metalua. Here's what I've added to / changed about the serialization function: - Support for numbers with large precision (e.g. the Metalua table-to-source serializer cannot round trip math.pi and math.huge without changing the values) - Support for Lua functions with upvalues (the Metalua table-to-source serializer doesn't support upvalues) - Support for userdata objects created by the Lua/APR binding (based on a reference mechanism using UUID values) - Lots of dedicated tests for the serializer, and of course it's also getting tested by the multi threading tests In the process of adding serialization support I've rewritten the multi threading tests to take advantage of the new support for upvalues. I've also removed apr.thread() and renamed apr.thread_create() to apr.thread() because it now has full support for serialization of functions (the documentation has been updated accordingly).