AHK v2 version & portability guidance — what runs on stock v2.0 vs v2.1-alpha vs the +Console fork, and how to write code that works on the build the user actually has. Use when choosing a #Requires floor, checking whether Print / Eval / typed Struct / (a?)() are available, detecting the interpreter at runtime, or making a script portable. TRIGGER when: user says "which version", "will this run on", "portable", "works on stock AHK", "is Print/Eval available", "what does the fork add", "#Requires version", "target v2.0", "detect the build", "A_AhkVersion". Examples: "will this run without my fork", "make this portable", "is typed Struct in v2.0"
AHK v2 version & portability guidance — what runs on stock v2.0 vs v2.1-alpha vs the +Console fork, and how to write code that works on the build the user actually has. Use when choosing a #Requires floor, checking whether Print / Eval / typed Struct / (a?)() are available, detecting the interpreter at runtime, or making a script portable. TRIGGER when: user says "which version", "will this run on", "portable", "works on stock AHK", "is Print/Eval available", "what does the fork add", "#Requires version", "target v2.0", "detect the build", "A_AhkVersion". Examples: "will this run without my fork", "make this portable", "is typed Struct in v2.0"
AHK v2 Versions & Portability
Decide what the user's build supports, then write code that runs on it.
How to use
Establish the target build(s): only this repo's +Console fork? Also stock v2.0? Upstream v2.1-alpha?
Load the full reference — capability matrix + a portable fallback for every gated feature —
from Modules/Module_Versions.md. It maps each feature to the builds that support it.
Apply the decision rule: declare the floor, gate the extras.
Is typed Struct / (a?)() available? v2.1-alpha+. v2.0 fallback: Buffer + NumPut/NumGet; a ? a() : unset.
What does the fork add over upstream alpha?Print, Eval, JSON diagnostics, /CrashLog, exit code 130, SyntaxError.
For the full matrix, all fallbacks, and the silent alpha behavior shifts (void→unset,
read-only class base, GuiCtrlFromHwnd no-value), read Modules/Module_Versions.md.