• Home >>
  • Curl - Curl IDE 5.0.1002 Release Notes
Japanese
Curl, Inc. Logo
Richer Internet Applications
   Developers
      Code Samples
      XML Document Model
      Community
      Books
      FAQ
      Release Notes
         Curl Mac Beta
         Curl RTE 5.0.2
         Curl IDE 5.0.1002
         Curl RTE 4.0.4
         Curl RTE 3.0.10

Release Notes - Curl IDE 5.0.1002

Known Issues - Curl IDE 5.0.1002

Contents

Installer

Silent installer error creating start menu short cut

Upgrading or uninstalling the Curl RTE or Curl IDE can fail if the earlier install was performed when the machine's regional settings were set to a host locale that differs from the current host locale. A typical example would be to install one version of the Curl RTE with the machine set to the Japanese host locale, and then to either uninstall or upgrade with the machine set to the US or UK host locale. The failure looks something like the following, displayed in a Command window when the silent installer is invoked:

Throwing unexpected:
ExistingFileException: Failed to create directory
'file:///c:/Documents and Settings/All Users/Start Menu/Programs/Curl RTE':
Cannot create a file when that file already exists (183)
*** Error encountered: ExistingFileException:
Failed to create directory 'file:///c:/Documents and Settings/All Users/
Start Menu/Programs/Curl RTE':
Cannot create a file when that file already exists (183)


+------------------------------------------------+
| To dismiss this window, press the 'enter' key. |
+------------------------------------------------+

Workaround: Restore the machine to the host locale that was in use when the original installation was performed. Uninstall all. Switch the host locale to the new setting. Reinstall.

Install and uninstall of Curl RTE and Curl IDE products should be performed with the machine in a consistent host locale.

Cancelling "LAB" install after replacing "RTE" can lose old "IDE"

Installation of the Curl IDE 5.0 sometimes requires that the Curl RTE 5.0 that it depends upon be replaced/upgraded. The Curl RTE installer removes the existing Curl IDE in these situations, "knowing" that the existing Curl IDE is about to be replaced. However, if the user cancels installation of the Curl IDE, the prior Curl IDE is not restored (and the new one has not been installed). The user is left without a Curl IDE 5.0.

This problem cannot arise with the silent installer (because no cancellation is possible). It ordinarily occurs only when the user has a beta Curl RTE 5.0 and Curl IDE 5.0 and installs the actual release version. It can also occur when the user upgrades the Curl IDE to a later version and accepts the optional upgrade to the installed Curl RTE.

Workaround: If the Curl IDE 5.0 installer puts up the dialog indicating that it requires a compatible Curl RTE, cancel the Curl RTE install from that dialog or from the subsequent dialog for installing the Curl RTE; do not wait for the dialog indicating that the Curl IDE is about to be installed.

If the install is canceled from the Curl IDE install dialog or during Curl IDE installation:

  • uninstall the refreshed 5.0 RTE
  • obtain an installer for the prior version of the Curl IDE and reinstall it.

Curl 5.0 does not install on SuSE 8.2/KDE (openssl dependency)

The Curl RTE 5.0 does not install or run on the Linux SuSE 8.2 distribution.

Workaround: None available. SuSE 8.2 and Curl RTE 5.0 require incompatible versions of libcrypto.so.

FireFox is caching the plugin list and not noticing when Curl is installed

If running applets in a FireFox or Mozilla browser, and Java is disabled, FireFox does not notice new plugins.

Workaround: You can browse about:plugins and FireFox or Mozilla will update its list of plugins. You can enable Java in FireFox or Mozilla preferences. You can upgrade to newer versions of FireFox or Mozilla, FireFox 1.0.5 and Mozilla 1.8 are expected to have this bug fixed. This is a limitation of Mozilla and FireFox, see https://bugzilla.mozilla.org/show_bug.cgi?id=273785

Linux RTE installer adding bogus IDE menu shortcuts

