aboutsummaryrefslogtreecommitdiff
path: root/AGENTS
AgeCommit message (Collapse)Author
2026-10-30docs(types): explain implicit constructors and raw text literalsHEADmain_ov4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28docs(overload): document default return selection_ov4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27docs(preprocessor): document switches and library regions_ov4
Add manuals and aliases for all five PP directives, replace the retired #LIB page, and update compiler and shared-editor architecture notes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27docs(memory): describe standard-library allocation and explicit imports_ov4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24docs(overload): document return-type selection across keyword pages_ov4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24feat(operator): select operator overloads by the expected result type_ov4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24feat(overload): select overloads by return type as well as parameters_ov4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23fix(stdlib): reject NaN, infinity and hexadecimal text in IS_NUM, STR_TO_NUM ↵_ov4
and INPUT Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23fix(stdlib)!: return CHAR from CHR_ov4
BREAKING CHANGE: CHR now returns CHAR instead of STRING, so user overloads and templates select or deduce CHAR for CHR(...). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22feat(input)!: validate INPUT and read whole lines into STRING_ov4
Scalar INPUT now reads one whitespace-delimited token through module-local IR helpers instead of scanf, then skips spaces and tabs and consumes one newline. INTEGER, REAL, BOOLEAN (TRUE or FALSE in any case) and CHAR are validated, and bad input or end of input is a runtime error. STRING INPUT reads the rest of the line. The unused scanf and REAL printf format globals are removed. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22feat(codegen): convert implicitly between CHAR and STRING_ov4
A CHAR becomes a one-character STRING in &, comparisons, assignment, parameter passing and RETURN. A STRING becomes a CHAR in assignment, parameter passing and RETURN, with a runtime error when its length is not 1. CHAR with INTEGER or BOOLEAN still does not convert. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22feat(codegen): short-circuit AND and OR_ov4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22feat(codegen)!: require explicit REAL to INTEGER conversion and add INT_ov4
Implicit REAL to INTEGER is now a compile error with an INT(...) hint. INT is a compiler builtin that truncates toward zero and raises a runtime error for NaN or values outside the INTEGER range. No existing test program relied on the implicit conversion. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22feat(codegen)!: reject implicit BOOLEAN, CHAR and INTEGER mixing_ov4
Arithmetic and unary minus accept only INTEGER and REAL, AND/OR/NOT need BOOLEAN, comparisons need equal types (or INTEGER with REAL), and only INTEGER converts implicitly to REAL. Use ASC and CHR for characters. No existing test program relied on the now-illegal mixing, so none changed. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22fix(classes): defer NEW for DECLARE without a parameterless constructor_ov4
A plain DECLARE, field or array element now calls NEW only when the class has a parameterless one; otherwise the zeroed object waits for x <- NEW C(...), as in guide section 10.2. DECLARE with parentheses still requires a matching constructor. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22fix(arrays): free array buffers when their scope ends_ov4
Register every array as a stack object so its buffer is freed on scope end, re-DECLARE, RETURN and unwinding; run the element-destroy loop only for types that need destruction. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22fix(arrays): reject inverted bounds and check array allocation_ov4
Constant inverted bounds are a compile error and other bounds are checked at run time. Allocation sizes use overflow-checked arithmetic, and a NULL malloc (including the BYVAL copy) reports that the array is too large. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22feat(output)!: print REAL values in shortest round-trip form_ov4
OUTPUT and NUM_TO_STR now share Python repr formatting instead of %f. BREAKING CHANGE: REAL output changes from six fixed decimals (2.500000) to the shortest round-trip text (2.5). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22fix(driver): cache the embedded standard library per user_ov4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22fix(stdlib): make IS_NUM agree with STR_TO_NUM and explain conversion errors_ov4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22docs: document C-struct records for EXTERN_ov4
Describe which TYPE records count as C structs, passing them by value and by pointer as parameters, RETURNS and variadic arguments, and the recursive pointer types EXTERN accepts. Note the clangCodeGen dependency and the CABI sources in the architecture notes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22docs: document the cmd installer_ov4
Describe install.cmd in place of install.ps1: how to run it from the ZIP or a build tree, its options and limits, the PowerShell-only shortcut, the user PATH update and what CI verifies. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22ci(nightly): run the package installers in smoke tests_ov4
The smoke tests only checked that each package contained its installer. Linux and macOS now run install.sh into a temporary prefix. Windows runs install.cmd twice into a prefix with spaces, checks the shortcut and the user PATH (no duplicate entry), and runs cmake --install on the build tree. Each platform then runs the installed compiler. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22build(release): version compiler packages by their last source commit_ov4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22ci(nightly): publish latest-named assets and version.json_ov4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22ci(nightly): fetch full history for per-product versions_ov4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22refactor(parser): move TEMPLATE declaration and argument parsing into ↵_ov4
ParserTemplate.cc Pure move of isTemplatePack, ParseTemplateDecl and ParseTemplateArgs out of ParserType.cc; no behavior change. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22refactor(codegen): move call marshalling and resolution into CallGen.cc_ov4
Pure move of both marshalCallArgs overloads, emitVariadicArgument and resolveCall out of CodeGen.cc; no behavior change. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22refactor(driver): move PATH-mode lli runner into PathRunner_ov4
PathRunner.cc holds the lli lookup, LLVM 23 version check and lli execution, and is built only with CPSC_RUN_MODE=PATH like EmbeddedRunner.cc is for EMBEDDED. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21feat(driver): color diagnostics like gcc with -fdiagnostics-color_ov4
Add -fdiagnostics-color[=auto|always|never] and -fno-diagnostics-color. The default auto mode colors only a terminal stderr (TERM set and not dumb on Unix; a console that accepts VT sequences on Windows), so test harnesses, the desktop bundle and other pipes stay plain. Every diagnostic label now comes from cps::diagnosticPrefix, which emits gcc's default GCC_COLORS bytes: bold locus, bold red error/fatal error, bold magenta warning, bold cyan note. compilation terminated., runtime messages of the compiled program and lld output are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21feat(diagnostics): print source diagnostics in gcc file:line: layout_ov4
Lexer, parser, driver and codegen diagnostics now read "<path>:<line>: error: <message>" instead of "error: <message> at line N in <path>". The path is always printed as given on the command line. Call sites pass the bare message to cps::sourceError/sourceWarning, which carry printf format checking; reportError routes through the same helper. The suite iii harness parses the new layout and matches the reason against the message only. iii/template-class-pack-field passed only because its reason regex matched the case path, so it is now case-insensitive. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21docs(agents): drop unverified-platform claims now that nightly CI covers all ↵_ov4
three Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21docs(agents): collapse duplicated passages into single-home links_ov4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21docs(agents): drop fixed-bug history and stale status notes from PITFALLS_ov4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21docs(agents): link plain-text references to the split topic files_ov4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21docs(agents): dedupe library units and move macOS CI caching into NIGHTLY_ov4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21docs(agents): split CONVENTIONS.md into topic files under AGENTS/CONVENTIONS_ov4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21docs(agents): split SUBSYSTEMS.md into topic files under AGENTS/SUBSYSTEMS_ov4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21docs(agents): split PITFALLS.md into topic files under AGENTS/PITFALLS_ov4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21docs(agents): split ARCH.md into topic files under AGENTS/ARCH_ov4
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21ci(macos): cache the static LLD build_ov4
Restore only an exact match for the runner image, SDK, LLVM version, compiler/library contents, workspace and helper script. Always run the existing helper after restoration to configure, build and install LLD. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21ci(bundle): publish portable Windows and macOS desktop packages_ov4
Build and check Bundle alongside each native compiler. Publish a single Windows exe with an embedded compiler extracted into the startup directory, and a macOS tar.xz containing the app and compiler. Check Linux without publishing a desktop package and require all six nightly attachments. Include licenses in embedded assets and app resources. Verify local builds, package smoke checks and release replacement with a simulated GitHub API. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21feat(bundle): run the bundled compiler with input and streaming output_ov4
Save before running, close prefilled stdin at EOF, and stream output bytes through Tauri channels. Stop and reap the child before exit or another run. Disable embedded stdout buffering and exercise the runner with real programs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21docs: document TEMPLATE_ov4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20docs(strings): document the embedded standard library and STRING values_ov4
Describe -no-std, C_STRING literals, library function semantics and owning string lifetimes in the manuals and contributor guidance. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20docs(agents): align dispatch and object lifetime guidance with code_ov4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19build: use Perl for native runtime build dependencies_ov4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19refactor(driver): isolate MinGW JIT compatibility support_ov4
Move COFF normalization, jump stubs and SEH registration behind two internal entry points. Keep runtime bindings in the embedded runner, remove redundant conditions and document the upstream requirements. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19refactor(driver): remove Windows JIT crash diagnostics_ov4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19fix(driver): bind MinGW JIT stdio locks to the host CRT_ov4
Resolve _lock_file and _unlock_file to the host compatibility functions so JIT stdio cannot pick incompatible locks from another CRT DLL. Cover fprintf inside a C++ catch with exact stderr expectations. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>