Skip to content

Adopt the relix-core#102 engine changes and drop their workarounds - #37

Merged
david-Darkcollective merged 4 commits into
developfrom
claude/engine-102-followups-1e23aa
Oct 8, 2026
Merged

david-Darkcollective merged 4 commits into
developfrom
claude/engine-102-followups-1e23aa

Conversation

@david-Darkcollective

Copy link
Copy Markdown
Member

Adopts the engine changes in DarkCollective/relix-core#102 (published as 1.0.0-SNAPSHOT) and removes the workarounds that were waiting for them. One commit per change:

  • Re-enable the test that a blocking operator over an unbounded input is refused. Follows Refuse a blocking operator over an unbounded Relix.input at plan time relix-core#98. The test Output formats and pipe discipline, and data inputs with -i #34 disabled now runs for both τ and γ and checks that the error says the input is unbounded. δ isn't in the test because it streams by design.
  • Print relix fmt's output with the engine's script printer. Follows Keep comments, and offer the ASCII spelling, when printing a script relix-core#99. fmt prints ScriptPrinter.print(Relix.parse(text, source), spelling) and still aligns inline tables. The command no longer scans for comments or respells glyphs one token at a time, and ScriptText keeps only the scan that finds where each statement ends. Statements with a comment inside them are now formatted too; a new test covers that. The examples are still formatted idempotently, with the same statements and every comment kept, in both spellings.
    • Known gap: the engine's printer drops a blank line between a comment and the statement or namespace that follows it. For example, a header comment, then a blank line, then namespace …; comes out with no blank line. A disabled test (FmtTest.Layout.blankAfterComment) records this until relix-core fixes it.
  • Print every relix optimize rewrite, now that each one parses. Follows Relation.render() of an optimised CLOSURE writes a seed the parser cannot read relix-core#100. The per-rewrite parse check, the fallback that left a query as written, and its warning are gone. The introspection example's seeded-closure query is now rewritten, and the test checks that output with relix check. The existing test that the optimized examples return the same rows still passes.
  • Look relix doc's pages up in relix-docs' ReferenceLookup. Follows Move the reference lookup into relix-docs: functions and front-end pages in one index relix-core#95. DocIndex duplicated ReferenceLookup, so DocIndex and its test are removed. relix-cli has no reference pages of its own, so it passes no extra pages. The relix doc tests in ManagementCommandsTest still cover lookup by glyph, keyword and name, the fix collision, the listing, and every key.

Not changed: DarkCollective/relix-core#101 (a parameter's text read as its analysed type). Nothing in relix-cli binds parameters yet, because -a NAME=VALUE (#14) isn't built. When it is, it can pass the text through and let the engine convert it.

./gradlew build --refresh-dependencies passes.

…s refused

DarkCollective/relix-core#98 made stream() refuse τ and γ over an unbounded
Relix.input with UnboundedRelationException, so the test #34 disabled now
runs, for τ and for γ, and checks the error names the input as unbounded.
δ is not among them: it streams by design.
DarkCollective/relix-core#99 made ScriptPrinter keep a script's comments and
print the ASCII spelling, so fmt no longer scans for comments itself or
respells the glyphs token by token. It prints
ScriptPrinter.print(Relix.parse(text, source), spelling) and aligns the
inline tables' columns, as before.

A statement with a comment inside it is now formatted too, with the comment
kept. The engine's printer drops a blank line between a comment and the
statement or namespace after it; a disabled test records that until the
engine keeps it.
DarkCollective/relix-core#100 made render() of an optimized relation always
parse back, a seeded closure included, so optimize no longer parses each
rewrite, leaves a query it cannot write as written, or warns about it. The
introspection example's closure query is now rewritten, and the test checks
the output with relix check; the examples' optimize runs write nothing to
stderr.
DarkCollective/relix-core#95 put the reference index in relix-docs:
ReferenceLookup indexes the language pages and the installed functions'
pages, and a language keyword keeps a name it shares with a function. That
is what DocIndex built here, so DocIndex and its test go and doc uses
ReferenceLookup. relix-cli has no pages of its own, so it passes none.

The listing gives the functions grouped by category, as ReferenceLookup
offers them, rather than in the order the libraries list them.
@david-Darkcollective
david-Darkcollective merged commit 8ad37ec into develop Oct 8, 2026
3 checks passed
@david-Darkcollective
david-Darkcollective deleted the claude/engine-102-followups-1e23aa branch October 8, 2026 20:15
david-Darkcollective added a commit that referenced this pull request Oct 12, 2026
* Re-enable the test that a blocking operator over an unbounded input is refused

DarkCollective/relix-core#98 made stream() refuse τ and γ over an unbounded
Relix.input with UnboundedRelationException, so the test #34 disabled now
runs, for τ and for γ, and checks the error names the input as unbounded.
δ is not among them: it streams by design.

* Print relix fmt's output with the engine's script printer

DarkCollective/relix-core#99 made ScriptPrinter keep a script's comments and
print the ASCII spelling, so fmt no longer scans for comments itself or
respells the glyphs token by token. It prints
ScriptPrinter.print(Relix.parse(text, source), spelling) and aligns the
inline tables' columns, as before.

A statement with a comment inside it is now formatted too, with the comment
kept. The engine's printer drops a blank line between a comment and the
statement or namespace after it; a disabled test records that until the
engine keeps it.

* Print every relix optimize rewrite, now that each one parses

DarkCollective/relix-core#100 made render() of an optimized relation always
parse back, a seeded closure included, so optimize no longer parses each
rewrite, leaves a query it cannot write as written, or warns about it. The
introspection example's closure query is now rewritten, and the test checks
the output with relix check; the examples' optimize runs write nothing to
stderr.

* Look relix doc's pages up in relix-docs' ReferenceLookup

DarkCollective/relix-core#95 put the reference index in relix-docs:
ReferenceLookup indexes the language pages and the installed functions'
pages, and a language keyword keeps a name it shares with a function. That
is what DocIndex built here, so DocIndex and its test go and doc uses
ReferenceLookup. relix-cli has no pages of its own, so it passes none.

The listing gives the functions grouped by category, as ReferenceLookup
offers them, rather than in the order the libraries list them.
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