QT4CG meeting 172 draft minutes, 14 July 2026

Here are the draft minutes from today’s meeting:

   https://qt4cg.org/meeting/minutes/2026/07-14.html

QT4 CG Meeting 172 Minutes 2026-07-14

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

Table of Contents

     * [6]Summary of new and continuing actions [0/9]
     * [7]Draft Minutes
     * [8]1. Administrivia
          + [9]1.1. Roll call [7/11]
          + [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/9]
          + [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
               o [18]1.6.4. Substantive PRs
     * [19]2. Technical agenda
          + [20]2.1. PR #2784: 2783 fn:pad-string
          + [21]2.2. PR #2778: 2641b Add support for CSV comments
          + [22]2.3. PR #2777: 2644 Extend casts to sequences, arrays,
            maps, and records
          + [23]2.4. PR #2768: 2740 Drop constructor functions from
            built-in records
          + [24]2.5. PR #2767: 2750 Make fn:unparsed-text, ...
            nondeterministic
          + [25]2.6. PR #2761: 2758 Add rules for visibility of named
            types across packages
          + [26]2.7. PR #2760: 2521 URIs: unify handling of fragment
            identifiers
          + [27]2.8. PR #2757: 2569 Rules for unprefixed function calls
            with explicit default function ns
          + [28]2.9. PR #2713: 2257 Record declarations without namespace
     * [29]3. Any other business

Summary of new and continuing actions [0/9]

     * [ ] QT4CG-143-02: MK to try to recover the ability to extract
       formal equivalences into tests
     * [ ] QT4CG-167-02: MK to make a PR for #2591, grammar for
       step?lookup is invalid
     * [ ] QT4CG-167-03: NW to make a PR for #2482, fallback on
       bin:decode-string
     * [ ] QT4CG-167-05: MK to write a proposal to change #2393 so the
       functions return JNodes
     * [ ] QT4CG-167-07: NW to review tests for interpolated strings with
       edge cases in mind
     * [ ] QT4CG-167-08: MK to review the state of #1949 to see which
       items are still outstanding.
     * [ ] QT4CG-167-09: NW to close all "nice to have" issues at the end
       of October if they haven't progressed
     * [ ] QT4CG-170-01: RD to draft a proposal that attempts to address
       the lexical issues differently.
     * [ ] QT4CG-172-01: MK to check if the XSLT rules are consistent with
       the rules in #2757.

Draft Minutes

1. Administrivia

1.1. Roll call [7/11]

   JWL, BTW, WP give regrets.
     * [X] David J Birnbaum (DB)
     * [ ] Reece Dunn (RD)
     * [X] Christian Gr¸n (CG)
     * [X] Joel Kalvesmaki (JK)
     * [X] Michael Kay (MK)
     * [X] Juri Leino (JLO)
     * [ ] John Lumley (JWL)
     * [X] Alan Painter (AP)
     * [ ] Wendell Piez (WP)
     * [ ] Bethan Tovey-Walsh (BTW)
     * [X] Norm Tovey-Walsh (NW) Scribe. Chair.

1.2. Accept the agenda

   Proposal: Accept [30]the agenda.

   Accepted.

1.3. Approve minutes of the previous meeting

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

   Accepted.

1.4. Next meeting

   The next meeting is planned for 21 July.

   No regrets heard

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

     * [ ] QT4CG-143-02: MK to try to recover the ability to extract
       formal equivalences into tests
     * [X] QT4CG-167-01: DB to write a PR for #2641, comments in CSV
          + Overtaken by events, see [32]#2778.
     * [ ] QT4CG-167-02: MK to make a PR for #2591, grammar for
       step?lookup is invalid
     * [ ] QT4CG-167-03: NW to make a PR for #2482, fallback on
       bin:decode-string
     * [ ] QT4CG-167-05: MK to write a proposal to change #2393 so the
       functions return JNodes
     * [ ] QT4CG-167-07: NW to review tests for interpolated strings with
       edge cases in mind
     * [ ] QT4CG-167-08: MK to review the state of #1949 to see which
       items are still outstanding.
     * [ ] QT4CG-167-09: NW to close all "nice to have" issues at the end
       of October if they haven't progressed
     * [ ] QT4CG-170-01: RD to draft a proposal that attempts to address
       the lexical issues differently.

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 [33]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 [34]#2594: 2389 Adaptive Serialization: more freedom
     * PR [35]#2350: 708 An alternative proposal for generators
     * PR [36]#2247: 716 Deferred Evaluation in XPath - the f:generator
       record
     * PR [37]#2160: 2073 data model changes for JNodes and Sequences
     * PR [38]#2071: 77c deep update

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 [39]#2782: 2781b XQFO: outdated examples
     * PR [40]#2779: 2781a Fix parsing errors in F&O and XQuery specs
     * PR [41]#2771: 2769 Clarify repeatability of
       random-number-generator() results

   Proposal: accept 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 [42]#2315: Optimization of the workflow action checkout
     * Issue [43]#2299: Make the pipe-like operators left associative and
       have the same precedence

   Proposal: close with no further action.

   Accepted.

1.6.4. Substantive PRs

   The following substantive PRs were open when this agenda was prepared.
     * PR [44]#2784: 2783 fn:pad-string
     * PR [45]#2778: 2641b Add support for CSV comments
     * PR [46]#2777: 2644 Extend casts to sequences, arrays, maps, and
       records
     * PR [47]#2776: 2769 repeatability of rng next
     * PR [48]#2768: 2740 Drop constructor functions from built-in records
     * PR [49]#2767: 2750 Make fn:unparsed-text, ... nondeterministic
     * PR [50]#2761: 2758 Add rules for visibility of named types across
       packages
     * PR [51]#2760: 2521 URIs: unify handling of fragment identifiers
     * PR [52]#2757: 2569 Rules for unprefixed function calls with
       explicit default function ns
     * PR [53]#2739: 2738 XSLT - tree terminology
     * PR [54]#2734: 2733 A step too far
     * PR [55]#2719: 1234 Serialization Parameters: Indentation,
       Whitespace, Newlines
     * PR [56]#2715: 2653 FLWOR, member/key/value clauses: allow sequences
     * PR [57]#2714: 2219 Generalize method calls to sequences
     * PR [58]#2713: 2257 Record declarations without namespace
     * PR [59]#2712: 2702 Dynamic node tests
     * PR [60]#2707: 1962 fn:map-to-element
     * PR [61]#2696: 2695 Apply templates to maps, arrays, and JNodes

2. Technical agenda

   I've put a few new PRs at the top, then the previous ones in the same
   order as last week.

2.1. PR #2784: 2783 fn:pad-string

   See PR [62]#2784

   CG introduces the PR.
     * CG: Allows you to pass any atomic, so you can use it to pad
       numbers.
     * MK: I made a comment about atomization; if you supply a node whose
       typed value is an integer or decimal, you're going to lose any
       trailing zeros. I'm not sure that's intuitive behavior.
     * CG: How does fn:string-join handle this?
     * MK: Yes, it does have the same problem. But I guess it's
       consistent.
     * JLO: Is it worth nothing that you shouldn't allow a zero-width
       space character.
     * NW: I think that'll just do the thing.
     * JK: I proposed changing the key word "fill" to "padding" so that
       it's clearly a noun.
     * CG: Sounds good to me.
     * MK: An observation on the error conditions; I think you'l get a
       type error if the side is not a valid member of the enum. So the
       extra error condition isn't necessary.

   Proposal: accept the PR.

   CG will make the two fixes suggested and merge the PR.

2.2. PR #2778: 2641b Add support for CSV comments

   See PR [63]#2778

   MK introduces the PR. It had to be rewritten in the light of other
   changes to CSV.

   MK reviews the new section 17.5.3 Comments.
     * MK: I also fixed a bug where we forgot to say that the field
       delimiter must not be a newline.
     * AP: If I want to have the first character in the first column, that
       I have to quote it?

   NW observes that DB is not an "external contributor"! :-)

   MK: If you're going to enable comments, choose a character that doesn't
   occur in the data. But yes, you could quote it.

   Proposal: accept the PR.

   Accepted.

