2026-10-11 Andrey V. Kosteltsev * Release 0.4.1. * Add common Linux/i386 ILP32 syscall sysdeps for i586 and i686. * Reuse the existing 34 Linux syscall adapters and four conversion helpers without duplicating them between CPU-generation subdirectories. * Repair the Autoconf/m4 quoting of the i[4567]86 shell pattern so the generated i386 preconfigure fragment actually recognizes i586/i686. * Require the compiler to provide a real i386 ILP32 data model when an i[4567]86 HOST triplet is selected; reject a forgotten -m32 early. * Enable the standard Autoconf large-file mechanism so off_t is 64 bits on Linux/i386 while leaving the existing time_t overflow policy unchanged. * Keep x86_64 sysdeps and every guest-visible MCPU ABI unchanged. 2026-10-11 Andrey V. Kosteltsev * Fixed warnings. 2026-10-09 Andrey V. Kosteltsev * Release 0.4.0. * Bump version for public release. 2026-10-08 Andrey V. Kosteltsev * Release 0.3.35. * Add CPU/system opcodes SETF=0x0010, CLRF=0x0011, CLRCPUF=0x0012 and CLRMPUF=0x0013. * Define writable arithmetic/status flags as PSW bits 0..15: SETF/CLRF accept AF..INXF, modify exactly one selected bit and reject HF/TF/IF. * Define PSW[7:0] as the CPU flag byte and PSW[15:8] as the MPU flag byte; CLRCPUF clears only 0x000000ff and CLRMPUF only 0x0000ff00. * Preserve HF/TF/IF/MODE and every non-selected flag across the new instructions; keep JSET/JCLR read selectors unchanged. * Keep existing LibMPU IADC/ISBB and rotate-through-carry semantics; the new instructions only provide explicit initial flag state. * Update assembler, decoder/executor and mcpu-objdump opcode/disassembly support. * Add regression coverage for flag writes, bulk clears, assembler rejection, IADC/ISBB carry input and objdump output. * Update architecture PDF sources/PDF and English/Russian mcpu-as(1) and libmcpu(7) manual pages. * Keep MELF, syscall, HLL Runtime ABI, CRT, linker, loader and lifecycle contracts unchanged. 2026-10-06 Andrey V. Kosteltsev * Release 0.3.34. * Make both PDF reference manuals independent of the LibMCPU package release number; package history remains in NEWS.md/ChangeLog. * Replace the obsolete draft HLL/CRT text with the signed HLL Runtime ABI: int32/int64/PTR64 signatures, normalized fini, mcpu-ld PROGRAM/MODEL classification, automatic CRT insertion, McpuStartup ownership, MCPU Libc hooks, PRE_RUNTIME/RUNNING, life status namespace and finalization. * Add complete reference appendices for mcpu-as directives, every public OPCODE16 with operands/descriptions, PSW selectors and RCONST selectors. * Remove stale release-history and in-tree examples references from the PDF manuals; examples are a separate package. * Correct syscall documentation to the stable host-independent MCPU errno ABI. * Keep ISA, MELF ABI, syscall ABI, HLL ABI, CRT and runtime/linker semantics unchanged from the verified 0.3.33 baseline. 2026-10-06 Andrey V. Kosteltsev * Release 0.3.33. * Make README.md version-independent and move release history responsibility explicitly to NEWS.md and ChangeLog. * Remove hard-coded package release numbers from all English and Russian man-page .TH source fields; installed --version/--dump-version remain the authoritative release-number interface. * Expand README.md, libmcpu(7), mcpu-ld(1), mcpu-run(1) and mcpu-as(1) for the signed HLL Runtime ABI v1, automatic PROGRAM/MODEL CRT selection, McpuStartup and low-level/HLL lifecycle ownership. * Document fatal missing-CRT behavior and the canonical /lib/mcpu CRT installation path. * Add a regression that prevents release-bound LibMCPU versions from returning to README.md/man sources. * Keep ISA, MELF ABI, syscall ABI, HLL ABI, CRT and runtime/linker semantics unchanged from the user-verified 0.3.32 baseline. 2026-10-06 Andrey V. Kosteltsev * Release 0.3.32. * Make successful mcpu-as and mcpu-ld invocations quiet by default and preserve their existing object summaries behind -v/--verbose. * Apply mcpu-ld verbose summaries to partial ET_REL, static ABI-v1 ET_EXEC, dynamic ABI-v3 ET_EXEC and ABI-v3 ET_DYN output. * Normalize installed utility --help option descriptions with an aligned " - " separator and aligned continuation lines. * Indent mcpu-run Stage actions by four spaces. * Add regression coverage for quiet defaults and both verbose spellings. * Document -v/--verbose in the English and Russian mcpu-as(1) and mcpu-ld(1) manual pages. * Keep ISA, MELF ABI, syscall ABI, HLL Runtime ABI, CRT and runtime semantics unchanged from 0.3.31. 2026-10-06 Andrey V. Kosteltsev * Release 0.3.31. * Remove the complete examples/ tree from LibMCPU; manual/book examples are now intended to be distributed as a separate package. * Move the canonical mcpu-ld.conf source from top-level etc/ to sysroot/etc/ without changing its installed /etc path. * Remove the obsolete sysroot/usr/src/mcpu/libc-stub and hll-emul development trees. * Move the HLL/CRT-only assembler regression inputs into tests/fixtures/hll so make check remains self-contained. * Keep ISA, MELF ABI, syscall ABI, HLL Runtime ABI, CRT behavior and runtime/linker semantics unchanged from the verified 0.3.30 baseline. 2026-10-05 Andrey V. Kosteltsev * Version 0.3.28. * Implement the signed MCPU HLL Runtime ABI v1 CRT bridge. * Add automatic PROGRAM/MODEL classification and CRT insertion to mcpu-ld without new --program/--model options. * Add crt0.o/crt1.o/crti.o/crtn.o sources and install only the generated CRT objects under the MCPU target root. * Add PRE_RUNTIME/RUNNING startup state, McpuStartup validation, int64 argc bridging, MODEL life-status handling and ordered HLL finalization. * Make HLL roots, CRT-private symbols and internal libc hooks non-preemptible in ABI-v3 executables. * Add never-installed libc-stub and mcpu-cc output emulators under sysroot; keep the complete existing examples tree unchanged. * Add end-to-end HLL CRT regression coverage, including ET_DYN ownership restrictions and pre-runtime startup failure. 2026-10-05 Andrey V. Kosteltsev * Version 0.3.27. * Add guest-descriptor dup() and dup2() system calls as __NR_dup=0x126 and __NR_dup2=0x127. * Keep guest and HOST descriptor namespaces separate; implement both guest calls over the HOST __cpu_sys_dup() adapter rather than HOST dup2(). * Preserve borrowed HOST stdio, POSIX oldfd==newfd behavior, exact dup2 target replacement, and descriptor-flag clearing on real duplication. * Add tst-dup regression coverage and manual dup-basic/dup2-basic syscall examples. 2026-10-05 Andrey V. Kosteltsev * Version 0.3.26. * Move the canonical public MCPU assembler ABI headers to sysroot/include/sys/asm/. * Install sys/asm headers only from the canonical sysroot tree. * Make tst-errno-abi consume public headers from sysroot, eliminating the regression-test dependency on examples/. * Keep examples/syscalls/include/sys/asm/ as a standalone snapshot and add an explicit maintainer sync target from sysroot to examples. * Copy historical regression assembler inputs into tests/fixtures/ and remove all automatic-test references to examples/. 2026-10-05 Andrey V. Kosteltsev * Version 0.3.25. * Replace raw HOST errno syscall results with the stable MCPU errno ABI. * Add HOST-to-MCPU errno translation, public sys/asm/errno.h and the LibMPU-compatible sys/asm/mpu-errno.h Math Processor Unit interface. * Migrate every existing syscall error path and add errno ABI regressions. 2026-10-04 Andrey V. Kosteltsev * Version 0.3.11. * Added stat/fstat/lstat with fixed 128-byte struct __cpu_stat ABI. 2026-10-04 Andrey V. Kosteltsev * Version 0.3.10. * Align examples/syscalls assembler syscall-number names with cpu/cpu-syscalls.c: use __NR_* consistently. 2026-10-04 Andrey V. Kosteltsev * Version 0.3.9. * cpu/Makefile.am: rename sysdeps dependency .Tpo files to .Plo. 2026-10-04 Andrey V. Kosteltsev * Version 0.3.8. * Remove the erroneous top-level dist-hook added while packaging manual examples; rely on the normal EXTRA_DIST rules so make distcheck does not overwrite files in Automake's read-only distribution tree. * Keep every examples subtree except examples/syscalls byte-identical to the 0.3.4 baseline. * Rewrite examples/syscalls run scripts as transparent manual demonstrations without hidden PASS/FAIL tests, and expand its README into book-oriented documentation of the descriptor-I/O ABI and all four examples. * Place scratch read buffers in .bss and use .zero only as the supported NOBITS reservation directive inside .bss. * Preserve the 0.3.7 object-tool version-test fix and the 0.3.5 syscall ABI. 2026-10-04 Andrey V. Kosteltsev * Version 0.3.7. * Make object-tool --version runner checks use Automake PACKAGE_VERSION instead of the historical hard-coded 0.3.4 string. 2026-10-04 Andrey V. Kosteltsev * Version 0.3.6. * Remove tst-syscall-runner.sh and tst-syscall-io-runner.sh from tests. * Keep examples/syscalls as a manual user/documentation tree, use installed mcpu-* tools from PATH, and disable GNU make built-in suffix rules there. * Replace unsupported assembler label-subtraction immediates in examples with MCPU PTR64 arithmetic using LEA/PDIFF. 2026-10-04 Andrey V. Kosteltsev * Version 0.3.5. * Add SYS_read, SYS_write, SYS_lseek, SYS_open and SYS_close using the MINIX-style VFS number block 0x100..0x105, leaving 0x104 reserved. * Add a per-cpu_context 256-entry guest descriptor namespace with borrowed stdin/stdout/stderr and owned descriptors returned by SYS_open. * Add common PTR64 copyin/copyout/copyinstr validation and strict UTF-8 pathname validation at the guest/HOST boundary. * Add Linux/x86_64/LP64 sysdeps wrappers for POSIX open/close/read/write/ lseek with explicit MCPU-to-HOST flag, mode and whence translation. * Add examples/syscalls with canonical assembler headers, examples, run scripts and book-oriented README; install headers under the MCPU root. 2026-10-04 Andrey V. Kosteltsev * Version 0.3.4. * Add the HOST sysdeps configuration hierarchy for future syscall wrappers, based on the historical LibMPU preconfigure/sysnames/VPATH model. * Add architecture preconfigure.ac/preconfigure fragments for i386, PowerPC, SPARC and x86_64; x86_64 distinguishes x32/ILP32 and 64-bit LP64. * Add ordered Implies inheritance and GNU make vpath selection through the substituted sysnames variable, with cpu/sysdeps/generic always last. * Reject HOST OS/CPU hierarchies not represented by LibMCPU sysdeps instead of accepting a generic-only configuration. * Add no syscall wrappers and change no CPU, MELF or SYS_brk semantics. 2026-10-04 Andrey V. Kosteltsev * LibMCPU 0.3.3: remove tst-version-runner.sh from TESTS and EXTRA_DIST, and remove the runner itself from the release source tree. * Keep the centralized --version/--dump-version implementation unchanged; version reporting may be verified directly from the installed tools. * No CPU ISA, MELF ABI, linker, loader/runtime or syscall semantic changes. 2026-10-04 Andrey V. Kosteltsev * Version 0.3.2. * Make tests/tst-version-runner.sh self-contained when CPU_AS, CPU_LD, CPU_RUN and the other CPU_* tool variables are not exported. Values supplied by the Automake harness remain authoritative; otherwise the runner resolves freshly built sibling utilities itself. * No CPU, MELF, runtime, binary-utility or syscall semantics changed. 2026-10-04 Andrey V. Kosteltsev * Version 0.3.1. * Normalize --version output for every installed mcpu-* tool as " (MCPU) " and add --dump-version for a bare version. * Add utils/mcpu-version.c/.h as the single implementation of version formatting and link it into all nine command-line utilities. * Add a common regression for both version forms and synchronize bilingual manual pages and command help. * Keep CPU ISA, frozen MELF ABI v3, linker, loader/runtime and syscall semantics unchanged. 2026-10-04 Andrey V. Kosteltsev * Version 0.3.0. * Start the SYSCALL development stage from the verified LibMCPU 0.2.28 binary-utility baseline. * Move English manual-page build/install rules from the top-level Makefile.am to man/Makefile.am and Russian rules to man/ru/Makefile.am. * Add man and man/ru to the recursive Automake/configure output tree. * Keep CPU ISA, frozen MELF ABI v3, linker, loader/runtime, binary-utility and syscall semantics unchanged. 2026-10-03 Andrey V. Kosteltsev * LibMCPU 0.2.28: finalize documentation for the verified 0.2.27 binary-utility stage without changing CPU/MELF execution semantics. * Add English and Russian mcpu-*(1) manual pages for every installed utility and libmcpu(7) overview pages; install localized pages below the Russian man tree. * Update both maintained PDF manuals for frozen ABI v3, the complete binary-utility set and the non-ALLOC debug-metadata compatibility rule. * Synchronize README.md, NEWS.md and doc/src documentation sources. 2026-10-03 Andrey V. Kosteltsev * Version 0.2.27. * Add mcpu-objcopy as a MELF-to-MELF structural copy/editor with -j/--only-section, -R/--remove-section, --dump-section, --add-section, --update-section and --rename-section. * Restrict mutations to safe non-runtime metadata: added sections are non-ALLOC SHT_PROGBITS, update/rename operate only on safe non-ALLOC PROGBITS, and removal/filtering refuses runtime-critical or ET_REL link-critical sections. * Preserve PT_LOAD contents/program headers and frozen MELF ABI-v3 execution semantics; deliberately omit binary/ihex/srec, VMA/LMA, start-address and section-flag conversion modes. * Support deterministic static archives member-by-member while preserving their symbol-index semantics; reject ambiguous --dump-section on archive input. * Refactor the common MELF section parser/rebuilder from mcpu-strip into mcpu-object-edit.c/.h and use it from both mcpu-strip and mcpu-objcopy. * Add regressions for copy/add/dump/update/rename/remove, protected runtime/link sections, strict --only-section filtering, ET_REL relinking, archive editing and command-line errors. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.26. * Add mcpu-strip with in-place operation and -o/--output for MELF files and deterministic MCPU archives. * Remove ordinary non-allocated SHT_SYMTAB and now-unreferenced ordinary string tables only from ET_EXEC/ET_DYN; preserve ET_REL .symtab/.strtab as required link semantics. * Preserve .dynsym, .dynstr, .dynamic, all retained RELA sections, MCPU target/lifecycle metadata, load/model sections and program headers. * Rebuild and compact the non-ALLOC metadata tail, rebuild .shstrtab, remap surviving section references and retained symbol st_shndx values, and preserve input file mode. * Add regressions for current no-op ET_REL/ET_EXEC/ET_DYN/archive cases and for a synthetic valid ET_EXEC carrying removable ordinary .symtab/.strtab metadata; verify stripping shrinks it and leaves execution unchanged. * Keep frozen MELF ABI-v3, linker/runtime behavior, CPU ISA and archive semantics unchanged. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.25. * Add mcpu-objdump for read-only section headers, full section contents, ordinary/dynamic symbol tables, RELA relocations and MCPU disassembly of MELF ET_REL, ET_EXEC, ET_DYN and UNIX static archives. * Add -d/-D/-r/-s/-t/-T/-h/-j with GNU-objdump-like meanings; -j is repeatable and filters section-oriented output. * Add __cpu_decode_at() so inspection code can decode an explicit PROGRAM byte buffer without replacing the live CPU context; retain __cpu_decode() as the runtime wrapper. * Make disassembly symbol-aware and print retained relocation records beside the instruction that contains each relocation field. * Continue through undecodable bytes with explicit .byte output rather than guessing instruction boundaries. * Install mcpu-objdump under the relocatable private MCPU bin directory and create the corresponding public relative symlink. * Add regressions for the common decoder, section filtering, symbols, dynamic symbols, relocations, disassembly, archives, grouped options and malformed input. * Keep frozen MELF ABI-v3, assembler encoding, linker/archive semantics, loader/runtime behavior and CPU execution semantics unchanged. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.24. * Add mcpu-nm for read-only symbol inspection of MELF ET_REL, ET_EXEC, ET_DYN and UNIX static archives. * Read .symtab by default and .dynsym with -D; classify code/data/BSS/read-only/undefined/absolute/common/weak symbols with conventional one-letter codes. * Add external/undefined filters, lexical/numeric/reverse/no-sort modes, archive/member display and per-line file prefixes. * Install mcpu-nm under the relocatable private MCPU bin directory with the same public relative-symlink policy as the existing tools. * Add regressions for ordinary/dynamic symbols, filtering, sorting, ET_EXEC/ET_DYN, static archives, prefixes and malformed input. * Keep frozen MELF ABI-v3, mcpu-ld, mcpu-ar archive semantics, runtime loader and CPU ISA unchanged. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.23. * Add mcpu-ld --static as a library-selection modifier that forces every -lNAME lookup to use libNAME.a without changing the selected output mode. * Preserve ABI-v3 --dynamic/--shared output under --static while incorporating selected archive members directly and emitting no DT_NEEDED for them. * Preserve directory-major -L search order while skipping shared-only candidates under --static and continuing to later directories for libNAME.a. * Accept --static with ABI-v1 and -r, whose -l lookup is already archive-only, and fail rather than falling back to .so when no archive is available. * Add dedicated forced-static regressions for ABI-v1, ABI-v3 ET_EXEC/ET_DYN, -r, search order, missing archives and help text. * Keep frozen MELF ABI-v3, mcpu-ar archive format, runtime loader, dependency resolver, CPU ISA and runtime symbol-scope semantics unchanged. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.22. * Add mcpu-ld -r partial relocatable linking, producing one current MELF ET_REL object from multiple ET_REL inputs. * Merge like-named sections in input order with alignment, rebase defined symbols and relocation offsets, preserve RELA records, and allow unresolved symbols to remain for a later final link. * Preserve LOCAL symbol identity across inputs and apply deterministic GLOBAL/WEAK merging; reject duplicate strong GLOBAL definitions during the partial link. * Allow -r to consume static libNAME.a archives with the existing selective extraction semantics; shared libraries are not eligible in relocatable-link mode. * Reject final-image-only options and modes with -r, including --dynamic, --shared, STACK/HEAP sizing and --soname. * Split release history from README.md into NEWS.md and keep README.md as a concise project/build/tool usage introduction. * Update the Russian MELF ABI manual from doc/src for frozen ABI v3, SONAME/NEEDED dependencies, static archives and mcpu-ld -r. * Add partial-link regressions covering retained relocations, unresolved references, LOCAL/GLOBAL/WEAK semantics, archive extraction and final-link execution. * Keep frozen MELF ABI-v3, runtime loader, dependency resolver, CPU ISA and runtime symbol-scope semantics unchanged. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.21. * Teach mcpu-ld to consume UNIX static archives containing current MCPU MELF ET_REL members. * Allow ABI-v1 -lNAME to resolve libNAME.a; for ABI-v3 --dynamic/--shared search each library directory for libNAME.so first and libNAME.a second. * Extract only archive members needed by currently unresolved strong GLOBAL symbols; unresolved WEAK symbols do not trigger extraction. * Recompute unresolved symbols after each extraction and rescan the same archive until stable, including backward dependencies on earlier archive members. * Preserve one-pass ordering across separate -l operands; repeating an archive request can satisfy references introduced by intervening libraries. * Keep statically extracted members out of DT_NEEDED while preserving existing SONAME validation and dependency recording for selected ET_DYN providers. * Parse archive member bytes directly with the strict ET_REL reader rather than via temporary files, and keep correctness independent of the optional archive symbol index. * Add regressions for indexed/non-indexed archives, selective extraction, intra-archive rescans, WEAK behavior, inter-library order, ABI-v1 archive-only lookup and ABI-v3 .so/.a directory precedence. * Keep frozen MELF ABI-v3, runtime loader, CPU ISA, relocation and runtime symbol-scope semantics unchanged. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.20. * Add mcpu-ar as a deterministic UNIX static-archive manager for current MCPU MELF ET_REL object modules. * Support r/q/d/t/p/x operations, standalone s, and c/s/v/D modifiers with traditional combined operation strings such as rcs. * Preserve member order; r replaces in place, q appends, and only validated MCPU ET_REL members are accepted. * Support short names, BSD #1/ extended names, and reading GNU // long-name tables with /offset references. * Write a real System-V/GNU-style archive symbol index containing defined GLOBAL/WEAK MCPU symbols; preserve/rebuild an existing index after archive mutations. * Make archive output reproducible by using deterministic member metadata and add regressions for create/list/print/extract/replace/append/delete/index/long-name/error behavior. * Install mcpu-ar under the relocatable MCPU private bin directory with the same public relative-symlink policy as the other MCPU utilities. * Keep mcpu-ld archive consumption, static -l fallback and partial relocatable linking deferred to later releases; frozen MELF ABI3 and runtime behavior are unchanged. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.19. * Replace mcpu-as historical #line source-location parsing with preprocessing line markers of the form # N, # N "filename" and # N "filename" flags..., with decimal N in 0..2147483647 and trailing flags ignored. * Ignore #pragma and #lang without advancing the logical diagnostic line counter; discard all other #... lines as assembler syntax while counting them as ordinary logical source lines. * Keep preprocessor source-control details out of mcpu-as --help and document them in the technical documentation instead. * Print each mcpu-readelf Section Headers entry on one wide physical line instead of wrapping every section into two lines; keep -W/--wide accepted for compatibility. * Add regressions for line-marker flags, filename retention, empty lines, #pragma/#lang counting, generic # lines, obsolete #line behavior and one-line section-header formatting. * Keep the frozen MELF ABI-v3, CPU ISA, linker, loader, dependency resolver, relocation and runtime symbol-scope semantics unchanged. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.18. * Freeze the completed MELF ABI-v3 wire/runtime dependency contract after the staged SONAME/NEEDED, link-time validation, recursive loading and deterministic symbol-scope work in 0.2.14--0.2.17. * Add MCPU_LD_PRELOAD as the environment counterpart of mcpu-run --ldpreload; environment entries are resolved first and command-line entries are appended after them. * Preserve rightmost-higher-priority explicit-preload semantics, so equal-strength command-line preloads naturally override environment preloads. * Keep MCPU_LD_PRELOAD independent of mcpu-ld.conf, --no-config and --sys-root; it uses the same effective library resolver after search-path/configuration policy has been established. * Make the regression environment explicitly start with an empty MCPU_LD_PRELOAD and add dedicated environment-preload and ABI-v3 freeze/end-to-end regressions. * Keep ABI-v1/ABI-v2 loader compatibility and make no CPU ISA, MELF-v3 wire-format, SONAME/NEEDED, -L/-l, search-path, relocation or symbol-scope changes. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.17. * Define deterministic ABI-v3 runtime symbol scope for mcpu-run: GLOBAL outranks WEAK; explicit --ldpreload is the highest equal-strength scope and remains rightmost-higher-priority; the main executable outranks normal dependencies; normal DT_NEEDED scope is breadth-first and left-to-right. * Replace recursive DFS dependency ordering with a stable breadth-first SONAME queue while preserving cycle termination and deduplication. * Pass the explicit-preload boundary separately from the resolved module list so the low-level loader does not infer scope classes from incidental path order. * Preserve the historical flat-preload behavior of direct cpu_dyn_load() compatibility callers while mcpu-run uses the scoped resolved loader path. * Add regressions for main/dependency priority, direct dependency order, explicit-preload override, GLOBAL/WEAK precedence, WEAK-only ordering, direct/transitive scope and diamond dependency graphs. * Keep MELF ABI version 3 and make no on-disk format, search-path or link-time -l changes. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.16. * Add recursive runtime resolution of ABI-v3 DT_NEEDED dependencies to mcpu-run using the existing MCPU library search policy. * Resolve each dependency by SONAME, validate the selected ABI-v3 ET_DYN image and require its DT_SONAME to match the requested DT_NEEDED identity exactly. * Resolve transitive dependencies recursively, deduplicate already registered SONAMEs and terminate dependency cycles without duplicate loads. * Keep filesystem/configuration search policy in a host-side dependency resolver and pass only the completed module list to a separate resolved low-level load path. * Load normal dependencies before explicit --ldpreload modules so the established explicit-preload override behavior remains intact; an ABI-v3 preload with a matching SONAME may satisfy a normal dependency. * Preserve the legacy no--l plus explicit --ldpreload workflow unchanged. * Add regressions for direct and transitive NEEDED loading, missing transitive dependencies, SONAME mismatch, dependency cycles and preload override of a normal dependency. * Convert the maintained pendulum example to the normal ABI-v3 dependency workflow with a librk4 SONAME symlink chain, -lrk4 link and no --ldpreload at runtime. * Keep MELF ABI version 3; ordinary dependency-graph symbol-scope policy remains a development item for 0.2.17. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.15. * Add mcpu-ld -l NAME / -lNAME for ABI-v3 dynamic outputs; -lNAME searches libNAME.so through explicit -L directories followed by the effective MCPU system library path. * Validate each selected provider as a complete ABI-v3 ET_DYN image, read its mandatory DT_SONAME and record that SONAME rather than the development link name or physical pathname in DT_NEEDED. * Validate strong undefined imports of ABI-v3 ET_EXEC against the exports of explicitly linked libraries before output is written; unresolved WEAK imports keep their existing optional semantics. * Deduplicate repeated direct dependencies by SONAME while preserving first-request order. * Permit ABI-v3 ET_DYN outputs to record direct NEEDED dependencies as well; ABI-v1 static output rejects -l. * Keep the verified explicit-preload workflow unchanged when no -l operands are supplied; recursive DT_NEEDED runtime loading remains deferred to 0.2.16. * Add regressions for SONAME symlink layouts, -L priority, config-based library lookup, missing/malformed providers, missing exports, duplicate SONAMEs and the 0.2.16 runtime boundary. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.14. * Introduce development MELF ABI-v3 dependency metadata while preserving ABI-v1 and ABI-v2 loader compatibility. * Define SHT_DYNAMIC/.dynamic and the 16-byte MElf64_Dyn wire format with DT_NULL, DT_NEEDED and DT_SONAME tags linked to .dynstr. * Make new mcpu-ld --dynamic/--shared outputs ABI-v3; require --soname=NAME for ABI-v3 ET_DYN and reject pathname SONAMEs. * Keep the historical ABI-v2 writer internally for compatibility regressions. * Extend mcpu-run dynamic parsing to accept ABI-v2 and ABI-v3, validate canonical .dynamic metadata and reject DT_NEEDED explicitly until recursive dependency loading is implemented. * Add mcpu-readelf -d/--dynamic and include dynamic metadata in -a. * Update dynamic/shared examples and regressions for ABI-v3 SONAME, ABI-v2 compatibility, ABI-v3 explicit preload and negative SONAME cases. * No recursive dependency loading, -l handling or NEEDED symbol validation is introduced in this release. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.13. * Add a common host-side MCPU library-search resolver shared by mcpu-ld and mcpu-run. * Add --library-path=DIR[:DIR...] / --library-path DIR[:DIR...] to mcpu-run; repeated options append explicit search directories in command-line order. * Resolve bare --ldpreload names through explicit directories followed by the effective MCPU_LD_SYSTEM_LIBRARY_PATH; pathnames containing '/' keep the historical direct-path behavior. * Add -L DIR and -LDIR to mcpu-ld so linker search state and --print-search-dirs use the same common ordering policy. * Keep -l deliberately unsupported until dependency metadata can give it real linker/NEEDED semantics. * Preserve existing --ldpreload list order and rightmost-higher-priority interposition after name resolution. * Add regressions for system/configured lookup, explicit-path priority, search-order changes, empty system paths, missing libraries, invalid path lists and mcpu-ld -L diagnostics. * No CPU ISA, MELF ABI, SONAME/NEEDED, relocation or dynamic-loader semantics change in this release. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.12. * Add --dump-config and --print-search-dirs diagnostic information actions to mcpu-ld and mcpu-run through the common mcpu_tool_options layer. * --dump-config reports the resolved runtime root, configuration enable/disable state, config-file read/not-found state, and effective MCPU_LD_SYSTEM_LIBRARY_PATH. * --print-search-dirs reports the effective MCPU library search order; an empty configured system path yields an empty list without fallback. * Diagnostic actions require no linker input or executable and honor --no-config and --sys-root exactly as normal execution does. * Add regressions for identical mcpu-ld/mcpu-run diagnostics, user overrides, empty search paths, malformed config handling and public help. * No CPU ISA, MELF ABI, library-resolution, NEEDED or existing dynamic-linking semantics change in this release. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.11. * Add a common relocatable MCPU runtime/configuration layer for mcpu-ld and mcpu-run. * Derive the default MCPU root from the real executable and use /lib as the default MCPU system library tree. * Add the mcpu-ld.conf hierarchy /etc -> /etc/mcpu -> $HOME/.mcpu/etc, with MCPU_LD_SYSTEM_LIBRARY_PATH as the effective system-library override. * Install only /etc/mcpu-ld.conf; keep /etc/mcpu and per-user configuration under administrator/user control. * Add --no-config and --sys-root=PATH/--sys-root PATH to mcpu-ld and mcpu-run. --sys-root implies --no-config and accepts absolute or invocation-relative paths. * Introduce mcpu_tool_options plus dedicated mcpu_ld_options and mcpu_run_options structures; pass parsed state explicitly through const option pointers to linker/runner execution components. * Add regressions for user-config location, old-path rejection, empty overrides, malformed-config suppression, absolute/relative sys-root and real mcpu-ld/mcpu-run behavior. * No CPU ISA, MELF ABI, library-search, NEEDED, or existing dynamic-linking semantics change in this release. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.10. * Add mcpu-readelf, a read-only MELF ABI1/ABI2 inspection utility for ET_REL, ET_EXEC and ET_DYN files. * Add -h/-l/-S/-s/-r/-A views for MELF file headers, program headers, section headers, symbol tables, RELA relocations and MCPU target/lifecycle metadata; add -e and -a aggregate modes plus GNU-readelf-like long aliases. * Install mcpu-readelf under $libdir/mcpu/bin and create the corresponding public symlink in $bindir beside mcpu-as, mcpu-ld and mcpu-run. * Add a readelf regression covering ET_REL, ABI-v2 ET_EXEC, ET_DYN, symbols, retained relocations, architecture metadata, --help/--version and rejection of non-MELF input. * No CPU ISA, MELF ABI, assembler, linker, loader or runtime semantics changed from 0.2.9. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.9. * Rework the Autoconf/Automake bootstrap following the MCPU project convention: project-owned macros live in acsite.m4, m4/ is reserved for external/vendor macros, and bootstrap regenerates Libtool/Autotools files while copying system macro packages. * Replace pkg-config dependency checks with AC_CHECK_LIBMPU(1.0.25) and AC_CHECK_LIBMPUIO(1.0.4), using LIBMPU_* and LIBMPUIO_* substitutions supplied by the system macro packages. * Install mcpu-as, mcpu-ld and mcpu-run under $libdir/mcpu/bin and create relative public symlinks in $bindir; libmcpu, public headers and pkg-config metadata keep their existing installation locations. * Add the make tests convenience target alongside make check and add configuration headlines, summary output and post-configure usage help. * No CPU ISA, MELF ABI, assembler, linker, loader or runtime semantics changed from 0.2.8. 2026-10-02 Andrey V. Kosteltsev * Version 0.2.8. * Normalize C source and header formatting to the established LibMPU project style. * Keep dense initializer tables compact where they are intentionally tabular. * No functional changes: CPU ISA, MELF ABI, assembler, linker, loader, runtime, tests and examples are unchanged from 0.2.7. 2026-09-24 Andrey V. Kosteltsev * Version 0.2.7. * Documentation-only cosmetic correction of 0.2.6. * Fix overlapping entries in the MELF canonical-section-name list. * Raise the SP line in architecture Figure 9 so it no longer crosses the label text. * Remove generated Markdown companions from doc/src/ and from the documentation build. * CPU, assembler, linker, loader, runtime, tests and examples are unchanged from 0.2.6. 2026-09-24 Andrey V. Kosteltsev * Version 0.2.6. * Documentation-only release. * Restyled both maintained manuals with the memoir/Roboto book style. * Replaced text pseudo-diagrams with vector TikZ figures and restored real tables. * Added the HLL/CRT PROGRAM and MODEL contracts for main(), init(), life(), and optional fini(). * Added Markdown companions under doc/src/. * CPU, assembler, linker, loader, runtime, tests and examples are unchanged from 0.2.5. 2026-09-24 Andrey V. Kosteltsev * Version 0.2.5. * Replace the rigid `mcpu-as -c input.s output.o` interface with the normal UNIX-style `mcpu-as -o output.o input.s` command line. * Permit the single input source before or after `-o`; keep `-h/--help` and reject obsolete `-c` as an unknown option. * Update tests, examples, README and both maintained manuals to the new assembler syntax; CPU ISA and MELF ABI are unchanged. 2026-09-24 Andrey V. Kosteltsev * Version 0.2.4. * Documentation-only release; keep library, assembler, linker, loader, runtime, tests, examples, ISA and MELF ABI unchanged from the user-verified 0.2.3 baseline. * Rework doc/libmcpu-bytecode-architecture-ru.pdf using the visual language of the LibCPU programming book sources: DejaVu Serif/Sans typography, proper tables and TikZ diagrams for STACK/SP, CALL argument blocks, FP, stack frames and dynamic stack scopes. * Restore tabular presentation of instruction/ABI layouts that had regressed into code-like pseudo-tables. * Rewrite doc/libmcpu-melf-abi-ru.pdf predominantly in Russian while retaining established technical terms, MELF identifiers and ABI names where appropriate. * Keep all editable XeLaTeX sources in doc/src/ and update them for LibMCPU 0.2.4. 2026-09-24 Andrey V. Kosteltsev * Version 0.2.3. * Regression-test path correction only; keep the library, assembler, linker, loader, runtime, MELF ABI, documentation and examples unchanged from 0.2.2. * Update tests/tst-dynamic-runner.sh to load dynamic-main.s, dynamic-liba.s and dynamic-libb.s from examples/shared-libs/ after the 0.2.2 examples reorganization. 2026-09-24 Andrey V. Kosteltsev * Version 0.2.2. * Examples/documentation-layout release only; keep cpu/, utils/, include/ and tests/ implementation sources unchanged from the verified 0.2.1 release. * Move editable documentation sources and build-docs.sh from doc/ to doc/src/, add doc/src/README, and leave only the maintained PDF manuals directly under doc/. * Add build/run help to every assembler example source. * Move dynamic-liba.s, dynamic-libb.s and dynamic-main.s to examples/shared-libs/, replace the former examples/_as.sh, examples/_ld.sh and examples/_run.sh workflow with examples/shared-libs/Makefile. * Move check-sys-brk.s and the three _ld_check-sys-brk-*.sh scripts to examples/sys-brk/ and adjust their utility paths to ../../utils/. 2026-09-24 Andrey V. Kosteltsev * Version 0.2.1. * Documentation-and-examples release only; keep cpu/, utils/, include/ and tests/ implementation sources unchanged from the verified 0.2.0 release. * Replace doc/libmcpu-bytecode-architecture-ru.pdf with a new standalone current architecture/ABI reference and distribute its XeLaTeX source plus generated opcode/RCONST tables. * Replace doc/libmcpu-melf-abi-ru.pdf with a new standalone MELF reference whose section numbering starts at 1 and which integrates static ABI v1, startup-dynamic ABI v2, lifecycle, STACK/HEAP/startup contracts and the corrected LOCAL ET_DYN runtime-relocation rule. * Supersede the temporary 0.2.0 MELF erratum because its normative correction is now incorporated directly into both maintained PDF manuals. * Add doc/build-docs.sh and shared TeX style source so both PDF manuals are reproducibly rebuilt with XeLaTeX. * Add the user-verified examples/pendulum/ experiment unchanged from the supplied examples.tar.xz: pendulum ET_EXEC plus rk4.so ET_DYN, Makefile/build wrapper and TRACE experiment script. 2026-09-24 Andrey V. Kosteltsev * Version 0.2.0. * Correct MELF ABI-v2 ET_DYN local relocation semantics: references to LOCAL symbols inside a shared object remain non-preemptible, but are retained as LOCAL runtime relocations so the startup linker can add the final runtime base of the referenced PROGRAM or DATA segment. * Emit LOCAL ET_DYN relocation targets in .dynsym ahead of GLOBAL/WEAK symbols and set the .dynsym sh_info boundary accordingly. LOCAL dynamic symbols are never admitted to the interposition namespace. * Teach the startup dynamic loader to accept LOCAL .dynsym entries and resolve LOCAL runtime relocations strictly against the originating module instead of performing GLOBAL/WEAK winner lookup. * Add low-level PROGRAM/DATA rebasing regression coverage to tst-dynamic and an assembler/linker/loader end-to-end regression with an exported ET_DYN entry calling a private local helper after non-zero module placement. * Add doc/libmcpu-melf-abi-0.2.0-erratum-ru.txt as the normative correction to the pre-0.2.0 PDF wording for LOCAL ET_DYN relocations. * Preserve ABI-v1 static linking and the established ABI-v2 GLOBAL/WEAK interposition rules; MELF ABI version remains 2 because this release corrects the implementation of the existing ET_DYN runtime-address contract rather than introducing a new container ABI. 2026-09-22 Andrey V. Kosteltsev * Version 0.1.9. * Add mcpu-run lifecycle stage actions --before-run, --after-init, --on-step and --after-run without changing the MCPU ISA or MELF ABI; existing END boundaries provide INIT/LIFE/FINI synchronization points and BEFORE_RUN is host-side. * Add typed comma-separated scalar/register print and set actions for registers and DATA/CONTROL/HEAP/INPUT/OUTPUT/TRACE. One print action emits its scalar values on one line separated by spaces; repeated stage options remain ordered and supported. * Parse set-int-* and set-real-* values through LibMPUIO mpu_sscanf(), validate a whole action before applying its writes, and preserve guest PSW across host-side numeric parsing. * Keep raw stage access read-only: print-raw-* accepts exactly one dump per action, supports the existing binary raw-size suffixes and boundary clipping, and no set-raw-* actions are provided. * Add the explicit mcpu-run -- separator: the preferred syntax is "mcpu-run [runtime-options] -- executable [program-args...]" while the previous no-separator form remains compatible. Tokens after -- are passed to the guest argv unchanged. * Add examples/life-print.s for two-register one-line output after every LIFE END and examples/argc-argv.s for argc/argv inspection with option-looking guest arguments. * Add end-to-end regression coverage for stage ordering, empty INIT stage behavior, LIFE actions, FINI-before-AFTER_RUN ordering, typed set/print lists, explicit -- argv separation, raw-list rejection and the deliberate absence of set-raw-*. * Document mcpu-run lifecycle test-bench actions, explicit argv separation and their relationship to MELF lifecycle boundaries in both bundled PDF documents. 2026-09-22 Andrey V. Kosteltsev * Version 0.1.8. * Extend mcpu-run integer, real and raw-memory inspection to CONTROL, HEAP, INPUT, OUTPUT and TRACE in addition to the existing DATA/register output options. * Add binary K/KiB, M/MiB and G/GiB suffixes to the operand of every mcpu-run --raw-* option, with overflow checks and clipping at the selected memory/section boundary. * Keep --raw-data bounded by the linked .data section while CONTROL/INPUT/OUTPUT/TRACE raw dumps are bounded by their segment sizes and HEAP raw dumps by the prepared HEAP size. * Align the mcpu-run --help option descriptions in one vertical column and document the --raw-* binary size suffixes there. * Add end-to-end regression coverage for integer/real inspection of DATA, CONTROL, HEAP, INPUT, OUTPUT and TRACE, all six raw-size suffix spellings, clipping, boundary rejection and overflow rejection. * Add the verified SYS_brk examples check-sys-brk.s and the grow/limit/shrink link-and-run scripts; keep the legacy MELF ABI-v1 main-basic invocation commented out in examples/_run.sh. 2026-09-22 Andrey V. Kosteltsev * Version 0.1.7. * Add the first MCPU system-call ABI with the zero-operand SYSCALL opcode and fixed overlapping-register syscall area at the top of the register file. * Add SYS_brk as system call number 10, dispatched inside LibMCPU through a local table of function pointers; unimplemented system-call numbers return -ENOSYS. * Add _heap_brk as the architectural upper boundary of guest-accessible HEAP memory and implement internal __cpu_heap_brk() with immutable _heap_limit, transactional host-backing growth, stable PTR64 offsets and deterministic zeroing of released memory on shrink. * Define linker-owned _end as the non-preemptible executable HEAP pointer HEAP:16; _end is also the initial and minimum program break. * Extend mcpu-ld size parsing with binary K/KiB/M/MiB/G/GiB suffixes for STACK/HEAP options. * Document the HEAP/program-break model, _end, SYSCALL register ABI, SYS_brk semantics and future -host_errno syscall convention in both bundled PDF documents. * Add unit and end-to-end regressions for SYSCALL/SYS_brk, HEAP shrink/regrowth zeroing, host-backing growth, immutable HEAP limits, overlapping syscall registers, linker-defined _end in static/dynamic ET_EXEC, and binary size suffixes. 2026-09-22 Andrey V. Kosteltsev * Version 0.1.6. * Edit the bundled PDF documentation for the LibMCPU rename: replace legacy LibCPU/libcpu.h/cpu-elf.h and cpu-as/cpu-ld/cpu-run references with LibMCPU/libmcpu.h/mcpu-elf.h and mcpu-as/mcpu-ld/mcpu-run, and update tools/cpu-* source paths to utils/mcpu-* where they appear. * No library, ISA, MELF ABI, assembler, linker, loader or runtime semantics changed from 0.1.5. 2026-09-21 Andrey V. Kosteltsev * Version 0.1.4. * Packaging-only release; preserve the working 0.1.3 assembler, linker, loader, runtime, ABI and tests source code unchanged. * Regenerate the distributed Autotools files after the version bump and ensure generated files are newer than their input files, so an ordinary release build does not try to invoke aclocal/automake/autoconf. * No MELF ABI v1/v2, ISA, CALL ABI, #line, dynamic-linking or runtime semantics changed from 0.1.3. 2026-09-21 Andrey V. Kosteltsev * Version 0.1.3. * Fix mcpu-as #line logical-line accounting across physically empty source lines. * Keep the assembler core diagnostic counter synchronized with physical source lines by preserving empty lines as whitespace-only parser lines; assembly semantics are unchanged. * Add tst-line-runner.sh regressions for native physical-line counting and the reported preprocessor shape: #line 4 "dyn.s", an empty line, .text, a label, then an error must report dyn.s:7. * Document that the logical #line counter advances across empty and comment-only lines. * No MELF ABI v1/v2, ISA, CALL ABI, dynamic-linking or runtime semantics changed from 0.1.2. 2026-09-21 Andrey V. Kosteltsev * Version 0.1.2. * Fix tests/tst-immediate-exactness-runner.sh for the source-location diagnostics introduced in 0.1.1: mcpu-as errors now have the form "mcpu-as: file:line: error: ...", so the regression checks the source filename and line number instead of the obsolete contiguous "mcpu-as: error:" prefix. * No assembler, MELF ABI, ISA, dynamic-linking or runtime semantics changed from 0.1.1. 2026-09-21 Andrey V. Kosteltsev * Version 0.1.1. * Add mcpu-as -h/--help with a detailed assembler/source-location help page. * Add mcpu-as #line decimal source-location directives for future preprocessor output. * #line controls the logical line of the immediately following source line and optionally changes the diagnostic filename; omitting the filename preserves the previous one. * Parse #line numbers strictly in decimal even with leading zeroes and accept the C99/C++11 range 0..2147483647. * Do not add __LINE__/__FILE__ assembler symbols; #line affects diagnostics only and is accepted for both .s and .S input names. * Add runner regression coverage for --help, filename/line remapping, decimal leading zeroes, zero and range rejection. * No MELF ABI v1/v2, ISA, CALL ABI, dynamic-linking or runtime semantics changed from 0.1.0. 2026-09-21 Andrey V. Kosteltsev * Version 0.1.0. * Add MELF ABI version 2 startup dynamic linking while retaining ABI-v1 static ET_EXEC compatibility. * Add mcpu-ld --shared for ET_DYN helper libraries and mcpu-ld --dynamic for ABI-v2 ET_EXEC. * ABI-v2 ET_DYN permits only .text/.data/.bss allocated content and has no lifecycle, model segments, STACK or HEAP. * Add .dynsym/.dynstr as the runtime symbol ABI, separate from optional developer .symtab/.strtab information. * Retain GLOBAL/WEAK runtime RELA records in ABI-v2 outputs; LOCAL and lifecycle references remain statically bound. * Add mcpu-run --ldpreload=a.so:b.so explicit colon-separated preload list; no DT_NEEDED, implicit search paths, PLT/GOT, lazy binding or dlopen API. * Implement startup interposition immediately: strong GLOBAL beats WEAK; among equal bindings the rightmost preload wins, including preemption of definitions already present in main. * Keep _start/_life/_fini executable-private and non-preemptible. * Shared libraries have per-segment relative PROGRAM/DATA images; mcpu-run assigns final process bases and preserves one process-owned DATA NULL guard. * Permit explicit cross-library and cyclic symbol resolution because all preload modules are parsed before runtime RELA application. * Add dynamic-link regression coverage, shared/dynamic examples and strict --shared STACK/HEAP-option rejection. * Extend both doc/*.pdf references with a detailed MELF ABI-v2 startup-linking chapter and preserve the complete architecture PDF outline. 2026-09-21 Andrey V. Kosteltsev * Version 0.0.25. * Add mcpu-run --int-data=@ to print a signed integer object from DATA memory. * Add mcpu-run --raw-data=@ to dump bytes from the linked .data section with a 16-byte hexadecimal/ASCII view. * Raw DATA dumps are clipped at the end of .data and never read into .bss or other DATA-segment bytes. * Extend runner regression coverage for integer DATA output, raw dump formatting and .data-bound clipping. 2026-09-21 Andrey V. Kosteltsev * Version 0.0.24. * Add the missing include to tests/tst-melf.c so UINT64_MAX is declared explicitly. * Add -h/--help handling and detailed option help to mcpu-ld, matching mcpu-run style. * Add lifecycle-main-model.s demonstrating .init, CONTROL/INPUT/OUTPUT/TRACE, McpuStartup argc/argv handling and a normal main() that increments a counter by 2. * Add lifecycle-main-basic.s demonstrating the same _life -> main(argc, argv) bridge with _start_life: and ordinary DATA, without .init or model segments. * No MELF ABI or CPU execution semantics changed from 0.0.23. 2026-09-21 Andrey V. Kosteltsev * Version 0.0.23. * Correct MELF target endian selection to use LibMPU boolean byte/word-order selector macros; MPU_BYTE_ORDER/MPU_WORD_ORDER themselves are numeric order tags (for example 1234), not 0/1 selectors. * Replaced the temporary LCPUOBJ1/raw executable path with the permanent MELF (MCPU ELF-derived) static object/executable ABI. * Added public include/mcpu-elf.h covering MELF identification, headers, sections, symbols, RELA relocations, target/lifecycle metadata, Program Headers and loader/startup contract. * mcpu-as -c now emits MELF64 ET_REL with .symtab/.strtab/.shstrtab, SHT_RELA, .mcpu.target and section-relative symbols. * Added .weak symbol declarations and ELF-style strong/weak resolution; unresolved weak pointer relocations with zero addend resolve to NULL. * Added real SHT_NOBITS .bss support; linker places .bss after file-backed DATA and preserves contribution alignment without storing zero payload bytes. * mcpu-ld now consumes MELF ET_REL, applies all five fixed relocation kinds, inserts the single DATA NULL guard and emits complete MELF ET_EXEC images. * Added mandatory _start and _life ET_EXEC lifecycle contract, optional _fini and assembler-only _start_life: shorthand for coincident _start/_life when .init is absent. * Added .mcpu.target and .mcpu.lifecycle metadata validation and full PTR64 sh_addr/st_value/p_vaddr semantics. * Added MELF Program Headers for PROGRAM/DATA/CONTROL/INPUT/OUTPUT/TRACE plus PT_MCPU_STACK and optional PT_MCPU_HEAP with explicit p_maxsz. * Removed mcpu-run STACK/HEAP sizing overrides; STACK/HEAP sizes are executable ABI selected by mcpu-ld and recorded in Program Headers. * Added persistent McpuStartup ABI with version, argc, argv and guest PTR64 argument strings in the high end of STACK. * mcpu-run now validates MELF ET_EXEC before allocating guest memory and follows the rule 'loader validates, never repairs'. * Added MELF ET_REL/ET_EXEC, BSS, startup, lifecycle, weak-symbol, relocation and malformed-loader regression coverage. * Updated assembler examples for the mandatory lifecycle ABI and MELF toolchain. * Expanded doc/*.pdf with the MELF ABI, linker/loader contract, startup ABI and 0.0.23 implementation model. 2026-09-20 Andrey V. Kosteltsev * Version 0.0.22. * Added an explicit relocatable-object/linker model before fixing the final ELF representation. * Added .global/.globl and .extern symbol declarations; ordinary labels remain local unless exported. * Added .ptr for generic target-representation PTR64 data objects; .cptr remains the PROGRAM-pointer form. * Added relocation semantics for CODE64, DATA ADDR64, LEA PTR64 immediates and PTR64 data objects. * Relocatable expressions are restricted to SYMBOL + signed constant addend; absolute arithmetic remains assembler-evaluated. * Added per-object section alignment so linker concatenation preserves leading .align requirements. * Moved the DATA NULL guard responsibility to the linker for relocatable objects: each object DATA starts at offset zero, the final image gets one 16-byte guard. * Added temporary .lco development relocatable container with canonical MSB-first metadata and raw architectural section payloads. * Added mcpu-as -c and mcpu-ld development tools; mcpu-ld emits the existing raw executable sidecars for mcpu-run. * Added cross-object global/extern resolution, duplicate/undefined-symbol diagnostics, relocation application and lifecycle entry resolution. * Added relocatable/linker regression coverage and a two-module example returning 42. * Expanded the architecture PDF with symbols, bindings, addends, relocation types, alignment, DATA guard ownership, linker algorithm and future ELF mapping. 2026-09-20 Andrey V. Kosteltsev * Version 0.0.21. * Assign PTR64 selectors 0x3..0x7 to CONTROL, INPUT, OUTPUT, TRACE and HEAP; selectors 0x8..0xF remain reserved. * Add independent anonymous mmap-backed CONTROL/INPUT/OUTPUT/TRACE/HEAP regions with guest access permissions. * Define TRACE as the current telemetry frame; accumulated history belongs to the runtime collector. * Add .control/.input/.output/.trace data sections and .init/.fini executable sections; .init/.text/.fini share one PROGRAM address space. * Define lifecycle ABI entries _start, _life and _fini and expose their numeric raw-image metadata. * Add END for cooperative phase completion and EXIT r32 for graceful final termination, plus explicit stop-reason/exit-status API. * Generalize LEA to emit a complete PTR64 immediate for data-like and PROGRAM labels without changing its binary size. * Add runtime HEAP SEG=0x7 with a 16-byte low guard, initial size and maximum limit; allocator and dynamic-growth services remain library/runtime concerns. * Extend mcpu-run with --heap-size, --heap-limit, --init-only and --steps and add a model lifecycle example/regression. * Keep the emitted .meta file a temporary raw-development manifest, not the final object/executable format. * Expand the architecture PDF with the model-memory map, lifecycle state/entry ABI, END/EXIT/HALT/fault distinctions, permissions, LEA PTR64 behavior and future heap allocator design. 2026-09-20 Andrey V. Kosteltsev * Version 0.0.20. * Fix assembler source encoding as UTF-8. * Add .ucs2 for strict UTF-8-to-UCS-2 conversion with target-endian 16-bit DATA objects and a terminating zero code unit. * Add locale-independent .utf8 for exact UTF-8 bytes plus terminating zero. * Add raw .byte directive and .int as an alias of .integer. * Extend .integer/.int to accept value lists. * Add section-independent .equ absolute symbols with forward .equ references. * Add integer arithmetic expressions with +, -, *, /, %, unary +/- and parentheses; DATA/CODE address fixups accept section-label expressions. * Add symbolic register addresses such as r64@table_ptr and expression addresses such as r64@(table_ptr+8). * Add assembler directives/expressions regression coverage and example. * Expand the architecture PDF with the assembler/preprocessor boundary, string encodings, expression grammar and directive semantics. 2026-09-20 Andrey V. Kosteltsev * Version 0.0.19. * Enforce exact assembler immediate semantics for LDI/LDR/LDC. * LDR r32 literals must be exactly representable as Real32; r64 and wider destinations must be exactly representable as Real64. * LDC components must be exactly representable as Real32; c64 remains the minimum complex destination width. * LDI rejects signed-value loss in destinations narrower than 64 bits and values outside signed Integer64 immediate range. * Diagnostics direct wider/higher-precision constants to DATA directives and LOAD. * Add immediate-exactness regression tests and documentation. * Preserve PSW[15:0] around LibMPU conversion helpers used by LDI/LDR/LDC, ICVT/RCVT, integer<->Real conversion, CCVT and CRTOC. * Add conversion-flag regression coverage so conversion implementation details cannot clobber guest status flags. 2026-09-20 Andrey V. Kosteltsev * Version 0.0.18. * Audited LibMCPU opcodes against the configured LibMPU 1.0.25 public value-level API. * Added all remaining non-modular integer shifts/rotates, INC/DEC/XCHG, copy/convert, full multiply, quotient+remainder divide and bit-length instructions. * Extended decoded instructions to four operands for IDIV/ISDIV. * Added missing Real sign/copy/compare, decomposition, rounding, remainder, log1p/expm1, inverse hyperbolic, integer/Real conversion and classification instructions. * Expanded RCONST with EPSILON, InD, signed NaN/Inf/min/max and signed-zero generators while retaining the complete mathematical constant family. * Added Complex real/imag extraction, Real-to-Complex, general/polar construction, conjugate, abs/norm/arg, equality predicates and copy/convert instructions. * Deliberately excluded modular arithmetic, textual conversion, Real-format metadata queries and LibMPU runtime/flag accessors from the CPU ISA. * Added direct LibMPU-vs-LibMCPU coverage regression and an executable assembler audit example. * Expanded the architecture PDF with the complete coverage matrix, instruction forms, width rules and assembler examples. 2026-09-20 Andrey V. Kosteltsev * Version 0.0.17. * Fixed PTR64 comparison conventions: full-width equality and same-selector PDIFF ordering. * Fixed the normal stack ABI red-zone size at zero bytes. * Fixed reserved PTR64 selector rules for non-dereferencing versus address-space operations. * Added generic BSWAP raw-byte reversal for equal-width r8..r65536 register views. * BSWAP preserves PSW and uses source-snapshot semantics for in-place operation. * Added pointer-policy, reserved-segment and BSWAP regression coverage plus a runner example. * Expanded the architecture PDF with normative pointer comparison, red-zone, reserved-segment and external-byte-order guidance. 2026-09-20 Andrey V. Kosteltsev * Version 0.0.16. * Fixed the split byte-order ABI: PROGRAM fields are canonical MSB-first, architectural data objects follow the configured LibMPU target representation. * Added __cpu_code_get_u16/u32/u64 and __cpu_code_put_u16/u32/u64 helpers for canonical bytecode fields. * Added __cpu_data_get_u16/u32/u64 and __cpu_data_put_u16/u32/u64 helpers for target data-object representation. * Exposed LibMCPU target byte-order/word-order aliases derived from LibMPU in libmcpu.h. * Reworked decoder, pointer/stack/control-flow object accesses and assembler fixups to use the explicit code/data helper domains. * Made .cptr the canonical assembler directive for PROGRAM PTR64 DATA objects; retained .codeptr as a compatibility alias. * Added byte-order/object-representation regression coverage for IMM64, integer/real/complex DATA objects, PTR64, CALL return PC and LOAD/BMOV/LOAD byte preservation. * Expanded the architecture PDF with the normative byte-order/object-representation model and assembler examples. 2026-09-20 Andrey V. Kosteltsev * Version 0.0.15. * Fixed the normal-function PSW calling convention without adding PSW-writing opcodes. * Defined PSW[15:0] (all LibMPU arithmetic/status flags) as volatile across CALL. * Defined TF, IF and MODE as persistent control state that a normal callee must preserve. * Classified HF as execution state outside the ordinary function-call save/restore contract. * Kept CALL, CALLP and RET themselves PSW-neutral: they perform no hidden PSW save/restore. * Added public ABI masks for volatile status, persistent control and execution-state PSW domains. * Added PSW call-ABI regression tests and an assembler example showing callee flag clobbering. * Expanded the architecture PDF with normative PSW calling-convention rules and examples. 2026-09-20 Andrey V. Kosteltsev * Version 0.0.14. * Added JMPP r64(PROGRAM PTR64) indirect jump instruction (opcode 0x4003). * Added CALLP r64(PROGRAM PTR64) indirect call instruction (opcode 0x4012). * CALLP pushes the same raw 64-bit next-PC CODE64 used by direct CALL; RET is unchanged. * Added atomic PROGRAM-pointer/range/stack validation for indirect control flow. * Added assembler JMPP/CALLP syntax with physical r64 operand checks. * Added .codeptr CODE-label DATA directive for PROGRAM PTR64 tables and forward fixups. * Added indirect-control assembler example covering CALLP and JMPP through a DATA table. * Added decoder/executor/fault/atomicity/.codeptr regression coverage and runner test. * Expanded the architecture PDF with indirect control-flow formats, detailed state transitions and jump-table pattern. 2026-09-20 Andrey V. Kosteltsev * Version 0.0.13. * Replaced malloc-backed PROGRAM/DATA/STACK buffers with independent anonymous mmap() mappings. * Added separate internal architectural size and page-rounded host mapping capacity for every segment. * Added __cpu_program_protect(); PROGRAM is writable while loading and read-only after protection. * mcpu-run now loads .code/.data with open/fstat/read into anonymous mappings; image files are never mmap()ed. * Added 16-byte ABI maximum natural alignment, stack/call alignment and argument-block alignment constants. * Defined NULL PTR64 as all zero and reserved DATA[0..15] as the assembler NULL guard. * LOADP/STOREP/BMOV dereference of NULL now raises CPU_EXEC_POINTER_FAULT. * The assembler reserves the 16-byte DATA NULL guard and retains explicit-only .align semantics with no implicit directive alignment. * Updated ABI examples to use 16-byte call argument blocks where required and changed the real4096 example from .align 512 to ABI-natural .align 16. * Added anonymous-mmap/page-alignment/PROGRAM-protection regression coverage. * Expanded the architecture PDF with host-backing rules, DATA NULL guard, alignment/data-layout rules and formal argument-block layout. * HEAP is explicitly outside DATA and remains reserved for a future independent memory segment. 2026-09-19 Andrey V. Kosteltsev * Version 0.0.12. * Added memory-to-memory block-copy instructions BMOV and BMOVI. * BMOV uses a runtime unsigned r64 byte count; BMOVI embeds an unsigned IMM64 byte count. * Block copies use memmove semantics, including overlap inside one architectural segment. * DATA and STACK are readable/writable block-copy spaces; PROGRAM is readable but never writable. * Added complete-range validation before modification, preserving destination memory on faults. * Added block-copy assembler support, example and regression tests. * Expanded the architecture PDF with compiler lowering for struct assignment, by-value aggregates and VLA/runtime copies. 2026-09-19 Andrey V. Kosteltsev * Version 0.0.11. * Added dedicated 64-bit architectural FP as a STACK byte offset. * Empty allocated STACK now initializes SP = FP = stack_size. * Added PUSHFP, SETFP, RESTSP and POPFP frame-management instructions. * Added LDFP, STFP and LEAFP signed FP-relative addressing instructions. * Added SETSP for installing a validated STACK PTR64 as the dynamic stack top. * Added atomic bounds/fault handling for FP/SP management operations. * Added optional-FP prologue/epilogue and dynamic stack allocation ABI rules. * Added frame-pointer/dynamic-stack assembler example and regression tests. * Expanded the architecture PDF with compiler-oriented frame/VLA examples and diagrams. 2026-09-19 Andrey V. Kosteltsev * Version 0.0.10. * Added PTR64 byte-offset arithmetic: PADD, PADDI, PSUB, PSUBI and PDIFF. * Pointer arithmetic preserves the 4-bit segment selector and operates only on the 60-bit offset. * Added signed OFF64 immediate forms and signed r64 displacement forms. * Added same-segment signed byte difference with PDIFF. * Added atomic 60-bit pointer overflow/underflow checks and PSW preservation. * Switched assembler signed-64 parsing paths to LibMPU fixed __mpu_int64_t values. * Added pointer-arithmetic assembler example and regression tests. * Updated the architecture PDF with normative pointer-arithmetic semantics and diagrams. 2026-09-19 Andrey V. Kosteltsev * Version 0.0.9. * Added PTR64 segmented virtual pointers: 4-bit segment + 60-bit byte offset. * Defined DATA, STACK and read-only PROGRAM pointer segments; reserved 0x3..0xf. * Added LEA, LEASP, LOADP and STOREP machine instructions and assembler syntax. * Added public PTR64 construction/inspection helpers and pointer-fault status. * Fixed the C-like ABI for scalar/pointer/aggregate arguments and stack locals. * Fixed hidden PTR64 caller-provided storage for struct/union return values. * Added pointer and aggregate ABI examples and regression tests. * Rebuilt the architecture PDF with detailed PTR64 and C-like ABI diagrams. 2026-09-19 Andrey V. Kosteltsev * Version 0.0.8. * Added CALL CODE64 and RET machine instructions. * CALL pushes the 64-bit next PC on STACK; RET pops it back to PC. * Added right-to-left stack argument convention and caller cleanup ABI. * Added 8 KiB Return Value Area at 0x7e000..0x7ffff. * Added canonical ABI return-register helper and public return-area constants. * Added CALL/RET assembler support, example and regression tests. * Updated the architecture PDF with detailed CALL ABI diagrams and examples. 2026-09-19 Andrey V. Kosteltsev * Version 0.0.7. * Added malloc-backed STACK memory and downward-growing SP semantics. * Added signed 64-bit stack displacement encoding (OFF64). * Added PUSH, POP, LDSP, STSP and ADJSP machine instructions. * Added STACK bounds checking with atomic stack faults. * Added stack syntax to the test assembler and stack regression tests. * Added --int-reg and --stack-size options to mcpu-run. * Updated the architecture PDF with STACK, SP and SP-relative addressing. 2026-09-19 Andrey V. Kosteltsev * Version 0.0.6. * Added 64-bit PROGRAM branch address encoding (CODE64). * Added JMP, JSET and JCLR machine instructions. * Added PSWBIT8 selectors for individual PSW flags. * Added forward/backward CODE labels to the test assembler. * Added JZ/JNZ/JC/JNC/JO/JNO/JS/JNS assembler aliases. * Updated __cpu_step() PC handling for taken branches. * Added control-flow example and regression test. * Updated the architecture PDF with CODE64 and branch semantics. 2026-09-19 Andrey V. Kosteltsev * Version 0.0.5. * Require LibMPU 1.0.25 or later. * Added mcpu-run utility for loading and executing .code/.data images. * Added LibMPUIO 1.0.3 dependency for mcpu-run real-number output. * Added --real-reg, --real-data and --digits mcpu-run options. * Added 4096-bit 2.0 + PI assembler/runner example and regression test. 2026-09-19 Andrey V. Kosteltsev * Version 0.0.4. * Added REG24, OPCODE16, IMM64 and ADDR64 machine encodings. * Added malloc-backed PROGRAM and DATA memory to the CPU context. * Added bytecode decoder, single-step and run execution. * Added LDI, LDR, LDC, LOAD, STORE and RCONST. * Added real and complex LibMPU-backed instruction families. * Added source-level c@addr complex views with physical width semantics. * Added test assembler and DATA directives for integer, real and complex constants. * Added detailed bytecode/operand architecture PDF in doc/. * Added bytecode and assembler regression tests. 2026-09-18 Andrey V. Kosteltsev * Version 0.0.3. * Added decoded instruction and operand representation. * Added common instruction executor. * Added NOP, HALT, MOV and CLR instructions. * Added IADD, IADC, ISUB and ISBB integer instructions using LibMPU backend. * Added instruction/operand/register validation in the executor. * Added instruction and integer FLAGS regression test. 2026-09-18 Andrey V. Kosteltsev * Version 0.0.2. * Added physical register-view resolver for r8 ... r65536. * Added register width, natural-alignment and bounds validation. * Added register-file width/alignment/bounds regression test. * Added overlapping register-view regression test. 2026-09-18 Andrey V. Kosteltsev * Version 0.0.1. * Added thread-local CPU context with 512 KiB register file. * Added PC, SP and logical 32-bit PSW integration with LibMPU flags. * Added HF, TF, IF and MODE control/status fields. * Added context/PSW regression test.