Change Log¶
Known Bugs¶
None. Prove me wrong!
4.7.0 (28-Feb-2026)¶
- New Features
Support for SDK430, valid for X-Plane 12.4.0+. Note XPPython3 dynamically loads these new features where available. That means you can continue to use this version of XPPython3 on older versions of X-Plane 12+, but the new features (of course) won’t be available.
XPLMDefs: Definition for third Airbus MCDU
XPLMPlanes: New flight initialization and update function which use JSON (or python dicts) to set parameters, as described in Flight Initialization API developer note.
Moving Map via AvnWx.com, the
PI_AvnWx.pyplugin, now included with samples, will post position data to https://maps.AvnWx.com, allowing you to view your location on a free moving map. AvnWx.com has provided weather briefings to pilots, controllers, and dispatchers since 2007. Now it supports X-Plane. See AvnWx Tracker Plugin for details.
4.6.1 (9-Nov-2025)¶
- Fixes
XPPython3Log.txt File name Bug was introduced which garbled the XPPython3 log file name. This has been fixed. Plugin should have executed properly, it just logged results to a bad filename.
4.6.0 (6-Nov-2025)¶
- Fixes
Custom Cursors for Widgets XPPython3 passed incorrect information back to X-Plane from within a widget callback function (
xp.addWidgetCallback()) in response to thexp.Msg_CursorAdjustmessage. This has been corrected and documentation updated to support the correction. Custom Cursors now work properly for widgets (they’ve always worked for non-widget windows.)sharedData Previously,
xp.shareData()threw an exception when a shared dataRef was changed, but no callback was registered for it. (Techinically,shareDatadidn’t throw an exception, thesetDatafunction calling the shared dataRef would throw the exception.) Callbacks are not required, so this fix simply recognizes when a callback is not provided and quietly continues without error.DataRef Callbacks: If a callback is not defined for a particular dataref, but there is an attempt to use that callback (e.g., calling setDatavi() for a callback which only support a single float), we now log the fact that the callback does not exist, but will no longer raise an exception. For get* callbacks, we’ll return the value zero, with no indication of success or failure. For set* callbacks we (continue to) return nothing. This more closely aligns with X-Plane behavior.
MSG_DATAREFS_ADDED: This plugin message’s C-language parameter value was ambiguously defined in the official documentation. This has now been clarified, and XPPython3 now correctly returns the integer count of datarefs.
- New Features
Support for SDK420, valid for X-Plane 12.3.0+. Note XPPython3 dynamically loads these new features where available. That means you can continue to use this version of XPPython3 on older versions of X-Plane 12+, but the new features (of course) won’t be available.
XPLMWeather: for Weather API update which now allows you to set weather at locations
XPLMInstance: for
xp.instanceSetAutoShift()which may save you some calculation effor for static instances.Window API: for new built-in cursors (XPLMCursorStatus), especially useful for your custom avionics.
XPLMGraphics: for
xp.getTexture()and enumerations for weather radar textures. avionics.
Support for .pyc compiled python plugins: You can now simply deploy PI_<plugin>.pyc instead of your source PI_<plugin>.py file. See Compiled Python.
Support for .xpyce encrypted python plugins: We’ve re-introduced (and improved) using encrypted python. See Encrypted Python.
Support for including custom C-language modules: Though we’ve always supported this python feature, we’ve included documentation on how to create your on C shared library and add it to your python plugin. See Shared Library.
- Improvements
Major rewrite: About 30,000 lines of code was converted from C to C++. This allowed me to take advantage of C++ data structures such as vectors and unordered_maps, which are dramatically faster than previous implementation. The inherent typing checking added by C++ also made it easier (less risky) to refactor code, eliminating some code paths. Parameter marshaling (Python->C, and C->Python) improved and in many cases eliminated. Simple tests show about a 20% reduction in time spent with XPPython3. Additionally, reference counting was checked which should further reduce memory leaks and illegal memory accesses.
XPPython3/utils/datarefs.py: Previous version had major implementation issues: how it got released is beyond me. We’ve updated the module and extensively updated the documentation at Easy Datarefs and included many more examples.
- Changes
MacOS10.15: Minimum Mac support is now Catalina, 10.15. Previously we supported as early as 10.12 Sierra. If you still have such an old Mac, don’t upgrade XPPython3.
Internal data structure changed: Due to code improvements, the internal hash tables have been changed. It is unlike anyone was accessing these except for debugging purposes. The structures have changed, but they are now fully documented in pythonGetDicts(). They’re still “internal” and should only be used to aid debugging.
4.5.0 (21-Jan-2025)¶
- Fixes
Python library update: For Silicon Macs only (i.e., ARM architecture): All except one python library, included with XPPython3’s version of Python supported both ARM and Intel architectures. The
charset_normalizermodule supported only Intel (x86_64). Two libraries have been updated to support both architectures:md.cpython-312-darwin.soandmd__mypyc.cpython-312-darwin.so. This is irrelevant if you’re using an Intel-based Mac, or Linux or Windows. Code will be automatically updated on first restart. (You’ll see a ‘PIP Output’ window popup with the output.)
- New Features
Preferences Popup: On first execution and in response to the new “Preferences” menu item, a Preferences popup is displayed. This augments the existing Preferences File feature.
Custom Cursors: Thanks to guidance from Saso Kiselkov, XPPython3 now includes platform-specific code allowing you to load a set custom cursors (See XPCursor). Additionally, we’re providing a number of predefined cursors.
- Improvements
Usage Data Collection: Previously, XPPython3 would check for updates and record basic usage statistics. This version enables users & developers to enable/disable version checking and usage data collection. It also introduces the (optional) collection of per-python plugin usage. See Preferences.
xppython3.ini parser: Previously XPPython3’s parsing of options required “1” or “0” for boolean options. It now also supports “Yes”, “On”, and “True” as equivalents. See Preferences File.
Required module loading: On startup, XPPython3 automatically checks for and installs any (XPPython3) required python modules. (Modules will only be installed under the XPPython3 version of python.) This allows us to keep the plugin up-to-date without user intervention.
Type hinting: Additional python type hinting has been added, including (partial) hinting for
OpenGLandimgui. While type hinting is not required (or even used) by Python, as I’m trying to provide instructional examples, I’m adding type hinting as much as possible.
4.4.1 (10-Jul-2024)¶
- Fixes
Fix Stats: by default, v4.4.0 turned off recording flightloop performance statistics. This release sets the default back to previous value, which now records the information.
4.4.0 (9-Jul-2024)¶
- New Features
SDK 410 Support. With X-Plane 12.1 new SDK features were added to support more flexible Avionics Display (XPLMDisplay) and FMS flight plan manipulation (XPLMNavigation). XPPython v4.4 can be used with X-Plane 12.0 or greater, though SDK410 functions are available only while using 12.1 or greater.
OpenGL Utilities. The
xpglmodule has been added to XPPython3. This module wraps OpenGL routines, allowing you to easily draw Lines, Shapes, Images, Text, Transformations, Masks, without needing to understand OpenGL. Also included is a pygame Template which allows you to experiment with XPPython XPGL drawing without needing to fire up X-Plane.EasyPython. To help developers who want to transition from using xlua for aircraft plugins, and to support a simpler way to write python plugins, some helper classes have been introduced. These simplify:
These mimic the interface provided by xlua, and are fully usable in any XPPython3 plugin. Additionally, a simpler “main loop” is introduced as EasyPython. These enhancement should be considered BETA at present, and improved documentation with examples will be included in the future.
xp_pip module. This module allows plugin developers to automatically install python modules into the correct location within XPPython3. See xp_pip.
- Improvements
Aircraft Plugin handling. Previously, we loaded python aircraft plugins after sending the
XPLM_MSG_PLANE_LOADEDmessage to all (other) python plugins, which results in the aircraft plugin itself not receive this message. Now we load the aircraft python plugin(s), and then send thePLANE_LOADEDmessage to all python plugins.
4.3.0 (5-Apr-2024)¶
- New Features
Python Included. For all architectures, we now include a version of Python 3.12. You no longer need to install your own python, or alter your OS-provided version.
OpenGL, IMGUI, and requests modules Included. By including our own copy of Python, we can also provide standard copies of OpenGL, IMGUI, and requests modules. For users, this means you no longer have to install these yourself. For developers, this means all your users will have this installed already!
- Improvements
IMGUI / Wayland interaction fixed. Some Linux distros (Ubuntu 22.04, for example) use Wayland graphics interface which (currently) fails with IMGUI. Attempts to use IMGUI within X-Plane result in blank windows. I’ve embedded a fix which instructs linux to use X.org rather than Wayland interface and this appears to work. If your UI doesn’t use Wayland, you shouldn’t see anything.
- Fixes
XPLMCreateWindow_Ex was missing a sentinel on keyword argument list causing calls to sometimes fail.
4.2.1 (29-Dec-2023)¶
- Fixes
Removed extraneous newlines. Python
loggingmodule, and stdoutprint()resulted in extra newlines in the log file. Bug introduced in v4.2, now corrected.
4.2 (24-Dec-2023)¶
- New Features
Type Hinting and *.pyi files. Doc strings and type hinting for all SDK functions are generated from code. We’ve removed the “stub” files which were previously shipped and have now included this information in (standard)
*.pyifiles, included with the standard XPPython3 distribution. See updated use in XPPython3 Stubs.
- Fixes
Corrected
xp.getWeatherAtLocation()error detection. See linked documentation for details. Previously XPPython3 interpreted a zero return from XPLMGetWeatherAtLocation() as an error indicator. Apparently this is not the case, so we now detect error returns differently. We still returnWeatherInfoobject on success andNoneon failure: the good news is times when we thought there were failures we’ll now indicate as success. Your code or usage shouldn’t change. (XPD-14674)createMapLayer alternate API fixed. This function can take either a list of parameters, or a single parameter, itself being a tuple of values. The former API could fail to create a map layer under particular circumstances. This has been fixed. (
xp.createMapLayer())
- Improvements
FirstTime loader is now called on first installation of XPPython3 and when you upgrade XPPython3. This allows us to clean out files from XPPython3 folder on upgrade.
Improved Pip Package Installer. When using the built-it Pip Package Installer, the output from Pip is now displayed in real-time in a scrolling window. Contents of the window (i.e., pip output) are also automatically added to the python log. (Also, pressing the Enter key on the pip package installer window will start the installation – no need to click the “Install” button.)
Cleanup up python code under XPPython3 folder. Mostly to better support type-hinting.
Add “reset” code for reload. XPPython3 maintains a lot of internal dictionaries to handle callbacks and other functionality. If you forget to destroy windows or widgets, or unregister callbacks and you attempt to reload your python plugin (perhaps you’re debugging your plugin and it failed to properly execute), then X-Plane may execute your callbacks more than once: once for the initial registration & again with your reloaded registration. We now reset all menus, callbacks, windows, hotkeys, keysniffers and other resources so your reloaded plugin can execute without left-over callbacks. (This is a non-issue if you don’t reload your python plugins.)
Enable XPLMSetErrorCallback for beta releases or if you’ve enabled
debugin Preferences File. This performs additional run-time error checking, with output sent to python log.Improved conversion of widget message parameters. Some custom widget messages were not being converted correctly between C and Python implementations.
4.1.1 (12-Oct-2023)¶
- New Features
Python 3.12 Support. XPPython3 now supports python versions 3.10, 3.11, and 3.12. You may use any version. Python version 3.12 is internally faster than earlier versions of python but I have no tests to confirm any advantage within the context of X-Plane. For new installations, use 3.12. There is no need to upgrade your current installation.
Python IMGUI Update. Current versions of ImGui (version 2.0+) now correctly handle contexts in a way compatible with X-Plane. Therefore, XPPython3 no longer includes a copy of the python imgui module.
Note
If you are upgrading from a previous version of XPPython3, you should delete the XPPython3/imgui directory, as it is no longer required. However, you (and users of your plugin) will need to install the standard python
imguimodule:$ rm -rf XPPython3/imgui $ pip3 install imgui
Caution: You do still need the
xp_imguimodule found under XPPython3. This is required to integrate python imgui and X-Plane!Logging Flexibility. You can now specify python logging information in the Preferences File
xppython3.ini. This allows you to (among other things) redirect XPPython3 output to X-Plane’s Log.txt, which will result in the information also being visible in the X-Plane Dev Console. See Preferences File for more information.
- Improvements
Mini Python debugger window now auto-scrolls on input (in case you’d been viewing history) and “remembers” and reloads into history previous commands. This allows you easily repeat commands from one session to the next as the debugger’s history recall spans sessions.
Plugin Reload will now skip checking for updated versions. It will check on X-Plane startup only. This is primarily to aid python developers, allowing them to quickly reload plugins (saving a few seconds each time.)
Tentative Support for X-Plane 11: This is not fully tested, but changes have been made to the loading code which should permit this and future versions of XPPython3 to run on X-Plane 11. Though few, if any, new features are available to XP11 users, this would mean Python version 3.12+ would be usable for X-Plane 11.
- Fixes
Incorrectly converted AcceptParent widget message when using
xp.fixedLayout()(this is rare). Updated documentation for this function as well.
4.1.0 (2-Apr-2023)¶
- New Features
Weather Module SDK400 introduced XPLMWeather which provides
xp.getMETARForAirport()andxp.getWeatherAtLocation().Sound Module SDK400 introduced XPLMSound which provides the ability to easily play 3d sound using
xp.playPCMOnBus()and related functions.DataRef Query functions added by SDK400.
xp.countDataRefs(),xp.getDataRefsByIndex(), andxp.getDataRefInfo().Avionics Draw times now contribute XPPython3 performance calculation. Time spent within avionics draw callbacks is added to the “Drawing Misc.” time. See Plugin Performance.
SDK401 supported. X-Plane SDK400 had a c-compiler compatibility issue which has been fixed in SDK401 – there was no additional functionality in this SDK version.
- Improvements
Authorize XPL script changed slightly to update the XPL file found in same folder hierarchy as the script. Previously, it relied on the location of the script with the same script id. Unfortunately, if you had multiple copies of the script on your computer, click on one of the copies might actually execute in the folder of a different copy.
Disabled means disabled. If you disable your python plugin (perhaps by returning zero in response the the XPluginEnable request.) We’ll no longer forward messages to you, or attempt to disable your plugin when reloading or shutting down. However, if you reload all plugins, we’ll attempt to re-enable your plugin.
CommandCallback error processing improved: if you write a CommandCallback which fails to return required 0 or 1, we’ll report the error more clearly.
Internal Python Dicts changed.
modulesdict now uses module name as the key instead of plugin info tuple. This allows us the change plugin information dynamically. PyCapsule names have been changed to match their original C datatype.
- Fixes
Changed python2 compatibility check. Formerly, if we discovered PythonInterface (python2) plugin running, we would block loading XPPython3 plugin, to avoid compatibility issues. It appears PythonInterface and XPPython3 can run together under Windows. On other platforms it appears to fail. Rather than stopping XPPython3, we now just issue a warning (and you’re on your own!)
4.0.0 (2-Jan-2023)¶
- Note
Supports Python 3.10 and 3.11 only. Please upgrade your python installation. We’ll likely add 3.12 once it’s fully released (scheduled for late 2023)
XPPython3 v3.1.5 is the final release for X-Plane 11.
- New Features
SDK400: This is the first version of the updated SDK for X-Plane 12 (and is why this will not work with older versions of X-Plane.)
Python 3.11 support required some internal changes. You should not need to change any of your plugins.
ImGui 1.8.2 widget library is now supported (and included). See Using ImGui. This is an upgrade from previous v1.4.6.
- Improvements
Reorganized documentation. This on-line documentation has been reorganized with new sections added to (I hope) make writing plugins easier. Also Table of Contents section (left side of every page) now shows your progress through all the information.
3.1.5 (9-Sep-2022)¶
- Note
This release does not support python 3.6 which has reached end-of-life. Use XPPython3 v3.1.4 if that is required.
This release will be the last to support python 3.7, 3.8, 3.9. Most users have moved to 3.10 & I suggest you do as well.
This release is compatible with X-Plane 12. It does not support any X-Plane 12 specific features. (E.g., SDK 400+). As X-Plane 12 beta releases evolve we may see issues, please let me know.
- New Features
Universal Binaries for Mac Python 3.10 and Python 3.9 versions of XPPython3 support x86 (Intel) and newer ARM (M1 Silicon) architectures using the same binary file. Other versions of python support only the older Intel processor.
- Fixes
Removed xpyce cryptography feature. While the encrypting python works great, it is way to easy to obtain decrypted byte-code in a running process and decompile it back to reasonable source code. I’ve removed this feature as it might give a false sense of security. If encrypted python is important to you, use Cython and generate per-platform binary files.
Fixed download bug in
zip_download.py. This was not an issue with X-Plane 11, but X-Plane 12 is more sensitive about access from non-main threads. The download routines (used to update XPPython3) used a child thread to write to the popup dialog box to indicated download status. This worked with X-Plane 11, but failed with X-Plane 12. An alternative implementation is provided which works for both.
- Improvements
Reload Plugins, now even better for development. We record timestamps of all python modules on loading. When Reload is called, we first disable and stop all python plugins, do some internal cleanup of data-structures, then reload all python plugins, and all changed python modules. Finally, all python plugins are re-Enabled, and re-Started. Reloaded modules are enumerated in the log file.
Updated Stub Files with full type-hinting are available as a separate download. Their use is documented in XPPython3 Stubs.
XPPython3 Preferences file documented, useful for debugging. See Preferences File.
3.1.4 (19-Feb-2022)¶
- Fixes
print() regression: Fixes problem created in v3.1.3 where python stdout and stderr where not redirected to XPPython3Log.txt. For 3.1.3, python stdout and stderr went to X-Plane stdout and stderr, which (for most people) is really inconvenient. Now
print()output is sent to XPPython3Log.txt file, just as it used to prior to v3.1.3. (Also fixes the use of standard pythonloggingmodule, which normally writes to stderr: it will also now correctly write to XPPython3Log.txt.)
3.1.3 (2-Feb-2022)¶
- New Features
Reload Plugins support. Added back the “Reload Scripts” which reloads updated python code and restarts all plugins.
xppython3.ini config file. Mostly to enable detailed plugin debugging, an initialization file allows for setting some run-time parameters for the main XPPython3 plugin. File is optional, and located in
Output/preferences.
- Improvements
Error reporting now occurs primarily into the XPPython3Log.txt file. Previously, some python coding errors resulted in messages to stderr.
Improved performance reporting for python plugins: we’re able to track and display a greater percentage of time spent by each python plugin, resulting in more accurate reporting.
- Fixes
xp.setGraphicsState()keyword parameter name has been corrected. WasnumberTextUnits, now correctly spellednumberTexUnits. If you use just positional parameters, you’ll not see the error.xp.createWidget()keyword parameter name has been corrected. Wasclass, nowwidgetClass. (class is a reserved word.)Linking code change allows XPPython3 to run on older MacOS (minimum required: Mojave - 10.14). Mojave support is deprecated and is enabled now merely to aid transition. It will likely not be support with X-Plane 12.
3.1.2 (7-Dec-2021)¶
- Fixes
Python updater script sometimes failed to successful download updated software. If your software is “stuck” and not updating, delete XPPython3 folder, and reinstall by downloading the latest version. See Other Versions of Python and get the version which matches your version of Python.
3.1.1 (7-Dec-2021)¶
- Fixes
createWindowEx() ordering of keyword parameters was incorrect.
3.1.0 (4-Dec-2021)¶
- New Features
Support for Python 3.10. Because my life just isn’t complicated enough.
Added script to simplify Mac Installation (removing quarantine flag). See Mac Quarantine.
Made interface more “pythonic”:
Added keywords for all parameters (e.g.,
xp.getWindowGeometry(windowID=xxx))Made many parameters optional (e.g.,
xp.createWindowEx(visible=1, draw=MyDraw))Documented with doc strings, so when used with Mini Python:
>>> help(xp.windowIsPoppedOut) windowIsPoppedOut(windowID) Returns 1 if window is popped-out, 0 otherwise
Older interface still works, but will never support keywords or optional parameters:
>>> import XPLMDisplay >>> windowID = XPLMDisiplay.XPLMCreateWindowEx(100, 200, 200, 100, 1, ... None, None, None, None, None, ... XPLMDisplay.xplm_WindowDecorationRoundRectangle, ... XPLMDisplay.xplm_WindowLayerFloatingWindows, None))
vs:
>>> import xp >>> windowID = xp.createWindowEx(1, 200, 200, 100)
- Improvements
Upgraded Mini Python plugin which supports resizable debugging window and full language scripting, see Mini Python Interpreter. (You’ll need to re-download Samples and copy updated PI_MiniPython.py if you want to use it.)
Hundreds of documentation improvements, providing executable examples of most SDK functions, and documenting the dozen or so interfaces where X-Plane does not actually implement the Laminar SDK documentation correctly.
3.0.11 (1-Oct-2021)¶
- New Features
Per-plugin performance window. Amount of time spent, per-plugin, within flight loop or drawing callbacks is recorded and displayed. Now you can see which plugin is slowing your system down, or tune your own plugin to run faster. See Plugin Performance.
- Improvements
Delete former XPPython3.log on startup, if it exists – this to avoid confusion as to which file is the log file. XPPython3 now logs to XPPython3Log**.txt**, as this allows the file to be seen properly as a text file.
Improved error handling: If your python code misbehaves, we’re better at catching the error, printing out where the problem is, and avoiding crashing the whole sim.
Methods XPluginReceiveMessage(), XPluginDisable(), and XPluginStop() are now optional in implemented plugins. Previously, these methods were required, even if all they did was
pass. It’s always good practice to have these methods defined, but no harm if they’re missing.Platform-sensitive updater now loads only the XPPython3 version (mac, windows, linux) you need rather than downloading all versions resulting in a much faster upgrade.
- Fixes
Changed order of python sys.path updates: We now INSERT (rather than APPEND) X-Plane related paths. The result is you’ll have Airplane and Scenery plugin paths first, followed by PythonPlugins directory, followed by XPPython3 directory, followed by the original python path. (No known error related to this, but it seems ‘proper’ to set path like this.
3.0.10 (9-Aug-2021)¶
- Fixes
Race condition caused XPPython3 and X-Plane to crash immediately on startup. Only occurred on some configurations (Known to occur on some Linux and Window 11).
3.0.9 (7-Aug-2021)¶
- New Features
imgui. Seriously. We now support a custom version of the pyimgui python module (included with installation) which permits plugin developers to use imgui to build user interfaces. Much simpler to use than Laminar widgets. See Using ImGui. A demo plugin is included.
“First Time” startup script. On a successful (initial) installation, we:
Create the
Resources/plugins/PythonPluginsfolder, if needed.Download a set of sample plugins into
PythonPlugins/samplesso you can see examples. (We’ve also included a new menu item Download Samples which allows you to re-download the latest set of samples.)Pop-up an “Installation Successful” message
OpenGL test plugin
Py_OpenGL.pyincluded (in samples). OpenGL installation, especially on a Mac, is problematic. MovePI_OpenGL.pyup one level fromPythonPlugins/samplestoPythonPluginsand restart X-Plane and we’ll attempt to automatically load OpenGL, patch Big Sur (Macs only) and provide verbose error log to help diagnose failures. On success, you’ll see a mesmerizing graphic.Note, this is to use OpenGL with python plugins (with or without imgui module). You can still run X-Plane using Vulkan / Metal.
- Improvements
Renamed log file from XPPython3.log to XPPython3Log.txt. This will make it easier to upload the file to x-plane.org which prefers *.txt files.
Improved installation process and documentation. Though there are versions of XPPython3 plugin for different minor versions of Python. The documentation is streamlined for the current 3.9 version of python. Also, see “First Time” startup under new features above.
Added more detailed documentation on use of window positioning code, most applicable to installations which include multiple-monitors. See More about Window Positioning.
- Fixes
Changed built-in sys.path to initialize with absolute rather than relative paths. This allows us to import shared object libraries. (Required to get imgui to work.)
Fixed internal manipulation of reference constants associated with registering command handlers. We need a stable key so we can “find” the correct handler. Previous method of calculating the key was not stable for some reference constants.
3.0.8 (27-Dec-2020)¶
- Fixes
Fixed problem with
XPStandardWidgets.xpMsg_ScrollBarSliderPositionChanged. The incoming message should set param1 to the widget, instead it was setting param1 incorrectly.
3.0.7 (05-Nov-2020)¶
- New Features
Support for python
multiprocessingmodule through the use ofxp.pythonExecutable. Documentation has been update to describe usage, with an example. See Multiprocessing and XPPython3.
- Improvements
Upgrade system now includes progress bar: when you update XPPython3 (after updating to 3.0.7) upgrades will display a popup window with download & verification status. You can use this this ProgressWindow in your own code by importing
XPPython3.XPProgressWindow. (Documentation to be provided.).
3.0.6 (24-Oct-2020)¶
- New Features
Support for Scenery plugins: place your plugins under
Custom Scenery/<..>/plugins/PythonPluginsand it will load on startup. See Global, Aircraft, and Scenery Plugins. Scenery plugins are loaded based on order of X-Plane’sscenery_packs.inifile: if the scenery isn’t loaded, the scenery’s plugin is not loaded.
3.0.5 (17-Oct-2020)¶
- New Features
Detects the existence of python2 PythonInterface plugin and immediately exits XPPython3 with a Fatal Error written to Log.txt: These two plugins cannot run simultaneously: they almost can, but will fail in miserably difficult-to-debug ways. So we don’t even try.
Initial documentation for xpyce, which enables loading of encrypted pyc modules. [This feature has been removed since 3.1.5.]
- Fixes
Fixed problems with
xp.registerDataAccessor(). When accessing a data item which had not yet been defined, sim would crash. Incorrect logic caused accessing data arrays to return incorrect values. Now tested with DataRefEditor plugin. Documentation has been updated to better describe use of accessors.
3.0.4 (15-Oct-2020)¶
- Fixes
Script updater had incorrect logic
3.0.3 (15-Oct-2020)¶
- New Features
Support for Python 3.9
Support for Aircraft plugins: place your plugins under
Aircraft/.../plugins/PythonPluginsand it will load / unload as the user changes their aircraft. Additional documentation to follow.Convenience functions:
xp.log()writes to XPPython3Log.txt, prepends your string with name of calling module.xp.sys_log()writes to Log.txt log, prepends your string with name of calling module.
- Improvements
XPListBox (in demos) improved to automatically wrap long lines: this is used in PI_MiniPython plugin
Better error messages when trying to initialize xpyce – we’ll tell you if you’re missing
cryptographypackage and you’ll be instructed to use Pip Package Installer.
- Fixes
On startup, log may include
Couldn't find the callback list for widget ID <> for message 15. This appears to be harmless. This was due to newly created CustomWidgets not passing the initial “Accept_Parent” message correctly.xp.Msg_MouseWheelmessage incorrectly processed duringxp.selectIfNeeded(), which would result in an error message being sent to XPPython3Log.txt. This has been corrected.
3.0.2 (29-Sep-2020)¶
- New Features
Loading by “packages”. Global plugins are now loaded as part of either XPPython3 or PythonPlugins package. This allows the use of relative package imports by plugins. See Python Packages and Importing.
Improved documentation: added Change Log, added values for enumeration / constants, fixed minor bugs
Initial support for xpyce: enabled loading of encrypted pyc modules. (Documentation xpyce [This feature has been removed since 3.1.5])
- Fixes
Fix for menu items: Each python plugin gets an independent set of menu items, mimicking what X-Plane does. This means one python plugin cannot remove another python plugin’s menu items, and additions / deletions by one plugin do not change the number of items as seen by another python plugin.
3.0.1 (19-Sep-2020)¶
- New Features
PI_MiniPython plugin: allows interactive python within a running X-Plane process. See Mini Python Interpreter
Built-in PIP Package Installer accessible from XPPython3 plugin menu.
Additional API support, mimicking Sandy’s PythonInterface (python2) SDK. Function parameters which are no longer required as part of XPPython3 are now, “accepted” on the interface and ignored, rather than causing an exception: this should simplify porting of older python2 plugins.
3.0.0¶
- New Features
Support for Python 3.6, 3.7, and 3.8 on Mac, Windows 10 and Linux
Support for X-Plane SDK303.
Documentation online at https://xppython3.rtfd.io
