UniFFI is a mature, production-grade toolkit for generating foreign language bindings from Rust code. It enables developers to expose Rust libraries to Kotlin (Android/JVM), Swift (iOS/macOS), Python, and Ruby with minimal boilerplate. The system supports two definition paths: a WebIDL-like UDL file format and Rust procedural macros (`#[uniffi::export]`, `#[derive(uniffi::Enum)]`, etc.), both of which produce metadata consumed by a multi-stage pipeline. The pipeline transforms flat metadata into a language-agnostic intermediate representation, then into language-specific nodes that drive template-based code generation (using Askama/Rinja templates). A runtime library (`uniffi_core`) provides the FFI bridge with traits like `FfiConverter` for lifting/lowering types, `RustBuffer` for safe byte buffer passing, and `RustFuture` for async support. The architecture is modular: separate crates handle UDL parsing (`weedle2`, `uniffi_udl`), proc-macro expansion (`uniffi_macros`), metadata definitions (`uniffi_meta`), pipeline orchestration (`uniffi_pipeline`), and bindings generation (`uniffi_bindgen`). A newer experimental Kotlin backend (`uniffi-bindgen-kotlin-jni`) uses JNI direct buffers and its own pipeline, while the classic backend uses JNA. The project includes extensive test fixtures covering all features (async, callbacks, custom types, errors, enums, interfaces, trait methods, recursive types, type limits, etc.) and benchmarks for performance across languages. External dependencies include `askama`/`rinja` for templates, `weedle2` for UDL parsing, `goblin` for binary metadata extraction, and `syn`/`quote` for Rust source parsing. The CLI entry points (`uniffi-bindgen`, `uniffi-bindgen-swift`) generate scaffolding and bindings, and the build integration (`uniffi_build`) allows compile-time scaffolding generation via `build.rs`.
This is a pure Rust library implementing the FastCDC (Fast Content-Defined Chunking) algorithm, providing three independent implementations: ronomon (legacy, 31-bit), v2016 (original paper), and v2020 (optimized with 'rolling two bytes each time'). The v2020 module is the recommended entry point, offering in-memory chunking via `FastCDC` (Iterator), synchronous streaming via `StreamCDC`, and async streaming via `AsyncStreamCDC` (with tokio/futures feature flags). The core algorithm uses Gear hash tables derived from MD5 digests, normalized chunking with configurable levels, and an unrolled inner loop that processes six bytes per iteration for performance. The crate is deterministic: identical inputs always produce identical cut points and hashes, enforced by hardcoded fixture tests. It is designed for deduplication systems, backup software, and any application needing content-defined chunk boundaries. The codebase is well-structured, thoroughly tested, and includes a criterion benchmark suite with deterministic data generation for reproducible performance comparisons.
grex is a regular expression generator that creates regex patterns from user-provided test cases. It implements DFA construction, Hopcroft's minimization algorithm, and Brzozowski's algebraic method to produce Perl-compatible regexes. The system serves dual purposes as a command-line utility and a library with bindings for Rust, Python, and WebAssembly. Key features include Unicode grapheme handling, configurable character class conversions (digits/whitespace/word), case insensitivity, repetition detection, and syntax highlighting. The architecture separates core regex building logic from CLI, Python, and WASM extension points, enabling reuse across multiple contexts.
plotters is a Rust data visualization library that provides a high-level API for creating charts and plots. It supports multiple backends (bitmap, SVG, canvas, WASM) via the `DrawingBackend` trait, allowing output to PNG, SVG, GIF, or interactive Jupyter notebooks. The core crate `plotters` offers chart builders, coordinate systems, drawable elements, series, and styles, while backend crates (`plotters-bitmap`, `plotters-svg`) implement the trait. Key entry points include `ChartBuilder`, `DrawingArea`, and backend constructors like `BitMapBackend::new`. Data flows involve user-provided iterators transformed into drawable elements via series (e.g., `LineSeries`, `Histogram`) and rendered to the chosen backend. External dependencies include `image`, `chrono`, `font-kit`, `ab_glyph`, `gif`, and `serde` (optional). The library is designed for embedding in Rust applications, not as a standalone tool, and is actively maintained with extensive examples, benchmarks, and CI.
Kalker is a multi-platform mathematical calculator implemented primarily in Rust. It provides a CLI with a REPL, a web component compiled to WebAssembly, and an Android mobile app via Capacitor. The core library (`kalk`) supports user-defined variables and functions, units, differentiation, integration, root finding, equation systems, matrices/vectors, complex numbers, and multiple number bases. The codebase is well-structured with a clear separation between parsing (lexer/parser), evaluation (interpreter), and a custom value system. It features extensive test files and integration tests for numerical methods. While the core numerical routines (tanh-sinh quadrature, Newton's method, Gaussian elimination) are tightly coupled to the interpreter, they are implemented with care and demonstrate non-trivial numerical analysis. The repository also includes build scripts for multiple targets and CI/CD pipelines.
This repository is neo4rs, a production-grade asynchronous Rust driver for the Neo4j graph database. It implements the Bolt binary protocol (versions 4.x with partial 5.x support) and provides a complete client library for querying, transaction management, connection pooling, cluster routing, and serialization of Neo4j's rich data types (nodes, relationships, paths, temporal and spatial values). The architecture is modular: a connection layer handles TCP/TLS handshakes and chunked message framing; a PackStream serializer/deserializer converts between Rust types and the Bolt wire format; a routing module manages cluster membership and load balancing; and a high-level API (Graph, Session, Txn, RowStream) offers async query execution with automatic retry on transient errors. The codebase includes two parallel Bolt protocol implementations—a legacy one and a newer feature-gated version—which introduces maintenance overhead. Despite this, the project is actively maintained with extensive integration tests against multiple Neo4j versions and a robust CI pipeline. The library is suitable for any Rust application that needs to interact with Neo4j, offering both a high-level ergonomic API and low-level control over the protocol.