The Linux RTE installer creates Start Menu shortcuts for the Curl IDE even when it is not installed.

Workaround: None. These menu shortcuts are harmless. They raise an explanatory dialog if clicked.

Must log out and log in again to see linux start menu items

On Linux systems running the Gnome window manager, the Start Menu items are not displayed following installation of the Curl IDE.

Workaround: Log out and log back in to force the Start Menu items to display.

Installer does not correctly detect DirectX version

The Curl® RTE requires Microsoft DirectX version 7.0 or later to properly implement the graphics APIs. The Curl RTE installer detects the installed version of DirectX. If it does not meet the minimum requirements, the user is advised to install the most recent version of DirectX and is directed to the Microsoft web site.

Curl, Inc. is aware of reports that on some machines running Microsoft Windows 98SE the Curl RTE installer fails to report an insufficiently modern version of DirectX. Our installer follows the Microsoft guidelines for detecting the correct version of DirectX, and to date we have been unable to reproduce this problem in our testing labs. Nevertheless, the workaround is simple: install the most recent version of DirectX before installing the Curl RTE.

Remedy: Install the most recent version of DirectX before installing the Curl RTE.

Linux start menu items not created for KDE

On some versions of Linux running KDE, installing the Curl RTE and Curl IDE does not create Start Menu entries.

Workaround: Run these applications from the command line.

Curl RTE => /opt/curl/surge/6/surge 
Curl IDE => /opt/curl/surge/6/surge-lab

Note that if more than one numbered subdirectory exists, you need to invoke the highest numbered one. That is, /opt/curl/surge/6/surge rather than /opt/curl/surge/5/surge

GUI and Graphics

Page Range Footer Not Printed Fully in Landscape Mode

On Linux, in Japanese, the bottom right page range footer is printed like 1/3 ### where ### are three different Japanese characters. When printing in landscape mode, only the page numbers, e.g. 1/3, are seen.

Default Draw Operation Changed

The default DrawOperation for Renderer2d objects has changed from source to mask. This has the potential to affect any applet that performs its own rendering using the Renderer2d interface directly, without specifying a DrawOperation via with-render-properties. Previously, the default behavior was to ignore transparency; now, the default behavior is to respect transparency specified as a FillPattern or elements of a Pixmap. To preserve the previous behavior, simply wrap any rendering calls in:

{with-render-properties draw-operation =
    DrawOperation.source on renderer2d do 
        [your drawing code here]
}

Underline on trademark symbol on Linux

If an underline style is applied to a trademark symbol, the underline position may be offset relative to adjacent characters on certain Linux systems.

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.

Event Handling Anomaly on Table Cells

Normally if you set a background on a Graphic object, it will receive pointer events wherever the background is visible. This is not the case when you set a background on a table cell (for example with {cell-prototype background="red", ...}). While a table cell is technically not a Graphic, this behavior is inconsistent. A workaround is to use a Graphic such as a Frame to fill the table cell, and set the background on this Frame. (Use {add-stretch} for the width and height of the Frame to force it to fill the table cell completely).

Clarification concerning double-click in ListBox

A double-click in a ListBox will fire an Action event even if no items are selected. This means that the handler for an Action event on a ListBox should not assume that ListBox.value is non-null.

Recommendation: Use enabled?=false with visible?=false

Even if a control is invisible, it can still take focus. This is easy to avoid it by setting enabled?=false when you set visible?=false.

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".

Modal Dialogs on Linux

Modal dialogs do not disable the parent window on Linux. They are still effectively modal, however.

XP and ATI 3d Rage PRo card shows graphics scrambling

In rare cases graphics output may be garbled. This has for example been observed with the ATI 3d Rage Pro card under Windows XP. These problems can often be fixed by installing the latest drivers from the manufacturers web site.

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.

QuickTest playback not available until applet finished loading