2.3. PR #2777: 2644 Extend casts to sequences, arrays, maps, and records

   See PR [64]#2777
     * MK: The PR extends casts to all the collective data types.
          + ... The proposed rules just use cast recursively.
     * MK: A CastTarget is expanded to include AnyItemType,
       TypedArrayType, etc.
          + ... There's a bit of an issue with AnyItemType at the top
            level, but it's needed to be consistent with recursion.

   MK reviews the rules. They've been restructured a bit.
     * MK: For backwards compatibility, for casting to list types, we
       don't constrain the result by the occurrence indicator.
     * MK: There's one other significant change; we used to say that if
       the input to castable can't be atomized, you get an error. Now you
       get false.
     * MK: CG raised a comment: if you have a type for a field in your
       record that isn't a valid cast target, then you can't do the cast
       at all.
          + ... Having one field like that rules the thing out.
          + ... I introduced item() to deal with that, but it isn't an
            adequate solution.
          + CG's suggestion seems like a better way forward.

   MK to revise resubmit.

2.4. PR #2768: 2740 Drop constructor functions from built-in records

   See PR [65]#2768
     * CG: We discussed this last week and MK provided some feedback.
          + ... I've tried to ceate a new version. But it's failing at the
            moment.
     * NW: Try restarting the job?
     * CG: I did. Twice. Same fail.
     * CG: Maybe it's better to look at MK's comment.
     * MK: I noticed after making that comment that named item types if
       they are records do have a constructor function.
          + ... I think we need to have another attempt to bring together
            named item types and named record types.
     * CG: We use the record constructor functions a lot for user defined
       record types.
          + ... But that doesn't mean it needs to stay that way.
     * MK: I'm not suggesting removing them, but ...

   Let's do some more work on this. We're digging ourselves into a hole
   here.

