Difference between revisions of "Visual Prolog 7.3 New Features"

From wiki.visual-prolog.com

(→‎Language: update)
 
(39 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Preliminary Documentation}}
== Language ==


=== Language ===
=== Generic Interfaces and Classes ===
 
See {{lang|Generic Interfaces and Classes|Generic Interfaces and Classes}}.
 
=== Conversion to Generic Type ===
 
=== Monitors ===
 
{{lang|Monitors|Monitors}} with {{lang2|Monitors|Guards|guards}}
 
=== Must Unify Operator ===
 
New operator == (must-unify)
 
=== Universal term type  ===
 
<vp>any</vp> and the predicate <vp>toAny/1-></vp>
 
=== 64 bit preparation ===
 
Preparations for supporting 64bit systems: built-in types <vp>integerNative</vp> and <vp>unsignedNative</vp>
 
=== Foreign language interfacing ===
 
Native interfaces support (attributes):
* {{lang2|Attributes|inline|inline}}: Inline structures and strings.
* {{lang2|Attributes|union|union}}: Functor-less unions.
* {{lang2|Attributes|byVal|byVal}}: Passing parameters by value.
 
External resolution is default for predicates declared with <vp>apicall</vp> calling convention.
* They cannot have clauses
* explicit externally resolution is only legal when a DLL is stated
 
=== Other language features ===


* {{lang|Generic Interfaces and Classes|Generic Interfaces and Classes}}
** Conversion to generic type
* {{lang|Monitors|Monitors}} with {{lang2|Monitors|Guards|guards}}
* New operator == (must-unify)
* Universal term type <vp>any</vp> and the predicate <vp>toAny/1-></vp>
* The precedence of unary minus is changed (so that power operator has higher precedence)
* The precedence of unary minus is changed (so that power operator has higher precedence)
* Extended versions of built-in predicates <vp>toTerm/2-></vp> and <vp>tryToTerm/2-></vp> (type as the first parameter).
* New built-in predicate <vp>fromEllipsis : (...) -> any* Terms</vp>
* New built-in predicate <vp>fromEllipsis : (...) -> any* Terms</vp>
* Runtime distinction between privately and publicly supported interfaces is removed
* Runtime distinction between privately and publicly supported interfaces is removed
* Preparations for supporting 64bit systems: built-in types <vp>integerNative</vp> and <vp>unsignedNative</vp>
* Extended versions of built-in predicates <vp>toTerm/2-></vp> and <vp>tryToTerm/2-></vp> (type as the first parameter).
* Native interfaces support (attributes):
** {{lang2|Attributes|inline|inline}}: Inline structures and strings.
** {{lang2|Attributes|union|union}}: Functor-less unions.
** {{lang2|Attributes|byVal|byVal}}: Passing parameters by value.
* Other new attributes {{lang2|Attributes|retired|retired}}, {{lang2|Attributes|noDefaultConstructor|noDefaultConstructor}}{{lang2|Attributes|used|used}}
* External resolution is default for predicates declared with <vp>apicall</vp> calling convention.
** They cannot have clauses
** explicit externally resolution is only legal when a DLL is stated


==== New warnings ====
New attributes
* {{lang2|Attributes|retired|retired}}
* {{lang2|Attributes|noDefaultConstructor|noDefaultConstructor}}
* {{lang2|Attributes|used|used}}


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


=== IDE ===
== IDE ==


* Project tree was redesigned.
=== Project tree ===
* IncludedIn and Includes windows were moved to Preview Pane of project window.
* Browse dialog was improved (automatically jump to the 1st occurrence of search entity on locate, save the last dialog position, etc.).
* Find In Files dialog was improved (one result window, F8 for next, mixed case sensitive search mode, state is saved, etc.).
* Namespaces support was improved (it’s possible to put forms, etc. in a namespace).
* IntelliSense feature was strongly improved for typing speed and convenience for work.
* Improve tab navigation dialog, use ALT button for filtering [ReadOnly] windows and Del for closing windows.
* Use Project Kinds (Console application, GUI application and DLL) instead of UI Strategy and Target Type.
* Dump view improvements (Shift+F2).
* Sorting feature in Errors Window, Break points Window, etc.
* Optimal Includes Set was improved (output, local scopes, etc.).


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


* Marking a particular variable in the variable window.
The '''IncludedIn''' and '''Includes''' windows has been moved to preview pane of project window.
* View long lists improvement.
* Speed of restarting was improved.
* Memory break points and fact access (for some types).
* Scripts for break points.
* Multi-lines in tooltips.
* Multi-threaded application debugging was improved (thread names, break points handling).


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


