QT4CG meeting 144 draft minutes, 2 December 2025

Hi folks,

Here are the draft minutes from today:

   https://qt4cg.org/meeting/minutes/2025/12-02.html

QT4 CG Meeting 144 Minutes 2025-12-02

   [1]Meeting index / [2]QT4CG.org / [3]Dashboard / [4]GH Issues / [5]GH
   Pull Requests

Table of Contents

     * [6]Draft Minutes
     * [7]Summary of new and continuing actions [0/3]
     * [8]1. Administrivia
          + [9]1.1. Roll call [7/10]
          + [10]1.2. Accept the agenda
          + [11]1.3. Approve minutes of the previous meeting
          + [12]1.4. Next meeting
          + [13]1.5. Review of open action items [0/3]
          + [14]1.6. Review of open pull requests and issues
               o [15]1.6.1. Blocked
               o [16]1.6.2. Merge without discussion
               o [17]1.6.3. Substantive PRs
     * [18]2. Technical agenda
          + [19]2.1. PR #2247: Deferred Evaluation in XPath - the
            f:generator record
          + [20]2.2. PR #2256: 2216 All atomic types become ordered
          + [21]2.3. PR #2324: 2278 bin:infer-encoding, bin:decode-string
          + [22]2.4. PR #2313: 2298 XQFO rules: definition of default
            values
          + [23]2.5. PR #2301: 2198 Add cdata attribute to xsl:text and
            xsl:value-of
          + [24]2.6. PR #2281: 2280 Usability of xsl:array-member
          + [25]2.7. PR #2319: 2311 Change default XSLT pattern priorities
     * [26]3. Any other business

Draft Minutes

Summary of new and continuing actions [0/3]

   XXX

1. Administrivia

1.1. Roll call [7/10]

   Regrets: DB, CG
     * [ ] David J Birnbaum (DB)
     * [ ] Reece Dunn (RD)
     * [ ] Christian Gr¸n (CG)
     * [X] Joel Kalvesmaki (JK)
     * [X] Michael Kay (MK)
     * [X] Juri Leino (JLO) [x:19-]
     * [X] John Lumley (JWL)
     * [X] Wendell Piez (WP)
     * [X] Ed Porter (EP)
     * [X] Norm Tovey-Walsh (NW) Scribe. Chair.

1.2. Accept the agenda

   Proposal: Accept [27]the agenda.

   Accepted.

1.3. Approve minutes of the previous meeting

   Proposal: Accept [28]the minutes of the previous meeting.

   Accepted.

1.4. Next meeting

   The next meeting is planned for 9 December 2025.

   The CG will meet on 9 and 16 December, then recess for the end-of-year
   holidays, with the following meeting on 6 January 2026.

1.5. Review of open action items [0/3]

     * [ ] QT4CG-143-01: CG to make another attempt at binary functions.
     * [ ] 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.

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 [29]Technical Agenda below for
   the focus of this meeting.

1.6.1. Blocked

   The following PRs are open but have merge conflicts or comments which
   suggest they aren't ready for action.
     * PR [30]#2309: Allow SimpleMapExpr after ArrowExpr
     * PR [31]#2160: 2073 data model changes for JNodes and Sequences
     * PR [32]#2124: 573 Functions to Construct Trees
     * PR [33]#2071: 77c deep update
     * PR [34]#2019: 1776: XSLT template rules for maps and array

1.6.2. Merge without discussion

   The following PRs are editorial, small, or otherwise appeared to be
   uncontroversial when the agenda was prepared. The chairs propose that
   these can be merged without discussion. If you think discussion is
   necessary, please say so.
     * PR [35]#2320: 2310 Reinstate spec for infix // operator
     * PR [36]#2318: 2317 Correct signature of fn:civil-timezone

   Proposal: merge without discussion

   Accepted.

