Minutes of the 20th March 2025 Teleconference Austin-1449 Page 1 of 1 Submitted by Andrew Josey, The Open Group. 24th March 2025 Attendees: Don Cragun, IEEE SA OR Andrew Josey, The Open Group Nick Stoughton, USENIX, ISO/IEC JTC 1/SC 22 OR Eric Ackermann, CISPA Geoff Clare, The Open Group Eric Blake, Red Hat, The Open Group OR Haelwenn Monnier, The Open Group Apologies Mark Brown Note that daylight savings times started in the US on 2025-03-09 and so the meetings will be 1 hour earlier in Europe until 2025-03-31. We confirmed the calendar for upcoming meetings, adding a meeting on April 3rd. There is no update on the latest ISO status. * Open Business Bug 1876: clarify, whether a trap action that is executed from a OPEN context where set -e is ignored, would have set -e ignored, too https://www.austingroupbugs.net/bug_view_page.php?bug_id=1876 Andrew took an action to ask shell developers to comment on this issue. (completed by sending an email to the reflector: austin-group-l:archive/latest/37925). Bug 864: Insufficient specification of storage requirements for synchronization objects https://www.austingroupbugs.net/view.php?id=864 AI: Andrew to contact Rich Felker to determine whether or not items 1 an 4 have been resolved by section 2.9.9 and to get suggested wording for changes to address items 2 and 3. The action was completed, but no response received as yet. Bug 1904: LC_TIME era start_date (and end_date) possibly mis-specified https://www.austingroupbugs.net/bug_view_page.php?bug_id=1904 This was discussed during the 2025-02-13 meeting: Historically, there was no year 0 and the standard is worded to reflect this fact. Is this what implementation actually do? Andrew had completed an action to ask for input on what other implementations do and some feedback has been received so need to return to this on a future call. * Current Business We skipped over bug 1913 as discussion is ongoing. Bug 1914: expr: short-circuit evaluation https://www.austingroupbugs.net/bug_view_page.php?bug_id=1914 Accepted as marked, resolved, tc1-2024 tag. On page 2916 line 97320 section expr, add a sentence in "Description" column for "&": If expr1 is null or zero, it is unspecified whether expr2 is evaluated. On page 2916 line 97323 section expr, add a sentence in "Description" column for "|": If expr1 is neither null nor zero, it is unspecified whether expr2 is evaluated. After page 2919 line 97410 section expr (RATIONALE), add a paragraph: Implementations differ as to whether the '&' and '|' operators ``short-circuit'' (that is, whether they evaluate expr2 if the return value can be deduced from evaluating just expr1). Consequently, the observed behavior may differ when evaluating expr2 would cause an error (or a signal), such as dividing by zero. Bug 1915: clarification of 2.6.5 field splitting of 2.5.2 special parameter $* https://www.austingroupbugs.net/view.php?id=1915 Left for now since there is discussion ongoing on email. Bug 1857: Several problems with the new "lazy" regex quantifier. https://www.austingroupbugs.net/bug_view_page.php?bug_id=1857 Reopened, accepted as marked, Interpretation required, tc1-2024 tag. Timer started 2025-03-21. We revised the notes to the editors, and have restarted the interpretation timer. The interpretation remains unchanged. On page 179 line 6348 section 9.1, add a sentence: The matching process is described in [xref to 9.2]. and move the remaining paragraphs of the "matching" definition to after page 181 line 6413 section 9.2. On page 179 line 6357 section 9.1, change: If the pattern permits a variable number of matching characters and thus there is more than one such sequence starting at that point, the longest such sequence is matched. For example, the BRE "bb*" matches the second to fourth characters of the string "abbbc", and the ERE "(wee|week)(knights|night)" matches all ten characters of the string "weeknights". Consistent with the whole match being the longest of the leftmost matches, each subpattern, from left to right, shall match the longest possible string. to: If the pattern permits a variable number of matching characters and thus there is more than one such sequence starting at that point, the match shall be made according to the following rules: 1. For a BRE, or an ERE that does not use the repetition modifier '?', the match shall be the leftmost longest. 2. If an ERE contains repetitions with and without the repetition modifier '?', the precedence between the repetitions shall be: a. Each leftmost shortest match shall match the leftmost shortest sequence in the string, in descending priority from left to right. b. Consistent with rule 2a, the length matched by the entire regular expression shall be the leftmost longest. c. Consistent with rules 2a and 2b, each leftmost longest match shall match the leftmost longest sequence in the string, in descending priority from left to right. d. If an attempt is made to match the same sequence of the string using repetitions both with and without the repetition modifier '?', the behavior is unspecified. For example, the ERE ([0-9]+)+? has unspecified behavior. According to these rules, the BRE "bb*" matches the second to fourth characters of the string "abbbc", and the ERE "(wee|week)(knights|night)" matches all ten characters of the string "weeknights". However, the ERE "(aaa??)*" matches only the first four characters of the string "aaaaa", not all five, because in order to match all five, "a??" would match with length one instead of zero; the ERE "(aaa??)*|(aaa?)*" matches all five because the longest match is one which does not use any minimal repetitions. Consistent with the match for the entire regular expression being made according to the above rules, each BRE or ERE in a concatenated set, from left to right, shall match according to the above rules, applied to that BRE or ERE. On page 180 line 6367 section 9.1, change: the subpattern "(.*?)" matches the empty string, since that is the longest possible match for the ERE ".*?" to: the subexpression "(.*?)" matches the empty string, since the minimal repetition ".*?" has priority and the empty string is the shortest possible match (zero length) for that repetition. On page 179 line 6370 section 9.1, change: the longest sequence shall be measured to: the sequence length shall be measured After page 191 line 6814 section 9.5, add a note: Note:The grammar defines syntax only and places no requirements on implementations as to how the parsed BRE or ERE is used for matching. The matching process is described in [xref to 9.2]. After XRAT page 3716 line 127617 section A.9.4.6, add a paragraph: Note that the repetition modifier '?' () is specified as changing the matching behavior for the modified repetition from the leftmost longest possible match to the leftmost shortest possible match. This does not necessarily give the same result as matching with the least repetitions. For example, the ERE "([ab]{6}|a)*?b" matches the first five characters of the string "aaaabbbb" as this is the shortest for the minimal repetition "*?". Matching with the least repetitions would match the first seven characters by using one repetition of "[ab]{6}" instead of four repetitions of "a". This distinction is only possible because the alternatives in an ERE alternation are chosen according to which gives the longest (or shortest) match. Other types of regular expression exist (notably in perl, php, and python) where the alternatives are tried in order; for those there is no difference between longest and most repetitions or between shortest and least repetitions. Next Steps We will start on bug 1913 next time. The next calls are on Thu 2025-03-27 (WEBEX meeting - general bugs) Thu 2025-04-03 (WEBEX meeting - general bugs) The calls are for 90 minutes Calls are anchored on US time. (8am Pacific) Please check the calendar invites for dial in details. Bugs are at: https://austingroupbugs.net An etherpad is usually up for the meeting, with a URL using the date format as below: https://posix.rhansen.org/p/20xx-mm-dd (For write access this uses The Open Group single sign on, for those individuals with gitlab.opengroup.org accounts. Please contact Andrew if you need to be setup)