std.serialization: pre-voting review / discussion

glycerine noreply at noreply.com
Tue Aug 13 15:54:04 PDT 2013


On Tuesday, 13 August 2013 at 15:12:40 UTC, Dicebot wrote:
> On Tuesday, 13 August 2013 at 15:04:38 UTC, Jacob Carlborg 
> wrote:
>> I worked quite hard with the documentation. There are code 
>> examples here as well, I just don't know where to put them in 
>> Phobos:
>>
>> https://github.com/jacob-carlborg/orange/wiki/_pages

I'm included to prefer the Thrift bindings over Orange since I 
need binary compression and type safety (XML??? yikes), 
inter-language operability, and most essentially, data versioning.

Nonetheless, in order to make a realistic comparison and 
evaulation, I need much more of the theory of operation, and a 
description of the Orange design.  I appreciate that you worked 
hard with the documentation.  But most of the essential 
description is missing.

Here is an outline of serialization tradeoffs and architectural 
issues that should be discussed in the documentation.

1. Interface Definition Language (IDL): required or not? If not, 
how do know the details of what to serialize. If not, how do you 
handle/support data versioning? If not, how do you interoperate 
without another language? If yes, which types are supported and 
what is the syntax and grammar of the IDL?

2. Is the serialized format independently de-marshallable, or is 
meta information required in addition?

3. Which transports if any, are integrated/supported?  Memory 
buffer, file descriptor, framed, zero-copy, socket, SSL support, 
JSON, etc.

4. Are service definitions supported (methods on objects or 
functions)? Are they versioned?

5. How compatible is the format with other languages?

6. How compact is the encoding?

7. How fast is to marshal and unMarshal?  What tradeoffs were 
made.

8. Is there a debug encoding, text that is human readable?

9. To emphasize the important point of the first item again: data 
versioning: how do you upgrade your cluster when a data 
definition changes?  If your serailization format requires 
simultaneous downtime for the entire cluster instead of 
supporting incremental upgrade, I'd say your architecture is 
seriously antiquated.


More information about the Digitalmars-d mailing list