[I128-2510] PFT64: логические AND/OR выполняют правую часть без необходимости


НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.2.3 >> [I128-2510] PFT64: логические AND/OR выполняют правую часть без необходимости📄 Скачать в DOCX


Тип Версия Статус Приоритет Исполнитель
⚙️ Исправление ошибок 2026.2.3 🔘 Завершено Средний Ilya Mikhaylenko

Компоненты: ИРБИС 128. Модуль Format - Подсистема форматирования записей ИРБИС 128

Завершено: 29.06.2026 14:10

Пользовательский сценарий: Формат PFT64 использует логические выражения с AND или OR, например в условиях IF, WHILE или последовательного отбора записей.

Наблюдаемая проблема: Правая часть выражений AND и OR вычисляется всегда, даже когда результат уже определен левой частью. Для OR это происходит при истинной левой части, для AND - при ложной левой части. Из-за этого формат может выполнять лишние проверки, обращения к полям, функциям или вложенным операциям, которые по логике условия не должны запускаться.

Ожидаемое поведение: AND и OR должны выполняться лениво: OR не вычисляет правую часть, если левая часть уже истинна; AND не вычисляет правую часть, если левая часть уже ложна.

Изменения: Компилятор PFT64 формирует управляющие переходы для AND/OR вместо безусловного вычисления обеих частей. В набор инструкций добавляется переход OPJUMPIF_TRUE, а runtime получает обработку этой инструкции.