{
  "_id": "6a53e3199b92047c28d59401",
  "Package": "vellum",
  "Title": "A Low-Level Graphics Framework with a Rust Backend",
  "Version": "0.2.0.9000",
  "Authors@R": "person(\"David\", \"Schoch\", , \"david.schoch@cynkra.com\", role = c(\"aut\", \"cre\"))",
  "Description": "A grid-like low-level graphics system for R whose scene\ngraph, unit/layout engine, and rendering run in a Rust backend.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/r-vellum/vellum,\nhttps://r-vellum.github.io/vellum/,\nhttps://schochastics.r-universe.dev/vellum",
  "BugReports": "https://github.com/r-vellum/vellum/issues",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "RoxygenNote": "8.0.0.9000",
  "Config/rextendr/version": "0.5.0",
  "SystemRequirements": "Cargo (Rust's package manager), rustc >= 1.92.0, xz",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "Collate": "'gpar.R' 'viewport.R' 'grob.R' 'api.R' 'datashade.R' 'debug.R'\n'device.R' 'extendr-wrappers.R' 'paint.R' 'scene-model.R'\n'style.R' 'text.R' 'unit.R' 'vellum-package.R' 'zzz.R'",
  "Config/pak/sysreqs": "libfontconfig1-dev libfreetype6-dev libfribidi-dev\nlibharfbuzz-dev libicu-dev xz-utils libclang-dev",
  "Repository": "https://schochastics.r-universe.dev",
  "Date/Publication": "2026-07-12 18:00:32 UTC",
  "RemoteUrl": "https://github.com/r-vellum/vellum",
  "RemoteRef": "HEAD",
  "RemoteSha": "71266cc1a8481204e00ae23800b5595785e2aba3",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-07-12 18:40:24 UTC",
    "User": "root"
  },
  "Author": "David Schoch [aut, cre]",
  "Maintainer": "David Schoch <david.schoch@cynkra.com>",
  "_user": "schochastics",
  "_type": "src",
  "_file": "vellum_0.2.0.9000.tar.gz",
  "_fileid": "https://r2.ropensci.org/712e8cb6f1a265d78bc36782f04a018e5f1c84fb969351f3ee35b666c8c9b8ce",
  "_filesize": 7210564,
  "_sha256": "712e8cb6f1a265d78bc36782f04a018e5f1c84fb969351f3ee35b666c8c9b8ce",
  "_expires": "2026-10-20T18:55:19.000Z",
  "_created": "2026-07-12T18:40:24.000Z",
  "_published": "2026-07-12T18:55:21.328Z",
  "_jobs": [
    {
      "job": 86681217766,
      "time": 361,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8263365519"
    },
    {
      "job": 86681217809,
      "time": 352,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8263363875"
    },
    {
      "job": 86681217816,
      "time": 365,
      "config": "linux-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8263366177"
    },
    {
      "job": 86681217762,
      "time": 360,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8263365284"
    },
    {
      "job": 86681217769,
      "time": 290,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8263354269"
    },
    {
      "job": 86681217757,
      "time": 670,
      "config": "macos-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8263411503"
    },
    {
      "job": 86681217765,
      "time": 292,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8263354775"
    },
    {
      "job": 86681217773,
      "time": 713,
      "config": "macos-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8263418406"
    },
    {
      "job": 86680530746,
      "time": 500,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8263310664"
    },
    {
      "job": 86681217747,
      "time": 274,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "FAIL",
      "artifact": ""
    },
    {
      "job": 86681217768,
      "time": 528,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "8263390598"
    },
    {
      "job": 86681217771,
      "time": 548,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "8263393631"
    },
    {
      "job": 86681217753,
      "time": 542,
      "config": "windows-release",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "8263392722"
    }
  ],
  "_host": "GitHub-Actions",
  "_buildurl": "https://github.com/r-universe/schochastics/actions/runs/29204128278",
  "_status": "success",
  "_upstream": "https://github.com/r-vellum/vellum",
  "_commit": {
    "id": "71266cc1a8481204e00ae23800b5595785e2aba3",
    "author": "David Schoch <david@schochastics.net>",
    "committer": "David Schoch <david@schochastics.net>",
    "message": "chore: add r-universe URL so package is not hidden in search\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>\n",
    "time": 1783879232
  },
  "_maintainer": {
    "name": "David Schoch",
    "email": "david.schoch@cynkra.com",
    "login": "schochastics",
    "mastodon": "@schochastics@fosstodon.org",
    "bluesky": "@schochastics.net",
    "description": "Data Scientist/DevOps Engineer at cynkra and #RStats developer",
    "uuid": 17147355
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.2",
      "role": "Depends"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "grDevices",
      "role": "Imports"
    },
    {
      "package": "grid",
      "role": "Imports"
    },
    {
      "package": "S7",
      "role": "Imports"
    },
    {
      "package": "textshaping",
      "role": "Imports"
    },
    {
      "package": "vctrs",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    },
    {
      "package": "ggplot2",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "png",
      "role": "Suggests"
    },
    {
      "package": "base64enc",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    }
  ],
  "_owner": "r-vellum",
  "_selfowned": true,
  "_usedby": 3,
  "_updates": [
    {
      "week": "2026-26",
      "n": 68
    },
    {
      "week": "2026-27",
      "n": 26
    },
    {
      "week": "2026-28",
      "n": 23
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2026-07-07"
    },
    {
      "name": "v0.1.1",
      "date": "2026-07-08"
    },
    {
      "name": "v0.2.0",
      "date": "2026-07-10"
    }
  ],
  "_topics": [
    "data-visualization",
    "dataviz",
    "extendr",
    "graphics",
    "rust",
    "scene-graph",
    "cargo"
  ],
  "_stars": 11,
  "_contributors": [
    {
      "user": "schochastics",
      "count": 118,
      "uuid": 17147355
    }
  ],
  "_userbio": {
    "uuid": 17147355,
    "type": "user",
    "name": "David Schoch",
    "followers": 467,
    "description": "Data Scientist/DevOps Engineer at cynkra and #RStats developer"
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/vellum"
  },
  "_devurl": "https://github.com/r-vellum/vellum",
  "_pkgdown": "https://r-vellum.github.io/vellum/",
  "_searchresults": 23,
  "_cargo": true,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "extra/vellum.html",
    "LICENSE",
    "manual.pdf"
  ],
  "_cranurl": false,
  "_exports": [
    "as_mask",
    "as_vellum",
    "as_vellum_scene",
    "bezier_grob",
    "circle_grob",
    "datashade",
    "describe",
    "display",
    "draw",
    "edit_node",
    "get_node",
    "grid_layout",
    "grobheight",
    "grobwidth",
    "hexagon_grob",
    "hit_test",
    "is_unit",
    "linear_gradient",
    "lines_grob",
    "loop_grob",
    "md",
    "node_names",
    "path_grob",
    "points_grob",
    "polygon_grob",
    "pop",
    "push",
    "radial_gradient",
    "raster_grob",
    "rect_grob",
    "render",
    "render_grid",
    "roundrect_grob",
    "scene_model",
    "scene_raster",
    "scene_svg",
    "sector_grob",
    "segments_grob",
    "sketch",
    "spline_grob",
    "style",
    "text_grob",
    "vl_arrow",
    "vl_clear_render_cache",
    "vl_gpar",
    "vl_pattern",
    "vl_scene",
    "vl_strheight",
    "vl_strwidth",
    "vl_unit",
    "vl_viewport",
    "why_size"
  ],
  "_help": [
    {
      "page": "as_mask",
      "title": "Masks",
      "topics": [
        "as_mask"
      ]
    },
    {
      "page": "as_vellum",
      "title": "Render grid graphics (ggplot2 / lattice / grid) through vellum",
      "topics": [
        "as_vellum",
        "render_grid"
      ]
    },
    {
      "page": "as_vellum_scene",
      "title": "Coerce an object to a vellum scene",
      "topics": [
        "as_vellum_scene"
      ]
    },
    {
      "page": "datashade",
      "title": "Aggregate-then-shade a large point cloud (datashader-style)",
      "topics": [
        "datashade"
      ]
    },
    {
      "page": "describe",
      "title": "Set a scene's accessibility name and description",
      "topics": [
        "describe"
      ]
    },
    {
      "page": "display",
      "title": "Display a scene in the active graphics device",
      "topics": [
        "display"
      ]
    },
    {
      "page": "gradients",
      "title": "Gradient fills",
      "topics": [
        "gradients",
        "linear_gradient",
        "radial_gradient"
      ]
    },
    {
      "page": "grob",
      "title": "Graphical objects (grobs)",
      "topics": [
        "bezier_grob",
        "circle_grob",
        "grob",
        "hexagon_grob",
        "lines_grob",
        "loop_grob",
        "path_grob",
        "points_grob",
        "polygon_grob",
        "raster_grob",
        "rect_grob",
        "roundrect_grob",
        "sector_grob",
        "segments_grob",
        "spline_grob",
        "text_grob"
      ]
    },
    {
      "page": "grobwidth",
      "title": "Size a unit by a grob's extent",
      "topics": [
        "grobheight",
        "grobwidth"
      ]
    },
    {
      "page": "hit_test",
      "title": "Hit-test a scene",
      "topics": [
        "hit_test"
      ]
    },
    {
      "page": "md",
      "title": "Rich-text labels (markdown subset)",
      "topics": [
        "md"
      ]
    },
    {
      "page": "node_names",
      "title": "Inspect and edit a scene by node name",
      "topics": [
        "edit_node",
        "get_node",
        "node_names"
      ]
    },
    {
      "page": "scene_model",
      "title": "A serializable, per-element model of a scene",
      "topics": [
        "scene_model"
      ]
    },
    {
      "page": "scene_raster",
      "title": "Read a rendered scene back as pixels",
      "topics": [
        "scene_raster"
      ]
    },
    {
      "page": "scene_svg",
      "title": "Render a scene to an SVG string",
      "topics": [
        "scene_svg"
      ]
    },
    {
      "page": "sketch",
      "title": "Hand-drawn (\"sketch\") rendering",
      "topics": [
        "sketch"
      ]
    },
    {
      "page": "style",
      "title": "Reusable style classes",
      "topics": [
        "style"
      ]
    },
    {
      "page": "vl_arrow",
      "title": "Arrowheads",
      "topics": [
        "vl_arrow"
      ]
    },
    {
      "page": "vl_clear_render_cache",
      "title": "Clear the render cache",
      "topics": [
        "vl_clear_render_cache"
      ]
    },
    {
      "page": "vl_gpar",
      "title": "Graphical parameters",
      "topics": [
        "vl_gpar"
      ]
    },
    {
      "page": "vl_pattern",
      "title": "Tiling-pattern fills",
      "topics": [
        "vl_pattern"
      ]
    },
    {
      "page": "vl_scene",
      "title": "Build and render a scene",
      "topics": [
        "draw",
        "pop",
        "push",
        "render",
        "vl_scene"
      ]
    },
    {
      "page": "vl_strwidth",
      "title": "Measure text",
      "topics": [
        "vl_strheight",
        "vl_strwidth"
      ]
    },
    {
      "page": "vl_unit",
      "title": "Units of measurement",
      "topics": [
        "is_unit",
        "vl_unit"
      ]
    },
    {
      "page": "vl_viewport",
      "title": "Viewports and layouts",
      "topics": [
        "grid_layout",
        "vl_viewport"
      ]
    },
    {
      "page": "why_size",
      "title": "Explain why a node has its resolved size",
      "topics": [
        "why_size"
      ]
    }
  ],
  "_pkglogo": "https://github.com/r-vellum/vellum/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/r-vellum/vellum/raw/HEAD/README.md",
  "_rundeps": [
    "base64enc",
    "cli",
    "cpp11",
    "glue",
    "jsonlite",
    "lifecycle",
    "rlang",
    "S7",
    "stringi",
    "systemfonts",
    "textshaping",
    "vctrs"
  ],
  "_vignettes": [
    {
      "source": "coming-from-grid.Rmd",
      "filename": "coming-from-grid.html",
      "title": "Coming from grid",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The concept map",
        "Side by side",
        "What is different, and why",
        "The builder is functional, not stateful",
        "Metrics are eager, so there is no draw-time hook protocol",
        "Units resolve eagerly, and mixed-unit arithmetic is restricted",
        "The tree is retained and inspectable",
        "vl_gpar inherits, but there is no cascade",
        "Do I have to rewrite my grid code?"
      ],
      "created": "2026-07-05 18:15:36",
      "modified": "2026-07-09 16:07:05",
      "commits": 2
    },
    {
      "source": "datashading.Rmd",
      "filename": "datashading.html",
      "title": "Datashading: millions of points, honestly",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Generating an orbit",
        "Shading in one call",
        "Why aggregation wins",
        "Mapping density to colour",
        "Lining up with data axes",
        "A gallery",
        "Recap",
        "In a grammar"
      ],
      "created": "2026-07-05 18:26:07",
      "modified": "2026-07-09 16:07:05",
      "commits": 4
    },
    {
      "source": "vellum.Rmd",
      "filename": "vellum.html",
      "title": "Get started",
      "engine": "knitr::rmarkdown",
      "headings": [
        "A first scene",
        "Building a scene: push, draw, pop",
        "Rendering to a file",
        "Where to go next"
      ],
      "created": "2026-07-05 18:15:36",
      "modified": "2026-07-09 16:07:05",
      "commits": 2
    },
    {
      "source": "grid-interop.Rmd",
      "filename": "grid-interop.html",
      "title": "Rendering grid and ggplot2 through vellum",
      "engine": "knitr::rmarkdown",
      "headings": [
        "How it works",
        "A grid grob tree",
        "A ggplot2 plot",
        "When to use interop versus the native API"
      ],
      "created": "2026-07-05 18:15:36",
      "modified": "2026-07-09 16:07:05",
      "commits": 3
    },
    {
      "source": "retained-mode.Rmd",
      "filename": "retained-mode.html",
      "title": "Retained-mode superpowers: hit-testing and editable nodes",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Naming nodes",
        "Editing a node",
        "Hit-testing",
        "A per-element model of the scene",
        "Why this matters"
      ],
      "created": "2026-07-05 18:15:36",
      "modified": "2026-07-09 16:07:05",
      "commits": 3
    },
    {
      "source": "scene-contract.Rmd",
      "filename": "scene-contract.html",
      "title": "The scene contract: what vellumplot and vellumwidget depend on",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The seam, in one picture",
        "Carrying identity on a grob",
        "scene_model(): the per-element table",
        "elements",
        "panels",
        "The meta key vocabulary",
        "scene_svg(): the emitted attributes",
        "Accessibility",
        "Invariants the contract guarantees",
        "For contributors"
      ],
      "created": "2026-07-07 19:41:21",
      "modified": "2026-07-09 16:07:05",
      "commits": 6
    },
    {
      "source": "scene-and-paint.Rmd",
      "filename": "scene-and-paint.html",
      "title": "The scene graph and the paint model",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The scene graph",
        "Units",
        "The paint model",
        "Gradients",
        "Patterns",
        "Masks and group opacity",
        "Recap"
      ],
      "created": "2026-07-05 18:15:36",
      "modified": "2026-07-09 16:07:05",
      "commits": 3
    }
  ],
  "_score": 6.378552329685081,
  "_indexed": true,
  "_nocasepkg": "vellum",
  "_universes": [
    "schochastics",
    "r-vellum"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0.9000",
      "date": "2026-07-12T18:45:27.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "71266cc1a8481204e00ae23800b5595785e2aba3",
      "fileid": "https://r2.ropensci.org/d2b03ce0782aac8607f7b39d08877337d739cab403e956a0fa4d4860bf1f0b1d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/schochastics/actions/runs/29204128278"
    },
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0.9000",
      "date": "2026-07-12T18:45:09.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "71266cc1a8481204e00ae23800b5595785e2aba3",
      "fileid": "https://r2.ropensci.org/94448aee5c452016a2e78d58fb897ccecebf959019d59e3fead765d962d6274c",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/schochastics/actions/runs/29204128278"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.0.9000",
      "date": "2026-07-12T18:45:25.000Z",
      "distro": "resolute",
      "arch": "aarch64",
      "commit": "71266cc1a8481204e00ae23800b5595785e2aba3",
      "fileid": "https://r2.ropensci.org/db143706a5145691ff6055cb3103270c9ba6b3e747f4fb505bb8b5ca983acb0f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/schochastics/actions/runs/29204128278"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.2.0.9000",
      "date": "2026-07-12T18:45:13.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "71266cc1a8481204e00ae23800b5595785e2aba3",
      "fileid": "https://r2.ropensci.org/eda8e3f9a8f281c5daba3fac5cf47828488a0b3e878dee4c0a748fcab2e72eac",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/schochastics/actions/runs/29204128278"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0.9000",
      "date": "2026-07-12T18:44:27.000Z",
      "arch": "aarch64",
      "commit": "71266cc1a8481204e00ae23800b5595785e2aba3",
      "fileid": "https://r2.ropensci.org/6a6b1f25bf8193a5b5611abd84651ed47255731c80527cec97ca1fa48d052ae3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/schochastics/actions/runs/29204128278"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0.9000",
      "date": "2026-07-12T18:45:28.000Z",
      "arch": "x86_64",
      "commit": "71266cc1a8481204e00ae23800b5595785e2aba3",
      "fileid": "https://r2.ropensci.org/82657e17569c2439ae65d4d64c141e6b8be25e4f3279b56fae54f6e4ab94daed",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/schochastics/actions/runs/29204128278"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.0.9000",
      "date": "2026-07-12T18:44:22.000Z",
      "arch": "aarch64",
      "commit": "71266cc1a8481204e00ae23800b5595785e2aba3",
      "fileid": "https://r2.ropensci.org/b5cd04945d658f335b778f79cddb4e064eaafbda9273a3686784857162062293",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/schochastics/actions/runs/29204128278"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.2.0.9000",
      "date": "2026-07-12T18:46:27.000Z",
      "arch": "x86_64",
      "commit": "71266cc1a8481204e00ae23800b5595785e2aba3",
      "fileid": "https://r2.ropensci.org/89990879f37e748a369d752224a6fb49d5c09ee6452cbf17512773819a49fd57",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/schochastics/actions/runs/29204128278"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.0.9000",
      "date": "2026-07-12T18:44:01.000Z",
      "arch": "x86_64",
      "commit": "71266cc1a8481204e00ae23800b5595785e2aba3",
      "fileid": "https://r2.ropensci.org/57faee2b03b0d29d6406d9702aa1a7235b52482c4295d63bb0a9750cb4e711b5",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/schochastics/actions/runs/29204128278"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.0.9000",
      "date": "2026-07-12T18:44:20.000Z",
      "arch": "x86_64",
      "commit": "71266cc1a8481204e00ae23800b5595785e2aba3",
      "fileid": "https://r2.ropensci.org/21473c9bb71be9887fb3a350a29c6aeb18c1545dc9603a1bba7a4cc69501125f",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/schochastics/actions/runs/29204128278"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.2.0.9000",
      "date": "2026-07-12T18:44:19.000Z",
      "arch": "x86_64",
      "commit": "71266cc1a8481204e00ae23800b5595785e2aba3",
      "fileid": "https://r2.ropensci.org/e494d471ab1092e8adda2f55c82ba6762553540f4aca67095898225f148429d6",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/schochastics/actions/runs/29204128278"
    }
  ]
}