                        Changes in version 0.2.0                        

  - Removed the incoming DESCRIPTION spelling NOTE by replacing
    "loadability" with "shared-library" and shortened the report
    examples to one scan each.
  - Reused command and native probe results within each report to avoid
    repeated PowerShell launches on Windows. A new report or memory
    sample observes fresh dynamic values, and temporary observations are
    discarded even after errors.
  - Preserved missing memory for malformed or partly unavailable CUDA
    process accounting, absent worker rows, and empty sample lists.
  - Prevented OS NVIDIA fallback rows from overriding an initialized
    CUDA driver that reports no visible devices when nvidia-smi is
    unavailable.
  - Corrected has_gpu() so physical-only CUDA devices hidden from the
    process are not reported as usable process-visible GPUs, while
    retaining operating- system fallback detection when CUDA provides no
    device observations.
  - Separated successful CUDA driver initialization from device-count
    query status and exposed driver_device_count_status in cuda_info().
  - Made hardware_manifest() reuse one CUDA/device snapshot across its
    CUDA, NCCL, device, and optional memory sections.
  - Added gpu_memory_peak() to combine worker-process samples by GPU
    UUID and return the highest complete observed memory sum for every
    expected device. Missing observations remain explicitly unmeasured
    rather than becoming zero.
  - Added cuda_libraries(), a consolidated loadability table for the
    CUDA driver, CUDA runtime, cuBLAS, cuFFT, cuSOLVER, cuRAND, and
    NCCL. Optional libraries do not affect has_cuda().
  - Added optional nccl_info() inspection that dynamically loads NCCL,
    queries its version, and reports process-visible CUDA devices
    without creating a communicator or making NCCL a requirement for
    CUDA use.
  - Added public cpu_info() with physical, logical, and
    process-available core counts, packages, threads per core, CPU
    features, and structured provenance.
  - Added system_memory_info() with host and effective container RAM,
    swap, and current-process resident-memory fields in bytes on Linux,
    macOS, and Windows.
  - Extended hardware_info() and hardware_manifest() with host memory
    and explicit visible/physical GPU counts. Multi-GPU visibility is
    not presented as evidence that a consuming package can execute
    across multiple GPUs.
  - Added gpu_memory_sample() for timestamped process-level GPU memory
    samples. CUDA samples are matched by process ID and GPU UUID; Metal
    samples use MTLDevice.currentAllocatedSize for the current R
    process.
  - Added hardware_manifest() for versioned, serializable benchmark
    provenance covering the host, devices, generic compute components,
    and memory.
  - Preserved gpu_memory_info() as the backward-compatible device-wide
    memory snapshot API.
  - Added explicit measurement status and reason codes when process
    memory is unavailable or unsupported, including Windows WDDM
    limitations.

                 Changes in version 0.1.0 (2026-09-26)                  

  - Initial CRAN release with framework-independent CPU, GPU, CUDA,
    Metal, ROCm, and OpenCL discovery.
