Starting with Python 3.12, passing a PyLong into Py_SIZE() triggers an
assertion. PyLong (and the whole C API) is transitioning to be more
opaque and expose fewer implementation details.
This was a regression in bf65624298 that caused crashes on startup in static builds due to the "small" DeletedBufferChain array not being initialized early enough
For some reason it wasn't being constant-initialized, it is now by setting the _buffer_size field to 0 initially and changing it later in get_deleted_chain
This vector implementation does is optimized for the case of having only a small number of elements, which are stored directly on the vector object rather than being allocated from the heap. If the capacity exceeds this small number, then a heap allocation is done.
This should improve performance in a couple of cases where vectors typically store 1 element and rarely more than that.
Fewer function pointer calls by moving the wrapper creation logic to the downcast function
This also paves the way for some classes to have custom wrapper creation logic
The Blowfish cipher is no longer available on OpenSSL 3.x by default. It requires enabling the legacy cipher suite, which is compiled separately from the main OpenSSL library. AES-256 is a good replacement cipher that has hardware support in most newer computers. AES-256 is also available in OpenSSL 1.0.2.
Enabled with `pstats-python-profiler 1`, requires recent version of PStats server.
Currently, it is limited to the main thread only. Support for other threads may be added at a later date.
This isn't used anywhere in the Panda source anymore, and is considered out-of-scope for Panda. Python users can use the XML parsing library that's shipped with the Python source (or any other one on PyPI), and C++ users can just pull TinyXML into their projects directly.
If there really is a strong call to bring this back, I'd rather do it as an external package.
Closes#1379