TheThe0.5.0
The/Большие файлы

Гигабайтный файл — это не «подождите».

Обычный редактор читает файл в память целиком и надеется, что хватит. The отображает оригинал в память через mmap и честно сообщает, в каком режиме сейчас работает и что в этом режиме отключено.

механика

Три решения, из которых складывается скорость.

mmap

Оригинал отображается, а не копируется

Файлы от 100 МБ открываются через memory-mapping: страницы подгружаются по мере обращения, поэтому открытие почти не расходует RAM и не требует полного чтения с диска.

index

Индексация строк идёт в фоне

Переход к строке и позиция курсора мгновенны, а интерфейс не подвисает на подсчёте: индекс строится параллельно и статус виден в строке состояния.

piece table

Правка в любом месте одинаково дешёвая

Буфер собирается из кусков, а не переписывается: вставка в начало файла на сотни МБ стоит столько же, сколько вставка в конец. Отмены — на снимках.

режимы

Редактор говорит, что отключил, вместо того чтобы тормозить.

Режим выбирается по размеру файла и виден в строке состояния. Это ключевое отличие от «внезапных тормозов»: поведение предсказуемо, а ограничения названы вслух.

режим 01

Normal

Обычные файлы. Всё включено: подсветка, свёртка, поиск по проекту, git-маркеры, языковой интеллект.

порог
< 16 MiB
открытие
обычное чтение
ограничения
нет

режим 02

LargeText

Крупные логи и дампы. Файл отображается через mmap, тяжёлые проходы по всему тексту ограничиваются.

порог
16 MiB — 1 GiB
открытие
mmap + фоновый индекс
ограничения
часть проходов по файлу

режим 03

HugeSlice

Гигабайтные файлы. Работа идёт срезами: редактор осознанно отключает то, что требует обхода всего содержимого.

порог
≥ 1 GiB
открытие
mmap, чтение срезами
ограничения
максимальные, названы явно

placeholder

Точные пороги переключения режимов и список функций, отключаемых в каждом из них, нужно подтвердить по коду 0.4.3 перед публикацией. Значения выше приведены как ориентир из проектной документации, а не как замер.

данные

Лог на миллион строк удобнее читать таблицей.

Табличный режим CSV и TSV

  • Колонки подсвечены «радугой» — глаз не теряет столбец при прокрутке.
  • Шапка закреплена, номера строк крупные.
  • Работает на многомиллионных таблицах: те же mmap и фоновый индекс.
  • Поиск по проекту на RE2 — результаты сгруппированы по файлам.
Все форматы

и ещё одно

Большой файл особенно легко испортить.

Поэтому сохранение атомарное: сбой или отключение питания во время записи не оставит «рваный» файл. Открытый файл заблокирован между процессами, а если он изменился на диске — редактор скажет об этом, а не перезапишет молча.