jamesbowman / swapforth

Swapforth is a cross-platform ANS Forth
BSD 3-Clause "New" or "Revised" License
279 stars 56 forks source link

fix more array.tostring() removal issues in Python 3.9 #77

Open stuij opened 2 years ago

stuij commented 2 years ago

Several shell.py script versions use the depreciated array.tostring() method, which has been removed in Python 3.9. I changed these instances to .tobytes(), and adjusted .ljust()'s second argument to be a byte string.

I also fixed a related issue, where #flash'ing from a shell.py which assumes a 2-cell wide Forth to a non-.hex file would error because the unsigned short array returned from serialize() would be written to file with assumptions of signed short:

open(dest, "wb").write(array.array("h", d).tobytes())

This would cause an overflow error. Changing "h" to "H" in that last code snippet (in swapforth.py), lines up the signdedness.

stuij commented 2 years ago

I did notice that the previous commit to fix this kind of issue made a wrapper function to be compatible both with pre and post Python 3.2 code. However Python 3.2 has been released 11 years ago, and I hoped for this repo which might not be too embedded in the corporate world, we might be able to make the assumption/minimum requirement of people using Python 3.2 or later?

stuij commented 2 years ago

updated with fix for J1b