summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
11 daysDeduplicate scroll and SIMD paths while preserving performanceBerke Güzel
11 daysRemove unused private functions and inline trivial helpersBerke Güzel
11 daysFast-path isolated single ASCII cell printing in term_feed_innerBerke Güzel
11 daysOptimize term_feed scalar dispatch, branchless range search, and invalid ↵Berke Güzel
subparts
11 daysOptimize DECALN screen alignment fill with row memory replicationBerke Güzel
11 daysConsolidate fast CSI color component parsing into inlined byte delimiter helperBerke Güzel
12 daysOptimize term_feed ASCII scanning alignment and fast CSI SGR single-param loopBerke Güzel
12 daysReplace scalar loops with SIMD spans, packed stores, and direct wrap-pad checksBerke Güzel
12 daysOptimize hot loops with direct access, LUTs, and closed-form formulasBerke Güzel
12 daysFix extra mouse button encoding collision with Alt bit and document API gapsBerke Güzel
- Encode buttons 8 through 11 (EXTRA_1..4) with offset 128 (128..131) per xterm mouse tracking, resolving collisions with the Alt modifier bit (8) - Drop EXTRA_5 from enum term_mouse_button since xterm mouse tracking defines four extra buttons (8 to 11) and codes beyond 131 collide with modifier bits - Replace literal 3 with TERM_MOUSE_BUTTON_NONE for hover motion check in mode 1002 - Document button field semantics in struct term_mouse_event for press, release, motion, and scroll events - Document OSC 52 target buffer selections ("c", "p", "q", "s", "0".."7") in term.h - Add unit tests for extra button encoding, SGR release, hover motion suppression in mode 1002, and non-collision with Alt modifiers
12 daysEliminate pen style and history stream parameter smugglingBerke Güzel
- 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
12 daysEncapsulate stream queue context and consolidate forwarding wrappersBerke Güzel
- 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
12 daysOptimize screen scrolling, SIMD wrap padding, and reflow loopsBerke Güzel
- 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
12 daysOptimize loops and data structures in hist.c and hist_view.cBerke Güzel
- Unroll fast paths in put_varint and get_varint - Replace while capacity loop with branchless term_grow_cap in runs_reserve - Vectorize continuation ring rehash with slice memcpy in cont_push - Fast-check simple line runs using combined bitwise XOR-OR mask in evict_simple_run - Resume batch simple-run eviction on interrupted sweeps in evict_for - Eliminate unused page_rows and page_simple allocations (>320 KB heap saved) - Add zero-delta bypass in Fenwick tree set_count - Replace iterative capacity loop with branchless term_next_pow2_32 in hist_view_sync - Eliminate prefix-walk in term_hist_view_find_row by reusing Fenwick remainder - Simplify upward and downward viewport movement in term_hist_view_scroll
12 daysOptimize and simplify loops, table lookups, and branchless parsersBerke Güzel
- Replace sequential colon-counting loop with branchless CTZ bitmask in src/pen.h - Replace linear strchr with 256-bit ASCII punctuation bitmask in src/selection.c - Flatten 3D color cube loop and precompute constants in src/palette.c - Use static 256-byte LUT for hex decoding and bsearch for termcap in src/escape.c - Replace capacity doubling while loops with branchless CLZ pow2 helpers across core - Use direct memset/memcpy in src/snapshot.c - Optimize input digit/byte formatting, alt-prefix path, and make keyboard state optional in src/input.c
12 daysMake term standalone library and export Meson dependenciesBerke Güzel
13 daysterm: move the term core to subprojects/termBerke Güzel
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:<name>. - 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 <noreply@anthropic.com>