НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте 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 получает обработку этой инструкции.