Visual Prolog Changelog

What's new in Visual Prolog 7.5 Build 7500

Sep 5, 2014
  • 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 for writing scanners in Visual Prolog
  • New package service for creating services in Visual Prolog
  • New package parser for LALR(1) parsing
  • stream::allowNullPointers property for robust writing of illformed data that contains null-pointers
  • readLineCRLF/0-> predicate that copy to resulting string.
  • New packages for standalone HTTP/HTTPS server (httpRequest, ...)
  • New package json 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, jsonRpcService, ...)
  • New package watchDirectory (pfc\communications) for monitoring directory changes
  • New package sciLexerStatusBarfor editor status line
  • New packages for XML parsing/writing according to XSD definition (xmlSupport, fromXmlDomSupport and toXmlDomSupport)
  • GDI+ support for multi image icons in the icon class (utilized by the ribbonControl).
  • 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 (Complete LALR(1) parser generartor will follow on WEB)
  • 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

New in Visual Prolog 7.4 Build 7402 (Nov 6, 2013)

  • 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 if-then-else 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 noDefaultConstructor attribute.
  • Compiler. Incorrect warning c231 (scope is opened but not used) in some cases.
  • Compiler. Code generation bug for nested finally statements with cuts in the try 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 0xFFFF (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 : guard).
  • PFC: Some problems with handling of enter/leave mouse event.
  • VPI: Incorrect behavior of predicate getText/1->.
  • Vip Linker: It does not accept utf-8 .def files (see Dll - error in file MyDll.def).

New in Visual Prolog 7.3 Build 7302 (Jun 22, 2010)

  • Compiler:
  • Code generation bug leads to wrong calculations for operations like div/2
  • Debugger:
  • If sources had been changed then after the first build break points and stepping can become incorrect
  • Integrated Development Environment (IDE)
  • It is impossible to switch to form properties from dropdown selector
  • Exception "Cannot create or open the specified file" when calling an external tool
  • Exception "There is no active window in the system" in fedit.pro
  • It's impossible to close IDE when Auto Save Editor on close option is turned on and edited file is deleted outside the IDE
  • VPI strategy *.win files are opened wrongly
  • *.win file becomes modified right after opening in the Box Editor
  • 256x256 icons are not supported
  • Library (PFC):
  • Problem in the mouse move handling can lead to errors like "Native call failed" exception in treeview_api
  • Predicate multiMedia_native::playSound/3-> is declared with incorrect link name
  • Other
  • Setup spoils system registry suc

New in Visual Prolog 7.3 Build 7301 (May 28, 2010)

  • Compiler:
  • Compiler wrongly handles must-unify operator as a "match" which leads to unexpected errors at compilation time
  • It is possible to define link name for a predicate declared with apicall calling convention, but the usage of decaratedA and decoratedW is not allowed for such predicate
  • Bug in external names mangling for predicates which have arguments - structures with inlined fields.
  • There is an extra error message if retired entity uses another retired or deprecated entity
  • Compiler wrongly skips codes generation for a call to the built-in predicate succeed/0 which can lead to incorrect break point location and broken variables in the Variable Window under the Debugger
  • Compiler wrongly generates runtime structures for the representation of retired domains (which are obviously not needed)
  • Debugger:
  • Debugger sometimes does not expand the nondeterm facts
  • Integrated Development Environment (IDE):
  • An opened IDE throws the exception during shutdown process
  • IDE: Exception (API function SetCurrentDirectory failed) on attempt to open a project that have been moved to another disk
  • 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.

New in Visual Prolog 7.2 Build 7202 (Mar 17, 2009)

  • Add moving listener/responder to splitTwoControl

New in Visual Prolog 7.1.7103 (Dec 17, 2007)

  • Optimization Bug Can Falsely Remove a Cut ( ID 40938)
  • Dump During Type Analysis (ID: 40979)
  • Variables Can Be Overwritten and an Internal Error during Compilation Might Be Raised

New in Visual Prolog 7.1 Build 7101 (Nov 3, 2007)

  • New examples, bug fixes

