mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-11-09 21:17:22 +00:00
The Claims review of the branch: the docs said miniz_oxide "builds a block's tables for every block", which a timing doesn't show. They now say what was timed: about 1.7 us for every fixed-Huffman block, empty or not. "The worst comes to about 7 ns a step" was per byte read; a stage's start, about 0.25 us under zlib-rs (1.6 us for eight over an empty stream, release), isn't priced, since every way to repeat one takes bytes of the file. The letterhead test's doc promised more than it checks. The same review found a second shape zlib-rs refuses where miniz_oxide read on: a dynamic block whose code has no end-of-block symbol. flate.rs's quirks and the README row say so, and a_dynamic_code_without_an_end_is_damage checks that nothing of it is kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AmsdeUCdTaD72jkDw2pJKY
162 lines
8.7 KiB
TOML
162 lines
8.7 KiB
TOML
[workspace]
|
|
resolver = "3"
|
|
members = ["crates/*", "apps/*", "xtask"]
|
|
exclude = ["vendor"]
|
|
default-members = ["crates/*", "apps/pdfcraft", "apps/pdfcraft-cli", "xtask"]
|
|
|
|
[workspace.package]
|
|
version = "0.17.0"
|
|
edition = "2024"
|
|
license = "MIT OR Apache-2.0"
|
|
rust-version = "1.95"
|
|
repository = "https://github.com/storytold/pdfcraft"
|
|
|
|
[workspace.dependencies]
|
|
# Shared frontend components; engines remain independent of egui.
|
|
craft-ui = { git = "https://github.com/storytold/craft-libs", version = "0.1.0", rev = "787a7a0f972fd1d7a7618fdbeca3a5267a0407ff", features = ["serde"] }
|
|
# Quit the macOS way (#1136): ⌘Q asks about unsaved changes, and closing quits through `terminate:`.
|
|
craft-quit = { git = "https://github.com/storytold/craft-libs", version = "0.1.0", rev = "787a7a0f972fd1d7a7618fdbeca3a5267a0407ff" }
|
|
# One menu definition for the native macOS menu bar and the in-window bar elsewhere.
|
|
craft-menu = { git = "https://github.com/storytold/craft-libs", version = "0.1.0", rev = "787a7a0f972fd1d7a7618fdbeca3a5267a0407ff" }
|
|
craft-keymap = { git = "https://github.com/storytold/craft-libs", version = "0.1.0", rev = "787a7a0f972fd1d7a7618fdbeca3a5267a0407ff", default-features = false }
|
|
# Shared system spooler; document composition remains in pdfcraft-print.
|
|
craft-print = { git = "https://github.com/storytold/craft-libs", version = "0.1.0", rev = "787a7a0f972fd1d7a7618fdbeca3a5267a0407ff" }
|
|
# Whether a path stored in a document may be opened (GoToR link targets).
|
|
craft-docpath = { version = "0.1.0", git = "https://github.com/storytold/craft-libs", rev = "787a7a0f972fd1d7a7618fdbeca3a5267a0407ff" }
|
|
# craft-update: app-specific pretend versions apply to startup and manual checks.
|
|
craft-update = { git = "https://github.com/storytold/craft-libs", version = "=0.1.0", rev = "787a7a0f972fd1d7a7618fdbeca3a5267a0407ff", features = ["egui"] }
|
|
# internal
|
|
pdfcraft-geom = { path = "crates/geom", version = "0.17.0" }
|
|
pdfcraft-filters = { path = "crates/filters", version = "0.17.0" }
|
|
pdfcraft-cos = { path = "crates/cos", version = "0.17.0" }
|
|
pdfcraft-crypt = { path = "crates/crypt", version = "0.17.0" }
|
|
pdfcraft-organize = { path = "crates/organize", version = "0.17.0" }
|
|
pdfcraft-measure = { path = "crates/measure", version = "0.17.0" }
|
|
pdfcraft-annot = { path = "crates/annot", version = "0.17.0" }
|
|
pdfcraft-audit = { path = "crates/audit", version = "0.17.0" }
|
|
pdfcraft-fonts = { path = "crates/fonts", version = "0.17.0" }
|
|
pdfcraft-model = { path = "crates/model", version = "0.17.0" }
|
|
pdfcraft-content = { path = "crates/content", version = "0.17.0" }
|
|
pdfcraft-redact = { path = "crates/redact", version = "0.17.0" }
|
|
pdfcraft-print = { path = "crates/print", version = "0.17.0" }
|
|
pdfcraft-xfdf = { path = "crates/xfdf", version = "0.17.0" }
|
|
pdfcraft-sign = { path = "crates/sign", version = "0.17.0" }
|
|
pdfcraft-optimize = { path = "crates/optimize", version = "0.17.0" }
|
|
pdfcraft-a11y = { path = "crates/a11y", version = "0.17.0" }
|
|
pdfcraft-oracle = { path = "crates/oracle", version = "0.17.0" }
|
|
pdfcraft-testkit = { path = "crates/testkit", version = "0.17.0" }
|
|
pdfcraft-ocr = { path = "crates/ocr", version = "0.17.0" }
|
|
pdfcraft-js = { path = "crates/js", version = "0.17.0" }
|
|
pdfcraft-compare = { path = "crates/compare", version = "0.17.0" }
|
|
pdfcraft-preflight = { path = "crates/preflight", version = "0.17.0" }
|
|
pdfcraft-export = { path = "crates/export", version = "0.17.0" }
|
|
pdfcraft-edit = { path = "crates/edit", version = "0.17.0" }
|
|
pdfcraft-create = { path = "crates/create", version = "0.17.0" }
|
|
pdfcraft-forms = { path = "crates/forms", version = "0.17.0" }
|
|
pdfcraft-xfa = { path = "crates/xfa", version = "0.17.0" }
|
|
pdfcraft-render = { path = "crates/render", version = "0.17.0" }
|
|
pdfcraft-engine = { path = "crates/engine", version = "0.17.0" }
|
|
pdfcraft-platform = { path = "crates/platform", version = "0.17.0" }
|
|
pdfcraft-ui-egui = { path = "crates/ui-egui", version = "0.17.0" }
|
|
pdfcraft-automation = { path = "crates/automation", version = "0.17.0", default-features = false }
|
|
|
|
# pdf
|
|
hayro = "0.7.1"
|
|
hayro-syntax = "0.7.2"
|
|
lopdf = "0.45"
|
|
# zlib-rs: miniz_oxide took about 1.7 µs for every fixed-Huffman block, empty or not
|
|
# (`pdfcraft_filters::FLATE_READ_WORK`). Other dependencies still build flate2's default
|
|
# miniz_oxide backend; flate2 prefers zlib-rs when both are built, as the Windows build already did
|
|
# through craft-update. `flate::tests::a_copy_from_before_the_start_is_damage` shows which runs.
|
|
flate2 = { version = "1.1", default-features = false, features = ["zlib-rs"] }
|
|
weezl = "0.2"
|
|
# CCITT Group 4 encoding (pdfcraft-filters); already in the tree through tiff.
|
|
fax = "0.2.7"
|
|
# Independent CCITT and JBIG2 codecs, already in the tree through hayro.
|
|
hayro-ccitt = "0.3"
|
|
hayro-jbig2 = "0.3"
|
|
|
|
# foundation
|
|
thiserror = "2"
|
|
serde = { version = "1", features = ["derive", "rc"] }
|
|
serde_json = "1"
|
|
log = "0.4"
|
|
kurbo = "0.13"
|
|
# All date/time conversion goes through chrono (no hand-rolled calendar code beyond the 400-year range extension; AGENTS.md).
|
|
chrono = { version = "0.4.45", default-features = false, features = ["std"] }
|
|
|
|
# testing
|
|
proptest = "1"
|
|
|
|
# ui
|
|
egui = "0.37"
|
|
egui_extras = { version = "0.37", default-features = false, features = ["svg"] }
|
|
eframe = { version = "0.37", default-features = false }
|
|
egui_kittest = "0.37"
|
|
rfd = "0.17"
|
|
# Monotonic time for logic-only work on native and web (`App::logic` runs without a UI pass).
|
|
web-time = "1.1"
|
|
|
|
[workspace.lints.rust]
|
|
unsafe_code = "forbid"
|
|
|
|
[workspace.lints.clippy]
|
|
cognitive_complexity = "deny"
|
|
too_many_arguments = "deny"
|
|
wildcard_imports = "deny"
|
|
dbg_macro = "warn"
|
|
todo = "warn"
|
|
|
|
# `"*"` matches every non-workspace package: crates.io dependencies and the
|
|
# vendored crates under `vendor/` (excluded from the workspace). Dependencies
|
|
# carry no debug info and our own crates only line tables: backtraces and
|
|
# panics still show file and line, while test binaries and the target dir stay
|
|
# small (each UI test binary had a 500-600 MB PDB on Windows, #454).
|
|
[profile.dev.package."*"]
|
|
opt-level = 2
|
|
debug = false
|
|
|
|
[profile.dev]
|
|
opt-level = 1
|
|
debug = "line-tables-only"
|
|
|
|
[profile.low-disk]
|
|
inherits = "dev"
|
|
incremental = false
|
|
|
|
[profile.release]
|
|
lto = "thin"
|
|
codegen-units = 1
|
|
|
|
# Vendored, patched third-party crates (see vendor/README.md). Each patch is meant to go upstream.
|
|
[patch.crates-io]
|
|
hayro-interpret = { path = "vendor/hayro-interpret" }
|
|
hayro = { path = "vendor/hayro" }
|
|
hayro-syntax = { path = "vendor/hayro-syntax" }
|
|
hayro-cmap = { path = "vendor/hayro-cmap" }
|
|
hayro-postscript = { path = "vendor/hayro-postscript" }
|
|
hayro-jbig2 = { path = "vendor/hayro-jbig2" }
|
|
lopdf = { path = "vendor/lopdf" }
|
|
vello_common = { path = "vendor/vello_common" }
|
|
vello_cpu = { path = "vendor/vello_cpu" }
|
|
# The egui and winit crates below are pinned to immutable storytold git revisions (egui
|
|
# 6d518fc799681571963842f95b55a6b68431b15a, winit a517b3846ee8457d84ee4975110bfda6797c44dc).
|
|
# Only the retained `vendor/winit` and `vendor/egui-wgpu` copies are provenance for the app's
|
|
# earlier patches and their source guards, not path patches; the other `vendor/` entries above
|
|
# remain real path patches. See vendor/README.md and the migration plan.
|
|
ecolor = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
emath = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
epaint = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
epaint_default_fonts = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui-winit = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui-wgpu = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_glow = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_extras = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_kittest = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_system_font_provider = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
eframe = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_demo_lib = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
egui_inspection = { git = "https://github.com/storytold/egui.git", rev = "6d518fc799681571963842f95b55a6b68431b15a" }
|
|
winit = { git = "https://github.com/storytold/winit.git", rev = "a517b3846ee8457d84ee4975110bfda6797c44dc" }
|