Planned targets
A target is what a program written in AEL, the Agent Engineering Language, will run on: an operating system and processor, or a microcontroller board. You will name the target when you check or build a project, with --target (command names may change before launch):
Status
Planned for AEL Beta 0.0.1. AEL is not available yet.
ael check --target linux-x86_64
ael build --target linux-x86_64 -o build/support --release
ael build --target rp2040-pico -o build/sensors --release --memory-report
The planned list
Planned for Beta 0.0.1:
| Target | Target name | Profile |
|---|---|---|
| Linux on x86-64 | linux-x86_64 | Host |
| Linux on ARM64 | linux-arm64 | Host |
| macOS on Apple silicon (ARM64) | macos-arm64 | Host |
| Windows on x86-64 | windows-x86_64 | Host |
| Static Linux executables and minimal container images, x86-64 and ARM64 | Built from the two Linux targets | Host |
| Raspberry Pi Pico (RP2040) | rp2040-pico | Nano |
| STM32 NUCLEO-G071RB | stm32g071-nucleo | Nano |
| ESP32-C3 development board | esp32c3-devkit | Edge |
| One more microcontroller board | To be announced | To be announced |
- The final list of targets will be confirmed at launch.
- Target names are preview naming and may change before launch.
- Targets that are not in this list are not planned for Beta 0.0.1.
- A board is covered by its exact name. Another board is not covered because its name is similar or it uses a related chip.
Profiles
Every target will have one of three profiles. A profile will say what a target can offer a program, so you know before you build whether your program fits.
| Profile | Where | What it will offer |
|---|---|---|
| Host | Linux, macOS and Windows, including single-board computers and servers | The operating system's facilities, an optional heap, a multi-core runtime, networking, model clients and servers. |
| Edge | Larger microcontroller boards, such as the ESP32-C3 | An optional heap, storage, networking and TLS, each off until you switch it on. |
| Nano | Bare-metal microcontroller boards | No heap and no operating system: every agent, mailbox, timer and buffer has a capacity fixed when you build. |
- One language will reach from servers down to microcontrollers, and a feature a target cannot support will fail at compile time, not on the device.
- The smallest profile will need no heap and no operating system.
- An optional heap, storage, networking and TLS will be available on small networked boards, such as the ESP32-C3, planned for Beta 0.0.1.
The profiles will be what your program can rely on, not brands of hardware. A single-board computer running Linux on ARM64 or x86-64, for example, will be a Host target.
What a target check covers
When you check or build for a target, AEL will check that everything the program uses is available there: a heap on a Nano board, networking on a board that has none, a peripheral the board does not have, or a package limited to other targets. A mismatch will fail the check with a diagnostic that points at your source, before anything is written to a device.
You will be able to limit a dependency in pack.ael to some targets with its targets field; see the Manifest reference.
Where you will develop
You will develop on, and build for, the four operating-system targets above. Installers for Linux, macOS and Windows will come with target management and a health check, and desktop and server programs will need nothing else installed.
Microcontroller boards will be targets only: you will build for them from one of those machines. A board target will need its own support, added with ael target install, and flashing a board will need its maker's flashing tools.
ael target install rp2040-pico
ael doctor
ael doctor will report the toolchain, the installed targets and anything that is missing, and ael target install describes setting up a target. Which development machines will build for which targets will be confirmed with the final list.
Related
- Desktop and server: building for the Host targets.
- Microcontroller boards: the Nano and Edge boards in detail.
- Containers: static Linux executables in minimal images.
- Installing AEL: what the installers will set up.