AML stands for ACPI Machine Language. This is a binary pseudo-code format, which the operating system's ACPI AML interpreter parses to discover the machine's properties. Since most BIOS implementers do not like to write in binary, the ACPI specification also includes ASL (ACPI Source Language). System designers describe their system in ASL. It is then compiled into AML, and included in the system's flash BIOS. Then, on boot, the BIOS startup code copies it into RAM, where it can be interpreted by the OS's ACPI AML interpreter.
ACPICA is actively maintained and updated. Releases occur approximately on a monthly to quarterly basis, and contain new features and bug fixes. ACPICA also closely tracks new releases of the ACPI specification.
Except for Windows, almost all operating systems use the ACPICA code base to enable ACPI for power management and configuration, as well as the iASL compiler to write BIOS implementations.
ACPICA can be licensed under the GNU General Public License or through a separate license that may be more favorable to commercial operating system vendors. See the source code license header for specifics.
The AML definition blocks in some systems contain an error, where the AML return operator is not used to return a value from a control method. Some ACPI-defined control methods (for example, _STA) must always return a value. Due to an errata, this bug does not manifest itself on Windows' ACPI implementations, and therefore was not detected when OEMs tested their systems using that OS. ACPICA implements a "slack mode" that enables these implicit returns.