mirror of
https://github.com/nushell/nushell
synced 2024-12-28 22:13:10 +00:00
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>
23 lines
1.2 KiB
Markdown
23 lines
1.2 KiB
Markdown
# 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:
|
|
1. Change `src/serializers/capnp/schema/plugin.capnp` as necessary
|
|
2. Install `capnp` tool (it's a C++ binary, commonly available in package managers)
|
|
3. Install Rust support for `capnp` called `capnpc-rust`:
|
|
1. `git clone https://github.com/capnproto/capnproto-rust` somewhere
|
|
2. `cd capnproto-rust/capnpc`
|
|
3. `cargo install --path=.`
|
|
4. Then, call `capnp compile -orust plugin.capnp` (change path as necessary)
|
|
5. The result should be `plugin_capnp.rs` file: Use it to replace the old `src/plugin_capnp.rs`.
|
|
6. It needs to be autoformatted (`cargo fmt --all`)
|
|
7. Modify the serialize/deserialize functions. Check the following PRs for details:
|
|
* https://github.com/nushell/nushell/pull/4980
|
|
* https://github.com/nushell/nushell/pull/4920
|
|
|
|
## 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`.
|