1.6.3. Substantive PRs

   The following substantive PRs were open when this agenda was prepared.
   Only some of these will be discussed, as [37]shown below.
     * PR [38]#2324: 2278 bin:infer-encoding, bin:decode-string
     * PR [39]#2323: 2322 Generalize simplified stylesheets
     * PR [40]#2319: 2311 Change default XSLT pattern priorities
     * PR [41]#2313: 2298 XQFO rules: definition of default values
     * PR [42]#2301: 2198 Add cdata attribute to xsl:text and xsl:value-of
     * PR [43]#2283: 2276 Relax XSLT rules on Extension Attributes
     * PR [44]#2282: 2278 Add function bin:infer-encoding; simplify
       bin:decode-string
     * PR [45]#2281: 2280 Usability of xsl:array-member
     * PR [46]#2274: 407 Function items capturing XSLT context components
     * PR [47]#2266: 540 system-property equivalent for XQuery
     * PR [48]#2256: 2216 All atomic types become ordered
     * PR [49]#2019: 1776: XSLT template rules for maps and array

2. Technical agenda

2.1. PR #2247: Deferred Evaluation in XPath - the f:generator record

   See PR [50]#2256.

   DN and LQ (Liam Quin) have indicated that this PR is now ready for
   discussion. It's on the agenda this week only as a heads-up. I propose
   that we discuss it next week. DN and LQ will join the call.

2.2. PR #2256: 2216 All atomic types become ordered

   See PR [51]#2256.

   MK introduces the PR.
     * MK: The motivation was to get rid of exception cases and to better
       align comparison and equality.
          + ... In the status quo, you can't use compare() to compare
            things that might be unordered (like QNames)
          + ... Sometimes the ordering is arbitrary (true() and false()),
            but they are ordered.
          + ... The ordering for durations is perhaps most problematic; it
            remains as it was, but it's not an error to attempt to sort
            them.
          + ... The data model impact is quite small, it just says they're
            all ordered
          + ... We introduce families of atomic types
          + ... The XPath impact is largely the value comparison
            operators.
          + ... The main change is that we remove a great table of
            comparison functions.
          + ... Value comparisons are defined in terms of fn:compare().
               o ... There's a special case for NaN.
          + ... We've lost a lot of examples with the table; I tried to
            make sure we have a reasonable set.
               o ... We could add more.

   ACTION QT4CG-144-01: MK to consider if any now lost value comparisons
   should be added as examples.
     * MK: F&O now begins with an apology that it no longer defines any
       operators!
     * MK: I've introduced the term contextually equal if fn:compare()
       returns zero (with the appropriate dynamic context)
          + ... fn:atomic-equal() is now defined in terms of compare for
            numerics.
          + ... Editorial changes to fn:compare().
          + ... fn:deep-equal() now refers to fn:compare() returning zero.
          + ... fn:distinct-value() refers to contextually equal.
          + ... fn:index-of now uses the same contextually equal
            comparison; that is a technical change.
               o ... It compares NaN as equal to NaN.
          + ... Lots of textual change to fn:min() and fn:max(), but not
            significant
          + ... fn:highest() and fn:lowest() get some editorial changes
          + ... In fn:substring(), the arithmetic no longer refers to
            numeric-less-than operator.
          + ... Arithmetic is still only defined on the duration subtypes.
          + ... All the other changes are about removing the operators.
     * NW: Why did we do it the way we did in 2.0?
     * MK: I don't know. Someone thought it was a good idea. But now that
       we've introduced the general fn:compare function so that's just a
       lot of duplication.
     * JWL: Are there any serious backwards incompatibilities?
     * MK: The only one I'm aware of is NaN in fn:index-of().

   Proposal: accept this PR.

   Accepted.

   (MK believes that CG agreed in principle.)

2.3. PR #2324: 2278 bin:infer-encoding, bin:decode-string

   See PR [52]#2324. See also PR [53]#2282.

   Wait until CG is present.

2.4. PR #2313: 2298 XQFO rules: definition of default values

   See PR [54]#2313.

   Wait until CG is present.

