Что нового в VIP 7.3
Настоящая статья содержит сведения, предваряющие официальную документацию. Окончательная версия может несколько отличаться (в лучшую сторону)
Язык
Generic интерфейсы и классы
смотри Generic интерфейсы и классы (en).
Conversion to Generic Type
Мониторы
Must Unify оператор
Новый оператор == (must-unify)
Термы универсального типа
any и предикат toAny/1->
Подготовка к 64-битной реализации
Подготовка к 64-битной реализации 64bit systems: built-in типы integerNative и unsignedNative
Интерфейс с другими языками
Native interfaces support (attributes):
- inline (en): встроенные структуры и строки.
 - union (en): безфункторное объединение.
 - byVal (en): передача параметра по значению.
 
По умолчанию, для соглашения о вызове apicall, применяется внешнее разрешение.
- Они не могут иметь clauses
 - Явное внешнее разрешение правильно только с динамической DLL
 - Является процедурой
 
Other language features
- Приоритет унарного минуса изменен (теперь операция возведения имеет наивысший приоритет)
 - Новые версии встроенных предикатов toTerm/2-> м tryToTerm/2-> (добавлен первый параметр - тип).
 - Новый встроенный предикат fromEllipsis : (...) -> any* Terms
 
Новые аттрибуты:
- retired
 - noDefaultConstructor
 - used
 
Новая или улучшенная диагностика:
- Локальный объектный предикат не использует This (и может быть объявлен как классный)
 - не используемая локальная константа
 - Условие в foreach не имеет точек бактракинга (должно быть или multi или nondeterm)
 - Конверсия unheckedConversion не верна для 64 bit платформ (например pointer -> integer)
 
IDE
Проектное окно
Проектное окно переписано заново. Функциональность практически не изменилась, увеличилась скорость и удобство.
Окна IncludedIn и Includes перенесены в проектное окно в правую панель предоосмотра.
Появилась возможность создания в проекте несколько одноименных пакетов (для поддержки разных namespace например).
Диалог просмотра
Диалог Browse ускорен и улучшен:
Поиск в файлах
Поиск в файлах (Find In Files) ускорен и улучшен:
- окно результата может переиспользоваться
 - Кнопки F8 и Shift+F8 служат для навигации
 - добавлен режим "Prolog case sensitive"
 - Запоминается последнее состояние
 
поддержка Namespace
Поддержка Namespaces улучшена.
IntelliSense
Свойство IntelliSense улучшено.
Добавлена функциональность tab navigation диалога:
- при использовании кнопки ALT фильтруются все [ReadOnly] окна
 - при нажатии Del - соответствующее окно закрывается
 
Go to Position on Clipboard
Свойство Go to Position on Clipboard (Shift+F2) улучшено.
Сортировка в некоторых окнах
Окно ошибок (Errors Window), точек останова (Break points Window) и некоторые другие появилась возможность сортировать колонки. Для этого надо просто нажать на вверх колонки.
- Optimal Set of Includes improved (output, local scopes, etc.)
 
Debugger
- Измененные переменные и их значения показываются выделением Highlighting
 - Улучшен просмотр длинных списков
 - Ускорен рестарт отладчика
 - Появились точки останова (Memory break points) по памяти и для некоторых типов фактов
 - Улучшена работа с несколькими thread (добавлена возможность указания имени thread, улучшена обработка прерываний в thread)
 - При длинных значениях tooltip может показываеться в несколько строк
 
PFC
Новые пакеты
- Collection library
- Algebraic: redBlackSet, leftistPriorityQueue
 - Modifiable: mapM_redBlack, priorityQueueM_leftist, queueM_fact, setM_redBlack
 - Persistent: mapP_redBlack, priorityQueueP_leftist, queueP_fact, setP_redBlack
 
 - varM modifiable variable
 - linkControl PFC version of the Link common control
 - richEditControl PFC version of the RichEdit common control
 - treeControl PFC model based version of the TreeView common control
 - gdiplus PFC version of GDI+
 - cryptography hash, sha1, md5 & base64
 - eventSource generalization of event notification/listening
 - monitorQueue thread safe queue class based on the monitor facility
 - reflection basic functionalty for code reflection
 - inputStream_null & outputStream_null media-less streams (input is exhausted; outpt throws away)
 - lZ_fileSystem_native Interface to Lempel-Ziv Decompression API functionality
 - shell_api Api level interface to the Windows Shell
 - winsock2_native native bindings to Windows Sockets 2
 
Extensions and improvements
- list package:
- speed: sort, removeDuplicate, drop, min/max, etc.)
 - functionality: isMemberEq (and similar predicates) that uses a determ predicate as test
 
 - listControl with owner-drawing capabilities
 - uxTheme_native extended with the rest of the functions and the constants from vsStyle.h, etc.
 - Add moving listener/responder to splitTwoControl
 - Add the fraction handling from format to formatTime
 - Speed improvements for:
- string
 - fileName
 - listViewControl
 
 - string::rear/2-> returns the rear part of a string
 - Math package: predicates roundToInteger64/1-> and roundToUnsigned64/1->
 - Better handling of default button size
 - msXLM_api update to version 6.0 of various COMponent classes
 
Others
- Более эффективное управление памятью; во многих случаях используется типовая аллокация памяти, для составных доменов, списков и цепочек баз данных
 - Несколько различных оптимизаций для увеличения скорости и уменьшения генерируемого кода
 - Новые примеры для демонстрации (Demo Examples) (только для коммерческой версии):
- Parser Generator
 - LZDecompression
 - TreeControlDemo
 
 - Help on built-in entities
 - VipBuilder: новая опция для игнорирования директивы #requires
 - В библиотеку Win32 добавлены имена из многих MS библиотек.
 - При ошибки выполнения предиката consult выдается добавочная информация, позволяющая локализовать ошибку в базе данных
 - Ускорен линкер
 - Интеграция со службой Vault теперь работает с версией 5.0.1
 
