From 56ee11e7f34c136bb8c7d0c264b92697b4f91444 Mon Sep 17 00:00:00 2001 From: JeanExtreme002 Date: Tue, 8 Sep 2026 20:05:47 -0300 Subject: [PATCH] chore: bump version to 3.0.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Major, not minor, because of one change: `read_process_memory(addr, int, N)` with N in 3, 5, 6 or 7 and the value's top bit set now returns a different number, on every platform, with no exception raised. bytes in memory: FF FF FF (a 24-bit unsigned field at its maximum) 2.2.1 -> 16777215 3.0.0 -> -1 Half the value space of each affected width changes sign. A guard like `if money < 1000` silently inverts, and in a memory editor the branch that flips is the one that writes. The round trip also stops closing: the range check on the write path accepts the union of the signed and unsigned ranges, so 16777215 is still a valid 3-byte write and reads back as -1. Nothing in the API signals it. Measured across 220 read combinations, the whole surface of the change is four of them — but semver is not about how many callers break, it is about whether they can break without knowing. The five other behaviour changes do not on their own need a major. Their previous behaviour was memory-unsafe or meaningless, so no working code depends on it: a width wider than the type's C representation overflowed the caller's buffer (`get_c_type_of(bool, 8)` sized 1 byte for an 8-byte read), `float` at 3 bytes returned a plausible-looking number from unread bytes, and Linux read and wrote `sizeof(buffer)` rather than the width asked for, which made the same call answer differently per platform. Also in this release: the MCP server (14 tools, opt-in via the `mcp` extra), `iter_processes()`, and `decode_scan_target` / `make_predicate` promoted from private. --- PyMemoryEditor/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyMemoryEditor/__init__.py b/PyMemoryEditor/__init__.py index 68e8a42..6f03310 100644 --- a/PyMemoryEditor/__init__.py +++ b/PyMemoryEditor/__init__.py @@ -8,7 +8,7 @@ """ __author__ = "Jean Loui Bernard Silva de Jesus" -__version__ = "2.2.1" +__version__ = "3.0.0" import logging import sys