diff --git a/CHANGELOG b/CHANGELOG index 563e269..a14757e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,7 +5,7 @@ This project adheres to [Semantic Versioning](http://semver.org/), within reason. (Prior to a 1.0.0 release minor version increases may be backwards incompatible) -## [0.1.24] - UNRELEASED +## [0.1.24] - 2016-11-10 ### What's been fixed? diff --git a/README.rst b/README.rst index bcbca19..3ef15e2 100644 --- a/README.rst +++ b/README.rst @@ -240,7 +240,8 @@ Release History Release History: -- 0.1.24 - UNRELEASED - TBD +- 0.1.24 - 2016-11-10 - Fix assignment in else/elif, update to support + Ubuntu 16.04LTS, initial steps on function/def statement support - 0.1.23 - 2016-10-11 - Major arduino profile improvements, print-as-function not statement - 0.0.22 - 2016-09-25 - Enable ability to use a variety of Arduino @@ -430,4 +431,4 @@ As of 0.1.23, the print\_statement has been removed. As well as being simplifying the syntax, it also means that Arudino statements like Serial.print now become legal statements. -Michael Sparks, October 2016 +Michael Sparks, November 2016 diff --git a/doc/changelog.md b/doc/changelog.md index fc78003..409d5f0 100644 --- a/doc/changelog.md +++ b/doc/changelog.md @@ -5,17 +5,67 @@ This project adheres to [Semantic Versioning](http://semver.org/), within reason. (Prior to a 1.0.0 release minor version increases may be backwards incompatible) -### In progress +## [0.1.24] - 2016-11-10 -## [0.1.24] - UNRELEASED +### What's been fixed? + +* Code generation for `else`/`elif` was failing when the statements inside + contained identifiers. This was due to context not propogating into + `else`/`elif`. This was caused by neither `if` nor `elif` adding else clauses + as children. This was done and now this operates correctly. ### New -* +* Added playful puppy example that compiles and controls the Dagu Playful Puppy + robot. (8 leg servos, 2 head/neck servos, infrared array sensor/eye) + * v0 no funcs Playful Puppy code analyses #213 + * v0 no funcs Playful Puppy code generates code #214 + * v0 no funcs Playful Puppy code compiles, & runs on device correctly #215 + +* Profile specific code has been extracted to a specific file. In this + case, the iniitial profile made more managable is of course the arduino + profile. To configure this/extend this, you now update the file + `pyxie/profile/arduino.py` + +* To add more predefined variables/etc that are used in the context (ala + A0, etc) you extend the function `populate_profile_context`. + +* If you need to add extra types - ala the `Servo` type - you can use + the `Servo` function call as an example. Note that it has a return + type of `Servo`. This means of course that the `Servo` function is + a constructor. For this to work clearly the type needs to be + defined - so you define it below in the variable `types`. + +* Started on _parsing_ side aspects of definition of simple user functions. + (ie `def` statements) Hopefully basic functions should be in the next + iteration of pyxie. + +### Internal Changes + +* `pyxie-dev` - Pyxie's release management tool, has had an overhaul, + and transferred into the pyxie package, rather than standalone code. + In the process code was improved, such that "dryrun" and "verbose" + now mean precisely that. Help text is deliberately verbose to note + what the release process is. + +* Check all Pynodes add all sub nodes as children correctly #264 + +* Start of function support: + * Lexing for function definition succeeds #265 + * Grammar parsing for function definition succeeds #266 + * Pynode support for def statements #269. + * Add a callable type #270 ### Other -* +* Reorganised backlog based on priorities - need, useful, want, wouldlike. + Plan going forward is to primarily focus on needs, and one or two from + each of the other categories. +* Function call code supports simplified type definitions for externals. #34 +* Block structure of generated C Code is pretty/human friendly/readable #26 +* Add special case for function calls like print #37 + + ## [0.1.23] - 2016-10-11 @@ -120,6 +170,8 @@ This is in addition to: * Updated docs + + ## [0.0.22] - 2016-09-25 This release sees a practicality change - specifically to allow the user @@ -150,6 +202,8 @@ with. * Minor cleanups + + ## [0.0.21] - 2016-09-17 Various small changes that result in the abilty to generate C++ code @@ -197,6 +251,8 @@ profiles. * Cleaned up/removed extraneous code * Bump for release + + ## [0.0.20] - 2016-08-12 Bulk of changes for this release are internal - various refactoring and so @@ -237,6 +293,8 @@ hence the new WIPNOTES :-) * Subsume tree functionality into core * Update changelog + + ## [0.0.19] - 2016-01-31 ### Fixes @@ -268,6 +326,8 @@ hence the new WIPNOTES :-) * Bump copyright notices to 2016(!) * Add link to latest release on homepage + + ## [0.0.18] - 2016-01-10 ### New @@ -314,6 +374,7 @@ hence the new WIPNOTES :-) * Do not clean up builds temporarily + ## [0.0.17] - 2015-08-12 ### New @@ -329,6 +390,8 @@ hence the new WIPNOTES :-) * Updated usage instructions to include covering using arduino profile * Documentation updated to current status (to a large extent) + + ## [0.0.16] - 2015-08-02 Summary: Adds initial Arduino LEONARDO support, improved function call, release build scripts @@ -375,10 +438,13 @@ as functionality stabilises. * Re-enable doc building + ## [0.0.15] - 2015-07-18 * clib converted to py clib for adding to build directory + + ## [0.0.14] - 2015-07-18 ### New @@ -397,6 +463,8 @@ as functionality stabilises. * Test case for for loops * Massive website revamp + + ## [0.0.13] - 2015-06-21 This probably marks the first release that's potentially properly useful when combined with @@ -411,6 +479,8 @@ expressions. * Support for boolean operators - specifically and/or/not, including any mixture * Support for parenthesised expressions + + ## [0.0.12] - 2015-06-17 ### New @@ -429,6 +499,8 @@ benchmarking and so on. Creative use ( while + break) allows creation of "if" li 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 @@ -450,6 +522,8 @@ as well as very basic datatypes. That's almost useful... :-) * Support empty statements/empty lines + + ## [0.0.10] - 2015-06-03 * Documentation added to pyxie/__init__.py, to allow project level help from "pydoc pyxie" @@ -463,12 +537,15 @@ as well as very basic datatypes. That's almost useful... :-) * New strategy for type inference documented, opens up lexical scoping * pyxie compile harness now runs/compiles programs outside the pyxie tree + + ## [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 + * Test modes for pyxie harness moved into a --test mode * Standalone parse mode -- pyxie parse filename -- parses the given filename, outputs result to console * Standalone compiler mode -- @@ -476,6 +553,7 @@ version to support a non-test mode - so you can output binaries, but also JSON p * pyxie compile path/to/filename.suffix path/to/other/filename -- compiles the given file to the destination filename ### Changed + * Switch to left recursion. The reason is because YACC style grammars handle this better than right recursion, and the fact it also fixes operator precedence correctly in expressions. The reason the grammar was originally right recursive @@ -484,11 +562,16 @@ version to support a non-test mode - so you can output binaries, but also JSON p parsing) ### Fixes + * Bracket negative literal values in expressions to avoid confusing C++ * Precedence as noted above. + + ## [0.0.8] - 2015-05-13 + ### Changed + Switched compilation over to using PyNode objects rather than lists Rolls up alot of changes, and improvements: @@ -530,6 +613,7 @@ Rolls up alot of changes, and improvements: ## [0.0.7] - 2015-04-29 + ### Changed - Bump revision for release - Compiler structure & testing improvements @@ -540,8 +624,12 @@ Rolls up alot of changes, and improvements: - Bugfix: Fix precedence for plus/minus/times/divide - Bugfix: Only output each include once + + ## [0.0.6] - 2015-04-26 + Overview -- Character Literals, math expressions, build/test improvements + ### Changed - Character literals - parsing and compilation - Initial version of changelog @@ -561,8 +649,11 @@ Overview -- Character Literals, math expressions, build/test improvements Simplest possible test initially + ## [0.0.5] - 2015-04-23 + ### Added + - Core lexical analysis now matches language spec - collection of changes, which can be summarised as follows: - Language spec updated relative to implementation & lexing states - Lexical analysis of block structure @@ -571,27 +662,39 @@ Overview -- Character Literals, math expressions, build/test improvements - Fleshed out lexical tokens to match language spec ### Changed + - Code cleanups + + ## [0.0.4] - 2015-04-22 + ### Added + - Extends C AST to match python AST semantics - Ability to use mixed literals in a print statement (1,True, "hello" etc) - Argument list management - Convert argument lists explicitly ### Changed + - Use Print not print ### Fixed + - Cleaned up debug output. + + ## [0.0.3] - 2015-04-21 + ### Added + - Adds ability to print and work with a small number of variables - Better handling, and code gneration for integer literals ### Changed + - Add long description (setup.py) - Update README.md to reflect project slightly better - Reworded/tightened up README @@ -601,20 +704,26 @@ Overview -- Character Literals, math expressions, build/test improvements - Build test results inside the test-data/genprogs directory + ## [0.0.2] - 2015-03-30 -*Initial Release* +*Initial Release* -- 0.0.1 was not released and rolled into 0.0.2 (release notes for 0.0.1 below) Simple assignment ### Added + - Transform Python AST to C CST - compile python to C++ for v simple program ### Changed + - Various tweaks for README/docs - Packaging for pypi and Ubuntu Launchpad PPA for initial release 0.0.2 + + ## [0.0.1] - Unreleased - rolled into 0.0.2 + ### Added - Initial structure, loosely based on SWP from a few years ago diff --git a/doc/index.md b/doc/index.md index 810bb01..6a710a4 100644 --- a/doc/index.md +++ b/doc/index.md @@ -446,7 +446,7 @@ inspired heavily by python introspection) That's quite some time off. Release History: -* 0.1.24 - UNRELEASED - TBD +* 0.1.24 - 2016-11-10 - Fix assignment in else/elif, update to support Ubuntu 16.04LTS, initial steps on function/def statement support * 0.1.23 - 2016-10-11 - Major arduino profile improvements, print-as-function not statement * 0.0.22 - 2016-09-25 - Enable ability to use a variety of Arduino boards by using an Makefile.in file * 0.0.21 - 2016-09-17 - Adds ability to control Arduino servo objects. Quite a lot of internal changes to support that diff --git a/doc/resources.md b/doc/resources.md index b9e58a1..762f0fc 100644 --- a/doc/resources.md +++ b/doc/resources.md @@ -6,10 +6,24 @@ Michael Sparks : , [blog](http://www.sparkslabs.com/michael/ ### Blog posts -None exist at present, but when they do, they'll be linked here. See also: +See: * +(If you write something, let me know and I'll add a link) + +## Code + +The recommended way of working with pyxie as a user is via ubuntu packages. +The recommended way of working with the source is via a github checkout, and +using "make devloop" to check what things are like when installed on a debian +based system. (That way things are always checked from within a package) +Pull requests welcome. + +However these modes of working won't suit everyone so below is a bit more +detailed than that! + + ### Github @@ -18,9 +32,56 @@ None exist at present, but when they do, they'll be linked here. See also: +### Installation from source: + +#### Manual + +Usual approach - get the source, then: + + sudo python setup.py install + +#### Pip + +Usual approach - get the package: + + sudo pip install pyxie + +#### Debian Package + +Again get the source, then: + + make deb + make use + +(Requires py2dsc to be installed) + +Also, you can purge what's currently installed and build a fresh clean +package and use that by doing this: + + make devloop + + ### Ubuntu Packages -Ubuntu packages are built for Ubuntu 14.04.02LTS. You can grab them from my PPA here: +#### Ubuntu versions + +Ubuntu packages are built for Ubuntu LTS versions: + +* 16.04 (xenial) (main development environment) +* 14.04 (trusty) +* 12.04 (precise) + +The following versions of ubuntu are also backported/forward ported to: +* 16.10 (yakkety) +* 15.10 (wily) +* 15.04 (vivid) + +Utopic and other versions aren't here because launchpad can't generate those trivially, +largely because Ubuntu cease support after given time periods + +#### Getting them + +You can grab them from my PPA here. * diff --git a/pyxie/__init__.py b/pyxie/__init__.py index ddf68aa..03214cf 100644 --- a/pyxie/__init__.py +++ b/pyxie/__init__.py @@ -237,7 +237,7 @@ Release History: -* 0.1.24 - UNRELEASED - TBD +* 0.1.24 - 2016-11-10 - Fix assignment in else/elif, update to support Ubuntu 16.04LTS, initial steps on function/def statement support * 0.1.23 - 2016-10-11 - Major arduino profile improvements, print-as-function not statement * 0.0.22 - 2016-09-25 - Enable ability to use a variety of Arduino boards by using an Makefile.in file * 0.0.21 - 2016-09-17 - Adds ability to control Arduino servo objects. Quite a lot of internal changes to support that @@ -398,7 +398,7 @@ legal statements. -Michael Sparks, October 2016 +Michael Sparks, November 2016 """ diff --git a/setup.py b/setup.py index 3e088de..e59759f 100644 --- a/setup.py +++ b/setup.py @@ -305,7 +305,8 @@ def find_packages(path, base="" ): Release History: -- 0.1.24 - UNRELEASED - TBD +- 0.1.24 - 2016-11-10 - Fix assignment in else/elif, update to support + Ubuntu 16.04LTS, initial steps on function/def statement support - 0.1.23 - 2016-10-11 - Major arduino profile improvements, print-as-function not statement - 0.0.22 - 2016-09-25 - Enable ability to use a variety of Arduino @@ -495,7 +496,7 @@ def find_packages(path, base="" ): simplifying the syntax, it also means that Arudino statements like Serial.print now become legal statements. -Michael Sparks, October 2016 +Michael Sparks, November 2016 """ ) diff --git a/site/src/changelog.md b/site/src/changelog.md index f48509f..b7cc689 100644 --- a/site/src/changelog.md +++ b/site/src/changelog.md @@ -3,7 +3,7 @@ template: mainpage source_form: markdown name: Changelog title: Changelog -updated: October 2016 +updated: November 2016 --- ## Change Log @@ -12,17 +12,67 @@ This project adheres to [Semantic Versioning](http://semver.org/), within reason. (Prior to a 1.0.0 release minor version increases may be backwards incompatible) -### In progress +## [0.1.24] - 2016-11-10 -## [0.1.24] - UNRELEASED +### What's been fixed? + +* Code generation for `else`/`elif` was failing when the statements inside + contained identifiers. This was due to context not propogating into + `else`/`elif`. This was caused by neither `if` nor `elif` adding else clauses + as children. This was done and now this operates correctly. ### New -* +* Added playful puppy example that compiles and controls the Dagu Playful Puppy + robot. (8 leg servos, 2 head/neck servos, infrared array sensor/eye) + * v0 no funcs Playful Puppy code analyses #213 + * v0 no funcs Playful Puppy code generates code #214 + * v0 no funcs Playful Puppy code compiles, & runs on device correctly #215 + +* Profile specific code has been extracted to a specific file. In this + case, the iniitial profile made more managable is of course the arduino + profile. To configure this/extend this, you now update the file + `pyxie/profile/arduino.py` + +* To add more predefined variables/etc that are used in the context (ala + A0, etc) you extend the function `populate_profile_context`. + +* If you need to add extra types - ala the `Servo` type - you can use + the `Servo` function call as an example. Note that it has a return + type of `Servo`. This means of course that the `Servo` function is + a constructor. For this to work clearly the type needs to be + defined - so you define it below in the variable `types`. + +* Started on _parsing_ side aspects of definition of simple user functions. + (ie `def` statements) Hopefully basic functions should be in the next + iteration of pyxie. + +### Internal Changes + +* `pyxie-dev` - Pyxie's release management tool, has had an overhaul, + and transferred into the pyxie package, rather than standalone code. + In the process code was improved, such that "dryrun" and "verbose" + now mean precisely that. Help text is deliberately verbose to note + what the release process is. + +* Check all Pynodes add all sub nodes as children correctly #264 + +* Start of function support: + * Lexing for function definition succeeds #265 + * Grammar parsing for function definition succeeds #266 + * Pynode support for def statements #269. + * Add a callable type #270 ### Other -* +* Reorganised backlog based on priorities - need, useful, want, wouldlike. + Plan going forward is to primarily focus on needs, and one or two from + each of the other categories. +* Function call code supports simplified type definitions for externals. #34 +* Block structure of generated C Code is pretty/human friendly/readable #26 +* Add special case for function calls like print #37 + + ## [0.1.23] - 2016-10-11 @@ -127,6 +177,8 @@ This is in addition to: * Updated docs + + ## [0.0.22] - 2016-09-25 This release sees a practicality change - specifically to allow the user @@ -157,6 +209,8 @@ with. * Minor cleanups + + ## [0.0.21] - 2016-09-17 Various small changes that result in the abilty to generate C++ code @@ -204,6 +258,8 @@ profiles. * Cleaned up/removed extraneous code * Bump for release + + ## [0.0.20] - 2016-08-12 Bulk of changes for this release are internal - various refactoring and so @@ -244,6 +300,8 @@ hence the new WIPNOTES :-) * Subsume tree functionality into core * Update changelog + + ## [0.0.19] - 2016-01-31 ### Fixes @@ -275,6 +333,8 @@ hence the new WIPNOTES :-) * Bump copyright notices to 2016(!) * Add link to latest release on homepage + + ## [0.0.18] - 2016-01-10 ### New @@ -321,6 +381,7 @@ hence the new WIPNOTES :-) * Do not clean up builds temporarily + ## [0.0.17] - 2015-08-12 ### New @@ -336,6 +397,8 @@ hence the new WIPNOTES :-) * Updated usage instructions to include covering using arduino profile * Documentation updated to current status (to a large extent) + + ## [0.0.16] - 2015-08-02 Summary: Adds initial Arduino LEONARDO support, improved function call, release build scripts @@ -382,10 +445,13 @@ as functionality stabilises. * Re-enable doc building + ## [0.0.15] - 2015-07-18 * clib converted to py clib for adding to build directory + + ## [0.0.14] - 2015-07-18 ### New @@ -404,6 +470,8 @@ as functionality stabilises. * Test case for for loops * Massive website revamp + + ## [0.0.13] - 2015-06-21 This probably marks the first release that's potentially properly useful when combined with @@ -418,6 +486,8 @@ expressions. * Support for boolean operators - specifically and/or/not, including any mixture * Support for parenthesised expressions + + ## [0.0.12] - 2015-06-17 ### New @@ -436,6 +506,8 @@ benchmarking and so on. Creative use ( while + break) allows creation of "if" li 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 @@ -457,6 +529,8 @@ as well as very basic datatypes. That's almost useful... :-) * Support empty statements/empty lines + + ## [0.0.10] - 2015-06-03 * Documentation added to pyxie/__init__.py, to allow project level help from "pydoc pyxie" @@ -470,12 +544,15 @@ as well as very basic datatypes. That's almost useful... :-) * New strategy for type inference documented, opens up lexical scoping * pyxie compile harness now runs/compiles programs outside the pyxie tree + + ## [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 + * Test modes for pyxie harness moved into a --test mode * Standalone parse mode -- pyxie parse filename -- parses the given filename, outputs result to console * Standalone compiler mode -- @@ -483,6 +560,7 @@ version to support a non-test mode - so you can output binaries, but also JSON p * pyxie compile path/to/filename.suffix path/to/other/filename -- compiles the given file to the destination filename ### Changed + * Switch to left recursion. The reason is because YACC style grammars handle this better than right recursion, and the fact it also fixes operator precedence correctly in expressions. The reason the grammar was originally right recursive @@ -491,11 +569,16 @@ version to support a non-test mode - so you can output binaries, but also JSON p parsing) ### Fixes + * Bracket negative literal values in expressions to avoid confusing C++ * Precedence as noted above. + + ## [0.0.8] - 2015-05-13 + ### Changed + Switched compilation over to using PyNode objects rather than lists Rolls up alot of changes, and improvements: @@ -537,6 +620,7 @@ Rolls up alot of changes, and improvements: ## [0.0.7] - 2015-04-29 + ### Changed - Bump revision for release - Compiler structure & testing improvements @@ -547,8 +631,12 @@ Rolls up alot of changes, and improvements: - Bugfix: Fix precedence for plus/minus/times/divide - Bugfix: Only output each include once + + ## [0.0.6] - 2015-04-26 + Overview -- Character Literals, math expressions, build/test improvements + ### Changed - Character literals - parsing and compilation - Initial version of changelog @@ -568,8 +656,11 @@ Overview -- Character Literals, math expressions, build/test improvements Simplest possible test initially + ## [0.0.5] - 2015-04-23 + ### Added + - Core lexical analysis now matches language spec - collection of changes, which can be summarised as follows: - Language spec updated relative to implementation & lexing states - Lexical analysis of block structure @@ -578,27 +669,39 @@ Overview -- Character Literals, math expressions, build/test improvements - Fleshed out lexical tokens to match language spec ### Changed + - Code cleanups + + ## [0.0.4] - 2015-04-22 + ### Added + - Extends C AST to match python AST semantics - Ability to use mixed literals in a print statement (1,True, "hello" etc) - Argument list management - Convert argument lists explicitly ### Changed + - Use Print not print ### Fixed + - Cleaned up debug output. + + ## [0.0.3] - 2015-04-21 + ### Added + - Adds ability to print and work with a small number of variables - Better handling, and code gneration for integer literals ### Changed + - Add long description (setup.py) - Update README.md to reflect project slightly better - Reworded/tightened up README @@ -608,20 +711,26 @@ Overview -- Character Literals, math expressions, build/test improvements - Build test results inside the test-data/genprogs directory + ## [0.0.2] - 2015-03-30 -*Initial Release* +*Initial Release* -- 0.0.1 was not released and rolled into 0.0.2 (release notes for 0.0.1 below) Simple assignment ### Added + - Transform Python AST to C CST - compile python to C++ for v simple program ### Changed + - Various tweaks for README/docs - Packaging for pypi and Ubuntu Launchpad PPA for initial release 0.0.2 + + ## [0.0.1] - Unreleased - rolled into 0.0.2 + ### Added - Initial structure, loosely based on SWP from a few years ago diff --git a/site/src/panels/shortlog.md b/site/src/panels/shortlog.md index d3bcd66..1238a30 100644 --- a/site/src/panels/shortlog.md +++ b/site/src/panels/shortlog.md @@ -5,7 +5,7 @@ name: Shortlog updated: August 2016 title: Shortlog --- -* 0.1.24 - UNRELEASED - TBD +* 0.1.24 - 2016-11-10 - Fix assignment in else/elif, update to support Ubuntu 16.04LTS, initial steps on function/def statement support * 0.1.23 - 2016-10-11 - Major arduino profile improvements, print-as-function not statement * 0.0.22 - 2016-09-25 - Enable ability to use a variety of Arduino boards by using an Makefile.in file * 0.0.21 - 2016-09-17 - Adds ability to control Arduino servo objects. Quite a lot of internal changes to support that