2.5. PR #2301: 2198 Add cdata attribute to xsl:text and xsl:value-of

   See PR [55]#2301.
     * MK: We had an external requirement to support this feature.
          + ... I tried with a PI, but NW observed that was problematic.
          + ... Here, I've added a cdata attribute to xsl:text and
            xsl:value-of.
          + ... It's expressed as an intent, and may be ignored.
     * NW: Much better. It'll still get lost across successive
       transformations.
          + ... Is there any potential here for annotating the actual
            text() node?
     * MK: We could, but then you'd have to define what happens to
       anything that operates on text nodes, for example what do you do
       with adjacent text nodes?
     * JWL: If a text node is in a variable, you're saying anything could
       happen.
     * MK: An implementation could potentially store text nodes with a bit
       that indicates if cdata is requested.
          + ... But I'm saying it's only really likely to work if you pass
            it directly to a serializer.
     * JK: Looks good and interesting. Where there any updates needed for
       what to do with serialization?
     * MK: No, we haven't made this a property of the text node. Sequence
       normalization will merge text nodes. I've basically left that
       largely unspecified.
     * JK: So if you have three text nodes that are adjacent, and only the
       middle has the cdata attributes, what should I expect?
     * MK: At the moment, I'm honoring that and only putting the middle
       one in a CDATA section.
          + ... There's still complexity here, what to do with combining
            characters.
          + ... I don't think we want to specify all that.
     * WP: I like this a lot. I think it's okay that this is like
       disable-output-escaping.
          + ... There's a bit of adjacency here with character mapping.

   Some discussion of character mapping.
     * MK: I wouldn't expect the CDATA tags themselves to be subject to
       character mapping!
          + ... Maybe we need a bit more detail, but I'd like to keep it a
            bit hand wavy.

   ACTION QT4CG-144-02: MK to add notes about edge cases: sequence
   normalization and character maps for example.

   Proposal: accept this PR.

   Accepted.

2.6. PR #2281: 2280 Usability of xsl:array-member

   See PR [56]#2281.
     * MK: These changes came from attempts to write tests and finding
       cases where it produced the wrong answer. I made spec changes in
       response to the usability experience of writing test cases. It's
       also in response to comments on the original proposal.
     * MK: I've introduced the term parcel again.
          + ... The parcel simplifies the polymorphism in the array
            instruction.
          + ... It's now a dynamic error if you mix ordinary items and
            xsl:array-member instructions.

   MK walks through the examples.
     * JWL: In the for-each example that has apply-templates inside it:

<xsl:array for-each="*">
  <xsl:apply-templates select="."/>
</xsl:array>

     * MK: There are two things it can do is create ordinary nodes or a
       single array member.
     * JWL: But it can't produce two array members.
     * MK: That's right.
     * JWL: The heterogenous problem only applies when you use for-each.

   Proposal: accept this PR.

   Accepted.

2.7. PR #2319: 2311 Change default XSLT pattern priorities

   See PR [57]#2319.
     * MK: When I wrote the issue, I thought there was a simple typo. But
       I discovered that for type patterns there was previous work that
       attempted to make the type patterns depend on the placement of the
       type in the hierarchy.
          + ... But that makes xsl:next-match really complex.

   MK reviews the priorities in the current proposal, section 6.3.3.2.
     * MK: The conflict resolution rules are simplified.
     * WP: I like it too. I wonder if there are any edge cases where we
       need to be able to find the default priority values?
     * MK: It would be useful for writing tests!
          + ... I XSLT, you have to bracket it with priorities above and
            below and make sure xsl:next-match does the right thing.

   Proposal: accept this PR.

   Accepted.

3. Any other business

   None heard.

