Releases: Voblit/py2ez80
Release list
1.1.2 [compilation fix]
A huge problem with D is that it requires some dlls at runtime. I tried throwing them into the dependencies, but a nicer way would just be to make it compile an .exe that doesn't need allathat.
- Fixed missing runtime DLL dependency by switching executable builds to static 32-bit OMF compilation (
-m32). - Embedded C and D runtime libraries directly into
py2ez80.exe, eliminating external Visual C++ Redistributable requirements. - Resolved execution crashes (
0xc000007band missingmsvcr120.dll) when running on clean Windows environments without DMD installed.
1.2 [Wizard]
Finally, we've added an interactive wizard, and flags to allow for multiple files compiled, and to only compile to C.
- Interactive CLI Wizard: Added an interactive terminal wizard triggered automatically when launching
py2ez80.exewithout arguments or via the--wizardflag. - C-Only Output Flag (
--only-c): Added support to transpile Python files directly to standalone C99 (.c) source code without invoking the CEdev build pipeline. - Batch Compilation (
--multi): Introduced multi-file processing support to sequentially transpile and compile multiple Python scripts in a single command. - ANSI Color Output: Added multi-colored ANSI terminal styling across standard build logs, status messages, and the terminal header banner.
1.1.1 [bug fix]
After another batch of testing, I discovered that the input function didn't work, so here is the patch...
- Fixed
input()variable type inference: UpdatedAssignNodechecking incodegen.dto detectinput()calls and track target variables asconst char*pointers, preventing invalid C99 implicit integer conversion assignments. - Resolved missing system input header: Added explicit
#include <ti/screen.h>header to the code generator preamble to properly expose the native CEdev toolchain declaration foros_GetStringInput. - Integrated native OS input prompt: Lowered Python's
input()function toos_GetStringInput(":", buf, sizeof(buf) - 1)runtime calls, enabling native, full-line text input on the TI-84 Plus CE keypad.
As always, all the .exe needs is to be within the same folder as the input python file and the CEdev folder, so all you need is this file...
1.1 [Random Lib]
This new release adds the "random" library
- Added
randommodule support: Integrated lowering forrandom.seed(),random.random(),random.randint(), andrandom.randrange()incodegen.d. - Fixed missing expression semicolons: Ensured top-level method calls like
random.seed(42)correctly append terminating semicolons to generated main statements. - Resolved
printfformat mismatches: UpdatedCallNodeprint handling to dynamically emit%fforfloat/doublevariables instead of defaulting to%d. - Fixed statement lowering error: Corrected
CCodegen.generatemain loop iteration to handle pre-compiled C statement strings directly without callingcompileNode.
Technically, all the .exe needs is to be within the same folder as the input python file and the CEdev folder, so all you need is this file...
1.0.1 [bug fix]
We where aware with a critical bug in the import math system and have fixed it.
- Resolved strict C99 implicit function errors: Added explicit
#include <math.h>and#include <stdio.h>headers directly to the code generator preamble to prevent fatal LLVM/CEdev toolchain failures. - Fixed
import mathmodule mapping: CorrectedImportNodelowering incodegen.dso importing Python'smathlibrary properly includes native C<math.h>headers during compilation.
Technically, all the .exe needs is to be within the same folder as the input python file and the CEdev folder, so all you need is this file...
1.0
First release! Technically, all the .exe needs is to be within the same folder as the input python file and the CEdev folder, so all you need is this file...
Has following features:
- Variables and Types: Implicit typing for integers, floats, booleans, and strings.
- Operators: Arithmetic (+, -, *, /, %), comparison (==, !=, <, >, <=, >=), and logical (and, or, not) operators.
- Assignments: Standard (=) and compound assignments (+=, -=, *=, /=).
- Conditionals: if, elif, and else logic.
- Loops: while loops and for loops using range().
- Loop Control: break, continue, and pass statements.
- Data Structures: List declaration, indexing, assignments, and .append() methods, alongside basic tuple and dictionary literal parsing.
- Functions: Custom function definitions (def) with parameter passing and return statements.
- Built-ins and Modules: Built-in print(), len(), and input() functions, plus math module mapping (e.g., math.sqrt()).
- Classes and OOP: Class definitions and method calls compiled to C structs.
- Exception Handling: Emulated try, except, and raise blocks using standard C jumps.