Return to Floodgap Retrotech
Plua was (in version 2.0, its final release)
an implementation of Lua
5.0.3 for the classic Palm OS (3.5
and up, including PalmOS 5 Garnet) written by Marcio Migueletto de Andrade.
Besides implementing a small onboard
IDE and the language itself, it could generate
executable PRCs that would run using a standalone runtime, or be
"cross-compiled" using a modified version of luac called
has disappeared from most of its former locations, including
Marcio's old site
and the Yahoo! Groups site that used to host it.
Plua was freeware, but was never open source. However,
by historical happenstance as the maintainer of the plua2c port
to Mac OS X, I retained the source code to that specific
component and recently made
64-bit fixes to it to allow development on my Raptor Talos II workstation.
I can't provide the source code due to my gentleman's agreement with Marcio,
which I still honour until permitted otherwise. Similarly, Marcio's license
prevents modification or patching of the runtime
or the built-in IDE, and I have been unable to contact him through any of
our previous methods. So, as a means to foster renewed
interest in what I think was one of the best
scripting environments for the Palm family, I've decided to start hosting
Plua myself along with issuing 64-bit compatible plua2c
binaries for my local systems in the spirit of the Mac OS X port.
Now that Garnet has virtually no commercial relevance, I'm hopeful that we may
be able to revamp Plua into an open-source version (with his permission, or
as a clean reimplementation) so that Palm
retrocomputing enthusiasts can continue to develop and work with it.
About Plua 2.0
Plua offers a nearly full range of GUI controls, graphics (including
turtle graphics and a
sprite engine), sound, networking, resource and file operations as shown in the
screenshot at right of a 100% Plua Gopher client running in Palm OS
Emulator 3.5. Notice the use of native controls, including pull-down menus.
The runtime can also be expanded with your own C-based
libraries to add additional custom functions. Programs can be developed
right on the Palm device itself.
A detailed language reference is included with the Plua distribution, or
you can read the Plua documentation here.
You should also read the FAQ, which includes important information on
Download Plua 2.0 for PalmOS
Download Plua (258K). This includes local copies of
the documentation as well as online help, the IDE and the runtime. The
PRCs can be installed with Palm Desktop or pilot-xfer. You
will also need to install MathLib (50K).
Here is an example of what Plua source
code looks like. This
example draws an animated fishtank using bitmap resources.
You can download that script (with resources) and other
(547K) to play with. These demonstrate Plua's graphics, UI, sound and
networking capabilities. For some of the examples you will need PilRC to
compile the resources; here is source code for
64-bit fixed PilRC (263K) suitable for
most modern platforms.
plua2c is the "cross-compiler" for Plua. It allows you to write Lua
code on your desktop machine and build the executable PRC on the same system;
you can then hotsync the binary over to a test device or run it in emulation.
The target device needs Plua2RT and MathLib installed.
Generated applications may be distributed under any license you want, along
with the unmodified runtime and any of your own libraries you may have
created. Read the license.
These binaries (except for the original Mac OS X Jaguar port) are for modern
64-bit systems. The choice of platforms purely represents what I use or have
access to, and I may add others in the future. Again, per my arrangement with
Marcio, currently I may only distribute binaries, not the source code. I do
not have the original plua2c binaries as I never used them personally.
Here are the usage instructions, which are the
same for all the ports. These zip archives contain bare binaries.
- 32-bit PowerPC Mac OS X
(46K). This build requires 10.2.8 or later and will run under Rosetta.
- 64-bit OpenPOWER Linux
(77K). This build runs on 64-bit little-endian Power ISA systems. It was
built on Fedora 34 using gcc 11.2.1 and
is the binary I use most of the time.
- 64-bit Windows
(78K). This build was cross-compiled on my Talos II workstation with
- 64-bit Intel macOS
(61K). This build was compiled on 10.14 with clang,
but may run on earlier versions.
As it is unsigned and not notarized, you may need to
adjust your system's security settings to run it for the first time. It
should run under Rosetta 2 on Apple Silicon machines.
Plua 1.1 and Plua
1.0 were the previous implementations of Lua for Palm OS, based on 4.0.
I do not have the source code for 1.x or its pluac, and it has
several bugs which were on purpose never fixed. It can be found on
the Wayback Machine for
They are primarily of most use where you are developing for a device that
is limited to Palm OS 3.1.
(especially if you're Marcio).