Releases: tomhea/flipjump
Release list
v1.5.0 stable
Version 1.5.0 changes:
- Blazing-fast interpreter ( x1000! ) 🚀🚀 - thanks to a new native C run-loop (
_fjcore.c), we now run at ~300M fj-ops/s, x1000 faster than the 1.4.0 interpreter. Prebuilt in the official wheels, so it's included inpip install flipjump(CPython ≥ 3.10; Linux, macOS, Windows).- Two pure-Python loops remain: Python's fast loop (~4M fj-ops/s), and the slower featured loop (allows breakpoints, debugging...).
- 1.5x-2x faster Assembler 🚀
- IO devices 🖥️ - pluggable input/output via
--io MODE. Devices can now read/write program memory directly through theDeviceMemoryhook. Modes include:standard(terminal, default)pc(an interactive window: live keyboard and a scaled 256-color screen; needspip install flipjump[io]).
- CLI debugger 🐛 - now textual: breakpoints, single-step/skip, and memory & flipjump-variable inspection, driven by named commands (
read,step,skip,continue, …). - New STL macros: Added
hex.abs,hex.fill_bytes,hex.copy_bytes. - Small bug fixes and improved documentation.
🚀 FlipJump Tools:
- FlipJump Online IDE
- Read-The-Docs site - Full STL and FlipJump documentation.
- IDE Plugins: VSCode | JetBrains
- flipJump-dev Claude skill - Use
/plugin marketplace add tomhea/skillsand/plugin install flipjump@tomhe.
Fully tested and ready to use on Windows, Linux, and macOS with Python 3.10+.
Full Changelog: 1.4.0...1.5.0
v1.4.0 stable
Version 1.4.0 changes:
- Parser additions: unary
-,~, power**, and logical&&,||operators. - New STL macros: decimal I/O (
hex.print_dec_uint/int,hex.input_dec_uint/int,hex.input_dec_uint/int_untilfor delimiter-stopped reads),hex.mul10,hex.min/hex.max, line-buffer helpers (hex.input_ptr_line,hex.print_ptr_text,hex.print_ptr_line), indexed-pointer, and signed-compare macros. - Assembler bug fixes: hygienic rep iterator names (fixed d/i name-collision miscompile); invalid escape sequences now rejected by the lexer; label shadowing a constant is now a parse error; .fj sources always read as UTF-8 regardless of OS locale; several assembler/runtime bugs from a code audit.
- STL bug fixes: bit.mul (failed to compile); bit.print_dec_uint (wrong output for n < 4); bit.print_hex_int/bit.dec_int (didn't restore input variable x).
- Programs Catalog — 1029 FlipJump programs across 16 categories. All programs pytest-tested via
--catalog. - Unit tests added for the assembler and interpreter (dedicated parallel CI job); module docstrings added to all Python files; dropped EOL Python 3.8/3.9, added Python 3.14.
🚀 FlipJump Tools:
- FlipJump Online IDE
- Read-The-Docs site - Full STL and FlipJump documentation.
- IDE Plugins: VSCode | JetBrains
- flipJump-dev Claude skill - Use
/plugin marketplace add tomhea/skillsand/plugin install flipjump@tomhe.
Fully tested and ready to use on Windows, Linux, and macOS with Python 3.10+.
Full Changelog: 1.3.0...1.4.0
v1.3.0 stable
Version 1.3.0 changes:
- Now supports c2fj - Take a look!
- Multiple macros improved -
div(more variations),shra, hex.shifts. - Improved Termination of run: Keyboard interrupt support; Shows bad memory address on memory error.
- Improved the import API of flip-jump.
- Small bug fixes.
It is all tested, and ready to be used on windows, linux, and mac, with python 3.8.1+.
Full Changelog: 1.2.2...1.3.0
v1.2.2 stable
Version 1.2.2 changes:
hex.divis finally ready & tested. It is much faster than thebit.divoptions.- stl refactor is complete. it is now fully documented (incl. updated complexities) and clean-code.
- Codebase improved: now passes mypy, flake8, bandit, black.
- Now supports CI - each pull request must succeed in the following tests:
pytest --regulartests for all supported python versions, for each os of windows, ubuntu, macos (using tox).- Linters & checkers: mypy, flake8, bandit, black.
pytest --allin parallel (The results are printed as a table in the workflow summary, for example).
- Updated READMEs and resources to match the new changes.
hex.div complexity improvement
| macro | Time | Space |
|---|---|---|
| bit.div_loop | 1,622,016 | 35,008 |
| bit.div | 942,080 | 1,036,288 |
| hex.div | 219,136 | 11,904 |
It is all tested, and ready to be used on windows, linux, and mac, with python 3.8.1+.
Full Changelog: 1.2.1...1.2.2
v1.2.1 stable
Version 1.2.1 changes:
- Improved pointers implementation - Memory access is now much faster.
- You can now store a whole byte inside one pointed op.
- new read/write hex/byte macros. push/pop now use the byte accessing.
- Improved debugger, Read Memory option: read flipjump variables (nicely formatted), and memory words.
- now supports running from python 3.7 to python 3.12
- added real life examples: prime_sieve & and bubble_sort programs.
- fix some small bugs, update documentation.
It is all tested, and ready to be used on windows or linux (and mac shouldn't be a problem), with python 3.7+.
The only exception is hex.div which still doesn't work (its tests are xfailed), so you can use the slower-but-stable bit.div+casts for division.
v1.2.0 stable
Version 1.2.0 changes:
- Flipjump is now a python package!
pip install flipjump:- Run the new command line tool:
fj hello-world.fj. - Import from python:
from flipjump import assemble_and_run, .... - Poetry support via the new pyproject.toml.
- Run the new command line tool:
- Project reorganization: the flipjump python source files are under
flipjump/(reorganized and split into smaller files), and the stl files are underflipjump/stl/. - The flipjump_quickstart.py file: easy access to the main flipjump features from Python.
- Improved READMEs and documentation.
It is all tested, and ready to be used on windows or linux (and mac shouldn't be a problem), with python 3.7+.
The only exception is hex.div which still doesn't work (its tests are xfailed), so you can use the slower-but-stable bit.div+casts for division.
v1.1.0 stable
Version 1.1.0 changes:
- Total refactor to the standard library - cleaner code, documented better, better tested, and faster in general.
Thus it has better maintainability and its better for learning. - All stl macros are now under the stl/bit/hex namespaces
- hex.pointers implemented (faster than bit.ptr)
- Improved READMEs
- Improved debugging (-d, --debuginfo, --debug-ops-list)
- Improve lexer-parser exceptions
It is all tested, and ready to be used on windows or linux (and mac shouldn't be a problem), with python 3.7+.
The only exception is hex.div which still doesn't work (its tests are xfailed), so you can use the slower-but-stable bit.div+casts for division.
v1.0.0 stable
This is the first stable version of Flip Jump.
It is all tested, and ready to be used on windows or linux (and mac shouldn't be a problem), with python 3.7+.
hexlib-div is the only thing that doesn't work, but you can use the bit.div with casts for a stable version of division.