This is a new version of the Rust bindings for Libnbd. This version
contains two major differences compared to the previous one:
First it (hopefully) solves a bug in the asynchronous API which in some
cases could lead to a deadlock. This means that the implementation of
the asynchronous API has been somewhat changed.
Secondly, the dependency on rust-bindgen is finally removed. So LLVM is
no longer needed to build the bindings.
Best regards,
Tage
Tage Johansson (11):
rust: create basic Rust bindings
generator: Add information about asynchronous handle calls
generator: Add information about the lifetime of closures
rust: Use more specific closure traits
rust: Add a couple of integration tests
rust: Make it possible to run tests with Valgrind
rust: async: Create an async friendly handle type
generator: Add `modifies_fd` flag to the [call] structure
rust: async: Use the `modifies_fd` flag to exclude calls
rust: async: Add a couple of integration tests
rust: Add some examples
.gitignore | 7 +
.ocamlformat | 4 +
Makefile.am | 1 +
configure.ac | 13 +
generator/API.ml | 84 ++
generator/API.mli | 35 +
generator/Makefile.am | 4 +
generator/Rust.ml | 797 ++++++++++++++++++
generator/Rust.mli | 22 +
generator/RustSys.ml | 167 ++++
generator/RustSys.mli | 19 +
generator/generator.ml | 4 +
rust/Cargo.toml | 60 ++
rust/Makefile.am | 78 ++
rust/examples/concurrent-read-write.rs | 135 +++
rust/examples/connect-command.rs | 39 +
rust/examples/fetch-first-sector.rs | 38 +
rust/examples/get-size.rs | 29 +
rust/libnbd-sys/Cargo.toml | 32 +
rust/libnbd-sys/build.rs | 26 +
rust/libnbd-sys/src/.keep | 0
rust/run-tests.sh | 37 +
rust/src/async_handle.rs | 268 ++++++
rust/src/error.rs | 154 ++++
rust/src/handle.rs | 67 ++
rust/src/lib.rs | 36 +
rust/src/types.rs | 20 +
rust/src/utils.rs | 23 +
rust/tests/nbdkit_pattern/mod.rs | 28 +
rust/tests/test_100_handle.rs | 25 +
rust/tests/test_110_defaults.rs | 33 +
rust/tests/test_120_set_non_defaults.rs | 53 ++
rust/tests/test_130_private_data.rs | 28 +
rust/tests/test_140_explicit_close.rs | 31 +
rust/tests/test_200_connect_command.rs | 32 +
rust/tests/test_210_opt_abort.rs | 31 +
rust/tests/test_220_opt_list.rs | 86 ++
rust/tests/test_230_opt_info.rs | 120 +++
rust/tests/test_240_opt_list_meta.rs | 147 ++++
rust/tests/test_245_opt_list_meta_queries.rs | 93 ++
rust/tests/test_250_opt_set_meta.rs | 123 +++
rust/tests/test_255_opt_set_meta_queries.rs | 109 +++
rust/tests/test_300_get_size.rs | 35 +
rust/tests/test_400_pread.rs | 39 +
rust/tests/test_405_pread_structured.rs | 79 ++
rust/tests/test_410_pwrite.rs | 58 ++
rust/tests/test_460_block_status.rs | 92 ++
rust/tests/test_620_stats.rs | 75 ++
rust/tests/test_async_100_handle.rs | 25 +
rust/tests/test_async_200_connect_command.rs | 33 +
rust/tests/test_async_210_opt_abort.rs | 32 +
rust/tests/test_async_220_opt_list.rs | 81 ++
rust/tests/test_async_230_opt_info.rs | 122 +++
rust/tests/test_async_240_opt_list_meta.rs | 147 ++++
.../test_async_245_opt_list_meta_queries.rs | 91 ++
rust/tests/test_async_250_opt_set_meta.rs | 122 +++
.../test_async_255_opt_set_meta_queries.rs | 107 +++
rust/tests/test_async_400_pread.rs | 40 +
rust/tests/test_async_405_pread_structured.rs | 84 ++
rust/tests/test_async_410_pwrite.rs | 59 ++
rust/tests/test_async_460_block_status.rs | 92 ++
rust/tests/test_async_620_stats.rs | 76 ++
rust/tests/test_log/mod.rs | 86 ++
rustfmt.toml | 19 +
64 files changed, 4732 insertions(+)
create mode 100644 .ocamlformat
create mode 100644 generator/Rust.ml
create mode 100644 generator/Rust.mli
create mode 100644 generator/RustSys.ml
create mode 100644 generator/RustSys.mli
create mode 100644 rust/Cargo.toml
create mode 100644 rust/Makefile.am
create mode 100644 rust/examples/concurrent-read-write.rs
create mode 100644 rust/examples/connect-command.rs
create mode 100644 rust/examples/fetch-first-sector.rs
create mode 100644 rust/examples/get-size.rs
create mode 100644 rust/libnbd-sys/Cargo.toml
create mode 100644 rust/libnbd-sys/build.rs
create mode 100644 rust/libnbd-sys/src/.keep
create mode 100755 rust/run-tests.sh
create mode 100644 rust/src/async_handle.rs
create mode 100644 rust/src/error.rs
create mode 100644 rust/src/handle.rs
create mode 100644 rust/src/lib.rs
create mode 100644 rust/src/types.rs
create mode 100644 rust/src/utils.rs
create mode 100644 rust/tests/nbdkit_pattern/mod.rs
create mode 100644 rust/tests/test_100_handle.rs
create mode 100644 rust/tests/test_110_defaults.rs
create mode 100644 rust/tests/test_120_set_non_defaults.rs
create mode 100644 rust/tests/test_130_private_data.rs
create mode 100644 rust/tests/test_140_explicit_close.rs
create mode 100644 rust/tests/test_200_connect_command.rs
create mode 100644 rust/tests/test_210_opt_abort.rs
create mode 100644 rust/tests/test_220_opt_list.rs
create mode 100644 rust/tests/test_230_opt_info.rs
create mode 100644 rust/tests/test_240_opt_list_meta.rs
create mode 100644 rust/tests/test_245_opt_list_meta_queries.rs
create mode 100644 rust/tests/test_250_opt_set_meta.rs
create mode 100644 rust/tests/test_255_opt_set_meta_queries.rs
create mode 100644 rust/tests/test_300_get_size.rs
create mode 100644 rust/tests/test_400_pread.rs
create mode 100644 rust/tests/test_405_pread_structured.rs
create mode 100644 rust/tests/test_410_pwrite.rs
create mode 100644 rust/tests/test_460_block_status.rs
create mode 100644 rust/tests/test_620_stats.rs
create mode 100644 rust/tests/test_async_100_handle.rs
create mode 100644 rust/tests/test_async_200_connect_command.rs
create mode 100644 rust/tests/test_async_210_opt_abort.rs
create mode 100644 rust/tests/test_async_220_opt_list.rs
create mode 100644 rust/tests/test_async_230_opt_info.rs
create mode 100644 rust/tests/test_async_240_opt_list_meta.rs
create mode 100644 rust/tests/test_async_245_opt_list_meta_queries.rs
create mode 100644 rust/tests/test_async_250_opt_set_meta.rs
create mode 100644 rust/tests/test_async_255_opt_set_meta_queries.rs
create mode 100644 rust/tests/test_async_400_pread.rs
create mode 100644 rust/tests/test_async_405_pread_structured.rs
create mode 100644 rust/tests/test_async_410_pwrite.rs
create mode 100644 rust/tests/test_async_460_block_status.rs
create mode 100644 rust/tests/test_async_620_stats.rs
create mode 100644 rust/tests/test_log/mod.rs
create mode 100644 rustfmt.toml
--
2.41.0