QT4CG meeting 126 draft minutes, 24 June 2025

Hello,

Here are the draft minutes from today’s meeting:

  https://qt4cg.org/meeting/minutes/2025/06-24.html

QT4 CG Meeting 126 Minutes 2025-06-24

   [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/7]
     * [8]1. Administrivia
          + [9]1.1. Roll call [7/12]
          + [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/5]
          + [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 #2013: 748 Parse functions: consistency
          + [20]2.2. PR #2049: 2045 Context value can be an empty sequence
          + [21]2.3. PR #2015: 2009 Avoid constructing document node when
            it makes no sense
          + [22]2.4. Issues relating to QName literals
          + [23]2.5. PR #2065
          + [24]2.6. PR #2062
          + [25]2.7. Steps: variable element names, issue #2057
     * [26]3. Any other business
     * [27]4. Adjourned

Draft Minutes

Summary of new and continuing actions [0/7]

     * [ ] QT4CG-082-02: DN to work with NW to come to agreement on the
       fn:ranks proposal
     * [ ] QT4CG-112-01: JLO to propose a concrete example that uses "."
       in a ~%method~s.
     * [ ] QT4CG-116-01: Add a specific error code for unsupported options
       on doc and doc-available
     * [ ] QT4CG-118-01: MK to make an incorrect type raise an error in
       #1906
     * [ ] QT4CG-123-01: MK to do the set example in XQuery.
     * [ ] QT4CG-126-01: JLO to add an example where the map:build key
       function returns multiple keys.

1. Administrivia

1.1. Roll call [7/12]

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

1.2. Accept the agenda

   Proposal: Accept [28]the agenda.

   Accepted.

1.3. Approve minutes of the previous meeting

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

   Accepted.

1.4. Next meeting

   The next meeting is scheduled for 1 July 2025.

   JWL gives regrets for 1 and 8 July.

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

   (Items marked [X] are believed to have been closed via email before
   this agenda was posted.)
     * [ ] QT4CG-082-02: DN to work with NW to come to agreement on the
       fn:ranks proposal
     * [ ] QT4CG-112-01: JLO to propose a concrete example that uses "."
       in a ~%method~s.
     * [ ] QT4CG-116-01: Add a specific error code for unsupported options
       on doc and doc-available
     * [ ] QT4CG-118-01: MK to make an incorrect type raise an error in
       #1906
     * [ ] QT4CG-123-01: MK to do the set example in XQuery.

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 [30]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 [31]#2019: 1776: XSLT template rules for maps and array
     * PR [32]#1283: 77b Update expressions
     * PR [33]#1062: 150bis revised proposal for fn:ranks

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 [34]#2055: 37 Sequence, Array, and Map destructuring

   Proposal: merge without discussion.

   Accepted.

1.6.3. Substantive PRs

   The following substantive PRs were open when this agenda was prepared.
   (Only a few are likely to be discussed at this meeting.)
     * PR [35]#2013: 748 Parse functions: consistency
     * PR [36]#2049: 2045 Context value can be an empty sequence
     * PR [37]#2015: 2009 Avoid constructing document node when it makes
       no sense
     * PR [38]#1942: 37 Support sequence, array, and map destructuring
       declarations
     * PR [39]#2011: 675(part): Add XSLT static typing rules for new kinds
       of XPath expression
     * PR [40]#2014: QT4CG-122-01 Add notes, examples, and rationale for
       xsl:select
     * PR [41]#2019: 1776: XSLT template rules for maps and array
     * PR [42]#2031: 2025 JNodes
     * PR [43]#2037: 2036 Add rule for streamability of xsl:map
     * PR [44]#2043: 2038 Tweak the rules for fn:apply-templates
       references to modes
     * PR [45]#2050: 2040 Fix context value declaration issues

2. Technical agenda

   The following substantive PRs were open when this agenda was prepared.

2.1. PR #2013: 748 Parse functions: consistency

   See PR [46]#2013

   CG has incorporated most of the feedback from last week.
     * CG: One observation was that we could use unparsed-binary instead
       of unparsed-text.
          + ... Also, we wanted to have some comments on parsing XML.
          + ... Added a reference to the fn:doc function which has some
            information about encodings.

   Proposal: accept this PR.

   Accepted.

2.2. PR #2049: 2045 Context value can be an empty sequence

   See PR [47]#2049

   CG displays the document for us.
     * NW: this PR changes a half-dozen or so functions to allow the empty
       sequence.
     * JLO: Generally, I think this fine. I would still like to know the
       justification.

   Some discussion of the consequence of allowing the context value to be
   a sequence.
     * JWL: In all of these cases, if the context value is an empty
       sequence, the functions return an empty sequence.

   That's correct.
     * WP: When you call it with no argument, you're still going to
       default with the current context, but that might now be an empty
       sequence.
     * JWL: The point is that it's still . but that can now be an empty
       sequence. Previously, we expected . to be a singleton.

   Observe that the test is for node()?, so you can't pass a sequence of
   more than one item.

   Proposal: accept this PR.

   Accepted.

2.3. PR #2015: 2009 Avoid constructing document node when it makes no sense

   See PR [48]#2015

   A quick review of the PR.
     * RD: This is only apply to maps and arrays?

   Some discussion of what the result is if the result is a string,
   instead of a map or array.

   (Some fumbling with the result of the diff.)
     * RDL: Does this need to be noted as a breaking change? If a string
       is returned, you won't get a document node?
     * NW: I think that's only true if you use xsl:select.
     * JWL: There's a distinction here between xsl:sequence select=... and
       xsl:select.
          + ... The way to think of it is that xsl:select is letting you
            use a child instead of an attribute so that you avoid
            normalization.

   Proposal: accept this PR.

   Accepted.

2.4. Issues relating to QName literals

     * [49]Issue 2059: Literal QNames: Adaptive serialization
     * [50]Issue 2058: Literal QNames continued
     * [51]Issue 2056: Implicit Whitespace in MarkedNCName and
       QNameLiteral

   CG created PRs and the group agreed to discuss them today.
     * CG: The adative serialization method is mostly for debugging, so we
       can make that simpler.

   CG reviews PR [52]#2060.
     * JLO: In the example that you showed, even with an empty namespace
       there was a #Q{}a
     * CG: Yes, that was my first idea, but we can omit the braces in that
       case.
     * RD: Can we look at the text without the diff?
     * CG: Yes.
     * JWL: Do we have anywhere else where we're likely to get a problem
       with # followed by a letter?
          + ... We have Q{} or # just followed by a string. What if the
            name starts with a Q?
     * RD: If it's not followed by a curly brace then it won't be a QName.
     * JLO: So it's easy to tell.
     * JWL: If this is really for debugging and you aren't going to parse
       it, I'm not sure if using # without the curly braces is actually
       less confusing.
     * JLO: I'm using adaptive serialization a lot, the distinction is
       between # and "#".
          + ... There's no other way to get a # without quotes, so I don't
            think there's a problem.

   Proposal: accept this PR.

   Accepted.
     * CG: Next we have annotations.

   CG reviews PR [53]#2061.
     * CG: This is XQuery only because it's annotations; this could be
       useful for RESTXQ. It wouldn't require parsing strings, you could
       just supply literals.
     * RD: Another example of this is that you could have a throws
       annotation that specifies the error literal directly as a QName.
     * JLO: I'm completely in favor, but why don't we allow maps and array
       literals?
     * NW: That sounds like a separate question.
     * CG: I think the main reason is because its easier to have things
       that can be statically parsed.
          + We avoid using unary here, for example, because we don't want
            to allow more expressions.

   Proposal: accept this PR.

   Accepted.
     * CG: Gunther observed that whitespace is not allowed between # and
       the name.
          + ... It has no effect on pragmas, because they require a
            whitespace.

   CG reviews PR [54]#2064.

   (Only the grammar has changed, so there are no diffs.)
     * CG: The change is just removing whitespace-spec in the production.
     * JWL: Has anyone ever actually seen anyone use spaces after $.
     * JLO: It'd be interesting to know how many parsers fail at this
       point.
     * RD: My IntelliJ plugin has loads of tests for this sort of thing.

   Proposal: accept this PR.

   Accepted.

   The group agrees to look at a few more PRs.

2.5. PR #2065

   See PR [55]#2065
     * CG: This is mostly editorial. In map:build, multiple keys is mostly
       a special case.
          + ... This PR also removes the ability for simplicity.
     * RD: Not related to this, but it might be easier to read if the
       elements in the sygnature table are allowed at the top.
     * NW: Yes, make an issue and assign it to me, please.
     * JWL: We have decided not to support any idea of a sequence value
       for a key. Is that right?
     * CG: That's right.
     * JLO: The function that produces the key is still xs:anyAtomicType*
     * CG: The function isn't changing, just removing the plural.

   Some discussion of what happens when the key is an empty sequence; no
   entry is created.
     * JLO: Are there any examples of multiple keys?
     * CG: Apparently not.

   ACTION QT4CG-126-01: JLO to add an example where the map:build key
   function returns multiple keys.

   Proposal: accept this PR.

   Accepted.

2.6. PR #2062

   See PR [56]#2062
     * CG: The fn:sort-by function allowed you to omit the second
       argument. It looks a bit lost to have sort by with out any sort
       key. My suggestion is to make it manditory, even if it can be the
       empty sequence.
     * NW: Seems reasonable to me.

   Proposal: accept this PR.

   Accepted.

2.7. Steps: variable element names, issue #2057

   CG introduces the issue.
     * CG: I haven't checked all the details yet, so this is just a
       suggestion.
     * JWL: This is what I was asking MK about with JNodes.
          + ... I asked could you do a similar thing on normal nodes.
          + ... He implied that this was a lot more problematic, I'd like
            to hear his opinion.
          + ... I like it, it would be an easy dynamic mechanism for
            putting them in expressions.
     * CG: I think we about $node/$name and that definitely won't work.
          + ... But I think adding element() would work.
     * JLO: I didn't know that you can do $node/$name.

   Some discussion of what that currently means!
     * JK: I'd like some feedback on my #2051 if anyone can take a look.

3. Any other business

   None heard.

4. Adjourned

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/06-24.html#minutes
   7. https://qt4cg.org/meeting/minutes/2025/06-24.html#new-actions
   8. https://qt4cg.org/meeting/minutes/2025/06-24.html#administrivia
   9. https://qt4cg.org/meeting/minutes/2025/06-24.html#roll-call
  10. https://qt4cg.org/meeting/minutes/2025/06-24.html#agenda
  11. https://qt4cg.org/meeting/minutes/2025/06-24.html#approve-minutes
  12. https://qt4cg.org/meeting/minutes/2025/06-24.html#next-meeting
  13. https://qt4cg.org/meeting/minutes/2025/06-24.html#open-actions
  14. https://qt4cg.org/meeting/minutes/2025/06-24.html#open-pull-requests
  15. https://qt4cg.org/meeting/minutes/2025/06-24.html#blocked
  16. https://qt4cg.org/meeting/minutes/2025/06-24.html#merge-without-discussion
  17. https://qt4cg.org/meeting/minutes/2025/06-24.html#substantive
  18. https://qt4cg.org/meeting/minutes/2025/06-24.html#technical-agenda
  19. https://qt4cg.org/meeting/minutes/2025/06-24.html#pr-2013
  20. https://qt4cg.org/meeting/minutes/2025/06-24.html#pr-2049
  21. https://qt4cg.org/meeting/minutes/2025/06-24.html#pr-2015
  22. https://qt4cg.org/meeting/minutes/2025/06-24.html#qname-literals
  23. https://qt4cg.org/meeting/minutes/2025/06-24.html#pr-2065
  24. https://qt4cg.org/meeting/minutes/2025/06-24.html#pr-2062
  25. https://qt4cg.org/meeting/minutes/2025/06-24.html#h-E0E86275-C41A-4199-A786-ECFB368F7E8B
  26. https://qt4cg.org/meeting/minutes/2025/06-24.html#any-other-business
  27. https://qt4cg.org/meeting/minutes/2025/06-24.html#adjourned
  28. https://qt4cg.org/meeting/agenda/2025/06-24.html
  29. https://qt4cg.org/meeting/minutes/2025/06-17.html
  30. https://qt4cg.org/meeting/minutes/2025/06-24.html#technical-agenda
  31. https://qt4cg.org/dashboard/#pr-2019
  32. https://qt4cg.org/dashboard/#pr-1283
  33. https://qt4cg.org/dashboard/#pr-1062
  34. https://qt4cg.org/dashboard/#pr-2055
  35. https://qt4cg.org/dashboard/#pr-2013
  36. https://qt4cg.org/dashboard/#pr-2049
  37. https://qt4cg.org/dashboard/#pr-2015
  38. https://qt4cg.org/dashboard/#pr-1942
  39. https://qt4cg.org/dashboard/#pr-2011
  40. https://qt4cg.org/dashboard/#pr-2014
  41. https://qt4cg.org/dashboard/#pr-2019
  42. https://qt4cg.org/dashboard/#pr-2031
  43. https://qt4cg.org/dashboard/#pr-2037
  44. https://qt4cg.org/dashboard/#pr-2043
  45. https://qt4cg.org/dashboard/#pr-2050
  46. https://qt4cg.org/dashboard/#pr-2013
  47. https://qt4cg.org/dashboard/#pr-2049
  48. https://qt4cg.org/dashboard/#pr-2015
  49. https://github.com/qt4cg/qtspecs/issues/2059
  50. https://github.com/qt4cg/qtspecs/issues/2058
  51. https://github.com/qt4cg/qtspecs/issues/2056
  52. https://qt4cg.org/dashboard/#pr-2060
  53. https://qt4cg.org/dashboard/#pr-2061
  54. https://qt4cg.org/dashboard/#pr-2064
  55. https://qt4cg.org/dashboard/#pr-2065
  56. https://qt4cg.org/dashboard/#pr-2062

                                        Be seeing you,
                                          norm

--
Norm Tovey-Walsh
Saxonica

Received on Tuesday, 24 June 2025 16:56:20 UTC