Thread overview
Serialization library with support for circular references?
Nov 10, 2012
Andrej Mitrovic
Nov 10, 2012
Jacob Carlborg
Nov 10, 2012
Andrej Mitrovic
November 10, 2012
I've been using msgpack for a while, unfortunately I've just discovered it doesn't support serializing circular references (http://jira.msgpack.org/browse/MSGPACK-81), e.g.:

import msgpack;

class Foo
{
    int x;
    Bar obj;
}

class Bar
{
    int x;
    Foo obj;
}

void main()
{
    auto foo = new Foo();
    auto bar = new Bar();
    foo.obj = bar;
    bar.obj = foo;
    ubyte[] data = msgpack.pack(foo);
}

Orange doesn't work with circular references either. Is there any other serialization library that supports this scenario? I'm looking for something fast, and binary format is ok, I don't need a user-readable format.
November 10, 2012
On 2012-11-10 13:42, Andrej Mitrovic wrote:

> Orange doesn't work with circular references either. Is there any
> other serialization library that supports this scenario? I'm looking
> for something fast, and binary format is ok, I don't need a
> user-readable format.

If Orange doesn't work with circular references it's a bug, please file an issue:

https://github.com/jacob-carlborg/orange

Although Orange is probably not very fast and it currently only has an XML archive.

-- 
/Jacob Carlborg
November 10, 2012
On 11/10/12, Jacob Carlborg <doob@me.com> wrote:
> Although Orange is probably not very fast and it currently only has an XML archive.

Heh yeah I'm actually reading XML into classes and then want to serialize this for faster access when re-running the app, so it probably wouldn't be a good idea to serialize back to XML.