Skip to content

Releases: RAprogramm/cstring-array

v0.1.1

19 Oct 07:10

Choose a tag to compare

Changes

Features

  • add automatic release workflow (#39) 50e6d7b
  • add property-based testing with proptest (#27) c105ec1
  • implement standard Rust traits for better ergonomics (#28) fe0fbee
  • add fuzzing infrastructure with cargo-fuzz (#25) 2a2bb05
  • add Miri testing for unsafe code validation (#26) 9be0988
  • add GitHub Security Code Scanning (CodeQL) (#19) 15c8c4e
  • add crates.io badges and improve README organization (#9) 5055240
  • add cargo-deny for supply chain security (#8) b8e767d
  • add GitHub issue and PR templates (#7) 0cf1ad1

Bug Fixes

  • checkout tested commit in auto-release workflow (#41) 785ab3a
  • use ptr.add() instead of ptr.offset() for clippy (#27) d7c5a26
  • add SPDX header to fuzz/.gitignore for REUSE compliance (#36) 54e16b9
  • install llvm-tools-preview for cargo-fuzz (#25) b498d45
  • add path filters to workflows to prevent unnecessary CI runs (#30) bcf7a03
  • add explicit permissions to all CI workflow jobs (#23) 412490e
  • add actions write permission for rust-cache (#19) a66e5f3
  • add contents write permission for GitHub Release (#14) 0c75cac

Documentation

  • add trait examples to lib.rs and README.md (#28) 10b13d4
  • add collapsible sections and remove emoji (#32) 59c46ac
  • add practical usage examples (#5) 88109a2
  • add comprehensive project documentation (#6) 5c83c39

Chore

Other Changes

  • v0.1.1 f3cd743
  • fix: resolve Miri hanging tests and add tokei metrics automation 5355792
  • Update README to remove contributing and license sections 45cc05d
  • Update Dependabot configuration for cargo ecosystem 23b2fc9

Full Changelog: v0.1.0...v0.1.1

v0.1.0 - Initial Public Release

19 Oct 01:46
7078f67

Choose a tag to compare

Release v0.1.0: Initial Public Release

Safe, zero-copy wrapper for passing string arrays to C FFI (char**)

Features

  • Memory-safe RAII-based lifetime management
  • Zero-copy construction from Vec
  • C-compatible char** pointers with null termination
  • Multiple constructors and trait implementations
  • 98.5%+ test coverage
  • Cross-platform support (Linux, macOS, Windows)
  • Full REUSE 3.3 compliance
  • Comprehensive CI/CD pipeline

What's Included

Core Functionality

  • CStringArray for safe char** FFI
  • Zero-copy from_cstrings() constructor
  • Automatic memory management
  • Null-terminated pointer arrays

API

  • new() - Create from Vec
  • from_cstrings() - Zero-copy from Vec
  • TryFrom implementations for Vec<&str>, arrays
  • as_ptr() - Get C-compatible char** pointer
  • Iterator support

Quality

  • 98.5%+ test coverage (unit + integration + doctests)
  • Benchmarks for all operations
  • Full documentation
  • CI: format, clippy, tests, coverage, audit, docs

Security

  • cargo-audit in CI
  • cargo-deny for supply chain security
  • CodeQL security scanning
  • REUSE 3.3 license compliance

Installation

Add to Cargo.toml:
```toml
[dependencies]
cstring-array = "0.1.0"
```

Quick Example

```rust
use cstring_array::CStringArray;
use std::ffi::c_char;

let args = vec![
"program".to_string(),
"--verbose".to_string(),
"file.txt".to_string(),
];
let array = CStringArray::new(args).unwrap();

// Safe to pass to C FFI functions expecting char**
let ptr: *const *const c_char = array.as_ptr();
assert_eq!(array.len(), 3);
```

Documentation

Minimum Supported Rust Version (MSRV)

Rust 1.90 or later

License

MIT License