Visual Prolog 7.4 New Features

64 bit programs
The main new feature in Visual Prolog 7.4 is the ability to generate 64 bit programs (Commercial Edition only), making it possible to write programs that exploit more of the computers resources.

Notice to ensure source code compatability between 32 and 64 bit programs a number of types have been changed and it is necessary to update the programs, see Visual Prolog 7.4 Upgrade Notes.

See also 64 bit Windows

Program Point
Support for exceptions handling improvement (programPoint type and attribute, implicit programPoint argument). See also programPoint.

Syntax & Warnings

 * Better handling of comma before then, elseif, else, end if, do and end foreach
 * Error c550 for inlining a field from a null pointer
 * Warning c647 if bound/1 is applied to a variable which is always free
 * Warning if scope is only opened but is not actually used (unused open for class core is ignored). Removing such excessive open-directives makes the Optimal Includes more effective. This warning is switched off by the default (option /w:231 turns it on).

PFC
PFC have been updated to be 64 bit compatible. A few packages have not been updated, but have instead been deprecated and replaced by new packages.


 * vpiEditor is deprecated (replaced by sciLexer editor)
 * regExp is deprecated (replaced by regEx)

PFC/GUI

 * sciLexer New editor control based on the Scintilla editor with lexers (including Visual Prolog lexer).
 * webBrowser New control control comprehensive wrapping of the Internet Explorer WebBrowserControl
 * Improved clipboard handling (with HTML support)
 * ribbonControl and command system and controlSerialization; with a run-time visual designer that simplifies the process of making ribbons
 * toolboxControl New control
 * headerControl</vp> New control
 * rebar</vp> + statusBar</vp> New packages
 * shellNotificationIcon</vp> for handing notifications in the shells notification area + Demo
 * toolTip</vp> New package and toolTip functionality on standard controls + Demo
 * splitControl</vp> New control for multi-split management; with a run-time visual designer that simplifies the process of making splits
 * splitterControl</vp> New control for the split in windows
 * dragNdrop</vp> New class for (in-program) drag and drop functionality + Demo
 * Object oriented GDI support
 * Object oriented GDI+ support for
 * bitmap</vp>
 * brush</vp>
 * font</vp>
 * palette</vp>
 * pen</vp>
 * deviceContext</vp>
 * icon</vp>
 * gui_native::createDialogIndirectParam</vp> Update for font handling
 * <vp>window::listenUntilDestroy</vp> New predicate for listening to an event, but detach the listening when the window is destroyed
 * <vp>messageLoop</vp> for SDI applications

PFC (non-GUI)

 * <vp>regEx</vp> package based on [www.boost.org/libs/regex boost regular expression library]
 * <vp>mapM_hash</vp> & <vp>setM_hash</vp> New classes for hash table implementations of maps and sets
 * <vp>arrayM</vp> uses pointer to memory instead of binary: makes it possible to interpret non-binaries as arrays and is more efficient
 * <vp>arrayM_inline</vp> New class for interpretation of C/C++ struct arrays
 * <vp>arrayM_boolean</vp> New class for compact boolean arrays (1 bit per boolean).
 * <vp>array2M</vp> New class for 2 dimensional arrays
 * <vp>socket</vp> New class for object oriented WinSock2 support
 * <vp>event0</vp> - <vp>event7</vp> New classes for general/generic event handling (notify+listener)
 * <vp>iStream_stream</vp> class for mapping a Visual Prolog stream as an IStream com object (CE-only)
 * improved ISAPI support
 * <vp>json</vp> (pfc/web/json) and <vp>jsonRpc</vp> New packages for JSON and JSON RPC 2.0 support (CE-only)
 * memory allocate functions with argument for atomic/non-atomic
 * ODBC auto parameter binding get the size from the database by means of SQLDescribeParam
 * <vp>shell_api::sHCreateStreamOnFileEx</vp> new predicate for creating an IStream com object from a file
 * <vp>xhtmlWriter</vp> class for writing xhtml/xhtml5 using an <vp>xmlWriter</vp>
 * <vp>xmlReader</vp> & <vp>xmlWriter</vp> based on the xmlLite API (CE-only) + Demo
 * <vp>internetExplorer</vp> class for automating an out-of-process Internet Explorer

