В статье рассказывают, как программисты из Турции обнаружили странную ошибку: сборка Kotlin-проекта выдавала сообщение «Unknown compiler message tag: INFO», и выяснилось, что дело в локали системы. Оказалось, что методы вроде
toLowerCase() и capitalize() в компиляторе работали с учётом языка системы, и на турецкой раскладке буква «I» приводилась к «ı» (без точки) — из-за этого часть алгоритма не находила нужные ключи. Ошибка проявлялась не сразу, но с ростом сложностей (например, при корутинах и примитивных массивах) стала серьёзной. Команда Kotlin изменила библиотеку, чтобы использовать инвариантную локаль (например, Locale.US), и в версии 1.5 баг наконец окончательно закрылся. Вывод: даже самая банальная строковая операция может оказаться уязвимой из-за языковых нюансов и настроек локали. Стоит помнить, что код работает в мире, где культура, алфавит и система имеют значение — и тестировать не только в «английской» среде.• Cahier — пример современного блокнота для Android от Google
• Gradle для QA-инженера
• The Country That Broke Kotlin
• Under the Hood of Suspension: Tracing the State Machine Behind Kotlin Coroutines