v0.1.1
Second release of GenomicSEM-rs. Patch release on top of v0.1.0 with
pre-built R binaries, Windows R support, the CHANGELOG.md file, and
a handful of R CMD check fixes.
Full diff: v0.1.0...v0.1.1
Added
- Pre-built R binary packages for Linux, macOS, and Windows attached
to every GitHub release. Users no longer need a Rust toolchain to
installgsemr— pick the platform-native file from the release page
and runinstall.packages(<url>, repos = NULL). Source tarball +
remotes::install_githubremain as the "from source" fallback for
unmatched R versions and dev builds. - R package now ships with full Windows build support:
configure.win,
src/Makevars.win, and-Wl,--export-all-symbolsin the MinGW link
line soR .Call("wrap__*_rust", ...)resolves at runtime on
Windows.R CMD checkis green on ubuntu / macos / windows. workflow_dispatchtrigger onpublish.ymlwith arelease_tag
input, so the R-only job path can be manually re-run against an
existing release (to ship a late R binary or fix without burning a
crates.io / PyPI version slot).readme = "README.md"and[project.urls]in
bindings/python/pyproject.tomlso the PyPI project page renders a
description with links to the repo, issue tracker, and architecture
docs. (The 0.1.0 wheels shipped before this landed — the PyPI 0.1.0
page will continue to show "no project description" until 0.1.1 is
uploaded.)
Changed
bindings/python/README.md: absolute GitHub URLs instead of
relative../../API_COMPAT.md/../../ARCHITECTURE.mdlinks
(which don't render on PyPI); function list expanded from 10 to all
17 exports and grouped as Core pipeline vs Advanced.- Root
README.md: R install section restructured — binary
packages as the primary path, source install demoted to a "From
source" subsection. New Rust MSRV (1.88+) badge. - R package internal cleanup:
- Explicit
importFrom(stats, pnorm, setNames)/
importFrom(utils, read.table, write.table)inNAMESPACE,
clearing the "no visible global function definition" notes. @param outadded tosumstats.R+ regeneratedsumstats.Rd
(fixes an "Undocumented arguments in Rd file" WARNING).{chr}inldsc.R's@param lddescription escaped to
\code{<chr>.l2.ldscore.gz}(fixes "Lost braces" NOTE).configure/configure.winprintrustc --version/cargo --versionbefore the build (fixes "No rustc version reported"
WARNING).configure/configure.winnowrm -rf src/rust/targetafter
copying outlibgsemr.a, so R CMD check doesn't scan a duplicate
rust/target/release/libgsemr.aand double-report the Rust
stdlib's_exit/abort/exitsymbols.
- Explicit
Removed
PyLdscResult.to_json()andgsem.LdscResult.from_json(s)— the
json: Stringfield and theconversions::json_to_ldschelper that
backed them. These were dead compat from the pre-NumPy era; every hot
path has been readings/v/i_matthrough NumPy getters for a
while. This is the only user-visible break in 0.1.1. Callers who
were serializing LDSC results to disk should usepickleor pass the
result object directly into downstream functions (all 17 exported
functions accept it).
Fixed
read_sumstatsaborted on NA tokens, so.sumstats.gzfiles that
worked inGenomicSEM::ldscfailed ingsemr::ldscwith a cryptic
gsemr::ldsc error: invalid Nlong beforesample.prev/
population.prevwere even evaluated. GenomicSEM tolerates these
files because its reader callsna.omit(read_delim(...)); gsemr now
matches that behaviour — rows whoseNorZfield is an NA token
(empty,.,NA,NaN,N/A,NULL; case-insensitive) are
silently dropped, with a one-line INFO log naming the file and the
dropped-row count. Genuine parse failures now report file path, line
number, and the offending value, andload_trait_datawraps the
error with the failing file path so multi-trait runs tell you which
input went bad. (crates/gsem/src/io/gwas_reader.rs)publish.ymlskip cascade:check-r-packageand
upload-r-to-releaseno longer inherit the implicitif: success()
gate, which was evaluating to false onworkflow_dispatchruns
(becausepublish-cratesis skipped there). They now use
if: always() && needs.<upstream>.result == 'success'and proceed
as long as their direct needs are green.- Versioned workspace deps: root
Cargo.tomlinternal deps now
carryversion = "0.1.0"alongsidepath, required by
cargo publishfor inter-crate references. - R binding Cargo patch:
bindings/r/src/rust/Cargo.tomldeclares
internal crates at crates.io versions and uses[patch.crates-io]
to redirect to the in-repo sources when available.configure
strips the patch block when the local crates aren't reachable
(tarball install), so cargo falls back to the published crates
cleanly.