OpenLaszlo 4.8.1 is an incremental release of OpenLaszlo 4, and contains over 15 bug fixes (see the JIRA report 4.8 Release Notes for details). In addition to the bug fixes, support has been added for incremental compilation and a compiler option that lets you store precompiled platform-specific object code for both the DHTML and SWF10 runtime in a binary library format, described here.
We strongly suggest that you refer to the Release Notes for OpenLaszlo 4.8.0, which was the release preceding OpenLaszlo 4.8.1. Release notes for the previous minor release can be found at Release Notes for OpenLaszlo 4.7.3
When compiling an application to the swf10 runtime, there is an incremental compilation mode which may help to speed up recompiling the application.
The incremental compilation mode should be from the fcsh compiler shell utility (located in WEB-INF/bin/fcsh). This is a utility
which is specific to compiling for the swf10 runtime. An application can be compiled within the fcsh shell, and the shell left running. When the source code is modified, you can recompile the application from within the shell.
This should be substantially faster than invoking the compiler via lzc, because internal state of the flash 10
backend compiler is kept in memory in the Java virtual machine, rather than having to be reloaded from
disk.
lzc --runtime=swf10 yourapp.lzx, instead you use the modified fcsh
shell, as follows. It supports a lzc command which has the same arguments:fcsh shell script (lives in WEB-INF/bin)
FLEX_HOME=../../WEB-INF/bin/..
Adobe Flex Compiler SHell (fcsh)
Version 4.0.0 build 6898
Copyright (c) 2004-2007 Adobe Systems, Inc. All rights reserved.
(fcsh) lzc --runtime=swf9 app.lzx
calling lzc
Compiling: app.lzx to app.swf9.swf
swf9 compiler options changes, cleaning working dir
Executing compiler: (cd /var/folders/xh/xhmdrA41HCKjjiditeqN1k+++TI/-Tmp-/lzswf9/./build/app; /Users/hqm/openlaszlo/trunk/WEB-INF/bin/mxmlc -l
oad-config=/Users/hqm/openlaszlo/trunk/WEB-INF/frameworks/flex-config.xml -compiler.show-actionscript-warnings=false -co
mpiler.source-path+=/var/folders/xh/xhmdrA41HCKjjiditeqN1k+++TI/-Tmp-/lzswf9/./build/app -compiler.headless-server=true -c
ompiler.fonts.advanced-anti-aliasing=true -output /var/folders/xh/xhmdrA41HCKjjiditeqN1k+++TI/-Tmp-/lzswf9/./build/app/app.swf -default-size 800 600
-compiler.library-path+=/Users/hqm/openlaszlo/trunk/lps/includes/lfc/LFC9.swc
-compiler.library-path+=/Users/hqm/openlaszlo/trunk/WEB-INF/flexlib -includes \$debug \$profile \$backtrace \$runtime \$swf7 \$swf8 \$as2 \$swf9
\$swf10 \$as3 \$dhtml \$j2me \$svg \$js1 -target-player=9.0.0 -compiler.incremental=true -frame two LzSpriteApplication
-file-specs=/var/folders/xh/xhmdrA41HCKjjiditeqN1k+++TI/-Tmp-/lzswf9/./build/app/LzPreloader.as)
option EMIT_AS3_ONLY set, returning without invoking flex compiler, call 'lcompile #' to compile as3
lzc returned /Users/hqm/openlaszlo/trunk/demos/lzpix/app.swf9.swf
fcsh: Assigned 1 as the compile target id
Loading configuration file /Users/hqm/openlaszlo/trunk/WEB-INF/frameworks/flex-config.xml
/var/folders/xh/xhmdrA41HCKjjiditeqN1k+++TI/-Tmp-/lzswf9/./build/app/app.swf (403317 bytes)
(fcsh)
then if you modify one or more .lzx files, you recompile incrementally by saying lcompile 1 (or whatever the ID number
assigned by fcsh in the previous command)
touch classes/pivotlayout.lzx
(fcsh) lcompile 1
lcompile, calling lzc with args:
--lzxonly
--incremental
--runtime=swf9
app.lzx
Compiling: app.lzx to app.swf9.swf
Executing compiler: (cd /var/folders/xh/xhmdrA41HCKjjiditeqN1k+++TI/-Tmp-/lzswf9/./build/app; /Users/hqm/openlaszlo/trunk/WEB-INF/bin/mxmlc -
load-config=/Users/hqm/openlaszlo/trunk/WEB-INF/frameworks/flex-config.xml -compiler.show-actionscript-warnings=false -compiler.so
urce-path+=/var/folders/xh/xhmdrA41HCKjjiditeqN1k+++TI/-Tmp-/lzswf9/./build/app -compiler.headless-server=true -compiler.font
s.advanced-anti-aliasing=true -output /var/folders/xh/xhmdrA41HCKjjiditeqN1k+++TI/-Tmp-/lzswf9/./build/app/app.swf -default-size 800 600
-compiler.library-path+=/Users/hqm/openlaszlo/trunk/lps/includes/lfc/LFC9.swc -compiler.library-path+=/Users/hqm/openlaszlo/trunk/WEB-INF/flexlib
-includes \$debug \$profile \$backtrace \$runtime \$swf7 \$swf8 \$as2 \$swf9 \$swf10 \$as3 \$dhtml \$j2me \$svg \$js1 -target-player=9.0.0 -
compiler.incremental=true -frame two LzSpriteApplication -f
ile-specs=/var/folders/xh/xhmdrA41HCKjjiditeqN1k+++TI/-Tmp-/lzswf9/./build/app/LzPreloader.as)
option EMIT_AS3_ONLY set, returning without invoking flex compiler, call 'lcompile #' to compile as3
Loading configuration file /Users/hqm/openlaszlo/trunk/WEB-INF/frameworks/flex-config.xml
Recompile: /private/var/folders/xh/xhmdrA41HCKjjiditeqN1k+++TI/-Tmp-/lzswf9/build/app/$lzc$class_pivotlayout.as
Reason: The source file or one of the included files has been updated.
Files changed: 1 Files affected: 0
/var/folders/xh/xhmdrA41HCKjjiditeqN1k+++TI/-Tmp-/lzswf9/./build/app/app.swf (403318 bytes)
renaming /var/folders/xh/xhmdrA41HCKjjiditeqN1k+++TI/-Tmp-/lzswf9/./build/app/app.swf to /Users/hqm/openlaszlo/trunk/demos/lzpix/app.swf9.swf
(fcsh)
You can keep modifying files and calling lcompile 1 to recompile incrementally.
OpenLaszlo continues to be grateful for the significant contributions by André Bargull, whose numerous bug fixes and exacting techical reviews make OpenLaszlo more robust. We also want to thank Ono Keiji, Jaco Botha, Alexander Pakhunov, Chen Ding, Clint Dickson, Gioacchino Mazzurco, John Olmstead, Justin Hunt, Pasqualino 'Titto' Assini, Raju Bitter, and Rami Ojares, who took the time to isolate and report important bugs for us to address in this release. Thank you! We would also like to thank the entire OpenLaszlo community for your support in so many ways, like submitting bug fixes, helping users on the OpenLaszlo forums, and participating in discussions to help make OpenLaszlo a better platform.
We have a broad specification that we support browsers that obey DOM 2 and CSS 2.1 for DHTML and SWF8, SWF9, and SWF10. We are also actively tracking HTML5 and mobile/touch browsers. These are some of the active operating systems/browser/runtime platforms on which we and the community are using this release:
Please note that although we have also done some testing with Windows Vista and Windows 7, OpenLaszlo 4.8.1 has not been fully qualified against that operating system at this time. Please see Running OpenLaszlo Server on Windows Vista for more information.
For those of you who have already upgraded your applications to OpenLaszlo 4.2 or higher, no further work is needed. You should just start using OpenLaszlo 4.8.1.
To migrate your 4.0.X or 4.1.1 applications, we strongly suggest that you refer to this wiki page: Runtime_Differences. This page discusses the changes required by SWF9 and also provides a methodology for upgrading your application. It is very important that you run the automated conversion scripts in the recommended order, should you choose to take advantage of them. To review the changes in incremental releases, please refer to the OpenLaszlo Archive
The 4.8.1 release includes over 15 bug fixes since OpenLaszlo 4.8.0; we have provided links to our JIRA bug tracking system where you can view the details:
In some cases, the onfocus event fires too early, causing unexpected input text characters to be selected as it does in this example:
<canvas layout="axis: y">
<inputtext text="abcd" width="100" bgcolor="0xcccccc"/>
<inputtext text="abcd" width="100" bgcolor="0xffcccc" onfocus="this.setSelection(0, 1)"/>
</canvas>
To work around this issue, you can create a cover view that handles initial clicks, as shown here for the above example:
<canvas layout="axis: y">
<inputtext text="abcd" width="100" bgcolor="0xcccccc"/>
<view bgcolor="0xffcccc"> <inputtext name="field" text="abcd" width="100">
<handler name="onfocus"<
parent.cover.setVisible(false);
this.setSelection(0, this.getText().length);
</handler>
<handler name="onblur">
parent.cover.setVisible(true);
</handler>
</inputtext>
<view name="cover" width="100%" height="100%" onclick="LzFocus.setFocus(parent.field)" />
</view>
</canvas>
Currently, if you set an attribute value for a data element, the value is stored as it is set. This will no longer be true in future OpenLaszlo releases, where the value will be coerced to a String value. If you need to set non-String values for data elements, you should use the setUserData method as shown in this example where node is an LzDataElement:
node1.setUserData('key1', val1); assertEquals(val1, node1.getUserData('key1'), 'getUserData key1')
OpenLaszlo 4.8.1 Production branches/4.8@17145 (17145) 2010-07-29T19:41:36Z
Copyright © 2002-2010 Laszlo Systems, Inc. All Rights Reserved. Unauthorized use, duplication or distribution is strictly prohibited. This is the proprietary information of Laszlo Systems, Inc. Use is subject to license terms.