Re: Query regarding the porting of NVDA to Python3

Robert Hänggi

On 27/07/2019, Brian's Mail list account via Groups.Io
<> wrote:
I'm not aware of a 64 bit version I note that Even Jaws has bits in 32 and
bits in 64 bit. I guess this raises a whole new set of issues about
threading and memory use etc though.
I don't think so. The communication for NVDA64 should be easier
because it can work with the 48 bits of the 64bit pointers and cast to
32 bit for the other applications.
Also, it would make its memory in the lower 2 GB allocation available
for other 32-bit applications and thus unblocking a possible
performance bottle neck.

But of course, Murphys law strikes in the most unusual ways back.

Sent via blueyonder.
Please address personal email to:-
briang1@..., putting 'Brian Gaff'
in the display name field.
This message sent from a Windows XP machine!
----- Original Message -----
From: "Joseph Lee" <@joslee>
To: <>
Sent: Saturday, July 27, 2019 5:29 PM
Subject: Re: [nvda-devel] Query regarding the porting of NVDA to Python3

Expect some things with speed, and for multilingual speakers, a chance to
deal with multiple languages more consistently (at least I would imagine
that will be the case). Also, more Unicode characters will be recognized.

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

Wow, that's excellent!
And, what will be the user facing changes?
with the responsiveness and speed be improved?
Will it still be in 32 bit or this time 64 bit is also in plan?

On 7/27/19, Joseph Lee <@joslee> wrote:
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
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
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
NVDA_Python2 to NVDA_Python3?

Join to automatically receive all group messages.