Infernux 0.1.3
Release date: April 2026
Highlights
- Rendering CPU overhead slashed — A comprehensive optimization pass across the entire C++ render pipeline eliminates ~5 ms/frame of CPU overhead for 14,400-object scenes, bringing frame times down to the ~4 ms range. Optimizations include DrawCall caching, zero-copy shadow passes, shared_ptr elimination, and EndFrameCache fast-path.
- O(N²) startup stall fixed —
ProcessPendingStartswas quadratic; 10,000 objects caused a ~15 s stall. Now O(N) with integer ID + bulk pre-allocation. - Physics batch optimization — Deferred body creation, batch broadphase insertion, and
snprintf-based GUID generation cut physics setup costs significantly. - Player build 67 MB lighter —
av/ffmpegare now excluded from standalone player builds when unused. - Large-scale code quality pass — Silent
except Exception: passblocks removed across the Python layer; bootstrap/undo/inspector modules split into focused packages; C++ quick-win quality improvements applied.
Performance
C++ Renderer Pipeline
- Eliminate
shared_ptrcopy storm in DrawCall pipeline — all hot-path signatures now takeconst&or raw pointers. - Renderable/draw-call caching with dirty flags — skip full rebuild when scene is stable.
- EndFrameCache fast-path — avoid redundant end-of-frame copies;
const&matrices in loop bodies. - Merged single-pass rendering where separate passes were unnecessary.
- Zero-copy game shadow — shadow draw lists reference existing data instead of copying.
- Skip stale draw-call writes for objects whose transforms haven't changed.
- Eliminate redundant per-frame copies; static-object memcmp fast-path.
- Skip editor culling when only game prepare is needed.
- Reduce render submission and cleanup overhead.
- Cache shadow filter + sort results;
is_sortedearly-out; skipEnsureObjectBuffersfor stable scenes.
C++ Scene & Physics
ProcessPendingStartsO(N²) → O(N) — eliminates ~15 s stall on 10,000 objects.- Integer ID + bulk pre-allocation for creation hot path.
- Physics batch optimization + deferred body creation.
snprintf-based GUID generation replacing string stream.TransformBatchHandle,m_anyWorldMatrixDirtyflag,ComputeWorldBoundscache.- Batch creation with shared mesh deduplication.
Python Editor
i18n,build_settings_panel,inspector_componentsoptimized (complexity scores < 500).- Editor performance and Python stability improvements.
Improvements
Build & Packaging
- Exclude
av/ffmpegfrom player builds (~67 MB saved). - No-JIT mode fixes —
csvstdlib import, numba requirement stripping, JIT default off. - BuildSettings JIT toggle UI.
Editor
- Texture picker Assets-only filter with popup height limits.
- ProjectPanel keyboard shortcuts.
- Minor editor UI theme/icon/ImGui updates.
Code Quality
- Silent exception removal — Batch removal of
except Exception: passpatterns across the Python codebase, replaced with proper error handling or explicit logging. - Module split —
bootstrap_inspector,bootstrap_hierarchy, andundoextracted into focused packages. - C++ Phase 1 quick-wins — magic number extraction, const-correctness, naming consistency.
- Phase 2 shared helpers — extracted shared scene and inspector helpers to reduce duplication and coupling.
- Deduplicated undo py-component commands, inspector UI helpers, and tooltip boilerplate.
- Extracted bootstrap wiring modules and table-driven undo snapshots.
- Engine renderer duplicate helper definitions consolidated.
Bug Fixes
- Fix editor panel bugs, UI prefab canvas tracking, and drag-drop improvements.
- Fix
begin_childborder argument and BuildSettings JIT toggle. - Fix transform undo, enum iteration,
Engine.instancesingleton access, and texture search scope. - Fix no-JIT mode build —
csvstdlib, numba requirement stripping, default JIT off. - Fix test file hotfix.
Upgrade Notes
- No breaking API changes. This release is fully backward-compatible with 0.1.2.
- JIT default changed: JIT is now off by default in build settings. Toggle it on explicitly in BuildSettings if your project uses
@njit. - Player builds smaller: If your deployment pipeline relies on
av/ffmpegbeing bundled, add them back explicitly in your build configuration.