QT4 CG Meeting 147 Minutes 2026-01-06
Meeting index / QT4CG.org / Dashboard / GH Issues / GH Pull Requests
Table of Contents
Draft Minutes
Summary of new and continuing actions [0/5]
[ ]QT4CG-143-02: MK to try to recover the ability to extract formal equivalences into tests[ ]QT4CG-143-03: JK to look for C14N test suites.[ ]QT4CG-144-01: MK to consider if any now lost value comparisons should be added as examples.[ ]QT4CG-147-01: MK to fix the change markup entry for fn:curent-merge-group; it refers to the wrong function name.[ ]QT4CG-147-02: NW to chase up DN and LQ about follow-up to the generator discussion
1. Administrivia
1.1. Roll call [7/13]
Regrets: CG.
[X]David J Birnbaum (DB)[X]Reece Dunn (RD)[ ]Sasha Frisov (SF)[ ]Christian Grün (CG)[ ]Joel Kalvesmaki (JK)[X]Michael Kay (MK)[ ]Juri Leino (JLO)[X]John Lumley (JWL)[X]Alan Painter (AP[X]Wendell Piez (WP)[ ]Ruvim Pinka (RP)[ ]Ed Porter (EP)[X]Norm Tovey-Walsh (NW) Scribe. Chair.
1.2. Accept the agenda
Proposal: Accept the agenda.
MK observes that #2336 should have been at the top of the agenda.
Accepted with that change.
1.3. Approve minutes of the previous meeting
Proposal: Accept the minutes of the previous meeting.
Accepted.
1.4. Next meeting
The next meeting is planned for 13 January 2026.
No regrets heard.
JWL gives regrets for 20, 27 January.
1.5. Review of open action items [1/4]
[ ]QT4CG-143-02: MK to try to recover the ability to extract formal equivalences into tests[ ]QT4CG-143-03: JK to look for C14N test suites.[ ]QT4CG-144-01: MK to consider if any now lost value comparisons should be added as examples.[X]QT4CG-146-01: NW to attempt to provide a markup solution for argument defaults
1.6. Review of open pull requests and issues
This section summarizes all of the issues and pull requests that need to be resolved before we can finish. See Technical Agenda below for the focus of this meeting.
1.6.1. Close without action
It has been proposed that the following issues be closed without action. If you think discussion is necessary, please say so.
- Issue #2048: Untrusted execution, and security more generally
Proposal: close this issue without further action.
Accepted.
2. Technical agenda
2.1. PR #2336: 2334 Revise XSLT pattern syntax and semantics
See PR #2336.
MK introduces the PR.
- MK: Primarily about XSLT, but there are one or two knock-on effects on the
XPath grammar.
- … One is completely trivial; the pattern syntax now reuses the fragment for
constants so it’s been rearranged a bit.
- … 2.6.6 Constants has been drawn out into a section of their own.
- … The other is not so trivial; in the interest of alignment, I’ve changed the syntax for JNode types to work like patterns. You can specify first the selector, then the type. That brings pattersn and types into alignment for JNodes. Let’s look at that first.
- … One is completely trivial; the pattern syntax now reuses the fragment for
constants so it’s been rearranged a bit.
- MK: The
JNodeTypeproduction is changed; it now has two parts, a selector property followed by a content type. That aligns with JNode patterns and element tests.- … The selector has to be a constant, that again aligns with elements.
- … If you want to use the selector with a type, that implies that it’s statically known.
- MK: The other changes are to XSLT.
- … The way patterns work has been restructured a bit.
- … Predicate patterns aren’t new, but we’ve changed the way the semantics are described.
- … I’ve changed the syntax for type patterns, it was getting too messy.
- … I gave up trying to write some types in
type()and some outside. They’re now all uniformly a tilde followed by an item type.
- MK: Type patterns are now simple conceptually; you can’t combine them with union and intersect.
- MK: The third kind of pattern are ~GNodePattern~s. You can now use paths for
both JTrees and XTrees and the semantics are defined in the same way.
- … This removes the ambiguity of parenthesis in JNode patterns.
- MK: The meaning of GNode pattern has been generalized to handle JNodes.
- MK: Changing the intersect and excepts back to the way it was also removes the
backwards incompatibility that we introduced. But also reintroduces the
problem that
exceptdoesn’t always mean what you might think it means. - MK: There are no longer special rules for intersect and except in priorities.
MK reviews the priorities outlined in the spec.
- JWL: In 6.3.2.2, the fifth example in type patterns, the
jnode(address…example is missing a closing).- … I’ve run some tests on the grammar and I don’t see any ambiguities.
- JWL: We don’t use tilde anywhere else, right?
- MK: I think that’s right. At one stage we had a separate syntax for JTrees but we abandoned that.
- JWL: The
*in the selectors and content things, is there an argument for saying that that is a wildcard production? Or is that too complex?- … When I’m doing the grammar conversions, there isn’t a production for the
*, it’s just text. - … If we made it a specific production, then it would be clearer in the grammar.
- … When I’m doing the grammar conversions, there isn’t a production for the
- MK: There’s a related problem when you just have a name there; you have to
remember that it was a bare name because you don’t know until runtime if it’s
being used as an element name or not. (Is it a QName in the default namespace
or a plain name?)
- … The semantics get a little bit complex in that case.
- JWL: It’s just a suggestion.
- RD: We do something similar for element and attribute tests, because they were
missing the
*:nameproduction. - JWL: That might be what I’m thinking
wildcardis set to. I’ll review and send some mail.
Proposal: Accept this PR.
Accepted.
- JWL: In the example that has a record with a
*at the end is a production for an extensibility key. I think we’ve got reasonable stuff about trying to make things grammar productions. - RD: See also:
- JWL: You need to know that a star was present which is unlike tilde.
2.2. PR #2348: 1011 fn transform improvements
See PR #2348.
- MK: I think the issue here describes a wider range of things; I just picked some low-hanging fruit.
- MK: The first thing is adding a
source-locationoption.- … We needed this in Saxon to allow
fn:transformto do streaming.
- … We needed this in Saxon to allow
- MK: … We add the option to write outputs to persistent storage (the filesystem)
- … We resisted this previously because it’s a side effect; let’s just bite the bullet.
Proposal: Accept this PR.
Accepted.
2.3. PR #2266: 540 system-property equivalent for XQuery
See PR #2266.
Some discussion of whether or not this is awaiting further work…
2.4. PR #2274: 407 Function items capturing XSLT context components
See PR #2274.
MK introduces the PR. Essentially, it handles the XSLT bits of the context the same way we handle the XPath bits. When you bind a function item to something like regex groups, then it explicitly captures the regex groups as part of the bound context in that function item rather than throwing some sort of error. It’s just an alignment thing with the XPath context functions.
- MK: The detail mainly involves removing rules.
Proposal: Accept this PR.
Accepted.
ACTION QT4CG-147-01: MK to fix the change markup entry for fn:curent-merge-group; it refers to the wrong function name.
- JWL: Inside a function that captures the regex group, is it available for the whole function?
Some discussion of a complex case with a partial function bound to an XSLT function with the capturing group.
- MK: None of this is especially useful, it just follows the general rule and removes some special cases.
Proposal: Accept this PR.
Accepted.
3. Any other business
- NW: Are we ready to create a checkpointed version?
General agreement that we are.
- MK: Are we going to try to keep track of changes.
Some discussion. We’ll try to be diligent about putting dates in the change summaries.
- JWL: Should we check with CG and or JLO first?
- NW: I can.
- MK: In terms of program of work, how do we tackle generators?
ACTION QT4CG-147-02: NW to chase up DN and LQ about follow-up to the generator discussion
Some further discussion.
- RD: DN’s approach is more of an external library approach. But the proposal I made is in effect providing a single function that allows you to create programmatic sequences from a generator style or iterator style.
- MK: That’s basically the proposal I took and ran with.
- NW to put MK’s proposal on the agenda for next week to see if we can get a better understanding of it.