Release Notes - Curl CDE 8.0.1001 - 8.0.14001
This is the release notes for the Curl Development Tools for Eclipse (CDE) and Curl IDE version 8.0.1001 - 8.0.14001
Curl IDE release notes are available.
34129 If you start Coverage Viewer or HTTP Monitor before starting CDE, you cannot start CDE even if close the tools.
Workaround: Shutdown Curl process via Curl Control Panel. Then you can start CDE.
29084 If a Curl source file define a Byte Order Mark for a UTF-8 encoding then CDE will use UTF-8 to decode the contents, regardless of the "curl-file-attributes" value defined in the source.
29115 The Run | Toggle Method Breakpoint menu pick is not implemented.
31979 In the Classic IDE, if a runtime exception ocurred inside code for which there was no source information, the stack would be searched for the first frame where there was such information and that frame would be selected to show the error. In CDE2, the first frame in the stack is always selected whether or not it contains source information.
32098 If you are debugging a project in the CDE and attempt to switch workspaces or restart Eclipse, the classic IDE will startup when Eclipse restarts.
Workaround: You can close the classic IDE and continue to use Eclipse.
32720 There are some compatibilities issues with the SVN plug-in with the default SVN settings. The command "Synchronize with Repository" will fail when invoke from a package node in the project explorer. Workaround: open the SVN preference page, select the "View Settings" tab, and uncheck "Allow models (e.g. Java) to participate in synchronizations".
32906 Any Curl applets being debugged can be left active (not terminated) when you shutdown Eclipse. You can terminate these applets manually by quitting the applet or terminating them from the Curl Control Panel.
Release Notes - Curl IDE 8.0.1001 - 8.0.1014
Known Issues - Curl IDE 8.0.1001 - 8.0.1014Contents
- Compiler
- Core Library
- GUI and Graphics
- IDE, VLE and Documentation
- File Manipulation, I/O, OCC and Persistent Data
- OS, Browser and Server Issues
- API/Language Issues
Compiler
Compiler sometimes generates bad code under rare conditions
When calling continue with a specified tag in multiple loops, variable defined outside the loops may not be updated(when it should be) under rare conditions.
Here is a piece of sample code:
{define-proc {bar}:void
|| Block B0
let x:int = 0, i:int = 0
{while tag=out, i < 2 do || B1,B2
|| Block B3
let j:int = 0
{for m:int = 0 to 3 do
{while j < 2 do || B5, B5
|| Block B6
|| {do x} || uncomment to make bug go away
{if i == 1 and j == 1 then || B7
|| Block B8
{output " continue"}
{continue tag = out}
}
|| Block B9
{inc x}
{dump x, i, j}
{inc j}
}
}
next || B10
|| Block B11
{inc i}
}
|| Block B12
{dump x} || B12
} || B13
{bar}
At "Block B12", "3" should be dumped out, but "2" is printed instead.
Workaround:
before calling {continue tag=out}
, call {do x}
(where x
is the variable that is in trouble, this non-op code will do no harm to your application).
Core Library
Calling encryption API might cause error dialog showing: "CryptAcquireContext(encryption) Failed: Access denied. (5)"
If "Special permissions" have not been granted for the Everyone group in the following folders, when calling the encryption API (e.g. the constructor of SessionKey), the "CryptAcquireContext(encryption) Failed: Access denied. (5)" error dialog may appear.
C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys
Workaround: Execute the following command to grant "Special permissions" to the Everyone group in the above folder. (Execute with administrative privileges if necessary.)
icacls "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /inheritance:e /grant Everyone:(RD,RA,REA,WD,AD,WA,WEA,RC)
round-to-even? option is not implemented in Decimal.round-to-scale
The Decimal.round-to-scale method has a round-to-even? keyword argument but the value of this argument is ignored; the computation always proceeds as if this argument had the default value of true. For example, the Curl expression {value def v = 1.545i {v.round-to-scale 2, round-to-even? = false} } will return 1.54, even though it should return 1.55.
GUI and Graphics
Some characters cannot be entered correctly with the IME pad on Windows 10.
If you select a surrogate pair character such as a four-byte Unicode (SMP) from the IME pad's "character list" - Unicode(SMP), it will not be entered correctly on Windows 10 and will be displayed as "??".
This was caused by a bug in the IME updated with Windows 10 May 2020 Update (Windows 10 version 2004).
Workaround: In Windows 10 IME settings, enable "Use previous version of Microsoft IME", or upgrade your Windows 10 to Windows 11. *
* This issue won't happen on Windows 11.
On Windows 11 22H2, the print-grpahic (when calling with show-printer-dialog? = true), Printer.open and Printer.get-printers may not work as expected.
On Windows 11 22H2, when you call print-grpahic ( show-printer-dialog? = true) or Printer.open with parameters such as orientation, the corresponding parameter specification is not reflected on the print dialog.
- Some printers in the list of printer names obtained by calling Printer.get-printers may not appear in the printer drop-down list displayed in the print dialog.
- The printer name specified in "printer-name" is not reflected on the print dialog, the default printer is selected instead of the specified one.
- The print orientation specified in "orientation" is not reflected, and the printer's default setting is used
- Paper size specified in "page-description" is not reflected
- Specifying the last page to be printed in "to-page" won't work. For example, if you specify a range of 2-3 pages(with param from-page=2, to-page=3), it will be displayed as "2-"
- Legacy print dialog may be shown when printing with dialog, once after which the new style dialog will always be shown.
The above problem does not occur if show-printer-dialog? = false is specified when calling print-graphic.
However, only 1 copy is always printed even if the number of copies specified in "copies" is two or more, no mater with or without showing the print dialog.
Workaround: You need to resotre using the legacy printer dialog to workaround the above issues. Please check the official information page below for known OS issues related to printing.
About restoring the old print dialog on Windows 11 22H2, please try running the following command with Administrator privilege to see if the situation will be improved.
- reg add "HKCU\Software\Microsoft\Print\UnifiedPrintDialog" /v "PreferLegacyPrintDialog" /d 1 /t REG_DWORD /f
Solution: This issue can be resolved by applying the latest Windows update.
* This issue has been confirmed to not occur on Windows 11 22H2 with "November 14, 2023 - KB5032189 (OS builds 19044.3693 and 19045.3693)" applied.
While editing a cell in RecordGrid, changes in the cell will be dropped when moving the focus to another row with up/down arrow keys.
When editing a cell in the RecordGrid, if the focus is moved to another row using the up/down cursor keys, the changed cell value will be dropped.
This issue does not occur when the Enter key is pressed before moving up/down arrow keys.
Workaround: This issue could be avoided by specifying a custom Cell class to the related column, which inherits from StandardStringCell and override the on-key-press method to commit the value in the cell when the up/down arrow keys are pressed. Please refer to the sample code below.
{define-class public open MyStandardStringCell {inherits StandardStringCell} {method public {on-key-press ev:KeyPress }:void || make sure only Key UP or key DOWN is pressed {if (ev.value == KeyPressValue.up or ev.value == KeyPressValue.down) and ev.unmodified? then {super.commit-pending-value} } {super.on-key-press ev} } }
It may not display properly in a multi-display environment with mixed displays' scale settings
Description: For example, if you use a sub-display with a different scale than the main display, layout of your application may show in a way you wouldn't expect
Workaround: If you have multiple displays, use the same scale settings or use the Curl application within the main display.
PDF file created by print-graphic-pdf sometimes corrupts
Description: Using print-graphic-pdf procedure to print a PDF file may produce a corrupted file if IPAmjMincho font is used.
Workaround: Instead of using pring-grpahic-pdf procedure, use a virtual PDF printer (such as "Microsoft Print to PDF") to print CurClosing Edge window sometimes crashes Curl RTE when running curl legacy l applet screens.
DrawableGraphic.occlusion-performance-mode limitation
There are three possible settings for DrawableGraphic.occlusion-performance-mode, "high-performance", "accurate-occlusion", and "best-effort". At the present time, "best-effort" is the same as "high-performance" mode. If your applet requires DrawableGraphic objects to overlap with other kinds of graphical objects, specify "accurate-occlusion" mode explicitly.
BasicConnectedRecordSet converts empty strings to null value
In a ConnectedRecordSet, empty strings in nullable columns get converted to nulls when the recordset is committed. This is an unusual case, and can be avoided by using stricter table definitions (specifically, non null constraints).
Letters in italics sometimes clipped
Any character has one bounding box that is appropriate for text layout and possibly a different bounding box that is appropriate for drawing. The Curl RTE uses the layout box in both cases. As a result, the first or last character in a line can sometimes be clipped slightly. The same effect is at times seen in most web browsers.
Directory names for Find in Directory are Case Sensitive
If you use the IDE's Find dialog to search in a directory, you can specify a regular expression for the file names to look for. On windows, this regular expression matching should be case insensitive, for example, the pattern "*.h" should match the file "WINERROR.H".
TextShape with Negative Scale Rendered Incorrectly
If you use a negative scale amount on a TextShape, the text should be rendered in a mirror image. This does not work correctly on all renderers. There is currently no workaround for this problem.
Transparent backgrounds and pointer event propagation
If a background is set on an object, it is assumed to be opaque. This means that even though you may see another object behind an object with a transparent background, pointer events are blocked by the object in front. The workaround is to unset the background of the object in front instead of setting it to "transparent".
QuickTest Playback of right-click Menus not Implemented
If you record a right-click menu action using Mercury QuickTest, it will not play back properly. In most cases the same action will be available on the main menu and/or via a keyboard shortcut. Recording one of these alternatives can be used as a workaround.
Quick Test Professional could no longer record actions in Curl applets
From Windows 8, Curl applets can not be recorded by QTP . If you want to record actions on Curl applets, please use Windows 7 and QTP version 10.00
In QTP, GroupBox label Used to Describe Control
The QTP "test-name" property is not always the same as the test-name property on Curl controls. The QTP test-name is the control is the Curl test-name if there is one, otherwise it is the "description" of the control. Also, many controls do not have a description internally (such as a button label) so they look for a label preceding themselves and use that as the description. The first control in a GroupBox may therefore end up using the GroupBox label for its description. The workaround is to assign a test-name in the Curl code for this control.
QTP user functions cannot have the same name as Curl objects when TEA-manager.xcurl is running
When using Mercury's QuickTest Professional (QTP) to test Curl applications, the test names given to the Curl controls in the appolication cannot be same as any QTP user function.
Unregister QTP button on control panel does not work on Vista
When running the Curl RTE and Mercury's QuickTest Professional on the Microsoft Vista operating system, you will only be able to use the Register and Unregister QuickTest button on the Curl RTE Control Panel unless you turn off User Access Control (UAC) on Vista.
GDI+ can use invert-destination via GDI now
On Windows, if you perform 2D rendering with DrawOperation.invert-destination on a Renderer2d based on Microsoft's GDI+, instead of inverting the destination, the renderer will use a hatched pattern. (You will be using GDI+ if you set the global or View RenderingMode to high-quality, or if you use a Canvas, AntialiasedFrame, or offscreen Renderer2d with use-host-rendering? = false and support-advanced-draw-operations? = false.) Please note that this behavior may change in a future release of Curl.
The height of a DropdownList will shrink if an empty string is one of the list members
The height of a DropdownList may vary depending on the item selected, if the items in the list do not all have the same height. One common case that there is a blank item in the list. This can be coded to use a nonbreaking space for the label of the item where the value is the empty string:
{DropdownList "asd", "asdasda", {ListValueItem "", label = {text \ }} }
Curl IDE, VLE and Documentation
Incomplete file for Debugging
If you set a breakpoint at the top level of an applet loaded from an http URL, when you hit the breakpoint the file may be only partly displayed.
The recommended practice is to to use the IDE's server mapping feature to debug files from an http server. In the IDE, choose Preferences... from the Edit menu and select the General tab. Check the Enable URL mapping button and fill in the information required.
Document viewer sometimes won't work properly on multi-display environment.
On a computer configured with more than two displays, and with different display scaling settings, after running an in-browser Curl applet, dragging Document Viewer window from one display to another might cause unexpected broken layout.
Workaround: Press Ctrl-r or click reload button in toolbar of Document viewer to reload the document.
Some elements in the VLE design panel is showing smaller than expecteds
On a high resolution display with high scaling setting (like 200%) on Windows 10, some elements in design panel appear smaller than expected.
Workaround: Use windows scaling setting like 100% instead of 200%
VLE Extension Editor Can't See Unsaved run-time Package Files
VLE Extension Editor will not be aware of any changes to files open in the IDE with changes that have not been saved. To work around this problem, save all modified files in the IDE before working with the Extension Editor.
pcurl evaluates conditional 'include's based on deployer's environment rather than on user's
Conditional includes in pcurled package files are evaluated based on the deployer's machine environment, not the user's. This behavior is wrong since the pcurl version should behave identically to the Curl source version, which evaluates conditional includes based on the environment where execution takes place.
A package should behave the same after pcurling as before. Use of api-version-switch, platform-switch, etc. can lead to misbehaviors in pcurled package files.
For example, consider this code fragment.
{api-version-switch case "7.0" do {include "old-source-file.curl"} case "8.0" do {include "new-source-file.curl"} else {error "error"} }
This code will work fine during developer testing, but will include the version of the file which is chosen based upon the developer's api-version when the project is deployed.
Workaround: Do not use conditional includes in deployed packages.
Expanding a Large Array in the Debugger
Use care when expanding an array in the debugger. There is currently no limit on the number of items that can be displayed.
Changed project settings are not undone by Undo Checkout
Changed project settings are not undone by Undo Checkout. You must close and re-open the project after the undo operation. This problem only affects users that Undo Checkout on a project file, and only in the case where the project's target settings were changed.
Chart Invisible Until width and height are Set
In many circumstances a Chart object will be invisible unless you set the width and height explicitly. If you add a Chart to a layout in the VLE and it is not visible, try setting the width and height.
VLE Allows Top Level Objects for Wrong API Version
The VLE's New File and New Layout dialogs let users specify the type of container object to create for the layout's top-level object. However the VLE makes no attempt to limit this list to only the objects that are valid for the file's API version. For example, if you have a 3.0 project, open the VLE, and choose New File, the dialog shows a default API Version of 3.0. However, the list of top-level containers includes 5.0 containers such as TabAccordion. If you are working in an older project, be careful not to choose an inappropriate top level container.
VLE Extension editor Supports Current Version Only
The VLE Extension Editor only supports the current API version. To construct or modify a VLE Extension for a particular IDE version, you must install that IDE.
Debugger cannot find source for applet stopped due to RTE error
In the Classic IDE, if a runtime exception ocurred inside code for which there was no source information, the stack would be searched for the first frame where there was such information and that frame would be selected to show the error. In CDE2, the first frame in the stack is always selected whether or not it contains source information.
File Manipulation, I/O, OCC and Persistent Data
Curl exiting doesn't flush I/O buffers
If you open a Curl file, write to it and exit, any buffered data will be lost when Curl exits. This results in not all the data appearing in the file. In order to get around this problem, "flush" must be explicitly called, or the file must be closed before Curl exits.
curl://occ always opens in default browser
On Windows, OCC applets ("curl://occ/...") open in the default browser even when the Url is entered in the address field of a browser which is not the default.
Last Modified time sometimes shown as None with IIS server
The Last Modified time in the Temporary Internet Files is correctly set the first time a package is loaded, but on subsequent loads (with IE and Curl shut down while the package is edited to change it) the Last Modified Time is shown as None.
Because the 'resync-as-of' parameter in manifests and applets depends upon the Last Modified Time, manifests and applets appear to be up to date even when they have changed.
Workaround: No recommended workaround is known at this time. This problem appears to be a limitation in the IIS web server, so deploying to other web servers will avoid the problem. Changing the 'resync-as-of' time to a value in the distant future will force the applet or manifest to always reload, which is not advised for performance reasons.
curl://offline doesn't update the OCC applet from 6.0 to 7.0 or above
Curl has redesigned its Occasionally Connected Computing (OCC) feature in its 7.0 release. In 7.0, OCC applets can be installed and registered with the host OS much like any other application, complete with launcher icons and uninstallers. Installed 7.0 applets run off the local disk and are automatically updated from the network when Curl detects an update on the applet's originating server.
With 7.0 installed, 6.0 OCC applets continue to behave as before. A 6.0 OCC applet runs its network copy when the network is available, falling back to the local copy only when its computer is offline. Because of this difference between 6.0 and 7.0, it is not possible to use Curl OCC's automatic applet updating feature to migrate a locally-installed OCC applet from version 6.0 to version 7.0 of the RTE.
If you have an OCC applet coded to the 6.0 API version of the Curl RTE, and you want to update it to use the improved OCC features of 7.0, you have two options. First, you can deploy the 7.0 version with a different URL from its 6.0 version. The 7.0 RTE will treat the new URL as a different applet and offer to install it as with any other new OCC applet it detects. An alternative is to instruct the users of your 6.0 applet to uninstall it before running the new 7.0 version of the applet. The 7.0 Curl Control Panel provides a new "Installed" tab to manage the local disk support for installed applets. Local support is organized by webserver hostname. Clicking the "Remove all local support for server" link will delete any legacy OCC applets installed using the Curl RTE versions 6.0 and earlier.
Operating System, Browser and Server Issues
Closing Edge window with an Curl applet running in IE mode might crash the RTE.
Closing Edge window sometimes crashes Curl RTE when running curl legacy
applet(file extention: .curl) with IE mode of Edge on Windows 7 and Windows8.1.
Use IE directly instead of IE mode of Edge on old Windows systems because IE will still be supported within the OS's lifecycle.
Embedded Curl applet in HTML page sometimes loose params specified by DATA property of <object> tag.
Embedded Curl applet in HTML page sometimes loose params specified by DATA
property of <object> tag, if the page is loaded with IE mode of Edge instead of IE.
Example of the bad case:
<object type="text/vnd.curl" DATA="tags-headers-test.curl?display-html-tag" width=550 height=150></object>
Workaround: Add a PARAM tag to specify the URL's parameter part, like the following:
<object type="text/vnd.curl" DATA="tags-headers-test.curl?display-html-tag" width=550 height=150> <PARAM NAME="SRC" VALUE="tags-headers-test.curl?display-html-tag"> </object>
Drag&Drop will no longer work after a basic authentication dialog from Windows is shown within a Curl applet, if this applet is run on Windows 10(Version 1607)
When you run a Curl applet on Windows 10(Version 1607, aka Windows 10 Aniversary Update), and it happens to access data protected by a web server with basic access authentication over HTTP, after you close this authentication dialog, Drag&Drop in this Curl applet will no longer work, unless you restart your Curl RTE.
This is caused by a bug in WIndows 10 (Version 1607), and it cannot be avoided by our RTE if only such a dialog is shown without waiting for a fix from Microsoft(R). However, you can avoid this problem by either of the following two choices.
1. Avoid showing up the basic access authentication from Windows OS side.
2. Avoid upgrading to Windows 10 Versio 1607( do not apply the Windows 10 Aniversary Update)
We recommend you use the first one to workaround this issue if your applet need drag&drop feature. This way you need provide an authentication dialog using Curl Dialog as a replacement of the dialog from Windows side, requiring a user input the user name and password for this basic access authentication, then get the user name and password in your curl programm, and make a call to {set-http-authentication} like the following code, then make your HTTP access to the data on the server as usual.
{set-http-authentication {url "your-server-url"}, || the url that is protected with basic auth. realm="basic", || realm, usually you need not to change it. "user name", || user name to access the server "password" || password to access the server }
For details about set-http-authentication, please refer to Curl API reference shipped together with Curl CDE/IDE.
IE Javascript problem with window containing Curl applet
If an applet is opened using JavaScript's window.open call in Internet Explorer, that window will not be closeable using window.close, unless the window.open call has happened again while the window was already open.
Workaround: If an HTML page with the applet in it using an EMBED/OBJECT/IFRAME tag is opened with window.open, then the window will be closeable with window.close. This bug is known to Microsoft, and may be fixed in future OS service packs.
Crash when 127.0.0.1 is denied
Do not deny connections to ip address 127.0.0.1 in your firewall. The Curl RTE and Curl IDE rely on this loopback address for internal purposes. These products will not function if access to ports on this address are blocked.
Curl applet open in both new tab and new window in IE with multi-tab setting
With newer versions of Internet Explorer, version 7.0 and newer, if you have IE set to use tabs and display new pages or links in a new tab, you can get a new version of a the Curl applet in a new tab each time you run the Curl applet from the IDE.
Workaround: Change the setting for opening new pages or links to open in the same page in IE.
API - Language Issues
Indeterminate atan2 results vary between platforms
The math library function atan2 behaves differently on different platforms in the indeterminate case when both of its arguments are infinities. On some platforms, not-a-number is returned, while on other platforms, a finite number is returned. This difference results from differences in atan2 in the underlying standard math libraries on the different platforms.