neovim/neovim — pull request #1130 by tarruda (2014-08-31 14:23:07+00:00)
Title: [WIP] Update to the experimental msgpack 2.0 branch

Using msgpack 2.0 changes that will impact us:

- `RAW` was renamed to `STR`, which is a byte array containing only utf-8 sequences. This is the reason why some msgpack libraries(eg: node.js) fail to deserialize the API metadata
- `BIN` was added to represent arbitrary byte arrays. Since this is a new type code, only clients supporting msgpack 2.0 can understand it.
- `EXT` was added to support custom API-specific types. This is great because we can use type codes for automatic client deserialization of Window, Buffer, etc(no need to perform the metadata-signature-name-checking hack currently done in the python client). In particular, I intend to remove typed arrays(BufferArray,WindowArray) which only exist as hint mechanism for python-client. We can support typed arrays in static languages by adding more information to the API metadata(which is cleaner since C doesn't support generics)

The msgpack-c branch supporting 2.0 is still beta, but I think it's best we start using it for two reasons:

- Lots of libraries already support msgpack 2.0
- Neovim is still in alpha state, so it's a good opportunity to help @redboltz test the branch before it's merged into mainline

For now the msgpack url points to my personal fork because of a failure in the cmake build