Developing Qwiratry
=begin rakudoc
Overview
This document collects the README material that is mainly useful when developing Qwiratry rather than simply using it.
Source Installation
Install from a checkout when working on Qwiratry itself:
git clone <repository-url>
cd raku-Qwiratry
zef install .
Qwiratry currently needs RakuAST support when running:
export RAKUDO_RAKUAST=1
Architecture
Qwiratry is built around five core architectural groups:
Query group: declarative, immutable query specifications; this is what to find.
Walker group: traversal strategies and execution plans; this is how to walk the data.
Strategy group: element-level behavior and reusable processing logic.
Transformer group: declarative data transformations using molds.
Per-traversal group: mutable state management with
Contextand incremental result streaming withQueryIterator.
The architecture enables:
Multiple traversal strategies for the same query.
Query optimization before execution.
Streaming results via lazy iterators.
Composite execution across multiple domains.
Pluggable strategies for element processing.
Requirements
Raku 6.e or later.
Slangify.Implementation::Loaderv0.0.7 or later.RAKUDO_RAKUAST=1in the environment.
Testing
Run the test suite with zef from the repository root:
zef test .
Developer Documentation
Specification: complete architecture specification.
Operators: query operator reference.
kitty-specs/: detailed feature specifications and design documents.t/examples/: example code and usage patterns.Extending Qwiratry: extension guides for formats, locations, walkers, strategies, transformers, and other extension points.
Required Raku Modifications: possible Raku language and runtime changes that would better support data-oriented programming.
Streaming Qwiratry Proposal: proposed interfaces for streaming-capable parsers, renderers, sources, and destinations.
Qwiratry TOP Plan: design note for rebuilding Raku TOP on Qwiratry.
Qwiratry TOP Prerequisites: normative spec for streaming-shaped Location I/O (Source/Destination on tables), Relation, and anonymous Tables (plan ยง4.1โ4.2).
Changelog: user-visible changes by release.
Release Process: prep, fez publishing, and GitHub release steps.
=end rakudoc