HeadlinesBriefing favicon HeadlinesBriefing.com

Unicode Transliteration Rules Proven Turing-Complete

Hacker News •
×

Researcher Nicolas Seriot has proven that Unicode's UTS #35 transliteration rules — shipped as locale data in the ICU library used across operating systems, browsers, and databases — are Turing-complete under their natural unbounded semantics. The proof compiles 2-tag systems, a computational model proven universal by Cocke and Minsky in 1964, into standard transliteration rules using the revisiting cursor feature (|) that places the cursor inside newly written text to trigger further rules.

Seriot demonstrates three working implementations: a three-rule Collatz function simulator, a 14-rule Rule 110 cellular automaton, and Wolfram's 223-rule prime-generating automaton. Each runs on ICU 78.3 via PyICU or the stock uconv tool with no Python required. The Collatz machine encodes unary numbers as runs of 'a' characters, using a marker 'M' to pin the rewrite head; each rewrite performs exactly one tag step, reproducing the known sequence aaa → abc → cbc → caaa → aaaaa.

ICU mitigates the undecidability with a pragmatic rewrite guard limiting each transliterate() call to 16 rewrites per input code point (span << 4 in rbt.cpp). However, the UTS #35 specification itself defines no bound. This means any system accepting external transliteration rule files is effectively accepting arbitrary code execution, a fact the specification never acknowledges.

The practical consequence is clear: transliteration rule files are programs, not passive data. Supply-chain review and runtime bounding — as ICU already implements — are necessary when ingesting rules from untrusted sources. The discovery reframes locale data as a potential attack surface in every ICU-dependent stack.