Visual Prolog 7.3 New Features

Generic Interfaces and Classes
See Generic Interfaces and Classes.

Monitors
Monitors with

Must Unify Operator
New operator == (must-unify)

Universal term type
any and the predicate toAny/1->

64 bit preparation
Preparations for supporting 64bit systems: built-in types integerNative and unsignedNative

Foreign language interfacing
Native interfaces support (attributes):
 * : Inline structures and strings.
 * : Functor-less unions.
 * : Passing parameters by value.

External resolution is default for predicates declared with apicall calling convention.
 * They cannot have clauses
 * explicit externally resolution is only legal when a DLL is stated

Other language features

 * The precedence of unary minus is changed (so that power operator has higher precedence)
 * Extended versions of built-in predicates toTerm/2-> and tryToTerm/2-> (type as the first parameter).
 * New built-in predicate fromEllipsis : (...) -> any* Terms
 * Runtime distinction between privately and publicly supported interfaces is removed

New attributes

Warnings:
 * Local object predicates which do not use This</vp> (and therefore can be declared as class predicates)
 * Unused local constants
 * Condition of foreach statement which has no backtrack point (i.e. mode is not multi</vp> or nondeterm</vp>)
 * unheckedConversion</vp>'s that would be illegal on 64 bit platforms (e.g. pointer</vp> -> integer</vp>)

Project tree
The project tree is redesigned and reimplemented. The functionality is more or less unchanged, but the performance is improved.

The IncludedIn and Includes windows has been moved to preview pane of project window.

It is now possible to have several packages with same name in a project (which can make much sense when using namespaces).

Browse dialog
The Browse dialog is improved in several smaller respects, including:
 * It automatically jump to the 1st occurrence of search entity on locate
 * The last dialog position is saved for next appearence

Find In Files
The Find In Files dialog is improved in several respects, including:
 * result window is reused for subsequent searches
 * F8 button for next match (Shift+F8 - previous)
 * Prolog case sensitive search mode
 * state is saved for next appearence

Namespace support
The Namespaces support is improved, so that forms, dialogs, etc can be places in namespaces when created.

IntelliSense
The IntelliSense feature is improved for better overview, speed typing and convenience of work.

Tab navigation dialog
The tab navigation dialog functionality has been extended:
 * use ALT button for filtering [ReadOnly] windows
 * use Del for closing windows

Go to Position on Clipboard
The Go to Position on Clipboard (Shift+F2) has been extended to accept a complete exception dump. F8 will go to the next stack entry.

Sorting in various windows
The Errors Window, the Break points Window, etc. has been extended with sorting capabilities (clicking on the top banner).
 * Optimal Set of Includes improved (output, local scopes, etc.)

Debugger

 * Highlighting changed values in variable window
 * View of long lists improvement
 * Speed of restarting is improved
 * Memory break points and fact access (for some types)
 * Multi-threaded application debugging is improved (thread names, break points handling)
 * Multi-line tool tips

New entities

 * Collection library
 * Algebraic: redBlackSet</vp>, leftistPriorityQueue</vp>
 * Modifiable: mapM_redBlack</vp>, priorityQueueM_leftist</vp>, queueM_fact</vp>, setM_redBlack</vp>
 * Persistent: mapP_redBlack</vp>, priorityQueueP_leftist</vp>, queueP_fact</vp>, setP_redBlack</vp>
 * <vp>varM</vp> modifiable variable
 * <vp>linkControl</vp> PFC version of the Link common control
 * <vp>richEditControl</vp> PFC version of the RichEdit common control
 * <vp>treeControl</vp> PFC model based version of the TreeView common control
 * <vp>gdiplus</vp> PFC version of GDI+
 * <vp>cryptography</vp> hash, sha1, md5 & base64
 * <vp>eventSource</vp> generalization of event notification/listening
 * <vp>monitorQueue</vp> thread safe queue class based on the monitor facility
 * <vp>reflection</vp> basic functionalty for code reflection
 * <vp>inputStream_null</vp> & <vp>outputStream_null</vp> media-less streams (input is exhausted; outpt throws away)
 * <vp>lZ_fileSystem_native</vp> Interface to Lempel-Ziv Decompression API functionality
 * <vp>shell_api</vp> Api level interface to the Windows Shell
 * <vp>winsock2_native</vp> native bindings to Windows Sockets 2

Extensions and improvements

 * <vp>list</vp> package:
 * speed: <vp>sort</vp>, <vp>removeDuplicate</vp>, <vp>drop</vp>, <vp>min</vp>/<vp>max</vp>, etc.)
 * functionality: <vp>isMemberEq</vp> (and similar predicates) that uses a <vp>determ</vp> predicate as test
 * <vp>listControl</vp> with owner-drawing capabilities
 * <vp>uxTheme_native</vp> extended with the rest of the functions and the constants from vsStyle.h, etc.
 * Add moving listener/responder to <vp>splitTwoControl</vp>
 * Add the fraction handling from <vp>format</vp> to <vp>formatTime</vp>
 * Speed improvements for:
 * <vp>string</vp>
 * <vp>fileName</vp>
 * <vp>listViewControl</vp>
 * <vp>string::rear/2-></vp> returns the rear part of a string
 * Math package: predicates <vp>roundToInteger64/1-></vp> and <vp>roundToUnsigned64/1-></vp>
 * Better handling of default button size
 * <vp>msXLM_api</vp> update to version 6.0 of various COMponent classes

Others

 * More efficient memory handling; using typed memory allocation for compound terms and internal facts chains
 * Various optimizations for speed and size of generated code
 * New Demo Examples (Commercial Edition only):
 * Parser Generator
 * LZDecompression
 * TreeControlDemo
 * Help on built-in entities
 * VipBuilder: extra option to ignore <vp>#requires</vp> directives
 * Extend Win32 library (with more names from MS libraries).
 * More context to consult exceptions
 * Linker speed improvement
 * Vault Integration updated to version 5.0.1

Build 7301
Visual Prolog 7.3, Build 7301 fixes several minor bugs.

The following new feature has been implemented:


 * Built-in predicate <vp>toEllipsis : (any* Terms) -> ...</vp>
 * The PFC treeControl has been extended with key down and drag-and-drop handling
 * The set of examples for Personal Edition was extended
 * The following GUI controls have been added to the Personal Edition: listViewControl, tabControl, and treeViewControl.

Build 7302
Visual Prolog 7.3, Build 7302 fixes several minor bugs.

Build 7303
Visual Prolog 7.3, Build 7303 fixes several minor bugs.