Skip to content

Expose reflective QBS generation - #71

Merged
ip332 merged 1 commit into
mainfrom
tools/qbs-reflective
Sep 18, 2026
Merged

ip332 merged 1 commit into
mainfrom
tools/qbs-reflective

Conversation

@ip332

@ip332 ip332 commented Sep 18, 2026

Copy link
Copy Markdown
Owner

Expose the existing QBS v1 reflective build mode through quarry-schema-compiler.

Minimal (default):

quarry-schema-compiler \
  --emit-qbs schema.qbs \
  schema.brd

Reflective:

quarry-schema-compiler \
  --emit-qbs schema.qbs \
  --qbs-reflective \
  schema.brd

Reflective QBS includes record display names, field names, and enum type names. Symbolic enum-value names remain unsupported. Minimal QBS remains the default for compatibility and smaller embedded metadata.

For benchmarks/schemas/workload.brd, measured artifacts were:

  • minimal: 881 bytes
  • reflective: 1063 bytes
  • increase: 182 bytes (20.66%)
  • repeated reflective generation: byte-identical

The resulting workflow is .brd -> quarry-schema-compiler --emit-qbs --qbs-reflective -> reflective QBS -> quarry-brf-inspect -> human-readable field names.

This uses existing BuildMode::Reflective, QbsModelBuilder, and QBS v1 serialization. No QBS/BRF/Schema IR format changes or compatibility bumps are required.

Compatibility: C++ epoch 3, C epoch 2, Python epoch 1, BRF 2, QBS 1.

Validation: focused schema compiler tests, QBS model/serializer/parser tests, full CTest 53/53, deterministic generation, and reflective end-to-end inspection passed.

@ip332
ip332 merged commit e12c718 into main Sep 18, 2026
5 checks passed
@ip332
ip332 deleted the tools/qbs-reflective branch September 18, 2026 13:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant