Releases: RAprogramm/cstring-array
Releases · RAprogramm/cstring-array
v0.1.1
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
- apply rustfmt formatting (#28)
4d843d5 - apply rustfmt formatting (#19)
ab2d3af - apply rustfmt formatting to examples (#8)
a034069
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
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
- API docs: https://docs.rs/cstring-array/0.1.0
- Crates.io: https://crates.io/crates/cstring-array
- Repository: https://github.com/RAprogramm/cstring-array
Minimum Supported Rust Version (MSRV)
Rust 1.90 or later
License
MIT License