C workflow: fix Windows configure + attach installer-named release assets#178
Merged
Conversation
…ssets Two C-workflow (c.yml) changes, split out of the R SDK PR so the C CI/release changes can be reviewed on their own: 1. Fix the `Build and Test (windows-latest)` CMake configure failure. The Configure CMake steps run under PowerShell, which splits unquoted native arguments at the decimal point, so -DCMAKE_POLICY_VERSION_MINIMUM=3.5 reached CMake as 3 (and -DJSON_STRUCTURE_VERSION=0.1.0 as 0). The current windows-2025-vs2026 runner image ships CMake 4.3, which rejects the truncated value "3". Quote the -D arguments in all three Configure CMake steps so PowerShell forwards them intact. Bash on Linux/macOS was unaffected. Also fixes the version being silently set to 0. 2. Attach installer-named release archives (json_structure-<os>-<arch>.tar.gz) to the GitHub Release so the Ruby and R runtime downloaders can fetch the prebuilt library by a predictable URL. Adds contents:write permission, an asset_basename matrix, and two steps to the tag-only release job. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
clemensv
added a commit
that referenced
this pull request
Jul 13, 2026
Add an official R SDK (r/) mirroring the Ruby SDK architecture: a thin compiled shim (src/shim.c) loads the prebuilt json_structure C library at runtime (downloaded from GitHub Releases on first use, or via JSONSTRUCTURE_LIB_PATH) and exposes idiomatic R validation functions. - src/shim.c + init.c: dlopen / LoadLibraryExW dynamic loading, ABI re-declared to match c/include headers, columnar .Call result marshaling - R/: public API (js_validate_schema[_strict], js_validate_instance[_strict], is_valid, message and data.frame accessors), lazy library loading, binary downloader/cache, and a faithful port of Ruby's extension-keyword checks - tests/testthat: pure-R, binding, and shared-corpus conformance tests that skip gracefully when the native library or assets are absent - man/: documentation for all exported functions - .github/workflows/r.yml: multi-OS R CMD check + conformance + release - README.md, SDK-GUIDELINES.md: document the new SDK The C release workflow change needed to publish the prebuilt libraries the R (and Ruby) downloaders consume is handled separately in #178. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
clemensv
force-pushed
the
fix/c-workflow-windows-cmake
branch
from
July 13, 2026 10:05
315098f to
bf3cf2c
Compare
Merged
clemensv
added a commit
that referenced
this pull request
Jul 13, 2026
Add an official R SDK (r/) mirroring the Ruby SDK architecture: a thin compiled shim (src/shim.c) loads the prebuilt json_structure C library at runtime (downloaded from GitHub Releases on first use, or via JSONSTRUCTURE_LIB_PATH) and exposes idiomatic R validation functions. - src/shim.c + init.c: dlopen / LoadLibraryExW dynamic loading, ABI re-declared to match c/include headers, columnar .Call result marshaling - R/: public API (js_validate_schema[_strict], js_validate_instance[_strict], is_valid, message and data.frame accessors), lazy library loading, binary downloader/cache, and a faithful port of Ruby's extension-keyword checks - tests/testthat: pure-R, binding, and shared-corpus conformance tests that skip gracefully when the native library or assets are absent - man/: documentation for all exported functions - .github/workflows/r.yml: multi-OS R CMD check + conformance + release - README.md, SDK-GUIDELINES.md: document the new SDK The C release workflow change needed to publish the prebuilt libraries the R (and Ruby) downloaders consume is handled separately in #178. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
C workflow: fix Windows configure + attach installer-named release assets
Two
c.ymlchanges, split out of the R SDK PR (#177) so the C CI/release changes can be reviewed on their own.1. Fix
Build and Test (windows-latest)CMake configure failureThe
Configure CMakesteps run under PowerShell on Windows, which splits unquoted native-command arguments at the decimal point. So the args reached CMake as:-DCMAKE_POLICY_VERSION_MINIMUM=3.5→-DCMAKE_POLICY_VERSION_MINIMUM=3+ stray.5-DJSON_STRUCTURE_VERSION=0.1.0→-DJSON_STRUCTURE_VERSION=0+ stray.1.0The current
windows-2025-vs2026runner image ships CMake 4.3, which rejects the truncated policy value"3"(Invalid CMAKE_POLICY_VERSION_MINIMUM value "3"). Bash on Linux/macOS never splits these, so onlywindows-latestfailed. (The version silently truncating to0was a latent bug too.)Fix: quote the
-Darguments in all threeConfigure CMakesteps so PowerShell forwards them intact. Verified locally.2. Attach installer-named release archives
Attach
json_structure-<os>-<arch>.tar.gzassets to the GitHub Release so the Ruby and R runtime downloaders can fetch the prebuilt library by a predictable URL. Addscontents: writepermission, anasset_basenamematrix, and two steps to the tag-onlyreleasejob.This second change was previously part of #177; moved here so #177 is a pure R-package PR with no
c.ymlfootprint.