Static copy
Copied from docs/en/decisions/adp-011.md in https://github.com/poppy-team/aipo-lang (MIT). Pinned to revision ce47c4e070404fc41722ccd8e2b7b808b99062a8, blob e45817a8b8dac53005297387e5b68f659d594c7e. The source repository remains canonical; this copy is refreshed through a sync pull request, not live.
During phase P04 and early P05, seven local micro-optimization experiments failed to produce reproducible speedups and were accordingly rolled back.
An architectural audit proved that the Aipo bytecode interpreter operates with a structural floor of ~100ns per opcode (~300 CPU cycles). Local micro-optimizations cannot penetrate this floor. Comparative measurements against Wren 0.4.0 and Luau 0.739 revealed systemic gaps in arithmetic loops and dynamic method dispatch overhead.
Value Compaction to 16/24 Bytes:
Value from 48 bytes down to 16-24 bytes, slashing memory bandwidth pressure by up to 66% and quadrupling value density per L1 cache line.Method Invocation Fusion (InvokeMethod):
expr.method(args...) into the fused opcode InvokeMethod (rather than separate GetField + Call), eliminating ~200,000 ephemeral BoundMethod allocations in iterative workloads.Dispatch Loop with Hoisted Variables:
ip, stack_base, code).Superinstructions & Specialization:
Call0..Call4 and GetLocal0..GetLocal3 eliminating extra immediate decoding overhead.fail to accept any value or struct instance as its fault payload with strongly-typed inspection in recover.match expr with structural and collection destructuring.aipo-sema to elide redundant dynamic runtime type checks.