-
Notifications
You must be signed in to change notification settings - Fork 0
Support Rust with CI/CD and Release Infrastructure #14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: #8
Implements a full Rust version of the Links Notation objects codec with: - LinoValue enum supporting all types (Null, Bool, Int, Float, String, Array, Object) - Full support for special float values (NaN, Infinity, -Infinity) - encode() and decode() functions matching Python/JS API - ObjectCodec struct for direct usage - Comprehensive test coverage (18 tests) - Basic usage example - Documentation with rustdoc comments Also updates: - CI workflow to include Rust tests (cargo test, fmt, clippy) - Main README with Rust documentation and examples Fixes #8 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
This reverts commit 1f67547.
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost estimation:
Now working session is ended, feel free to review and add any feedback on the solution draft. |
|
Get latest changes from default branch. And also make sure we fully support all best practices from templates:
Note that for each language we should have separate .changeset (or similar) folder. But we can share .mjs scripts in root ./scripts folder if possible. We should have no test.yml (it should be merged to the language versions), so end result would be 3 GitHub Workflows:
|
|
🤖 AI Work Session Started Starting automated work session at 2025-12-31T08:46:42.059Z The PR has been converted to draft mode while work is in progress. This comment marks the beginning of an AI work session. Please wait working session to finish, and provide your feedback. |
- Add rust.yml workflow with CI/CD pipeline: - Lint job (cargo fmt, clippy) - Test job (multi-OS: ubuntu, macos, windows) - Build job - Changelog fragment check - Auto-release on main branch push - Manual release via workflow dispatch - Add rust/changelog.d/ folder for changelog fragments - Add Rust release management scripts (Node.js): - create-github-release.mjs - version-and-commit.mjs - bump-version.mjs - collect-changelog.mjs - get-bump-type.mjs - Add CHANGELOG.md for Rust package - Update Cargo.toml with clippy lint configuration - Fix CodecError to derive Eq - Remove redundant test.yml (tests are now in js.yml, python.yml, rust.yml) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost estimation:
Now working session is ended, feel free to review and add any feedback on the solution draft. |
Summary
This PR adds a full Rust implementation of the lino-objects-codec library, providing feature parity with the existing Python and JavaScript implementations, along with comprehensive CI/CD and release infrastructure.
Implementation Details
New
LinoValueenum: Custom value type supporting all serializable types:Null,Bool(bool),Int(i64),Float(f64),String(String)Array(Vec<LinoValue>),Object(Vec<(String, LinoValue)>)serde_json::Valuebecause JSON doesn't support NaN/InfinityFull API parity:
encode()anddecode()convenience functionsObjectCodecstruct for direct usageLinoValue::object(),LinoValue::array(), accessor methodsFeatures:
CodecErrorCI/CD Infrastructure (Following Templates Best Practices)
New
rust.ymlworkflow:Release management scripts (Node.js, using use-m):
create-github-release.mjs- Create GitHub releases from CHANGELOG.mdversion-and-commit.mjs- Bump version and commitbump-version.mjs- Bump version in Cargo.tomlcollect-changelog.mjs- Collect changelog fragmentsget-bump-type.mjs- Determine bump type from fragmentsChangelog fragment system (
rust/changelog.d/):Removed redundant
test.yml: Tests are now integrated into language-specific workflows (js.yml, python.yml, rust.yml)Files Added/Modified
New Files:
.github/workflows/rust.yml- Rust CI/CD workflowrust/Cargo.toml- Updated with clippy lint configurationrust/CHANGELOG.md- Rust changelogrust/changelog.d/README.md- Changelog fragment documentationrust/scripts/*.mjs- Release management scriptsrust/src/lib.rs- Main implementation with testsrust/examples/basic_usage.rs- Usage examplerust/README.md- Rust-specific documentationRemoved:
.github/workflows/test.yml- Redundant, now in language-specific workflowsTest Plan
cargo test)cargo fmt --checkcargo clippy -- -D warnings)cargo run --example basic_usage)npm test)pytest tests/ -v)Fixes #8
🤖 Generated with Claude Code