$ account linebender
Druid is a cross-platform, data-driven GUI toolkit for Rust, providing a reactive widget system with immutable state management via the `Data` trait and composable `Lens` for data access. It supports multiple backends (macOS, Windows, GTK, X11, Wayland, WebAssembly) through a platform abstraction layer (`druid-shell`). The framework includes a rich set of built-in widgets (Flex, Scroll, Split, TextBox, etc.), a layout system inspired by Flutter's `BoxConstraints`, an environment-based theming system (`Env`), and a command/notification system for inter-widget communication. The project is explicitly discontinued and unmaintained, with its successor being Xilem. Despite this, the codebase exhibits high craftsmanship with clean abstractions, well-documented patterns (Controller, Scope, Lens combinators), and a modular architecture that influenced later Rust UI frameworks. However, technical drift is high due to outdated dependencies, incomplete backend implementations (especially Wayland and Web), and deprecated API usage.
Kurbo is a Rust library for 2D vector geometry, primarily used in the Linebender ecosystem (e.g., the Vello rendering engine). It provides core geometric types such as BezPath, PathSeg, curves (cubic, quadratic, arc), affine transforms, and advanced algorithms for offset, stroke expansion, curve fitting, flattening, and polynomial root-finding. The architecture is a Cargo workspace with two crates: `kurbo` (main geometry library) and `polycool` (polynomial utilities). Key entry points include the `BezPath` builder, `ParamCurve` traits for generic curve operations, and high-level functions like `expand_path`, `stroke`, and `fit_to_bezpath`. External dependencies are optional (serde, euclid, mint, schemars) and the library supports no_std via the `libm` feature. Data flows involve constructing paths from elements, applying transformations, and then processing them for rendering or analysis. The codebase demonstrates strong numerical methods, trait-based abstractions, and careful handling of edge cases, making it a high-quality foundation for vector graphics applications.