IDE

 * New simplified settings dialog
 * Add "No To All" button to the dialog for removing file from a project
 * Create empty clause if there is compiler error for absent clause for a predicate
 * Global unreachability support
 * History of Run Arguments
 * Improved Browse View
 * Improved the manifest handling
 * Load browse info in a separate thread (performance optimization)
 * SDI applications support
 * Tools entries in project-tree popup menu

Debugger

 * Soft/hard breakpoints
 * Add current class facts into the variable window
 * Show class facts in the Variable Window for a class predicate
 * Give names to objects
 * Show <vp>gmtTimeValue</vp> and <vp>localTimeValue</vp> as dates and times.
 * Show the error description for <vp>hResult</vp> values.
 * Watch Window improvement
 * Copying the entire debug tree to the clipboard
 * Improve memory view for 64bit and break points handling

Others

 * win32.lib + win32.x64.lib updated to Windows Software Development Kit (SDK) for Windows 8
 * PFC, VPI, IDE: Help button in the title bar
 * SolutionManager. A utility for better handling of a collection of projects
 * VipBuilder: Add /platform option for target machine
 * VPI: Support DDE in SDI application

Build 7403

 * 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

Build 7402
Important bug fixes:


 * Compiler. Incorrect handling of some special floating-point constants leads to unexpected compile time errors (see Real value 1.#INF is out of the range).
 * Compiler. Missing warning for unreachable codes (see Unused Variable).
 * Compiler. Ambiguity in webBrowserControl.
 * Compiler. Codes generation bug for string comparisson (it can lead to access violation exception at runtime in some cases).
 * Compiler. Nested <vp>if</vp>-<vp>then</vp>-<vp>else</vp> expressions can raise unexpected error messages related to the wrong flow patterns.
 * Compiler. Unexpected error message for supported interface and inherited class conflict for a generic scope.
 * Compiler. No error if constructor is absent for an object class with <vp>noDefaultConstructor</vp> attribute.
 * Compiler. Incorrect warning c231 (scope is opened but not used) in some cases.
 * Compiler. Code generation bug for nested <vp>finally</vp> statements with cuts in the <vp>try</vp> part (this could could lead to exceptions at runtime in some cases).
 * Compiler. Code generation bug for read-only property implemented by a clause with several heads.
 * Compiler. Anonymous predicates in both xxx as function and xxx as predicate give declaration conflict.
 * Compiler. Incorrect object file if number of fixups exceeds the limit of <vp>0xFFFF</vp> (this could lead to the incorrect state of some statically initialized data, like class facts, etc.).
 * Compiler. Several bugs in 64bit codes generation.
 * Runtime: Bug in symbol comparison.
 * IDE: Browse search shows the same predicate many times.
 * Debugger: Several bugs related to the Variables view.
 * Debugger: Some problems in single step in if-then-else expression.
 * PFC: Bug in arrayM_boolean.
 * PFC: Some keywords coloring (see Cosmetic detail : <vp>guard</vp>).
 * PFC: Some problems with handling of enter/leave mouse event.
 * VPI: Incorrect behavior of predicate <vp>getText/1-></vp>.
 * Vip Linker: It does not accept utf-8 .def files (see Dll - error in file MyDll.def).

Build 7401
The following new feature has been implemented:


 * if-the-else expressions
 * Condition in if-statement/expression can be <vp>nondeterm</vp>/<vp>multi</vp>
 * <vp>thiscall</vp> calling convention

Important bug fixes:


 * ChainDB, 64bit: Problems when storing terms in a chain if "in_memory" is used See External Databases in V7.4 in 64bits
 * PFC: Problem with console::setLocation in vip 7.4
 * VPI: Incorrect behavior of getText/1->
 * Header prints in chinese!?!

+ Some minor bug fixes