Skip to content

zuyaml

0.1.0Package record

Parse and Emit 'YAML' 1.2

0packages depend
177downloads / year
37.2%test coverage
13/13flavors OK

Overview

About

Converts between 'YAML' 1.2 (https://yaml.org/spec/1.2.2/) and ordinary R objects using a bundled copy of the 'cyaml' C11 parser and emitter (https://github.com/andrewmd5/cyaml), so there is no system dependency and no runtime dependency beyond R itself. Ambiguous 'YAML' features are handled strictly and predictably: duplicate keys are refused by default, the 'YAML' 1.2 core schema is followed so that yes and no resolve as strings, and integers beyond double precision are preserved rather than silently rounded. A stream of documents and a sequence are different things, and the interface keeps them apart. Input size, nesting depth and the number of values materialised are all bounded, which makes the parser usable on untrusted input.

Changes in 0.1.0

First release. The API is complete and the package is well tested, but it is

**not frozen**: names, defaults and return types may still change. Pin the

version if you depend on it.

Features

  • yaml_parse() / yaml_parse_all() parse YAML 1.2 from a string or a raw vector, yaml_emit() / yaml_emit_all() convert R objects back to YAML, and yaml_read() / yaml_read_all() / yaml_write() / yaml_write_all() do the same for files. Throughout, _all means a YAML *stream*: several documents separated by ---, which is a different thing from a sequence.
  • Scalars follow the YAML 1.2 core schema, so yes and no are strings and dates are not coerced. Quoted scalars are always strings, and a quoted empty string never becomes NULL.
Show all changes in 0.1.0Hide the rest of the changes in 0.1.0
  • Integers beyond 2^53 are preserved as zuyaml_bigint rather than silently rounded. big_integers selects a different policy.
  • Tags override schema resolution, so !!str 12 is the string "12", in every spelling a core tag has: the shorthand, the verbatim form, and a handle bound by a %TAG directive. Application tags such as !duration are ignored by default; tags = "error" refuses them.
  • Mappings whose keys are sequences or mappings become zuyaml_map rather than having their structure flattened into names. This is parse-only.
  • Errors are classed conditions carrying a stable code, line and column, so callers never have to match on message text.
  • max_size, max_depth and max_nodes bound untrusted input. The last of these is what stops alias-expansion bombs, which are small and shallow by construction and so escape the first two.
  • A value emitted with yaml_emit() parses back to the same value. Strings containing a line break, and strings with leading or trailing whitespace, are quoted so that neither is lost; a double with an integral value emits as 1.0, so it does not come back as an integer; and mapping keys are treated exactly like values. Asserted over the whole yaml-test-suite and over generated input. The exceptions are listed in vignette("zuyaml").
  • A literal NUL byte in the input is refused with an embedded_nul condition and a position. The underlying library treats one as end of input, so the rest of the document -- including any later documents in the stream -- would otherwise be discarded without a word.
  • A UTF-8 byte order mark at the start of a stream is not part of the document.
  • A float outside the range of a double converts to the nearest one: 1e309 is Inf, 1e-324 is 0, and 1e-323 is the subnormal it names. One extreme value never changes the R type of a field.

Notes

  • simplify defaults to FALSE: the shape of the result never depends on the contents of the document.
  • The cyaml C library is bundled and pinned to v0.1.3. See inst/COPYRIGHTS for licensing and the modifications made for R compatibility, and tools/patches/README.md for why each one is required.

From NEWS.md in the release

Install

Health

CRAN checks
13OK
Slowest check: 2.6 min · r-devel-windows-x86_64
Status changes
  • OK13 OKNow
  • OK6 OK2026-10-08
Advisories

none known

Documentation

In release 0.1.0
READMEYes · 457 wordsVignettesNoNEWSYes · 67% structured · mentions 0.1.0Citation fileNoWebsiteYes · pkgdown

The repository also keeps web-only articles.

Help pages
6includes a package overview page
Examples that run
100%5 run in a plain check
Exported functions with examples
100%
Documented parameters
100%
Return-value docs
100%
Help pages citing references
0%

Downloads

177
CRAN downloads in the past year
Rank #25,455 · ~0/day · ~15/mo
zuyaml
Daily download trend is not available in this view yet.
17730 days
17790 days
1771 year
Compare downloads with other packages →

Repository

1Stars
0Forks
5Open issues
0Open PRs
1Releases
20Commits
2Commit identities
20 commits · Last activity 2026-09-28
Responsiveness
How these are sampled
PRs merged (all time)
100%
Median days to close, 50 most recently updated closed issues
10
Median days to close, 50 most recently updated closed PRs
0

Releases over time

2026-10-08 · 02026-10-10 · 1
PracticesBeta

10 development-tooling and community-health practices detected across 6 families in the upstream repository

Checks run against github.com/pedrobtz/zuyaml on 2026-10-18.

Continuous integration (2)
GitHub ActionsR CMD check workflow

The R CMD check workflow runs on Linux

Docs source (3)
pkgdown

GitHub Pages site last deployed 2026-10-10 · The repository has a site deploy workflow

pkgdown site last built 2026-10-10

Coverage (1)
.covrignore
CRAN release process (2)
cran-comments.mdCRAN-SUBMISSION
Show all practicesHide 2 practices
Lint, format, editor (1)
RStudio project
Git structural (1)
.gitattributes
How this is detected·Detection ruleset v3 (2026-09-26)
AI coding toolsBeta

This repository shows signs of AI coding tools.

  • Claude Codefirst seen 2026-09-07
    Pull request it wrote: opened by a project member
    Commits: at least 10 crediting it in the message
Shared conventions any agent may read, so they name no particular tool.
Seen in the repository: .agents
Models named in its commits
  • Claude Opus 59 commits · Sep 2026
  • Claude Opus 5.51 commit · Sep 2026
Counts are commits, not lines of code. Commits by a tool's accounts count once across all of its accounts. Commits crediting it are the largest count among its credit lines, a minimum.How this is detected·Detection ruleset v4 (updated 2026-09-27)

Dependencies

Declared dependencies
5 external dependencies (excludes base and recommended)

Installing zuyaml adds no packages beyond those that come with R.

Depends (0)
none
Imports (0)
none
LinkingTo (0)
none
Enhances (0)
none
Reverse dependencies
0direct
0indirect

Nothing depends on this yet.

People & History

People (2)
Author, Maintainer since 0.1.0 (2026), Copyright holder
Contributor, Copyright holder
author of the bundled cyaml library
Releases (1)
  • 0.1.0Latest
    2026-10-07 · current release ·
    4 days in CRAN's queue
    Listed in CRAN's incoming queue from 2026-10-03 21:57 to 2026-10-07 14:07 UTC, in 17 readings.
  • R
    R 4.6.0 released · 2026-04-24
Across CRAN, the median accepted release of the past year spent 14 hours in the queue, 90% under 11 days.How queue time is measured

Package metadata

First published
2026-10-07
Total releases
1 / 1 yrs
License
MIT + file LICENSE OSI
Copyright
See inst/COPYRIGHTS in the package
Download size
181 KB

Cite

Cite this package

Run in R for the authors' preferred citation:

citation("zuyaml")
Baltazar, P., & Sampson, A. (2026). zuyaml: Parse and Emit 'YAML' 1.2 (Version 0.1.0) [Computer software]. https://doi.org/10.32614/CRAN.package.zuyaml

This package has no citation file, so citation() returns this entry built from DESCRIPTION.

Cite the R Observatory

For a number measured here: a download total, a coverage figure, an archival date.

APA

Balamuta, J. J. (2026). R Observatory: Metrics for zuyaml version 0.1.0 [Data set]. HJJB, LLC. Data release v2026-10-20. https://doi.org/10.5281/zenodo.21843040

From data release v2026-10-20, which the citation names so these numbers can be found later. More on citing and the projects behind them.

Report a problem with this page →

Privacy choices

These apply to this browser and are stored on this device only. Nothing about your choice is sent to us.

Read the privacy policy