forked from extern/nushell
a7295c8f1b
* add MessagePack as a plugin protocol * tmp merge from remote * add benchmark * use less benchmark group, and add README for analysing benchmark result * update README * update README * rewrite * remove comment * rename * fmt Co-authored-by: Darren Schroeder <343840+fdncred@users.noreply.github.com>
1.2 KiB
1.2 KiB
nu-plugin
Updating Cap'n Proto schema
When modifying a protocol's struct that is used in plugins (such as Signature), you need to update the capnproto schema file and recompile it into the Rust source code. The steps are as follows:
- Change
src/serializers/capnp/schema/plugin.capnp
as necessary - Install
capnp
tool (it's a C++ binary, commonly available in package managers) - Install Rust support for
capnp
calledcapnpc-rust
:git clone https://github.com/capnproto/capnproto-rust
somewherecd capnproto-rust/capnpc
cargo install --path=.
- Then, call
capnp compile -orust plugin.capnp
(change path as necessary) - The result should be
plugin_capnp.rs
file: Use it to replace the oldsrc/plugin_capnp.rs
. - It needs to be autoformatted (
cargo fmt --all
) - Modify the serialize/deserialize functions. Check the following PRs for details:
Benchmark
Here is a simple benchmark for different protocol for encoding/decoding nushell table, with different rows and columns. You can simply run cargo bench
to run benchmark.
The relative html report is in target/criterion/report/index.html
.