v0.3
9 Feb 2026
This Aixt version needs Vlang v0.5.
Supported Devices
- Software emulator
- Mindstorms NXT
- PIC16F6xx-14p family
- PIC16F6xx-18p family
- PIC16F6xx-20p family
- PIC16F8x family
- PIC16F87x family
- PIC16F88x family
- Explorer16 (PIC24FJ128GA010)
- CY8CKIT-049-42xx (PSoC 4)
- CY8CKIT-145-40xx (PSoC 4)
- Arduino Uno
- Arduino Nano
- Arduino Mega
- Blue-Pill
- Nucleo-L031K6
- STM32G431Core
- STM32F411Core
- Raspberry Pi Pico
- XIAO-SAMD21
- XIAO-ESP32-xx (C3, C6, S3)
- ESP32-DevKitC
- ESP32-C3-CORE
- ESP32-C3FH4
- M5Stack FIRE
- CH32V103R8T6-EVT-R1
Devices being updated: - ESP32-CYD
- WCH families
Changes and new features
Aixt CLI update
- Migrate
aixt.vfile to an V's standard CLI app usingclimodule - Aixt's
newcommand has now an interactive mode (by flag) - Implement the
initcommand - Interactive mode for
initandnew - change
deviceflag by-target(-t) - make the Aixt executable receive
-c_compiler <cc_path>(-cc <cc_path>) flag for the C compiler path - make the Aixt executable receive
-flasher <flasher_path>(-f <flasher_path>) flag for the flasher path
Folder organization update
- Split the examples from the API in all the targets creating
examplesfolder - Change
targetsfolder name byapi - Change in all of the targets
builtin.c.vtomain/main.c.v - Change
/rp-pico/by/pico/ - Change redundant names in
/examples/folders - Target names are case-insensitive now but the Aixt related files and folders are always lowercase
- Add basic language test examples in
/testfolder- Create a folder by each test file including the project files
- Split the
docsdirectory intodocs/apianddocs/lib
API update
- Object Oriented Programming enabled in the API for most of targets
- API and Aixt compiler now are number the same (0.3)
- Define as default the object oriented modules (
pin,motor, etc) less in low memory devices like PICs- Define as standard module's name
modulefor unique and OOP versions andmodule_fnfor only-funcional ones - Update according the new names, the targets: NXT, Emulator and arduino devices (tested on Uno, Nano and Mega).
- Create both functional and OOP version of modules
pin,adc,pwm,motor,sensorandbutton - Update all the Microchip targets to
pin_fn
- Define as standard module's name
Editors update
- VSCode
tasks.jsonupdated to also support Aixt as a Pixi workspace package - Remove the fields
deviceandportof.vscode/settings.json - Modify
.vscode/tasks.jsonaccording to the newv.modfile - Modify
.zed/tasks.jsonaccording to the newv.modfile - Update
tasks.jsonandsettings.jsonaccording to the newv.modfile
Solved issues
- Arduino Mega and Nano
led0is now public. - Change all occurrences of
@[as_macro] constby@[as_macro] pub const - Aixt failed with V 0.4.12 or above ("-" in names affected it). Now it works on V 0.4.12 and 0.5
- Defining structs and use them in multiples files failed depending on the compiling order
- Add to the
c_genstruct the fieldtypedefs
- Add to the
- Global struct instances now work well
- Interrupts examples for
arduinobackend already work withpinypin_fn - Makefiles device_name already works well
- Interrupts on PIC16F work back
- unknown PIC12 fuses solved
matchalready works well withC.variables- assignment using
matchalready works
README.md update
- Add documentation about installing by using
conda/pixi
Configuration files update
- Implement a new scheme for the
device.jsonsetup files - Add a
v.modfile inside each project folder in order includingdeviceandportfieldstranspile,c_compileandbuildcommands use thev.modfile if the flagdeviceis not explicitly passedflashcommand use thev.modfile if the flagportis not explicitly passed
- Update the
v.modfile in all the Microchip targets - Remove
aixt_linuxandaixt_windowsfromsettings.json - Change the fields
ccandflasherofsetup/<target_name>.jsonfile, from[windows_path][linux_path]to[path]and[windows_path]as optional - Update all the setup files
*.jsonto the new scheme- From
device.jsonchangeport:bytarget:
- From
- Change the fields
ccandflasherofsetup.jsonfile, from[flags]to[args] - Change
device:bytarget:in the project'sv.modfiles - Add the fields
cc:andflasher:to the project'sv.modfiles - Aixt executable now works using data from: direct flags, the
v.modfile or defaultsetup/<target_name>.jsonfile, following this priority order. - Change
aixt/AIXTbyaixt_path/AIXT_PATHin all the VSCode and Zed setup files.
New features
- Delete
nbccompiler binaries from the repository (Linux and Windows versions) - Enable conditional compilation based on
device.jsonproperties- Include
$if c ? {}syntax frombackend: cofdevice.json - Include
$if xc8 ? {}syntax fromcc: { name: xc8 }ofdevice.json - Change all the setup files name that contains '-' by '_'
- Change all the setup files content that contains '-' by '_' in the fields: "target", "backend", "name" and "api_paths"
- In the
apifolder change all the folders names that contains '-' by '_' - In the
apifolder change all the *.v file names that contains '-' by '_' PIC16F6xx_14pADC module modification by using conditional compilation:$if PIC16F630 ? {
- Include
- Implement a
builtinmodule similar to the V's one- Implement
eprint()function
- Implement
#preincludecommand fully implemented and tested- Generate the C macros (
@[as_macro]) before de rest of constants and functions definition (functions and constants) - Test and include in documentation the module
pin_fastfor PIC16 targets - Update the PIC12Fxxx, PIC16F8x and PIC16F87x examples
- generates documentation from code
- Update the source files header to improve the visualization of the automatic documentation
- Remove
/api/from the end of targets implementation path - Create 'dummy' modules as workspaces in API targets folders (Microchip and Arduino targets)
- Change redundant targets API folders (Microchip and Arduino targets)
- Change
/api/,/docs/,/setup/,examples/and/templates/project/folders to lowercase - New script to generate
api/.../README.mdfiles, fromdocs/.../quickref.mdandapi/.../header.md - Add the guide
Generate documentation from code.md
Available Libraries
- disp7seg (7 Segments Arduino Shield)
- lcd (LCD Arduino Shield)
- For Arduino backend:
- oled
- random
- tft_espi