{"id":49182302,"url":"https://github.com/aximcode/axl-sdk-releases","last_synced_at":"2026-06-01T04:02:44.557Z","repository":{"id":353223111,"uuid":"1218496399","full_name":"aximcode/axl-sdk-releases","owner":"aximcode","description":"Public release artifacts for axl-sdk (https://axl.aximcode.com) — development upstream is private","archived":false,"fork":false,"pushed_at":"2026-05-27T19:44:40.000Z","size":2594,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T21:21:25.050Z","etag":null,"topics":["apache-2","bmc","c","embedded","firmware","ipmi","mbedtls","redfish","sdk","uefi"],"latest_commit_sha":null,"homepage":"https://axl.aximcode.com","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aximcode.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-22T23:58:38.000Z","updated_at":"2026-05-27T19:44:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/aximcode/axl-sdk-releases","commit_stats":null,"previous_names":["aximcode/axl-sdk-releases"],"tags_count":43,"template":false,"template_full_name":null,"purl":"pkg:github/aximcode/axl-sdk-releases","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aximcode%2Faxl-sdk-releases","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aximcode%2Faxl-sdk-releases/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aximcode%2Faxl-sdk-releases/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aximcode%2Faxl-sdk-releases/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aximcode","download_url":"https://codeload.github.com/aximcode/axl-sdk-releases/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aximcode%2Faxl-sdk-releases/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33759180,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apache-2","bmc","c","embedded","firmware","ipmi","mbedtls","redfish","sdk","uefi"],"created_at":"2026-04-23T02:01:29.819Z","updated_at":"2026-06-01T04:02:44.551Z","avatar_url":"https://github.com/aximcode.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AXL\n\nAXL (AximCode Library) is a UEFI C library and SDK aimed at Linux\nsystems C developers — the audience that already writes C against\nthe kernel, glibc, and GLib but doesn't necessarily want to learn\nEDK2 conventions, the gnu-efi runtime, or the EFI_ / CHAR16 / PascalCase\nuniverse to ship a UEFI binary. AXL hides that and exposes the C API\nshape you already know: `axl_snake_case` functions, `AxlPascalCase`\ntypes, UTF-8 strings, `int`/`size_t`/`uint64_t` everywhere, and an\nevent loop and data structures modeled directly on GLib (`AxlLoop`\n≈ `GMainLoop`, `AxlHashTable` ≈ `GHashTable`, …). If you've used\nGLib, you've used 80% of AXL's API surface.\n\nThe SDK packages the library with headers, a CRT0 entry point, and\n`axl-cc` (a compiler wrapper) so you build `.efi` binaries with one\ncommand — no EDK2 source tree, no gnu-efi.\n\n**How AXL avoids the EDK2 dependency.** The UEFI types (`EFI_*`\nstructs, status codes, protocol GUIDs, service tables) are\nauto-generated from the published [UEFI](https://uefi.org/specifications)\nand [PI](https://uefi.org/specifications) specifications via\n[`scripts/generate-uefi-headers.py`](scripts/generate-uefi-headers.py)\n+ [`scripts/uefi-manifest.json5`](scripts/uefi-manifest.json5).\nThe generator walks the spec HTML, extracts each declared type by\nname + kind, and emits a header layout-compatible with EDK2's. The\noutput lives in [`include/uefi/generated/`](include/uefi/generated/),\nis rebuilt on demand, and never leaks across the public API\nboundary — application code never includes a UEFI header. Any\ndeclaration the spec doesn't cover (Shell protocol etc.) lives in\nthe small hand-written [`include/uefi/axl-uefi-extra.h`](include/uefi/axl-uefi-extra.h).\nThis means AXL has no source-tree dependency on EDK2 (or gnu-efi);\nspec drift is a manifest update + regeneration, not a vendor merge.\n\n- **AXL Library** (`libaxl.a`) — the library itself: data structures,\n  file I/O, networking (TCP, UDP, HTTP, TLS), graphics, event loop,\n  logging, and more. UTF-8 everywhere, standard C types,\n  `axl_snake_case` API.\n\n- **AXL SDK** — packages the library with headers, a CRT0 entry point,\n  and `axl-cc` (a compiler wrapper). Build `.efi` binaries with a\n  single command — no EDK2 source tree, no gnu-efi, just clang or GCC.\n\n```c\n#include \u003caxl.h\u003e\n\nint main(int argc, char **argv) {\n    axl_printf(\"Hello from %s\\n\", argv[0]);\n\n    AXL_AUTOPTR(AxlString) s = axl_string_new(\"AXL \");\n    axl_string_append_printf(s, \"v%d\", 1);\n    axl_printf(\"%s\\n\", axl_string_str(s));\n\n    return 0;\n}\n```\n\n```\n$ axl-cc hello.c -o hello.efi    # 11KB binary, zero external deps\n```\n\nInclude `\u003caxl.h\u003e` for the full API, or individual headers for specific\nmodules (e.g., `\u003caxl/axl-mem.h\u003e`, `\u003caxl/axl-net.h\u003e`).\n\n### C++ also works\n\naxl-sdk ships first-class C++ support: pass `.cpp` to `axl-cc` (or\nuse the `axl-c++` alias) and the same library works from C++ with\nRAII handles via `AXL_AUTOPTR`, type-safe enums, and `\u003cspan\u003e` /\n`\u003cstring_view\u003e` / `\u003cexpected\u003e` for ergonomic API boundaries.\n\n```cpp\n#include \u003caxl.h\u003e\n\nint main(int, char **) {\n    AXL_AUTOPTR(AxlLoop) loop = axl_loop_new();   // auto-freed at scope exit\n    axl_printf(\"Hello from C++!\\n\");\n    return 0;\n}\n```\n\n```\n$ axl-c++ hello.cpp -o hello.efi\n```\n\nCompile-time hard defaults: `-std=c++20 -fno-exceptions -fno-rtti\n-fno-threadsafe-statics` (freestanding-UEFI link can't satisfy\nlibsupc++).  Usable libstdc++ subset is header-only: `\u003carray\u003e`,\n`\u003cspan\u003e`, `\u003cstring_view\u003e`, `\u003ctype_traits\u003e`, `\u003cutility\u003e`, `\u003coptional\u003e`,\n`\u003cvariant\u003e`, `\u003cexpected\u003e`, etc.  AArch64 needs the ARM bare-metal\n`aarch64-none-elf-g++` toolchain — `scripts/install-arm-toolchain.sh`\nfetches it.\n\nSee [`AXL-SDK-Design.md` §\"C++ support\"](docs/AXL-SDK-Design.md) +\n[`AXLMM-Design.md` §\"Toolchain \u0026 constraints\"](docs/AXLMM-Design.md)\nfor the full subset and forbidden-features list.  The\n[AGT widget toolkit](https://github.com/aximcode/agt) is the first\nC++ consumer.\n\n## AXL Library API\n\n| Category | Functions | GLib equivalent |\n|----------|-----------|-----------------|\n| Memory | `axl_malloc`, `axl_free`, `axl_calloc`, `axl_new` | `g_malloc`, `g_free`, `g_new0` |\n| Auto-cleanup | `AXL_AUTO_FREE`, `AXL_AUTOPTR(Type)` | `g_autofree`, `g_autoptr` |\n| Strings | `axl_strdup`, `axl_strsplit`, `axl_strjoin` | `g_strdup`, `g_strsplit` |\n| String builder | `axl_string_new`, `axl_string_append` | `GString` |\n| String search | `axl_strstr`, `axl_strchr`, `axl_str_has_prefix` | `g_strstr_len`, `g_str_has_prefix` |\n| Printf | `axl_printf`, `axl_fprintf`, `axl_asprintf` | `g_print` |\n| File I/O | `axl_fopen`, `axl_fread`, `axl_fseek`, `axl_readline` | POSIX-style |\n| File ops | `axl_file_get_contents`, `axl_file_info`, `axl_file_delete` | `g_file_get_contents` |\n| Directories | `axl_dir_open`, `axl_dir_read`, `axl_dir_mkdir` | `g_dir_open` |\n| Hash table | `axl_hash_table_new`, `axl_hash_table_insert` | `GHashTable` |\n| Dynamic array | `axl_array_new`, `axl_array_append` | `GArray` |\n| Linked lists | `axl_list_append`, `axl_slist_prepend` | `GList`, `GSList` |\n| Queue | `axl_queue_push_tail`, `axl_queue_pop_head` | `GQueue` |\n| JSON | `axl_json_parse`, `axl_json_get_string` | json-glib |\n| Cache | `axl_cache_new`, `axl_cache_put`, `axl_cache_get` | — |\n| Config + CLI | `axl_config_new`, `axl_config_parse_args`, `axl_config_get_*` | `GOptionContext`, `GKeyFile` |\n| Event loop | `axl_loop_run`, `axl_loop_add_timer` | `GMainLoop` |\n| Deferred work | `axl_defer`, `axl_pubsub_publish` | — |\n| Logging | `axl_info`, `axl_debug`, `axl_error` | `g_info`, `g_debug` |\n| HTTP client | `axl_http_get`, `axl_http_request` | libsoup |\n| HTTP server | `axl_http_server_new`, `axl_http_server_add_route` | libsoup |\n| TCP sockets | `axl_tcp_connect`, `axl_tcp_listen` | `GSocket` |\n| UDP sockets | `axl_udp_open`, `axl_udp_send`, `axl_udp_sendrecv` | — |\n| TLS (optional) | `axl_tls_init`, `axl_tls_generate_self_signed` | — (mbedTLS) |\n| Graphics | `axl_gfx_fill_rect`, `axl_gfx_draw_text` | — (UEFI GOP) |\n| Task pool | `axl_async_submit`, `axl_buf_pool_new` | — (UEFI MP) |\n| Environment | `axl_getenv`, `axl_setenv`, `axl_chdir` | `g_getenv`, `g_chdir` |\n| System | `axl_reset`, `axl_driver_load`, `gBS`, `gST` | — (UEFI-specific) |\n| SMBIOS | `axl_smbios_find`, `axl_smbios_get_string` | — (UEFI-specific) |\n| Utilities | `AXL_ARRAY_SIZE`, `AXL_CONTAINER_OF` | `G_N_ELEMENTS` |\n\n## Quick start\n\n### Requirements\n\n- **GCC** + **binutils** for the host toolchain, plus\n  `gcc-aarch64-linux-gnu` + `binutils-aarch64-linux-gnu` if you want\n  to cross-build aa64 UEFI binaries.\n- No EDK2, no gnu-efi, no external UEFI SDK.\n\n### Install the SDK\n\nBinary packages are published on each\n[release](https://github.com/aximcode/axl-sdk-releases/releases/latest).\nEach package bundles both x64 and aa64 UEFI target libs.\n\n**Debian / Ubuntu:**\n\n```bash\ncurl -LO https://github.com/aximcode/axl-sdk-releases/releases/latest/download/axl-sdk.deb\nsudo apt install ./axl-sdk.deb\n```\n\n**Fedora / RHEL:**\n\n```bash\ncurl -LO https://github.com/aximcode/axl-sdk-releases/releases/latest/download/axl-sdk.rpm\nsudo dnf install ./axl-sdk.rpm\n```\n\nPackages ship with mbedtls compiled in, so apps that use\n`https://` URLs link and run without extra setup. Apps that\ndon't reference TLS don't incur any binary-size cost — the\nlinker only pulls in mbedtls .o files when actually used. Users\nwho want an even smaller `libaxl.a` can rebuild from source\nwith `AXL_TLS=0`.\n\n**Windows (WSL):** install the Debian or RHEL package inside\nUbuntu / Debian / Fedora WSL — the `.deb` / `.rpm` paths above\nwork unchanged. `axl-cc` runs in the WSL shell; point your\nWindows editor at the WSL filesystem (`\\\\wsl$\\Ubuntu\\...`) and\nthe resulting `.efi` is a real PE32+ that boots on any UEFI\nsystem. This is the path we recommend — no separate packaging,\nno parallel toolchain to maintain.\n\n**Windows (native MSYS2 / MinGW-w64):** no binary package yet.\nBuild from source under an MSYS2 UCRT64 shell with\n`pacman -S mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-binutils`\ninstalled, then `make` as on Linux. Cross-aa64 needs an\naarch64 ELF cross-toolchain (e.g. an `aarch64-*-gcc` from\nMSYS2 or from Arm's GNU toolchain archives); point at it with\n`make ARCH=aa64 CROSS=\u003cprefix\u003e-`.\n\n**macOS:** no binary package yet. Install cross-toolchains via\nthe [messense tap](https://github.com/messense/homebrew-macos-cross-toolchains):\n\n```bash\nbrew tap messense/macos-cross-toolchains\nbrew install x86_64-unknown-linux-gnu aarch64-unknown-linux-gnu\ngit clone https://github.com/aximcode/axl-sdk-releases.git\ncd axl-sdk-releases\nmake            CROSS=x86_64-unknown-linux-gnu-              # x64\nmake ARCH=aa64  CROSS=aarch64-unknown-linux-gnu-             # aa64\n```\n\nNative Apple Clang can't produce the ELF intermediates AXL\nneeds (we run `gcc → ld -T linker.lds → objcopy --target pei-*`);\na GNU cross-toolchain is required. The `linux-gnu` triple is\nfine — `libaxl.a` is built `-ffreestanding -nostdlib`, so none\nof the glibc baggage gets linked into your `.efi`.\n\n**Pin a specific version:** use the versioned URL pattern\n`https://github.com/aximcode/axl-sdk-releases/releases/download/v\u003cversion\u003e/\u003cfile\u003e`.\nEach release publishes a `SHA256SUMS` alongside the packages.\n\n**Air-gapped / corporate MITM:** the binary tarballs verify\nagainst `SHA256SUMS` with `curl -kfsSLO`, no `git clone` over\nHTTPS required:\n\n```bash\ncurl -kfsSLO https://github.com/aximcode/axl-sdk-releases/releases/latest/download/axl-sdk.deb\ncurl -kfsSLO https://github.com/aximcode/axl-sdk-releases/releases/latest/download/SHA256SUMS\nsha256sum --ignore-missing -c SHA256SUMS \u0026\u0026 sudo apt install ./axl-sdk.deb\n```\n\n**Build from source (power-user):** for working on the SDK\nitself, or platforms without a binary package:\n`git clone https://github.com/aximcode/axl-sdk-releases.git`\n(checkout a `v*` tag for a specific release), or download the\n**Source code (tar.gz)** archive linked on each\n[release page](https://github.com/aximcode/axl-sdk-releases/releases),\nthen run `./scripts/install.sh --prefix /opt/axl-sdk` for the\nsame FHS layout under `/opt/axl-sdk/`.\n\n### Host-side QEMU testing tooling\n\nFor **downstream consumers** who want `run-qemu.sh` and friends\nto test their UEFI apps under QEMU but don't need the build-side\nSDK (no `axl-cc`, no library), there's a separate tarball\nand `.deb`:\n\n```bash\n# Debian/Ubuntu (.deb pulls system QEMU + OVMF + virtiofsd):\ncurl -LO https://github.com/aximcode/axl-sdk-releases/releases/latest/download/axl-sdk-host-tools.deb\nsudo apt install ./axl-sdk-host-tools.deb\nrun-qemu my-app.efi\n\n# Any distro (tarball — install QEMU/OVMF separately):\ncurl -kfsSLO https://github.com/aximcode/axl-sdk-releases/releases/latest/download/axl-sdk-host-tools.tar.gz\nmkdir -p ~/axl-sdk-host-tools \u0026\u0026 tar xf axl-sdk-host-tools.tar.gz -C ~/axl-sdk-host-tools\n~/axl-sdk-host-tools/scripts/run-qemu.sh my-app.efi\n```\n\nDiscovery falls through `$QEMU_DIR` → `$PATH` → legacy custom\nbuild, so the tarball Just Works against the system QEMU/OVMF\npackage on Debian, Ubuntu, Fedora, RHEL, Alma, and Arch. Missing\ndependencies print actionable `apt`/`dnf`/`pacman`/`brew`\ninstall commands.\n\n### Pre-built UEFI tools (USB-stick use)\n\nFor quick UEFI-shell troubleshooting without installing the SDK,\ndownload a flat tarball of the tool `.efi` binaries:\n\n```bash\n# x86_64\ncurl -LO https://github.com/aximcode/axl-sdk-releases/releases/latest/download/axl-sdk-tools-x64.tar.gz\n# AArch64\ncurl -LO https://github.com/aximcode/axl-sdk-releases/releases/latest/download/axl-sdk-tools-aa64.tar.gz\n```\n\nExtract to a FAT-formatted USB stick, boot to the UEFI Shell, and\nrun any tool with `-h` / `--help` for its option list. The tarball\nships these `.efi` binaries:\n\n| Tool       | Description |\n|------------|-------------|\n| `cat`      | Concatenate files to stdout (UEFI `cat(1)` equivalent). |\n| `dmidecode`| SMBIOS / DMI table decoder (UEFI `dmidecode(8)` equivalent) — dumps every record or filter by `-t \u003ctype\u003e`; single-value query via `-s \u003ckeyword\u003e` (`bios-vendor`, `system-uuid`, etc.). |\n| `fetch`    | HTTP/HTTPS client (curl-like) — `GET`/`POST`/`PUT`/`DELETE`/`HEAD` with custom headers, file upload (`-T`), and response-to-file (`-o`, `-O`). |\n| `find`     | Recursive file and directory finder — glob patterns (`--name '*.efi'`) and type filter (`--type f` or `d`). UEFI `find(1)` equivalent. |\n| `grep`     | Pattern search across files — case-insensitive (`-i`), line numbers (`-n`), match count (`-c`), recursive (`-r`). UEFI `grep(1)` equivalent. |\n| `hexdump`  | Hex/ASCII file viewer (`xxd`-style) — seekable with `--offset`/`--length`. |\n| `ipmi`     | Stripped-down `ipmitool` built on AxlIpmi: `info`, `chassis status`/`power on\\|off\\|cycle\\|reset`, `sel list`, `sdr list`, `sensor`, `fru list`, and raw command passthrough (`raw \u003cnetfn\u003e \u003ccmd\u003e ...`). |\n| `lspci`    | PCI/PCIe device lister (UEFI `lspci(8)` equivalent) — `-s` BDF filter, `-d` VID:DID filter, `-n` numeric, `-v`/`-vv`/`-vvv` verbose, `-x`/`-xx`/`-xxx` hex dump, `-t` tree (PCI bridge topology). Decodes vendor/device/class names from `pci-ids.json5` sidecar (vendors[] + classes[] in one file). |\n| `lsusb`    | USB device lister (UEFI `lsusb(8)` equivalent) — `-s BBB[:DDD]`, `-d VID[:PID]`, `-n` numeric, `-v`/`-vv` verbose (per-interface class triplet + iManufacturer/iProduct/iSerial), `-t` tree (real USB hub-port topology). Decodes vendor/device names from `usb-ids.json5`. |\n| `memspd`   | DDR4/DDR5 SPD reader over the platform SMBus — `list` populated slots, `show \u003cslot\u003e` decoded fields, `decode \u003cslot\u003e` raw hex + decoded. JEDEC manufacturer codes resolved via `jedec.json5`. |\n| `mkrd`     | Create / list / destroy FAT16/FAT32 RAM disks in the UEFI Shell (`mkrd \u003clabel\u003e [-s size]`, `-l`, `-d \u003clabel\u003e`). Handy for staging files without writing to flash. |\n| `netinfo`  | Network interface diagnostics and ping — lists NICs with IP/MAC/link state, pings with `-c \u003ccount\u003e`. UEFI `ifconfig`/`ping` equivalent. |\n| `rfbrowse` | Redfish browser — connects to a BMC over HTTPS and walks resources interactively (shortcut verbs for `/Systems`, `/Managers`, etc., plus arbitrary paths). |\n| `sysinfo`  | System inventory summary — compact `cpu`, `mem`, `fw`, `smbios`, `arch` subsections. Use `dmidecode` for the full per-record dump. |\n\n`lspci`, `lsusb`, and `memspd` consult JSON5 sidecar databases\nauto-discovered next to the `.efi` (or via explicit `--ids-file` /\n`--jedec-file`). The tools tarball ships curated starter sets;\nextend or replace via `scripts/{pci,usb}-ids-to-json5.py` against\nthe canonical `pci.ids` / `usb.ids` text databases.\n\nBuilt with TLS enabled so `fetch` handles HTTPS and `rfbrowse`\n(Redfish over HTTPS) works against real BMCs.\n\n### Build an app\n\n```bash\naxl-cc hello.c -o hello.efi\n```\n\n### Cross-build for AARCH64\n\n```bash\naxl-cc --arch aa64 hello.c -o hello-aa64.efi\n```\n\n### CMake\n\n```cmake\nfind_package(axl REQUIRED)\naxl_add_app(hello hello.c)\n```\n\n### Build a driver\n\n```bash\naxl-cc --type driver mydriver.c -o mydriver.efi\n```\n\n### Run tests\n\n```bash\n# Unit tests (3000+ assertions, both X64 and AARCH64)\n./test/integration/test-axl.sh\n\n# Tool tests (hexdump, grep, find, sysinfo, etc.)\n./test/integration/test-tools.sh\n\n# HTTP integration tests\n./test/integration/test-http.sh\n\n# UDP integration tests\n./test/integration/test-udp.sh\n\n# HTTPS integration tests (requires AXL_TLS=1 build)\n./test/integration/test-https.sh\n\n# All architectures (x64 + aa64)\n./test/integration/test-all.sh\n```\n\n## Documentation\n\n- [API Reference](https://axl.aximcode.com/) — auto-generated from headers (Sphinx + Breathe)\n- [Coding Style](https://github.com/aximcode/axl-sdk-releases/blob/main/docs/AXL-Coding-Style.md) — naming conventions, formatting\n- [Porting Guide](https://github.com/aximcode/axl-sdk-releases/blob/main/docs/AXL-Porting-Guide.md) — how to port EDK2 apps to axl-cc\n- [Design](https://github.com/aximcode/axl-sdk-releases/blob/main/docs/AXL-Design.md) — architecture, phases\n- [Roadmap](https://github.com/aximcode/axl-sdk-releases/blob/main/docs/ROADMAP.md) — phase tracker\n\n## Architecture\n\n### AXL Library\n\n- **`include/axl/`** — public headers. `axl_snake_case` functions,\n  `AxlPascalCase` types, standard C types, UTF-8 strings.\n- **`src/`** — module implementations. Each directory has a\n  `README.md` with overview, examples, and usage guidance:\n  [mem](https://github.com/aximcode/axl-sdk-releases/blob/main/src/mem/README.md),\n  [data](https://github.com/aximcode/axl-sdk-releases/blob/main/src/data/README.md) (str, string, hash, array, list, queue, json, cache),\n  [io](https://github.com/aximcode/axl-sdk-releases/blob/main/src/stream/README.md),\n  [log](https://github.com/aximcode/axl-sdk-releases/blob/main/src/log/README.md),\n  [util](https://github.com/aximcode/axl-sdk-releases/blob/main/src/util/README.md) (args, config, path, env, sys, driver),\n  [loop](https://github.com/aximcode/axl-sdk-releases/blob/main/src/loop/README.md) (event loop, defer, signal),\n  [task](https://github.com/aximcode/axl-sdk-releases/blob/main/src/task/README.md) (arena, task pool, buf pool, async),\n  [net](https://github.com/aximcode/axl-sdk-releases/blob/main/src/net/README.md) (tcp, udp, http, tls),\n  [gfx](https://github.com/aximcode/axl-sdk-releases/blob/main/src/gfx/README.md).\n- **Backend** (`src/backend/`) — platform abstraction over UEFI\n  firmware services. Single native implementation.\n\n### AXL SDK\n\n- **`axl-cc`** — compiler wrapper. Invokes clang + lld-link (or GCC)\n  with the right flags, includes, and libraries.\n- **`axl-crt0`** — UEFI entry point stub. Bridges `EFI_HANDLE` +\n  `EFI_SYSTEM_TABLE` to `int main(int argc, char **argv)`.\n- **`axl.cmake`** — CMake integration via `axl_add_app()`.\n- **`include/uefi/`** — auto-generated UEFI type definitions from\n  the UEFI spec HTML. No dependency on EDK2 headers.\n\n### Optional: TLS\n\nTLS support uses [mbedTLS](https://github.com/Mbed-TLS/mbedtls)\n(v3.6.3) as a git submodule. Build with `AXL_TLS=1` to enable\nHTTPS server/client and self-signed certificate generation.\n\n## Built with AXL\n\nReal projects that use this SDK as their only UEFI dependency:\n\n- **[aximcode/axl-webfs](https://github.com/aximcode/axl-webfs)** — bidirectional\n  file transfer and remote filesystem access for UEFI. Ships a CLI app\n  (`serve`, `mount`, `umount`) *and* a resident DXE driver\n  (`axl-webfs-dxe.efi`) that exposes a workstation directory as a UEFI\n  volume (`fsN:`) — live-edit files on your laptop, run them immediately\n  in the UEFI shell. Built entirely with `axl-cc`, no EDK2.\n\nIf you've built something with AXL and want it listed here, open a PR.\n\n## Status\n\nAXL is under active development. The core library is stable with\n776 unit tests + 16 tool tests + 17 HTTP integration tests + 3 UDP\ntests + 5 HTTPS tests. Apps and drivers build with just clang (or\nGCC) — no EDK2 or external UEFI SDK needed.\n\n## License\n\nLicensed under the [Apache License, Version 2.0](https://github.com/aximcode/axl-sdk-releases/blob/main/LICENSE). See\n[NOTICE](https://github.com/aximcode/axl-sdk-releases/blob/main/NOTICE) for copyright and [THIRD_PARTY.md](https://github.com/aximcode/axl-sdk-releases/blob/main/THIRD_PARTY.md)\nfor attribution of vendored components.\n\nContributions are welcome — see [CONTRIBUTING.md](https://github.com/aximcode/axl-sdk-releases/blob/main/CONTRIBUTING.md) for\nthe DCO sign-off requirement and the contributor-license grant that\nkeeps commercial-licensing options open for the project.\n\n## Contact\n\n- **Questions, issues, bug reports** — file an issue on\n  [aximcode/axl-sdk-releases](https://github.com/aximcode/axl-sdk-releases/issues).\n- **Security reports** — see [SECURITY.md](https://github.com/aximcode/axl-sdk-releases/blob/main/SECURITY.md).\n- **Other inquiries** — `support@aximcode.com`.\n\nAXL is developed by [AximCode](https://aximcode.com).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faximcode%2Faxl-sdk-releases","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faximcode%2Faxl-sdk-releases","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faximcode%2Faxl-sdk-releases/lists"}