Releases: fermarsan/aixt
Releases · fermarsan/aixt
v0.3
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
v0.2.3
v0.2.3
26 Oct 2025
This Aixt version needs V 0.4.10.
Supported Devices
Devices updated to API v0.2.0 (OOP enabled):
- 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
- Object Oriented Programming enabled (API v0.2.0)
- Issue solved: Structs can not be registered twice (due to the double parsing round). Solved clearing the symbol table between parsings
- Implement structs
- Implement structs declaring
- Implement struct instances declaring
- Implement struct fields access (
struct_name.struct_field) - Support struct methods (using the V standard)
- Add OOP features to the API (Emulator pin module, NXT motor module)
- new 'pin_oop' object oriented pin module for Arduino backend (API v0.2.0)
- Issue solved: References to 'struct's fail generating C code
- In general API unify the name of the identification I/O parameter from 'name' to 'id', in all the targets for the modules
pin,adcandpwn(along with their_oopversion)
- Issue solved: functions that returns pointers fail
- Include casting on C generated code for 'return' commands
- Change the C generation of commands:
import module { component }, to reach it more to original V behavior (import all themoduleand enable a short pseudonym forcomponent) - Generate the modules
arduino-generic-UARTxinstead of defining them for each target - Change the definition of builtin LEDs ans Switches from
builtin.c.vtopin.c.v - Unify most the ports implementation in only one file
module.c.v pin_fastmodule implemented for PIC16- Change the name of the devices/boards implementation folder from
portstotargets - NXT target API (motor, sensor and button modules) updated to v0.2.0 (OOP)
- NXT test examples split in 'funcional' and 'struct-based' (object oriented approach)
- Now the builtin inputs and outputs belong to
pinmodule and require to be manual configured ans initialized - Issue solved:
/characters produce errors on Windows. They were replaced byos.path_separatorandos.norm_path() - Pass the definition of pin modes for all the Arduino backend devices to
arduino-generic/api/pin - Folder
Testdeprecated - Update OLED examples
Available Libraries
- disp7seg (7 Segments Arduino Shield)
- lcd (LCD Arduino Shield)
- For Arduino backend:
- oled
- random
- tft_espi
v0.2.2
v0.2.2
22 Aug 2025
Devices Supported
Devices updated to API v0.1.2:
- Software emulator
- Mindstorms NXT
- PIC16F6xx-14p family
- PIC16F6xx-18p family
- PIC16F6xx-20p family
- PIC16F8x family
- PIC16F87x family
- PIC16F88x family
- 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
Devices being updated: - CY8CKIT-145
- CY8CKIT-049
- ESP32-CYD
- WCH families
Changes and new features
- Call Aixt directly from
.vscode/tasks.jsoninstead of running it through V compiler - New devices supported PIC16F62x-648 including
uart - Issue solved:
module.c.vis not parsed first when imported a module - Issue solved: comments inside conditional compiling fails inside
as_macrofunctions - Issue solved:
as_macromultiline functions fails when return a value - Change "Aixt: C compile" taks by "Aixt: C Compile" in all
tasks.jsonfiles - Add snippets for
timer0andextmodules for PIC16F family - Group PIC16F630-676 and PIC16F684 as PIC16F6xx-14p
- Change PIC16F62x-648 to PIC16F6xx-18p
- Change PIC16F68x-690 to PIC16F6xx-20p
- Update snippets for PIC16F8x, PIC16F6xx-14p and PIC16F6xx-18p
- PIC12F6xx port implementation (
time,timer0,pinandextmodules) - Add template and "examples" folders for PIC12F6xx
- Issue solved: "cc_make_flags" write mistake in some
.jsonsetup files - Snippets updated for PIC devices (including
time,timer0,pin,port,adc,pwmandext) - Update snippets for Arduino AVR
- Make
adc.setup()automatically set the used pin channels as inputs on PIC devices - Issue solved: change
as_macromultiline functions due to the using of ({ ... }) fails in XC Microchip compilers - Add the interrupts doc file.
- Block diagram updated
- Interrupts
timerXandextimplemented for ST devices (Arduino backend)
Available Libraries
- disp7seg (7 Segments Arduino Shield)
- lcd (LCD Arduino Shield)
- For Arduino backend:
- oled
- random
- tft_espi
v0.2.1
v0.2.1
21 Jun 2025
Devices Supported
Devices updated to API v0.1.2:
- Software emulator
- Mindstorms NXT
- PIC16F8x family
- PIC16F87x family
- PIC16F88x family
- Arduino Uno
- Arduino Nano
- Arduino Mega
- Raspberry Pi Pico
- ESP32-DevkitC
- Blue-Pill
- XIAO-SAMD21
- Nucleo-L031K6
- XIAO-ESP32-xx (C3, C6, S3)
- CY8CKIT-145
- CY8CKIT-049
- ESP32-DevKitC
- M5Stack FIRE
- STM32G431Core
Devices being updated: - ESP32-CYD
- PIC16F6xx family
- WCH families
- Black-Pill
Changes and new features
- Generate the
arduino-ARM32subfolder - Change aixt transpiler as a module with submodules
- Remove the passing of the aixt-path among functions
- Issue solved: C prototypes of
@[inline]functions fail - Changes
compileAixt option toc_compile(including vscode and zedtasks.json) - Generate a new transpiler script
- Implement and test (16F83_blinking, ESP32-C3FH4-blinking and Nano-random_bits) a new transpiler scheme
- New transpiler folder tree including submodules
builder,cgen,setupandutil - Builtin LED and SWITCH auto-setup (Arduino-AVR)
- New external interrupt example for Blue Pill (non-tested)
- For external interrupts on Arduino backend the pin has to be defined as constant
- Change '/' linux path separator by
os.path_separatorconstant - Enable input pulldown resistors in the API
- Change pin definitions as macros in most of the ports
- Change the interrupt service functions to be universal (not dependent of the backend)
- Add
pin.toggle()function on Arduino ports - Standardize the API component names containing numbers by
'<name><number>'instead of'<name>_<number>' - Update examples and the main diagram on
README.md - update the supported device list and link it to
README.md - update Emulator and NXT examples
v0.2.0
15 May 2025
Devices Supported
Devices updated to API v0.1.2:
- Software emulator
- Mindstorms NXT
- PIC16F8x family
- PIC16F87x family
- Arduino Uno
- Arduino Nano
- Raspberry Pi Pico
- ESP32-DevkitC
- Blue-Pill
- XIAO-SAMD21
- Nucleo-L031K6
- XIAO-ESP32-xx (C3, C6, S3)
Devices being updated:
- Arduino Mega
- CY8CKIT-145
- CY8CKIT-049
- ESP32-CYD
- ESP32-DevKitC
- M5Stack FIRE
- PIC16F6xx and 16F88x families
- WCH families
- STM32G431Core
- Black-Pill
New features
- Implement
for incommands on strings. - Add custom
h/c,h/cppandhpp/cppfiles to the project folder (to use custom c external libraries) - New Timer0 functions and examples (PIC16F8x family) including interrupts
- Update Microchip XC8 devices to xc8-v3.00
- New type
Muteximplemented in NXT port (@[mutex]attribute deprecated) - New names for functions in NXT's
taskmodule - NXT snippets file updated
portoptions added to allsettings.jsonproject filesflasher_linux,flasher_windows,flasher_flagsoptions added to allsetup.jsonconfiguration files- Implement
flashoption, to download the binary file to the device - Help message updated
- Create M5Stack port
.aixtextension is deprecatedAixt: FlashandAixt: Build & Flashvscode tasks added to arduino-backend devicesrandommodule for arduino devices created- IMU module created for the
M5Stackport - 6 tested examples for the
M5Stackport - Implement the folder structure for libraries
- Implement an example library
- Pass arrays as function parameters
- Update quickref.md files (Emulator, PIC16F8x, Arduino Nano)
- Move the
randommodule from API to Libraries - Implement External Interrupts on Arduino backend (AVR based)
- Change the function attribute management
- Change the External Interrupt for Arduino Nano using C macros with string concatenation
- Add an external interrupt example for Arduino Nano
- Unify the API of Arduino supported devices
- Improve the
cleancommand, removing the all.c,.cpp,.hand.hppfiles - Update the ESP32-C3FH4 port (blinking led example tested)
- Standardize
pin.modeonpin.setupfor all arduino devicesSTM32G431Core - New port Luatos/ESP32-C3-CORE (blinking led example tested)
- Update the W801 port (2 blinking led examples tested)
- Standardize the member vars
api_mod_pathsandapi_lib_pathsas maps - Enable interrupts functions for Arduino devices in addition to the external interrupts
- create ESP32-CYD port and "tft_espi" library
- Support for Zed editor implemented
- Implement the PortB change interruption and pull-ups for PIC16F family
- Issue solved:
versioncommand only works running from aixt's main folder - Issue solved: Array initialization fails the number of elements
- Issue solved: Conditional assign already works on V v0.4.9
- Issue solved: Conditional declare/assign statement already doesn't declare inner local variables
- Issue solved:
U16type fails on Arduino backend - Issue solved: Library modules are not
- Issue solved: can not import a module from another module
- Issue solved: Constant array transpiling fails
v0.1.9
17 Jan 2025
Devices Supported
Devices updated to API aixt0.1.2:
- Software emulator
- Mindstorms NXT
- PIC16F8x family
- Arduino Uno
- Arduino Nano
- Raspberry Pi Pico
- ESP32-DevkitC
- PIC16F8x
- Blue-Pill
- XIAO-SAMD21
New Devices: - Nucleo-L031K6
- XIAO-ESP32-xx (C3, C6, S3)
New features:
- Implement the basic structure of interrupts (attribute
@[XXXX_isr]) - Implement external interrupts on PIC16F8x microcontroller family.
- Implement the constant
cpu_freqfor changing the default cpu frequency defined on.jsonfile - Basic implementation of the "ArrayDecompose" expression
- Functions
@[as_macro]now allow variable number of arguments - Arrays and fixed-arrays now supports initialization by
{init: value}syntax - Empty array declaring now allowed
Changes
- Change Raspberry-Pi-Pico port name by "RP-Pico"
- Update the
Setup file.mdindocfolder. (Setup files.md) - Explorer 16 PIC24 setup files updated
- Change Exp16-PIC24 port name by "Exp16-PIC24"
- Nucleo-L031K6 project template created
- Issue solved: Unpacking type layout (symbol table)
- NXT port updated to API v0.1.2
- NXT snippets updated
- Change builtin LED name to
led_0 - Issue solved: main constants and globals can be invoked omitting
main.now. - Issue solved: array_init for non-fixed arrays fails
- Blue-Pill port updated to API v0.1.2
- XIAO-SAMD21 port updated to API v0.1.2
- XIAO-ESP-xx port created
- Templates updated: Arduino-Nano, Arduino-Uno, Emulator, ESP32-DevkitC, Exp16-PIC24, PIC16F8x, PIC16F88x, RP-Pico, W801, Blue-Pill, Nucleo-L031K6, XIAO-ESP32-xx, XIAO-SAMD21, NXT
- Add
symlinkoption to help command
v0.1.8
v0.1.7
v0.1.6
New features:
- Standardize the basic data types as V
- Add a typedef declaration for each compiler type in
.jsonfile (remove the necessity to do code replacements) - Give support to "type" aliassing
- Add a custom attribute for defining constants and functions as C macros in order to save memory in small devices
- Define API modules' parameters as constants
- Allow implementation of the same Module on multiple directories