<feed xmlns='http://www.w3.org/2005/Atom'>
<title>term.git/src/screen.h, 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-15T10:04:01+00:00</updated>
<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>Report selection allocation failure instead of truncating</title>
<updated>2026-10-15T09:42:11+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-15T09:42:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=6d2dc774947787dcef73a3251d1e9ec51bc526df'/>
<id>urn:sha1:6d2dc774947787dcef73a3251d1e9ec51bc526df</id>
<content type='text'>
On a screen taller than 256 rows the selection's row list is allocated.
When that failed, it fell back to the 256-entry stack array, so the
selection and the snapshot's selection spans silently stopped at row
256 while every call still reported success.

lines_init() now reports the failure. term_select_start() and
term_select_extend() return false and leave the selection unchanged,
term_snapshot_update() fails and keeps its previous content, and the
text getters return NULL, as they do for their other allocations.

Co-Authored-By: Claude Opus 5.5 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>Remove unused private functions and inline trivial helpers</title>
<updated>2026-10-14T14:17:43+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-14T14:17:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=513bf031a589d9e2a1a2730adf56f95e5e316a06'/>
<id>urn:sha1:513bf031a589d9e2a1a2730adf56f95e5e316a06</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Eliminate pen style and history stream parameter smuggling</title>
<updated>2026-10-13T11:46:44+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-13T11:46:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=1e69599900a753e2d7275d7ba714202b7d9c843e'/>
<id>urn:sha1:1e69599900a753e2d7275d7ba714202b7d9c843e</id>
<content type='text'>
- Introduce struct text_pen bundling (fg, bg, sl) across screen and core
- Reduce text_append from 9 to 7 parameters
- Reduce text_commit from 8 to 6 parameters
- Reduce hist_runs_add_pen from 5 to 3 parameters
- Reduce sc_text_ascii and sc_ascii_fast from 6 to 4 parameters
- Remove unused fg, bg parameters from mark_row_blank
- Introduce struct hist_stream_state in src/hist.c, reducing stream_lines from 9 to 5 params and lf_rows from 10 to 6 params
- Introduce struct hist_view_pos in src/hist_view.h, reducing term_hist_view_row_pos from 9 to 7 params
</content>
</entry>
<entry>
<title>Encapsulate stream queue context and consolidate forwarding wrappers</title>
<updated>2026-10-13T11:27:58+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-13T11:27:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=5ab6b560e8528c27ba934b90f94b1828b7771e27'/>
<id>urn:sha1:5ab6b560e8528c27ba934b90f94b1828b7771e27</id>
<content type='text'>
- Create struct stream_emit_ctx packing stream queue arguments into 1 cache line
- Reduce emit_stream_bulk_wrapped from 13 parameters to 3
- Reduce flush_stream_queue from 10 parameters to 1
- Extract stream_queue_finish to eliminate duplicated cleanup in kernel instantiations
- Replace EMIT_STREAM_ROW macros with typed inline functions
- Move pending_wrap clearing directly into term_screen_erase, insert, delete, and scroll
- Remove sc_erase_display, sc_erase_line, sc_insert_chars, and sc_delete_chars wrappers
- Consolidate term_row and remove duplicated row_fill_gap helper
</content>
</entry>
<entry>
<title>Optimize screen scrolling, SIMD wrap padding, and reflow loops</title>
<updated>2026-10-13T11:10:31+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-13T11:10:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=7633ab2c60b40bd5aa67ef391b2a0d149685742f'/>
<id>urn:sha1:7633ab2c60b40bd5aa67ef391b2a0d149685742f</id>
<content type='text'>
- Batch full-screen scroll rotations, eliminating row-by-row scroll loops
- Use block memmove for sub-region scrolling, eliminating heap/stack row swaps
- Vectorize CELL_WRAP_PAD flag setting with AVX2/SSE2/NEON in screen.h
- Replace scalar tab-stop loops with 64-bit word stamping
- Optimize active row backwards scan in resize and erase mode 2
</content>
</entry>
<entry>
<title>term: move the term core to subprojects/term</title>
<updated>2026-10-12T14:49:34+00:00</updated>
<author>
<name>Berke Güzel</name>
<email>wenekar1@gmail.com</email>
</author>
<published>2026-10-12T14:49:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.wsap.dev/term.git/commit/?id=4384435941b8c7658856b381d071aee2e0035e89'/>
<id>urn:sha1:4384435941b8c7658856b381d071aee2e0035e89</id>
<content type='text'>
The core now builds, tests, and benchmarks alone, as a Meson subproject
with no dependency on the main tree.

- include/term/ holds term.h and the header-only unicode/. src/ holds
  the core and its private headers. The main tree gets only
  include/term through term_dep, so it cannot reach a private header.
- The term tests, the term benchmarks, the Kitty parser suite, and
  tools/amalgamate.py and tools/generate_unicode.py move with it. The
  tests run as term:&lt;name&gt;.
- The main build passes its -march (arch_flag) and b_ndebug to the
  subproject. A directory configured before this commit needs
  meson configure -Dterm:arch_flag=-march=... once.
- The term tests compile with -UNDEBUG. They do work inside assert.
- The subproject exports term_test_dep with term_api.h, for the main
  tree's render, thumbnail, color, and selection tests.
- The Kitty bridge used struct vector2i and has not compiled since the
  public API redesign. It builds again. 2 of its 14 tests fail: REP
  after a tab, and a cursor report after a resize.
- dirgraph.py drops the term and unicode layers. Its self-test uses pty.
- The symbols test ignores the __odr_asan symbols that ASan adds.

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