Musa-Cpp-Lib-V2/cpp_lib.todo

50 lines
3.0 KiB
Plaintext

[#TODO]
[ ] Base layer and OS abstraction for Windows. (Ryan's Win32 platform layer is ~2k lines of code.)
• ryan uses os_thread_launch (CreateThread) /join (WaitForSingleObject+CloseHandle)/detach (CloseHandle ?? what type?)
See: base_threads
just implement the stuff we need for:
He launches a bunch of async threads from `main_thread_base_entry_point`
• Creating / destroying threads.
• rdtsc for timing
• Thread primitives (Mutex, Semaphore, etc.)
• Thread Creation / Deletion
[ ] CreateWindow and other Windows-specific features for handling messaging.
[ ] Context should include links to other living thread data (+ save dead threads in debug mode)
[ ] push_scratch() macro. (basically an auto_release_temp)
[ ] Start removing irrelevant header files (for unity build system)
[ ] ... Mouse / Keyboard inputs
[*] This is the order I want to follow, because I need them in thread context.
- Entry point(s) `Entry_Point_Main.cpp`
-> We can have a lib_init() instead of a clear entry point for now.
-> Switch from library to application once I add an entry point
-> See how rjf abstracts his entry points for each platform with TCTX.
[Design Stuff]
[ ] "Primary Thread" <- Main entry point thread
[ ] "Secondary Thread" <- does all the heavy lifting for the first thread and synchronizes with the first.
[ ] Tertiary threads (launched by secondary thread and awaiting work as assigned by Primary and Secondary threads)
[ ] Multi-threaded by default with sync points
[ ] Need bindings for Semaphore and Mutex
[ ] Does calling SetProcessWorkingSetSize(.., -1, -1) cause the program to crash? Why tho.
[ ] Maybe we just shouldn't do this?
[ ] *our* program memory usage can be calculated by Stack Size + allocations from GPAllocator + allocations from arena.
[ ] I want to be able to create new Windows (instances) of the program that can communicate with one another.
I want one program to be the "Main" and always in-tray, and the others to be "child instances"
[TODO - Low priority]
[ ] Fix implementation so all source is just in .cpp files (including templates), and auto-generate forward declares like Vjekoslav does.
[ ] Implement Secure Arenas (with VirtualLock, wiping memory with RtlSecureZeroMemory)
[ ] Way to serialize and deserialize settings in Text (I think using binary is a mistake here?).
[Project Ideas] - order of operations:
[ ] Pushbullet replacement should make it easy to understand how data can be securely moved over the internet via a central server.
[ ] Signal replacement
[ ](Graphics): How do I create a basic overlay that shows the time, date, cpu/gpu temps, frequency, memory usage all the time and responds to global hotkey to show more info
[Documentation Notes]
Main inspirations for this codebase:
(1) jonathan blow & jai compiler project
(2) casey muratori and "handmade" approach to software
(3) ryan fleury and raddebugger codebase
Always contemplate your impulses