{
  "_id": "6acd6c3fa14063b82c3ab5bf",
  "Package": "raddr",
  "Type": "Package",
  "Title": "Show What an IP Address Literal Means Under Every Standard",
  "Version": "0.1.2.9000",
  "Language": "en-US",
  "Authors@R": "c(\nperson(\"Bart\", \"Turczynski\", email = \"bartek@turczynski.pl\", role = c(\"aut\", \"cre\", \"cph\"),\ncomment = c(ORCID = \"0000-0002-8788-7980\")),\nperson(\"web-platform-tests contributors\", role = \"cph\",\ncomment = \"bundled URL test corpus, BSD-3-Clause; see inst/COPYRIGHTS\"))",
  "Description": "Standards and implementations disagree about what an IP\naddress literal means: the string \"0177.0.0.1\" is rejected by\nthe dotted-quad grammar, read as 127.0.0.1 by browsers, and\nread as 177.0.0.1 by some 'inet_pton' implementations. Most\nlibraries pick one reading and discard the rest. This package\nreports them all, alongside the reason codes that explain each\none, and classifies parsed values against the IANA\nspecial-purpose address registries. It is pure R, performs no\nnetwork access, and returns facts rather than allow or deny\nverdicts.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "Roxygen": "list(markdown = TRUE)",
  "URL": "https://bart-turczynski.gitlab.io/raddr/,\nhttps://gitlab.com/bart-turczynski/raddr,\nhttps://bart-turczynski.r-universe.dev/raddr,\nhttps://CRAN.R-project.org/package=raddr",
  "BugReports": "https://gitlab.com/bart-turczynski/raddr/-/issues",
  "Config/testthat/edition": "3",
  "VignetteBuilder": "knitr",
  "Config/roxygen2/version": "8.0.0",
  "Repository": "https://bart-turczynski.r-universe.dev",
  "Date/Publication": "2026-10-12 19:20:55 UTC",
  "RemoteUrl": "https://gitlab.com/bart-turczynski/raddr",
  "RemoteRef": "HEAD",
  "RemoteSha": "a46952444ccd11ba42f73198ee20ab770993b8ba",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-10-12 23:14:05 UTC",
    "User": "root"
  },
  "Author": "Bart Turczynski [aut, cre, cph] (ORCID:\n<https://orcid.org/0000-0002-8788-7980>),\nweb-platform-tests contributors [cph] (bundled URL test corpus,\nBSD-3-Clause; see inst/COPYRIGHTS)",
  "Maintainer": "Bart Turczynski <bartek@turczynski.pl>",
  "_user": "bart-turczynski",
  "_type": "src",
  "_file": "raddr_0.1.2.9000.tar.gz",
  "_fileid": "https://r2.ropensci.org/ea9f6c7b576f59ac9fe30430019870601b011b8b3f26e15f9859f2ffa73581b3",
  "_filesize": 610282,
  "_sha256": "ea9f6c7b576f59ac9fe30430019870601b011b8b3f26e15f9859f2ffa73581b3",
  "_expires": "2027-01-20T23:24:45.000Z",
  "_created": "2026-10-12T23:14:05.000Z",
  "_published": "2026-10-12T23:24:47.577Z",
  "_buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320745914",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_jobs": [
    {
      "job": 115049039061,
      "time": 163,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11778653739"
    },
    {
      "job": 115049038997,
      "time": 156,
      "config": "linux-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11779235150"
    },
    {
      "job": 115049039077,
      "time": 110,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11779495266"
    },
    {
      "job": 115049039185,
      "time": 132,
      "config": "macos-release-arm64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11779300779"
    },
    {
      "job": 115048053939,
      "time": 200,
      "config": "source",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11778328577"
    },
    {
      "job": 115049038993,
      "time": 97,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "11778968409"
    },
    {
      "job": 115049039137,
      "time": 145,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "11778149512"
    },
    {
      "job": 115049039119,
      "time": 141,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "11778763740"
    },
    {
      "job": 115049038977,
      "time": 104,
      "config": "windows-release-x86_64",
      "r": "4.6.1",
      "check": "OK",
      "artifact": "11778084572"
    }
  ],
  "_upstream": "https://gitlab.com/bart-turczynski/raddr",
  "_commit": {
    "id": "a46952444ccd11ba42f73198ee20ab770993b8ba",
    "author": "Bart Turczynski <bartek@turczynski.pl>",
    "committer": "Bart Turczynski <bartek@turczynski.pl>",
    "message": "chore(security): address review of the OSS Scanner files\n\nMove the Dockerfile to the v2 template: gdb and valgrind installed, p3m\n`latest` with a CRAN fallback, a preclean install, and a build-time smoke\ntest that leaves out the live advisory audits. raddr is pure R, so the\nMakevars block is dropped.\n\nThreat model: addr_parse() returns the four primitive readings, not the\ncompositions, and the examples now run addr_getaddrinfo() and addr_curl()\nas well. globally_reachable describes the outer block only; embedded\naddresses are judged through addr_embeddings() and the *_not_global\nclassify codes. addr_whatwg(\"[::1]\") is NA by design, since bracket\nstripping belongs to the URL layer. The gdb command runs in batch mode, and\nevery example is a complete command.\n\nCo-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>\n",
    "time": 1791832855
  },
  "_maintainer": {
    "name": "Bart Turczynski",
    "email": "bartek@turczynski.pl",
    "login": "bart-turczynski",
    "linkedin": "in/bart-turczynski",
    "twitter": "@bart_turczynski",
    "description": "",
    "uuid": 142225707,
    "orcid": "0000-0002-8788-7980"
  },
  "_distro": "resolute",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "rlang",
      "version": ">= 1.1.7",
      "role": "Imports"
    },
    {
      "package": "vctrs",
      "version": ">= 0.7.0",
      "role": "Imports"
    },
    {
      "package": "bignum",
      "role": "Suggests"
    },
    {
      "package": "bit64",
      "role": "Suggests"
    },
    {
      "package": "digest",
      "role": "Suggests"
    },
    {
      "package": "hedgehog",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "oysteR",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "rosv",
      "role": "Suggests"
    },
    {
      "package": "spelling",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    }
  ],
  "_owner": "gitlab-bart-turczynski",
  "_selfowned": true,
  "_usedby": 4,
  "_updates": [
    {
      "week": "2026-30",
      "n": 12
    },
    {
      "week": "2026-31",
      "n": 118
    },
    {
      "week": "2026-32",
      "n": 3
    },
    {
      "week": "2026-33",
      "n": 2
    },
    {
      "week": "2026-36",
      "n": 12
    },
    {
      "week": "2026-37",
      "n": 10
    },
    {
      "week": "2026-39",
      "n": 27
    },
    {
      "week": "2026-40",
      "n": 40
    },
    {
      "week": "2026-41",
      "n": 19
    },
    {
      "week": "2026-42",
      "n": 2
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2026-07-31"
    },
    {
      "name": "v0.1.1",
      "date": "2026-08-02"
    },
    {
      "name": "v0.1.2",
      "date": "2026-09-05"
    }
  ],
  "_topics": [
    "ip-address",
    "ipv4",
    "ipv6",
    "ip-parser",
    "inet-pton",
    "inet-aton",
    "whatwg-url",
    "iana",
    "special-purpose-registry",
    "cidr"
  ],
  "_userbio": {
    "uuid": 142225707,
    "type": "user",
    "name": "Bart Turczynski",
    "followers": 4
  },
  "_downloads": {
    "count": 869,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/raddr"
  },
  "_devurl": "https://gitlab.com/bart-turczynski/raddr",
  "_pkgdown": "https://bart-turczynski.gitlab.io/raddr/",
  "_searchresults": 9,
  "_rbuild": "4.6.1",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/raddr.html",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_homeurl": "https://gitlab.com/bart-turczynski/raddr",
  "_realowner": "bart-turczynski",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.2",
      "date": "2026-09-22"
    }
  ],
  "_exports": [
    "addr_address_space",
    "addr_address_space_version",
    "addr_aton",
    "addr_category",
    "addr_category_map",
    "addr_category_version",
    "addr_classify",
    "addr_codes",
    "addr_codes_registry",
    "addr_curl",
    "addr_embedded_kind",
    "addr_embeddings",
    "addr_expand",
    "addr_family",
    "addr_format",
    "addr_getaddrinfo",
    "addr_global_reachability",
    "addr_input",
    "addr_is_divergent",
    "addr_nat64_embeddings",
    "addr_outcome",
    "addr_parse",
    "addr_pton",
    "addr_reading",
    "addr_registry",
    "addr_registry_outdated",
    "addr_registry_snapshot",
    "addr_registry_version",
    "addr_reverse_pointer",
    "addr_status",
    "addr_strict",
    "addr_to_binary",
    "addr_to_bytes",
    "addr_to_hex",
    "addr_to_integer",
    "addr_transition_registry",
    "addr_transition_version",
    "addr_whatwg",
    "addr_within",
    "addr_within_any",
    "addr_zone",
    "binary_to_addr",
    "bytes_to_addr",
    "hex_to_addr",
    "integer_to_addr",
    "is_raddr_address",
    "is_raddr_class",
    "is_raddr_embedding",
    "is_raddr_parse",
    "raddr_address"
  ],
  "_help": [
    {
      "page": "addr_address_space",
      "title": "The bundled IANA address-space registries",
      "topics": [
        "addr_address_space"
      ]
    },
    {
      "page": "addr_address_space_version",
      "title": "Provenance of the bundled address-space snapshot",
      "topics": [
        "addr_address_space_version"
      ]
    },
    {
      "page": "addr_category",
      "title": "Read single fields of a classification",
      "topics": [
        "addr_category",
        "addr_embedded_kind",
        "addr_embeddings"
      ]
    },
    {
      "page": "addr_category_map",
      "title": "raddr's block to category map",
      "topics": [
        "addr_category_map"
      ]
    },
    {
      "page": "addr_category_version",
      "title": "Provenance of raddr's category map",
      "topics": [
        "addr_category_version"
      ]
    },
    {
      "page": "addr_classify",
      "title": "Classify addresses against the IANA registries",
      "topics": [
        "addr_classify"
      ]
    },
    {
      "page": "addr_codes_registry",
      "title": "The reason-code registry",
      "topics": [
        "addr_codes_registry"
      ]
    },
    {
      "page": "addr_family",
      "title": "Read the family of an address",
      "topics": [
        "addr_family"
      ]
    },
    {
      "page": "addr_format",
      "title": "Render addresses as text",
      "topics": [
        "addr_expand",
        "addr_format"
      ]
    },
    {
      "page": "addr_global_reachability",
      "title": "Whether an address is in globally reachable space",
      "topics": [
        "addr_global_reachability"
      ]
    },
    {
      "page": "addr_nat64_embeddings",
      "title": "Read the IPv4 address a caller-supplied NAT64 prefix embeds",
      "topics": [
        "addr_nat64_embeddings"
      ]
    },
    {
      "page": "addr_parse",
      "title": "Read an address literal under every dialect at once",
      "topics": [
        "addr_parse"
      ]
    },
    {
      "page": "addr_registry",
      "title": "The bundled IANA special-purpose address registries",
      "topics": [
        "addr_registry"
      ]
    },
    {
      "page": "addr_registry_snapshot",
      "title": "Content-addressed identity of the bundled registry snapshot",
      "topics": [
        "addr_registry_snapshot"
      ]
    },
    {
      "page": "addr_registry_version",
      "title": "IANA edit date of the bundled special-purpose registry snapshot",
      "topics": [
        "addr_registry_outdated",
        "addr_registry_version"
      ]
    },
    {
      "page": "addr_reverse_pointer",
      "title": "Reverse DNS pointer name",
      "topics": [
        "addr_reverse_pointer"
      ]
    },
    {
      "page": "addr_to_bytes",
      "title": "Encode and decode addresses as bytes, hex or binary",
      "topics": [
        "addr_to_binary",
        "addr_to_bytes",
        "addr_to_hex",
        "binary_to_addr",
        "bytes_to_addr",
        "hex_to_addr"
      ]
    },
    {
      "page": "addr_to_integer",
      "title": "Encode and decode addresses as unsigned integers",
      "topics": [
        "addr_to_integer",
        "integer_to_addr"
      ]
    },
    {
      "page": "addr_transition_registry",
      "title": "The transition-prefix overlay",
      "topics": [
        "addr_transition_registry",
        "addr_transition_version"
      ]
    },
    {
      "page": "addr_within_any",
      "title": "Is an address inside a block?",
      "topics": [
        "addr_within",
        "addr_within_any"
      ]
    },
    {
      "page": "addr_zone",
      "title": "Read the zone ID of an address",
      "topics": [
        "addr_zone"
      ]
    },
    {
      "page": "dialects",
      "title": "Read an address literal under one dialect",
      "topics": [
        "addr_aton",
        "addr_curl",
        "addr_getaddrinfo",
        "addr_pton",
        "addr_strict",
        "addr_whatwg",
        "dialects"
      ]
    },
    {
      "page": "is_raddr_address",
      "title": "Test whether an object is a 'raddr_address'",
      "topics": [
        "is_raddr_address"
      ]
    },
    {
      "page": "is_raddr_class",
      "title": "Test whether an object is a 'raddr_class'",
      "topics": [
        "is_raddr_class"
      ]
    },
    {
      "page": "is_raddr_embedding",
      "title": "Test whether an object is a 'raddr_embedding'",
      "topics": [
        "is_raddr_embedding"
      ]
    },
    {
      "page": "is_raddr_parse",
      "title": "Test whether an object is a 'raddr_parse'",
      "topics": [
        "is_raddr_parse"
      ]
    },
    {
      "page": "parse-accessors",
      "title": "Pull one dialect's reading, outcome or reason codes back out",
      "topics": [
        "addr_codes",
        "addr_input",
        "addr_is_divergent",
        "addr_outcome",
        "addr_reading",
        "addr_status",
        "parse-accessors"
      ]
    },
    {
      "page": "raddr_address",
      "title": "An IP address vector",
      "topics": [
        "raddr_address"
      ]
    }
  ],
  "_pkglogo": "https://gitlab.com/bart-turczynski/raddr/raw/HEAD/man/figures/logo.svg",
  "_readme": "https://gitlab.com/bart-turczynski/raddr/raw/HEAD/README.md",
  "_rundeps": [
    "cli",
    "glue",
    "lifecycle",
    "rlang",
    "vctrs"
  ],
  "_vignettes": [
    {
      "source": "edge-cases.Rmd",
      "filename": "edge-cases.html",
      "title": "Edge cases",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Reading a literal",
        "The leading zero",
        "Short forms and the whole-host number",
        "The trailing dot, and the WHATWG asymmetry",
        "IPv6: where the disagreement moves",
        "The zone travels beside the bits",
        "What raddr models, and what it does not",
        "Classification",
        "Longest prefix match, and why a parent block is not the answer",
        "0.0.0.0 is two rows, not one",
        "\"Not globally reachable\" is not \"not forwardable\"",
        "The N/A rows, and two different reasons for one NA",
        "Reason codes at the classify layer",
        "RFC 6890 is a stale snapshot",
        "Provenance",
        "What none of this decides"
      ],
      "created": "2026-07-29 11:23:48",
      "modified": "2026-10-05 10:11:55",
      "commits": 5
    },
    {
      "source": "introduction.Rmd",
      "filename": "introduction.html",
      "title": "Introduction to raddr",
      "engine": "knitr::rmarkdown",
      "headings": [
        "One string, three hosts",
        "Paper and reality",
        "addr_parse() takes no mode argument",
        "Rejection is not missingness",
        "Why addr_curl() exists alongside the standards",
        "The reality dialects model a measured platform",
        "Classification takes addresses, not strings",
        "Facts, not verdicts",
        "Where to go next"
      ],
      "created": "2026-07-25 10:14:18",
      "modified": "2026-07-29 09:32:53",
      "commits": 3
    },
    {
      "source": "reason-codes.Rmd",
      "filename": "reason-codes.html",
      "title": "Reason codes",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Two layers, and they are not the same kind of statement",
        "A helper for the examples below",
        "The parse layer",
        "not_a_number",
        "leading_zero",
        "empty_part",
        "empty_hex",
        "out_of_range",
        "wrong_part_count",
        "trailing_dot",
        "zone_not_permitted",
        "multiple_zones",
        "bad_hextet",
        "empty_group",
        "bad_elision",
        "wrong_group_count",
        "bad_embedded_ipv4",
        "whitespace",
        "The classify layer",
        "nat64_wk_embedded_not_global — must",
        "sixtofour_embedded_not_global — must",
        "teredo_client_not_global — must",
        "link_local_outside_fe80_64 — must",
        "link_local_reserved_range — must",
        "ipv4_compatible_low_tail — may",
        "nat64_local_layout_unspecified — unspecified",
        "ula_l_bit_unset — unspecified",
        "What a code does not prove"
      ],
      "created": "2026-07-29 10:29:30",
      "modified": "2026-09-30 22:14:58",
      "commits": 2
    },
    {
      "source": "why-raddr.Rmd",
      "filename": "why-raddr.html",
      "title": "Why raddr",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The problem, in one string",
        "Dialects sit on two axes",
        "Measured divergence",
        "For IPv6 the disagreement inverts",
        "raddr is a shower, not a protector",
        "What raddr will never do",
        "Why not just use ipaddress?"
      ],
      "created": "2026-10-04 16:17:40",
      "modified": "2026-10-04 16:17:40",
      "commits": 1
    }
  ],
  "_score": 6.380211241711606,
  "_indexed": true,
  "_nocasepkg": "raddr",
  "_universes": [
    "bart-turczynski",
    "gitlab-bart-turczynski"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.1.2.9000",
      "date": "2026-10-12T23:17:16.000Z",
      "distro": "resolute",
      "commit": "a46952444ccd11ba42f73198ee20ab770993b8ba",
      "fileid": "https://r2.ropensci.org/8b625f9ea5d3e63c01abaede22a2dbbbb5f924a598b5c70c57fd9cf9ef0313f1",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320745914"
    },
    {
      "r": "4.6.1",
      "os": "linux",
      "version": "0.1.2.9000",
      "date": "2026-10-12T23:17:08.000Z",
      "distro": "resolute",
      "commit": "a46952444ccd11ba42f73198ee20ab770993b8ba",
      "fileid": "https://r2.ropensci.org/4f68b396760d81dafaadd64bc4bf157e49bbbccad61bd6dfd62f1614e74dd0e3",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320745914"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.1.2.9000",
      "date": "2026-10-12T23:23:12.000Z",
      "commit": "a46952444ccd11ba42f73198ee20ab770993b8ba",
      "fileid": "https://r2.ropensci.org/a4510dab4bdfbd62728a2cf52d8de563e796028ce8f2bc5eb82df8e4e6665466",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320745914"
    },
    {
      "r": "4.6.1",
      "os": "mac",
      "version": "0.1.2.9000",
      "date": "2026-10-12T23:23:46.000Z",
      "commit": "a46952444ccd11ba42f73198ee20ab770993b8ba",
      "fileid": "https://r2.ropensci.org/ef3dd0e5f95a871069499c6d06212683ac9d8d7686cc1d3f6db97c2fcec2a4d4",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320745914"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.1.2.9000",
      "date": "2026-10-12T23:16:54.000Z",
      "commit": "a46952444ccd11ba42f73198ee20ab770993b8ba",
      "fileid": "https://r2.ropensci.org/652c8cd5177029c58cd53e53165cd9b64c9629762467830383f056ac20a6df58",
      "status": "success",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320745914"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.1.2.9000",
      "date": "2026-10-12T23:16:32.000Z",
      "commit": "a46952444ccd11ba42f73198ee20ab770993b8ba",
      "fileid": "https://r2.ropensci.org/cfd6f78a90f82fbb069a6b4715f1c33dac65ed81bb3cde727b1958b1c59ce71e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320745914"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.1.2.9000",
      "date": "2026-10-12T23:16:36.000Z",
      "commit": "a46952444ccd11ba42f73198ee20ab770993b8ba",
      "fileid": "https://r2.ropensci.org/55eee6c07bc917d3cf88c3d41c855d11498b31180088dda2d0e366a82f9aff42",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320745914"
    },
    {
      "r": "4.6.1",
      "os": "win",
      "version": "0.1.2.9000",
      "date": "2026-10-12T23:16:20.000Z",
      "commit": "a46952444ccd11ba42f73198ee20ab770993b8ba",
      "fileid": "https://r2.ropensci.org/4bb77c12b61a6d612ec4e8274d51b402dca2ef1b56533cd81e804482f17fc326",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/bart-turczynski/actions/runs/38320745914"
    }
  ]
}