← Back to all sparks
P

parglm

ANALYTICS
Velocity0.0

Under a new maintainer, parglm traded raw speed work for glm parity and memory safety

rglmparallel computingc++memory safetymaintainership
Current state
parglm fits generalized linear models using parallel QR decomposition, targeting datasets where glm() is too slow. Tom Palmer took over maintenance at 0.1.8 in April 2026, and the package has released five times since — a burst of activity after a long quiet period. 0.2.0 in July 2026 is the first release to focus on correctness rather than throughput.
Where it's heading
The arc runs from performance to trustworthiness. 0.1.9 was a large optimization release — deque-based task queues, fused memory passes, upper-triangle-only Fisher information, thread_local IDs — plus ecosystem integration with sandwich and gtsummary. 0.2.0 then fixed an out-of-bounds write triggered by small block_size values and a path where a non-finite working response could poison the QR decomposition, and brought response-type handling in line with glm().
Prediction
With the memory-safety issues addressed and glm parity closed for binomial responses, further work is likely to extend family coverage or the benchmark suite rather than revisit the threading model. The C++17 requirement set at 0.1.8 gives room for more aggressive optimization if the maintainer returns to that.

Recent moves

  1. 1mo ago

    glm-compatible response types plus out-of-bounds and QR safety fixes

    parglm now accepts factor, character and logical responses for binomial and quasibinomial families as glm() does, and errors on numeric responses outside [0,1]. Two memory-safety issues are fixed: an out-of-bounds write when block_size rounded below the coefficient count, and a zero-weight path where a non-finite working response could corrupt the QR decomposition. The correctness counterweight to 0.1.9's optimization push.

    View source ↗
  2. 2mo ago

    Build fixes for macOS SDK and thread pool includes

    Documentation grammar, a missing include for the MacOSX11.3.1 SDK, header tidying and a CRAN two-core test limit. Build hygiene with no user-visible change.

    View source ↗
  3. 3mo ago

    Add missing <thread> include for older Apple SDKs

    A one-line include fix for builds on older Apple SDKs, released two days after 0.1.9. Compile-time only.

    View source ↗
  4. 3mo ago

    Threading overhaul, quasi families, and sandwich/gtsummary compatibility

    The substantial release of the new maintainership: busy-wait polling removed, the linked-list task queue replaced with a deque under a single mutex, chunk copy and weight scaling fused into one memory pass, and nthreads defaulted to availableCores(omit = 1L). Adds quasibinomial() and quasipoisson(), confint.parglm, robust standard errors compatible with sandwich, and gtsummary integration — the package becoming usable inside standard modelling workflows, not just faster.

    View source ↗
  5. 3mo ago

    New maintainer takes over; C++17 now required

    Tom Palmer takes over maintenance and immediately modernizes the toolchain: C++11 specification removed, C++17 required across platforms, std::result_of replaced with std::invoke_result, and an infinite recursion in QR_base::qyt fixed. The handover that starts the package's current release run.

    View source ↗