McRogueFace/src
John McCardle 28396b65c9 feat: Migrate to Python 3.14 (closes #135)
Replace deprecated Python C API calls with modern PyConfig-based initialization:
- PySys_SetArgvEx() -> PyConfig.argv (deprecated since 3.11)
- Py_InspectFlag -> PyConfig.inspect (deprecated since 3.12)

Fix critical memory safety bugs discovered during migration:
- PyColor::from_arg() and PyVector::from_arg() now return new references
  instead of borrowed references, preventing use-after-free when callers
  call Py_DECREF on the result
- GameEngine::testTimers() now holds a local shared_ptr copy during
  callback execution, preventing use-after-free when timer callbacks
  call delTimer() on themselves

Fix double script execution bug with --exec flag:
- Scripts were running twice because GameEngine constructor executed them,
  then main.cpp deleted and recreated the engine
- Now reuses existing engine and just sets auto_exit_after_exec flag

Update test syntax to use keyword arguments for Frame/Caption constructors.

Test results: 127/130 passing (97.7%)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 17:48:12 -05:00
..
scripts feat: Add geometry module for orbital mechanics and spatial calculations 2025-11-26 00:26:14 -05:00
ActionCode.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
Animation.cpp feat: Exit on first Python callback exception (closes #133) 2025-11-26 10:26:30 -05:00
Animation.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
CommandLineParser.cpp feat: Migrate to Python 3.14 (closes #135) 2025-11-26 17:48:12 -05:00
CommandLineParser.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
Common.h Refactor: Python 3.12, build libtcod & SFML from source. Cmake build. Directory cleanup 2024-02-24 22:48:39 -05:00
GameEngine.cpp feat: Migrate to Python 3.14 (closes #135) 2025-11-26 17:48:12 -05:00
GameEngine.h feat: Migrate to Python 3.14 (closes #135) 2025-11-26 17:48:12 -05:00
HeadlessRenderer.cpp Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
HeadlessRenderer.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
IndexTexture.cpp Refactor: Python 3.12, build libtcod & SFML from source. Cmake build. Directory cleanup 2024-02-24 22:48:39 -05:00
IndexTexture.h Refactor: Python 3.12, build libtcod & SFML from source. Cmake build. Directory cleanup 2024-02-24 22:48:39 -05:00
McRFPy_API.cpp feat: Migrate to Python 3.14 (closes #135) 2025-11-26 17:48:12 -05:00
McRFPy_API.h feat: Migrate to Python 3.14 (closes #135) 2025-11-26 17:48:12 -05:00
McRFPy_Automation.cpp Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
McRFPy_Automation.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
McRFPy_Doc.h feat: add documentation macro system header 2025-10-30 11:16:44 -04:00
McRFPy_Libtcod.cpp Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
McRFPy_Libtcod.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
McRogueFaceConfig.h feat: Exit on first Python callback exception (closes #133) 2025-11-26 10:26:30 -05:00
Profiler.cpp feat: Add comprehensive profiling system with F3 overlay 2025-10-25 00:45:44 -04:00
Profiler.h feat: Add comprehensive profiling system with F3 overlay 2025-10-25 00:45:44 -04:00
ProfilerOverlay.cpp feat: Add comprehensive profiling system with F3 overlay 2025-10-25 00:45:44 -04:00
PyAnimation.cpp docs: convert Phase 2 classes to documentation macros (Animation, Window, SceneObject) 2025-10-30 17:03:28 -04:00
PyAnimation.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
PyCallable.cpp feat: Exit on first Python callback exception (closes #133) 2025-11-26 10:26:30 -05:00
PyCallable.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
PyColor.cpp feat: Migrate to Python 3.14 (closes #135) 2025-11-26 17:48:12 -05:00
PyColor.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
PyDrawable.cpp feat: convert PyDrawable properties to documentation macros 2025-10-30 12:22:00 -04:00
PyDrawable.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
PyFont.cpp docs: convert Phase 1 classes to documentation macros (Color, Font, Texture, Timer) 2025-10-30 16:59:40 -04:00
PyFont.h Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
PyObjectUtils.h Iterators, other Python C API improvements 2025-05-31 09:11:51 -04:00
PyPositionHelper.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
PyRAII.h Iterators, other Python C API improvements 2025-05-31 09:11:51 -04:00
PyScene.cpp Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
PyScene.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
PySceneObject.cpp docs: convert Phase 2 classes to documentation macros (Animation, Window, SceneObject) 2025-10-30 17:03:28 -04:00
PySceneObject.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
PyTexture.cpp docs: convert Phase 1 classes to documentation macros (Color, Font, Texture, Timer) 2025-10-30 16:59:40 -04:00
PyTexture.h Squashed commit of the following: [alpha_streamline_1] 2025-07-05 18:56:02 -04:00
PyTimer.cpp docs: convert Phase 1 classes to documentation macros (Color, Font, Texture, Timer) 2025-10-30 16:59:40 -04:00
PyTimer.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
PyVector.cpp feat: Migrate to Python 3.14 (closes #135) 2025-11-26 17:48:12 -05:00
PyVector.h feat: Add Vector convenience features - indexing, tuple comparison, floor 2025-11-26 09:37:14 -05:00
PyWindow.cpp docs: convert Phase 2 classes to documentation macros (Animation, Window, SceneObject) 2025-10-30 17:03:28 -04:00
PyWindow.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
PythonObjectCache.cpp Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
PythonObjectCache.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
Resources.cpp Adding text functionality to Caption (why was that missing???) 2024-03-07 12:35:07 -05:00
Resources.h Adding text functionality to Caption (why was that missing???) 2024-03-07 12:35:07 -05:00
Scene.cpp Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
Scene.h Squashed commit of the following: [interpreter_mode] 2025-07-05 17:23:09 -04:00
SceneTransition.cpp Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
SceneTransition.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
Timer.cpp feat: Exit on first Python callback exception (closes #133) 2025-11-26 10:26:30 -05:00
Timer.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
UI.h Squashed commit of the following: [break_up_ui_h] 2024-04-20 10:32:04 -04:00
UIArc.cpp feat: Add UILine, UICircle, and UIArc drawing primitives 2025-11-25 21:42:33 -05:00
UIArc.h feat: Add UILine, UICircle, and UIArc drawing primitives 2025-11-25 21:42:33 -05:00
UIBase.h fix: update child class property overrides to use MCRF_PROPERTY macros 2025-10-30 12:33:27 -04:00
UICaption.cpp fix: update child class property overrides to use MCRF_PROPERTY macros 2025-10-30 12:33:27 -04:00
UICaption.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
UICircle.cpp feat: Add UILine, UICircle, and UIArc drawing primitives 2025-11-25 21:42:33 -05:00
UICircle.h feat: Add UILine, UICircle, and UIArc drawing primitives 2025-11-25 21:42:33 -05:00
UICollection.cpp fix: Make UICollection/EntityCollection match Python list semantics 2025-11-26 08:08:43 -05:00
UICollection.h fix: Make UICollection/EntityCollection match Python list semantics 2025-11-26 08:08:43 -05:00
UIContainerBase.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
UIDrawable.cpp feat: Add UILine, UICircle, and UIArc drawing primitives 2025-11-25 21:42:33 -05:00
UIDrawable.h feat: Add UILine, UICircle, and UIArc drawing primitives 2025-11-25 21:42:33 -05:00
UIEntity.cpp Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
UIEntity.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
UIEntityPyMethods.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
UIFrame.cpp fix: update child class property overrides to use MCRF_PROPERTY macros 2025-10-30 12:33:27 -04:00
UIFrame.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
UIGrid.cpp fix: Make UICollection/EntityCollection match Python list semantics 2025-11-26 08:08:43 -05:00
UIGrid.h fix: Make UICollection/EntityCollection match Python list semantics 2025-11-26 08:08:43 -05:00
UIGridPoint.cpp Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
UIGridPoint.h Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
UILine.cpp feat: Add UILine, UICircle, and UIArc drawing primitives 2025-11-25 21:42:33 -05:00
UILine.h feat: Add UILine, UICircle, and UIArc drawing primitives 2025-11-25 21:42:33 -05:00
UISprite.cpp fix: update child class property overrides to use MCRF_PROPERTY macros 2025-10-30 12:33:27 -04:00
UISprite.h Squashed commit of the following: [alpha_presentable] 2025-07-15 21:30:49 -04:00
UITestScene.cpp Squashed commit of 53 Commits: [alpha_streamline_2] 2025-07-09 22:41:15 -04:00
UITestScene.h Refactor: remove "s" prefix from "sRender" method ( -> "render") Closes #44 2024-04-20 14:16:14 -04:00
main.cpp feat: Migrate to Python 3.14 (closes #135) 2025-11-26 17:48:12 -05:00