QuickTest playback mechanism is not available until an applet has completely finished loading. This means that If an applet brings up a dialog while it is loading, QuickTest cannot be used to test the dialog. The solution is to use {after 0s do } to bring up the initial dialog. This will delay execution of the code until the applet has finished loading.

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.

Note on Language Support

The only languages fully supported and tested by the Curl RTE are U.S. English and Japanese. Most languages that read from left to right can be displayed and entered in a control in a Curl applet provided that the appropriate font is requested and is available on the system where the applet is running.

Curl IDE, VLE and Documentation

Source Editor printouts crop right side

When printing source code from the Source Editor, text longer than the width of the page is cut off at the right margin; the exact cutoff point can vary with fonts and printers used. As a workaround, we suggest that you keep your lines to a reasonable length, and, if necessary, print out source code in "landscape" format.

Difficulties Checking Out Files With Incorrect Encoding

If a file with an incorrect character encoding has been checked into your source code repository and the IDE tries to check it out for editing, the operation may not work correctly. The workaround is to check out the file outside of the IDE before editing the file.

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.

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.

Error Deploying for 3.0 when 3.0 IDE Not Installed

You cannot deploy a project for version 3.0 unless the version 3.0 IDE is installed. The 5.0 IDE does not prevent you from attempting to do so however, and the error message you get is confusing because it only mentions a missing package, CURL.IDE.DOCUMENTATION. To deploy a project for version 3.0, be sure you have the 3.0 IDE installed.

Problem in the VLE Layout Tree on Linux

On certain versions of Linux manipulating objects in the VLE layout tree does not work correctly when part of the VLE window is off screen. This is a window manager problem. The workaround is to make sure the entire window is on screen.

Linux: User can launch IDE before package caching completes

Developers are not prevented from launching the Curl IDE on Linux before the installation process has completed; there is no visible indication that the installation has completed fully.

Workaround: After installing the Curl IDE, and once the 'rpm' command invocation has returned successfully, some installation tasks to compile and cache IDE packages continue in the background. Invoke 'ps' and look for instances of the 'surge' process. When none appear, installation is complete. On a very low end machine, or a very busy one, this background processing may take a few minutes. On more powerful machines, this step rarely takes more than 1 minute.

The Curl IDE will execute properly even if it is started before these background installation tasks complete. However, performance may suffer both initially and going forward, so waiting for background installation tasks to complete is strongly recommended.

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 "4.0" do
      {include "old-source-file.curl"}
   case "5.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.

Mozilla support problem

Curl does not launch Firefox from the IDE if Firefox is the default browser.

Workaround: choose a different default browser from among Netscape, Mozilla, and IE.

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.

VLE allows creation of layout classes that are too large

In the VLE, a single source file can contain many layouts. You are free to organize layouts, files, and packages however best suits the application. But, there is an upper limit on the number of fields in a class. When you assign a design name to an object, the object becomes a field in the layout class. This means that you cannot have more than about 1,000 objects with a design name in a single layout.

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.

Opening Old Projects in the IDE

The IDE stores the project API version in the project file. When an old project is opened, features that require a newer API version are disabled. Choose the Change API Version... command from the Project menu to upgrade an old project file to the current IDE version. Note that in version 5.0, this dialog can also be used to perform a global search and replace of the heralds in applets and packages in the project to specify the new API version.

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.

IDE deployment resync strategy issue

The IDE Target Settings dialog allows you to specify that the IDE will automatically update the resync-as-of time to the time of deployment.
If you want to ensure that changes to your project files will be noticed by your users however, you will need to add a "cache-duration" setting to your project's manifest file in addition to the Set Resync Time to Deploy Time setting.
Modify your manifest statement from:

  {manifest PROJECT}

to:

  {manifest PROJECT,
      cache-duration = 0s
  }

When the project is deployed, the resync-as-of time is added to the manifest statement.

Adding a MessageDialog to a Layout in the VLE is Not Recommended

