Releases: bart-turczynski/pslr
Releases · bart-turczynski/pslr
Release list
pslr 1.0.2
pslr 1.0.2
Internal
- Dropped the redundant
strict = TRUEargument frompunycoder::host_normalize()
calls.punycoderremoved the inertstrictflag in favour of explicit
UTS #46 flags (all defaulting to the strict profile), so the bare call is
behavior-preserving and forward-compatible with that release. No user-visible
change; this keepspslrinstallable against the upcomingpunycoderrelease. - Refactored
psl_canonicalize(),parse_psl_lines(), the core matcher
resolution, andpsl_refresh()/psl_use()into smaller helpers to clear
goodpracticecyclomatic-complexity and function-length findings. Pure
internal restructuring; no behavior or API change.
pslr 1.0.1
Maintenance release — launch-readiness audit follow-ups, no API changes. Now available on CRAN: install.packages("pslr").
Fixes
suffix_extract(output = "unicode")no longer turns an empty subdomain intoNA. An absent subdomain is reported as""for both"ascii"and"unicode"output, matching the documented schema.- Choice-style option arguments (
section,output,unknown,invalid, andpsl_use()'ssource) now abort when a caller supplies a non-scalar value — even one that happens to equal the formal's default vector (e.g.invalid = c("na", "error")). Previously such a call was mistaken for the untouched default and silently used the first choice. Omitted options still default to their first choice. - A corrupt cache marker (
current.rds) is now handled gracefully instead of leaking a rawreadRDS()error.psl_refresh(force = TRUE)ignores an unreadable marker and republishes a valid cache, andpsl_use("cache")reports a pslr cache-corruption error with remediation. - PSL sources with a repeated ICANN or PRIVATE section are now rejected. The official format carries exactly one complete section of each; a second
BEGINfor either aborts the parse instead of loading both copies. - A zero-length non-character
domain(e.g.numeric(0),NULL) now aborts with the documented type error instead of being silently coerced to an empty result. The valid empty character vectorcharacter(0)still returns a zero-length result.
pslr 1.0.0
First public release of pslr, a focused, spec-complete Public Suffix List engine for R.
Highlights
- Public-suffix (eTLD) and registrable-domain (eTLD+1) queries via the official prevailing-rule algorithm (exception > longest match > implicit default), compiled with
cpp11— no external system library. - ICANN / PRIVATE sections with section filtering applied before rule selection.
- Unicode, ASCII, and A-label input, with ASCII or Unicode output, canonicalized through
punycoder. - Bundled pinned snapshot (works fully offline) plus an explicit, HTTPS-only, validated
psl_refresh()— the only network path. - Reproducibility metadata via
psl_version()(list provenance + runtime normalization identifiers). - Canonical-host deduplication: a repeated host costs one normalization and one C++ call regardless of multiplicity.
API
public_suffix(), registrable_domain(), is_public_suffix(), suffix_extract(), public_suffix_rule(), psl_use(), psl_refresh(), psl_version(), psl_rules().
Quality
R CMD check --as-cran: 0 errors, 0 warnings, 1 expected note. All PRD §11 v1 acceptance gates pass (see docs/acceptance-v1.md). Performance gate: 100k-host ASCII query in ~0.94s (≤ 2s).
See vignette("introduction", package = "pslr") for the full tour.
🤖 Generated with Claude Code