Monday, October 02, 2006

I'm posting this here rather than in my tech blog because the significance is much broader than it might at first appear.

Adobe Lightroom is a major development from a leading software firm. It turns out that about 40% of it is written in "Lua", something I'd never heard of. Adobe did this so they could write code that would run on both OS X and Windows (Credit: Daring Fireball). Ok, so what's big here?

A few things. One, Lua was developed in Brazil, and the web site has both Portugese and English versions. So, globalization. Two, open source. Three, adoption speed. Four, for the geeks among us, Lua supports software who's behavior is configured and controlled by accessible data stores -- it's adaptive in a way that's big in software now (sometimes called model-driven computing) but is as old Lisp/Smalltalk etc. And, oh, yes, bytecode again.

The world, speed, winning by giving things away, adaptive software. That's the bright side of the 21st century .... (emphases mine)

Lua is a powerful light-weight programming language designed for extending applications. Lua is also frequently used as a general-purpose, stand-alone language. Lua is free software.

Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode for a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping.

A fundamental concept in the design of Lua is to provide meta-mechanisms for implementing features, instead of providing a host of features directly in the language. For example, although Lua is not a pure object-oriented language, it does provide meta-mechanisms for implementing classes and inheritance. Lua's meta-mechanisms bring an economy of concepts and keep the language small, while allowing the semantics to be extended in unconventional ways. Extensible semantics is a distinguishing feature of Lua.

Lua is a language engine that you can embed into your application. This means that, besides syntax and semantics, Lua has an API that allows the application to exchange data with Lua programs and also to extend Lua with C functions. In this sense, Lua can be regarded as a language framework for building domain-specific languages.

Lua is implemented as a small library of C functions, written in ANSI C, and compiles unmodified in all known platforms. The implementation goals are simplicity, efficiency, portability, and low embedding cost. The result is a fast language engine with small footprint, making it ideal in embedded systems too.

Lua is designed and implemented by a team at PUC-Rio, the Pontifical Catholic University of Rio de Janeiro in Brazil. Lua was born and raised at Tecgraf, the Computer Graphics Technology Group of PUC-Rio, and is now housed at Lua.org. Both Tecgraf and Lua.org are laboratories of the Department of Computer Science.

'Lua' means 'moon' in Portuguese and is pronounced LOO-ah.

There's something really stunning about all this ... But maybe that's just me.