Release/5.5.1-alpha0 #1705
Replies: 3 comments
-
Reminder: At this time this is the only (pre-)release that is 64-bit instead of 32-bit. Assume any later releases are 32-bit unless they explicitly state they are 64-bit. If in doubt check the startup logging: 2022-11-29 10:43:41.887 UTC - INFO - 7496:10336:10336 EDMarketConnector.main:1868: Startup v5.6.0+a9ccb7d : Running on Python v3.10.8 (tags/v3.10.8:aaaf517, Oct 11 2022, 16:37:59) [MSC v.1933 32 bit (Intel)] versus 2022-11-17 17:55:42.489 UTC - INFO - 16612:10296:10296 EDMarketConnector.main:1868: Startup v5.5.1-alpha0+c27a5936 : Running on Python v3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] |
Beta Was this translation helpful? Give feedback.
-
Once the dust settles on a 5.7.0 final release, I'll put out a fresh 64-bit alpha based on that. Then, unless something else comes up, the main focus will be on moving to 64-bit for a 6.0.0 release. |
Beta Was this translation helpful? Give feedback.
-
See https://github.com/EDCD/EDMarketConnector/releases/tag/Release%2F5.7.1-alpha1 for a more up to date 64-bit test version. |
Beta Was this translation helpful? Give feedback.
-
Pre-Release 5.5.1-alpha0
We now test against, and package with, Python 3.10.8 64-bit. In part this change to 64-bit is because
py2exe
, the program we employ to create windows executables, is no longer warranting that their 32-bit versions will continue to work (they no longer run 32-bit tests).Another advantage to switching to 64-bit is in case any data-hungry plugins attempt to use around/more than 2GiB of RAM at once. With 64-bit Python as the basis the only limit will be your system RAM and 'page file' space.
ctypes
code (for Windows API calls) has been updated where necessary to work with 64-bit Python.The
ctypes
code to invoke a "choose a folder" dialog forSettings
>Output
tab >File location
>Browser
has been removed in favour of always usingtkinter.filedialog()
.This was tested as still working under Windows 10 21H2 (Build 19044.2311), even when forcing a UTF-8 locale to not be selected and selecting a folder containing Unicode characters.
The Windows UTF-8 code page has been available since Windows 10 Build 1903, and even that version is no longer supported, so any supported version of Windows 10 shouldn't have a problem with this.
The last Windows 8.1 build is still supported until 'Jan 10, 2023' and might have an issue with this. But as that 'end of life' date is very much in sight we don't plan to hold back the change just for that OS.
Those statements about (un)supported OS versions not withstanding, please do test this version and that specific functionality on any and all Windows systems which ran EDMarketConnector 5.5.0 without issues.
NB: If you make use of any third-party plugins that utilise extra modules which themselves use native libraries then you might find that plugin no longer works. The plugin author will likely need to make a new release which contains the 64-bit versions of any libraries, rather than the 32-bit version they would have been supplying up until now. Please report the issue to them, not us.
Plugin Developers
As noted above, if any third-party plugin is shipped with extra python modules that include native libraries then you will need to switch to shipping the 64-bit versions of those libraries.
There shouldn't be any other impact on plugins, as no API interfaces have changed. Although if your own code utilises any
ctypes
calls you might also find that it needs updating or replacing.The key thing to look out for there is where the naive way to call a
ctypes
-mediated Windows API function defaults the return type toint
. On 32-bit Python this is OK if the actual return type is meant to be a pointer, as the two types are of the same size and that pointer will continue to work if passed through to anotherctypes
function. However on 64-bit python the size ofint
is still 32 bits, but the pointers are 64 bits. Thus any returned pointer gets erroneously cast and truncated to 32 bits unless you properly declare the function prototype first.See https://docs.python.org/3/library/ctypes.html#ctypes.WINFUNCTYPE for how to properly declare a function prototype, including return value.
Due to this move to 64-bit Python being a potentially breaking change for some plugins we will be bumping our major version in the final release, i.e. to 6.0.0. We're holding off on that for these alpha releases in case we need to backout/delay this change, not wanting to have testers on an alpha version that is considered newer than a release 5.6.0 or later 5.x.y version.
This discussion was created from the release Release/5.5.1-alpha0.
Beta Was this translation helpful? Give feedback.
All reactions