Skip to content

A simple rust ffi binding for Microsoft.WSL.PluginApi nuget package. This is used in the wslplugins-rs project.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

mveril/wslpluginapi-sys

Repository files navigation

wslpluginapi-sys

Crates.io
Docs.rs
Build Status
License
Native API version
Platform

wslpluginapi-sys is a Rust crate that provides low-level bindings to the Windows Subsystem for Linux (WSL) Plugin API. It offers a direct interface to the functions and structures defined in the WSL Plugin API, facilitating the development of WSL plugins in Rust.

Features

  • Comprehensive Bindings: Provides complete bindings to the WSL Plugin API, including structures like WSLPluginAPIV1 or WSLPluginHooksV1 and other essential components.
  • Unsafe Abstractions: Direct, unsafe bindings closely mirroring the original C API for maximum control and flexibility.

Prerequisites

Before using wslpluginapi-sys, ensure you have the following installed:

  • Rust: Latest stable version.

Installation

Add wslpluginapi-sys to your Cargo.toml:

[dependencies]
wslpluginapi-sys = "0.1.0-beta.4+2.4.4"

Safety

This crate provides unsafe bindings that closely follow the original C API. Users must ensure they uphold the necessary safety invariants when interacting with these bindings. Proper handling of pointers, memory management, and adherence to the API's expected usage patterns are crucial.

NuGet package dependency

This project depends on a third-party dependency called Microsoft.WSL.PluginApi from Microsoft, available on NuGet and providing bindings for it.

xtask bindgen

To upgrade it, change the version build metadata of the project to the target Microsoft.WSL.PluginApi version and run cargo xtask bindgen (don't forget to commit changes generated from the xtask). This xtask download the nuget package and run bindgen on the header to compute a rust file used as binding. This allow offline build with no need of the windows header at build time. All the output of this task is added to a build folder that need to be commit This folder contain a metadata file and a checksum file. The information of this metadata file and checksum file are used at build time to detect the path of the binding and check the integrity (corect checksum and version correspondance).

Requirement

To run this command you require the following dependencies

  • llvm
  • rustfmt (from rustup)
  • Nuget CLI

License

This project is Licensed under either MIT or Apache-2.0, at your option. See the LICENSE file for details.

Note: This crate is part of the WSLPlugins-rs project, which aims to create an idiomatic Rust framework for developing WSL plugins.

About

A simple rust ffi binding for Microsoft.WSL.PluginApi nuget package. This is used in the wslplugins-rs project.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Languages