New in Visual Prolog 7.1 build 7100 (Jul 25, 2007)

  • Visual Prolog 7.1 introduces several language extensions including properties, try-catch-finally syntax, elseif in the if-then-else statement.
  • The new release improves Visual Prolog stability and includes a lot of bug fixes.
  • By default, Visual Prolog 7.1 will not replace a previous version of Visual Prolog while installation. The new version will be installed by default to C:Program FilesVisual Prolog 7.1.
  • You can remove the previous version at any time you want or continue working with both.
  • Visual Prolog 7.1 projects are backward-compatible with Visual Prolog 7.0 projects.
  • If you are going to use Visual Prolog 7.1 simultaneously with a previous version of Visual Prolog at the same computer, it is recommended to switch the IDE setting "Open Project at Startup" in the previous version OFF, to prevent opening Visual Prolog 7.1 projects in the earlier IDE.
  • Note that beginning with Visual Prolog 7.1, projects are not opened at startup, and, hence, the setting "Open Project at Startup" is not necessary any more.
  • If you are going to use different versions of Visual Prolog installed at one computer, avoid opening projects by double-clicking on prj6 files.
  • Some changes might require automatic updates in Visual Prolog 7.0 projects.
  • Therefore, it is recommended to make the project file (PRJ6) writable before the first build.
  • After you open your project in Visual prolog 7.1 IDE, the IDE will fulfill necessary updates.
  • After this, it is recommended to rebuild the project with the help of the Build | Rebuild All command and answer "Yes to All" to the message "The new module is required to be added into the project".
  • The following new keywords have been introduced:
  • properties, try, catch, finally, elseif.
  • That means that they can no longer be used as identifiers.
  • Beginning with a minor release of Visual Prolog 7.0 Build 7003, the Commercial Edition of Visual Prolog includes an updated version of the Help generation Tool (PRODOC) that requires Microsoft .NET Framework 2.0 to be installed at a computer.
  • The bugs listed below have been fixed in Visual Prolog 7.1.
  • Compiler
  • Incorrect "Invalid order of sections" message for properties-from and predicates-from Sections (ID: 28630, Type: BUG, Fixed in: 7.1;7100)
  • Problems with convert (ID: 37356, Type: BUG, Fixed in: 7.1;7100)
  • An Access Violation Exception on Access to an Erroneous Fact (ID: 38669, Type: BUG, Fixed in: 7.1;7100)
  • Incorrect Behavior of the finally/2 Predicate in some Cases (ID: 38756, Type: BUG, Fixed in: 7.1;7100)
  • Sometimes the control is passed to unexpected place after finally/2 if the first argument contains cut (ID: 38794, Type: BUG, Fixed in: 7.1;7100)
  • Compiler: Stack Overflow Exception for the Directive #bininclude (ID: 39174, Type: BUG, Fixed in: 7.1;7100)
  • List Comprehension: Code Generation Error (ID: 39188, Type: BUG, Fixed in: 7.1;7100)
  • Incorrect Execution of a Program with OR Structures (ID: 39195, Type: BUG, Fixed in: 7.1;7100)
  • Dump During Compilation for a Wrong Number of Flow Patterns (ID: 39305, Type: BUG, Fixed in: 7.1;7100)
  • Unexpected Compiler Error c229 (ID: 39487, Type: BUG, Fixed in: 7.1;7100)
  • Wrong Evaluation Sequence when Fact Variables Are Used as Arguments (ID: 39518, Type: BUG, Fixed in: 7.1;7100)
  • Internal Compiler Error during Browse Information Generation (ID: 39619, Type: BUG, Fixed in: 7.1;7100)
  • toString/1 Predicate Outputs an Extra Digit for Reals (ID: 38964, Type: BUG, Fixed in: 7.1;7100)
  • Dump in vip7compiler when Compiling a File with Errors (ID: 39658, Type: BUG, Fixed in: 7.1;7100)
  • Bug in the string::split/2 Predicate (ID: 39071, Type: BUG, Fixed in: 7.1;7100)
  • Access Violation Exception when Tabbing while Compiling a File (ID: 39144, Type: BUG, Fixed in: 7.1;7100)
  • Documentation
  • Incorrect link to the Source Files in the "Fundamental Visual Prolog - the Data Layer" Help Tutorial (ID: 38580, Type: BUG)
  • Integrated Development Environment (IDE)
  • A Tabbing Problem in in a Dialog with Radio Buttons in a Container (ID: 36958, Type: BUG, Fixed in: 7.1;7100)
  • Tabulation Does not Work Properly in n the Module Dialog for the ListViewControl (ID: 37038, Type: BUG, Fixed in: 7.1;7100)
  • "Invalid repository path" Message in the Checkout Tool (ID: 37262, Type: BUG, Fixed in: 7.1;7100)
  • IDE-Vault integration: after Checking a.PRJ file out, a Build Process Stops (ID: 38098, Type: BUG, Fixed in: 7.1;7100)
  • Exception: pict_Load: Cannot open file (ID: 38341, Type: BUG, Fixed in: 7.1;7100)
  • Contents of an Open Menu Editor Is Not Saved on Build (ID: 38811, Type: BUG, Fixed in: 7.1;7100)
  • "Rebuild All" Reports Errors that It Has Eliminated (ID: 38812, Type: BUG, Fixed in: 7.1;7100)
  • The "Goto declaration" Command Does Not Work for properties (ID: 39109, Type: BUG, Fixed in: 7.1;7100)
  • "New" in new Package Works Incorrectly if the Project file is Readonly (ID: 39132, Type: BUG, Fixed in: 7.1;7100)
  • The IDE Generates a Link Error, when .lib File is Missed (ID: 39312, Type: BUG, Fixed in: 7.1;7100)
  • IDE: dump on deleting a subtree in the project tree (ID: 39404, Type: BUG, Fixed in: 7.1;7100)
  • Deleted Files Remain in the Project Tree (ID: 39416, Type: BUG, Fixed in: 7.1;7100)
  • Alt-F5 Hot Keys Sometimes Execute a Program in a Wrong Directory (ID: 39521, Type: BUG, Fixed in: 7.1;7100)
  • Control's Anchors Cannot Be Changed from the Designer's Context Menu (ID: 39589, Type: BUG, Fixed in: 7.1;7100)
  • The Editor Does not Color Unclosed Character Constants Red (ID: 33157, Type: BUG, Fixed in: 7.1;7100)
  • "Change All" in the Editor Sometimes Works Incorrectly for a Selected Text (ID: 39568, Type: BUG, Fixed in: 7.1;7100)
  • Library (PFC)
  • groupbox:setText Does Not Set the Text until Invalidated (ID: 36136, Type: BUG)
  • Regular Expression Library Sometimes Gives an Occasional Error (ID: 37721, Type: BUG, Fixed in: 7.1;7100)
  • Integral Overflow Exception in time imeformatter.pro (ID: 39143, Type: BUG, Fixed in: 7.1;7100)
  • Integral Overflow Exception in pfc ime imeFormatter.pro (ID: 39595, Type: BUG, Fixed in: 7.1;7100)
  • Runtime Errors
  • Predicate math::random is not Thread-Safe (ID: 38834, Type: BUG, Fixed in: 7.1;7100)
  • Sometimes "Copy to Clipboard" in Dump dialog work wrongly (ID: 39325, Type: BUG, Fixed in: 7.1;7100)
  • Exception in the Garbage Collector under Windows Vista (ID: 39345, Type: BUG, Fixed in: 7.1;7100)
  • Erroneous Fact Gives Access Violation Exception when Saving Fact Database (ID: 39409, Type: BUG, Fixed in: 7.1;7100)
  • An Application that Uses a Large External Database Can Crash Sometimes (ID: 39536, Type: BUG, Fixed in: 7.1;7100)

