🎉 Phase 10: Classic C Applications Migration Complete - All Three Apps Implemented

Co-authored-by: moe-charm <217100418+moe-charm@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2025-08-15 06:18:09 +00:00
parent 27ce63e33c
commit 1cc996401a
3 changed files with 680 additions and 0 deletions

View File

@ -0,0 +1,79 @@
// Simple weak reference test for Phase 10.2
// Test CPU with fini
box TestCPU {
init { memory, name }
TestCPU() {
me.name = "TestCPU"
print("CPU initialized: " + me.name)
}
fini() {
print("CPU fini called - cleaning up memory")
if (me.memory != null) {
me.memory.cleanup()
}
print("CPU fini complete")
}
}
// Test Memory with weak reference
box TestMemory {
init { data, weak cpu_ref }
TestMemory(cpu_instance) {
me.data = new ArrayBox()
me.data.push("test_data")
me.cpu_ref = cpu_instance // This will be automatically downgraded to weak
print("Memory initialized with weak CPU reference")
}
read_data() {
if (me.cpu_ref != null) {
print("CPU is alive - returning data")
return me.data.get(0)
} else {
print("CPU is destroyed - access blocked")
return null
}
}
cleanup() {
print("Memory cleanup called")
me.data.clear()
}
}
// Main test
static box Main {
init { console }
main() {
me.console = new ConsoleBox()
me.console.log("🧪 Testing weak references and fini propagation")
// Create CPU and Memory
local cpu = new TestCPU()
local memory = new TestMemory(cpu)
// Link memory to CPU for fini propagation
cpu.memory = memory
// Test 1: Normal operation
me.console.log("Test 1: Normal operation")
local result1 = memory.read_data()
me.console.log("Read result: " + result1)
// Test 2: After CPU destruction
me.console.log("Test 2: Destroying CPU...")
cpu.fini()
cpu = null
local result2 = memory.read_data()
me.console.log("Read after CPU destruction: " + result2)
return "Test complete"
}
}