Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ghc-skylighting for openSUSE:Factory
checked in at 2026-11-06 19:50:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-skylighting (Old)
and /work/SRC/openSUSE:Factory/.ghc-skylighting.new.3759290 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-skylighting"
Fri Nov 6 19:50:01 2026 rev:48 rq:1395563 version:0.15
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-skylighting/ghc-skylighting.changes
2025-09-12 21:10:13.352979155 +0200
+++
/work/SRC/openSUSE:Factory/.ghc-skylighting.new.3759290/ghc-skylighting.changes
2026-11-06 19:57:04.353910526 +0100
@@ -1,0 +2,277 @@
+Sun Sep 13 19:09:58 UTC 2026 - Peter Simons <[email protected]>
+
+- Update skylighting to version 0.15.
+ ## 0.15
+
+ * New syntaxes: sparql (#212), sas (#213), mermaid, desktop,
+ elixir-eex, elixir-heex, abnf, asciidoc, cabal, cobol, context,
+ csv, haml, idl, jinja, jira, k, logfile, meson, nginx, ninja,
+ ocamllex, ocamlyacc, q, quarto, rdoc, rmarkdown, rtf, textile,
+ todo, vue.
+
+ * Update syntax definitions from upstream: bash, cmake, cpp,
+ crystal, dot, elixir, haskell, markdown, nix, ocaml, orgmode,
+ perl, php, powershell, python, qml, raku, rust,
+ spdx-comments, tcsh, typst, yaml, zig, zsh.
+
+ * Allow multiple contexts separated by `!` (#208).
+ This is an upstream KDE change.
+
+ * Bump min base version to 4.18.
+
+ * Regex: don't hang on bounded repetition with min > max.
+ `atmost` recursed without a guard for negative counts, so a pattern
+ like `a{3,1}` made the compiler loop forever building an infinite
+ regex. Reject the quantifier and fall back to interpreting it as a
+ literal, consistent with how other invalid quantifiers (`a{}`, `a{3`)
+ are handled.
+
+ * Regex: don't hang on lazy quantifiers in lookbehinds.
+ Previously lazy quantifier inside a lookbehind (e.g. `(?<=a+?b)`) hung.
+
+ * Regex: don't hang on subroutine recursion that consumes no input.
+ Previously a pattern like `x|(?R)` recursed forever.
+
+ * Regex: fix `lastCharOffset` for multibyte UTF-8 characters.
+ This bug resulted in failure of lookbehinds and word boundary
+ checks after non-ASCII characters.
+
+ * Regex: don't let `(?i:...)` leak out of its group.
+ Previously, in `/(?i:a)b/` the trailing `b` was also matched
+ case-insensitively.
+
+ * Regex: fix `[[:graph:]]`, `[[:word:]]`, and add `[[:digit:]]`.
+
+ * Regex: find nested capturing groups for subroutine calls.
+ Previously, calls like `(?2)` in `/((a)b)(?2)/` were
+ silently ignored (matching the empty string).
+
+ * Regex: apply case-insensitivity to classes, escapes, backreferences.
+ Case-insensitive matching was previously only applied to plain literal
+ characters, not character classes and escaped literals. Now:
+
+ + `pRegexCharClass` takes the case-sensitivity flag and, when
+ insensitive, matches a character if any of its case variants is in
+ the class (negated classes exclude all case variants, as in PCRE).
+ + Escaped literals like \x61 match case-insensitively when
+ insensitivity is in effect.
+ + The matcher compares captured text character by character with
+ case folding (correct even when the case variants have different
+ UTF-8 encodings).
+ + [API change] `MatchCaptured` has a new argument place;
+ `MatchCaptured !Int !Bool`, where the Bool records the case
+ sensitivity in effect at its position.
+
+ * Regex: linearize `{m,n}` expansion and cap repeat counts.
+ Previously `r{m,n}` was expanded to produce an AST quadratic in
+ n-m, which also made matching quadratic: matching `[ab]{0,800}`
+ against 800 characters took ~31 ms. We now use
+ a nested-optional encoding, `r(r(r)?)?`, which is linear; the same
+ match takes ~0.3 ms. In addition, repeat counts larger than
+ 65535 (the limit PCRE2 uses) are no longer treated as
+ quantifiers; like other invalid quantifier syntax, they fall
+ back to a literal interpretation. Previously `x{100000000}`
+ would eagerly build a hundred-million-node regex.
+
+ * Regex: treat unmatched `]` outside a character class as a literal.
+ This the behavior of PCRE2 (used by KSyntaxHighlighting via
+ QRegularExpression). Previously we treated this as a parse error,
+ which caused failures in several current KDE syntax definitions.
+
+ * Regex: parse `\0` octal escapes with up to two digits, as in PCRE.
+ `\0` previously required exactly three following octal digits.
+
+ * Regex: support `\G` (assert position of match start).
+ Because our matcher is always anchored at the start of
+ the input it is given, this is exactly AssertBeginning.
+
+ * Regex: support `\gN` and `\g{N}` backreferences.
+
+ * Regex: support inline modifiers like `(?i)` without a colon.
+
+ * Regex: support `\h` and `\H` (horizontal whitespace).
+
+ * Regex: support `\A` (start of subject).
+ Since matching is always anchored at the start of the input we are
+ given, `\A` is equivalent to AssertBeginning.
+
+ * Regex: allow an empty first alternative, as in `(?:|a)`.
+ As in PCRE, an empty alternative matches the empty string. Empty
+ alternatives other than the first were already supported.
+
+ * Regex: support `\b` (backspace) inside character classes.
+
+ * Regex: support atomic groups `(?>...)`.
+
+ * Regex: leftmost-first (PCRE) match semantics instead of longest-match.
+
+ + Alternation is now leftmost-first, and alternatives are tried in
+ source order (a fold in the compiler used to reverse them, which
+ was harmless under longest-match).
+ + Possessive quantifiers and atomic groups commit to the first match
+ in backtracking order, fixing the divergence from PCRE.
+ `(?>a|ab)c` now fails on "abc".
+ + Lookahead/lookbehind assertions are atomic and keep only the first
+ match's captures, so `d(?=(a|ab))` captures "a", as in PCRE.
+ - Lazy quantifiers are compiled to forms that prefer fewer
+ repetitions instead of being special-cased in the matcher; the old
+ special case could commit to a short prefix and miss valid longer
+ continuations.
+ - Repetition loops terminate via a seen-state set.
+
+ * Regex: fix subroutine calls to groups with multi-digit numbers.
+
+ * Regex: after `(?|...)`, resume group numbering after the max group.
+
+ * Regex: allow a leading literal `]` in a character class to start a range.
+ As in PCRE, `[]-a]` is the range from `]` to `a`; previously it was
parsed
+ as the three literals.
+
+ * Regex: support `\pL`, `\P{...}`, `\PL`, and `\p{^...}`.
+
+ * Regex: make Eq Match consistent with Ord.
+
+ * Regex: Raise compile errors for stray quantifiers and unsupported flags.
+
+ + a quantifier with nothing to repeat.
+ + a quantifier after an anchor or word-boundary assertion.
+ + `{m,n}` with m > n.
+ + repeat counts over 65535.
+ + inline flags we do not implement.
+
+ * Regex: Support minimal= (inverted greediness) on RegExpr rules.
+
+ + `compileRegex` takes a new Bool parameter for minimal matching
+ [API change], and `pSuffix` swaps the greedy and lazy variant
+ s of a quantifier when it is set.
+ + The inline flag `(?U)` (and `(?-U)`, `(?U:...))`, which toggles the
+ same option in PCRE, is now supported.
+ + RE has a new `reMinimal` field [API change], which
+ Skylighting.Parser sets from the `minimal` attribute on
+ RegExpr elements.
+
+ * Support the char attribute on LineContinue. [API change]
+ The LineContinue constructor of Matcher now carries the character.
+
+ * Fix case-sensitivity defaults to match KDE.
+
+ + Rules (RegExpr, StringDetect, WordDetect, DetectChar, etc.) now
+ default to case-sensitive matching regardless of the language
+ element's `casesensitive` attribute.
+ + The default case sensitivity of keyword lists is given by the
+ `casesensitive` attribute on the language element, and may be
+ overridden by the `casesensitive` attribute on general > keywords.
+ + An `insensitive` attribute on a keyword rule itself now overrides
+ the keyword list's case sensitivity, but only when the attribute
+ is actually present.
+
+ Behavior verified against KSyntaxHighlighting's definition.cpp and
+ highlightingdata.cpp.
+
+ * Honor `additionalDeliminator`/`weakDeliminator` on rules.
+
+ + Keyword rules fold rule-level `additionalDeliminator` and
+ `weakDeliminator` into their delimiter set, so e.g. Lua's
+ special variables rule (additionalDeliminator=".") matches
+ nil in nil.x even though the general keywords element makes
+ `.` a weak delimiter.
+ + Rule gains an `rAdditionalDeliminators` field [API change],
+ and both it and `rWeakDeliminators` now also incorporate
+ the general > keywords delimiter modifications, applied
+ before the rule-level ones as in KDE. Both sets are consulted
+ by WordDetect, Int, Float, HlCHex, and HlCOct: a weak delimiter
+ counts as a word character and an additional delimiter does
+ not, with weak delimiters taking precedence.
+ + WordDetect now uses KDE's boundary conditions: a delimiter (or
+ line edge) must precede the word or be its first character, and
+ must follow the word or be its last character. The leading
+ check also prevents WordDetect from matching in the middle of
+ a word.
+
+ * Match KDE semantics for Int, Float, HlCOct, HlCHex rules [API change]
+
+ + These rules match only if the *preceding* character is a word
+ delimiter (or the match is at the start of the line); nothing is
+ required of the following character. Previously we used a
+ two-sided `\w`-based word boundary check.
+ + None of these rules consume a leading sign. Previously Int,
+ HlCOct, HlCHex consumed an optional '-', and Float an optional
+ '+' or '-'.
+ + Int matches decimal digits only (no hex or octal forms).
+ + HlCOct matches C-style octals: '0' followed by octal digits.
+ Previously we required a "0o" prefix (and, due to a bug, actually
+ matched the hex form, so HlCOct never matched real octals).
+ + Float requires a '.', so "5e2" is not a Float; the exponent is
+ all-or-nothing (an incomplete exponent like "1.5e+" matches just
+ "1.5"); and there is no check on what follows the match, so
+ "1.2.3" matches "1.2".
+
+ Since all four rules (and keyword and WordDetect) now need
+ only a single effective delimiter set, we replace the
+ `rWeakDeliminators` and `rAdditionalDeliminators` fields on
+ Rule with a single `rWordDelimiters` field [API change].
+
+ * Match KDE line-loop semantics.
+
+ + Remove `cLineBeginContext` from Context [API change] and the
+ `lineBeginContext` attribute from the parser. KDE no longer
+ has this feature, no bundled syntax definition uses it.
+ + Column and `firstNonspaceColumn` now restart on every physical line.
+ A line continuation only suppresses the previous line's
+ `lineEndContext`; it no longer carries the previous line's column
+ state into the next line.
+ + `lineEmptyContext` defaults to `lineEndContext` when unspecified or
+ `#stay` (KDE context.cpp, see kde bug 405903).
+ + An empty line now applies the `lineEmptyContext` switches of
+ successive top contexts until `#stay`, and does not apply
+ `lineEndContext` separately.
+ + `checkLineEnd` likewise applies lineEndContext switches of successive
+ top contexts until `#stay`.
+ + Guard against endless loops from broken syntax definitions, as KDE
+ does: the empty-line and line-end context-switch loops and rule
+ matching without consuming input are limited to 1024 iterations
+ without progress, after which highlighting of the line is aborted.
+
+ * Cache capturing groups in RE alongside the compiled regex.
+ Previously, matchRegex called extractCapturingGroups on every
+ invocation. Now the RE smart constructor extracts the
+ capturing groups once at compile time and caches them
+ alongside the compiled Regex. The tokenizer uses the cached groups
+ for static rules. For dynamic rules the groups are recomputed
+ after `subDynamic`, since the substitution rewrites the AST.
+
+ + compileRE now returns Either String (Regex, IntMap Regex) [API change].
+ + New function matchRegexWithGroups [API change] takes precomputed
groups;
+ matchRegex keeps its old behavior for external callers.
+
+ * Resolve keywords at load time, not on every tokenize call.
+
+ + `tokenize` no longer resolves keywords; it assumes keyword lists in
+ the syntax map have already been resolved into word sets. This is
+ the case for the bundled syntax definitions (which are generated
+ via loadSyntaxesFromDir) and for definitions loaded with the
+ functions in Skylighting.Loader.
+ - `loadValidSyntaxesFromDir` now resolves keywords, fixing an
+ inconsistency with `loadSyntaxesFromDir` (which already did).
+ - The skylighting CLI resolves keywords in syntaxes added with
+ `--definition`.
+ - Users who build a SyntaxMap by hand from `parseSyntaxDefinition`
+ output must now apply resolveKeywords themselves; tokenizing with
+ an unresolved keyword list yields a clear "Keyword with unresolved
+ list" error.
+
+ * Minor performance improvements in matchers and syntax lookup.
+
+ + `detect2Chars`: compare decoded characters directly (like
+ detectChar) instead of allocating a two-character Text and
+ encoding it to a ByteString on every attempt.
+ + `wordDetect`, `stringDetect`: in the case-sensitive case, compare
+ bytes with a prefix check instead of walking and decoding a
+ prefix of the input into Text on every attempt.
+ + `syntaxByName`: don't rebuild the entire syntax map with lowercased
+ keys on every lookup; try an exact lookup first and fall back to
+ a linear scan.
+ + `syntaxByShortName`: lowercase the query once instead of once per
+ map entry.
+
+-------------------------------------------------------------------
Old:
----
skylighting-0.14.7.tar.gz
New:
----
skylighting-0.15.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-skylighting.spec ++++++
--- /var/tmp/diff_new_pack.X3ZLIH/_old 2026-11-06 19:57:05.566961305 +0100
+++ /var/tmp/diff_new_pack.X3ZLIH/_new 2026-11-06 19:57:05.570961473 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ghc-skylighting
#
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%global pkg_name skylighting
%global pkgver %{pkg_name}-%{version}
Name: ghc-%{pkg_name}
-Version: 0.14.7
+Version: 0.15
Release: 0
Summary: Syntax highlighting library
License: GPL-2.0-or-later
++++++ skylighting-0.14.7.tar.gz -> skylighting-0.15.tar.gz ++++++
++++ 2782 lines of diff (skipped)