fix: MSVC ABI, heap allocator, deferred timer - vanillafixes compat

- Restore MSVC ABI (was accidentally GNU since v0.6.0, broke .CRT section)
- Replace game allocator with Windows process heap for filecache and
  libdeflate malloc/free - game allocator not initialized during DllMain
  when injected via CreateRemoteThread
- Defer timer calibration (Sleep 500ms) to lateInit - blocks under
  loader lock during DllMain
- Remove exported malloc/free symbols from DLL
- Eliminate addObject compilation units for SSE files - direct @import
  with AVX target instead
- Heap-allocate filecache (was 9.3MB static BSS)
- Strip transform44 of performance/ externs, pure profiling only
- Rename performance/ to weirdperformance/ to match module convention
- Skip default-off modules in all-variants build step
- Remove dead debug vars and stride logging from particle_sse
This commit is contained in:
MarcelineVQ
2026-03-28 05:31:31 -07:00
parent dd745e9728
commit db675c7a7e
43 changed files with 2245 additions and 405 deletions
+12 -30
View File
@@ -7,36 +7,12 @@
This project is developed entirely locally. The remote repo is **only** a
distribution point for releases - no source code is pushed.
The remote `main` branch contains a single file: `README.md` (built from the
local `DLL_README.md`). This must be set up once when creating the repo:
The remote `main` branch contains `README.md` (built from the local
`DLL_README.md`), `weirdutils_api.h`, and issue templates under `.gitea/`.
```sh
tea repo create --name WeirdUtils --description "Vanilla WoW 1.12.1 utility DLLs" --login MarcelineVQ
```
Codeberg disables releases on new repos by default. Enable via API
(get your token from `grep 'token:' ~/.config/tea/config.yml | head -1 | awk '{print $2}'`):
```sh
curl -s -X PATCH \
-H "Authorization: token <your-token>" \
-H "Content-Type: application/json" \
-d '{"has_releases":true}' \
"https://codeberg.org/api/v1/repos/MarcelineVQ/WeirdUtils"
```
Then push the initial README:
```sh
# In a temporary directory:
git init && git remote add origin ssh://git@codeberg.org/MarcelineVQ/WeirdUtils.git && git checkout -b main
cp /path/to/weirdutils/DLL_README.md README.md
git add README.md
git commit -m "Add README"
git push origin main
```
After that, the remote `main` only needs updating when `DLL_README.md` changes.
A local clone of the remote repo lives at `remote/WeirdUtils/`. The wiki
lives at `remote/wiki/`. Use these for all remote operations - no tmp clones
needed.
## 1. Bump module versions
@@ -120,11 +96,12 @@ The module name list in the Developer Notes section must also only list
released module names.
```sh
# from a clone or worktree of the remote repo
cd remote/WeirdUtils
# edit README.md: remove sections for modules not in this release
git add README.md
git commit -m "Update README for vX.Y.Z"
git push origin main
cd ../..
```
## 4. Write the release notes
@@ -222,6 +199,11 @@ print(r[0]['id']) if r else print('not found')
"
```
## Known Issues
- **vanillafixes launcher**: Incompatible with WeirdUtils DLL injection. Users
should load the DLL via WoW.exe + `dlls.txt` or another loader instead.
## Checklist
- [ ] Module versions bumped in `build.zig` for changed modules