2.5. PR #2767: 2750 Make fn:unparsed-text, ... nondeterministic

   See PR [66]#2767

   CG reviews the PR.
     * CG: How do we tackle the potential backwards incompatibility?
          + ... We could say this is changed in 4.0, or we have to try to
            keep it compatible.
     * MK: I'm reasonably comfortable making that incompatibility change.
     * NW: That seems fine to me as well.
     * JK: In 3.0, 3.1 people thought this was deterministic but it
       wasn't.
     * MK: I'd have to check to be sure.
     * JK: That observation might be useful in the
       backwards-incompatibility note.

   Proposal: accept the PR.

   Accepted.

2.6. PR #2761: 2758 Add rules for visibility of named types across packages

   See PR [67]#2761
     * MK: We had all the required syntax in place to say if declared
       types were public or private, or whatever.
          + ... But we didn't have any text describing the samantics.
          + ... They're fairly intutive, but ...
     * MK: One decision that has to be made is, are types "components".
          + ... I decided not to. There's a lot of stuff about components
            refering to other components, etc. and that doesn't apply to
            types.
     * MK: They aren't components, but they behave a bit like components.
          + ... So I slightly fudged it.

   MK reviews the semantics in 3.4.7.
     * MK: The rules for schema types are generalized accordingly.
     * JLO: It wasn't clear to me what happens if I have a type that is
       private to my package but I expose a function that returns that
       type.
     * MK: You can still call the function; if the type in question is a
       choice type, then you can call it with either of the things in the
       choice.
          + ... Even though the name of the choice type is not visible to
            you.

   You can't see the name, but you can still manipulate it like a record.

   Proposal: accept the PR.

   Accepted.

2.7. PR #2760: 2521 URIs: unify handling of fragment identifiers

   See PR [68]#2760
     * CG: I think there's nothing new.

   Wait until we've discussed [69]#2786, my issue about fragment
   identifiers.

2.8. PR #2757: 2569 Rules for unprefixed function calls with explicit default
function ns

   See PR [70]#2757
     * CG: Gunther observed that the rule about unprefixed function calls
       made the rules about lookup more complex.
          + ... I think if the user has defined a default function
            namespace, we don't have to do lookup.
     * CG: This proposal implements that.

   CG reviews the rules proposed.

   ACTION QT4CG-172-01: MK to check if the XSLT rules are consistent with
   the rules in #2757.

   Proposal: accept the PR.

   Accepted.

2.9. PR #2713: 2257 Record declarations without namespace

   See PR [71]#2713
     * CG: When you write scripts, you want to declare records without a
       prefix.
          + ... This PR attempts to define rules for that.

   CG reviews the rules.
     * CG: This would certainly make simple scripts easier to write.
     * MK: We're going for rules that are simple for people who haven't
       read them.
          + ... Actually understanding these rules is terribly complex.
     * JLO: I think this is useful.

   Proposal: accept the PR.

   Accepted.

