Skip to content

lexers: devicetree: Fix catastrophic backtracking bug#3057

Merged
birkenfeld merged 2 commits into
pygments:masterfrom
grahamroff-dev:devicetree-backtracking-fix
Mar 7, 2026
Merged

lexers: devicetree: Fix catastrophic backtracking bug#3057
birkenfeld merged 2 commits into
pygments:masterfrom
grahamroff-dev:devicetree-backtracking-fix

Conversation

@grahamroff-dev
Copy link
Copy Markdown
Contributor

The regex for parsing devicetree statements contains a property name lookahead that results in a near infinite loop if there are a lot of whitespace characters in the property value.

Problem can be seen by running this example script:

from pygments import highlight
from pygments.lexers import DevicetreeLexer
from pygments.formatters import NullFormatter

def test():
    dts_contents = '''
/ {
	soc {
		plic: interrupt-controller@c000000 {
			interrupts-extended = < &hlic0
			                        0x9 >;
		};
    }
}
    '''
    print('Starting highlight')
    highlight(dts_contents, DevicetreeLexer(), NullFormatter())

if __name__ == "__main__":
    test()

The script will appear to hang forever (technically it should eventually finish, maybe in a day or so).

Root Cause: Catastrophic Backtracking

The hang is caused by catastrophic backtracking in the property name lookahead regex inside lexers/devicetree.py.

The problematic pattern in the statements token rule is:

(r'[a-zA-Z_][\w-]*(?=(?:\s*,\s*[a-zA-Z_][\w-]*|(?:' + _ws + r'))*\s*[=;])',
 Name),

The second alternative inside the outer * is \s*(?:/[*][^*/]*?[*]/\s*)* (the _ws pattern), which can match an empty string. This creates the classic catastrophic backtracking pattern (A|B)* where B can match empty.

More details: In the example the lookahead is applied to \n\t\t\t 0x9 >; (~28 whitespace characters before 0x9). Since 0x9 > is not = or ;, the lookahead must fail — but the regex engine tries to split those 28 whitespace characters among the outer * iterations in 2²⁸ ≈ 268 million different ways before giving up. When 0x9 is on the same line without the extra indentation, the whitespace is just one space (2¹ = 2 attempts), so it completes instantly.

Fix applied: restructured the lookahead so the outer * can only match when a , is present (it can never match empty string):

(r'[a-zA-Z_][\w-]*(?=(?:\s*,' + _ws + r'[a-zA-Z_][\w-]*)*' + _ws + r'[=;])',
 Name),

This correctly handles all cases (comma-separated property names, comments before =/;) while eliminating the exponential backtracking.

The regex for parsing devicetree statements contains a property name
lookahead that results in a near infinite loop if there are a lot of
whitespace characters in the property value.
Restructure the lookahead regex to avoid this scenario.
@birkenfeld
Copy link
Copy Markdown
Member

Thanks for the PR! Can you add the example to the test cases?

Update the devicetree example file to include the problematic
syntax that causes catastrophic backtracking.
@grahamroff-dev
Copy link
Copy Markdown
Contributor Author

Thanks for the PR! Can you add the example to the test cases?

I updated the test case to include the problematic syntax, thanks!

@birkenfeld birkenfeld merged commit 524b5d3 into pygments:master Mar 7, 2026
15 checks passed
@birkenfeld
Copy link
Copy Markdown
Member

Great! :)

