Что нового в 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