MCPcopy Create free account
hub / github.com/DioxusLabs/anyrender

github.com/DioxusLabs/anyrender @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
580 symbols 1,104 edges 49 files ⚖ MIT 91 documented · 16% updated 2d agov0.13.0 · 2026-08-16★ 10110 open issues

Browse by type

Functions 446 Types & classes 134
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

AnyRender

A Rust 2D drawing abstraction.

Linebender Zulip, #kurbo channel dependency status Apache 2.0 or MIT license. Crates.io Docs

AnyRender is a 2D drawing abstaction that allows applications/frameworks to support many rendering backends through a unified API.

Discussion of AnyRender development happens in the Linebender Zulip at https://xi.zulipchat.com/.

Crates

anyrender

The core anyrender crate is a lightweight type/trait-only crate that defines three abstractions:

  • The PaintScene trait accepts drawing commands. Applications and libraries draw by pushing commands into a PaintScene. Backends generally execute those commands to produce an output (although they may do other things like store them for later use).
  • The WindowRenderer trait abstracts over types that can render to a window
  • The ImageRenderer trait abstracts over types that can render to a Vec<u8> image buffer

Backends

Currently existing backends are:

Contributions for other backends (tiny-skia, femtovg, etc) would be very welcome.

Content renderers

These crates sit on top of the the AnyRender abstraction, and allow you render content through it:

  • anyrender_svg allows you to render SVGs with AnyRender. usvg is used to parse the SVGs.
  • blitz-paint can be used to HTML/CSS (and markdown) that has been parsed, styled, and layouted by blitz-dom using AnyRender.
  • polymorpher implements Material Design 3 shape morphing, and can be used with AnyRender by enabling the kurbo feature.

Utility crates

Version compatibility

AnyRender crates are released together, so a given anyrender core release lines up with a specific set of backend, content-renderer and utility crate versions, as well as the upstream dependency versions they were built against. Use the same release line across all AnyRender crates in your project.

AnyRender0.60.70.80.90.100.110.120.13
kurbo0.120.130.130.130.130.130.130.13
peniko0.50.60.60.60.60.60.60.6
WGPU
wgpu2627282829292929
wgpu_context0.10.20.40.50.60.6–0.70.80.9
Vello
anyrender_vello0.60.70.80.90.100.11–0.120.130.14
vello0.60.7 10.80.80.90.90.90.10
Vello Hybrid
vello_hybrid0.0.40.0.60.0.70.0.70.0.80.0.90.0.90.1
anyrender_vello_hybrid0.10.20.30.40.50.7–0.80.90.10
Vello CPU
vello_cpu0.0.40.0.60.0.70.0.70.0.80.0.90.0.90.1
anyrender_vello_cpu0.80.90.100.110.120.140.150.16–0.17
Skia
skia-safe0.890.910.930.930.93 20.970.970.99
anyrender_skia0.10.40.50.60.70.90.100.11
Content Libs
anyrender_svg0.60.80.90.100.110.120.130.14
anyrender_serialize0.10.20.30.50.60.7
CPU WindowRenderers
pixels_window_renderer0.10.20.30.40.50.60.70.8
softbuffer_window_renderer0.10.20.30.40.50.60.70.8
  1. The 0.7 release line depended on a git revision of Vello, equivalent to Vello 0.7 and sparse strips 0.0.6.
  2. Within the 0.10 line, anyrender_skia 0.8.x upgraded skia-safe from 0.93 to 0.97.

Minimum supported Rust Version (MSRV)

This version of AnyRender has been verified to compile with Rust 1.90 and later.

Future versions of AnyRender might increase the Rust version requirement. It will not be treated as a breaking change and as such can even happen with small patch releases.

License

Licensed under either of

at your option.

Contribution

Contributions are welcome by pull request. The Rust code of conduct applies.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be licensed as above, without any additional terms or conditions.

Extension points exported contracts — how you extend this code

browse all types & interfaces →

Core symbols most depended-on inside this repo

browse all functions →

Shape

Method 340
Function 106
Class 95
Enum 30
Interface 9

Languages

Rust100%

Modules by API surface

crates/anyrender/src/filters.rs58 symbols
crates/anyrender_skia/src/scene.rs49 symbols
crates/anyrender_serialize/src/lib.rs34 symbols
crates/anyrender/src/recording.rs24 symbols
crates/anyrender_serialize/tests/serialize.rs22 symbols
crates/anyrender_vello/src/window_renderer.rs21 symbols
crates/anyrender_vello_hybrid/src/window_renderer.rs20 symbols
crates/anyrender/src/null_backend.rs20 symbols
crates/wgpu_context/src/surface_renderer.rs19 symbols
crates/anyrender_vello_hybrid/src/scene.rs17 symbols
crates/wgpu_context/src/lib.rs16 symbols
crates/anyrender_vello_hybrid/src/webgl_scene.rs15 symbols

For agents

$ claude mcp add anyrender \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page