Release Notes - Curl IDE 5.0.1002
Known Issues - Curl IDE 5.0.1002
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
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.
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.
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.
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
'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.