Repository navigation
Adds documentation to codebase, and todos - #6
Merged
Merged
Conversation
cppcooper
added a commit
that referenced
this pull request
Oct 30, 2026
* Replaces archived V3 files with the modern development baseline
Retires the superseded V3 source snapshot while preserving it in main ancestry. Restores the pre-development tree from 617533a986614b07992a6baa596e15a89b016907 so the 58 modern development commits can be replayed with their original changes and snapshots, without retaining obsolete V3-only files.
* Adds extern/googletest
* Adds extern/ctti
* Adds extern/backward-cpp
* Adds extern/spdlog
* Adds extern/gainput
* Adds extern/stb
* Adds extern/glad
* Adds extern/glm
* Adds extern/glfw
* Adds extern/json
* Adds CMakeLists.txt (configured)
* Adds enum headers
* Adds maths headers
* Adds cgl.h header wrapper for glad/gl.h
* Adds internal macros
* Adds internal/exceptions
* Adds Singleton template
* Adds logging
* Adds remaining internals
* Adds Block template
* Merges branch feat-mem into main
Note: [important] this commit is copied from another repo with a different state, not all of these commits are important.
Squashed commit of the following:
commit 3b1297b7de5409d2ac899b781b02126fa14b1743
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Thu Jun 27 09:02:59 2024 -0700
Adds include to scene_nodes.h in v1
commit 76179ab865f78838e6d4a7416c9d17ad820f75a5
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Jun 18 11:18:04 2024 -0700
Implements some code for testing object pooling (incomplete test)
commit e6e6183cbfef6ff499512b8a6e665367cd3b99bb
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Jun 18 11:17:01 2024 -0700
Fixes a bug caused by Mem::Manager<>::erase_all()
also fixed a calculation error for the stats method
commit 1eb4d17d7a83888bccb02d48ebf51d92405150e1
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Jun 18 10:44:55 2024 -0700
Fixes mismatched delete function
commit dd5bb6b29ad6352cf28a5f26cf296eef6f8a4f9c
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Jun 18 10:44:20 2024 -0700
Adds UBSan to debug builds
commit 8f8a3064022cc58e2a47d5d7453e039d1872b328
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Jun 17 16:48:49 2024 -0700
Updates TEST(resources, objpool)
commit b8c949da1a8a797346a5a197ac0fede58ce9e121
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Jun 17 16:48:16 2024 -0700
Fixes errors
commit b6a297144701a60f451144c7df2c3ab054d6df82
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Jun 17 16:28:45 2024 -0700
Renames gtest suite, and adds to it
commit 3fa9879e16f492b36d4658bd0c131efd61134fc1
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Jun 17 16:27:12 2024 -0700
Removes deprecated includes
commit 0b0a12833b4942e9f38b4c34f4ec8c827dfebd98
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Jun 17 16:26:33 2024 -0700
Fixes type error
commit 6b3219187a69b0747a10ad9ae60fafd57219b88e
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Jun 17 16:01:45 2024 -0700
Refactors managers directory
commit 58904fc1b3538e7901772024bde1329990f45541
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Jun 17 15:42:19 2024 -0700
Refactors namespace Objects => Obj, also renames object-* files
commit 32ab1871f524220ff0efac143bbaa158c6b255f1
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Jun 17 11:10:25 2024 -0700
Implements the Pool<>::release method
commit ee7520654a26cb5349753651f79cc3b4153ff254
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Jun 17 11:09:41 2024 -0700
Adds Mem::BlockRange::get_length()
commit 148cf77c585bc4b2a9f7ec43864bf9e1e6b0bf57
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Jun 17 11:08:05 2024 -0700
Adds a stack trace to critical logs
commit 621cd6c740e004a43b995fed9fd857163f907cc2
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Jun 14 09:57:45 2024 -0700
Refactors in_use map to be ordered and keyed by Mem::BlockRange
commit b16934557953d0fb7680611bebc129635bd555a2
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Jun 14 09:56:47 2024 -0700
Fixes memory alignment calculations
commit 7ca8330cba4a17fe7be2a076ab3054b304b99455
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Jun 14 09:54:26 2024 -0700
Simplifies how BlockRanges are compared
commit 6b42c8f00abf1c3a2dd7c66bc9682a2cd600bd4c
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Jun 11 23:40:23 2024 -0700
Refactors CE::Objects::ObjectBlock => CE::Objects::Block
commit d53c8b7c3754d63f91513728eacede01f622e2a2
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Jun 11 23:36:50 2024 -0700
Adds Mem::BlockRange struct and comparison operator
commit eb2c2a91aa2e97a1d716a1c6149ee183c9fe5a8d
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Jun 11 23:36:11 2024 -0700
Updates main.cpp
commit 075f15df45af9fedaa8df6dbd39d2b513bef47e8
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Jun 11 23:35:55 2024 -0700
Implements Factory
commit d869aea47be236752e365a8e7438d95d925130ef
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Jun 11 23:35:03 2024 -0700
Deletes unused pool code ported from v2
commit 09d8106e1c15536dcd2bca4928766609e3877a9e
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Jun 11 09:54:57 2024 -0700
Adds static asserts for the template params
commit b062cba298464161339fecf8588f67de12cfeea8
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Jun 4 10:15:38 2024 -0700
Deletes unused header
commit 2f147da7eebf01e0c00b35cf7fac63872f70966c
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Jun 4 10:10:54 2024 -0700
Minor changes
commit 1cfa5a18b9b88ceb7fb469bc87ca1e127027601f
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Jun 4 10:10:37 2024 -0700
Removes unused code
commit 40606d13ef3ac38430b80d8315ba3a0ed4743c7e
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Jun 4 10:04:30 2024 -0700
Minor revisions to memory manager
commit 8f584809774ac740c6eb3a433d36bf74b582d241
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Jun 4 10:04:18 2024 -0700
Implements object pooling
commit 1649346210ad613efca33f87726db80869a9a958
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sat Jun 1 11:19:14 2024 -0700
Implementing object pooling
commit 0e4ef09a0c227706b7e98d59a6f3fc443b3e2124
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sat Jun 1 11:18:44 2024 -0700
Refactors return method
commit d7b97b72e794ef5655653908c127882a54a470b3
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sat Jun 1 01:40:24 2024 -0700
Updates
commit 284fb36940ed06f634601991e386b63c1a996ba7
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Wed May 29 16:06:56 2024 -0700
Fixes?? memory manager and tests..?
commit eaf0a2e76c8dc3a22d14006c7be7169452265b0b
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Wed May 29 11:50:47 2024 -0700
Improving tests, updating memmgr implementations (checkout,split)
commit 033673e5c848ce41e528968bdbc5dba64b84ac3c
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue May 28 17:14:09 2024 -0700
Updates Memory Manager
commit b8ff0c741087140ecfaabd8e03413b25fd8df2be
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon May 27 23:44:54 2024 -0700
Updates test
commit 91bd7ed759fd71bae47680c653ab31fe82eb24ed
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon May 27 23:08:58 2024 -0700
Implements Memory Manager test
commit f8d55874242342481bd90e419e5b49e9600744d4
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon May 27 23:03:48 2024 -0700
Silly little scope change
commit e374b6a2064b5db07804863dd91d978315c716c2
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon May 27 23:00:05 2024 -0700
Re-awakening the spdlog test
commit ecc83ea8012069eedd90e3a02ab8a26e56077ba6
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon May 27 22:59:31 2024 -0700
Establish pattern for log lines
commit c565db909a60f041a5759fb2f895946e955841e7
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon May 27 18:21:51 2024 -0700
Implements mem mgr?
commit dba94be1e84895e107b88ff06108454fdd475edc
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon May 27 18:21:13 2024 -0700
Updates mem-mgr documentation, member order, etc.
commit 3cae9a4c305845d7921335344585f24d70c38f8b
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon May 27 18:19:43 2024 -0700
Integrates stack tracing at the Log level for debugging
commit 71791baad1c26ff5104ec657512202269f41eec0
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue May 14 19:16:29 2024 -0700
implementing mem mgr
* Merges branch feat-objects into develop
On branch develop
Changes to be committed:
new file: include/cheryl/resources/memory/allocators/object-pool-allocator.hpp
new file: include/cheryl/resources/objects/factory.hpp
new file: include/cheryl/resources/objects/object-construction.hpp
new file: include/cheryl/resources/objects/pool.h
new file: include/cheryl/resources/objects/pool.hpp
Note: [important] this commit message below is copied from another repo with a different state, not all of these commits are important.
Merges branch refactor-objpool into main
Squashed commit of the following:
commit 66a983a094896919a8a6713e8d8a3f6d240ba43f
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Sep 17 12:07:14 2024 -0700
Fixes build issues
commit 163c31ea738aa3dc075b343fdece118c82ba532d
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Sep 17 12:00:07 2024 -0700
Completes Pool<T> & Factory<T> implementations?
commit 708920c3c05283646d5c10f29ba0a2e9482a5f12
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Sep 16 22:51:23 2024 -0700
Begins Pool<T> implementation
commit 48d161ee9081afab79386e6b9cbfe3fca5207d3a
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sun Sep 15 10:03:46 2024 -0700
Updates object construction/etc.
commit 39e8003452936dc91580709cbfef29b68ae16613
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sat Sep 14 11:33:13 2024 -0700
Begins implementing Pool<T>
commit dc31dfa0147b72cad434c58de9943ad511fd4e12
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sat Sep 14 11:31:58 2024 -0700
Revises Factory<T>
commit c1252d2408a8ac7f4edaae4a7a58ae0438e65352
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sat Sep 14 11:31:19 2024 -0700
Revises block.h (minor)
commit f3d47334d79d9b93a50540b2a2d7f53e5963d715
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sat Sep 14 11:30:54 2024 -0700
Revises allocators (simplified)
commit 3cbf6a12846544dc9610a0c8f3245945e9be6fa1
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Sep 10 10:26:09 2024 -0700
Updates unit test for backwardcpp
commit 9d4ea717fc4e70ed474f94336e99740606c656f0
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Sep 10 10:18:52 2024 -0700
Implements Mem::Manager::return_portion
commit 0a0a4c36e935680ec60e07b6ef9104d3c656ce7a
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Sep 10 08:53:10 2024 -0700
Completes implementation of templates/block.h testing
commit 3d8cba7d9fc0b8570ab535adcc0ab2fdded26072
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Sep 10 08:52:02 2024 -0700
Fixes compare::RegistryOrder in block.h
commit 6270cad9d4d775e9b7c630f97ecd31819c1c28d6
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Sep 10 08:44:39 2024 -0700
Fixes a check for testing/block.h
commit a7284f00fb36a329816069f6fbdcaaf9388087b8
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Sep 6 11:53:44 2024 -0700
Fixes alignment error on windows
commit ad271572f68708c6b3f8a4b5c13733217ccb6106
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Sep 6 11:53:10 2024 -0700
Ensures sanitizers aren't used for MSVC builds
commit 8b7ee238e1e1e1d19a2ae0b4aa319dd653cd4391
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Sep 6 11:18:39 2024 -0700
Begins reimplementation of Obj::Pool<T>
commit eb06145cbf87711e793bdfed80c5298379c68100
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Sep 6 10:57:58 2024 -0700
Completes Mem::Manager testing
commit f816eab71ce0e059b6cfe8f26bc1d7628551e32e
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Sep 6 00:13:53 2024 -0700
Implements tests for BlockManagement validity checkers
commit 9f4950d50df8c8de8abf41e6589dbb97934c74d3
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Sep 6 00:12:50 2024 -0700
Adds tests/include/
commit ff392859d463898382f5c883a037e8219be8b18b
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Sep 6 00:12:19 2024 -0700
Removes testing code from main includes
commit a783c23796eefcc4253710c663bfa10141201341
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Thu Sep 5 06:45:25 2024 -0700
Fixes tests/code being tested
commit 10a3a769b02220fe7d60edcc0ff8268cb70dfa2e
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Wed Sep 4 19:52:17 2024 -0700
Fixes windows build
commit 1cd6c6e0f73deadc02fa6319fa518e83153c617b
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Wed Sep 4 10:06:49 2024 -0700
Moves static definitions to header
commit e9c4c86eb91e308ee62290c99d7936567cdcc89a
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Sep 3 21:07:07 2024 -0700
Fixes windows build stuff
commit 91ee3521a299dc0dd57bc36bef2ce5946bee3e27
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Sep 3 10:04:53 2024 -0700
Refactors Mem::Manager for last time?
commit 728685e7199dc74e3b76cbe29364a449455988e8
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Sep 3 10:04:23 2024 -0700
Updates pure headers' includes
commit 50ad0e57d05a1ec12bdbc6a27d6a38f3008dd8e8
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Sep 3 10:03:35 2024 -0700
Reorganizes tests directory
commit cb7a94a31daa69de1200251d356a3313cfd58c86
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Sep 2 01:08:47 2024 -0700
Includes reorganization of tests, linkage fixes, etc.
commit 0888a18f678909bf046712949a5f35daac2f8cb5
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sun Sep 1 19:30:48 2024 -0700
Fixes include
commit 840b5a3ab0ae202fe8c9e395686f5e31d66c40ba
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sun Sep 1 19:30:33 2024 -0700
A few more things that will be useful for object pools
commit 0e63ee7dad241995475382069dbb7710157d388c
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sun Sep 1 19:27:45 2024 -0700
Renames obj-pool files to pool
commit c72f467e02b5e930c67ce5e831ef3ed0d398c9dc
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sun Sep 1 13:56:35 2024 -0700
Complete? Test integration remains.
commit f1aef1bafdeed9f2ba5162cb10fea7e8839763b5
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Aug 30 11:52:02 2024 -0700
WIP: refactoring memory manager
commit 2dba1dd9385a40cd15b91e6ca05154e5a91bfac5
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Aug 30 11:51:32 2024 -0700
Removes many defunct functions
commit 0aa4b487d0a8e2e547509f2a6490937dc3d3875d
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Aug 30 11:49:37 2024 -0700
Adds new Block<T> methods & ptr math
commit f9a5b4d59450e5988ab260a91ff12148ec1066ef
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Aug 30 09:43:04 2024 -0700
WIP: refactoring memory manager for new Block<T>
commit 328e7453d07c26f9d414dc0860efa3d17959e598
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Wed Aug 28 12:26:45 2024 -0700
WIP: refactoring memory manager for new Block<T>
commit 61fdd01c959a1d309d8bdd4b9a1679b6060e9daa
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Wed Aug 28 12:25:55 2024 -0700
Refactors Blocks into template code
commit 75c1ce8ae36bbbcc9e44c4114d91229cf858cd8d
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Aug 26 17:12:42 2024 -0700
Refactors Mem::Manager
commit 8ac8778f210253f8395c43cae3692442a3c7c7ef
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Aug 26 17:12:15 2024 -0700
Adds more comparators for Block types
commit 4723589b5cb9a8d8e7bfd790fe0ab32ae235d27e
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sun Aug 25 20:52:03 2024 -0700
Revises allocator_traits + comments
commit 2dc5653095f51543aa052e96dc47ba22ab67dd9f
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sun Aug 25 16:50:17 2024 -0700
Updates various includes
commit ccdf1b4e0fc992cffe6e3de1eba9da4322626c93
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sun Aug 25 16:21:58 2024 -0700
Refactors Factory<T>
commit ea3e0a5e2ad2377d640fd4fdfd032eb64605fa21
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sun Aug 25 16:21:37 2024 -0700
Adds DefaultAllocator
commit be89af3341c39c6f0f0c74afb3facbad28104aea
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sun Aug 25 16:21:14 2024 -0700
Revises pointer math utilities
commit b6239bc902f088eb1af669ae979f7376cfaeff85
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sun Aug 25 16:20:25 2024 -0700
Refactors Mem::Manager & adds BlockPool
commit edf00f11d64969feaaae93a12c0b83b517e46387
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sun Aug 25 16:16:50 2024 -0700
Moves resources files
commit d83da1ff28f4e5981f35bee037ce773f81cab82b
Merge: 350ffeb 9086ac3
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Aug 23 10:27:42 2024 -0700
Merge branch 'fix-submodule-heads' into refactor-objpool
commit 350ffeb8ede21c1ac5046f11efdd9453c5f293ea
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Aug 23 10:16:24 2024 -0700
Refactors Mem::Block, Mem::Manager
commit 13d7d040fd3535daede7e9c2c710958ea44837ff
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Aug 23 10:15:17 2024 -0700
Adds utility functions to support details::fitType
commit 92bc5b6eee1f625041edd51c7e3c1cc92cb8aec1
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Aug 23 10:14:08 2024 -0700
Implements helper functions for pointers
commit 9086ac3f10ad26d3aaa200e4b08328f2204e8ead
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Wed Aug 21 15:03:52 2024 -0700
Changes HEADs for submodules
commit c15144043b3bedf570870bcc91e400a2b7685efc
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Wed Aug 21 12:51:24 2024 -0700
Adds shader-mgr.h and .cpp
commit d6787a02fe2fc98fee947482ec1fb1f0c6e262b8
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Wed Aug 21 12:50:52 2024 -0700
Adds utility headers for pointers
commit 9381064d08fe9fedcaaca1b2f1224fc5718fc73f
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Aug 19 02:35:57 2024 -0700
Refactors Factory::create to static
commit e5eecfe48ee037fd81763479264d4bf427f4f766
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Aug 19 02:32:47 2024 -0700
Adds comments to Obj::Block's operator<
commit 96624004aca0d5ceeabf80bf86b1fb0d7822e0a1
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Aug 19 02:31:47 2024 -0700
Refactors to Obj::Factory::create<N> - adds custom deleter - calls ~T()
commit 42d8cca6bede4b142514f746de8df4fcd7a6718c
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Aug 19 02:30:03 2024 -0700
Refactors to Obj::Pool<T> - adds custom deleter
commit 085071448a09d4cebc8ec9889c2bb4dc0f7df865
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Mon Aug 19 02:28:01 2024 -0700
Refactors Mem::Manager<> size_t growth_base_ -> int32_t
commit 66555fc5207de33062f8a2f6b5ecda2429213787
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sun Aug 18 17:26:56 2024 -0700
Adds iAssetMgr interface for AssetMgr
commit 70fc139d39674c61e9643d03c538ddb8c8b7b30b
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sun Aug 18 17:26:19 2024 -0700
Renames TypeMgr => AssetMgr
commit 55af9687e374d8547668aa64cc1876e9c380cdb7
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Aug 16 21:19:53 2024 -0700
Adds templates/asset-mgr.h
commit d709019e5992d5468407a0f3d452ac5ab6620ea6
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Fri Aug 16 20:20:12 2024 -0700
Updates gfx/assets & primitives - Adds trivial virtual destructors
* Adds primitive assets
* Adds abstract assets
* Adds assets
* Adds DeltaTime template
* Adds FileIO
* Adds asset loading & managers
* Adds missing headers
* Adds Input listening
* Adds OpenGL window/screen management wrappers
* Imports all existing tests
* Adds simple OpenGL engine
* Adds simple game framework
* Flattened Git History Demarcation Point (Adds main.cpp)
* Fixes build errors & test failures
* Merges branch fix-mem-mgr into develop
Squashed commit of the following:
commit b0f4176c3455f5f0dea7dfe04db80e8f664fe707
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sat Nov 9 02:12:19 2024 -0400
Reverts split used in checkout_chunk (test passed)
commit 2d3e057f2ab0b1ad7e47505276096c8aee51d618
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sat Nov 9 02:11:45 2024 -0400
Shortens test duration of memory manager
commit 4d421efcba591b67f99cadad01b88eb58c7c64a5
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sat Nov 9 02:03:08 2024 -0400
Disables debug logging for memory management
commit e09bb6f4cd7ba22902b0323c7c435526cc7e817c
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Sat Nov 9 01:51:46 2024 -0400
Adds/modifies logging and memory management implementation details
commit d29c8da98b0a353ae0f0dd63ddb8888f5b9af684
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Wed Oct 9 18:25:30 2024 -0700
Adds debug logging to memory mgr
commit ca4fdbd84afde793c47b283292a4a2280f2f17dd
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Oct 8 17:15:15 2024 -0700
Adds simple check to ensure no blocks are given twice
commit 739ad1b373723f82f2613105f4fbbf3cfd32a517
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Oct 8 12:45:38 2024 -0700
Merges branch feat-ctlog-internal into fix-mem-mgr
Squashed commit of the following:
commit c1f8ca8355989e7417625290ab9a991ea1add16a
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Oct 8 12:40:51 2024 -0700
Adds pointer hash function to math/pointers.h
commit f1f71f671bb068310b537bb823e1a061f5d31665
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Oct 8 12:40:17 2024 -0700
Updates two headers
commit 2b93db4abb4d5eda4c7862c56d3cbbce0719b41f
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Oct 8 12:39:46 2024 -0700
Adds new logs to internal-logs
commit 3d77118a45815fcac17a6311df619489cb845242
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Oct 8 12:39:26 2024 -0700
Adds internals and math
commit 9cc5e998a69dc7c4bf46f9b7424dde3b386cb128
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Tue Oct 8 12:39:09 2024 -0700
Renames celog.cpp -> internal-logs.cpp
Changes to be committed:
new file: include/cheryl/math/bytes.h
modified: include/cheryl/math/pointers.h
new file: include/cheryl/math/string-numbers.h
modified: include/internals.h
modified: include/internals/celog.h
new file: include/internals/compile-time-logging.hpp
new file: include/internals/internal-logs.h
deleted: src/internal/celog.cpp
new file: src/internal/internal-logs.cpp
commit d26bcf0d0412a3214d6422af9de32ceb35d57b9b
Author: Josh Cooper <cooper.s.josh@outlook.com>
Date: Thu Sep 26 16:15:25 2024 -0700
Fixes calculations, logic, and alignment of splits.
Changes to be committed:
new file: include/cheryl/math/bytes.h
modified: include/cheryl/math/pointers.h
new file: include/cheryl/math/string-numbers.h
modified: include/cheryl/resources/memory/mem-mgr.h
modified: include/cheryl/resources/memory/mem-mgr.hpp
modified: include/cheryl/templates/block.h
modified: include/internals.h
modified: include/internals/celog.h
new file: include/internals/compile-time-logging.hpp
new file: include/internals/internal-logs.h
deleted: src/internal/celog.cpp
new file: src/internal/internal-logs.cpp
modified: tests/executables/gtest/resources/memory.cpp
modified: tests/include/testing/block.h
* Implements game engine/framework systems (#4)
* Adds shaders
* Fixes delta calculation
* Writes todo comment
* Adds templates/observed-variables.h
* Minor edits
* Adds unit test for observed-variables.h
* Fixes implementation of observed-variables.h
* Removes pre/post-update methods from the engine abstractions
* Removes various fluff
* Revises layout of ovar
* Adds ovars to glengine
* Refactors file-directory structures
* Refactors tests' includes
* Adds simple event system
* Adds documentation for event system
* Adds events to link projection matrix calculation to its dependencies
* Fixes problems in glslprogram
* Refactors GLSLProgram methods
* Introduces comments about the refactor goals/decisions
* Adds new headers
* Implements OpenGLRenderer
* Simplifies GLSLProgram
* Adds new OpenGLRenderer implementation
* Fixes build errors
* Implements demo.cpp to test glEngine et al.
several adjustments to the graphics systems were made
- preventing crashes
- ensuring compilation
- ensuring a window would render
- preventing freezing on the swap buffer call
* Incorporates monitor scaling into window sizing
This fix is waiting on glfw to fully implement glfwGetMonitorContentScale
* Adds assets/ to .gitignore
* Removes include guards from some headers to keep headers consistent
* Updates .gitignore
* Refactors Anchor math into CE::math namespace
* Replaces std::round with std::lround calls in opengl-renderer.cpp
* Moves shaders to assets/
* Commits files that are a WIP
* Removes non-existent header from demo.cpp
* Adds version to json manifest schema
* Define and apply asset manifest schema
* Model complete asset manifest semantics
- Expand the 1.0 schema with namespaces, nested grids, pivots, views, orientations, reusable profiles, timed animation clips, and Wang/bitmask autotiles.
- Migrate all seven manifests while preserving every prior atlas entry and physical asset region.
- Apply the verified MiniWorld Swordsman animation profile and actor/projectile pivot behavior.
- Import exact Puny World animation timings and both authored Wang sets from the matching Tiled source.
- Document the loader contract, numeric pivot math, implementation order, and remaining non-blocking artwork metadata.
* Move asset documentation to docs
- Relocate the asset-manifest format guide and remaining metadata TODO out of the runtime asset directory.
- Update the documented schema path for the new top-level documentation location.
* Implement typed asset manifest loading
- Parse and semantically validate manifest 1.0 into GL-independent typed definitions
- Orchestrate texture loading before namespaced sprite and tileset construction
- Preserve numeric pivots, views, orientations, facings, timed animations, and autotile lookup data
- Build shared row-major grid geometry and extend runtime asset accessors and frame handling
- Validate every checked-in manifest with focused headless regression coverage
- Document the runtime flow and remaining animation and tile-map integration work
- Fix shader dispatch, bitmap-font vertex accounting, and integration build dependencies
* Establish and apply C++ code style
- add the CLion-derived clang-format configuration at the repository root
- document formatting, naming, include, and scope conventions under docs
- align the manifest loader and related runtime asset code with repository style
- keep legacy-only files limited to formatting the lines touched by the loader work
- make modernized loader headers self-contained with direct standard-library includes
* Adds *.tar.gz to .gitignore
* Repair system font loading and text rendering path
- link shader2d vertex and fragment stages explicitly while preserving existing shader stage keys
- read and bake system fonts with glyph advances, line metrics, and alpha atlas sampling
- replace core-profile-incompatible 2D quads with triangles and update the demo text path
- cover portable font selection and 2D geometry with focused unit tests
* Use engine exceptions across font and asset code
* Add 2D and 3D cameras with shared framebuffer model
* Connect cameras to display windows and renderer viewport
* Connect GLFW input to Gainput before game updates
* Add interactive camera and input demo
* Add X11 linkage to demo target
* Removes redundant Google Test targets
- Keeps all suites in the existing all-tests executable
- Preserves CHERYL_SOURCE_DIR for manifest fixtures
* Refactors api boundaries & resource management (#5)
* Updates grid geometry to use pixel dimensions
* Revises monitor snapshots to hide GLFW handles
* Updates VAO with deferred GPU cleanup TODO
* Revises display contracts to hide GLFW handles
* Updates engine input to use adapter contracts
* Revises draw data to use a material contract
* Revises 2D assets to submit through geometry adapters
* Updates asset managers to use selected resource providers
* Fixes legacy font vertex ownership during upload
* Revises renderer contracts for camera and frame settings
* Updates engine composition to use rendering adapters
* Fixes asset cache reuse across resource providers
* Adds an alternative runtime adapter integration probe
* Fixes OpenGL header leak through object pool
* Adds optional sandbox build without X11 and Gainput
* Merges fixes-resource-management into refactor-api-boundaries
Squashed commit of the following:
commit
Fixes block lookups and template test isolation
commit
Updates adjacent_left as a protected predecessor lookup
commit
Fixes partial block merges at allocation head
commit
Updates section lookup to use adjacent_left
commit
Exercise resource managers with deterministic invariants
* Adds retained resource release contexts and object reservations
Retain shared pool bookkeeping in object handles and let reservations own only unclaimed Block ranges. Migrate asset and CPU geometry release callbacks, preserve legacy interfaces, and correct batch allocation and constructor failure cleanup. Add lifetime and allocator regression coverage.
* Adds resource ownership and test intent comments
Describe pool state, reservation and allocator contracts using existing class comment style. Annotate lifecycle phases and invariants in the resource and block tests without changing their behavior.
* Updates resource comments for IDE quick documentation
Attach Doxygen comments directly to resource classes, concepts, and key methods. Give each concept its own description while retaining ordinary inline notes for test phases.
* Updates resource tests with phase explanations
Mark setup, state transitions, and resulting invariants inside the block, memory, and reservation tests. Keep assertions and test behavior unchanged.
* Fixes logging crash in gtests
* Adds X11 back into CMakeLists
* Adds phase explanations to remaining unit tests
* Adds documentation to codebase, and todos (#6)
* Adds design review TODO documentation
* Adds concurrency review TODO documentation
* Adds runtime and asset flow documentation
* Adds resource and subsystem flow documentation
* Adds parser and resource lifetime phase comments
* Adds input rendering and asset flow comments
* Fixes frame selection type safety and indexing semantics
- Refactors Frame into a CRTP base that preserves derived return types
- Replaces unsafe reinterpret casting with a checked static downcast
- Removes redundant derived frame-selection implementations
- Adds explicit wrap and clamp frame index policies
- Replaces public reference aliases with value accessors
- Makes Frame inheritance public so frame-selection behavior is part of each derived type's public interface
* Fixes frame indexing policy and interface details
* Exposes inherited numeric Sprite indexing alongside named animation lookup
* Maps animation loop metadata to wrap and clamp frame index policies
* Removes redundant animation validation now enforced by Frame construction
* Removes unnecessary Frame polymorphism and protects base destruction
* Adds direct standard-library dependencies required by Frame
* Fixes typo
* Fixes logging lifecycle, close semantics, and teardown safety (#7)
* Deletes redundant SpriteFrame abstraction
- Replaces the transient SpriteFrame drawable with an internal frame drawing helper
- Draws raw sprite cells and resolved animation cells directly from their owning objects
* Fixes delta timing initialization and sampling semantics
* Initializes the first timing interval at DeltaTime construction
* Keeps elapsed queries independent from interval reset
* Adds explicit check-in semantics for starting a new interval
* Uses a shared clock sample when measuring and advancing through operator()
* Avoids losing time between separate elapsed and check-in samples
* Fixes observed variable callback synchronization
* Snapshots the observed value while holding the write lock
* Invokes callbacks after releasing variable synchronization
* Prevents callback reentrancy from deadlocking on nested writes
* Preserves the value associated with each set operation for observers
* Requires observed values to be copy constructible
* Fixes event listener synchronization
* Snapshots listeners before dispatching callbacks
* Releases listener synchronization before invoking arbitrary callback code
* Prevents callback registration from deadlocking during dispatch
* Uses non-mutating event lookup while holding a shared lock
* Moves registered callbacks into listener storage
* Removes todo comment from Factory::create
* Adds constructor for failed_operation exception
* Updates .clang-format
* Adds logging lifecycle synchronization groundwork
- Adds explicit logger lifecycle states and state requirements
- Adds synchronized lifecycle state access and validation
- Makes logger and sink ownership atomically accessible
- Adds lifecycle-aware resource acquisition
- Begins transactional logger construction and close synchronization
- Removes redundant sink handling from common logger operations
* Revises logging lifecycle and resource synchronization
- Adds explicit logger lifecycle states and state validation rules
- Adds synchronized lifecycle transitions and close waiting support
- Makes logger and sink ownership atomically accessible
- Adds lifecycle-aware resource acquisition
- Preserves log levels for reopening reconstructed resources
- Revises close and reopen around explicit lifecycle state
- Reduces redundant logger and sink access patterns
* Updates .clang-format
* Fixes logger close lifecycle and reopening semantics
- Adds sink-lifetime close completion and condition-variable waiting
- Routes writes through a null fallback while closing or closed
- Makes logger and sink ownership atomically publishable
- Preserves log levels and default logger ownership across reopening
- Makes logger construction transactional with registration rollback
- Serializes lifecycle-sensitive resource and default logger operations
- Moves logging lifecycle helpers into an internal implementation namespace
* Updates logger wrapper lifecycle interface
- Propagates close timeouts through Logger<name>
- Preserves existing zero-argument close calls
- Adds explicit standard-library dependencies for wrapper usage
* Updates logging and resource tests
- Reworks logging tests around lifecycle, close, reopen, timeout, and default-logger contracts
- Adds deterministic coverage for concurrent close and transition states
- Verifies close completion before file inspection
- Exercises compile-time logging during closed and closing states
- Cleans nodiscard warnings in logging, manifest, and memory tests
* Fixes logger destruction and log ID allocation
- Closes logger resources during Log destruction with a bounded timeout
- Preserves sink lifetime safety when external spdlog owners remain
- Removes lingering registry ownership during final teardown
- Hides log ID generation behind a translation-unit-local atomic counter
- Adds destruction coverage to the logging tests
* Revises packed bit storage
- Replaces the byte-specific bit wrapper with generic BitArray storage
- Selects the narrowest fixed-width integer up to native word size
- Uses native-word arrays for larger bit collections
- Preserves writable indexed bit access and binary stream output
- Separates storage policy from the public bit-array interface
* Combines switch cases in fit.h
* Revises packed bit storage and math coverage
- Replaces byte-specific bit access with generic BitArray storage
- Selects compact backing words up to native word width
- Separates bit-reference proxy semantics from BitArray
- Preserves indexed bit reads, writes, proxy assignment, and stream output
- Adds broad math tests for bit arrays and existing math utilities
- Marks math-specific tests that should migrate from other suites
* Updates BitArray word access
- Exposes packed backing storage through mutable and const word spans
- Makes word type, width, and count available as public representation metadata
- Presents single-word and multi-word storage through the same contiguous interface
* Adds BitArray word access and math use-case tests
* Revises unit tests around observable state changes
* Revises remaining tests for readable scenarios and outcomes
* Fixes BitArray proxy access and clarifies test outcomes
* Preserves math boundary coverage from develop
* Revises unit test names for quick scanning
* Separates standalone quads from grid triangle strips
* Runs reformat code on source directories
* Revises runtime, rendering, and resource architecture (#9)
* Adds simple todo for basing a PR
* Adds typed state tracking and versioned observation primitives
* Revises input bindings to publish semantic action snapshots
* Fixes backward stack trace test ordering
* Revises input binding and device state flow
* Updates versioned and observed variable internals
* Fixes camera matrix change detection
* Replaces glm upsteam with correct repository to fix mat4 operator== bug
* Revert "Fixes camera matrix change detection"
This reverts commit b3fccebf9709be13821bc059dcbbc0d3dcfd4635.
* Fixes .gitignore to only ignore /extern/ and not /tests/gtest/extern
* Adds glm mat4 equality test used to validate new glm remote
* Deletes obsolete engine, runtime, and renderer contracts
* Updates camera file placement under rendering
* Adds composition and runtime contract skeletons
* Revises simulation and render handoff contracts
* Adds tick input context for simulation updates
* Adds render frame submissions and per-instance sprite playback
* Reorganizes asset types and OpenGL backend files
* Refines shared asset and grid geometry layout
* Reorganizes manifest definitions and pixel types
* Moves manifest definition into asset definitions
* Adds reusable render frame writing contract
* Adds runtime modes and tick window snapshots
* Adds GLFW/OpenGL context bootstrap
* Link shader programs and release OpenGL resources with their context
* Adds OpenGL render frame submission
* Adds sequential game runtime loop
* Adds concurrent game runtime scheduling
* Fixes timed input handoff and restores runtime demo
* Adds input capture mode design skeleton
* Fixes independent simulation timing and input State consumption
Replace the transition-driven InputTimeline with an InputAccumulator that
consumes one complete batch without scheduling game updates. Sequential and
concurrent runtimes now invoke update once per cycle; the worker records its
consumption timestamp under the handoff lock.
Retain semantic press/release counts, persistent hold start times, full durations
of completed holds, current hold age, and observed down-time since consumption.
Transitions delivered in one poll share its observation timestamp, so State
reports their counts without inventing unobservable hardware durations.
Distinguish absolute axes from relative deltas. Accumulate relative movement
until publication and consumption, then reset it rather than replaying it.
Update the demo movement, input/runtime documentation, and focused test sources
for the independent-simulation contract.
Validation: static source review and git diff --check. No compilation or tests
were run, as required by the task instructions.
* Adds configurable polling backlog capacity and backpressure
Add lockstep (default), finite completed-poll capacity, and unlimited polling
policies with configurable completion-to-next-poll spacing. Every completed
observation occupies capacity, including unchanged State samples. Consumption
transfers the whole batch and leaves an empty backlog without resetting spacing.
Apply eligibility in both runtime modes. Concurrent handoff wakes polling as
soon as capacity reopens; full batches stop input pumping while frames can still
be presented or recycled. Shutdown and worker failure wake the same scheduler.
Sequential execution can skip a poll for spacing while continuing simulation.
Expose the policy in the runtime constructor and demo command-line options.
Document observation limits, capacity and delay semantics, and add focused
source-only coverage for lockstep, finite/unlimited capacity, and handoff delay.
Format the input/runtime files changed by the first two subtasks according to
the repository settings.
Validation: static review and git diff --check. No compilation or tests run.
* Adds ordered physical input and OS Text capture
Implement independent reference-counted capture requests that latch at the next
platform poll. Publish immutable PollSnapshot handles carrying State and a
separate ordered stream of button/axis/pointer/scroll/text records. One sequence
covers Events and Text so their relative order survives whole-batch handoff.
Every simulation consumer reads the same non-destructive TickInput records.
Capture GLFW callbacks before State mapping, including key repeats, unmapped
key/scancode information, Unicode character callbacks, cursor motion, and
fractional wheel offsets. Expose relative mouse State axes. Record observable
pad sample changes without claiming unreported physical transitions. Associate
callbacks with the actual window adapter rather than a different singleton.
Extend the adapter contract with supported channels and protected complete-poll
publication; keep State-only adapters compatible. Document scoped activation,
custom pump integration, ownership, observation timestamps, and committed-text
limits. Add focused source coverage for channel independence, repeat/text order,
move-only leases, Unicode scalars, and non-destructive single-cycle consumption.
Validation: inspected pinned GLFW/Gainput APIs, formatted changed files, and
checked git diff --check. No compilation or tests run.
* Adds scoped keyboard focus and simulation-side input routing
Keep focus ownership separate from capture activation. Add thread-safe focus
requests and move-only leases; releasing an older owner cannot clear a newer
request, including a replacement with the same target ID. Latch one focus
snapshot at poll start for both State gating and ordered-record routing.
Stamp records with their original target and focus epoch so queued input is
never reassigned after a focus transfer. Expose non-destructive routed views
and gameplay event filtering. Exclusive focus suppresses keyboard gameplay
State while mouse/controller alternatives remain available; pass-through
permits keyboard input for both the focused target and gameplay. Retain
physical state while blocked and resume it at the next eligible poll on blur.
Integrate a focused textbox example in the demo with independently requested
Text, F2 focus toggling, repeated editing/navigation controls, and Unicode
scalar storage. Use the relative scroll State axis for fractional wheel input.
Document the existing ASCII preview/font limit and keep editor/IME work outside
this input contract. Add focused source coverage for ownership, transfers,
pass-through, alternative devices, and teardown.
Validation: formatted changed files, reviewed routing and publication paths,
and checked git diff --check. No compilation or tests run.
* Fixes input adapter ordering, capability checks, and failure cleanup
Map GLFW keyboard/mouse State in the shared callback observation order, and
ignore later Gainput notifications for those externally driven devices. This
preserves brief cross-device chords instead of replaying events in per-device
queue order. Keep Gainput-owned devices and legacy wheel pulses functional.
Map relative movement against the modifiers active when it arrives. Preserve
already mapped deltas through modifier release or unbinding, reject invalid
axis kinds/non-finite results, and handle axis-kind changes at consumption
boundaries without replaying old relative motion as an absolute value.
Add explicit focus capability checks. Capture-capable adapters must publish
complete polls rather than silently returning State-only data. Prevent collector
and routing-owner copies from sharing activation/configuration accidentally.
Catch callback failures on the GLFW path and rethrow from update so exceptions
do not escape through the C callback stack. Detach callbacks, clear focus and
pending capture before final State publication, including partial initialization;
keep destruction non-throwing after explicit teardown reports a failure.
Expand source-only coverage for cross-device chords, modifier-gated relative
movement, kind changes, adapter capability failures, routed capture in both
runtime modes, and poll-failure teardown. Assert one sequential update rather
than the superseded input-driven subdivision.
Validation: pinned dependency API inspection, static C++ parsing (accounting
for the parser's valid empty-brace default-argument limitation), repository
formatting, and git diff --check. No compilation or tests run.
* Updates input implementation status and remaining validation gate
Record the implemented input work items and distinguish authored test sources and static review from execution. Add the remaining acceptance checklist for both runtimes, polling backpressure and spacing, ordered Events/Text, focus transfer, and shutdown failures. Document backend observation limits and the committed-text contract.
Clarify State observations crossing consumption boundaries and sequential polling eligibility. Compilation, automated tests, and real demo validation remain unperformed in this patch-preparation pass.
* Fixes runtime session cleanup and backend input ownership
Pair game cleanup with attempted initialization in both modes, preserve the first failure, and reject reused runtime or adapter graphs before touching stopped resources. Own the default GLFW input adapter and detach it before destroying its window. Add lifecycle and ownership regression sources; compilation and tests remain unrun.
* Adds platform-thread task dispatch for simulation resource requests
Execute FIFO request batches with the platform context, wake polling even at capacity, and deliver values or exceptions through futures. Retain request captures only in the queue, cancel them before worker join, and reject submissions outside the runtime. Add queued shader reload in the demo and cancellation, ownership, and failure regression sources. Builds and tests remain unrun.
* Revises semantic material binding and camera publication boundaries
Bind pass and draw values through Shader, keeping GLSL role names in the backend. Cache linked programs without camera broadcasts; expose explicit reload with retained old handles and failure-safe publication. Update camera scalar revision checks, stale camera test APIs, draw contract probes, and internal frame exceptions. Builds and tests remain unrun.
* Fixes asset cache publication and provider teardown synchronization
Synchronize cache lookup, publication, replacement, and clear; release retired handles outside cache locks. Bind loads to one provider owner thread and reject teardown refills. Preserve font defaults under the same lock and stable reservation selection during clears. Add concurrent-reader, retained-handle, wrong-thread, and reentrant-deleter regression sources. Builds and tests remain unrun.
* Revises asset preparation and transient resource upload
* Fixes OpenGL current-context checks and retained handle invalidation
* Updates runtime refactor status and remaining acceptance gate
* Reformats codebase
* Reformats codebase - second time is the charm
Apparently the clang-format file was overriding clion settings
It is unfortunate the clang-format file can't seem to reproduce the clion format precisely
* Replaces .clang-format with clion-code-format.xml
This unfortunately locks in the IDE with the repo, but the .clang-format
wasn't capable of reproducing the preferred code style.
* Fixes runtime build dependencies and stale test includes
* Updates successful build validation and remaining execution gate
* Fixes nodiscard warning in tests/
* Fixes formatting
* Fixes minor formatting
* Adds a best effort .clang-format - not as good as the clion xml
should be a bit better than the previous .clang-format
* Updates cmake min version
* Adds architecture implementation work order and checkpoint ledger
Records the original task base and second-pass task dependencies before source changes. Preserves discovery boundaries, patch sequencing, and the distinction between prepared regression sources and authorized execution.
* Revises platform task queue naming to PlatformDispatcher
Renames the dispatch type, source files, and EngineContext accessor together. Updates runtime calls, asset-loading examples, demo submission, and regression sources without changing detached FIFO delivery or future cancellation semantics.
* Fixes platform submission lifetime across runtime shutdown
Adds copyable submission endpoints backed by synchronized shared state, with rejection after close or dispatcher destruction. Preserves owned future results and capture cancellation outside queue locks. Guards detached drains against reentrancy and retains scheduler lifetime in wake callbacks.
Prepares regressions for saved endpoints and owner-thread reentrant posts. Moves EngineContext fields above its methods. Compilation and test execution remain unrequested.
* Adds an owned SimulationDispatcher with safe submission endpoints
Transfers move-owned no-argument work to an explicitly bound simulation owner. Accepts initialization-time requests before binding, rejects closed targets, preserves detached FIFO delivery and future exception results, and cancels pending captures outside locks.
Documents distinct dispatch APIs, delayed owner binding, queue lifetime, and self-wait restrictions. Runtime integration and regression sources follow in the next checkpoint.
* Adds simulation mailbox delivery at runtime update boundaries
Opens simulation acceptance during initialization and binds its execution owner in either runtime mode. Drains detached simulation work without scheduler locks before transferring the complete polling backlog, with no manufactured early ticks. Cancels pending captures on the owner before game cleanup and closes unbound queues after startup failure.
Prepares regressions for both owners, FIFO reentrant boundaries, cancellation, startup failure, and saved endpoint lifetime. Documents notification versus update cadence and keeps general-worker shutdown integration explicitly pending.
* Adds persistent EventBus registrations behind the default EventSystem
Extracts the owned named-event registry without changing the singleton access pattern. Returns bus-qualified non-RAII identifiers, keeps ignored registrations alive, and invokes callbacks outside registry locks in registration order.
Documents isolated bus architecture, producer-thread affinity, nested dispatch, and overlapping producers. Prepares source regressions for persistence, isolation, immediate order, and registration during dispatch; safe unregister and asynchronous delivery follow separately.
* Adds safe event unregister and in-flight completion barriers
Serializes active-state checks with invocation entry so detached registry snapshots cannot authorize a fresh callback after unregister. Provides nonblocking removal, explicit completion waiting, duplicate-removal safety, and nested self-wait detection. Close invalidates entries without destroying captures under registry locks.
Prepares controlled regressions for snapshot removal, bus-qualified IDs, self-removal, running borrowed targets, callback exceptions, and closed buses. Documents the caller obligation to wait before destroying a borrowed target.
* Adds owned queued event delivery with explicit failure reporting
Keeps EventBus independent of execution services through a deferred delivery callable. Copies payloads, serializes producer enqueue within each listener stream, and checks invocation lifetime at execution. Owned delivery tickets report rejected or cancelled work even when a dispatcher future is discarded.
Adds safe platform and simulation delivery adapters and requires a nonthrowing observable error sink for queued registrations. Prepares regressions for payload lifetime, order, invalidation, cancellation, callback failures, rejection reentrancy, and runtime affinity. Ordered worker delivery remains dependent on WorkerGroup.
* Adds independently owned WorkerPool and shared WorkerGroup capacity
Implements move-owned jobs, future results and exception containment, predicate sleeping, fair group selection, and enforced group concurrency caps. Accepted jobs retain group accounting independent of handle lifetime. Close rejects new submissions while drain/join completes ordinary work and releases captures outside scheduler locks.
Handles partial thread startup and rejects same-pool blocking drain or self-join. Prepares regressions for futures, FIFO serial groups, independent groups, graceful destruction, retained handles, and self-wait. Native affinity and weighted policy follow in the next checkpoint.
* Adds enforceable WorkerGroup scheduling and native CPU policy
Applies smooth weighted scheduling share, priority, concurrency caps, and previous-worker preferences across shared root capacity. Reports requested/effective eligibility and native capabilities. Linux jobs set and read back CPU masks before execution; hard unavailable CPU, cache-domain, or NUMA requirements reject explicitly instead of being ignored.
Retains compatible masks, restores baseline eligibility for unconstrained work, and delivers policy failures to futures without invoking jobs under unverified masks. Preferred fallback records failure accounting. Serializes external shutdown joins and moves mask allocation into the thread-start rollback path. Prepares native capability regressions; no builds or tests executed.
* Adds ordered event streams on shared WorkerGroup capacity
Uses one owned serial pump per delivery stream so parallel worker jobs cannot reorder event completion. Copied adapters share ordering across listeners; separately created streams remain concurrent. Group closure rejects new stream work, and failed pump ownership releases pending tickets outside locks for observable cancellation.
Guards publication failure before arming cancellation and prepares regressions for order on a parallel root, shared listener streams, and saved-target rejection. Completes optional platform/simulation/worker event composition without coupling the registry headers to execution services.
* Adds configured EngineContext worker ownership and injection
Creates a modest owned root lazily or shares application-provided physical capacity. Tracks groups created through the context as its shutdown domain, closes and drains only those groups, and joins only an owned root. Waiting releases the context mutex so finishing jobs can safely reenter and receive closure rejection.
Keeps existing owned/borrowed input construction compatible through default execution options. Runtime dependency pumping follows in the next checkpoint.
* Fixes execution shutdown ordering across platform and worker dependencies
Closes context CPU acceptance, stops simulation delivery, and continues pumping platform requests while joining simulation and settling accepted CPU work. Keeps game resources and frames alive until jobs finish, then cancels remaining platform requests before deinitialization. Injected roots keep unrelated groups open.
Adds a platform quiesce hook for producer shutdown and explicit borrowed-event invalidation without premature dependency destruction. Preserves startup/simulation failures through later quiesce and cleanup errors. Replaces the asset-preparation example with an owned WorkerGroup-to-platform handoff and prepares source regressions for upload-dependent shutdown and injected ownership.
* Updates execution bootstrap and final source preparation checks
Forwards owned or injected worker configuration through the normal GLFW/OpenGL factory. Makes new default-value types explicit for source readability and unambiguous syntax-tree inspection. Adds controlled weighted-service coverage and corrects the implementation ledger to reflect completed execution work.
Static C++ syntax parsing and whitespace review are preparation checks only; compilation, linkage, scheduler execution, and native affinity acceptance remain unrun.
* Updates architecture execution checkpoint and continuation status
Records tasks zero through four as source-complete, names the remaining timing/resource/material/render work, and reserves the next incremental patch number. Clarifies that older normal/sandbox build reports do not validate this continuation.
Preserves the original task base and unsquashed fifteen-commit mailbox series. Documents static syntax/diff and mailbox replay as preparation checks only; compilation, regression execution, native affinity, and real runtime acceptance remain unrequested and unrun.
* Adds bounded simulation scheduling with configurable lag recovery
Extracts a clock-driven scheduler shared by the upcoming runtime timing integration. Variable pacing, fixed delta, bounded fixed updates, and direct or fixed-prefix VariableCatchUp use explicit configuration. Excess debt is reported and dropped; fixed recovery preserves sub-step phase. Adds deterministic regression sources for stalls, expensive updates, recovery caps, invalid policies, and deadline saturation. Continues from the identical source tree pushed by the user while preserving the original task base.
* Adds explicit simulation-time input contributions and tick timing metadata
Keeps TickInput durations on their observation clock while TickContext carries a selected simulation delta, update kind, and discarded recovery time. Introduces button_simulation_seconds to map observed down-time proportion onto simulation time with a held-State fallback for a zero observation interval. Migrates demo movement and prepares scenarios for a tap within a 500 ms stall, persistent held state, input between recovery calls, and invalid manual deltas.
* Revises both runtime modes to use bounded simulation timing
Uses the clock-driven timing policy for sequential and concurrent execution. Each selected step drains simulation work and transfers the entire current input backlog; cycles without updates retain that backlog. Publishes at most one useful frame after each bounded batch and retains the latest complete frame for rendering. Adds demo timing switches and prepares runtime scenarios for fixed delta, capped hybrid recovery after a slow update, and validation before startup.
* Updates simulation recovery contracts and observation-clock regression coverage
Documents shared variable/fixed scheduling, recovery thresholds and caps, suspension behavior, discarded-time accounting, observation-based input, zero-interval control mapping, and latest-frame retention. Replaces hard-coded-cadence statements in active runtime/input documents and records task 5 as source-complete with executed acceptance still open. Adds clock-independence and transient-input recovery scenarios, exposes the optimization-configurer TODO, and makes the demo recovery switch select fixed mode.
* Updates the simulation timing checkpoint and continuation ledger
Records completed timing source tasks, static preparation and mailbox replay evidence, the pushed continuation base, reserved incremental numbers, and pending executed acceptance. Preserves the original-base cumulative route while providing a continuation-only route for the already applied execution series. Records cache residency and idle-maintenance as the next task and completes local formatting preparation.
* Revises the provider guard naming to AssetCacheContext
Names the shared cache publication and teardown domain without changing strong cache retention, provider/thread checks, reentrant refill rejection, or retained reader handles. Moves declaration members above methods and records the identical pushed timing checkpoint as the continuation base.
* Adds platform retirement maintenance independent of rendering
Introduces the backend-neutral maintain_resources operation and moves OpenGL collection out of clear/render. Both runtime modes service retirement before waiting, with a 10 ms idle-wait bound even before the first frame or with a full polling backlog. Keeps maintenance available while accepted execution work settles and after game/frame releases, without treating partial renderer initialization as ready. Prepares no-frame and maintenance-failure scenarios for both modes.
* Fixes native resource adoption and guarded failure cleanup
Transfers a linked program into its tracked OpenGLHandle before logical-program allocation can fail, removing duplicate immediate/deferred ownership. Centralizes untracked texture, VAO, buffer, program, and shader-stage fallback deletion behind owner/current-context checks without replacing the original error. Rejects unknown tracked resource kinds and prepares recording-native scenarios for worker retirement, shutdown retention, moves/slot reuse, wrong-context maintenance, and failure cleanup.
* Updates strong resource residency contracts and retention scenarios
Traces cache, composite, font, frame, linked-program, and native-handle ownership without introducing eviction. Documents independent retirement maintenance, the idle-wait bound and its practical scheduling limits, guarded failure cleanup, retained logical handles after closure, and pending material domains. Adds strong-residency/clear/provider-rebind regression preparation, updates active runtime documents, and records task 6 as source-complete with executed acceptance open.
* Updates the residency checkpoint and validates native program adoption
Retains native resource-kind metadata through handle moves and rejects logical program adoption of a non-program registration without losing its retirement owner. Prepares invalid-registration and failed-adoption scenarios, completes field declaration order, and records source preparation, delivery bases, reserved patch numbers, and the handoff to pipeline/material work. Builds, regression execution, and GPU acceptance remain open.
* Adds copied pipeline parameters and explicit override validation
* Adds immutable pipeline and material definition snapshots
* Revises geometry and image binding to use per-draw texture units
* Updates texture unit validation to retain upload-time context limits
* Updates the partial pipeline checkpoint and remaining integration work
* Adds linked program reflection and native resource domain checks
* Adds explicit GLSL pipeline building and validated parameter binding
* Adds recording coverage for native pipeline contracts and image binding
* Updates native pipeline contracts and the remaining integration checkpoint
* Fixes event invalidation publication during concurrent closure
Serialize listener invalidation with registry removal so every close observes closed invocation gates, including entries detached by concurrent unregister. Preserve destruction outside registry and listener locks. Prepare concurrent close and capture-destructor reentry coverage; execution remains open.
* Fixes polling deadline saturation across the signed clock range
Compare completed timestamps against max minus nonnegative spacing so a timestamp before the epoch does not overflow the saturation check. Prepare near-limit, maximum-spacing, and zero-spacing polling coverage; the negative-epoch case remains established by arithmetic review rather than an executed fixture.
* Adds worker cap and cross-group affinity restoration coverage
Hold two accepted jobs behind a latch and verify a capped parallel group leaves another physical worker for an independent group. …
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.