Fetching contributors…
Cannot retrieve contributors at this time
289 lines (189 sloc) 9.38 KB
Lua Alchemy v0.3.2 (2012-03-23)
Changes since v0.3.1:
1. All SWF that we build are now compatible with Flash Player 11.2.
Unfortunately, to ensure compatibility we had to enforce
SWF format 12 (instead of SWF format 14 that is default
for Flex SDK 4.6).
If you're building a Lua Alchemy demo with earlier Flex SDK that
by some chance does not know yet about SWF format 12, just
change `swf.version.format` variable in `build.xml` to a lower value
(or remove `<swf-version>` tag from `<mxmlc>` tasks).
Note that lua-alchemy.swc itself should be SWF-format-agnostic,
and should work with any SWF format version.
Lua Alchemy v0.3.1 (2012-03-19)
Changes since v0.3:
Features 1-3 were sponsored by the DragonRAD:
1. New demo: MiniDemoAIR, with instructions on how to build
AIR applications that use Lua Alchemy (including iOS targets).
Nothing special, really, except that, for Flex 4.6 at least,
AIR interpreter targets for iOS seem to be not compatible
with code, generated by Adobe Alchemy and will crash upon launch.
Release builds in native code should work just fine.
2. Functions doFile() and doString() are no longer deprecated due
to reentrancy problems with async versions (see below).
3. Functions doFile() and doString() are now reentrant.
Note that if you find that you need reentrant doString(), then you
probably should use supplyFile() + doFile() instead.
4. Functions doFileAsync() and doStringAsync() are now not callable
from Lua (not even from a separate state).
See here for details:
5. New functions in wrapper to call a global Lua function:
globalLuaSymbol : String,
args : Array
) : Array
(return value protocol is the same as doString()).
Argument values of primitive types are auto-converted to Lua types
for ease of use.
Note that the function is synchronous. Asynchronous version is still TODO.
6. New function in LuaAlchemy to call a global Lua function:
globalLuaSymbol : String,
... args
) : Array
(return value protocol is the same as doString()).
Argument values of primitive types are auto-converted to Lua types
for ease of use.
Note that the function is synchronous. Asynchronous version is still TODO.
7. Other minor fixes and improvements (see git log for more information).
Lua Alchemy v0.3 (2011-06-04)
Changes since v0.2.2:
Features 1-6 were sponsored by the DragonRAD:
1. AS3 API: doFileAsync(), doStringAsync(). Non-asynchronous versions
are now deprecated. [UPDATE: Not really. See v0.3.1]
2. Finally got as3.flyield() to work -- only inside asynchronous calls.
It now returns true (after yield is complete) when invoked
from inside asynchronous function and nil, error_message when not
(and not even attempt to yield).
You may check as3.is_async read-only flag value
if you need to know if you're inside asynchronous call.
3. Sugar: Optional autoconversion to Lua for primitive AS3 types
(the ones that as3.tolua() handles). (Off by default.)
Silly example. You had to write as follows:
local double_size = as3.tolua(myobj.length)
With autoconversion you may write like this:
local double_size = myobj.length * 2
Use as3.enable_sugar_autoconversion() to enable it,
as3.disable_sugar_autoconversion() to disable
and as3.is_sugar_autoconversion_enabled() to query its status.
Note that autoconversion is likely to hamper performance a bit.
It will also not allow you to write code as follows:
Since length would be converted to Lua number right away.
For the sake of consistency of your code it is not recommended
to change autoconversion settings on the fly. Set it to a preferred
value right after Lua Alchemy state is initialized
and do not touch it after that.
4. Sugar: When sugar is enabled, all as3 objects are callable.
5. New as3.invoke() API function to invoke (i.e. call) AS3 function objects
without resorting to Function::call.
6. Thanks to above two items it is now possible to write Lua `for` loop
iterators in AS3.
7. Fixed a long-standing typo (note missing "a"):
lua_wrapper.luaInitilizeState -> lua_wrapper.luaInitializeState
8. Added an option to luaAlchemy constructor to bypass sugar code loading.
9. Added new NoAssets demo to demonstrate how to use LuaAlchemy high-level
interface without using LuaAssets file.
10. Added new Barebones demo to demonstrate how to use LuaAlchemy high-level
interface from bare-bones Flash.
11. Added new EZPlatformer demo, ported to Lua from one of samples for
the popular Flixel framework (
12. Other minor fixes and improvements (see git log for more information).
Lua Alchemy v0.2.2 (2011-04-17)
Changes since v0.2.1a:
1. Dropped "a" suffix from version name. We're mature enough
for at least a beta.
2. Dropped lua-nucleo from the official distribution. Not everyone needs it.
If you need help bundling it (or any other module) with Lua Alchemy yourself,
please create a ticket / post to mailing list to get help.
3. Fixed a couple of memory leaks in Lua/AS3 bridge
(including a nasty hidden bug in the AS3 userdata handling).
4. Removed unused Lua benchmarks and unused Lua test suites
hoarded into the distribution. LuaAlchemy test suite is still in place.
Feel free to contribute your pet tests and benchmarks -- as long
as you integrate them so they are immediately usable with Lua Alchemy.
5. Other minor fixes and improvements (see git log for more information).
Lua Alchemy v0.2.1a (never officially released)
Changes since v0.2a:
1. Fixed multibyte string handling.
2. Fixed memory leak in create_as3_value_from_lua_stack.
That affects doString() and doFile().
3. Added bindings for running pure Lua tests
properly in the test GUI.
4. Added current lua-nucleo library snapshot.
Not documented, but useful.
Added lua-nucleo tests as native Lua Alchemy tests.
5. Added as3.argstoarray() to convert argument list to array.
Need a separate function to handle nils inside list properly.
6. Added recommended git pre-commit hook.
See lua-alchemy/etc/git/pre-commit
7. Other minor fixes and tuning.
Lua Alchemy v0.2a
Changes since v0.1a:
1. Added Lua sugar for AS3 interface:
2. New Lua as3 module functions:
2.1. Implemented in C:
as3.isas3value(v) -- return true if argument is as3 value
as3.toas3(v) -- converts argument to AS3 value
See also:
2.2. Implemented in Lua:
as3.onclose(fn) -- calls callback when state is closed
as3.toobject(v) -- converts table to Object
as3.toarray(v) -- converts table to Array
as3.prints(...) -- print-like argument concatenation
as3.makeprinter(obj) -- factory for functions to print on AS3 UI objects
See also:
3. Changes in as3 Lua module functions:
as3.tolua() is now variadic and passes through Lua values, also it
now accepts nil and no arguments
as3.type() now accepts nil and no arguments
as3.yield() was renamed to as3.flyield() to avoid confusion with
as3.class() was renamed to as3.newclass() to give way to sugar's as3.class.
4. Changes in Lua core library functions:
In Lua Alchemy some Lua core library function are overridden by default.
(If you wish, you're free to disable this override).
loadfile() and dofile() are changed to be able to load files,
embedded into current SWF.
print() is changed to output to trace.
5. Changes in AS3 interface to Lua Alchemy:
Lua as3 module functions no longer convert their arguments to Lua values.
Use as3.tolua() explicitly if you need such conversion.
lua_wrapper.setGlobal() doesn't do autoconversion to Lua type.
Added lua_wrapper.setGlobalLuaValue() to do this.
Added lua_wrapper.doFile() to run Lua file, added with Alchemy's
Added lua_wrapper.supplyFile() wrapper on Alchemy's supply file.
Added utility to automatically embed and supply files in specified
directory on build.
See new Rapid demo for example.
Introduced LuaAlchemy class to be used instead of lua_wrapper
low-level interface.
See also:
6. Demo changes:
Added MiniDemo as a minimalistic Lua Alchemy example
Added Rapid demo featuring auto asset adder -- as an example
for rapid development setup with Lua Alchemy
Removed demo help page in favor of using the wiki
7. Other changes:
Building Lua with -O2, posix and ansi
Setting _LUA_ALCHEMY Lua global variable with Lua Alchemy version
Provided optional global environment protection (off by default)
to aid with development in Lua.
A lot of internal implementation and tests refactoring and tuning
Also updated documentation:
Lua Alchemy v0.1a
Initial release