SDK 1.9.3 Release

I’m excited to announce that version 1.9.3 of the Panda3D SDK is now available. This release fixes a significant number of bugs that remained in the 1.9 branch, and I would encourage everyone to upgrade as soon as possible.
The original plan was that the next release would be 1.10.0, but the number of stability issues that we found were enough to warrant another stable release.

Experimental wheel distribution

We’ve been working hard on an oft-requested feature: the ability to install Panda3D using the pip package manager. This method makes it vastly easier for people who already have a Python installation set up to install Panda3D and get started, since there is no longer a need to download and install the Panda3D SDK installer.
I’m excited to announce that this work has now been completed. It is now possible to type this command to install Panda3D 1.9.3 into an existing Python 2.7 installation:
pip install panda3d
This is also designed to work in a virtualenv, which is a great way to test a particular version of Panda3D without otherwise affecting your system.
This is still very experimental, so we don’t quite recommend using it for production yet, but we would encourage you to try it out and let us know how well it works for you. It is also only supported on Python 2.7 so far. We plan on uploading wheels for other Python versions in the future.
The sample programs are not included, so those still need to be downloaded separately. These can be downloaded here.

Compatibility on macOS

Of particular note is that the macOS build will now work with any compatible Python installation, not just the Python installation that comes with macOS out of the box. It still needs to be the same version as the one that the Panda3D build was created with, of course, so the downloadable SDK build for Mac OS X 10.7 and above still requires the use of Python 2.7.
Formerly, people who used homebrew to install an additional Python build would run into a crash when attempting to use Panda3D with their other Python installation.
The lowest supported version of macOS is still 10.6 “Snow Leopard”, however, we are considering dropping support and making 10.7 “Lion” the earliest supported version. Please let us know if you are still using Snow Leopard and would like us to continue supporting it.

Debugging symbols for Windows

We now offer the .pdb files that were produced by Microsoft Visual C++ as part of the build process in separate .zip downloads on the download page. These are useful for C++ developers on Windows who would like to debug Panda3D applications, as well as for Python developers who encounter a crash in Panda3D and would like to help by providing a stack trace.

Release Notes

Now follows a more-or-less complete list of changes in the 1.9.3 version:
* Fix crash when using homebrew Python on Mac OS X
* Fix crash when running in Steam on Linux when using OpenAL
* Fix crash using wx/tkinter on Mac as long as want-wx/tk is set
* Fix loading models from ‘models’ package with models/ prefix
* Fix random crashes in task system
* Fix various race conditions causing threading issues
* Fix memory leaks in BulletTriangleMesh
* Fix loading old models with MovingPart
* Improve performance of CPU vertex animation somewhat
* Show framebuffer properties when fbprop request fails
* Show error instead of crash on use of object before __init__
* Fix hang on exit when using Python task on threaded task chain
* Fix inability to get RGBA renderbuffer in certain cases
* Work around GLSL issue with #pragma and certain Intel drivers
* Improve performance of texture load and store operations
* Fix crashes with pbuffers on Intel cards on Windows
* Support for Autodesk Maya 2016.5
* Add shadow-depth-bits config var to control shadow map depth
* Fix cull issue when rendering cube map (or any multi-lens setup)
* Fix crash rendering with the same camera to different contexts
* Fix compile error when making static build with DX9 renderer
* Fix assertion when using aux render targets in DX9
* Work around Cg bug generating invalid ASM for saturated tex loads
* Fix issues with certain Cg shader inputs in DX9
* Support uint8 index buffers in DX9
* Fix occasional frame lag when loading a big model asynchronously
* Fix interrogate parsing issue with “const static”
* Add back missing libp3pystub.a to Mac OS X SDK
* Fix RAM caching of 2D texture arrays
* Fix Ctrl+C interrupt propagation to runtime applications
* Support for InvSphere, Box and Tube solids in bam2egg
* Preserve “intangible” and “level” collide flags in bam2egg
* Add normalized() method to vectors
* asyncFlattenStrong with inPlace=True caused node to disappear
* Fix asyncFlattenStrong called on nodes without parent
* Fix is_playing() check when playing an animation backwards
* Windows installer no longer clears %PATH% if longer than 1024 chars
* Fix inoperative -tbn/-tbnall/-tbnauto options in egg-optchar
* Fix tinydisplay texture errors on shutdown
* Fix mipmap filtering issues in tinydisplay renderer
* Fix exception when creating intervals before ShowBase is started
* Fix rare X11 .ico cursor bug; also now supports PNG-compressed icons
* Add keyword argument support to make() methods such as Shader.make()
* Fix compilation errors with Bullet 2.84
* Fix exception when trying to pickle NodePathCollection objects
* Fix error when trying to raise vectors to a power
* GLSL: fix error when legacy matrix generator inputs are mat3
* Now tries to preserve refresh rate when switching fullscreen on Windows
* Fix back-to-front sorting when gl-coordinate-system is changed
* Now also compiles on older Linux distros (eg. CentOS 5 / manylinux1)
* get_keyboard_map now includes keys on layouts with special characters
* Fix crash due to incorrect alignment when compiling Eigen with AVX
* Fix crash when writing 16-bit .tif file (now silently downsamples)