<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cie-pseudocode-compiler.git/lib/CodeGen/RuntimeCheck.cc, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.</subtitle>
<id>https://git.ov4.org/cie-pseudocode-compiler.git/atom/lib/CodeGen/RuntimeCheck.cc?h=main</id>
<link rel='self' href='https://git.ov4.org/cie-pseudocode-compiler.git/atom/lib/CodeGen/RuntimeCheck.cc?h=main'/>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/'/>
<updated>2026-10-27T14:00:16Z</updated>
<entry>
<title>feat(library)!: replace #LIB with __LIB source regions</title>
<updated>2026-10-27T14:00:16Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-27T14:00:16Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=3d7d1d7cf8685f0d9230cd89d06017869da1c6d8'/>
<id>urn:sha1:3d7d1d7cf8685f0d9230cd89d06017869da1c6d8</id>
<content type='text'>
Track library mode by original source line, including deferred template bodies
and automatic object cleanup. Update call lines from ordinary code and migrate
the embedded standard library to PP_DEFINE __LIB.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>refactor(codegen): remove dead code in type system and runtime checks</title>
<updated>2026-10-22T03:58:36Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-22T03:24:18Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=e575826c287f0dd0afeb1b9c6c8db45fb44c8d26'/>
<id>urn:sha1:e575826c287f0dd0afeb1b9c6c8db45fb44c8d26</id>
<content type='text'>
Drop the unused TypeInfo::isNumeric, pass emitCheck's format arguments
straight to emitStderr, remove unused &lt;cctype&gt;/&lt;cstdio&gt; includes and
turn always-true trailing operator tests in ArithmeticHandler into plain
returns.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(driver): add #LIB directive hiding library lines in runtime errors</title>
<updated>2026-10-18T08:04:15Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-18T08:04:15Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=927e3fc0384c941f9ad313a28768660c3cdb1777'/>
<id>urn:sha1:927e3fc0384c941f9ad313a28768660c3cdb1777</id>
<content type='text'>
Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>refactor(runtime): write runtime diagnostics with fprintf(stderr)</title>
<updated>2026-10-17T09:46:23Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-17T09:46:23Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=0305500e31eda6fe6da84f88748fc20843aebbce'/>
<id>urn:sha1:0305500e31eda6fe6da84f88748fc20843aebbce</id>
<content type='text'>
Replace snprintf+write(2) with a single fprintf call on the platform's
stderr: the C library's stderr / __stderrp, or __acrt_iob_func(2) on
Windows, which the embedded runner binds to the host shim.

Co-Authored-By: Claude Sonnet 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(runtime): write runtime diagnostics to stderr</title>
<updated>2026-10-17T09:35:19Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-17T09:35:19Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=6b332f91c82da6e19efad92b58ac1d9c1bc9eec0'/>
<id>urn:sha1:6b332f91c82da6e19efad92b58ac1d9c1bc9eec0</id>
<content type='text'>
Runtime check messages and the unhandled-exception message were printed
to stdout by the generated program, so `cpsc x.cps -r &gt;out.txt` captured
them. They are now formatted with snprintf and written with write(2).
Test expectations and docs are updated accordingly.

Co-Authored-By: Claude Sonnet 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix(codegen): restore runtime diagnostics before throwing</title>
<updated>2026-10-15T02:41:11Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-15T02:41:11Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=c4565386553ea86308a9487650d2435804893ed0'/>
<id>urn:sha1:c4565386553ea86308a9487650d2435804893ed0</id>
<content type='text'>
Reuse historical runtime messages and source-line reporting for arithmetic,
array, enum, pointer and file checks while preserving anonymous exceptions.
Update the manuals and subsystem guidance to describe diagnostic output.

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(codegen): support C scalar arithmetic and input output</title>
<updated>2026-10-14T03:36:21Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-14T03:36:21Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=febb9e4ac239a15ad8c46575643b53ca66e3f4ac'/>
<id>urn:sha1:febb9e4ac239a15ad8c46575643b53ca66e3f4ac</id>
<content type='text'>
Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(compiler)!: add try-catch with C++ stack unwinding</title>
<updated>2026-10-13T14:52:57Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-13T14:52:57Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=a484f314b719aec5ed7bdc6f08403342b2125561'/>
<id>urn:sha1:a484f314b719aec5ed7bdc6f08403342b2125561</id>
<content type='text'>
Add TRY/CATCH/ENDTRY and anonymous THROW statements. Use LLVM exception
handling and the C++ ABI to propagate exceptions across function calls,
clean up catch state, and handle uncaught exceptions at the program boundary.
Register exception runtime symbols for the statically linked embedded runner.

Verify runtime checks, nested catches, returns, loops, and invalid syntax
with smoke programs; exercise unwinding with MCJIT, lli, and native binaries.

BREAKING CHANGE: Runtime check failures now throw anonymous exceptions and
print only a generic message when uncaught. Native binaries require linking
the C++ runtime.

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix: check division and modulo for zero divisors</title>
<updated>2026-10-13T08:43:17Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-10-13T08:43:17Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=c6dbd14ec8ff94df47d3c2137cc5234203ec5e0c'/>
<id>urn:sha1:c6dbd14ec8ff94df47d3c2137cc5234203ec5e0c</id>
<content type='text'>
Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat: whole arrays (and records) as FUNCTION/PROCEDURE parameters</title>
<updated>2026-07-26T17:42:08Z</updated>
<author>
<name>_ov4</name>
<email>ov4@ov4.org</email>
</author>
<published>2026-07-26T17:42:08Z</published>
<link rel='alternate' type='text/html' href='https://git.ov4.org/cie-pseudocode-compiler.git/commit/?id=a44f1246dbe24fc813a212a5ef3f5811b1d6402a'/>
<id>urn:sha1:a44f1246dbe24fc813a212a5ef3f5811b1d6402a</id>
<content type='text'>
- Parameter syntax lands end-to-end: ARRAY OF T (rank 1, bounds travel
  with the argument) and ARRAY[l:u,...] OF T (any rank, literal bounds as
  a checked contract). Element type and rank must match exactly.
- Flattened ABI: each rank-R array parameter becomes a data pointer plus
  kBoundArgsPerDim i64 bounds per dimension. The callee rebuilds
  ArrayMetadata from those bounds (ArrayHandler::bindArrayParameter via a
  binder callback injected by CodeGen, so FunctionGen stays ignorant of
  the array subsystem); the checked-indexing pipeline is reused unchanged.
- BYVAL (the CIE default) copies the whole buffer at callee entry
  (malloc+memcpy, never freed — consistent with the string policy) so
  callee writes stay invisible; BYREF binds the caller's buffer.
- Bounded-parameter contract: compile-time comparison when the caller's
  bounds are constants, else a runtime [Fatal] check
  (RuntimeCheck::emitArrayArgBoundsCheck).
- marshalCallArgs gains the array branch and a call-site line number
  (CallStmtAST now carries one); whole-array-to-scalar keeps a clear
  error, FUNCTION RETURNS ARRAY is a dedicated parse error.
- Verified: BYREF fill/sort-style mutation, BYVAL copy invisibility,
  2-D bounded params, ARRAY OF &lt;record&gt; with field writes through the
  parameter, bounds-contract mismatches at compile time and run time.

Co-Authored-By: Claude Fable 5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
