Skip to content

Releases: BelfrySCAD/openscad_parser

v2.6.1

Choose a tag to compare

@revarbat revarbat released this 22 Jun 16:00

Cache eviction for deleted/moved source files

  • Disk cache now tracks source file paths in a manifest.json alongside 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

Choose a tag to compare

@revarbat revarbat released this 21 Jun 15:02

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 via OPENSCAD_PARSER_CACHE_DIR env var.
  • Fixed O(n²) position computation — Replaced recursive _get_node_end_position tree walk with Arpeggio's built-in position_end attribute.
  • Fixed _replace_text line count when strip_trailing_newline crosses 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

Choose a tag to compare

@revarbat revarbat released this 18 Jun 01:16

Full Changelog: v2.5.1...v2.5.2

v2.5.1

Choose a tag to compare

@revarbat revarbat released this 09 Jun 16:26

Full Changelog: v2.5.0...v2.5.1

v2.5.0

Choose a tag to compare

@revarbat revarbat released this 09 Jun 16:22

Full Changelog: v2.4.5...v2.5.0

v2.4.8

Choose a tag to compare

@revarbat revarbat released this 19 May 05:02

Full Changelog: v2.4.5...v2.4.8

v2.4.7

Choose a tag to compare

@revarbat revarbat released this 19 May 04:41

Full Changelog: v2.4.5...v2.4.7

v2.4.6

Choose a tag to compare

@revarbat revarbat released this 19 May 02:03

Full Changelog: v2.4.5...v2.4.6

v2.4.5

Choose a tag to compare

@revarbat revarbat released this 18 May 20:16

Full Changelog: v2.4.4...v2.4.5

v2.4.4

Choose a tag to compare

@revarbat revarbat released this 18 May 19:25

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

Full Changelog: v2.4.3...v2.4.4