The MessageDialog was included in the VLE as a visual object but it would be better if it were a nonvisual object. If you add a MessageDialog to a layout, when a validation message is shown you will see it flicker in the layout and then pop up in a dialog. Adjacent objects on the layout may change position.
The default value for the message-display property is a standard MessageDialog, so using a specialized MessageDialog is not often necessary. However, if you do need to use a customized MessageDialog you should add the appropriate code (such as {MessageDialog font-size = 12pt} if you want a larger font than normal) as the value of the message-display property on the appropriate object. It is recommended that you do this in the code editor because if you choose Edit Code from the message-display property when the property is blank you will encounter another known bug.

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.

IE 7 thinks Curl applet is still loading when running file from the IDE

If you use Internet Explorer 7 with the tabbed browsing feature turned off, when you run a Curl applet you may see that IE 7 displays the animated spinning icon by the address filed, indicating that IE 7 thinks the applet is still loading although the file has completed loading.

If you reload the applet in IE 7, the animated spinning icon will stop when the appplet finishes loading.

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.

"content-type" setting by request-headers shouldn't be ignored by Applet.browse-url-post

If HttpRequestData is being used for a request, the HttpRequestData.content-type will override any Content-Type header field in HttpRequestHeaders.

Workaround: Specify the desired content-type in the HttpRequestData, not in the HttpRequestHeaders.

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.

Linux: Need support for 'network-offline-mode?'

'network-offline-mode?' is not supported on Linux.

Workaround: Use 'network-disconnected?' to determine whether or not the network is accessible as a close proxy for 'network-offline-mode?' on Linux.

OCC and translations need to handle non-404 missing files when used in conjuction with request-browser-resident-http

If you deploy your Curl applications using Occassionally Connected Computing (OCC) or translations, and if your webserver is not set up to return 404 status for missing files, you will need to use the workarounds discussed in the Networking chapter of the Curl Documenation Guide in order to get the OCC and translations to work properly when using request-browser-resident-http.

Operating System, Browser and Server Issues

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.

browse-forward and browse-backward do not work on Konquerer 3.1.4

Applet.browse-forward and Applet.browse-backward do not work for applets running in a Konqueror 3.1.4 and early browser. If they are used, Konqueror will pop-up an error about javascript: not being supported.

Workaround: This may be fixed in more recent versions of Konqueror.

browse-backward doesn't work on Netscape 8.0.2

Applet.browse-forward and Applet.browse-backward do not work for applets running in a Netscape 8.X browser. If they are used, nothing happens.

Workaround: None, this is an issue with Netscape 8.X.

IDE does not unminimize existing Firefox window when running applets

If Firefox is your default browser, and it is running with its window minimized, when running an applet from the IDE, the applet runs in the browser, but the browser window remains minimized instead of being restored.

Issues with tabbed browsing in Firefox

The use of tabbed browsing in Firefox is not fully functional when viewing Curl applications.

IE crash with browse-url-post on W98 and ME

Using Applet.browse-url-post in an applet running in the Internet Explorer browser on a Windows98 or WindowsME computer may cause the browser to crash.

Workaround: Use a different web browser or upgrade to a newer OS.

Problems with embed and object tags in Netscape 4.75

Netscape 4.X may display odd errors or no error when there is an EMBED tag or OBJECT which points to a URL that doesn't exist.

Workaround: Upgrade to a newer browser. This is a limitation in the Netscape 4.X browsers.

Curl applet in POST response doesn't work in Konqueror 3.3.1

Any POSTed data sent to a Curl applet does not work correctly in Konqueror 3.3.1 and earlier.

Workaround: None known. This is a limitation in the Konqueror browser.

We treat all applets as sticky on mozilla-based browsers

In the following browsers, all Curl applets are "sticky". That is, they run as if '{applet.become-sticky}' appears in the applet source code. Therefore, browsing to the Url of an applet which is already in the browser history simply returns to the existing applet instance.

