Что нового в VIP 7.3

Материал из wikiru.visual-prolog.com

Настоящая статья содержит сведения, предваряющие официальную документацию. Окончательная версия может несколько отличаться (в лучшую сторону)

Язык

Generic интерфейсы и классы

смотри Generic интерфейсы и классы (en).

Conversion to Generic Type

Мониторы

Мониторы (en) с гардами (en)

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 диалог (Ctrl+Tab)

Добавлена функциональность 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