Changelog

User-visible changes by release

=begin rakudoc

Overview

This changelog follows the shape of Keep a Changelog, adapted to Rakudoc. Versions use the META6.json version number and release tags use the release-x.y.z convention.

Unreleased

0.0.9 - 2026-07-23

Added

  • The parse operator (↱) slurps an IO::Handle left-hand side (such as $*IN) before invoking the format parser; the handle is left open.

  • Bare navigation operators (no LHS) use the caller topic $_, matching the documented axis behaviour. A missing or undefined topic is an error.

  • Selection alias 𜸈, named navigation aliases (child, parent, descendant, attribute, data-root), and ancestor :reference support.

  • Universe-based set operators ⩃, ā©‚, āŠ™, and ⊔, plus unary complement ∁ (universe from caller $_).

  • Equijoin ā–·=◁, natural join ā‰œ, and named join recall ā–µ via Qwiratry::Query::NamedJoins.

  • Following/preceding-sibling Int RHS counts how many sibling rows to return.

Changed

  • Set difference is canonical ⊟ (U+229F), with āˆ– kept as an alias; set-difference complement is ⊔ (U+22A1). Circled āŠ–/āŠ™ remain the symmetric-difference pair.

  • query-ast builds Qwiratry nodes for āŠ– and ≔ on Positional operands instead of losing to Raku core set/Bool dispatch.

0.0.8 - 2026-07-22

Fixed

  • Selection (σ) and reduce (⌿) now bind bare topic blocks the same way map does: callables with .count = 1> receive the item argument, so predicates and reducers written as { ... } get a defined $_ instead of OUTER::<$_> (often Any).

0.0.7 - 2026-07-21

Added

  • Filesystem tree navigation for IO::Path directory roots returned by ⮳, including a dedicated Qwiratry::Tree::Navigator::Filesystem.

  • Final-segment glob support for file locations, plus focused tests for filesystem navigation and tilde-expanded paths.

Changed

  • File locations now expand ~, ~/, and ~user/ paths, and source reads return IO::Path for directories instead of slurping them as text.

  • Query selector matching now understands basename globs and regexes for filesystem navigation, reusing the shared selector machinery.

Fixed

  • Navigation evaluators now resolve adaptor subjects before walking tree axes, so chained source-then-navigation expressions work correctly.

  • Query slang Ā». now preserves MapOperator for explicit query-ast { ... } construction while plain evaluated data uses normal map behaviour.

  • Location errors now report the resolved filesystem path and current working directory, making relative-path failures easier to diagnose.

0.0.6 - 2026-07-02

Added

  • query-ast { ... } in query slang for building raw operator AST when planners, molds, or explicit runtime calls need unevaluated query trees.

  • Integration tests that query operators evaluate directly in normal use instead of returning OperatorBase AST nodes.

Changed

  • Query slang set, map-reduce, relational, and I/O operators now evaluate immediately and return Seq results or adaptor outcomes. Wrap expressions in query-ast { ... } to preserve AST construction.

  • Bumped Implementation::Loader dependency to 0.0.9+ so location backend discovery uses distribution provides keys.

  • Updated META6.json module description.

Fixed

  • Map-reduce evaluation treats Seq and Iterator subjects as collections, fixing I/O pipelines where upstream operators return lazy sequences.

  • Row rename evaluation uses DELETE-KEY instead of the non-existent Hash.delete method.

0.0.5 - 2026-06-30

Added

Add a release-time provides/package checker that compares META6.json's provides entries with the Fez bundle manifest or an existing archive. This catches cases where Fez's gitignore handling excludes files that still exist in the source tree, and updates the release process to run the check before publishing.

Changed

  • Add explicit URI scheme registration for location backends so file:// locations resolve to the discovered File backend rather than a lower-cased module name. This keeps backend lookup consistent whether callers provide a backend name directly or arrive through a URI scheme.

Fixed

  • Updated RakuAST tests to avoid say 1 * 3, which current Rakudo folds to say 3, so there is no infix node to find.

  • Fixed mixed mold when handling by recognizing topic hash-key predicates like .<value>:exists after query/predicate splitting, and preserving reliable topic invocation for manual Mold.new predicates.

0.0.4 - 2026-06-29

Added

  • givenroot $root { ... } syntax for temporarily binding the active query data root while evaluating navigation expressions.

  • A sigil-less root term for query code that needs to refer to the currently bound data root.

  • Type-object selectors for query navigation, allowing expressions such as RakuAST::IntLiteral and RakuAST::Call to match nodes directly by type.

  • Focused tests for data-root binding, type-object selectors, table foreign-key navigation with a bound data root, and RakuAST ancestor lookup.

Changed

  • Renamed the dynamic query origin concept to data root in the query slang runtime API and documentation.

  • Updated table navigation examples to use givenroot instead of the older query-origin helper style.

  • Expanded the release process documentation with install verification, clearer release step grouping, and explicit fez/GitHub verification steps.

Fixed

  • RakuAST ancestor navigation now falls back to origin-based parent lookup when a node exposes a parent method that returns Nil.

  • Descendant navigation now treats type objects as explicit selectors instead of ignoring them as non-path values.

0.0.3 - 2026-06-29

