<feed xmlns='http://www.w3.org/2005/Atom'>
<title>term.git/tests/meson.build, branch main</title>
<subtitle>[no description]</subtitle>
<id>https://git.wsap.dev/term.git/atom?h=main</id>
<link rel='self' href='https://git.wsap.dev/term.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/'/>
<updated>2026-10-16T10:58:58+00:00</updated>
<entry>
<title>Read LTO archives with the compiler's own llvm-nm</title>
<updated>2026-10-16T10:58:58+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-16T10:58:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=18821d5dee4013cfaa72ca586becf020beba862d'/>
<id>urn:sha1:18821d5dee4013cfaa72ca586becf020beba862d</id>
<content type='text'>
The symbols test ran the system nm on the static library. Under LTO the
archive holds bitcode. Xcode's nm cannot read bitcode from a newer
Homebrew LLVM, so the test failed on macOS. With clang, the test now
asks the compiler for its llvm-nm and falls back to nm.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'wt/rename' into api-hardening</title>
<updated>2026-10-15T10:04:32+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T10:04:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=bdaedce69b17b654bd0060579dd9b9ff120009b5'/>
<id>urn:sha1:bdaedce69b17b654bd0060579dd9b9ff120009b5</id>
<content type='text'>
# Conflicts:
#	README.md
</content>
</entry>
<entry>
<title>Rename the library to wsap_vtcore</title>
<updated>2026-10-15T10:04:01+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T10:04:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=dcebf9c7f954a55350b68d0ead1935612c4e2e05'/>
<id>urn:sha1:dcebf9c7f954a55350b68d0ead1935612c4e2e05</id>
<content type='text'>
ncurses installs &lt;term.h&gt; and defines struct term. In a file that
includes both headers, an ncurses TERMINAL * and this library's terminal
are silently the same type. The name wsap_vtcore avoids the clash.

The public header is now &lt;wsap_vtcore/wsap_vtcore.h&gt;. Every global
symbol uses the wsap_vtcore_ prefix, every macro uses WSAP_VTCORE_, and
the shared library is libwsap_vtcore.so.0. The default terminal name is
now "wsap_vtcore". The ISA override variable is WSAP_VTCORE_ISA.

No other behavior changes. The amalgamation writes wsap_vtcore.c and
wsap_vtcore.h.

Co-Authored-By: Claude Haiku 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Use the top-level threads dependency in the tests</title>
<updated>2026-10-15T10:03:44+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T10:03:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=ba75c8b0a1bba03ad92c53375432f122ddb4cb98'/>
<id>urn:sha1:ba75c8b0a1bba03ad92c53375432f122ddb4cb98</id>
<content type='text'>
The library now declares dependency('threads') at the top level and
term_dep carries it, so the tests no longer declare their own. The
README says a Meson host gets threads through the dependency, and
names dependency('threads') for the amalgamation.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'wt/lock' into api-hardening</title>
<updated>2026-10-15T09:38:54+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T09:38:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=6ee9eb37d8e616a972fb29b3fbdbc33991aa844f'/>
<id>urn:sha1:6ee9eb37d8e616a972fb29b3fbdbc33991aa844f</id>
<content type='text'>
# Conflicts:
#	src/screen.c
#	tests/term_test.c
</content>
</entry>
<entry>
<title>Merge branch 'wt/strict-input' into api-hardening</title>
<updated>2026-10-15T09:38:37+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T09:38:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=6cd9ab6f73994b68e8453c92a014d1a372af2a24'/>
<id>urn:sha1:6cd9ab6f73994b68e8453c92a014d1a372af2a24</id>
<content type='text'>
# Conflicts:
#	src/screen.c
</content>
</entry>
<entry>
<title>Replace the writer spin lock with a blocking mutex</title>
<updated>2026-10-15T09:37:10+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T09:37:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=e3d8fe4854a7ef7ff0637688cda9e65feb680122'/>
<id>urn:sha1:e3d8fe4854a7ef7ff0637688cda9e65feb680122</id>
<content type='text'>
term_write_begin spun on an atomic sequence word. A waiter burned CPU,
and with no priority inheritance a SCHED_FIFO waiter could starve a
preempted holder on the same CPU. The writer section is now a pthread
mutex with PTHREAD_PRIO_INHERIT where the platform has it, and an SRWLOCK
on Windows. Re-entry on the owning thread still only counts the depth.

The platform wrapper (init, lock, unlock, destroy) is in compat.h. term_new
initializes the mutex, and term_free destroys it. Meson links the thread
library into the core, term_dep, and term_internal_dep. The README,
term.h, and the amalgamation note say that POSIX needs -pthread.

Tests: the feed and snapshot thread test now checks the final screen and
history against a serial reference. A new test checks that term_lock
nests and that another thread waits for the last term_unlock.

Co-Authored-By: Claude Haiku 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Reject invalid arguments instead of ignoring them</title>
<updated>2026-10-15T09:29:35+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T09:29:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=e47f9f20d68eda78a6621917a7e100ae333a1a53'/>
<id>urn:sha1:e47f9f20d68eda78a6621917a7e100ae333a1a53</id>
<content type='text'>
term_feed() returns bool and rejects a NULL terminal, a NULL buffer with
a nonzero length, and any flag bit it does not know. Unknown bits are
rejected now so that later flags can be added without changing what the
old calls mean.

term_new() returns NULL for a negative size component, columns above
TERM_MAX_COLS, a negative scrollback, or a cursor style outside the enum.
Zero still selects the default size and scrollback. It no longer clamps
bad values silently.

term_resize() rejects columns above TERM_MAX_COLS instead of clamping
them, which matches how it already rejects a size below 1.

Co-Authored-By: Claude Haiku 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Add soversion, version macros, and reserved term_options words</title>
<updated>2026-10-15T09:29:25+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>berke.guzel@gdh.digital</email>
</author>
<published>2026-10-15T09:29:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=57ebf3b3238a165c1973ecdf96ba79f95d650fc9'/>
<id>urn:sha1:57ebf3b3238a165c1973ecdf96ba79f95d650fc9</id>
<content type='text'>
The shared library now carries its major version in the SONAME
(libterm.so.0), so an ABI break gets a new file name. The header
gains TERM_VERSION, TERM_VERSION_MAJOR/MINOR/PATCH and
TERM_VERSION_CODE, and term_version() returns the code the library was
built with. A test checks the macros against meson.build's project
version and against the runtime value.

term_options ends with uint32_t reserved[8]. term_new() returns NULL if
a word is nonzero, so later versions can give those words a meaning
without misreading a caller's leftover data. All-zero options stay
valid.

Co-Authored-By: Claude Haiku 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Fix snapshot storage and allocation failure correctness</title>
<updated>2026-10-15T08:31:50+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T08:31:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=acd338ea33de36d223cc6d301712eed4a9501e6c'/>
<id>urn:sha1:acd338ea33de36d223cc6d301712eed4a9501e6c</id>
<content type='text'>
Account for cluster records discarded by snapshot scrolling, propagate snapshot allocation failures with an empty retryable view, and allocate resized screens before mutating visible state. Add bounded-memory and allocation-failure regressions, and update the saved diagnostic and audit report.
</content>
</entry>
</feed>
