vectorcraft/crates
bflatastic b43b15a6e8 Part of #505: restore puts dictionaries back as they were at the save
The PostScript Language Reference (3rd ed., §3.7.3 "Save and Restore")
has `restore` reset composite objects in local VM to their values at the
`save`. The reader only restored the graphics state, so dictionary
entries changed between `save` and `restore` stayed changed: a program
that counts its open saves in a dictionary and refuses to go past a depth
stopped after that many saves in sequence, and the file fell back to its
preview. EPS files with many images, each drawn between `save` and
`restore`, are a likely case of #505; its reporter hasn't sent a file, so
this is part of it.

- While a `save` is open, `def`, `store`, `put`, `undef` and dictionary
  `copy` keep each entry's old value in a journal (counted against the
  memory budget); `restore` undoes it, newest change first, down to its
  save. A save restored already, itself or through an outer one, is no
  longer valid (`invalidrestore`, §3.7.3).
- `cachestatus` reports a device's cache sizes (chapter 8) instead of
  zeros: its last value, the most bytes one cached glyph may take, is what
  programs divide by.
- Tests (programs written from the reference): 100 saves counted in a
  dictionary under a depth limit, each dictionary change undone, saves
  restored twice, `cachestatus`'s glyph limit. Mutation-checked: without
  the journal or with a zero `cachestatus` the test fails. The import fuzz
  vocabulary has saves and restores around dictionary changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 23:43:51 +07:00
..
brush M4.39: SVG symbols as <symbol>/<use>, hidden layers on Save, Dublin Core metadata 2026-10-05 09:03:52 +07:00
cad Fix #177: DXF Fit and Aligned text span their two points 2026-10-07 02:14:39 +07:00
color Fix #320: CMYK images stay CMYK from PDF import to PDF export 2026-10-08 06:04:07 +07:00
doc Type Object Selection by Path Only: every baseline, Type tool and Eyedropper (review of #475) 2026-10-08 18:59:47 +07:00
effects M8.14: Type and symbols in perspective are really projected and stay editable; attachments survive copies 2026-10-06 12:10:00 +07:00
engine Part of #505: restore puts dictionaries back as they were at the save 2026-10-08 23:43:51 +07:00
eps Part of #505: restore puts dictionaries back as they were at the save 2026-10-08 23:43:51 +07:00
format Part of #451: guides dragged out of the rulers snap, artboard guides 2026-10-08 15:23:18 +07:00
geom Pen and anchors: Alt edits one handle, cut and convert selected anchors from the Control bar 2026-10-08 17:16:12 +07:00
mcp Fix #501: a Pen drag out of the first anchor always closes the path 2026-10-08 22:00:24 +07:00
metafile AI import: groups and nested groups survive 2026-10-08 17:06:57 +07:00
pathops Fix #439: Shape Builder erase mode deletes edges, shows what will go and follows Alt live 2026-10-08 13:37:35 +07:00
pdf Fix #508: PDF/.ai import keeps type strokes, wrapped lines and layer order 2026-10-08 22:37:37 +07:00
plugins Fix #121: sandboxed WebAssembly plug-ins: object filters and live effects 2026-10-06 00:19:41 +07:00
render Fix #320: CMYK images stay CMYK from PDF import to PDF export 2026-10-08 06:04:07 +07:00
svg Fix #442: alike circular corners on rectangles that aren't square 2026-10-08 14:34:37 +07:00
testkit M4.62: PDF/.ai layers from optional content: named layers with visibility, print state and lock; art that is off as hidden layers 2026-10-05 13:05:12 +07:00
text Type Object Selection by Path Only: every baseline, Type tool and Eyedropper (review of #475) 2026-10-08 18:59:47 +07:00
tools Fix #501: a Pen drag out of the first anchor always closes the path 2026-10-08 22:00:24 +07:00
trace Robustness: VectorCraft never crashes — no panics in shipped code 2026-10-05 06:28:59 +07:00
ui-egui i18n: Italian rows for strings added since the PR's base, consistency and fit fixes (review of #515) 2026-10-08 23:04:36 +07:00