This limitation affects:

  • all versions of Netscape above 4.8
  • all versions of Mozilla
  • all versions of Firefox

Workaround: None. This is a limitation in the Mozilla-based browsers, which do not support providing history information to plugins.

Linux: Konqueror does not automatically notice new plugins

The Konqueror browser running under KDE does not automatically recognize the presence of the Curl plugin.

Workaround: In Konqueror, go to Settings -> Configure Konquerer -> Plugins -> Plugins Press the button labeled "Scan for new plugins".

Curl RTE on Fedora Core 3 over SSH

Recent versions of OpenSSH uses untrusted X11 cookies by default. This means you may experience errors when running Curl over SSH on Linux on Fedora Core 3. The earlier behaviour can be restored by setting ForwardX11Trusted yes in ssh_config. See the OpenSSH FAQ.

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.

Keyboard Focus in Mozilla Address Bar under Linux

If you are running a Curl applet using Mozilla on Linux, you may find that once the keyboard focus has been given to a Curl applet it is difficult to get it back to the browser address bar. This appears to be a bug in some versions of Mozilla.

Our Mozilla lacks Japanese resources

The Curl RTE on Linux will use a copy of the Mozilla browser which is included with the Curl RTE, when it needs to spawn a web-browser, if it can't find a suitable web-browser already installed on the machine. This copy of Mozilla only includes English resources, regardless of what language the user might use.

Cannot set Window Icon on TurboLinux

The Curl RTE cannot set the Window icon when running under TurboLinux.

IME Window Issues under Linux

Under Fedora Core 3, the IME window comes up with a title bar when it should not. There may then be problems with keyboard focus and with closing the IME window. However, if you start a new IME composition, the existing IME window will be closed. This appears to be a configuration problem on some systems.

Adding the following to /usr/X11R6/lib/X11/app-defaults/Kinput2 prevents kinput2's windows from getting focus for most window managers.

*SeparateConversion.input: false
*selectionShell.input: false
*auxShell.input: false

It has been reported that these app-default settings work for: fvwm2-2.4.5, sawfish-1.0.1, KDE3, icewm-1.0.9, enlightenment-0.16.5, scwm-0.99.6.2, twm (from XFree86 4.2.0).

They are unfortunately ignored by: blackbox-0.62.1, WindowMaker-0.80.0

For the window managers which observe these app-defaults settings it is an improvement, for the others nothing is changed.

Konqueror doesn't automatically notice new plugins

Each Curl user needs to manually invoke (by pressing the button) the Konqueror "Scan for new plugins" operation to force Konqueror to find the Curl plugin after Curl is installed. Otherwise, Konqueror does not find the Curl plugin and does not correctly display Curl applets.

Our installer is putting the plugin libraries in the right location. However, additions or removals of plugins are only noticed when a scan is done, either initiated by hand, or (on KDE) by "Scan for new plugin at KDE start up", which works as described. Note that it says KDE start up, not Konquerer start up.

Konqueror browser has issues running Curl plugin

Curl does not work correctly running under the Konqueror browser, due to the failure of the Konqueror executable to call "NPP_Destroy()" at the proper times. The effect is that reloading an applet creates a new instance rather than replacing the former instance. Eventually, a large number of Curl processes is created leading to an exception. The only workaround until Konqueror fixes their code is to shut down the Konqueror browser from time to time to clear out all Curl processes associated with that browser.

Linux: "control-key shows mouse cursor" prevents Curl's control-key processing

On Linux, if you select "control-key shows mouse cursor" it prevents the Curl runtime from receiving the control-key state.

On Linux, Curl doesn't copy over Firefox profiles so user settings will be ignored

Curl RTE on Linux uses Mozilla based libraries to handle http: and https: URLs, and makes copies of the user's most recently used Mozilla profile to get various settings like Proxy servers to be used and client side certificates to use. However the Curl RTE does not copy over Firefox profiles, so Firefox users would need to run Mozilla to make changes to settings that would be seen by the Curl RTE.

