Lists the changes that were made between releases.
Release 2.0.1 (27-Jan-2016)
- Fix: License Tool improvement.
Release 2.0.0 (25-Jan-2016)
Release 1.2.2 (30-April-2012)
- Fix: Disable a unit test that crashes LabVIEW versions >= 2009 because of a LabVIEW
bug in those versions when dealing with undefined Motion refnums.
Release 1.2.1 (31-Oct-2005)
- Fix: workarounds for changed behaviour of VI references under LabVIEW 8.0.
- Fix: with LabVIEW running in evaluation mode, Lua for LabVIEW resolved
paths improperly and disabled edit actions in the mistaken belief that it was
running as part of a built application.
- Fix: path resolution for built applications is now adaptive so that it
works not only when including all VIs into the executable, but also when building
a minimal executable that loads the Lua for LabVIEW VIs from an external source tree.
Release 1.2.0 (27-Jun-2005)
- New: to provide a more complete example, the distribution now
includes a client-server application
framework as an optional install.
- New: the
now allows a table specifying a date/time as an optional parameter. When
specified, it returns the corresponding time in seconds instead of the
- New: when specifying "<dir>" as the argument of
pre-processor keyword, the directory containing the script will be used for
the class name.
- New: it is now possible to specify an error handler for a running task via the --#handler
- New: errors of running tasks can be logged by
setting the "task error logger" configuration
- New: when exiting LabVIEW, any remaining tasks are sent stop and
- Change: the preprocessor was a made a bit more strict so that it
works precisely as documented: lines containing keywords must start with
"--#". Before this change it accepted additional characters
between the two dashes and the hash. Since it no longer does, you can now
disable a keyword by adding another dash, thereby in effect commenting it
now make use of custom dialogs because the standard "One Button
Dialog" and "Two Button Dialog" block the user interface
thread, thereby potentially postponing operations involving VI loading and
- Improved: the
functions provided by Lua use the
srand() C- library
functions. Because these have a platform-dependent behaviour and do not
maintain state per VM instance, they were re-implemented with a
twister that does maintain state per VM instance.
- Fix: the application builder defaulted to removing the front panels
of task VIs (named "re_LuaVIEW Task (*).vi"). Though task VIs do
not use a front panel, the lack of some associated data structure appears to
break the "Run VI" method, and thus task running for built
applications. The application builder can be manually instructed to not
remove panels of selected VIs, but a more convenient solution was found by
including a dummy panel reference in each task VI. This causes the
application builder to default to not removing the panel. (thanks to Andy
Release 1.1.0 (27-Jul-2004)
New: support for Mac OS X. Note that some example scripts
contain paths that need adjustment in order to run on the Mac. Also, the
function always returns zero, at least under LabVIEW 7.0 for Mac OS X: the
DSMemStats manager function does not work
New: the script or scripts of a task can be replaced
on-the-fly using task swapping
functionality. This can be done manually
via the "Task Manager" or programmatically via the new Swap
Task API VI or
New: using the
function, scripts can print to a private print buffer. The content of
the print buffer can be retrieved using
The Poll Print Buffer API VI
can be used to read a print buffer for display purposes, as is done by
the print console that opens when using the new
"Print Console" button of the "Task Manager".
New: miscellaneous functions:
Improved: documentation. Extended FAQ,
reworked introductory information in
the manual, added an appendix
Change: an unlimited number of elements can be pushed onto the
Lua stack from LabVIEW: the stack is grown as needed. Before, the limit was twenty
for an un-grown stack.
Change: the pre-processor no longer allows task identifiers
consisting only of decimal digits. This avoids conflict with
auto-assigned identifier numbers.
Fix: very rarely, tasks would not respond to a delegated
signal. Caused by a race condition in LabVIEW <= 7.1 that can make "Wait on Occurrence"
time out in spite of an occurrence having been set. Circumvented by not
relying on the "timed out" output. For the same reason, the
result of the
function has been deprecated.
Fix: when a Lua function with one or more parameters was
located inside a table, it could not be called from LabVIEW.
Release 1.0.1 (13-May-2004)
- Fix: Under LabVIEW 7.1, the function registry did not clean itself
up when trying to exit LabVIEW: the application exit event can get eaten
before arrival when a different event structure also handles it, even when
the respective VI is not running.
Release 1.0.0 (23-Apr-2004)
New: Lua can be
called from LabVIEW using the Call
New: expression evaluation and
data to/from text examples.
New: the Revoke
Exports API VI makes it possible to call-protect a module that must
perform cleanup actions that leave its export functions in an
un-callable state. See the updated module template and example scripts for
New: easy message/reply synchronous actions via the Incite
advanced API VI or the
New: support for coroutines with the restriction that LabVIEW
cannot be called from a coroutine.
New: most flavours of refnum can be pushed or pulled as flat
New: optional include cluster order input for Push
New: a mandatory import script can be configured to execute as
the first action of any task.
New: miscellaneous functions:
Improved: to enable the use of lots of tasks, task
instantiation overhead was reduced: CPU
overhead by a factor of four, memory overhead by an order of magnitude to
roughly 70k per instance.
Change: the pre-processor
is more picky and will throw errors when encountering ill-formatted
keywords. Placing keywords in the script header is now mandatory.
Change: to select an execution system other than
"standard" and priority other than "normal priority"
for a task, a set of allowed choices must be configured
allows priority and execution system selection to work for built
applications as well.
Change: to reduce VI-hierarchy clutter, selected VIs
were marked as system VI. Lua for LabVIEW function VIs can be marked as system VI when
editing their documentation.
Fix: under LabVIEW 7.0, the abort VI method does not time out
when the VI being aborted is in a (rare) non-abortable state. To add insult to
injury, LabVIEW pops up a modal dialog that blocks both the user interface
thread and the calling VI. To circumvent this bug, the
task killing functionality was enhanced to first try some alternatives and perform a safety check before resorting to the
use of the abort VI method. Also, killing was moved to a
reentrant VI to avoid contention. For the same reason, the
function was made reentrant.
Release 1.0 pre 2 (19-Feb-2004)
New: support for passing enums, paths, and compound data types
(arrays, clusters, variants) between
LabVIEW and Lua. The data
types documentation was updated to detail this new functionality.
New: Private registration of function VIs. Available via the Register
Private Function and Register
Private Function Directory API VIs as well as the corresponding
New: Get Object Attribute advanced API VI.
Change: the module and plug-in VI templates as well as the bootstrap
facility were updated to make use of the new cluster passing
capability. The corresponding configuration table parameters of
call_plugin were made optional instead of mandatory.
Change: checking of Boolean arguments to LabVIEW-side functions
was made strict: a Boolean type is now required on the Lua side whereas
previously any type, with the standard conversions for Boolean
expressions (nil == false, etc.) applied, was allowed.
Change: forced "C" locale instead of retaining system
locale. This ensures that Lua will behave consistently with respect to
number formatting and allowed characters in identifiers, irrespective of
the system language/locale settings.
Fix: Pulling a string no longer truncates it when there is a
null character (it was treated as a C string). Both Lua and LabVIEW strings can hold arbitrary 8 bit
character values, so this should not have been.
Fix: CIN failed to load on some (e.g. Red Hat 7.3) Linux
installations. It could
not dynamically link to the older libc present on there. Resolved by
statically linking with libc (thanks to Germán
Release 1.0 pre 1 (8-Dec-2003)
Go to the Lua for LabVIEW home page