diff options
Diffstat (limited to 'NEWS')
| -rw-r--r-- | NEWS | 748 |
1 files changed, 748 insertions, 0 deletions
@@ -0,0 +1,748 @@ +mcpu-cpp 1.0.2 +=============== + +Implemented LibMPU, LibMPUIO congiguring check using libmpu.m4, libmpuio.m4. + + +mcpu-cpp 1.0.1 +=============== + +Integrate the mcpu-cpp(1) manual pages. + +* Add English man/mcpu-cpp.1 and Russian man/ru/mcpu-cpp.1. +* Install the pages through Automake's standard man directory hierarchy. + +mcpu-cpp 1.0.0 +=============== + +Remove Russian preprocessing-directive aliases and prepare the public interface +for another verification cycle before 1.0.0. + +* Accept only canonical English preprocessing-directive names; Unicode support + for identifiers and ordinary source text is unchanged. +* Remove Russian-alias regression cases without changing the underlying macro, + conditional, include, diagnostic, language-stack, or output engines. +* Retitle manual section 10 as "GNU-compatible features" and summarize the + documented behaviors intentionally aligned with GNU CPP. +* Remove references to the predecessor preprocessor from both normative manuals. + +mcpu-cpp 0.0.50 +=============== + +Refresh and bilingualize the normative manual and add a developer bootstrap. + +* Replace the single doc/mcpu-cpp.md with synchronized Russian and English + manuals: doc/mcpu-cpp-ru.md and doc/mcpu-cpp-en.md. +* Bring the manual up to the 0.0.49 feature set, fix stale future-work text and + conditional-expression subsection numbering, and document the current + intentionally unsupported legacy features. +* Add a root bootstrap script, modeled after the LibMPU/LibMPUIO bootstrap + workflow, that regenerates the ZUBR parser and Autotools-generated files. +* Add a root .gitignore describing files that a developer Git tree may omit; + keep release archives self-contained and the ordinary release build unchanged. + +mcpu-cpp 0.0.49 +=============== + +Compact invisible output lines while preserving exact source coordinates. + +* Track the next visible logical source position instead of materializing every + consumed directive/comment/blank source line in .E output. +* Match GNU CPP's 0..7 newline versus 8+ corrective-linemarker boundary. +* Preserve include entry/return markers and avoid synthetic progress markers + for completely silent included files. +* Keep __LINE__, diagnostics, #line and logical coordinates independent of the + compacted physical output representation. + +mcpu-cpp 0.0.48 +=============== + +Normalize whitespace that belongs to macro replacement lists. + +* Canonicalize replacement-list whitespace to one ASCII space after line + splicing while preserving ordinary source formatting and actual-argument + whitespace. +* Preserve literal contents and preprocessing-token boundaries around #, ##, + __VA_ARGS__, __VA_OPT__ and placemarkers. + +mcpu-cpp 0.0.47 +=============== + +Add the standard __VA_OPT__(pp-tokens) mechanism. + +* Decide variadic emptiness after normal macro substitution. +* Support balanced parentheses, stringification, token concatenation, + placemarkers and rescan integration. +* Intentionally omit GNU named variadics and the historical comma-swallow + extension , ## __VA_ARGS__. + +mcpu-cpp 0.0.46 +=============== + +Add C99-style variadic function-like macros. + +* Accept ... as the final macro parameter and substitute __VA_ARGS__. +* Preserve ordinary prescan, raw stringification and token-paste semantics for + the complete variadic tail, including empty-tail placemarkers. +* Keep the old GNU named form args... and __VA_OPT__ outside this release. +* Preserve variadic definitions in macro dumps and document the exact contract. +* Add dedicated regression coverage for expansion, #, ##, dumps and errors. + +mcpu-cpp 0.0.45 +=============== + +Add GNU-like missing-generated dependency handling. + +* Implement -MG for dependency-only -M/-MM modes. +* Record unresolved includes in the existing ordered dependency registry while + keeping their textual identity separate from physical st_dev/st_ino identity. +* Preserve GNU-like user/system filtering for missing quoted/angle includes and + system-header context; tolerate missing -include/-imacros operands under -MG. +* Keep -MG invalid with -MD/-MMD or without -M/-MM. +* Document the unresolved-dependency model and add dedicated regression coverage. + +mcpu-cpp 0.0.44 +=============== + +Add explicit dependency targets and complete the forced-file documentation. + +* Implement GNU-like -MT TARGET and -MQ TARGET, including attached forms. +* Allow repeated -MT/-MQ options and multiple targets in one dependency rule. +* Keep -MT literal while -MQ applies Make quoting; suppress the default target + whenever an explicit target is present. +* Document -include/-imacros and -MT/-MQ in doc/mcpu-cpp.md. +* Add dedicated dependency-target regression coverage. + +mcpu-cpp 0.0.41 +=============== + +Clean the public interface and formalize selected Russian directive aliases. + +* Remove obsolete compatibility options from the command-line parser so they + are diagnosed as unknown options instead of remaining dormant handlers. +* Keep -E as the intentional compiler-driver compatibility no-op. +* Document --object-suffix in --help and require its argument. +* Add Russian aliases for define, line, include, include_next, undef, pragma + and lang; normalize non-once #управление output to #pragma. +* Rename the product description to "MCPU languages preprocessor" and remove + predecessor-oriented wording from source comments and documentation. +* Add interface-cleanup and Russian-alias regression coverage. + +mcpu-cpp 0.0.40 +=============== + +Add explicit warning-control semantics. + +* Implement -Wcomment/-Wcomments and negative forms for nested block-comment + openers and backslash-newline continuation of // comments. +* Make -Wall enable the optional comment-warning class while preserving the + priority of an explicit -Wno-comment regardless of option order. +* Implement -Werror/-Wno-error for every warning actually emitted by mcpu-cpp, + without making -Werror enable optional warning classes. +* Route #warning, zNNN width warnings, macro redefinition and invalid ## paste + through the common warning policy. +* Add dedicated regression coverage and a normative documentation section. + +mcpu-cpp 0.0.39 +=============== + +Split final macro dumping into ordinary and predefined views. + +* Make -dM dump only source/include and command-line macros. +* Implement -dMP as predefined macros first, followed by ordinary macros. +* Preserve deterministic name sorting inside each group and final #undef state. +* Keep context-dependent special macros out of the static dump. +* Leave -dD semantics unchanged. +* Add dedicated regression coverage and document the macro-origin contract. + +mcpu-cpp 0.0.38 +=============== + +Extend dependency generation with side-effect dependency files. + +* Add GNU-like -MD and -MMD without suppressing normal preprocessing output. +* Add -MF FILE, including attached -MFfile spelling and -MF - for stdout. +* Derive the default .d filename from the input basename, or from ordinary -o + output when present. +* Reuse the existing -M/-MM dependency graph and system-header classification. +* Add dedicated regression coverage and document the dependency-output rules. + +mcpu-cpp 0.0.37 +=============== + +Make the MCPU installation tree relocatable and shared by the future toolchain. + +* Install under `$libdir/mcpu` rather than `$libdir/mcpu-VERSION`. +* Resolve the real executable at run time and derive `<root>/include` and + `<root>/etc/mcpu-cpp.conf` from the physical MCPU root. +* Keep `/etc/mcpu/mcpu-cpp.conf` and `$HOME/.mcpu/mcpu-cpp.conf` as higher + priority overrides, including full replacement of MCPU_CPP_SYSTEM_INCLUDE_PATH. +* Remove the absolute installation default from the packaged config and runtime + binary contract. +* Add a regression that physically moves a complete MCPU tree and verifies the + new root, include search, packaged config and symlink invocation. +* Document one relocatable `bin/etc/include/lib` root as a general MCPU + ecosystem principle for mcpu-cpp, mcpu-as, mcpu-ld and mcpu-run. + +mcpu-cpp 0.0.36 +=============== + +Correct --no-config so it suppresses configuration-file reads without +discarding the compiled installation defaults. + +* Keep the compiled MCPU_CPP_SYSTEM_INCLUDE_PATH active under --no-config. +* Make -dsearch-dirs, -dconfig and -v expose that built-in default even when + every configuration file is ignored. +* Preserve explicit -I/-isystem/-idirafter ordering around the compiled system + tree and keep -nostdinc as the switch that suppresses standard-system paths. +* Add dedicated regression coverage and document the distinction between + compiled defaults, configuration files and -nostdinc. + +mcpu-cpp 0.0.35 +=============== + +Implement the first dependency-generation stage. + +* Add -M make-rule output including system headers. +* Add -MM user-dependency output excluding system headers and descendants + reachable only from system-header contexts. +* Collect dependencies directly from the existing include/#include_next + pipeline and deduplicate physical files by device/inode identity. +* Keep #line logical filenames out of dependency output and preserve a file in + -MM when it is also reached through a user include context. +* Add dedicated dependency-generation regression coverage and documentation. + +mcpu-cpp 0.0.33 +=============== + +Align the configure-time console presentation with the LibMPU/LibMPUIO/ZUBR +package family and normalize the author's given name spelling. + +* Add the shared-style mcpu-cpp configure headline and AC_MSG_CFG_PART section + headings to make configure output follow the same visual structure as the + other MCPU/LibMPU projects. +* Keep the existing detailed configuration summary as its own final section. +* Normalize every textual occurrence of the author given name to `Andrey` + throughout the maintained project tree. + +mcpu-cpp 0.0.32 +=============== + +Polish include-path diagnostics after the 0.0.31 installation/search contract. + +* Make -v print each effective include configuration variable once, after all + configuration layers have been resolved. +* Add -dsearch-dirs to print effective include search directories in semantic + priority order and stop without preprocessing. +* Document the distinction between effective configuration values and the + expanded global search-directory chain. + +mcpu-cpp 0.0.31 +=============== + +Introduce the versioned MCPU installation/configuration contract. + +* Install mcpu-cpp under `$libdir/mcpu-0.0.31/bin` and its packaged + configuration under `$libdir/mcpu-0.0.31/etc`. +* Install `$bindir/mcpu-cpp` as a symbolic link to the versioned executable. +* Do not install or create `/etc/mcpu`; treat `/etc/mcpu/mcpu-cpp.conf` only as + an optional distributor/administrator override. +* Load configuration in increasing priority: compiled versioned defaults, + versioned packaged config, optional `/etc` override, then the unversioned + `$HOME/.mcpu/mcpu-cpp.conf` user override. +* Restore `MCPU_CPP_SYSTEM_INCLUDE_PATH` as the replaceable effective system + include root, defaulting to `$libdir/mcpu-0.0.31/include`. Derive + `<root>/<lang>` internally; no per-language system variables exist. +* Let a higher-priority config replace the system tree completely or disable it + with an empty value. +* Keep the normative include and #include_next search order established in + 0.0.30, now using the effective `MCPU_CPP_SYSTEM_INCLUDE_PATH`. +* Document the versioned tree, configuration precedence, sandbox workflow and + wrapper-header rationale as normative interfaces. + +mcpu-cpp 0.0.30 +=============== + +Define and enforce the normative include-search contract discovered by manual +wrapper-header testing. + +* Give explicit command-line -I, -isystem and -idirafter directories priority + over persistent configuration classes. +* Search configured user language paths before MCPU_CPP_INCLUDE_PATH. +* Replace MCPU_CPP_SYSTEM_INCLUDE_PATH with the singular + MCPU_CPP_SYSTEM_INCLUDE_DIR system-tree root. Derive the fixed <root>/<lang> + directory internally and then search <root>; no per-language system config + variables exist. +* Allow an empty MCPU_CPP_SYSTEM_INCLUDE_DIR to disable the configured system + tree. -nostdinc suppresses the same configured system classes for one run + without suppressing explicit -isystem. +* Keep explicit -idirafter before MCPU_CPP_AFTER_INCLUDE_PATH and never derive + language-specific AFTER directories. +* Make #include_next traverse this exact effective chain by physical provenance. +* Add a dedicated manual-style regression that places the same header in all + eight search classes and verifies the complete #include_next order. +* Add a separate normative documentation section explaining the search order, + configurable user paths, fixed system subdirectory names and wrapper-header + purpose. + +mcpu-cpp 0.0.29 +=============== + +Implement GNU-style #include_next wrapper-header search. + +* Track the exact configured include-directory entry that supplied each nested + header and continue #include_next strictly after that entry. +* Preserve the semantic search order across -I, explicit -isystem, configured + system directories and -idirafter directories. +* Do not re-search the current source-file directory for #include_next; the + directive intentionally does not distinguish between "file" and <file>. +* Support macro-expanded #include_next operands through the ordinary include + operand parser and macro-expansion path. +* Keep physical include provenance independent of logical #line filenames. +* Add regression coverage for the wrapper -> configured-system -> idirafter + chain, quoted-source origin, macro operands, inactive branches and failure + when no later header exists. + +mcpu-cpp 0.0.28 +=============== + +Implement #error and #warning diagnostics. + +* Active #error emits a source-location error diagnostic and stops preprocessing. +* Active #warning emits a source-location warning and preprocessing continues. +* Diagnostic directive arguments are not macro-expanded, following the directive contract; whitespace between tokens is folded while quoted text is kept. +* Diagnostic directives are consumed and never copied to normal or -dD output. +* Inactive conditional branches suppress both directives completely. +* Historical Russian aliases #ошибка and #предупреждение are recognized. + +mcpu-cpp 0.0.27 +=============== + +Define the MCPU integer-width suffix contract for conditional expressions and +remove the obsolete assertion command-line heritage. + +* Accept `zNNN`/`ZNNN` and optional trailing `U`/`u` on integer constants. + NNN is always decimal, including forms with leading zeroes. +* `z8`, `z16`, `z32` and `z64` normalize the low N bits by sign extension; + an optional U/u selects zero extension. All later expression evaluation is + still exactly 64-bit and does not retain the source width. +* Widths above 64 are errors in conditional directives. Invalid widths up to + 64 are ignored with a warning; a trailing U/u remains effective. +* Remove C-style L/LL integer suffix acceptance from the #if lexer. +* Diagnose a suffix that runs into an identifier instead of splitting it into + unrelated tokens. +* Remove the obsolete `-A` assertion option, the assertion action kind and the + `-dMA` assertion-dump modifier. +* Document the complete normalization and 64-bit evaluation model. +* Add regression coverage for width suffixes, sign/zero extension, truncation, + 64-bit post-normalization operations, errors and removed assertion options. + +mcpu-cpp 0.0.26 +=============== + +Use the ZUBR grammar architecture for #if expression parsing. + +* Add mcpp-expr.zubr with the grammar and UCS-2 lexical analyzer; generated + mcpp-expr.c uses the mcpp_zubr_* prefix from ZUBR 4.1.0. +* Keep the established defined() preprocessing and macro-expansion front end. +* Move fixed-width #if arithmetic to mcpp-semantic.c/h; expression integers + use LibMPU 64-bit types rather than host long/intmax_t. +* Parse binary/octal/decimal/hexadecimal integer lexemes through LibMPU + iatoui() after validating/copying the ASCII subset from UCS-2. +* Character units are UCS-2 __mpu_uint16_t values; multi-character + packing is retained up to the 64-bit expression width. +* Preserve the defined precedence, negative-shift direction and short-circuit + behavior for &&, || and ?:. +* Ship the generated C source; ZUBR is needed only when the .zubr grammar is + regenerated. The obsolete code-page -T option is not used. +* Add a dedicated ZUBR expression regression. + +mcpu-cpp 0.0.25 +=============== + +Refine preprocessing identifiers and command-line macro declarator parsing. + +* Permit `$` after the first preprocessing-identifier character, while keeping + `$` forbidden as an identifier start. +* Apply the same `$` continuation rule throughout macro names, parameters, + conditionals, expansion, # stringification and ## rescanning. +* Parse the -D declarator separately from its replacement value so an invalid + tail before '=' is discarded instead of becoming replacement text. +* Apply the same valid-identifier-prefix rule to -U command-line actions. +* Document shell quoting explicitly: single quotes already protect `$`; an + unquoted or double-quoted `$` must be escaped when literal text is intended. +* Extend Unicode/command-line macro regressions for `$`, invalid tails, -U and + forbidden `$` at identifier start. + +mcpu-cpp 0.0.24 +=============== + +Correct -dD origin markers for command-line macro definitions. + +* Macros installed by -D are tagged as command-line definitions internally. +* -dD emits `# 0 "<command-line>"` before command-line definitions instead of + incorrectly reporting them as `# 0 "<built-in>"`. +* Predefined/builtin macros retain the `# 0 "<built-in>"` marker. +* Added a regression covering Unicode -D names and both marker classes. + +mcpu-cpp 0.0.23 +=============== + +Implement command-line macro definition and undefinition. + +* -DNAME defines NAME as 1; -DNAME=VALUE defines VALUE, including an empty + replacement after an explicit '='. +* Function-like command-line macros use the same parser and macro engine as + source #define directives, including # stringification and ## concatenation. +* -D and -U payloads alone are decoded from UTF-8 to strict UCS-2; filenames, + include paths and all other command-line arguments remain byte strings. +* Unicode command-line macro names use the same XID_Start/XID_Continue rules + as source identifiers. Invalid UTF-8 and non-UCS-2 characters are rejected. +* -D/-U actions are applied in command-line order after predefined/builtin + macros are installed, so -U may remove a predefined macro and later -D may + define it again. +* Added dedicated regression coverage for ASCII and Unicode command-line + macros, order, function macros, #/##, conditionals and invalid encodings. + +mcpu-cpp 0.0.22 +=============== + +Use LibMPUIO 1.0.4 strict UCS-2 Unicode 18.0.0 XID classification for +preprocessing identifiers. + +* Identifier start is `_` or Unicode XID_Start. +* Identifier continuation is `_` or Unicode XID_Continue. +* Macro names and parameters may therefore use UCS-2 letters from supported + scripts, combining marks in continuation positions, and non-ASCII decimal + digits in continuation positions. +* The same identifier rules are used by #define/#undef, #ifdef/#ifndef, + defined(), ordinary macro expansion, stringification, token concatenation + rescanning. +* Classification is locale-independent and inherits LibMPUIO strict UCS-2 + semantics; surrogate code units are never identifiers. +* Configure now verifies that the required LibMPUIO UCS-2 ctype API is present. + +mcpu-cpp 0.0.21 +=============== + +Implement GNU-compatible token concatenation (##). + +* ## now pastes preprocessing tokens in both object-like and function-like + macro replacement lists. +* A formal parameter adjacent to ## uses its raw, unexpanded actual argument; + the completed replacement list is rescanned afterwards. This preserves the + standard two-level CAT/XCAT expansion technique. +* Empty pasted arguments use placemarker semantics, and multi-token arguments + paste only the token adjacent to ##. +* Pasting can form identifiers, preprocessing numbers, multi-character + punctuators and prefixed string/character tokens. +* An invalid paste is diagnosed and the original two tokens are emitted; ## at + either end of a replacement list is rejected when the macro is defined. +* Stringification (#) and concatenation (##) may be used in the same macro. +* Added dedicated token-concatenation regression coverage and updated macro + error tests. + +mcpu-cpp 0.0.20 +=============== + +Corrective release of the quoted #lang contract introduced in 0.0.19. + +* The #lang implementation contract is unchanged: exactly one quoted language + name, no whitespace inside the quotes, no escape processing, same-physical-line + termination, ASCII case-insensitive validation against the internal language + table only, original spelling preserved, and normalized external whitespace. +* Regression coverage explicitly checks the accepted spellings "diff", "Diff", + "DIFF" and "dIfF", as well as all other internal languages. +* All package-version regression expectations are synchronized with 0.0.20; + this fixes the stale-version test failures seen in the first 0.0.19 test run. + +mcpu-cpp 0.0.19 +=============== + +Tighten and normalize the #lang directive contract. + +* #lang now requires a quoted language name, for example `#lang "diff"`; + the unquoted form is rejected. +* The quoted text must be one non-empty word without whitespace, must close on + the same physical source line, and may be followed only by whitespace. +* Escape sequences are not interpreted inside the #lang string. +* Language lookup is ASCII case-insensitive but is restricted to the internal + language table: diff, dift, alg, as, avm and ACS. +* Output preserves the spelling inside the quotes while normalizing external + whitespace to exactly `#lang "name"`. +* Updated existing language tests and added a dedicated #lang string-contract + regression. + +mcpu-cpp 0.0.18 +=============== + +Implement conditional-compilation control flow. + +* #if, #ifdef, #ifndef, #elif, #else and #endif are consumed by the + preprocessor and never copied to normal or -dD output. +* Inactive branches are skipped without executing definitions, includes or + ordinary macro expansion; nested conditionals remain balanced. +* #if expressions follow the expr.zubr precedence model, including + defined, unknown identifiers as zero, integer operators, ?: and short-circuit + evaluation. +* Include files keep independent conditional-stack boundaries and diagnose + unbalanced or unterminated groups. +* Generated source-location information now uses GNU linemarkers (`# N "file"`) + instead of emitting `#line`; include entry/return markers carry flags 1 and 2. +* Input #line directives are consumed, macro-expanded and update __LINE__ and + __FILE__; the resulting location is emitted as a GNU linemarker. +* Added regression coverage for include guards, nested groups, all conditional + directives, defined, macro-expanded expressions, malformed groups and line + control. + +mcpu-cpp 0.0.17 +=============== + +Finish comment whitespace cleanup. + +* Removing a // or /* ... */ comment at the end of a non-empty source line no + longer leaves a trailing blank before the newline. +* The same rule applies when a block comment begins after program text and + continues onto following physical lines. +* Inline comments between tokens still preserve a separating blank where it is + required to prevent accidental token concatenation. + +mcpu-cpp 0.0.16 +=============== + +Implement -dD and correct comment/UCS-2 phase behavior. + +* -dD preserves normal preprocessed output, emits predefined macro definitions + with <built-in> markers, and keeps encountered #define directives. +* Comment-only lines are left truly empty after // or /* ... */ removal while + inline comments still preserve token separation. +* Valid UTF-8 scalars outside UCS-2 are accepted inside comments and rejected + only if they remain in program text after comment removal. +* Added regression coverage for -dD, comment-only whitespace and non-UCS-2 + characters inside versus outside comments. + +mcpu-cpp 0.0.13 +=============== + +Implement macro stringification (#). + +* Function-like macro replacement lists now support #parameter stringification. +* Stringification uses the raw, unexpanded actual argument, trims leading and + trailing whitespace, folds internal whitespace outside quoted tokens, and + escapes quotes/backslashes in the generated string literal. +* Ordinary argument expansion is now lazy, matching the established raw-vs-expanded + argument semantics and preserving nested calls of the same macro. +* Empty actual arguments are represented correctly; zero-argument macros keep + their established behavior. +* Invalid # uses are diagnosed at definition time. ## remains deliberately + rejected for the next separate token-concatenation port. +* Added regression coverage for raw-vs-expanded stringification, whitespace, + quoted text, empty arguments, diff apostrophe semantics, diagnostics and -dM. + +mcpu-cpp 0.0.12 +=============== + +Correct integer DECIMAL_DIG semantics. + +* Replaced direct use of LibMPU _int_digs() for predefined integer precision + metadata with mcpu-cpp integer-only helpers based on the known type width. +* __INT<bits>_DECIMAL_DIG__ now counts decimal digits of INT<bits>_MAX only; + it excludes both the sign and any terminating NUL. +* __UINT<bits>_DECIMAL_DIG__ now counts decimal digits of UINT<bits>_MAX only; + it excludes any terminating NUL. +* Added exact regression values for every integer family width from 8 through + 65536 bits. + +mcpu-cpp 0.0.11 +=============== + +Complete predefined precision metadata and MCPU byte/word-order naming. + +* Added __INT<bits>_DECIMAL_DIG__ and __UINT<bits>_DECIMAL_DIG__ from LibMPU + _int_digs() for every configured integer width through NB_I_MAX * 8; MAX + values remain capped at 256 bits. +* Added __REAL<bits>_DECIMAL_DIG__ and __REAL<bits>_MANT_DIG__ for every Real + width through MPU_REAL_IO_LIMIT; large numeric MAX/MIN/EPSILON/exponent + values remain capped at 256 bits. +* Replaced __FLOAT_WORD_ORDER__ with __MCPU_BYTE_ORDER__ and + __MCPU_WORD_ORDER__; __BYTE_ORDER__ remains as an alias to + __MCPU_BYTE_ORDER__. +* Added __MCPU_INT_MAX_WIDTH__, __MCPU_REAL_MAX_WIDTH__ and + __MCPU_COMPLEX_MAX_WIDTH__ capability macros. +* Renamed __SIZEOF_PTRDIFF_T__ to language-native __SIZEOF_PTRDIFF__. +* Extended predefined ABI/range regression coverage for the complete integer + and Real families. + +mcpu-cpp 0.0.10 +=============== + +Predefined ABI naming cleanup and complete Real text-buffer metadata. + +* Replaced the C-style public size family with __MCPU_SIZE_TYPE__, WIDTH, + SIZEOF_SIZE and MAX; renamed __MCPU_SIZEOF_SSIZE_T__ to + __MCPU_SIZEOF_SSIZE__. +* Renamed __SIZEOF_CHAR8_T__/__SIZEOF_CHAR16_T__ to the language-native + __SIZEOF_CHAR8__/__SIZEOF_CHAR16__. +* Added __SIZEOF_REAL<bits>_EXP__ from LibMPU _sizeof_exp() for every Real + width through MPU_REAL_IO_LIMIT. +* Added __REAL<bits>_MAX_STRLEN__ from _real_max_string() for every Real width; + the value is a character count, not a byte count. +* Extended -dM regression coverage to verify the new names and the largest + configured Real family. + +mcpu-cpp 0.0.9 +============== + +Complete structural predefined metadata across LibMPU type ranges. + +* Corrected MCPU ptrdiff to signed int64 with max 0x7fffffffffffffff. +* Added the MCPU-specific signed-size family: __MCPU_SSIZE_TYPE__, WIDTH, + SIZEOF and MAX from the configured LibMPU __mpu_ssize_t profile. +* Integer TYPE/WIDTH/SIZEOF families now extend through NB_I_MAX * 8; + numeric MAX/DECIMAL_DIG values remain capped at 256 bits. +* Real/Complex TYPE/WIDTH/SIZEOF families now extend through + MPU_REAL_IO_LIMIT; numeric Real characteristics remain capped at 256 bits. +* Corrected __COMPLEX<bits>_WIDTH__ to the language type parameter <bits>; + __SIZEOF_COMPLEX<bits>__ remains twice the corresponding Real storage. +* Added exhaustive -dM regression coverage across all advertised integer, + Real and Complex structural families. + +mcpu-cpp 0.0.8 +============== + +Predefined ABI refinement and derived system language include paths. + +* Renamed __VERSION__ to __MCPU_CPP_VERSION__ and report the mcpu-cpp version. +* Renamed LibMPU-profile predefines to the __MCPU_* namespace. +* Character type spellings are now char8 and char16. +* MCPU pointer and ptrdiff contracts are fixed at 64 bits independently of host; + ptrdiff is currently uint64 by ABI decision. +* Integer/Real textual value constants are emitted only through 256 bits. + Wider families retain only type and width macros. +* Removed computed integer MIN predefines. +* Added integer DECIMAL_DIG values from _int_digs(). +* Replaced REAL<bits>_DIG with REAL<bits>_DECIMAL_DIG from _real_digs(); + MANT_DIG comes from _real_mant_digs(). +* Configured system include roots automatically add active-language + subdirectories such as /usr/include/mcpu/diff without extra config variables. +* Added regression coverage for the refined predefined environment and derived + system language include search. + +mcpu-cpp 0.0.7 +============== + +Predefined ABI/environment layer and inspection tools. + +* GNU GCC is now an explicit mandatory build compiler. +* Ported the LibMPU/LibMPUIO GCC type-size, endian and machine-register probes + into mcpu-cpp acsite.m4 under project-specific macro names. +* Configure reads and verifies the installed LibMPU real-I/O/math limits, + byte/word order, addressable-unit width, size_t and ptrdiff_t profile. +* Added _ARCH_MCPU and GCC-compatible byte-order, pointer, size_t/ptrdiff_t and + assembler-prefix predefined macros. +* Added fixed-width int/uint predefined families through 65536 bits. +* Added Real/Complex type families through 65536 bits; Real numeric limits are + generated with LibMPU and real_to_ascii up to MPU_REAL_IO_LIMIT. +* Large Real numeric predefined values are generated lazily so ordinary + preprocessing remains fast. +* __VERSION__ is now the future high-level compiler version placeholder 0.0.0. +* Added `-dM` for deterministic macro-table dumps and `-dconfig` for effective + configuration dumps; neither requires an input file. +* Added ABI, dump-macro and dump-config regression tests. + +mcpu-cpp 0.0.6 +============== + +Implement predefined macros. + +* Added the dynamic predefined macros __FILE__, __LINE__, __BASE_FILE__, + __INCLUDE_LEVEL__, __DATE__, __TIME__ and __VERSION__. +* __FILE__/__LINE__/__INCLUDE_LEVEL__ follow nested #include processing; + __BASE_FILE__ remains the original translation-unit input file. +* __DATE__ and __TIME__ are fixed once at preprocessing startup, matching the + translation-unit timestamp model. +* __VERSION__ expands to the mcpu-cpp package version, as preprocessor used its own + package version for the corresponding macro. +* Predefined expansions are emitted without rescanning, following the established + special-symbol behavior. +* Built-ins share the normal macro table and can therefore be undefined or + explicitly redefined. +* K-specific legacy built-ins (__STDK__, __K__, __kxLab__, and related names) + are not carried into the MCPU language family. + +mcpu-cpp 0.0.5 +============== + +Extend the macro engine. + +* Moved project-owned Autoconf macros from m4/ to the root acsite.m4; m4/ is + reserved for external/vendor macros. +* Documented the future developer-only Bison workflow: make parser, make tests, + then make dist. Normal release builds do not require Bison. +* Added function-like #define macros with zero or more formal parameters. +* Added nested argument parsing with defined parenthesis/comma rules. +* Actual arguments are macro-expanded before ordinary substitution, including + nested calls such as min(min(a,b),c). +* Added diagnostics for duplicate parameters, malformed definitions, incomplete + calls and wrong argument counts. +* # and ## are explicitly rejected until their semantics are implemented, avoiding silent partial preprocessing. + +mcpu-cpp 0.0.4 +============== + +Implement the first macro-processing layer. + +* Added doc/mcpu-cpp.md as a living implementation-order manual as the normative MCPU preprocessing manual. +* Added the preprocessing phase needed before directive and macro processing: + backslash-newline splicing and comment removal with preserved source lines. +* Added object-like #define and #undef. +* Added recursive/cascaded object-macro expansion with recursion blocking. +* Macro names are not expanded inside quoted strings; the historical diff + apostrophe rule remains in force. +* Added computed #include through macro expansion. +* Preserved literal #include <...> lexical behavior for comment-like text. +* Began reusing macro regression cases; the self-referential macro + case is now part of the mcpu-cpp test suite. + +mcpu-cpp 0.0.3 +============== + +Include-root and configuration-layout correction. + +* MCPU_CPP_INCLUDE_PATH is now a common user include root visible in every + language state. +* Active language-specific include directories are additional search paths + and precede the common configured root. +* Explicit names such as <diff/a.h> can therefore be used through the common + root regardless of the current #lang state. +* The system configuration moved to /etc/mcpu/mcpu-cpp.conf. +* The per-user configuration moved to $HOME/.mcpu/mcpu-cpp.conf. + +mcpu-cpp 0.0.2 +============== + +Language-contract cleanup before macro-engine development. + +* Establish initial language state 0. +* Language 0 is active at startup and cannot be named by #lang. +* Canonical #lang set is: diff, dift, alg, as, avm, ACS. +* Historical vasm was replaced by as for the real MCPU assembler. +* MCPU_CPP_VASM_INCLUDE_PATH became MCPU_CPP_AS_INCLUDE_PATH. +* Removed the temporary MCPU_CPP_C_INCLUDE_PATH. The root + MCPU_CPP_INCLUDE_PATH is the main include directory of the unnamed base + base MCPU language (state 0) and is selected only in that state. +* Added the public `make tests` target. + +mcpu-cpp 0.0.1 +============== + +Initial architectural release. + +* New UTF-8 external / UCS-2 internal source model with strict NUL rejection. +* No legacy code-page machinery. +* Hand-written preprocessing scanner; flex is not used. +* Scanner honors quoted strings and the diff apostrophe rule. +* Source/include stack with #include support. +* #lang/#endlang language stack defined for the MCPU language stack. +* Configuration-file and command-line include search paths. +* Initial language set: c, diff, dift, alg, vasm, avm, ACS. |
