QT4CG meeting 125 draft minutes, 17 June 2025

Hi folks,

Here are the minutes from today’s meeting.

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

QT4 CG Meeting 125 Minutes 2025-06-17

   [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 [1/6]
          + [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. Close without action
     * [18]2. Technical agenda
          + [19]2.1. PR 1942: 37 Support sequence, array, and map
            destructuring declarations
          + [20]2.2. PR 2030: 2029 xsd validator notes and examples
          + [21]2.3. PR 1888: 366 xsl:package-location
     * [22]3. Any other business
     * [23]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.

1. Administrivia

1.1. Roll call [7/12]

   Regrets: BTW, DB, JWL
     * [ ] David J Birnbaum (DB)
     * [X] Reece Dunn (RD)
     * [X] Christian Gr¸n (CG)
     * [X] Joel Kalvesmaki (JK)
     * [X] Michael Kay (MK)
     * [X] Juri Leino (JLO)
     * [ ] 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 [24]the agenda.

   Accepted.

1.3. Approve minutes of the previous meeting

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

   Accepted.

1.4. Next meeting

   The next meeting is scheduled for 24 June 2025.

1.5. Review of open action items [1/6]

   (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.
     * [X] QT4CG-124-01: MK to provide a copy of the slide deck for the
       minutes.
          + Attachd to issue or PR in Github

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 [26]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 [27]#2019: 1776: XSLT template rules for maps and array
     * PR [28]#1283: 77b Update expressions
     * PR [29]#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 [30]#2044: Hide `MarkedNCName` from XPath spec
     * PR [31]#2042: 2041 Correction to xsl:namespace-alias example

   Proposal: merge without discussion.

   Accepted.

1.6.3. 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 [32]#1127: Binary resources

   Closed because we completed it.
     * JK: Can someone put a cross reference into #1127?

2. Technical agenda

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

2.1. PR 1942: 37 Support sequence, array, and map destructuring declarations

   See PR [33]#1942

   RD walks through the PR.
     * RD: The scope is to add destructuring support for sequences, maps,
       and arrays.
          + ... Currently it's done for XPath, but there's more work for
            XQuery
          + ... Also changed the inline examples to the example markup in
            a few places for consistency.
          + ... LetBinding is renamed to LetValueBinding
          + ... There's a new LetSequenceBinding, $( ... )
          + ... And equivalent array and map bindings to destructure them.
          + ... The let binding has been rewritten to a style similar to
            for binding.
     * MK: You can have a type declaration both inside and outside the
       brackets?
     * RD: Yes.
     * MK: Okay. I missed that.
     * RD: The idea behind that is that you might want to check that the
       map is a specific record type and then check the items inside it.
     * MK: I think the fact that clauses A and B are referring to
       different type declarations needs to be made clearer.
     * MK: The substantive point is, do we coerce the sequence to the type
       first and then decompose it, or do we decompose it and then coerce?
          + ... If the expression evaluates to a node and the node
            produces five atomics when you atomize it, which way is the
            binding done?
     * RD: I assume that depends on whether the let expression itself has
       a type declaration.
          + ... My understanding is that if the let expression has a type
            declaration then the value of the temporary variable would get
            coerced to that type.
     * MK: So you coerce to the outermost type, then decompose, then
       coerce each of the items.
     * RD: Yes.
     * MK: Okay. That's technically coherent.
     * JL: We only have to coerce if there's something to coerce to.
          + ... It could become expensive to do two steps of coercion. And
            how do we tackle things if the sequence is a string but it
            contains an NCName.
          + ... Do we need to consider incompatible type declarations?
     * RD: In that case, the coercion on the outer scope will succeed and
       coerce it to the specified type but the inner type coercion will
       fail. So you'll get a type error.
     * MK: Yes, it will carry a cost to do the coercion twice, but that's
       not something users are likely to do. And if they do, the types are
       probably going to be consistent and the optimizer can return them.
     * RD: There's a similar structure for LetArrayBinding.
          + ... It returns an empty sequence if there's no element.
     * MK: Where's the error if you ask for a type that isn't an array
       type?

   Some discussion of how the type declarations are used to handle the
   array case.
     * RD: We should say that the type declaration must also be coerceable
       to array.
          + ... The current wording doesn't verify that the type is an
            array but it should.
     * JL: More generally, if I don't care about some values, can I just
       use $_ in several places?
     * RD: Yes. The idea is that this works exactly as it would if you
       expanded it out.
     * RD: There's a similar process for LetMapBinding.
          + ... There is a similar issue here, there should be a note that
            the type must be coerceable to a map.
          + ... Again, an empty sequence is returned if the key is
            missing.
     * RD: And we have a description of the result of the ForLetExpr.

   Turning to the XQuery spec...
     * RD: There's the change from example text to example block again.
          + ... And the nonterminal name changes.
     * RD: The rest is hard to read because it's diffing off an older
       branch.
     * JL: Great to see it come to life, finally. Thank you.
          + ... I think it would be useful to have a note that you can
            reuse a variable several times.
     * CG: Thank you. It's really great. Do we have specific reasons for
       allowing repeated variable names, beyond the fact that they're
       allowed in FLOWR expressions in general?
     * RD: It's useful because you can't mutate a variable; if you have a
       complicated expression structure, it can be useful to have things
       like an accumulator variable or something like that. And also, if
       you've got a nested expression, it can be useful to have variables
       named $i or $node or something generic.
     * MK: There have definitely been cases where I've reused $temp in a
       FLOWR expression.
     * MK: I suggest that if we have technical consensus, I can take over
       a redrafting.
     * RD: Yeah, that's fine.
     * JL: Is it necessary to have a $ in front of the brackets?
     * RD: In the case of parenthesis, you can't distinguish the parens
       from a function call.

   Some discussion of declaring the default function namespace and the
   consequences thereof.

   Proposal: accept this technically, let MK take an editorial pass.

   Some discussion of reserved function names.
     * RD: There may have been an issue with [ as well.
     * MK: Yes, ~let [ ... ~ requires unbounded look ahead.

   Proposal: accept this technically, let MK take an editorial pass.

   Accepted.

2.2. PR 2030: 2029 xsd validator notes and examples

   See PR [34]#2030
     * MK: This started as an editorial exercise, but I discovered I was
       replicating text that was already replicated.
          + ... I decided to move the whole discussion of validation into
            F&O and remove common text from XQuery and XSLT.

   MK reviews the PR.
     * MK: In F&O, there's a new section on XSD validation. It shows as
       all new, but it's not intended to be substantively different from
       the descriptions currently in the XQuery and XSLT specifications.
     * MK: Then the validation function refers to that section.
          + ... The function also goes into a lot more detail about how a
            schema is constructed.
     * MK: In the XQuery spec, there's a cross reference to the F&O
       section and some detail is removed. The validate expression is no
       defined in terms of a call to the validate function.
          + ... XQuery and XSLT define different error codes, so there's a
            bit of a fudge.
     * MK: The XSLT spec has analagous changes.
     * WP: I think this is definite improvement. Is this necessary because
       the XSD spec is "soft" on some of these options?
     * MK: Yes. XSD gives a whole range of ways to do it, but this makes
       it more concrete.
     * JLO: I was wondering why there are different error codes in XQuery
       and XSLT?
     * MK: Just for backwards compatibility.

   Some discussion of what it means for a schema to be invalid.

   Proposal: accept this PR.

   Accepted.

2.3. PR 1888: 366 xsl:package-location

   See PR [35]#1888

   JK introduces the PR.
     * JK: We first discussed this about a month ago and I got good
       feedback which I've incorporated.
          + ... Brief recap: the use-package instruction doesn't give the
            developer access to the resources directly in the code.
          + ... The idea here is to make configuration easier by giving
            that access.

   JK walks through the prose of the new version.
     * JK: Priority is just a boolean now, not an integer.
          + ... First match wins.
     * JK: I've posted five "Hello world" examples for the XSLT test
       suite.
     * MK: I think that looks viable.
     * JLO: There is already a package format that is used in the wider
       ecosystem, defined by EXPath. What about using xar packages?
     * JK: It's allowed, but I don't know if it should be required.

   Some discussion of the changes to priority.
     * JK: A boolean combined with first one wins, seemed simpler.

   Proposal: accept this PR.

   Accepted.

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-17.html#minutes
   7. https://qt4cg.org/meeting/minutes/2025/06-17.html#new-actions
   8. https://qt4cg.org/meeting/minutes/2025/06-17.html#administrivia
   9. https://qt4cg.org/meeting/minutes/2025/06-17.html#roll-call
  10. https://qt4cg.org/meeting/minutes/2025/06-17.html#agenda
  11. https://qt4cg.org/meeting/minutes/2025/06-17.html#approve-minutes
  12. https://qt4cg.org/meeting/minutes/2025/06-17.html#next-meeting
  13. https://qt4cg.org/meeting/minutes/2025/06-17.html#open-actions
  14. https://qt4cg.org/meeting/minutes/2025/06-17.html#open-pull-requests
  15. https://qt4cg.org/meeting/minutes/2025/06-17.html#blocked
  16. https://qt4cg.org/meeting/minutes/2025/06-17.html#merge-without-discussion
  17. https://qt4cg.org/meeting/minutes/2025/06-17.html#close-without-action
  18. https://qt4cg.org/meeting/minutes/2025/06-17.html#technical-agenda
  19. https://qt4cg.org/meeting/minutes/2025/06-17.html#pr-1942
  20. https://qt4cg.org/meeting/minutes/2025/06-17.html#pr-2030
  21. https://qt4cg.org/meeting/minutes/2025/06-17.html#pr-1888
  22. https://qt4cg.org/meeting/minutes/2025/06-17.html#any-other-business
  23. https://qt4cg.org/meeting/minutes/2025/06-17.html#adjourned
  24. https://qt4cg.org/meeting/agenda/2025/06-17.html
  25. https://qt4cg.org/meeting/minutes/2025/06-10.html
  26. https://qt4cg.org/meeting/minutes/2025/06-17.html#technical-agenda
  27. https://qt4cg.org/dashboard/#pr-2019
  28. https://qt4cg.org/dashboard/#pr-1283
  29. https://qt4cg.org/dashboard/#pr-1062
  30. https://qt4cg.org/dashboard/#pr-2044
  31. https://qt4cg.org/dashboard/#pr-2042
  32. https://github.com/qt4cg/qtspecs/issues/1127
  33. https://qt4cg.org/dashboard/#pr-1942
  34. https://qt4cg.org/dashboard/#pr-2030
  35. https://qt4cg.org/dashboard/#pr-1888

                                        Be seeing you,
                                          norm

--
Norm Tovey-Walsh
Saxonica

Received on Tuesday, 17 June 2025 16:42:21 UTC