Visual Prolog 7.5 New Features

A major new feature of Visual Prolog 7.5 is the support for creating Web Services/Applications. See the Web Services tutorial for details.

Language

 * Improved procedure check for number ranges (e.g. [1..3])
 * if-then-else expression (in addition to the existing if-then-else statement)
 * The condition in an if-then-else now contains an implicit cut, and thus allows non-deterministic condition
 * Improved garbage collection: Typed allocation of objects reduces the possibility of false pointers
 * Language C/C++ virtual object call compatibility (language thiscall)
 * New attribute [inline(size)] for inlining byte sequences in structs
 * Additional string literals syntax
 * Operator in for member test and iteration
 * New hasDomain/2-> function, in addition to the existing hasDomain/1 predicate
 * New deterministic orelse operator
 * Warning for superfluous static initialization of an object fact if this fact is also initialized in all constructors (the corresponding warning is switched off by the default)
 * Warning for unused local domains, functors and constants

PFC

 * New packages scannerSupport and cursorScannerSupport</vp> for writing scanners in Visual Prolog
 * New package service</vp> for creating services in Visual Prolog
 * New package parser</vp> for LALR(1) parsing
 * stream::allowNullPointers</vp> property for robust writing of illformed data that contains null-pointers
 * readLineCRLF/0-></vp> predicate that copy <CR><LF> to resulting string.
 * New packages for standalone HTTP/HTTPS server (httpRequest</vp>, ...)
 * New package json</vp> for JSON representation, parsing and writing
 * New packages for JSON-RPC service support: standalone HTTP/HTTPS and/or ISAPI integration into Microsoft Internet Informantion Services, IIS (jsonRpc</vp>, jsonRpcService</vp>, ...)
 * New package watchDirectory</vp> (pfc\communications) for monitoring directory changes
 * New package sciLexerStatusBar</vp> for editor status line
 * New packages for XML parsing/writing according to XSD definition (xmlSupport</vp>, fromXmlDomSupport</vp> and toXmlDomSupport</vp>)
 * GDI+ support for multi image icons in the icon</vp> class (utilized by the ribbonControl</vp>).

VIP
Vip is a directory (Commercial Edition only) that provides access to certain internal tools and structures, here among:


 * The Visual Prolog parser
 * Project file api
 * New package for LALR(1) parser generator

IDE

 * MDI template: new status bar replaces old vpi toolbar
 * SDI template: uses ribbon and new status bar
 * "Find usages" tool, for finding usages og predicates/properties/facts in clauses
 * Copy a project in Welcome/Open Project window
 * Error message corrector for missing/invalid scope
 * Project file in XML (*.vipprj)
 * Project Tree: directories preview
 * Refactoring
 * move folder or package
 * Set namespaces on a complete package (recursively)
 * The possibility for adding a resorce entity (dlg, or class, etc.) without creating a package

Debugger

 * Collections (map, set) displayed more user friendly in variables/etc window

Others

 * Tool for generating XML parser/writer from XSD files
 * PIE: Support for integer64

Build 7501
Build 7501 mainly contains bug fixes as listed below. But the commercial edition also contains an LALR Parser Generator.

Compiler

 * Problem with Must-Unify
 * Problem with predicate constants
 * Error using properties from a generic interface
 * Numeric conversion error in machine instructions generation
 * Error on <vp>retractAll</vp> because of invalid code generation (registers management)
 * Must-unify leads to access violation when raising proper runtime error (type library passed to runtime function does not correspond to a term)
 * Dump in static facts initialization
 * Wrong unused domain warning
 * Problems with option: /READOnlyterm
 * Incorrect list element allocation if it has type like <vp>A*</vp>
 * Exception in 64 bit program (large local static size problem)
 * Invalid debug information for type libraries
 * Recycling bug for open-statements which can be resolved both to a class declaration and interface definition
 * Access violation in example (incorrect type library for allocation)
 * Illegal error for free type parameter in type expression

PFC

 * COM: Add <vp>comDispInterface::getIndexedProperty</vp> (COM exception: Member not found)

IDE

 * IDE API <vp>setCurrentDirectory</vp> fails
 * Exception 'Single fact 'oleInPlaceObject_fact' from internal database 'activeXcontrol::activeXcontrol@objectDB' has no value'
 * Wrong F12 on _builtIn::compare
 * Exception 'No active window' in <vp>menuhandle::updateRefactorItems/1</vp>
 * Project Settings\Version: Change description does not trigger new resource compilation
 * Exception 'emptyString' during browse search for xxx::
 * Changing an IDE variable without opened project gives an exception
 * Too long effect of "Apply this action to subsequent files" flag
 * Tooltip should use proper brackets for generic argument: {@T} instead of (@T)
 * Ctrl+S does not save edited not-project file
 * Menu preview improvements
 * IDE doesn't remove resources from project
 * IDE doesn't create .bro file with new console without manifest
 * timerControl exception in IDE

Other

 * xmlSerializerGenerator: generation of types with incorrect dashes
 * ChainDB 64bit: Memory overriding (not-aligned arrays of internal structures that contain pointers)
 * Solution manager: clicking vipsln files opens the solution manager, but the solution is not loaded

Build 7502
Build 7502 contains bug fixes as listed below.

Compiler

 * Lexical problem concering comments
 * Compare char gives wrong result
 * Wrong result of sizeOf/1-> predicate for some integral types like core::integer8
 * Missing check for ambiguous delegation

PFC

 * Wrong handling of NULL fields in 64 bit ODBC (gives "string right truncation" error).

IDE

 * PIE exception in IDE when debugging 64 bit programs