New in Visual Prolog 7 (Aug 4, 2006)

  • New IDE GUI Designer
  • In Visual Prolog 6.3 the Code Expert has been seriously improved when it comes to generating code for handling events from custom controls.
  • Using Property Event Inspector on all controls including custom controls it is now possible to edit all control properties in the IDE Designer (IDE Dialog Editor). The information about existing control properties is taken from the browse information.
  • Additionally, a single window to show/edit control properties/flags is supported, so it is not necessary to open control attribute dialogs.
  • Dialog Validation
  • Dialog validation has been improved with validation for container controls and validation for integer and real edit controls.
  • ActiveX Event Sinks
  • Some imported ActiveX controls use so-called event sink interfaces in order to notify the client of events in the control. Such an interface is implemented by the client and passed to the Active/X control, which will then make "callbacks" using this interface to signal events. Visual Prolog 6.3 generates wrapper code for such event sink interfaces.
  • Image Control
  • The new "imageControl" paints graphic files in many formats using GDI .
  • GDI relies on so-called codecs for handling graphical formats. Microsoft Windows is shipped with codecs for a number of formats (including for example JPEG and PNG). When codecs are installed on a machine, the "imageControl" will automatically support the corresponding formats (without recompilation).
  • Timer Control
  • Timer control provides a natural way for handling timed events:
  • Tick duration property
  • Start/Stop methods
  • Tick listener event
  • Object -Oriented Print Support
  • Support for printing contents using PFC/GUI only. Implementation is based on VPI printing.
  • Delayed Callbacks
  • To better support delayed events (typically selection-changed events), a timer-based callback mechanism has been added in Window interface.
  • IDE Support for Controls as Separate Resource Files
  • Container controls are now designed and maintained in the IDE like any other dialog or form.
  • Anchor-based Layout Management
  • It is now possible to define anchored sides for all controls. Designer also supports automatic update of the layout of a dialog/form, so that users can test their layout. A visual indication of anchors is also presented.
  • Improved Garbage Collector
  • Beginning with the Build 6301 the Garbage Collector works faster, especially with the GDI .
  • Visual Prolog 7.0
  • Prolog Development Center offers you an oppotunity to try Visual Prolog 7.0 Alpha version that is supplied together with the Commercial and Personal Editions of Visual Prolog 6.3.