Difference between revisions of "Visual Prolog 7.3 New Features"

From wiki.visual-prolog.com

(Initial)
 
(→‎Language: update)
Line 3: Line 3:
=== Language ===
=== Language ===


* Generic interfaces and classes
* {{lang|Generic Interfaces and Classes|Generic Interfaces and Classes}}
* Monitors with guards
** Conversion to generic type
* Native interfaces support:
* {{lang|Monitors|Monitors}} with {{lang2|Monitors|Guards|guards}}
** Inline structures and strings. Attributes inline/0 and inline/1
* New operator == (must-unify)
** Functor-less unions. Attribute union/0
* Universal term type <vp>any</vp> and the predicate <vp>toAny/1-></vp>
** Passing parameters by value. Attribute byVal/0
* The precedence of unary minus is changed (so that power operator has higher precedence)
* Must-unify operator
* New built-in predicate <vp>fromEllipsis : (...) -> any* Terms</vp>
* Universal type (an extra built-in type any and predicate toAny/1->)
* Runtime distinction between privately and publicly supported interfaces is removed
* Conversion on polymorphic values possibility
* Preparations for supporting 64bit systems: built-in types <vp>integerNative</vp> and <vp>unsignedNative</vp>
* The precedence of unary minus was 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).
* 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.
* External resolution is default for predicates declared with <vp>apicall</vp> calling convention.
** They cannot have clauses
** They cannot have clauses
** explicit externally resolution is only legal when a DLL is stated
** explicit externally resolution is only legal when a DLL is stated
* New built-in predicate <vp>fromEllipsis : (...) -> any* Terms</vp>
 
* New warnings for:
==== New warnings ====
** Local object predicates which do not use THIS (and therefore can be declared as class predicates).
 
** Unused local constants.
* Local object predicates which do not use <vp>This</vp> (and therefore can be declared as class predicates)
** Condition of foreach statement which has no backtrack point (i.e. mode is not multi or nondeterm).
* Unused local constants
* Other new attributes (retired/1, noDefaultConstructor/1, used/0).
* Condition of foreach statement which has no backtrack point (i.e. mode is not <vp>multi<vp/> or <vp>nondeterm<vp/>)
* Runtime distinction between privately and publicly supported interfaces was removed.
* <vp>unheckedConversion</vp>'s that would be illegal on 64 bit platforms (e.g. <vp>pointer</vp> -> <vp>integer</vp>)
* Some preparations for supporting 64bit systems: built-in types integerNative and unsignedNative.
* Extended versions of built-in predicates toTerm/2-> and tryToTerm/2-> (receives type as the first parameter).


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

Revision as of 14:58, 23 March 2010

Template:Preliminary Documentation

Language

  • Generic Interfaces and Classes
    • Conversion to generic type
  • Monitors with guards
  • New operator == (must-unify)
  • Universal term type any and the predicate toAny/1->
  • The precedence of unary minus is changed (so that power operator has higher precedence)
  • New built-in predicate fromEllipsis : (...) -> any* Terms
  • Runtime distinction between privately and publicly supported interfaces is removed
  • Preparations for supporting 64bit systems: built-in types integerNative and unsignedNative
  • Extended versions of built-in predicates toTerm/2-> and tryToTerm/2-> (type as the first parameter).
  • Native interfaces support (attributes):
    • inline: Inline structures and strings.
    • union: Functor-less unions.
    • byVal: Passing parameters by value.
  • Other new attributes retired, noDefaultConstructorused
  • 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

New 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<vp/> or <vp>nondeterm<vp/>)
    * <vp>unheckedConversion
    's that would be illegal on 64 bit platforms (e.g. pointer -> integer)

IDE

  • Project tree was redesigned.
  • 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

  • Marking a particular variable in the variable 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

New packages

  • 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 of existing packages

  • 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)
  • GUI: listControl with owner-drawing capabilities
  • Extend Windows API functionality (expand uxTheme_native 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
  • Improve speed for some packages (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 diverse COMponent classes

Others

  • More efficient memory handling (using typed memory allocation for compound terms and internal facts chains)
  • 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