Network socket limits

When running Curl RTE on Microsoft Windows 98, you can run out of network sockets due to a low limit on the number of sockets in the OS. This would show up as applets not finishing loading, or as errors about running out of network resources. To fix this, using regedit, you can create a new registry entry of type String at HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\ MSTCP\MaxConnections with a value of 256.

Running applet with infinite loop wedges Windows taskbar

It is possible to write a nonterminating Curl applet (infinite loop) which, when run with a combination of very specific settings on Windows XP SP2, can make the Windows taskbar unresponsive. This applet is a simple example.

 {curl 5.0 applet}
 {after 1s do
     {while true do}
 }

The conditions required are

  • Windows XP SP2 is installed.
  • The Windows Classic theme for Windows Explorer has been selected.
  • Windows Multiple Language Support is installed
  • The Language Bar icon is displayed in the Windows Taskbar
  • The Curl RTE has been launched so that its icon is the leftmost in the System Tray, and the Language Bar icon is immediately to the left of the Curl RTE icon in the Windows Taskbar.
  • The nonterminating applet is opened in Internet Explorer.

At this point Windows Explorer will not respond to most mouse events.

Workaround

Force another application icon to open in the System Tray to the left of the Curl RTE icon if your PC is configured precisely as indicated. The easiest way to do so is to start Windows Task Manager, because it places a small icon in the System Tray.
If you find yourself in the unresponsive state, Windows should still respond to Ctrl-Alt-Del. Choose Task Manager. Select surge.exe in the list on the Processes tab. Press the End Process button at the bottom of the Task Manager. You will need to restart your applet.

Internet Explorer UI Changes with Embedded Content

After a recent update, Microsoft Internet Explorer users can no longer directly interact with Microsoft ActiveX controls, including embedded Curl applets. An extra click is necessary unless you implement a workaround. For more information, see the Microsoft MSDN web site.

Some IDE Shortcuts not Working on Certain Linux Systems

In the IDE, Ctrl+F5 and Ctrl+Shift+F5 do not work under certain Linux window managers. The workaround is to use the menu directly, or use the toolbar button.

Curl applets that use links that specify a target window may not work in Firefox

If you use Firefox as your default browser and have Firefox configured to open links to new windows in new windows, Firefox may freeze if you use links in Curl applications that specify a new window as a target.

Workaround: configure Firefox to force links that open new windows to open in either the same tab/window as the link, or, a new tab. This option is set through the Tabs pane of the Tools -> Options dialog in Firefox.

Effect of Vista's File and Registry virtualization on system calls

When using Microsoft's Vista operating system, File and Registry virtualization will affect privileged applets that write to areas that need elevated permissions. This affects writing to Program Files, to system directories, and, modifying registry values in HKEY_LOCAL_MACHINE. Writes and modifications to those areas will succeed, but only take effect for the current user, and will not be removed by uninstall. Also, on Vista, running host processes that require elevation will work.

IDE does not unminimize existing Firefox window when running applets

If Firefox is your default browser, and it is running with its window minimized, when running an applet from the IDE, the applet runs in the browser, but the browser window remains minimized instead of being restored.

Running a file a second time from the IDE does not work correctly with IE 7

If you use Microsoft Internet Explorer 7 as your default browser, you can specify how IE handles opening links. The Tab Settings in IE 7 allows you to specify: 'reuse window or tab', 'open in new tab' or 'open in a new window'. The default behavior for IE 7 is 'open in new tab' whereas the default behavior in IE 6 is 'reuse window or tab'. This change in default behavior between IE 6 and IE 7 affects what happens when a Curl file is run in from the IDE. If the setting is 'open in new tab', a new tab will be created in IE 7 every time the user runs a curl file from the IDE.

Security warning when starting surge on Vista with IE 7 in protected mode

If you install the Curl RTE or Curl Lab on Microsoft's Vista with the process ieuser.exe running, when you try to load a Curl applet, you will get a security warning indicating that:

"A website wants to open web content using this program on your computer...."

To workaround this problem, you can:

  • make sure that ieuser.exe is not running when you install the Curl RTE, or,
  • reboot after installing the Curl RTE

API - Language Issues

'with' macro should restore an unset option to its unset state

The 'with' macro does not restore an unset option to its unset state, as can be seen from running the following example.

 {curl 5.0 applet}

 {let cb:CommandButton = {CommandButton}}

 {after 5seconds do
     {output {set? cb.enabled?}}
     {with cb.enabled? = true do
         {output {set? cb.enabled?}}
     }
     {output {set? cb.enabled?}}
 }
 {value cb}

The documentation for 'with' does not indicate a specific behavior with respect to option values. It mentions only variables.

Workaround Save the state of any options whose values are modified in the 'with' initialization clause before the 'with' and restore their values explicitly on exit from the 'with' context.

API Moved to CURL.UTIL.ELASTIC

In the 4.0 API version of the Curl RTE, several API's for manipulating elastics, including make-elastic, were moved from CURL.GUI.BASE to CURL.UTIL.ELASTIC. These API's are re-exported by CURL.GUI.STANDARD in both API versions. If a package imported CURL.GUI.BASE and any of these API's are undefined when the package is upgraded to 4.0 or later, the problem can be fixed by importing either CURL.UTIL.ELASTIC or CURL.GUI.STANDARD.

  Classes: 
    Dimension
    Elastic
    OriginElastic

  Procedures:
    make-elastic
    make-origin-elastic
    dimension-to-elastic
    dimension-to-origin-elastic

  Constants:
    StretchOrder
    unstretchable-zero-length-elastic
    unstretchable-zero-length-origin-elastic
    unstretchable-stretch-order
    rigid-threshold-stretch-order
    rigid-compress-order
    rigid-neutral-stretch-order
    rigid-stretch-order
    padding-threshold-stretch-order
    proportional-stretch-order
    compliant-stretch-order

Curl's cryptographic API fails on Win2K when used with Algorithm.rc2

The Curl RTE's cryptographic API (in the CURL.CRYPTO.CIPHER package) relies on the underlying operating system for its implementation. In Windows XP Service Pack 1, Microsoft changed the number of bits used by keys for the RC2 cipher such that encrypted data cannot be exchanged between Windows XP and earlier releases of Windows. Curl specifies a key length of 128 bits for RC2 on all its supported platforms, but on Windows before XP Service Pack 1, the Microsoft Cryptographic Provider used only 40 bits in an RC2 key. Your applications should not use CURL.CRYPTO.CIPHER.Algorithm.rc2 If you care about exchanging encrypted data with software running on older Windows operating systems.

String.replace-clone could fall into endless loop

String.replace-clone and WritableString.replace can enter an infinite loop if the 'old' value is the empty String ("").
Workaround Explicitly check for the empty String in the 'old' parameter before any invocation of String.replace-clone or WritableString.replace.

Local host name can be obtained by unprivileged applet

Due to a security issue, the following API changes were made in the CURL.IO.SOCKET package. SocketInetAddress.get-LowSocketInetAddressLookup now only succeeds if the applet is privileged. And the standard way to get the local hostname, which is to do {SocketInetAddress SocketInetAddress.local-host}.name now only succeeds if the applet is privileged.

Also the following APIs have had their protections changed: AcceptorTCPSocket.bind, DataTCPSocket.connect, DataTCPSocket.start-connect, UDPSocket.bind, UDPSocket.write-packet, UDPSocket.set-remote-address and NetworkSocket.set-local-address have been changed to be sealed.

NetworkSocket.current-LowSocketInetAddressLookup is no longer visible.