@Anteru Anteru added this to the 2.20.0 milestone Mar 26, 2026
@Anteru Anteru added the A-lexing area: changes to individual lexers label Mar 26, 2026
penberg added a commit to tursodatabase/turso that referenced this pull request Apr 22, 2026
Bumps [pygments](https://github.com/pygments/pygments) from 2.19.1 to
2.20.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pygments/pygments/releases">pygments's
releases</a>.</em></p>
<blockquote>
<h2>2.20.0</h2>
<ul>
<li>
<p>New lexers:</p>
<ul>
<li>Rell (<a href="https://redirect.github.com/pygments/pygments/issues/
2914">#2914</a>)</li>
</ul>
</li>
<li>
<p>Updated lexers:</p>
<ul>
<li>archetype: Fix catastrophic backtracking in GUID and ID patterns (<a
href="https://redirect.github.com/pygments/pygments/issues/3064">#3064</
a>)</li>
<li>ASN.1: Recognize minus sign and fix range operator (<a href="https:/
/redirect.github.com/pygments/pygments/issues/3014">#3014</a>, <a href="
https://redirect.github.com/pygments/pygments/issues/3060">#3060</a>)</l
i>
<li>C++: Add C++26 keywords (<a href="https://redirect.github.com/pygmen
ts/pygments/issues/2955">#2955</a>), add integer literal suffixes (<a hr
ef="https://redirect.github.com/pygments/pygments/issues/2966">#2966</a>
)</li>
<li>ComponentPascal: Fix <code>analyse_text</code> (<a href="/?url=https%3A%2F%2Fred%0Airect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3885172704" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/3028" data-hovercard-type="issue" data-hovercard-url="/pygments/pygments/issues/3028/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fissues%2F3028">pygments/pygments/issues/3028">#3028</a>, <a href="http
s://redirect.github.com/pygments/pygments/issues/3032">#3032</a>)</li>
<li>Coq renamed to Rocq (<a href="https://redirect.github.com/pygments/p
ygments/issues/2883">#2883</a>, <a href="https://redirect.github.com/pyg
ments/pygments/issues/2908">#2908</a>)</li>
<li>Cython: Various improvements (<a href="https://redirect.github.com/p
ygments/pygments/issues/2932">#2932</a>, <a href="https://redirect.githu
b.com/pygments/pygments/issues/2933">#2933</a>)</li>
<li>Debian control: Improve architecture parsing (<a href="/?url=https%3A%2F%2Fredir%0Aect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="4005519754" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/3052" data-hovercard-type="pull_request" data-hovercard-url="/pygments/pygments/pull/3052/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fpull%2F3052">pygments/pygments/issues/3052">#3052</a>)</li>
<li>Devicetree: Add support for overlay/fragments (<a href="/?url=https%3A%2F%2Fredi%0Arect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3843235991" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/3021" data-hovercard-type="pull_request" data-hovercard-url="/pygments/pygments/pull/3021/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fpull%2F3021">pygments/pygments/issues/3021">#3021</a>), add
bytestring support (<a href="https://redirect.github.com/pygments/pygmen
ts/issues/3022">#3022</a>), fix catastrophic backtracking (<a href="http
s://redirect.github.com/pygments/pygments/issues/3057">#3057</a>)</li>
<li>Fennel: Various improvements (<a href="https://redirect.github.com/p
ygments/pygments/issues/2911">#2911</a>)</li>
<li>Haskell: Handle escape sequences in character literals (<a href="htt
ps://redirect.github.com/pygments/pygments/issues/3069">#3069</a>, <a hr
ef="https://redirect.github.com/pygments/pygments/issues/1795">#1795</a>
)</li>
<li>Java: Add module keywords (<a href="https://redirect.github.com/pygm
ents/pygments/issues/2955">#2955</a>)</li>
<li>Lean4: Add operators <code>]'</code>, <code>]?</code>,
<code>]!</code>  (<a href="https://redirect.github.com/pygments/pygments
/issues/2946">#2946</a>)</li>
<li>LESS: Support single-line comments (<a href="https://redirect.github
.com/pygments/pygments/issues/3005">#3005</a>)</li>
<li>LilyPond: Update to 2.25.29 (<a href="https://redirect.github.com/py
gments/pygments/issues/2974">#2974</a>)</li>
<li>LLVM: Support C-style comments (<a href="https://redirect.github.com
/pygments/pygments/issues/3023">#3023</a>, <a href="https://redirect.git
hub.com/pygments/pygments/issues/2978">#2978</a>)</li>
<li>Lua(u): Fix catastrophic backtracking (<a href="https://redirect.git
hub.com/pygments/pygments/issues/3047">#3047</a>)</li>
<li>Macaulay2: Update to 1.25.05 (<a href="https://redirect.github.com/p
ygments/pygments/issues/2893">#2893</a>), 1.25.11 (<a href="/?url=https%3A%2F%2Fredi%0Arect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3619424724" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/2988" data-hovercard-type="pull_request" data-hovercard-url="/pygments/pygments/pull/2988/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fpull%2F2988">pygments/pygments/issues/2988">#2988</a>)</li>
<li>Mathematica: Various improvements (<a href="https://redirect.github.
com/pygments/pygments/issues/2957">#2957</a>)</li>
<li>meson: Add additional operators (<a href="https://redirect.github.co
m/pygments/pygments/issues/2919">#2919</a>)</li>
<li>MySQL: Update keywords (<a href="https://redirect.github.com/pygment
s/pygments/issues/2970">#2970</a>)</li>
<li>org-Mode: Support both schedule and deadline (<a href="/?url=https%3A%2F%2Fredir%0Aect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3095372813" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/2899" data-hovercard-type="pull_request" data-hovercard-url="/pygments/pygments/pull/2899/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fpull%2F2899">pygments/pygments/issues/2899">#2899</a>)</li>
<li>PHP: Add <code>__PROPERTY__</code> magic constant (<a href="/?url=https%3A%2F%2F%0Aredirect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3203578001" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/2924" data-hovercard-type="pull_request" data-hovercard-url="/pygments/pygments/pull/2924/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fpull%2F2924">pygments/pygments/issues/2924">#2924</a>), add
reserved keywords (<a href="https://redirect.github.com/pygments/pygment
s/issues/3002">#3002</a>)</li>
<li>PostgreSQL: Add more keywords (<a href="https://redirect.github.com/
pygments/pygments/issues/2985">#2985</a>)</li>
<li>protobuf: Fix namespace tokenization (<a href="https://redirect.gith
ub.com/pygments/pygments/issues/2929">#2929</a>)</li>
<li>Python: Add <code>t</code>-string support (<a href="/?url=https%3A%2F%2Fredirect%0A.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3456959951" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/2973" data-hovercard-type="pull_request" data-hovercard-url="/pygments/pygments/pull/2973/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fpull%2F2973">pygments/pygments/issues/2973">#2973</a>, <a href="/?url=https%3A%2F%2Fr%0Aedirect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3797986242" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/3009" data-hovercard-type="issue" data-hovercard-url="/pygments/pygments/issues/3009/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fissues%2F3009">pygments/pygments/issues/3009">#3009</a>, <a href="ht
tps://redirect.github.com/pygments/pygments/issues/3010">#3010</a>)</li>
<li>Tablegen: Fix infinite loop (<a href="https://redirect.github.com/py
gments/pygments/issues/2972">#2972</a>, <a href="https://redirect.github
.com/pygments/pygments/issues/2940">#2940</a>)</li>
<li>Tera Term macro: Add commands introduced in v5.3 through v5.6 (<a hr
ef="https://redirect.github.com/pygments/pygments/issues/2951">#2951</a>
)</li>
<li>TOML: Support TOML 1.1.0 (<a href="https://redirect.github.com/pygme
nts/pygments/issues/3026">#3026</a>, <a href="https://redirect.github.co
m/pygments/pygments/issues/3027">#3027</a>)</li>
<li>Turtle: Allow empty comment lines (<a href="https://redirect.github.
com/pygments/pygments/issues/2980">#2980</a>)</li>
<li>XML: Added <code>.xbrl</code> as file ending (<a href="/?url=https%3A%2F%2Fredir%0Aect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3053116361" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/2890" data-hovercard-type="issue" data-hovercard-url="/pygments/pygments/issues/2890/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fissues%2F2890">pygments/pygments/issues/2890">#2890</a>, <a href="https:
//redirect.github.com/pygments/pygments/issues/2891">#2891</a>)</li>
</ul>
</li>
<li>
<p>Drop Python 3.8, and add Python 3.14 as a supported version (<a href=
"https://redirect.github.com/pygments/pygments/issues/2987">#2987</a>,
<a href="https://redirect.github.com/pygments/pygments/issues/3012">#301
2</a>)</p>
</li>
<li>
<p>Various improvements to <code>autopygmentize</code> (<a href="https:/
/redirect.github.com/pygments/pygments/issues/2894">#2894</a>)</p>
</li>
<li>
<p>Update <code>onedark</code> style to support more token types (<a hre
f="https://redirect.github.com/pygments/pygments/issues/2977">#2977</a>)
</p>
</li>
<li>
<p>Update <code>rtt</code> style to support more token types (<a href="h
ttps://redirect.github.com/pygments/pygments/issues/2895">#2895</a>)</p>
</li>
<li>
<p>Cache entry points to improve performance (<a href="https://redirect.
github.com/pygments/pygments/issues/2979">#2979</a>)</p>
</li>
<li>
<p>Fix <code>xterm-256</code> color table (<a href="https://redirect.git
hub.com/pygments/pygments/issues/3043">#3043</a>)</p>
</li>
<li>
<p>Fix <code>kwargs</code> dictionary getting mutated on each call (<a h
ref="https://redirect.github.com/pygments/pygments/issues/3044">#3044</a
>)</p>
</li>
</ul>
<h2>2.19.2</h2>
<ul>
<li>Lua: Fix regression introduced in 2.19.0 (<a href="https://redirect.
github.com/pygments/pygments/issues/2882">#2882</a>, <a href="/?url=https%3A%2F%2Fre%0Adirect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="2779015117" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/2839" data-hovercard-type="issue" data-hovercard-url="/pygments/pygments/issues/2839/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fissues%2F2839">pygments/pygments/issues/2839">#2839</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/pygments/pygments/blob/m
aster/CHANGES">pygments's changelog</a>.</em></p>
<blockquote>
<h2>Version 2.20.0</h2>
<p>(released March 29th, 2026)</p>
<ul>
<li>
<p>New lexers:</p>
<ul>
<li>Rell (<a href="https://redirect.github.com/pygments/pygments/issues/
2914">#2914</a>)</li>
</ul>
</li>
<li>
<p>Updated lexers:</p>
<ul>
<li>archetype: Fix catastrophic backtracking in GUID and ID patterns (<a
href="https://redirect.github.com/pygments/pygments/issues/3064">#3064</
a>)</li>
<li>ASN.1: Recognize minus sign and fix range operator (<a href="https:/
/redirect.github.com/pygments/pygments/issues/3014">#3014</a>, <a href="
https://redirect.github.com/pygments/pygments/issues/3060">#3060</a>)</l
i>
<li>C++: Add C++26 keywords (<a href="https://redirect.github.com/pygmen
ts/pygments/issues/2955">#2955</a>), add integer literal suffixes (<a hr
ef="https://redirect.github.com/pygments/pygments/issues/2966">#2966</a>
)</li>
<li>ComponentPascal: Fix <code>analyse_text</code> (<a href="/?url=https%3A%2F%2Fred%0Airect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3885172704" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/3028" data-hovercard-type="issue" data-hovercard-url="/pygments/pygments/issues/3028/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fissues%2F3028">pygments/pygments/issues/3028">#3028</a>, <a href="http
s://redirect.github.com/pygments/pygments/issues/3032">#3032</a>)</li>
<li>Coq renamed to Rocq (<a href="https://redirect.github.com/pygments/p
ygments/issues/2883">#2883</a>, <a href="https://redirect.github.com/pyg
ments/pygments/issues/2908">#2908</a>)</li>
<li>Cython: Various improvements (<a href="https://redirect.github.com/p
ygments/pygments/issues/2932">#2932</a>, <a href="https://redirect.githu
b.com/pygments/pygments/issues/2933">#2933</a>)</li>
<li>Debian control: Improve architecture parsing (<a href="/?url=https%3A%2F%2Fredir%0Aect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="4005519754" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/3052" data-hovercard-type="pull_request" data-hovercard-url="/pygments/pygments/pull/3052/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fpull%2F3052">pygments/pygments/issues/3052">#3052</a>)</li>
<li>Devicetree: Add support for overlay/fragments (<a href="/?url=https%3A%2F%2Fredi%0Arect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3843235991" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/3021" data-hovercard-type="pull_request" data-hovercard-url="/pygments/pygments/pull/3021/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fpull%2F3021">pygments/pygments/issues/3021">#3021</a>), add
bytestring support (<a href="https://redirect.github.com/pygments/pygmen
ts/issues/3022">#3022</a>), fix catastrophic backtracking (<a href="http
s://redirect.github.com/pygments/pygments/issues/3057">#3057</a>)</li>
<li>Fennel: Various improvements (<a href="https://redirect.github.com/p
ygments/pygments/issues/2911">#2911</a>)</li>
<li>Haskell: Handle escape sequences in character literals (<a href="htt
ps://redirect.github.com/pygments/pygments/issues/3069">#3069</a>, <a hr
ef="https://redirect.github.com/pygments/pygments/issues/1795">#1795</a>
)</li>
<li>Java: Add module keywords (<a href="https://redirect.github.com/pygm
ents/pygments/issues/2955">#2955</a>)</li>
<li>Lean4: Add operators <code>]'</code>, <code>]?</code>,
<code>]!</code>  (<a href="https://redirect.github.com/pygments/pygments
/issues/2946">#2946</a>)</li>
<li>LESS: Support single-line comments (<a href="https://redirect.github
.com/pygments/pygments/issues/3005">#3005</a>)</li>
<li>LilyPond: Update to 2.25.29 (<a href="https://redirect.github.com/py
gments/pygments/issues/2974">#2974</a>)</li>
<li>LLVM: Support C-style comments (<a href="https://redirect.github.com
/pygments/pygments/issues/3023">#3023</a>, <a href="https://redirect.git
hub.com/pygments/pygments/issues/2978">#2978</a>)</li>
<li>Lua(u): Fix catastrophic backtracking (<a href="https://redirect.git
hub.com/pygments/pygments/issues/3047">#3047</a>)</li>
<li>Macaulay2: Update to 1.25.05 (<a href="https://redirect.github.com/p
ygments/pygments/issues/2893">#2893</a>), 1.25.11 (<a href="/?url=https%3A%2F%2Fredi%0Arect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3619424724" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/2988" data-hovercard-type="pull_request" data-hovercard-url="/pygments/pygments/pull/2988/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fpull%2F2988">pygments/pygments/issues/2988">#2988</a>)</li>
<li>Mathematica: Various improvements (<a href="https://redirect.github.
com/pygments/pygments/issues/2957">#2957</a>)</li>
<li>meson: Add additional operators (<a href="https://redirect.github.co
m/pygments/pygments/issues/2919">#2919</a>)</li>
<li>MySQL: Update keywords (<a href="https://redirect.github.com/pygment
s/pygments/issues/2970">#2970</a>)</li>
<li>org-Mode: Support both schedule and deadline (<a href="/?url=https%3A%2F%2Fredir%0Aect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3095372813" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/2899" data-hovercard-type="pull_request" data-hovercard-url="/pygments/pygments/pull/2899/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fpull%2F2899">pygments/pygments/issues/2899">#2899</a>)</li>
<li>PHP: Add <code>__PROPERTY__</code> magic constant (<a href="/?url=https%3A%2F%2F%0Aredirect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3203578001" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/2924" data-hovercard-type="pull_request" data-hovercard-url="/pygments/pygments/pull/2924/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fpull%2F2924">pygments/pygments/issues/2924">#2924</a>), add
reserved keywords (<a href="https://redirect.github.com/pygments/pygment
s/issues/3002">#3002</a>)</li>
<li>PostgreSQL: Add more keywords (<a href="https://redirect.github.com/
pygments/pygments/issues/2985">#2985</a>)</li>
<li>protobuf: Fix namespace tokenization (<a href="https://redirect.gith
ub.com/pygments/pygments/issues/2929">#2929</a>)</li>
<li>Python: Add <code>t</code>-string support (<a href="/?url=https%3A%2F%2Fredirect%0A.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3456959951" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/2973" data-hovercard-type="pull_request" data-hovercard-url="/pygments/pygments/pull/2973/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fpull%2F2973">pygments/pygments/issues/2973">#2973</a>, <a href="/?url=https%3A%2F%2Fr%0Aedirect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3797986242" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/3009" data-hovercard-type="issue" data-hovercard-url="/pygments/pygments/issues/3009/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fissues%2F3009">pygments/pygments/issues/3009">#3009</a>, <a href="ht
tps://redirect.github.com/pygments/pygments/issues/3010">#3010</a>)</li>
<li>Tablegen: Fix infinite loop (<a href="https://redirect.github.com/py
gments/pygments/issues/2972">#2972</a>, <a href="https://redirect.github
.com/pygments/pygments/issues/2940">#2940</a>)</li>
<li>Tera Term macro: Add commands introduced in v5.3 through v5.6 (<a hr
ef="https://redirect.github.com/pygments/pygments/issues/2951">#2951</a>
)</li>
<li>TOML: Support TOML 1.1.0 (<a href="https://redirect.github.com/pygme
nts/pygments/issues/3026">#3026</a>, <a href="https://redirect.github.co
m/pygments/pygments/issues/3027">#3027</a>)</li>
<li>Turtle: Allow empty comment lines (<a href="https://redirect.github.
com/pygments/pygments/issues/2980">#2980</a>)</li>
<li>XML: Added <code>.xbrl</code> as file ending (<a href="/?url=https%3A%2F%2Fredir%0Aect.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="3053116361" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/2890" data-hovercard-type="issue" data-hovercard-url="/pygments/pygments/issues/2890/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fissues%2F2890">pygments/pygments/issues/2890">#2890</a>, <a href="https:
//redirect.github.com/pygments/pygments/issues/2891">#2891</a>)</li>
</ul>
</li>
<li>
<p>Drop Python 3.8, and add Python 3.14 as a supported version (<a href=
"https://redirect.github.com/pygments/pygments/issues/2987">#2987</a>,
<a href="https://redirect.github.com/pygments/pygments/issues/3012">#301
2</a>)</p>
</li>
<li>
<p>Various improvements to <code>autopygmentize</code> (<a href="https:/
/redirect.github.com/pygments/pygments/issues/2894">#2894</a>)</p>
</li>
<li>
<p>Update <code>onedark</code> style to support more token types (<a hre
f="https://redirect.github.com/pygments/pygments/issues/2977">#2977</a>)
</p>
</li>
<li>
<p>Update <code>rtt</code> style to support more token types (<a href="h
ttps://redirect.github.com/pygments/pygments/issues/2895">#2895</a>)</p>
</li>
<li>
<p>Cache entry points to improve performance (<a href="https://redirect.
github.com/pygments/pygments/issues/2979">#2979</a>)</p>
</li>
<li>
<p>Fix <code>xterm-256</code> color table (<a href="https://redirect.git
hub.com/pygments/pygments/issues/3043">#3043</a>)</p>
</li>
<li>
<p>Fix <code>kwargs</code> dictionary getting mutated on each call (<a h
ref="https://redirect.github.com/pygments/pygments/issues/3044">#3044</a
>)</p>
</li>
</ul>
<p>Version 2.19.2</p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="pygments/pygments@708197d82827ba2
d5ca78bcbb653c7102ce86dcd"><code>708197d</code></a> Fix underline
length.</li>
<li><a href="pygments/pygments@1d4538ae8621d76
6ecc91ff59caf76ab75983abc"><code>1d4538a</code></a> Prepare 2.20
release.</li>
<li><a href="pygments/pygments@2ceaee4e634eeba
e2d10a47fd05406871f6bac8f"><code>2ceaee4</code></a> Update CHANGES.</li>
<li><a href="pygments/pygments@e3a3c54b58c7f80
bc4db887e471d4f91c77844ed"><code>e3a3c54</code></a> Fix Haskell lexer:
handle escape sequences in character literals (<a href="/?url=https%3A%2F%2Fredirect%0A.github.com%2F%3Ca%20class%3D"issue-link js-issue-link" data-error-text="Failed to load title" data-id="4141475038" data-permission-text="Title is private" data-url="https://github.com/pygments/pygments/issues/3069" data-hovercard-type="pull_request" data-hovercard-url="/pygments/pygments/pull/3069/hovercard" href="/?url=https%3A%2F%2Fgithub.com%2Fpygments%2Fpygments%2Fpull%2F3069">pygments/pygments/issues/3069">#3069</a>)</li>
<li><a href="pygments/pygments@d7c3453e342dac3
19f58e4091f4ef183cc49d802"><code>d7c3453</code></a> Merge pull request
<a href="https://redirect.github.com/pygments/pygments/issues/3071">#307
1</a> from pygments/harden-html-formatter</li>
<li><a href="pygments/pygments@0f97e7c37d44abf
a4ddfddf44a3290fdad586034"><code>0f97e7c</code></a> Harden the HTML
formatter against CSS.</li>
<li><a href="pygments/pygments@9f981b2ba42b88c
a5bdcebf12cd01efd7cd80aec"><code>9f981b2</code></a> Update CHANGES.</li>
<li><a href="pygments/pygments@1d889151024e9a5
3f3702a60558b29b070306e9e"><code>1d88915</code></a> Update CHANGES.</li>
<li><a href="pygments/pygments@c3d93adb9827fc0
54c3c12b47bde31c781a36a93"><code>c3d93ad</code></a> Fix ASN.1 lexer:
recognize minus sign and fix range operator (<a href="https://redirect.g
ithub.com/pygments/pygments/issues/3060">#3060</a>)</li>
<li><a href="pygments/pygments@4f06bcf8a5ba3f2
b5bda24a26ccf041a1a65d91e"><code>4f06bcf</code></a> fix bad behaving
backtracking regex in CommonLispLexer</li>
<li>Additional commits viewable in <a href="https://github.com/pygments/
pygments/compare/2.19.1...2.20.0">compare view</a></li>
</ul>
</details>
<br />
[![Dependabot compatibility score](https://dependabot-
badges.githubapp.com/badges/compatibility_score?dependency-
name=pygments&package-manager=uv&previous-version=2.19.1&new-
version=2.20.0)](https://docs.github.com/en/github/managing-security-
vulnerabilities/about-dependabot-security-updates#about-compatibility-
scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/tursodatabase/turso/network/alerts).
</details>

Closes #6532
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-lexing area: changes to individual lexers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants