Библиотеки популярных языков программирования протестированы на поддержку IDN и EAI
Глобальная группа управления по универсальному принятию (UASG) совместно с Cofomo Inc. завершила третью часть исследования библиотек и фреймворков популярных языков программирования для определения уровня поддержки интернационализированных доменных имен и адресов электронной почты.
Новое исследование посвящено библиотекам Kotlin и Swift для мобильных платформ (Android и iOS) и библиотекам PHP на платформах Linux и Windows. В предыдущих исследованиях UASG были протестированы 22 библиотеки на платформе Linux. В результате проверки эксперты пришли к следующим основным заключениям.
iOS
Приложения Mail и Safari для iOS демонстрируют корректную работу с интернационализированными доменными именами и адресами электронной почты (IDNA2008 и EAI), однако в наборе для разработчиков Apple не предоставляет библиотеки с таким же высоким уровнем универсального принятия. Эксперты предполагают, что Apple использует для своих приложений ряд внутренних обходных механизмов, например, конвертацию интернационализированных доменных имен в А-метки перед использованием их в HTTP-библиотеках.
Android
Большинство протестированных HTTP библиотек использует библиотеку okHttp, которая обращается к Java-объекту java.net.IDN, соответствующему старой версии стандарта IDNA 2003. Поскольку разработчики okHttp пока не собираются дорабатывать эту библиотеку, возможным решением может быть замена Java-объекта java.net.IDN или использование уже содержащегося в составе Android объекта icu.text.IDNA, соответствующего современному стандарту IDNA 2008.
Большинство протестированных почтовых SMTP-библиотек демонстрируют высокий уровень соответствия стандарту EAI, однако разработчики приложений под Android часто используют объект намерения email Intent, тем самым перекладывая функцию отправки почты на некое стороннее приложение, которое в свою очередь должно соответствовать требованиям стандарта EAI.
PHP в Windows и Linux
Библиотеки PHP для указанных платформ демонстрируют поддержку универсального принятия, но несмотря на то, что Microsoft поддерживает IDNA2008 в рамках своей базовой платформы .NET Framework, тестирование расширения PHP cURL показало, что эта поддержка не была реализована в их программном интерфейсе C API из "windows.h". Кроме того, в ОС Windows есть проблемы с использованием формата юникод-кодировки UTF-8, приводящие к ошибкам передачи отличных от ASCII параметров между программами.
Подробные результаты исследования, включая методологию, перечень протестированных библиотек, отчеты об обнаруженных ошибках и рекомендации для разработчиков по их исправлению доступны в отчетах UASG037 и UASG018A. Кроме того, в репозитории GitHub размещены примеры кода, показывающие, как правильно использовать библиотеки определенных языков программирования для поддержки стандартов EAI и IDNA2008.