summaryrefslogtreecommitdiff
path: root/src/core.c
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
12 daysOptimize DECALN screen alignment fill with row memory replicationBerke Güzel
12 daysOptimize hot loops with direct access, LUTs, and closed-form formulasBerke Güzel
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
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>