21 releases (4 stable)

1.3.2 Feb 6, 2025
1.1.16 Dec 11, 2024
1.1.1 Nov 18, 2024
0.8.17 Nov 7, 2024

#961 in Development tools

Download history 258/week @ 2024-10-23 275/week @ 2024-10-30 204/week @ 2024-11-06 127/week @ 2024-11-13 63/week @ 2024-11-20 11/week @ 2024-11-27 217/week @ 2024-12-04 223/week @ 2024-12-11 54/week @ 2024-12-18 48/week @ 2024-12-25 42/week @ 2025-01-01 36/week @ 2025-01-08 18/week @ 2025-01-15 4/week @ 2025-01-22 37/week @ 2025-01-29 172/week @ 2025-02-05

237 downloads per month

Custom license

4.5MB
30K SLoC

C# 18K SLoC // 0.1% comments Rust 12K SLoC // 0.0% comments SQL 108 SLoC // 0.0% comments Visual Studio Solution 31 SLoC NuGet Config 16 SLoC PowerShell 4 SLoC

Contains (Windows DLL, 2MB) AdGuard.Utils.dll, (Windows DLL, 1MB) AdGuard.Utils.Base.dll

FFI for AdGuard FLM

This crate is a set of bindings over filter-list-manager and build configurations for FFI bindings to interface with other programming languages.

There are currently two POSSIBLE ways to work with this library:

  1. Code generated by uniffi-rs
  2. C language interface using protocol buffers for serialisation (Preferred).

How to build

You may need regenerate protobuf files for rust and flm_native_interface.h header:
cargo run -p ffi-native-assets-generator.
It's better run this operation from the workspace root.

Apple platforms

If you need to generate protobuf *.swift files:

platform/apple/Scripts/generate_proto.sh

This code will build a package compatible macOS, iOS, simulator.

platform/apple/Scripts/configure.sh
platform/apple/Scripts/build.sh

Windows

See readme for uniffi-based build on GitHub or protobuf-based here

FFI-specific symbols

Look at these symbols for better understanding FFI interface.

Protobuf interface

Native interface source C Header source

Functions

Top Level Functions source

Models

Source

Errors

OuterError - flattened enum from adguard_flm::FLMError.
Source

Dependencies

~40–54MB
~1M SLoC