Internships/ProjectIdeas/RustBindingsForLibNBD: Difference between revisions

From QEMU
(Created page with "=== Rust bindings for libnbd === '''Summary:''' Add Rust bindings for [https://gitlab.com/nbdkit/libnbd libnbd] [https://en.wikipedia.org/wiki/Network_block_device Network...")
 
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
=== Rust bindings for libnbd ===
=== Rust bindings for libnbd ===
   
   
'''Summary:''' Add Rust bindings for [https://gitlab.com/nbdkit/libnbd libnbd]
'''Summary:''' Add Rust bindings for [https://gitlab.com/nbdkit/libnbd libnbd]


[https://en.wikipedia.org/wiki/Network_block_device Network block device (NBD)] is a protocol for exporting block devices (disk-like things) between processes, either across the network or between processes on the same machine.  [https://gitlab.com/nbdkit/libnbd libnbd] is a client library and some tools for talking to NBD servers.  This library has bindings in various languages such as Python, but not in Rust, and the project is about writing those bindings.
[https://en.wikipedia.org/wiki/Network_block_device Network block device (NBD)] is a protocol for exporting block devices (disk-like things) between processes, either across the network or between processes on the same machine.  [https://gitlab.com/nbdkit/libnbd libnbd] is a client library and some tools for talking to NBD servers.  This library has bindings in various languages such as Python, but not in Rust, and the project is about writing those bindings.


Note that the bindings in libnbd are generated.  [https://gitlab.com/nbdkit/libnbd/-/tree/master/generator You must use add Rust bindings to the generator] so that they are updated automatically as the libnbd API evolves in future.  Simply addng Rust bindings for the current API will not be enough to complete the project.  The Rust bindings must also be of high quality and natural for Rust developers to use.  Documentation and tests are also required.
Note that the bindings in libnbd are generated.  [https://gitlab.com/nbdkit/libnbd/-/tree/master/generator You must add Rust bindings to the generator] so that they are updated automatically as the libnbd API evolves in future.  Simply addng Rust bindings for the current API will not be enough to complete the project.  The Rust bindings must also be of high quality and natural for Rust developers to use.  Documentation and tests are also required.
   
   
'''Links:'''
'''Links:'''
* https://en.wikipedia.org/wiki/Network_block_device
* https://en.wikipedia.org/wiki/Network_block_device
* https://gitlab.com/nbdkit/libnbd
* https://gitlab.com/nbdkit/libnbd
* [https://libguestfs.org/libnbd.3.html C API]
* [https://libguestfs.org/libnbd.3.html C API]
* [https://libguestfs.org/nbdsh.1.html Python API]
* [https://libguestfs.org/nbdsh.1.html Python API]
* [https://gitlab.com/nbdkit/libnbd/-/tree/master libnbd generator]
* [https://gitlab.com/nbdkit/libnbd/-/tree/master libnbd generator]
 
'''Details:'''
'''Details:'''
* Skill level: intermediate or advanced
* Project size: 350 hours
* Language: C, Rust, OCaml
* Skill level: intermediate or advanced
* Mentor: rjones@redhat.com rwmjones on IRC
* Language: C, Rust, OCaml
* Suggested by: Richard Jones
* Mentor: rjones@redhat.com rwmjones on IRC
* Suggested by: Richard Jones

Latest revision as of 13:33, 9 February 2023

Rust bindings for libnbd

Summary: Add Rust bindings for libnbd

Network block device (NBD) is a protocol for exporting block devices (disk-like things) between processes, either across the network or between processes on the same machine. libnbd is a client library and some tools for talking to NBD servers. This library has bindings in various languages such as Python, but not in Rust, and the project is about writing those bindings.

Note that the bindings in libnbd are generated. You must add Rust bindings to the generator so that they are updated automatically as the libnbd API evolves in future. Simply addng Rust bindings for the current API will not be enough to complete the project. The Rust bindings must also be of high quality and natural for Rust developers to use. Documentation and tests are also required.

Links:

Details:

  • Project size: 350 hours
  • Skill level: intermediate or advanced
  • Language: C, Rust, OCaml
  • Mentor: rjones@redhat.com rwmjones on IRC
  • Suggested by: Richard Jones