Added

  • RakuAST tree navigation support through Qwiratry::Tree::Navigator::RakuAST.

  • A dedicated tree navigator namespace, registry, and base role under Qwiratry::Tree::Navigator.

  • Documentation for adding tree navigators and for the release process.

Changed

  • Moved tree navigator discovery and registration out of Qwiratry::Format. Formats now stay focused on parse and render implementations.

  • RakuAST navigation no longer appears as a navigator-only format. It now lives under Qwiratry::Tree::Navigator::RakuAST.

  • Transformer default traversal now treats navigator-backed roots, including RakuAST roots, as trees instead of inline scalar values.

Fixed

  • Calling a transformer on a RakuAST root now walks descendant RakuAST nodes without requiring an explicit descendant query iterator.

0.0.2 - 2026-06-24

Changed

  • Aligned operator precedence documentation with the implemented query operators.

Fixed

  • Fixed local package installation behavior.

0.0.1 - 2026-06-24

Added

  • Initial public release of Qwiratry.

  • RakuAST-backed query operators and query slang for navigation, set, map-reduce, relational, and IO-style query expressions.

  • Tree and table walker infrastructure with lazy QueryIterator execution, walker planning, strategy hooks, and traversal context support.

  • Transformer and mold infrastructure, including mold matching, make, NextMold, wrapper hooks, ordering, traits, and tree rewrite support.

  • Table navigation support, schema discovery, ordered-row navigation, and foreign-key style relationship traversal.

  • Format, location, and IO implementation factories and demo parse/render formats.

  • Rakudoc documentation for the architecture, operators, extension points, and required Raku support.

Changed

  • Renamed the original template terminology to molds across the transformer system.

  • Reorganized modules into the current Qwiratry::Format, Qwiratry::Walker, Qwiratry::Strategy, Qwiratry::Transformer, and Qwiratry::Query namespaces.

  • Converted service-style modules to singleton facade classes where appropriate.

Fixed

  • Stabilized zef testing and test layout under t/.

  • Fixed lazy set operators, relation row equality, topic binding, wrapper collection, and iterator exhaustion behavior.

  • Improved mold diagnostics, exception placement, and package metadata.

=end rakudoc

Qwiratry v0.0.9

Declarative query and data-walking architecture for Raku, with transformers, molds, walkers, and I/O pipelines.

Authors

  • Tim Nelson

License

Dependencies

SlangifyImplementation::Loader:ver<0.0.9+>Glob::Grammar

Test Dependencies

Provides

  • Qwiratry
  • Qwiratry::Context
  • Qwiratry::Format
  • Qwiratry::Format::Base
  • Qwiratry::Format::CSVdemo
  • Qwiratry::Format::JSONdemo
  • Qwiratry::Location
  • Qwiratry::Location::Base
  • Qwiratry::Location::File
  • Qwiratry::Mold
  • Qwiratry::Mold::Compiler
  • Qwiratry::Mold::Registry
  • Qwiratry::Mold::Slang
  • Qwiratry::Operator::Capability
  • Qwiratry::Operator::IO
  • Qwiratry::Operator::MapReduce
  • Qwiratry::Operator::Navigation
  • Qwiratry::Operator::Set
  • Qwiratry::Query::Evaluator::Eager
  • Qwiratry::Query::Evaluator::Filter
  • Qwiratry::Query::Evaluator::Join
  • Qwiratry::Query::Evaluator::Lazy
  • Qwiratry::Query::Evaluator::MapReduce
  • Qwiratry::Query::Evaluator::Navigation
  • Qwiratry::Query::Evaluator::Relational
  • Qwiratry::Query::Evaluator::Row
  • Qwiratry::Query::Evaluator::Set
  • Qwiratry::Query::Evaluator::Union
  • Qwiratry::Query::Extract
  • Qwiratry::Query::NamedJoins
  • Qwiratry::Query::RelationCommon
  • Qwiratry::Query::Runtime
  • Qwiratry::Query::Selector
  • Qwiratry::Query::Slang
  • Qwiratry::Query::Specificity
  • Qwiratry::Query::Topic
  • Qwiratry::QueryIterator
  • Qwiratry::QueryMatch
  • Qwiratry::Setup
  • Qwiratry::Strategy
  • Qwiratry::Strategy::ControlSignal
  • Qwiratry::Strategy::FinishResult
  • Qwiratry::Strategy::RewriteSpec
  • Qwiratry::Strategy::Traversal
  • Qwiratry::Suggest
  • Qwiratry::Table
  • Qwiratry::Table::Schema
  • Qwiratry::Transformer
  • Qwiratry::Transformer::Copy
  • Qwiratry::Transformer::TreeRewrite
  • Qwiratry::Tree::Navigator
  • Qwiratry::Tree::Navigator::Base
  • Qwiratry::Tree::Navigator::Filesystem
  • Qwiratry::Tree::Navigator::Match
  • Qwiratry::Tree::Navigator::RakuAST
  • Qwiratry::Tree::Replace
  • Qwiratry::Walker
  • Qwiratry::Walker::Capabilities
  • Qwiratry::Walker::Factory
  • Qwiratry::Walker::Implementation::Table
  • Qwiratry::Walker::Implementation::Tree
  • Qwiratry::Walker::Master
  • Qwiratry::Walker::Providing
  • X::Qwiratry

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.