HTMLEditor для SwiftUI 1.1.0
Этот релиз посвящен обеспечению совместимости с Swift 6.3, существенному переписыванию обработки подсветки синтаксиса и значительному улучшению отзывчивости при редактировании очень больших HTML-документов.
Добавлено
- Добавлен исполняемый таргет HTMLEditorBenchmarks для проведения повторяемых замеров производительности.
- Добавлена поддержка бенчмарков для: полного планирования подсветки, повторного использования перекрытий (overlap reuse), инвалидации правок, переназначения видимой подсветки и путей локальной перерисовки больших документов.
-
Добавлены специализированные регрессионные тесты для:
- повторного использования кэша планировщика и инвалидации в рамках документа;
- крайних случаев с некорректными NSRange и кодировкой UTF-16;
- подсветки значений атрибутов в кавычках и без них;
- переназначения состояния видимой подсветки;
- покрытия подсветки на уровне блоков;
- политик редактирования и прокрутки больших документов.
Изменено
- Runtime редактора была отрефакторена на более мелкие специализированные компоненты, включая отдельные файлы для жизненного цикла координатора, вьюпорта, редактирования, политик, покрытия, структурных диапазонов и состояния видимой подсветки.
- Синтаксический анализатор был разбит на компоненты на базе планировщика и исполнителя для более четкого разделения этапов сканирования, планирования и применения подсветки.
- Редактор переведен на адаптивную модель выполнения, которая меняет свое поведение в зависимости от размера документа, вместо того чтобы обрабатывать все HTML-документы одинаково.
Улучшено
-
Значительно улучшена производительность при редактировании больших документов благодаря:
- приоритетной подсветке видимой области;
- кэшированию планировщика в пределах документа и целевой инвалидации;
- кэшированию планов видимых диапазонов;
- отслеживанию покрытия подсветки на уровне блоков;
- выравниванию структурных «грязных» диапазонов вокруг правок;
- двухфазному редактированию больших файлов с немедленным микро-проходом и отложенной расширенной перерисовкой;
- объединению частых правок для снижения частоты перерисовок;
- семантической подсветке во время простоя прокрутки;
- отложенной синхронизации привязок для больших документов;
- автоматическому включению режима allowsNonContiguousLayout в режиме работы с большими файлами.
- Повышена стабильность подсветки при наборе текста в середине очень большого HTML-документа за счет сохранения состояния видимого оверлея и уменьшения частоты перерисовок вокруг курсора.
- Улучшена настройка производительности для больших файлов с помощью выделенных бенчмарков и runtime-зондов.
Исправлено
- Исправлены проблемы компиляции и конкурентности, необходимые для совместимости с Swift 6.3.
- Исправлено несколько проблем в путях обновления редактора, связанных с состоянием координатора, задачами подсветки и поведением main-actor.
-
Исправлены регрессии подсветки и крайние случаи, связанные с:
- частичными тегами;
- пустым вводом;
- большими объемами данных;
- раскраской значений атрибутов;
- потерей видимой подсветки при редактировании больших файлов;
- некорректными или обрезанными видимыми диапазонами.
Примечания
- Для небольших HTML-документов по-прежнему используется семантическая подсветка всего документа.
- Очень большие HTML-файлы теперь автоматически переключаются в более консервативный, ориентированный на производительность режим редактирования, чтобы обеспечить плавность прокрутки и набора текста.
Попробуйте на GitHub: https://github.com/makoni/HTMLEditor-SwiftUI



