Skip to content

Session read_loop: two allocations per PTY read — use Cow for sanitize #104

@kirich1409

Description

@kirich1409

Описание

session.rs:306,319 — каждый PTY read делает:

  1. vt_parser::sanitize_output(raw)Vec<u8> (аллокация Bump docker/setup-buildx-action from 3 to 4 #1)
  2. Bytes::copy_from_slice(&sanitized)Bytes (аллокация Bump actions/checkout from 4 to 6 #2)

В большинстве случаев sanitize — no-op (нет OSC-52 последовательностей), и аллокация #1 — чистый overhead.

Module: runner/src/session.rs, runner/src/vt_parser.rs

Fix

  • sanitize_output возвращает Cow<[u8]> — borrow input когда ничего не удалено, copy только при наличии OSC-52
  • Для broadcast: Bytes::from(sanitized.into_owned()) вместо Bytes::copy_from_slice

Acceptance Criteria

  • sanitize_output возвращает Cow<[u8]>
  • sanitize_input — аналогично (если применимо)
  • Нет лишних аллокаций когда sanitize — no-op
  • Тесты sanitize проходят

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions