On Wednesday, January 31, 2018 at 4:17:09 PM UTC+1, Greg Hendershott wrote:
>
> Another way is for two (OS) processes to "pipe" I/O to each other. 
>

This is a great idea since it would allow to integrate any language with 
the .NET application. It is how Neovim does it: the main application is 
Neovim, which is written in C, and it acts as a server for a client 
application written in whatever other language. The protocol used is 
MessagePack RPC:
https://github.com/msgpack-rpc/msgpack-rpc/blob/master/spec.md

It is built on top of the MessagePack serialisation format. In a nutshell, 
MessagePack is like JSON, but binary. This makes it smaller to transport 
and faster to pack and unpack, but it loses the nice human-readability of 
JSON. I think that's a good tradeoff for data that is not meant to be 
stored and manipulated by a person, but instead passed around between 
processes.
https://msgpack.org/

I have already written a general-purpose MessagePack library for Racket, as 
well as a language client for Neovim:
https://pkgs.racket-lang.org/package/msgpack
https://pkgs.racket-lang.org/package/nvim-client

The MessagePack library is safe to use. The Neovim client is my first time 
doing something with RPC, so I'm not yet ready to call it stable. The part 
of the codebase which implements MessagePack RPC is not entangled with the 
Neovim-specific parts, so once the language client matures it will be easy 
to take it out and make it into a general-purpose MessagePack RPC library.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to