==== New packages ====
=== Browse dialog ===


* Collection library
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'''
 
== PFC ==
 
=== New entities ===
 
* [[Collection library]]
** Algebraic: <vp>redBlackSet</vp>, <vp>leftistPriorityQueue</vp>
** Algebraic: <vp>redBlackSet</vp>, <vp>leftistPriorityQueue</vp>
** Modifiable: <vp>mapM_redBlack</vp>, <vp>priorityQueueM_leftist</vp>, <vp>queueM_fact</vp>, <vp>setM_redBlack</vp>
** Modifiable: <vp>mapM_redBlack</vp>, <vp>priorityQueueM_leftist</vp>, <vp>queueM_fact</vp>, <vp>setM_redBlack</vp>
Line 75: Line 130:
* <vp>winsock2_native</vp> native bindings to Windows Sockets 2
* <vp>winsock2_native</vp> native bindings to Windows Sockets 2


==== Extensions and improvements of existing packages ====
=== Extensions and improvements ===


* List package was improved for speed (predicates sort, removeDuplicate, drop, max/min etc.) and functionality (predicate isMemberEq (and similar predicates) that uses a deterministic predicate as test)
* <vp>list</vp> package:
* GUI: <vp>listControl</vp> with owner-drawing capabilities
** speed: <vp>sort</vp>, <vp>removeDuplicate</vp>, <vp>drop</vp>, <vp>min</vp>/<vp>max</vp>, etc.)
* Extend Windows API functionality (expand <vp>uxTheme_native</vp> with the rest of the functions and the constants from vsStyle.h, 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 moving listener/responder to <vp>splitTwoControl</vp>
* Add the fraction handling from <vp>format</vp> to <vp>formatTime</vp>
* Add the fraction handling from <vp>format</vp> to <vp>formatTime</vp>
* Improve speed for some packages (<vp>string</vp>, <vp>fileName</vp>, <vp>listViewControl</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
* <vp>string::rear/2-></vp> returns the rear part of a string
* Math package: predicates <vp>roundToInteger64/1-></vp> and <vp>roundToUnsigned64/1-></vp>
* '''Math''' package: predicates <vp>roundToInteger64/1-></vp> and <vp>roundToUnsigned64/1-></vp>
* Better handling of default button size
* Better handling of '''default button size'''
* <vp>msXLM_api</vp> update to version 6.0 of diverse COMponent classes
* <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
 
== Updates ==
 
=== Build 7301 ===
 
'''Visual Prolog 7.3, Build 7301''' fixes [http://kb.visual-prolog.com/fixes/fixes7300.htm#7301 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 [http://kb.visual-prolog.com/fixes/fixes7300.htm#7302 several minor bugs].
 
=== Build 7303 ===
 
'''Visual Prolog 7.3, Build 7303''' fixes [http://kb.visual-prolog.com/fixes/fixes7300.htm#7303 several minor bugs].
 
== See also ==
[http://kb.visual-prolog.com/fixes/fixes7300.htm Bugs Fixed in Visual Prolog 7.3]


=== Others ===
[[Visual Prolog 7.3 Upgrade Notes]]


* More efficient memory handling (using typed memory allocation for compound terms and internal facts chains)
[[Category:Release Notes|7.3 New Features]]
* A lot of optimizations for speed and size of generated code
* Some new Demo Examples had been added (Parser Generator, LZDecompression and TreeControlDemo (CE only)).
* VipBuilder: extra option to ignore all required statements.
* Help on built-in entities.
* Extend Win32 library (with more names from MS libraries).
* Provide more context to consult exceptions.
* Linker: speed was improved.
* Vault Integration was updated to version 4.1.4

Latest revision as of 11:57, 14 May 2018

Language

Generic Interfaces and Classes

See Generic Interfaces and Classes.

Conversion to Generic Type

Monitors

Monitors with guards

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: Inline structures and strings.
  • union: Functor-less unions.
  • byVal: 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 (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 or nondeterm)
  • unheckedConversion's that would be illegal on 64 bit platforms (e.g. pointer -> integer)

IDE

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

PFC

New entities

  • 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

  • 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 #requires 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

Updates

Build 7301

Visual Prolog 7.3, Build 7301 fixes several minor bugs.

The following new feature has been implemented:

  • Built-in predicate toEllipsis : (any* Terms) -> ...
  • 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.

See also

Bugs Fixed in Visual Prolog 7.3

Visual Prolog 7.3 Upgrade Notes