[Libguestfs] [libnbd PATCH v6 00/13] Rust Bindings for Libnbd

Tage Johansson tage.j.lists at posteo.net
Fri Aug 4 11:34:03 UTC 2023


This is the 6th version of the Rust bindings. It solves a problem with
make clean and includes one more patch which I for some reason thought
was already upstream.

Best regards,
Tage


Tage Johansson (13):
  generator: Add an optional `formatter` argument to the [output_to]
    function in generator/utils.mli. This defaults to [None] and the
    only code formatter supported so far is Rustfmt.
  rust: create basic Rust bindings
  rust: Add a couple of integration tests
  rust: Make it possible to run tests with Valgrind
  rust: Add some examples
  generator: Add information about asynchronous handle calls
  generator: Add information about the lifetime of closures
  rust: Use more specific closure traits
  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: async: Add an example

 .gitignore                                    |  10 +
 .ocamlformat                                  |   4 +
 Makefile.am                                   |   2 +
 configure.ac                                  |  30 +
 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 +
 generator/utils.ml                            |  13 +-
 generator/utils.mli                           |   8 +-
 rust/Cargo.toml                               |  59 ++
 rust/Makefile.am                              | 106 +++
 rust/cargo_test/Cargo.toml                    |  23 +
 rust/cargo_test/README.md                     |   3 +
 rust/cargo_test/src/lib.rs                    |  31 +
 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/lib.rs                    |  19 +
 rust/run-tests.sh.in                          |  39 +
 rust/src/async_handle.rs                      | 268 ++++++
 rust/src/error.rs                             | 157 ++++
 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 +
 scripts/git.orderfile                         |  12 +
 70 files changed, 4891 insertions(+), 3 deletions(-)
 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/cargo_test/Cargo.toml
 create mode 100644 rust/cargo_test/README.md
 create mode 100644 rust/cargo_test/src/lib.rs
 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/lib.rs
 create mode 100755 rust/run-tests.sh.in
 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


base-commit: 33a47171653931b7e255e33930697a55eae1493b
prerequisite-patch-id: ff317be8e27608697ee070388502566ecf8546bb
prerequisite-patch-id: 6a68a5da00c78e039972118bfde68cf87d7db6af
prerequisite-patch-id: a6ae1f1d90ca8cb69d17c977428855acadd47608
prerequisite-patch-id: 053dc904d579f2d065228c1c5780109871e9cd66
prerequisite-patch-id: 99eb277dfb04af7930cc827d85fd011fc54bdd4c
prerequisite-patch-id: 0b4159540024f935140d070146d89f95b96576fa
prerequisite-patch-id: f320498a380789b51bf65b603c0627167453352c
prerequisite-patch-id: f9aea5f724ac167744aa72456340c370a43611a2
prerequisite-patch-id: 9ff0b41ad9fd00d5d67de92d574255b46cdf150a
prerequisite-patch-id: 1fd2bcd42012e5d0ab10f63a1849f2ccc706e6d6
prerequisite-patch-id: 7c5b4b59f2765e8c255857a0834805d19cecf65d
prerequisite-patch-id: 4d7bd8e07e4710e3420c1ee71502f0fd0da91ea7
prerequisite-patch-id: 5ed2a56efbc9554261f875cd299dd2b7483c78c8
prerequisite-patch-id: 52d475de3ab033859d6bd87996078ae7b3385695
prerequisite-patch-id: c6a05c89340bed6471de1d74ef95acb5b6ac2c25
prerequisite-patch-id: 097dd7285726e45b02493fc306fd3017748d50e2
prerequisite-patch-id: 359900c28144cf2059e23a2911ea9f9f9ca5db23
prerequisite-patch-id: 4db98f7b211c0de9a4095b300970e1973cf0716c
prerequisite-patch-id: 0bb320af5109c1c21e5b76d44e6ec1e7e685fd9f
prerequisite-patch-id: 205525d8ea09e77ea13f43d0720153ed5904dbcd
prerequisite-patch-id: f76cdc6ceca68268df92341985068388f25291ff
prerequisite-patch-id: 84cb140c8f0dd089ca8e9567cc2117bf38c9e558
prerequisite-patch-id: b2c3285d05fd56a258d3ec47d7d4cdcf06a57014
prerequisite-patch-id: 8938eab7a42f8a7ed82c9372be9bf29c2991787f
prerequisite-patch-id: 7694233787dd758add8c30e69965dfd1ffee7012
prerequisite-patch-id: d6bcb838a1875541f3f125b95f346c21a7d614ea
--
2.41.0



More information about the Libguestfs mailing list