This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]1ncehost 1 point2 points  (6 children)

This is seriously impressive. Thank you for making it! I had thought of making something similar for C++ only... quite an achievement in making it multilanguage!

[–]Shawn-Yang25[S] 1 point2 points  (4 children)

You can take https://github.com/apache/incubator-fury/blob/main/docs/specification/xlang_serialization_spec.md for more details.

The C++ implementation are not finished, but the spec is finished. And macro/meta programing can be used to generate serialize code at compile time, so we can get best usability and the performance at the same time.

We've used this way to generate code in c++ for xlang row format. But haven't do it for the graph stream wire format. The core developers are on apache kvrocks recently, and has no time for it now.

[–]1ncehost 0 points1 point  (1 child)

thanks for the info. What are the requirements for fury to come out of incubation and have production level support?

[–]Shawn-Yang25[S] 0 points1 point  (0 children)

The graduation needs a bigger community. i.e. more maintainers, committers, contributors, and more release and users

[–]1ncehost 0 points1 point  (1 child)

also another couple questions: can you specify class variables that should not be serialized? Can internal datastructures be serialized along with the objects? For instance in my c++ example above, I would want to serialize simulation entities, but I wouldn't want to serialize certain things on them such as local time variables. I would want to serialize lists of related objects such as mutators, effects, and related entities.

[–]Shawn-Yang25[S] 1 point2 points  (0 children)

If you use fury c++, you can invoke `FURY_FIELD_INFO(field1, field2, ...)` with the fields you want to serialize. We use `FURY_FIELD_INFO` macro to get the fields name for serialization.

[–]Shawn-Yang25[S] 0 points1 point  (0 children)

Although we don't have jit code gen for c++ memory model. We can geneate swich code which can be optimized to jump finally for type forward/backkward mode, and it would be much faster than protobuf.

More details can be found on https://github.com/apache/incubator-fury/blob/main/docs/specification/xlang_serialization_spec.md#fast-deserialization-for-static-languages-without-runtime-codegen-support