Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
27 changes: 27 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Ruby

on:
push:
branches:
- main

pull_request:

jobs:
build:
runs-on: ubuntu-latest
name: Ruby ${{ matrix.ruby }}
strategy:
matrix:
ruby:
- '3.4.5'

steps:
- uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@ed55d55e820a01da7d3e4863a8c51a61d73c3228
with:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
- name: Run the default task
run: bundle exec rake
22 changes: 22 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/.bundle/
/.claude/
/.yardoc
/_yardoc/
/coverage/
/doc/
/pkg/
/spec/reports/
/tmp/

# Build artifacts
*.bundle
*.so
*.dll
*.dylib
lib/lzma_sdk_wrapper/

# rspec failure tracking
.rspec_status

# macOS
.DS_Store
3 changes: 3 additions & 0 deletions .rspec
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
--format documentation
--color
--require spec_helper
38 changes: 38 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.1.0] - 2025-12-10

### Added
- Initial release of `ruby_lzma`
- Archive reading functionality (7z format)
- Password-protected archive support
- Memory buffer operations (StringIO/String support)
- Archive verification (`Reader#test`)
- Memory extraction (`Reader#extract_data`)
- Entry iteration and inspection
- File extraction to disk
- Block syntax with automatic cleanup
- `Entry#path` alias for `entry.name`
- FFI bindings to LZMA SDK 25.01
- RBS type signatures
- SDK version introspection (`RubyLzma.sdk_version`)
- Test suite with password-protected archive tests

### Technical Details
- Uses LZMA SDK 25.01 (public domain, Igor Pavlov)
- Three-layer architecture: C API, C++ Bridge, Ruby FFI
- Thread-safe implementation (no global state)
- Memory-safe (proper COM reference counting)
- Cross-platform support (macOS, Linux, Windows)

### Compatibility
- Drop-in alternative to `seven_zip_ruby` gem for read operations
- Supports Ruby 3.0+

Loading