{"adoption": {"forks": 97, "observed_at": "2026-08-28T04:05:13.210087+00:00", "stars": 1627}, "canonical_url": "https://ross.abutalabs.com/products/tiny-skia", "card": {"archived": false, "artifact_type": "library", "description": "A tiny Skia subset ported to Rust", "domain": ["graphics", "web-development", "developer-tools"], "enriched": true, "function": ["graphics", "image-processing"], "health_score": 79, "homepage": null, "language": "Rust", "license": "BSD-3-Clause", "license_family": "permissive", "maturity": "active", "member_repos": ["linebender/tiny-skia"], "name": "linebender/tiny-skia", "platform": ["rust", "cross-platform"], "pushed_at": "2026-08-20T12:48:05+00:00", "repo": "linebender/tiny-skia", "stars": 1627, "tags": ["2d-graphics", "rasterization", "skia-port", "cpu-rendering", "png", "canvas"], "topics": [], "urls": [], "use_cases": ["render 2D shapes and images in Rust without heavy C++ dependencies", "draw filled and stroked paths with gradients or patterns", "generate PNG images programmatically in Rust", "embed a lightweight raster renderer in a GUI or SVG renderer", "replace Skia or cairo with a small pure-Rust 2D graphics library", "blend and composite images with clipping in a Rust application"], "what_it_is": "tiny-skia is a minimal, CPU-only 2D rendering library for Rust, ported from a subset of Google's Skia. It supports common 2D operations like filling, stroking, gradients, clipping, and image blending, with a focus on rendering quality, speed, and small binary size.", "when_to_avoid": ["you need text rendering, which is not supported", "you need GPU-accelerated rendering or output formats like SVG or PDF", "you need maximum rendering performance, since it is 20-300% slower than Skia", "you need a full-featured graphics stack like Qt or cairo"], "when_to_choose": ["you need a small, fast, pure-Rust 2D raster renderer with minimal build complexity", "you want Skia-quality CPU rendering without Skia's huge binary and toolchain requirements", "you're building an SVG renderer or similar tool that doesn't need text rendering", "binary size and compile time matter for your project"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/tiny-skia", "repo": "linebender/tiny-skia", "role": "main", "score": 76}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.210087+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:48:25.513313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14ecd2c8c4ca6193f1b56b3a22b614d0c32e171206cefe12342d20e2dd59dd9e", "fetched_at": "2026-08-28T04:05:13.210087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linebender/tiny-skia"}, {"content_hash": "af45309b3947f4bd44e27dfa3ad2884269cbb63f3a990cb832472a78a003af26", "fetched_at": "2026-08-29T11:21:07.400695+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/tiny-skia"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.210087+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:48:25.513313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14ecd2c8c4ca6193f1b56b3a22b614d0c32e171206cefe12342d20e2dd59dd9e", "fetched_at": "2026-08-28T04:05:13.210087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linebender/tiny-skia"}, {"content_hash": "af45309b3947f4bd44e27dfa3ad2884269cbb63f3a990cb832472a78a003af26", "fetched_at": "2026-08-29T11:21:07.400695+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/tiny-skia"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:48:25.513313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14ecd2c8c4ca6193f1b56b3a22b614d0c32e171206cefe12342d20e2dd59dd9e", "fetched_at": "2026-08-28T04:05:13.210087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linebender/tiny-skia"}, {"content_hash": "af45309b3947f4bd44e27dfa3ad2884269cbb63f3a990cb832472a78a003af26", "fetched_at": "2026-08-29T11:21:07.400695+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/tiny-skia"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.210087+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.210087+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.210087+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:48:25.513313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14ecd2c8c4ca6193f1b56b3a22b614d0c32e171206cefe12342d20e2dd59dd9e", "fetched_at": "2026-08-28T04:05:13.210087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linebender/tiny-skia"}, {"content_hash": "af45309b3947f4bd44e27dfa3ad2884269cbb63f3a990cb832472a78a003af26", "fetched_at": "2026-08-29T11:21:07.400695+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/tiny-skia"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.210087+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.210087+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:48:25.513313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14ecd2c8c4ca6193f1b56b3a22b614d0c32e171206cefe12342d20e2dd59dd9e", "fetched_at": "2026-08-28T04:05:13.210087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linebender/tiny-skia"}, {"content_hash": "af45309b3947f4bd44e27dfa3ad2884269cbb63f3a990cb832472a78a003af26", "fetched_at": "2026-08-29T11:21:07.400695+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/tiny-skia"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.210087+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.210087+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.210087+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:48:25.513313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14ecd2c8c4ca6193f1b56b3a22b614d0c32e171206cefe12342d20e2dd59dd9e", "fetched_at": "2026-08-28T04:05:13.210087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linebender/tiny-skia"}, {"content_hash": "af45309b3947f4bd44e27dfa3ad2884269cbb63f3a990cb832472a78a003af26", "fetched_at": "2026-08-29T11:21:07.400695+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/tiny-skia"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.210087+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:13.210087+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:48:25.513313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14ecd2c8c4ca6193f1b56b3a22b614d0c32e171206cefe12342d20e2dd59dd9e", "fetched_at": "2026-08-28T04:05:13.210087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linebender/tiny-skia"}, {"content_hash": "af45309b3947f4bd44e27dfa3ad2884269cbb63f3a990cb832472a78a003af26", "fetched_at": "2026-08-29T11:21:07.400695+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/tiny-skia"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:48:25.513313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14ecd2c8c4ca6193f1b56b3a22b614d0c32e171206cefe12342d20e2dd59dd9e", "fetched_at": "2026-08-28T04:05:13.210087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linebender/tiny-skia"}, {"content_hash": "af45309b3947f4bd44e27dfa3ad2884269cbb63f3a990cb832472a78a003af26", "fetched_at": "2026-08-29T11:21:07.400695+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/tiny-skia"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:48:25.513313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14ecd2c8c4ca6193f1b56b3a22b614d0c32e171206cefe12342d20e2dd59dd9e", "fetched_at": "2026-08-28T04:05:13.210087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linebender/tiny-skia"}, {"content_hash": "af45309b3947f4bd44e27dfa3ad2884269cbb63f3a990cb832472a78a003af26", "fetched_at": "2026-08-29T11:21:07.400695+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/tiny-skia"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:48:25.513313+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "14ecd2c8c4ca6193f1b56b3a22b614d0c32e171206cefe12342d20e2dd59dd9e", "fetched_at": "2026-08-28T04:05:13.210087+00:00", "kind": "readme", "missing": false, "url": "https://github.com/linebender/tiny-skia"}, {"content_hash": "af45309b3947f4bd44e27dfa3ad2884269cbb63f3a990cb832472a78a003af26", "fetched_at": "2026-08-29T11:21:07.400695+00:00", "kind": "registry_crates", "missing": false, "url": "https://crates.io/api/v1/crates/tiny-skia"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2205, "days_push": 13, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 76, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}