> From: Gregory Etelson <getel...@nvidia.com> > Sent: Thursday, March 6, 2025 1:37 PM > To: dev@dpdk.org <dev@dpdk.org> > Cc: getel...@nvidia.com <getel...@nvidia.com>; tho...@monjalon.net > <tho...@monjalon.net>; mkash...@nvidia.com <mkash...@nvidia.com>; Richardson, > Bruce <bruce.richard...@intel.com> > Subject: [PATCH] rust: support DPDK API
Cool, I like this subject, great! > The patch converts include files with DPDK API to RUST and binds new > RUST API files info dpdklib package. > > The RUST dpdklib files and DPDK libraries build from C sources > allow creation of DPDK application in RUST. > > RUST DPDK application must specify the `dpdklib` package as > dependency in Cargo.toml file. > > RUST `dpdklib` package is installed into > MESON_INSTALL_DESTDIR_PREFIX/rust directory. > > Software requirements: > - clang > - RUST installation > - bindgen-cli crate > > RUST dpdklib installation instructions: > 1. Configure DPDK with `-Deanble_rust=true` > 2. Build and install DPDK. The installation procedure will create > MESON_INSTALL_DESTDIR_PREFIX/rust directory. > 3. Update PKG_CONFIG_PATH to point to DPDK installation. Interesting approach to automate it; are there specific reasons that this approach was taken, or did this just seem the easiest/best way to include "Rust support" into upstream DPDK? Alternatives could be (*not* suggesting to rework the patch!) a dpdk-sys crate where the bindgen etc is done externally to DPDK itself. Many existing approaches (some examples: https://youtu.be/lb6xn2xQ-NQ?t=130) use that method. I kind of like (this approach) of having the binding generation upstream with DPDK itself; it makes the Rust support upstream and keeps it close to DPDK... however it means that it is "the one" official/DPDK-community-approved library/crate. There's some nice tidy-ups to cleanup the namespaces possible if this is "the crate". Perhaps (sorry, borderline bikeshed-topics..) renames for clarity & readability, e.g.: dpdklib::rte_eal::rte_eal_init() to dpdk::eal::init() > Signed-off-by: Gregory Etelson <getel...@nvidia.com> I'll get to a testing & review in the next days, however I'd like to ask some bigger picture questions, to understand/provide input on approach, and how big an effor to expect here! See above linked youtube video - I had sketched out some API concepts for exposing a "safe Rust API" wrapper around the DPDK C API, which also encodes threading requirements. Some questions: - Is there an overaching "we're trying to achieve X with Rust", or specifically "safe Rust"? - Is this patch the "get DPDK + Rust working", with follow up patches for "safe wrappers" the intention? - Or is this patch all to expect for now? Again, thanks for the patch, I think Rust is important for DPDK & infrastructure software, and will try make time to help test/review/discuss this patch, and the wider Rust effort! Regards, -Harry <snip code itself>