Re: Query regarding the porting of NVDA to Python3


The biggest change you'll notice is text handling - no more distinction between bytes and Unicode as far as regular text handling is concerned; when it comes to specialized situations, knowing what you are working will become important.
There are other changes you may see (depending on which modules gets included), including:
* Enum: enumeration becomes way easier.
* Chain map: basically, a dictionary of dictionaries where items are fetched from the topmost map (first dictionary).
* Barriers: a way to tell multiple threads to wait for each other before released all at once.
* Async/await: working with asynchronous generators, a bit advanced at the moment.
* No more pyo files: gone in Python 3.5.
* Time-based thread switching: Python 2 employs instruction count when switching between threads, whereas Python 3 uses timers.
* Faster file system traversal: os.scandir is introduced, which uses generators to traverse directories. Several os module functions use scandir internally to speed things up.

Some things that may make its way to NvDA in future Python 3 releases:
* Assignment expressions (:=): part of Python 3.8, it allows some (if not all) conditional statements to become a bit more readable.
* Breakpoint hooks (part of 3.7 I believe): one can override sys.breakpointhook so something other than Python Debugger (pdb) can be invoked to debug NVDA; the most likely scenario is allowing Visual Studio debugger to debug NVDA if given a chance.


-----Original Message-----
From: <> On Behalf Of Akash Kakkar
Sent: Saturday, July 27, 2019 7:30 AM
Subject: [nvda-devel] Query regarding the porting of NVDA to Python3

Hi all,
So, finally, we have started getting alpha releases based on Python3.
I was wondering, that when NVDA version 2019.3 will be released later this year, which improvements/features/fixes will be able to observe from NVDA_Python2 to NVDA_Python3?

Join to automatically receive all group messages.