3. Any other business

   The pr-archives repository exists:
   [72]https://github.com/qt4cg/pr-archive/actions

   If you check it out and open the index.html file at the top level, you
   should see all the PRs. You probably have to use a webserver.

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/2026/07-14.html#new-actions
   7. https://qt4cg.org/meeting/minutes/2026/07-14.html#minutes
   8. https://qt4cg.org/meeting/minutes/2026/07-14.html#administrivia
   9. https://qt4cg.org/meeting/minutes/2026/07-14.html#roll-call
  10. https://qt4cg.org/meeting/minutes/2026/07-14.html#agenda
  11. https://qt4cg.org/meeting/minutes/2026/07-14.html#approve-minutes
  12. https://qt4cg.org/meeting/minutes/2026/07-14.html#next-meeting
  13. https://qt4cg.org/meeting/minutes/2026/07-14.html#open-actions
  14. https://qt4cg.org/meeting/minutes/2026/07-14.html#open-pull-requests
  15. https://qt4cg.org/meeting/minutes/2026/07-14.html#blocked
  16. https://qt4cg.org/meeting/minutes/2026/07-14.html#merge-without-discussion
  17. https://qt4cg.org/meeting/minutes/2026/07-14.html#close-without-action
  18. https://qt4cg.org/meeting/minutes/2026/07-14.html#substantive
  19. https://qt4cg.org/meeting/minutes/2026/07-14.html#technical-agenda
  20. https://qt4cg.org/meeting/minutes/2026/07-14.html#pr-2784
  21. https://qt4cg.org/meeting/minutes/2026/07-14.html#pr-2778
  22. https://qt4cg.org/meeting/minutes/2026/07-14.html#pr-2777
  23. https://qt4cg.org/meeting/minutes/2026/07-14.html#pr-2768
  24. https://qt4cg.org/meeting/minutes/2026/07-14.html#pr-2767
  25. https://qt4cg.org/meeting/minutes/2026/07-14.html#pr-2761
  26. https://qt4cg.org/meeting/minutes/2026/07-14.html#pr-2760
  27. https://qt4cg.org/meeting/minutes/2026/07-14.html#pr-2757
  28. https://qt4cg.org/meeting/minutes/2026/07-14.html#pr-2713
  29. https://qt4cg.org/meeting/minutes/2026/07-14.html#any-other-business
  30. https://qt4cg.org/meeting/agenda/2026/07-14.html
  31. https://qt4cg.org/meeting/minutes/2026/07-07.html
  32. https://qt4cg.org/dashboard/#pr-2778
  33. https://qt4cg.org/meeting/minutes/2026/07-14.html#technical-agenda
  34. https://qt4cg.org/dashboard/#pr-2594
  35. https://qt4cg.org/dashboard/#pr-2350
  36. https://qt4cg.org/dashboard/#pr-2247
  37. https://qt4cg.org/dashboard/#pr-2160
  38. https://qt4cg.org/dashboard/#pr-2071
  39. https://qt4cg.org/dashboard/#pr-2782
  40. https://qt4cg.org/dashboard/#pr-2779
  41. https://qt4cg.org/dashboard/#pr-2771
  42. https://github.com/qt4cg/qtspecs/issues/2315
  43. https://github.com/qt4cg/qtspecs/issues/2299
  44. https://qt4cg.org/dashboard/#pr-2784
  45. https://qt4cg.org/dashboard/#pr-2778
  46. https://qt4cg.org/dashboard/#pr-2777
  47. https://qt4cg.org/dashboard/#pr-2776
  48. https://qt4cg.org/dashboard/#pr-2768
  49. https://qt4cg.org/dashboard/#pr-2767
  50. https://qt4cg.org/dashboard/#pr-2761
  51. https://qt4cg.org/dashboard/#pr-2760
  52. https://qt4cg.org/dashboard/#pr-2757
  53. https://qt4cg.org/dashboard/#pr-2739
  54. https://qt4cg.org/dashboard/#pr-2734
  55. https://qt4cg.org/dashboard/#pr-2719
  56. https://qt4cg.org/dashboard/#pr-2715
  57. https://qt4cg.org/dashboard/#pr-2714
  58. https://qt4cg.org/dashboard/#pr-2713
  59. https://qt4cg.org/dashboard/#pr-2712
  60. https://qt4cg.org/dashboard/#pr-2707
  61. https://qt4cg.org/dashboard/#pr-2696
  62. https://qt4cg.org/dashboard/#pr-2784
  63. https://qt4cg.org/dashboard/#pr-2778
  64. https://qt4cg.org/dashboard/#pr-2777
  65. https://qt4cg.org/dashboard/#pr-2768
  66. https://qt4cg.org/dashboard/#pr-2767
  67. https://qt4cg.org/dashboard/#pr-2761
  68. https://qt4cg.org/dashboard/#pr-2760
  69. https://github.com/qt4cg/qtspecs/issues/2786
  70. https://qt4cg.org/dashboard/#pr-2757
  71. https://qt4cg.org/dashboard/#pr-2713
  72. https://github.com/qt4cg/pr-archive/actions

--
Norm Tovey-Walsh
CEO, Saxonica

Received on Tuesday, 14 July 2026 18:06:17 UTC