Программа экранного доступа NVDA, разрабатываемая организацией NV Access для операционных систем Windows, начиная с тестовой Alpha-сборки версии 21882 собирается в окружении Python 3.8, также известном как Project Walrus (проект Морж) по жаргонному названию нового оператора присваивания (:=), напоминающего пару глаз с бивнями. Данное обновление, также сопровождающееся изменением некоторых внутренних API, потенциально может привести к проблемам совместимости дополнений, поэтому их разработчикам, а также активным пользователям, рекомендуется выполнить все необходимые предварительные тестирования и доработки до выхода первой стабильной версии NVDA на базе Python 3.8. Главным образом, риску утраты совместимости подвержены дополнения с драйверами синтезаторов речи, а также дополнения, использующие pyd-файлы динамически подключаемых модулей Python.
Переход на более новую версию Python осуществляется в соответствии с ранее объявленным планом и обусловлен снятием с поддержки версии 3.7, использующейся в последней стабильной версии NVDA 2020.4. На базе Python 3.8 будет выпущена уже следующая стабильная версия NVDA 2021.1.
Перенос NVDA с Python 3.7 на 3.8 влечёт за собой намного меньшие изменения, нежели с 2.7 на 3.7, поэтому обновление на NVDA 2021.1 должно оказаться намного менее болезненным и деструктивным для сторонних дополнений и стабильности самой программы экранного доступа, нежели прошлогоднее обновление на NVDA 2019.3. Тем не менее, надо учитывать следующие ключевые изменения:
- Если дополнение использует динамически подключаемые модули Python в виде файлов с расширением .pyd, то для них обязательно требуется пересборка для Python 3.8. Если же стоит задача сохранить обратную совместимость дополнения назад до версии NVDA 2019.3, то следует поставлять pyd-файлы как для Python 3.7, так и для 3.8.
- Разработчикам дополнений теперь доступна для использования уже включённая в NVDA библиотека организации конкурентного программирования asyncio, которая может помочь легче определять асинхронные функции. Однако её подключение приведёт к утрате совместимости дополнения с NVDA 2020.4 и ниже. Впрочем, возможно, что в ходе разработки будет принято решение исключить asyncio, поэтому заинтересованным в ней разработчикам стоит дождаться стабилизации NVDA до статуса бета-версии, прежде чем принимать конкретные архитектурные решения.
- Набор инструментов wxPython обновлён до версии 4.1.1, что может привести к ошибкам в дополнениях, реализующих графический интерфейс, если какие-то изменения для них окажутся критическими.
- В Python 3.8 появились новые синтаксические конструкции, поэтому дополнения, которые будут разрабатываться с их использованием, будут несовместимы с NVDA 2020.4 и ниже.
- В NVDA 2021.1 произойдут изменения API речевой подсистемы, а именно:
- Атрибуты speech.*Command заменены на speech.commands.*Command.
- Из типов элементов управления убраны константы причины речи: теперь следует использовать controlTypes.OutputReason.*.
Разработчики NVDA призывают всех авторов дополнений к проведению работ по обеспечению их совместимости с окружением Python 3.8 и обновлённому внутреннему API, а пользователей к проявлению максимальной активности в отношении донесения информации о возникающих ошибках в работе NVDA и её дополнений. О проблемах в работе дополнений сообщать, разумеется, необходимо разработчикам дополнений, а не разработчикам NVDA. Тестовые версии NVDA точно также как и стабильные могут быть запущены в переносном варианте, так что осуществить тестирование интересующих дополнений и самой программы можно без отказа от стабильной версии, использующейся в повседневной работе.
Ссылки по теме:
Социальные сети