Subscribe for updates!

Pyxie


Changelog
Open Source
Credits
Dev Status
Overview
Language Spec
Language Status
Project Status
Downloads, Links, etc
Arduino Profile

Change Log

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning, within reason. (Prior to a 1.0.0 release minor version increases may be backwards incompatible) See doc/Versioning.md for more details

[0.1.26] - UNRELEASED

New

*

What's been fixed?

*

Internal Changes

*

Other

*

[0.1.25] - 2018-02-03

The focus of this release is the result of the independent intermediate node refactoring project I was undertaking. This was to transform the list oriented data structure for representing a "pure" intermediate form of code into a more stuctured/generalisable format.

The motivation behind this change was the realisation that implementation of end user functions (ie def) would be very difficult with this more structured approach.

New

What's been fixed? / Improved

Internal Changes

Other

[0.1.24] - 2016-11-10

What's been fixed?

New

Internal Changes

Other

[0.1.23] - 2016-10-11

Not backwards compatible due to changes to "print"

print

print is no longer a python 2 style print statement, but rather a python 3 style print function. The reason for this is primarily down to the fact that things like Serial.print - necessary for arduino support - are not valid python if you have print as a statement.

It's for this reason that the new version is 0.1.23

Overview

Aims in this release are to start enabling more functions inside an enclosing profile. Specifically to start enabling more arduino programs using default pin names (eg A0) and the ability to read from analog pins. (Which requires implementing analysis of return values of functions)

In order to make this work/work better, work on improving how contexts (mappings of names to types) are handled has taken place, in particular nested lookups now work (This will simplify scoping later on too).

New

Arduino Support

Specific set of functionality checked/added in this release:

This is in addition to:

Other

[0.0.22] - 2016-09-25

This release sees a practicality change - specifically to allow the user to specify which arduino board they want their code compiled for. The way this works is to override the arduino-mk process.

As a result, in order to compile (say) examples/servo/servo-test-target.pyxie for the arduino Uno, you change the file examples/servo/servo-test-target.Makefile.in to contain the following:

BOARD_TAG    = uno
ARDUINO_PORT = /dev/ttyACM0

This generates the appropriate file. If you had a Dagi Mini, you might change the contents to this:

BOARD_TAG    = atmega8
ARDUINO_PORT = /dev/ttyACM0

Full documentation will come later but this should be sufficient to get started with.

New

Other

[0.0.21] - 2016-09-17

Various small changes that result in the abilty to generate C++ code for a python arduino program that looks like this:

#include <Servo.h>

myservo = Servo()
pos = 0
pin=11

myservo.attach(pin)
while True:
    for pos in range(180):
        myservo.write(pos)
        delay(15)

    for pos in range(180):
        myservo.write(179-pos)
        delay(15)

This isn't complete because reading arduino sensors won't work like this yet and so on, but this is a start. The generated code doesn't seek to make optimisations and aims to be accurate, so the above creates two iterators - one for each range and runs those.

Internal improvements to contexts also suggest better mechanisms for handling profiles.

New

Other

Internal

[0.0.20] - 2016-08-12

Bulk of changes for this release are internal - various refactoring and so on. This isn't particularly exciting, but a release made just to say "yes the project is still progressing".

Probably the most interesting addition is actually the creation of "WIPNOTES" designed to support ongoing (ie WIP) development. You can also now see the next target for the arduino profile - to support servos. This requires a fair collection of (useful) improvements to the python type inference which is not yet complete. As a result while the servo example parses it does not yet analyse or compile.

Indeed, that's required a fair amount of rethinking about internal structure, hence the new WIPNOTES :-)

New

Internal

[0.0.19] - 2016-01-31

Fixes

New

Internals

Other

[0.0.18] - 2016-01-10

New

Other

Will need revisiting

[0.0.17] - 2015-08-12

New

Other

[0.0.16] - 2015-08-02

Summary: Adds initial Arduino LEONARDO support, improved function call, release build scripts

In particular, to compile for a compilation target you do this:

pyxie --profile arduino some_program.pyxie

This will generate some_program.hex. You then need to load this onto your arduino. Support for assisting with this will probably be in a largert version. Requires Arduino.mk to be installed in a standard place. Docs TBD as functionality stabilises.

Features

Docs

Other

Other

[0.0.15] - 2015-07-18

[0.0.14] - 2015-07-18

New

Other

[0.0.13] - 2015-06-21

This probably marks the first release that's potentially properly useful when combined with an appropriate included .h file... We support if/elif/else while/break/continue and arbitray expressions.

New

[0.0.12] - 2015-06-17

New

Combination of these things allows things like countdown programs, basic benchmarking and so on. Creative use ( while + break) allows creation of "if" like constructs meaning the code at this point supports sequence, selection and iteration as well as very basic datatypes. That's almost useful... :-)

[0.0.11] - 2015-06-06

New

Changed

Fixes

[0.0.10] - 2015-06-03

[0.0.9] - 2015-05-23

Primary changes are to how the program is run, and fixes to precedence. This is the first version to support a non-test mode - so you can output binaries, but also JSON parse trees.

New

Changed

Fixes

[0.0.8] - 2015-05-13

Changed

Switched compilation over to using PyNode objects rather than lists

Rolls up alot of changes, and improvements:

Furthermore, by allowing nodes to generate a JSON representation, it's easier to see the actual structure being generated - to allow tree simplification, but also to allow - at least temporarily - decoupling of changes from the python parsing from the C tree generation, and from the C code generation

[0.0.7] - 2015-04-29

Changed

[0.0.6] - 2015-04-26

Overview -- Character Literals, math expressions, build/test improvements

Changed

[0.0.5] - 2015-04-23

Added

Changed

[0.0.4] - 2015-04-22

Added

Changed

Fixed

[0.0.3] - 2015-04-21

Added

Changed

[0.0.2] - 2015-03-30

Initial Release -- 0.0.1 was not released and rolled into 0.0.2 (release notes for 0.0.1 below)

Simple assignment

Added

Changed

[0.0.1] - Unreleased - rolled into 0.0.2

Added



Updated: July 2022
Help, Contacts & Downloads
Copyright © 2016 Michael Sparks Open Source