Releases: BelfrySCAD/openscad_parser
Releases · BelfrySCAD/openscad_parser
Release list
v2.6.1
Cache eviction for deleted/moved source files
- Disk cache now tracks source file paths in a
manifest.jsonalongside the pickle files - On each cache save, entries whose source files no longer exist are automatically evicted
clear_disk_cache()also removes the manifest
v2.6.0
Performance: Optimized include parsing
Parsing files with large include chains (e.g., include <BOSL2/std.scad>) is now 52x faster on subsequent runs thanks to per-file caching and architectural improvements.
Changes
- Per-file independent parsing — Each included file is parsed as its own unit instead of concatenating all sources into one giant string. Enables granular caching and ~15% faster cold parses.
- Disk-based AST cache — Each file's AST is cached to disk (pickle). Subsequent parses of unchanged files load in ~1s instead of 45+s. Cache location:
~/Library/Caches/openscad_parser/(macOS),~/.cache/openscad_parser/(Linux). Configurable viaOPENSCAD_PARSER_CACHE_DIRenv var. - Fixed O(n²) position computation — Replaced recursive
_get_node_end_positiontree walk with Arpeggio's built-inposition_endattribute. - Fixed
_replace_textline count whenstrip_trailing_newlinecrosses a line boundary.
New APIs
clear_disk_cache()— Clear the on-disk AST cache.
Performance
| Scenario | Before | After |
|---|---|---|
| Cold parse (first ever) | 54.5s | 46.7s |
| Subsequent parses (disk cache) | 54.5s | 1.0s |
| Same-process repeat (memory cache) | instant | instant |
Benchmarked with BOSL2/std.scad (33 files, 55K lines, 2.8MB expanded)
v2.5.2
v2.5.1
v2.5.0
v2.4.8
v2.4.7
v2.4.6
v2.4.5
v2.4.4
What's Changed
- Bump pytest from 9.0.2 to 9.0.3 by @dependabot[bot] in #14
- Bump pygments from 2.19.2 to 2.20.0 by @dependabot[bot] in #15
- Potential fix for code scanning alert no. 1: Workflow does not contain permissions by @revarbat in #16
New Contributors
- @dependabot[bot] made their first contribution in #14
Full Changelog: v2.4.3...v2.4.4