- Add decode_page_content_streams() function for per-page lazy decode - Update extract_page_from_dict() to support lazy stream decoding - Modify extract_pdf() and extract_pdf_ndjson() to enable lazy decoding - Fix borrow checker issue in LazyPageIter::next() This ensures content streams are decoded lazily per page and dropped immediately after processing, keeping peak RSS flat across page count. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
38 lines
1.7 KiB
Markdown
38 lines
1.7 KiB
Markdown
# ADR-002: MPL-2.0 License Exception for option-ext
|
|
|
|
## Status
|
|
Accepted
|
|
|
|
## Context
|
|
option-ext (v0.2.0) is a transitive dependency brought in by the dirs crate
|
|
(v5.0.1), which pdftract-cli uses for resolving platform-specific configuration
|
|
directories (e.g., ~/.config/pdftract on Linux, ~/Library/Application Support on macOS).
|
|
|
|
## Decision
|
|
MPL-2.0 is explicitly allowed for option-ext as a transitive dependency with no
|
|
viable alternative.
|
|
|
|
## Rationale
|
|
- option-ext is a **transitive dependency** - not directly chosen by pdftract
|
|
- The dirs crate is the de-facto standard for cross-platform config directory resolution
|
|
- No viable alternative to dirs exists that avoids the option-ext transitive dependency
|
|
- option-ext provides a single trivial function (Option::zip) - minimal code surface
|
|
- The MPL-2.0 copyleft effect is limited to the option-ext crate itself
|
|
|
|
## Alternatives Considered
|
|
- **Hardcode platform paths**: Would break on niche platforms and future OS versions
|
|
- **Use a different dirs crate**: No alternative exists; all similar crates pull in option-ext
|
|
- **Fork dirs without option-ext**: Impractical maintenance burden for a single function
|
|
|
|
## Consequences
|
|
- pdftract can use dirs for cross-platform config directory resolution
|
|
- The MPL-2.0 license does not affect downstream users of pdftract
|
|
- This exception applies to option-ext as a transitive dependency only
|
|
|
|
## Future Work
|
|
- Monitor the dirs crate for future versions that may eliminate the option-ext dependency
|
|
- Consider contributing a PR to dirs to remove the option-ext dependency if feasible
|
|
|
|
## References
|
|
- dirs repository: https://github.com/dirs-dev/dirs-rs
|
|
- option-ext repository: https://github.com/kvsari/option-ext
|