TheFramework: Difference between revisions
Jump to navigation
Jump to search
| Line 8: | Line 8: | ||
=RPC= |
=RPC= |
||
==Message Format== |
==Message Format== |
||
| ⚫ | |||
* Maybe just use Rust structs? Can redefine them separately later... |
* Maybe just use Rust structs? Can redefine them separately later... |
||
* Could use codegen... Can go from Rust structs to external format. |
* Could use codegen... Can go from Rust structs to external format or visa-versa. |
||
* Could keep them in Rust native and provide a C library interface to interact with them. |
* Could keep them in Rust native and provide a C library interface to interact with them. |
||
===Capnproto?=== |
|||
| ⚫ | |||
* Plays well with other languages. |
|||
* Need to find out how to extent the codegenerated types with my own. |
|||
* Would need to use capnproto's internal native formats instead of Rusts. |
|||
* Good versioning... |
|||
===JSON?=== |
|||
* I don't like JSON. |
|||
* It's fairly well known and supported. |
|||
===Enums vs "strings"?=== |
===Enums vs "strings"?=== |
||
* Strings much more waste on the wire. |
* Strings much more waste on the wire. Higher parsing overhead. |
||
* Strings allow for custom types. Could just add a custom type enum. |
* Strings allow for custom types. Could just add a custom type enum that has a string. |
||
* Enums could be backwards compatible if you just ignore anything you don't understand. |
* Enums could be 'backwards compatible' if you just ignore anything you don't understand. |
||
==ASync== |
==ASync== |
||
Revision as of 00:36, 28 December 2016
Outline
- Multi-user realtime 3d graphics editor.
- Microservice inspired architecture. But use IPC/shared memory when possible.
- Need a local daemon as a gateway/introducer for the services.
- Hash all the things.
RPC
Message Format
- Maybe just use Rust structs? Can redefine them separately later...
- Could use codegen... Can go from Rust structs to external format or visa-versa.
- Could keep them in Rust native and provide a C library interface to interact with them.
Capnproto?
- A bit of a pain to integrate into Rust.
- Plays well with other languages.
- Need to find out how to extent the codegenerated types with my own.
- Would need to use capnproto's internal native formats instead of Rusts.
- Good versioning...
JSON?
- I don't like JSON.
- It's fairly well known and supported.
Enums vs "strings"?
- Strings much more waste on the wire. Higher parsing overhead.
- Strings allow for custom types. Could just add a custom type enum that has a string.
- Enums could be 'backwards compatible' if you just ignore anything you don't understand.
ASync
Look into using tokio for async.
Daemonization
2 libraries. One doesn't do Windows but seems better?
IPC
Servo has an ipc-channel crate. Doesn't do Windows yet.