Updated documentation to reflect commit 6b791b97d deletions:
Removed ENV variables (6):
- HAKMEM_TINY_ULTRA_FRONT
- HAKMEM_TINY_ULTRA_L0
- HAKMEM_TINY_ULTRA_HEAP_DUMP
- HAKMEM_TINY_ULTRA_PAGE_DUMP
- HAKMEM_TINY_BG_REMOTE (no getenv, dead code)
- HAKMEM_TINY_BG_REMOTE_BATCH (no getenv, dead code)
Files updated (5):
- docs/analysis/ENV_CLEANUP_ANALYSIS.md: Updated BG/Ultra counts
- docs/analysis/ENV_QUICK_REFERENCE.md: Updated verification sections
- docs/analysis/ENV_CLEANUP_PLAN.md: Added REMOVED category
- docs/archive/TINY_LEARNING_LAYER.md: Added archive notice
- docs/archive/MAINLINE_INTEGRATION.md: Added archive notice
Changes: +71/-32 lines
Preserved ENV variables:
- HAKMEM_TINY_ULTRA_SLIM (active 4-layer fast path)
- HAKMEM_ULTRA_SLIM_STATS (Ultra SLIM statistics)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
6.0 KiB
ENV Cleanup Quick Reference Card
✅ SAFE TO REMOVE NOW (1 var)
HAKMEM_TINY_FRONT_ENABLE_ULTRAHOT
Status: UltraHot feature completely removed in commit bcfb4f6b5
File: core/box/front_metrics_box.h:149
Action: Delete lines 148-152 (getenv check + usage)
Risk: ZERO - Feature doesn't exist anymore
File: core/box/front_metrics_box.h
- const char* env = getenv("HAKMEM_TINY_FRONT_ENABLE_ULTRAHOT");
- if (env && atoi(env) != 0) {
- g_tiny_front_enable_ultrahot = 1;
- }
🔧 LOW HANGING FRUIT (Deduplication)
SFC_DEBUG - Called 4x, Should Be 1x
Problem: Same ENV var checked in 4 different files Solution: Single global variable
Step 1: Add to core/hakmem_tiny_sfc.c (line ~36)
int g_sfc_enabled = 1;
int g_sfc_debug = 0; // ADD THIS
Step 2: Update init in core/hakmem_tiny_sfc.c (keep line 123):
if (env_debug && *env_debug && *env_debug != '0') {
g_sfc_debug = 1; // Set global once
fprintf(stderr, "...
Step 3: Replace in 3 files:
File: core/tiny_alloc_fast_sfc.inc.h:114
- free_debug_enabled = getenv("HAKMEM_SFC_DEBUG") ? 1 : 0;
+ extern int g_sfc_debug;
+ free_debug_enabled = g_sfc_debug;
File: core/tiny_free_fast.inc.h:104
- free_ss_debug_enabled = getenv("HAKMEM_SFC_DEBUG") ? 1 : 0;
+ extern int g_sfc_debug;
+ free_ss_debug_enabled = g_sfc_debug;
File: core/box/hak_wrappers.inc.h:89
- debug_enabled = (getenv("HAKMEM_SFC_DEBUG") != NULL) ? 1 : 0;
+ extern int g_sfc_debug;
+ debug_enabled = g_sfc_debug;
Savings: -3 getenv() calls on hot paths Risk: ZERO Impact: 4 files, ~10 lines total
⚠️ NEED VERIFICATION (21 vars)
Ask Maintainer/User:
1. Ultra Features (3 vars) - Experimental or Dead?
HAKMEM_TINY_ULTRA_SLIM core/box/ultra_slim_alloc_box.h
HAKMEM_ULTRA_SLIM_STATS core/box/ultra_slim_alloc_box.h
HAKMEM_TINY_ULTRA_DEBUG core/box/hak_core_init.inc.h
Question: Are Ultra features still being developed/used?
Note: The following 4 vars were removed in commit 6b791b97d (2025-11-26):
HAKMEM_TINY_ULTRA_FRONT (deleted)
HAKMEM_TINY_ULTRA_L0 (deleted)
HAKMEM_TINY_ULTRA_HEAP_DUMP (deleted)
HAKMEM_TINY_ULTRA_PAGE_DUMP (deleted)
2. Heap V2 (7 vars) - Active or Replaced?
HAKMEM_TINY_HEAP_V2_CLASS_MASK core/front/tiny_heap_v2.h
HAKMEM_TINY_HEAP_V2_LEFTOVER_MODE core/front/tiny_heap_v2.h
HAKMEM_TINY_HEAP_V2_DEBUG core/front/tiny_heap_v2.h
HAKMEM_TINY_HEAP_V2_STATS core/tiny_alloc_fast.inc.h
HAKMEM_TINY_FRONT_V2 core/tiny_alloc_fast.inc.h
HAKMEM_TINY_FRONT_SLIM core/tiny_alloc_fast.inc.h
HAKMEM_TINY_FRONT_DISABLE_HEAPV2 core/box/front_metrics_box.h
Question: Is Heap V2 frontend still used or replaced by newer code?
3. BG System (3 vars) - Keep or Deprecate?
HAKMEM_BATCH_BG core/hakmem_batch.c (g_bg_enabled=1)
HAKMEM_L25_BG_DRAIN core/hakmem_l25_pool.c
HAKMEM_L25_BG_MS core/hakmem_l25_pool.c
Question: Is background drain still needed or deprecated?
Note: The following 2 Tiny BG vars were removed in commit 6b791b97d (2025-11-26):
HAKMEM_TINY_BG_REMOTE (deleted)
HAKMEM_TINY_BG_REMOTE_BATCH (deleted)
4. HotMag/SmallMag (1 var) - Used?
HAKMEM_TINY_SMALL_MAG core/hakmem_tiny_smallmag.inc.h
Question: Is SmallMag still in use? (File exists, no getenv found for HotMag)
5. Ring/Debug (3 vars) - Needed?
HAKMEM_TINY_SLL_RING core/box/tls_sll_box.h
HAKMEM_TINY_TRACE_RING core/tiny_debug_ring.c
HAKMEM_TINY_DUMP_RING_ATEXIT core/tiny_debug_ring.c
Question: Are Tiny SLL ring and debug ring different from L25 TLS ring?
✅ DEFINITELY KEEP (Active Features)
SFC - Shared Frontend Cache (6 vars) ✅
- Default: ON (
g_sfc_enabled = 1) - Compiled: hakmem_tiny_sfc.o in all binaries
- Vars: HAKMEM_SFC_ENABLE, CAPACITY, REFILL_COUNT, DEBUG, STATS_DUMP, CASCADE_PCT
TC - Thread Cache for Pool/L25 (10 vars) ✅
- Active for L25 and Pool allocations
- Vars: HAKMEM_L25_TC_, HAKMEM_MID_TC_, HAKMEM_TC_*
L25 TLS Ring (3 vars) ✅
- Active in L25 pool
- Vars: HAKMEM_POOL_TLS_RING, HAKMEM_RING_RETURN_DIV, HAKMEM_L25_RING_TRIGGER
BigCache (1 var) ✅
- Compiled: hakmem_bigcache.o
- Var: HAKMEM_BIGCACHE_L25
Total KEEP: 20 vars
📊 Summary Stats
| Category | Count | Action |
|---|---|---|
| Safe to remove | 1 | Delete ULTRAHOT toggle |
| Deduplication | 4 | SFC_DEBUG consolidation |
| Need verification | 21 | Ask maintainer |
| Definitely keep | 20 | No action |
| Already removed | 11 | ✅ Done |
| TOTAL | 57 |
Current ENV vars: 221 Potential reduction: 1-22 vars (0.5%-10%)
🚀 Execution Order
- Today: Remove HAKMEM_TINY_FRONT_ENABLE_ULTRAHOT (1 line, zero risk)
- This week: Deduplicate SFC_DEBUG (4 files, low risk)
- Next sprint: Verify 21 experimental vars with maintainer
- Next release: Deprecate confirmed obsolete vars (doc + warnings)
- Future release: Remove deprecated vars after 3-release cycle
📂 Files to Modify (Immediate Actions)
Priority 1: ULTRAHOT Removal
- core/box/front_metrics_box.h (lines 148-152)
Priority 2: SFC_DEBUG Dedup
- core/hakmem_tiny_sfc.c (add global, ~2 lines)
- core/tiny_alloc_fast_sfc.inc.h (change to extern, ~2 lines)
- core/tiny_free_fast.inc.h (change to extern, ~2 lines)
- core/box/hak_wrappers.inc.h (change to extern, ~2 lines)
Total: 5 files, ~10 lines of changes
🔍 Verification Template
For each experimental feature, check:
# 1. Is it compiled?
ls -la out/release/*.o | grep <feature>
# 2. Is it used in benchmarks?
grep -r "HAKMEM_<FEATURE>" scripts/ apps/ bench/
# 3. Default value?
grep -r "g_<feature>_enabled.*=" core/ --include="*.c"
# 4. Last commit?
git log --all --oneline --grep="<feature>" | head -5
If all NO → mark as OBSOLETE candidate