GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Transition to sugar length checks (#1513): affected packages · Issue #1517 · RcppCore/Rcpp

Transition to sugar length checks (#1513): affected packages #1517

New issue
Copy link
New issue
Copy link
Open
Open
Transition to sugar length checks (#1513): affected packages#1517
Copy link

Description

@kevinushey
kevinushey
opened on Oct 9, 2026
Issue body actions

PR #1513 (closing #1512) makes Rcpp sugar check that the operands of an expression, and a vector assigned into a matrix row, column or Range subset, have matching lengths. Released Rcpp sizes the result by the left-hand operand (or the target) and silently truncates the longer side, so code with mismatched lengths ran without complaint; in several cases below it also produced wrong results.

The reverse dependency run of 2026-10-06 (summarised here) gives '3302 successes, 29 failures, 60 skipped'. Of the failures, twelve are packages that trip the new check, each at a single site:

Error: sugar operands have different lengths (N1 and N2)
Error: cannot assign a vector of length V to a target of length T

This issue regroups the required work on those packages. Note that the checks are compiled in only for development versions of Rcpp (four version components, which is what the reverse-dependency runs use); releases leave them off and behave as before, so none of these packages will break on CRAN when Rcpp is released. The fixes are still worth making, since in several cases the old results were wrong. The fixes are one line in ten cases, and each has been sent upstream as a PR or, where no repository could be found, as a patch by email. In the two remaining cases the old results were affected and the maintainer should own the change, so an issue was filed instead. Fixed packages build against both the CRAN version 1.1.2 and the #1513 branch.

Help is definitely welcome. If you maintain one of these packages, or can nudge its maintainer, please do.

Individual packages:

  • binspp adds covariate images on a different pixel grid than Wpix (128x128 vs native), so old results were silently misaligned; issue filed covariate images are added to Wpix on a different pixel grid tomasmrkvicka/binspp#1
  • CARBayesST builds phi.mat from a vector of length K*N assigned into rows of length N, which fed wrong values into the DIC and fitted values; issue filed phi.mat in the CARclustrends models is built from a vector of the wrong length duncanplee/CARBayesST#13
  • clustAnalytics allocates com_size with the number of vertices instead of communities, PR at allocate com_size per community in FOMD_Rcpp martirm/clustAnalytics#2
  • dbscan assigns k+1 duplicate neighbours into a row of width k when the query point is not among the hits, PR at keep the k nearest hits in kNN_int when the query point is not among them mhahsler/dbscan#99
  • EpiLPS builds BBtemp with length t instead of simax, PR at use a window of length simax for BBtemp in Rcpp_KerRpostmap oswaldogressani/EpiLPS#4
  • FDX caps probabilities with pmin(probs, NumericVector(numTests, 1.0)) where probs is shorter, PR at cap probabilities with a scalar in kernel_wPB_fast DISOhda/FDX#1
  • FVDDPpkg builds each column of cartesian_cpp with len(v) * N elements, no repo we could find, patch emailed
  • greeks uses an inclusive Range(s, s + paths) one element too long, PR at fix off-by-one range in make_BM ahudde/greeks#23
  • HistDAWass sizes a weight vector by k instead of vars, an out-of-bounds read when k < vars; no repo we could find, patch emailed
  • PP drops persons from respm without subsetting theta_start, mu and sigma2, PR at keep theta_start, mu and sigma2 aligned with respm after dropping persons jansteinfeld/PP#3
  • tsfgrnn uses Range(ind - nt + 1, ind + 1) assuming a half-open range, PR at use an inclusive Range of length nt for the targets franciscomartinezdelrio/tsfgrnn#2
  • tsfknn uses the same Range(ind - nt + 1, ind + 1), PR at use an inclusive Range of length nt for the targets franciscomartinezdelrio/tsfknn#5

See full list.

NB: Two other failures in that run were on our side and are not covered by this ticket: touch (a compile error in lapply(), fixed in #1513) and revdbayes (an object layout change in #1511 that broke the XPtr call from rust, since reworked). The ConsTree 'illegal operation' (and the long-standing TreeTools, TreeDist and TreeSearch failures) come from an unconditional inline-asm popcnt in TreeTools' SplitList.h, which faults on CPUs without POPCNT such as VMs with a generic CPU model; reported at ms609/TreeTools#287 with a fix at ms609/TreeTools#288. The remaining failures were pre-existing, missing dependencies, or unrelated to Rcpp per the run summary.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      You are visitor 01402503 — GeezerVison does not store the pages you look up.
      Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.