more todos, typo fix

main
Allen Webster 2025-06-25 17:56:46 -07:00
parent 000a5b27dc
commit cc1522760f
4 changed files with 16 additions and 13 deletions

View File

@ -77,7 +77,7 @@ And in a true C Scripting system, there are two more requirements. One it should
} }
``` ```
There's no way to achieve this in standard C. However with one non-standard trick we can get there in a fairly satisfying way. And I've tested out `clang` and `cl` for compilers, `clang` and `link` for linkers, and various combinations of optimizations and link time optimizations, and found that this non-standard trick continues to behave as expected across the board. I have yet to test this out on a Linux or Mac machine, or on an a machine with an architecture other than an ARM64, so the research on this technique isn't *finished* but it's looking *very good*. There's no way to achieve this in standard C. However with one non-standard trick we can get there in a fairly satisfying way. And I've tested out `clang` and `cl` for compilers, `clang` and `link` for linkers, and various combinations of optimizations and link time optimizations, and found that this non-standard trick continues to behave as expected across the board. I have yet to test this out on a Linux or Mac machine, or on an a machine with an architecture other than an AMD64, so the research on this technique isn't *finished* but it's looking *very good*.
**Data Sections** **Data Sections**

View File

@ -1,6 +1,6 @@
@echo off @echo off
set opts=-FC -GR- -EHa- -nologo -Zi set opts=-FC -GR- -EHa- -nologo -Zi -std:c11 -wd5105
set code=%cd% set code=%cd%
pushd build pushd build
cl %opts% %code%\src\example1.c -Feexample1 -link -INCREMENTAL:NO cl %opts% %code%\src\example1.c -Feexample1 -link -INCREMENTAL:NO

View File

@ -37,7 +37,8 @@
// user interface // user interface
#define SymbolDeclare(E,N) SECTION(E##_section) extern SYMBOL__TYPE(E) SYMBOL__SYM(E,N) #define SymbolDeclare(E,N) \
SECTION(E##_section) extern SYMBOL__TYPE(E) SYMBOL__SYM(E,N)
#define SymbolDefine(E,N) DO_NOT_ELIMINATE(SYMBOL__SYM(E,N)) SymbolDeclare(E,N) #define SymbolDefine(E,N) DO_NOT_ELIMINATE(SYMBOL__SYM(E,N)) SymbolDeclare(E,N)
#define SymbolDefineNameless(E) SymbolDefine(E,GLUE(auto,__COUNTER__)) #define SymbolDefineNameless(E) SymbolDefine(E,GLUE(auto,__COUNTER__))

View File

@ -8,10 +8,13 @@ Example Writing:
- Metaprogramming without needing input - Metaprogramming without needing input
Practical Use Tips: Research and Provide Practical Use Tips:
[ ] See the symbol set in the debugger [ ] See the symbol set in the debugger
[ ] Best ideas for solving serialization systems problem [ ] Best ideas for solving serialization systems problem
[ ] Shader management
[ ] IDs for profiler blocks
[ ] How does this hold up when multiple DLLs or SOs are involved?
Vetting: Vetting:
@ -46,7 +49,7 @@ Development:
[ ] Macho [ ] Macho
Structure Research: "Mark II":
[ ] Object file editing for improved memory layout & symbol id references [ ] Object file editing for improved memory layout & symbol id references
[ ] Setup count and base pointer symbols [ ] Setup count and base pointer symbols
@ -56,12 +59,11 @@ Structure Research:
[ ] Do I want to maintain a pair of versions one with object file editing [ ] Do I want to maintain a pair of versions one with object file editing
and one without? and one without?
[ ] Explore the tradeoff of using the hook for more complex data initialization
[ ] OpenGL Shaders? Other Upgrade Research:
[ ] Could Symbol Sets syntax be organized in such a way that it's just a data [ ] Could Symbol Sets syntax be organized in such a way that it's just a data
section and type wrapped in a macro? section and type wrapped in a macro?
[ ] How does this hold up when multiple DLLs or SOs are involved?
[ ] Try using this to generate the IDs for profiler blocks?
Support Tools: Support Tools: