Skip to content

Releases: tomhea/flipjump

v1.5.0 stable

Choose a tag to compare

@tomhea tomhea released this 15 Jun 00:31
5d0d5d6

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 in pip 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 the DeviceMemory hook. Modes include:
    • standard (terminal, default)
    • pc (an interactive window: live keyboard and a scaled 256-color screen; needs pip 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:

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

Choose a tag to compare

@tomhea tomhea released this 10 Jun 21:39
4da18b7

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_until for 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 Catalog1029 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:

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

Choose a tag to compare

@tomhea tomhea released this 11 Jan 10:20
fe51448

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

Choose a tag to compare

@tomhea tomhea released this 12 Dec 11:33
aa01b31

Version 1.2.2 changes:

  • hex.div is finally ready & tested. It is much faster than the bit.div options.
  • 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:
    1. pytest --regular tests for all supported python versions, for each os of windows, ubuntu, macos (using tox).
    2. Linters & checkers: mypy, flake8, bandit, black.
    3. pytest --all in 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

Choose a tag to compare

@tomhea tomhea released this 18 Nov 23:01
c130aa5

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

Choose a tag to compare

@tomhea tomhea released this 17 Sep 21:09
2e2a70c

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.
  • Project reorganization: the flipjump python source files are under flipjump/ (reorganized and split into smaller files), and the stl files are under flipjump/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

Choose a tag to compare

@tomhea tomhea released this 23 Jun 09:51
a956630

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

Choose a tag to compare

@tomhea tomhea released this 04 Oct 12:05
d7bc6fa

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.