Hi all!
uACPI is an ACPI implementation (including an AML interpreter and other components) that aims to be easy to port and integrate.
Project on GitHub:
https://github.com/UltraOS/uACPICurrent state of the project- A well-tested interpreter fully supporting all of AML
- A fully implemented resource subsystem supporting all existing descriptors
- Lots of API already available, this includes sleep/reset, device search, namespace management, opregion/notify handlers, gas read/write, pci routing, interrupt model
- Works on all real hardware tested so far (about 8 different computers), and all VMs. This includes namespace initialization, reading battery state, shutting down and rebooting
More details in the README:
https://github.com/UltraOS/uACPI?tab=readme-ov-file#state-of-the-projectProject goals- Perfect compatibility with the Windows NT ACPI interpreter
- Addressing some of the fundamental design flaws of ACPICA: the global interpreter lock, unsafe object lifetimes, NT incompatibility (reference semantics, implicit-casts, etc)
- Simplifying code by embracing AML designed for the NT ACPI interpreter, instead of trying to work around it (see: ACPICA two-pass package named object resolution)
- Ease of integration and development
Some code examples & more details in the README:
https://github.com/UltraOS/uACPI?tab=readme-ov-file#why-would-i-use-this-over-acpicaA reddit post by me showcasing the interpreter on real hardware:
https://www.reddit.com/r/osdev/comments/1and6yg/my_aml_interpreter_on_real_hardware/Thanks!