Commit Graph
3290 Commits
Author SHA1 Message Date
Kyle Kassen da8cea2b0b M10: reuse verified OCR model and packaging prerequisites 2026-10-27 18:54:41 +00:00
aiongg e9fc890a86 Merge pull request #5026 from Silvertree2010/perf/export-speed
perf(engine): export page images on worker threads (about 80% less wall time)
2026-10-27 13:42:21 -04:00
NetterSilverandClaude Opus 5.5 37bf4ee986 perf(engine): export page images on worker threads
Export > Image spent its time in the PNG, JPEG and TIFF encoders, one
page after another: on a 55-page manual at 150 dpi, drawing every page
took about 0.34 s and encoding it 1.1 s (PNG) to 2.0 s (JPEG).

Exporter::images exports a list of pages, drawing and encoding several
at once on worker threads, each with its own PageRenderer (as
automation's extract_parallel does), and hands the files to a sink in
page order on the calling thread. Workers draw at most one page ahead
of the sink and fewer run when 1 GiB can't hold that many of the
largest page. The first page or sink error stops the export with every
earlier page handed over, as before. A page panic becomes that page's
error, and a panicking sink stops the workers. One page, one core or
wasm keeps the per-page loop. Export > Image and the doc_export_images
tool use it.

Files are byte-identical. One core is left for the interface (at most
8 workers). With examples/export_bench, on a Ryzen with 16 threads
(shared), mean of two medians of 21 runs:
  PNG 150 dpi   1874 -> 340 ms  (-82%)
  JPEG 150 dpi  2106 -> 340 ms  (-84%)
  TIFF 150 dpi  2032 -> 375 ms  (-82%)
  PNG 300 dpi   3804 -> 590 ms  (-84%)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 17:41:38 +01:00
aiongg 1dd2737b47 Merge pull request #4889 from aiongg/layout
refactor: shared module layout (craft-contrib#20)
2026-10-26 21:31:30 -04:00
aiongg f022ef0671 style: cargo fmt on moved files 2026-10-27 00:34:32 +00:00
aiongg 323172e860 test(automation): end the file access scan at the test module, not at a cfg(test) use 2026-10-27 00:34:32 +00:00
aiongg d449f2ce63 docs: name the ui-egui files by their new directories 2026-10-27 00:34:32 +00:00
aiongg 064632e0e8 test(ui-egui): name the page modules by their new directories 2026-10-27 00:34:32 +00:00
aiongg 3dbea4e7a0 docs(parity): point evidence at the ui-egui files' new directories 2026-10-27 00:34:32 +00:00
aiongg cb94c8f047 refactor(ui-egui): move open_worker_tests.rs to platform/open_worker/tests.rs 2026-10-27 00:34:32 +00:00
aiongg 636656a9ea refactor(ui-egui): move tab_context.rs into menus/ 2026-10-27 00:34:32 +00:00
aiongg cd0fc37c8d refactor(ui-egui): move folders_ui.rs into home/ 2026-10-27 00:34:32 +00:00
aiongg 7b3d688754 test(ui-egui): rerun the fontconfig tests by their platform:: path 2026-10-27 00:34:32 +00:00
aiongg 80c4572cfa refactor(ui-egui): move system_fonts.rs into platform/ 2026-10-27 00:34:32 +00:00
aiongg ed09547ecf refactor(ui-egui): move window_state.rs into persist/ 2026-10-27 00:34:32 +00:00
aiongg d25378c336 refactor(ui-egui): move units.rs into persist/ 2026-10-27 00:34:32 +00:00
aiongg dc25a6e341 refactor(ui-egui): move recovery.rs into persist/ 2026-10-27 00:34:32 +00:00
aiongg 615232d0e5 refactor(ui-egui): move last_view.rs into persist/ 2026-10-27 00:34:32 +00:00
aiongg 5527f931c9 refactor(ui-egui): move last_session.rs into persist/ 2026-10-27 00:34:32 +00:00
aiongg 687f6f6187 refactor(ui-egui): move window_controls.rs into platform/ 2026-10-27 00:34:32 +00:00
aiongg 90a1880aee refactor(ui-egui): move updates.rs into platform/ 2026-10-27 00:34:32 +00:00
aiongg dc97e74e57 refactor(ui-egui): move ui_scale.rs into platform/ 2026-10-27 00:34:32 +00:00
aiongg 2b4f7694dc refactor(ui-egui): move portable.rs into platform/ 2026-10-27 00:34:32 +00:00
aiongg b37c3a934c refactor(ui-egui): move pickers.rs into platform/ 2026-10-27 00:34:32 +00:00
aiongg 16b49776de refactor(ui-egui): move open_worker.rs into platform/ 2026-10-27 00:34:32 +00:00
aiongg d3cfadd9e2 refactor(ui-egui): move motion.rs into platform/ 2026-10-27 00:34:32 +00:00
aiongg 6638646314 refactor(ui-egui): move macos_association.rs into platform/ 2026-10-27 00:34:23 +00:00
skylar taylor-barrick 9a9813bf7d Merge pull request #4880 from storytold/fix/nextest-0.9.150
ci: require nextest 0.9.150
2026-10-26 17:39:25 -06:00
aiongg d15c5a2e21 refactor(ui-egui): move file_watch.rs into platform/ 2026-10-26 22:46:12 +00:00
aiongg 3e7cc6e5cb refactor(ui-egui): move drag_pointer.rs into platform/ 2026-10-26 22:46:12 +00:00
aiongg 73cd1b16db refactor(ui-egui): move icons.rs into widgets/ 2026-10-26 22:46:12 +00:00
aiongg 228a91c19a refactor(ui-egui): move icon_data.rs into widgets/ 2026-10-26 22:46:12 +00:00
aiongg 963b25f59b refactor(ui-egui): move side_panels.rs into panels/ 2026-10-26 22:46:12 +00:00
aiongg 9c27b333f5 refactor(ui-egui): move search_ui.rs into panels/ 2026-10-26 22:46:12 +00:00
aiongg dc6b6a5c4e refactor(ui-egui): move page_selection_ui.rs into panels/ 2026-10-26 22:46:12 +00:00
aiongg 946767d22d refactor(ui-egui): move organize_panel.rs into panels/ 2026-10-26 22:46:12 +00:00
aiongg 9771123c72 refactor(ui-egui): move format_text_ui.rs into panels/ 2026-10-26 22:46:12 +00:00
aiongg 604ad52c7d refactor(ui-egui): move comments_panel.rs into panels/ 2026-10-26 22:46:12 +00:00
aiongg 81e489b23f refactor(ui-egui): move all_tools_ui.rs into panels/ 2026-10-26 22:46:12 +00:00
aiongg 900d56c411 refactor(ui-egui): move word_count_ui.rs into dialogs/ 2026-10-26 22:46:12 +00:00
aiongg 1096b2a6b7 refactor(ui-egui): move standards_ui.rs into dialogs/ 2026-10-26 22:46:12 +00:00
aiongg de0e370792 refactor(ui-egui): move protect.rs into dialogs/ 2026-10-26 22:46:12 +00:00
aiongg e080461257 refactor(ui-egui): move palette.rs into dialogs/ 2026-10-26 22:46:12 +00:00
aiongg 7f0799c8bd refactor(ui-egui): move pageboxes.rs into dialogs/ 2026-10-26 22:46:12 +00:00
aiongg e901fb838b refactor(ui-egui): move marks_ui.rs into dialogs/ 2026-10-26 22:46:12 +00:00
aiongg f877aaf1c4 refactor(ui-egui): move credits.rs into dialogs/ 2026-10-26 22:46:12 +00:00
aiongg 385e24ec2f refactor(ui-egui): move comment_props.rs into dialogs/ 2026-10-26 22:46:12 +00:00
aiongg 40bb91b402 refactor(ui-egui): move appearance.rs into dialogs/ 2026-10-26 22:46:12 +00:00
aiongg c5d498227d refactor(ui-egui): move web_print.rs into workflows/ 2026-10-26 22:46:12 +00:00
aiongg 9254db5e88 refactor(ui-egui): move print_ui.rs into workflows/ 2026-10-26 22:46:12 +00:00