References

   1. https://qt4cg.org/meeting/minutes/
   2. https://qt4cg.org/
   3. https://qt4cg.org/dashboard
   4. https://github.com/qt4cg/qtspecs/issues
   5. https://github.com/qt4cg/qtspecs/pulls
   6. https://qt4cg.org/meeting/minutes/2025/12-02.html#minutes
   7. https://qt4cg.org/meeting/minutes/2025/12-02.html#new-actions
   8. https://qt4cg.org/meeting/minutes/2025/12-02.html#administrivia
   9. https://qt4cg.org/meeting/minutes/2025/12-02.html#roll-call
  10. https://qt4cg.org/meeting/minutes/2025/12-02.html#agenda
  11. https://qt4cg.org/meeting/minutes/2025/12-02.html#approve-minutes
  12. https://qt4cg.org/meeting/minutes/2025/12-02.html#next-meeting
  13. https://qt4cg.org/meeting/minutes/2025/12-02.html#open-actions
  14. https://qt4cg.org/meeting/minutes/2025/12-02.html#open-pull-requests
  15. https://qt4cg.org/meeting/minutes/2025/12-02.html#blocked
  16. https://qt4cg.org/meeting/minutes/2025/12-02.html#merge-without-discussion
  17. https://qt4cg.org/meeting/minutes/2025/12-02.html#substantive
  18. https://qt4cg.org/meeting/minutes/2025/12-02.html#technical-agenda
  19. https://qt4cg.org/meeting/minutes/2025/12-02.html#pr-2247
  20. https://qt4cg.org/meeting/minutes/2025/12-02.html#pr-2256
  21. https://qt4cg.org/meeting/minutes/2025/12-02.html#pr-2324
  22. https://qt4cg.org/meeting/minutes/2025/12-02.html#pr-2313
  23. https://qt4cg.org/meeting/minutes/2025/12-02.html#pr-2301
  24. https://qt4cg.org/meeting/minutes/2025/12-02.html#pr-2281
  25. https://qt4cg.org/meeting/minutes/2025/12-02.html#pr-2319
  26. https://qt4cg.org/meeting/minutes/2025/12-02.html#any-other-business
  27. https://qt4cg.org/meeting/agenda/2025/12-02.html
  28. https://qt4cg.org/meeting/minutes/2025/11-25.html
  29. https://qt4cg.org/meeting/minutes/2025/12-02.html#technical-agenda
  30. https://qt4cg.org/dashboard/#pr-2309
  31. https://qt4cg.org/dashboard/#pr-2160
  32. https://qt4cg.org/dashboard/#pr-2124
  33. https://qt4cg.org/dashboard/#pr-2071
  34. https://qt4cg.org/dashboard/#pr-2019
  35. https://qt4cg.org/dashboard/#pr-2320
  36. https://qt4cg.org/dashboard/#pr-2318
  37. https://qt4cg.org/meeting/minutes/2025/12-02.html#technical-agenda
  38. https://qt4cg.org/dashboard/#pr-2324
  39. https://qt4cg.org/dashboard/#pr-2323
  40. https://qt4cg.org/dashboard/#pr-2319
  41. https://qt4cg.org/dashboard/#pr-2313
  42. https://qt4cg.org/dashboard/#pr-2301
  43. https://qt4cg.org/dashboard/#pr-2283
  44. https://qt4cg.org/dashboard/#pr-2282
  45. https://qt4cg.org/dashboard/#pr-2281
  46. https://qt4cg.org/dashboard/#pr-2274
  47. https://qt4cg.org/dashboard/#pr-2266
  48. https://qt4cg.org/dashboard/#pr-2256
  49. https://qt4cg.org/dashboard/#pr-2019
  50. https://qt4cg.org/dashboard/#pr-2256
  51. https://qt4cg.org/dashboard/#pr-2256
  52. https://qt4cg.org/dashboard/#pr-2324
  53. https://qt4cg.org/dashboard/#pr-2282
  54. https://qt4cg.org/dashboard/#pr-2313
  55. https://qt4cg.org/dashboard/#pr-2301
  56. https://qt4cg.org/dashboard/#pr-2281
  57. https://qt4cg.org/dashboard/#pr-2319

                                        Be seeing you,
                                          norm

--
Norm Tovey-Walsh
Saxonica

Received on Tuesday, 2 December 2025 17:22:59 UTC