Recent from talks
Nothing was collected or created yet.
LiveCode
View on Wikipedia
| LiveCode | |
|---|---|
| Developer | LiveCode Ltd. |
| Initial release | July 11, 2001 |
| Stable release | 9.6.4
/ August 31, 2021[1] |
| Preview release | 9.6.5RC2
/ October 25, 2021[1] |
| Repository | |
| Operating system | macOS, Windows, Linux, Unix, Android, iOS, HTML5 |
| Type | Programming |
| License | GPL (until version 9.6.3),[2] Proprietary |
| Website | livecode |
| LiveCode Script | |
|---|---|
| Paradigm | Object-oriented |
| Family | scripting language |
| Developer | LiveCode, Ltd |
| First appeared | 1993 |
| Platform | i386, AMD64, ARM |
| OS | Windows, macOS, Linux, Unix, Raspberry Pi |
| License | Proprietary, GPL |
| Website | livecode |
| Influenced by | |
| HyperTalk | |
LiveCode (formerly Revolution and MetaCard[3]) is a cross-platform[4] rapid application development runtime system inspired by HyperCard. It features the LiveCode Script (formerly MetaTalk) programming language which belongs to the family of xTalk scripting languages like HyperCard's HyperTalk.[5][6]
The environment was introduced in 2001.[7] The "Revolution" development system was based on the MetaCard engine technology which Runtime Revolution later acquired from MetaCard Corporation in 2003.[8][9] The platform won the Macworld Annual Editor's Choice Award for "Best Development Software" in 2004.[10] "Revolution" was renamed "LiveCode" in the fall of 2010. "LiveCode" is developed and sold by Runtime Revolution Ltd., based in Edinburgh, Scotland. In March 2015, the company was renamed "LiveCode Ltd.", to unify the company name with the product. In April 2013, a free/open source version 'LiveCode Community Edition 6.0' was published after a successful crowdfunding campaign at Kickstarter.[11] The code base was re-licensed and made available as free and open source software with a version in April 2013.
LiveCode runs on iOS, Android, OS X, Windows 95 through Windows 10, Raspberry Pi and several variations of Unix, including Linux, Solaris, and BSD. It can be used for mobile, desktop and server/CGI applications. The iOS (iPhone and iPad) version was released in December 2010.[12][13] The first version to deploy to the Web was released in 2009.[14] It is the most widely used HyperCard/HyperTalk clone,[citation needed] and the only one that runs on all major operating systems.
A developer release of v.8 was announced in New York on March 12, 2015. This major enhancement to the product includes a new, separate development language, known as "LiveCode Builder", which is capable of creating new object classes called "widgets". In earlier versions, the set of object classes was fixed, and could be enhanced only via the use of ordinary procedural languages such as C. The new language, which runs in its own IDE, is a departure from the transitional x-talk paradigm in that it permits typing of variables. But the two environments are fully integrated, and apart from the ability to create new objects, development in LiveCode proceeds in the normal way, within the established IDE.
A second crowdfunding campaign to Bring HTML5 to LiveCode reached funding goals of nearly US$400,000 on July 31, 2014. LiveCode developer release 8.0 DP4 (August 31, 2015) was the first to include a standalone deployment option to HTML5.
On 31 August 2021, starting with version 9.6.4, LiveCode Community edition, licensed under GPL, was discontinued.[2]
Description
[edit]The LiveCode software creates applications that run in many supported environments, using a compile-free workflow. The same computer code in LiveCode can play across multiple devices and platforms. LiveCode uses a high level, English-like programming language called Transcript that is dynamically typed. Transcript and compile-free workflow generates code that is self-documenting and easy for casual programmers to comprehend. For example, if the following script was executed when the system clock was at 9:00:00 AM:
repeat ten times
put "Hello world at" && the long time & return after field 1
wait 1 second
end repeat
Ten lines will be loaded into the first text field. (denoted as "field 1"), and seen as:
Hello world at 9:00:00 AM Hello world at 9:00:01 AM Hello world at 9:00:02 AM ...
Notes:
repeat(and the associatedend repeat) is a control structure, illustrated here in just one of its various forms.putis a command"Hello World at"is a literalthe long timeis a function that calls the system timereturnis a constant equal to ASCII character 10 (linefeed)afteris a keyword that is involved with a system known as "chunking", a hallmark of xTalk languages.field 1is an object reference, here denoted by the layer number of a text field. Almost all standard object classes are supported, and may be referred to in several, highly-intuitive ways.
LiveCode's natural English-like syntax is easy for beginners to learn. Variables are typeless, and are typed at compile time based purely on context. This makes the language simple to read and maintain, with relatively minimal loss of speed. The language contains advanced features including associative arrays,[15] regular expressions, multimedia, support for a variety of SQL databases, and TCP/IP libraries. The LiveCode engine supports several common image formats (including BMP, PNG, GIF, and JPEG,), anti-aliased vector graphics, HTML-style text hyperlinks, chained behaviors and embedded web browsers. Accessing these higher-level functions is designed to be straightforward.
Examples
[edit]- To load the source code of a web page into a variable takes one line of code:
put url "http://www.wikipedia.com" into MyVariable
- Uploading a file to an FTP server uses similar syntax:
put url "binfile:picture.jpg" into url "ftp://john:passwd@ftp.example.net:2121/picture.jpg"
Depth
[edit]LiveCode has around 2,950 built-in language terms and keywords, which may be extended by external libraries written in C and other lower level languages.[16][17]
Outcomes
[edit]LiveCode project files are binary-compatible across platforms. They inherit each platform's look-and-feel and behaviors. Buttons, scroll bars, progress bars and menus behave as expected on the target platform without any intervention on the part of the one authoring a LiveCode application.
Compiling a LiveCode "standalone" produces a single, executable file (minimum size ~1.5MB) for each platform targeted. There is no separate runtime necessary.
The Wikipedia article on HyperCard contains a more detailed discussion about the basics of a similar development environment and scripting language. Modern LiveCode is a vast superset of the former HyperCard yet retains its simplicity. LiveCode includes a number of features missing from the original HyperCard program, including multiple platform deployment, communication with external devices and many fundamental language extensions. The LiveCode toolkit, as compared to HyperCard, has the ability to access internet-based text and media resources, which allows the creation of internet-enabled desktop applications.[18]
Compatibility
[edit]| Version | Macintosh | Windows | Linux |
|---|---|---|---|
| 9.x[19] | 10.9.x – 10.13.x Intel | 7, 2008, Windows 8.x, Windows 10.x (Desktop) | 32 or 64 bit, 32-bit ARMv6 (Raspberry Pi) glibc glib gtk/gdk lcms pango/xft gksu esd mplayer |
| 8.x[20] | 10.6.x – 10.12.x Intel | XP SP2+, 2003, Vista SP1+, 7, 2008, Windows 8.x, Windows 10.x (Desktop) | 32 or 64 bit, 32-bit ARMv6 (Raspberry Pi) glibc gtk lcms pango/xft gksu esd mplayer |
| 7.x[21] | 10.6.x – 10.9.x Intel | XP SP2+, 2003, Vista SP1+, 7, 2008, Windows 8.x, Windows 10.x (Desktop) | 32 or 64 bit, 32-bit ARMv6 (Raspberry Pi) glibc gtk lcms pango/xft gksu esd mplayer |
| 6.7.x[22] | 10.6.x – 10.9.x Intel | XP SP2+, 2003, Vista SP1+, 7, 2008, Windows 8.x, Windows 10.x (Desktop) | 2.4.x+ 32 bit X11R5 glibc 2.3.2 gtk lcms pango/xft gksu |
| 6.6.x[23] | 10.5.8 – 10.9.x Intel/PPC | XP SP2+, 2003, Vista SP1+, 7, 2008, Windows 8.x, Windows 10.x (Desktop) | 2.4.x+ 32 bit X11R5 glibc 2.3.2 gtk lcms pango/xft gksu |
| 6.0.x – 6.5.x[24] | 10.4.11 – 10.9.x Intel/PPC | XP SP2+, 2003, Vista SP1+, 7, 2008, Windows 8.x, Windows 10.x (Desktop) | 2.4.x+ 32 bit X11R5 glibc 2.3.2 gtk lcms pango/xft gksu |
| 5.x[25] | 10.4.11 – 10.8.x Intel/PPC | 2000 SP4, XP SP2+, 2003, Vista SP1+, 7, 2008 | 2.4.x+ 32 bit X11R5 glibc 2.3.2 gtk lcms |
| 4.6.x[26] | 10.4.11 – 10.8.x Intel/PPC | 2000 SP4, XP SP2+, 2003, Vista SP1+, 7, 2008 | 2.4.x+ 32 bit X11R5 glibc 2.3.2 gtk lcms |
| 4.5.x[27] | 10.3.9 – 10.8.x Intel/PPC | 2000 SP4, XP SP2+, 2003, Vista SP1+, 7, 2008 | 2.4.x+ 32 bit X11R5 glibc 2.3.2 gtk lcms |
| 4.0.x | ? | ? | ? |
| 3.x | ? | ? | ? |
| 2.6.x[28] | 10.2.7 – 10.6.x Intel/PPC, 9.2.2 PPC | 98, Me, NT, 2000, XP, Vista | 2.4+ 32 bit X11R5 glibc 2.2.4 gtk lcms |
iOS and Android targets are available in some versions.
Note: Complete Linux requirements for 4.5.x–6.x are the following:
- 32-bit installation, or a 64-bit Linux distribution that has a 32-bit compatibility layer
- 2.4.x or later kernel
- X11R5 capable Xserver running locally on a 24-bit display
- glibc 2.3.2 or later
- gtk/gdk/glib (optional – required for native theme support)
- pango/xft (optional – required for PDF printing, anti-aliased text and Unicode font support)
- lcms (optional – required for color profile support in JPEGs and PNGs)
- gksu (optional – required for elevate process support)
See also
[edit]References
[edit]- ^ a b "All LiveCode Downloads". livecode.com. LiveCode Ltd. Retrieved 31 August 2021.
- ^ a b "LiveCode | The home of LiveCode open source". Archived from the original on 31 August 2021. Retrieved 31 August 2021.
We have therefore taken the decision at this time to discontinue support for the open source editions of LiveCode. You can of course continue to use existing open source editions, and the code remains visible on github for viewing. The project will no longer accept contributions and we will not be maintaining it or offering open source downloads on our site.
- ^ MacNN: RunRev replaces Revolution with "LiveCode"
- ^ "PCWorld: Development Tool for Mac OS X and Vista". Archived from the original on 25 December 2011.
- ^ Shafer, Dan (2004). "Review: Runtime Revolution, Programming for Mere Mortals". MacTech. 20 (5).
Revolution ... grows out of HyperCard, a much-beloved and widely used Apple Computer product that the company abandoned a few years ago....
- ^ Manchester, Phil (27 December 2007). "HyperCard on steroids: One code to bind them all". The Register.
- ^ "Macworld: Runtime releases Revolution 1.1 for OS X". Retrieved 12 March 2024.
- ^ "Macworld: Runtime Revolution acquires MetaCard technology". Retrieved 12 March 2024.
- ^ "Runtime Revolution Acquires MetaCard Technology". 8 July 2003. Archived from the original on 3 February 2004.
- ^ "The 19th Annual Editor's Choice Awards". Macworld. 2004.
HyperCard, with its stacks metaphor, has a new heir in Runtime Revolution's Revolution Studio 2.1
- ^ "Next Generation LiveCode (Open Source)". 30 July 2014.
- ^ Serignese, Katie (6 December 2010). "Runtime Revolution releases iOS deployment pack". Retrieved 12 March 2024.
- ^ Ranscombe, Peter (7 December 2010). "RunRev sets sights on £1m sales boost with release of LiveCode". The Scotsman.
- ^ Miller, Kevin (22 April 2009). "Will an easy to use language attract content experts?". WWW2009 Conference Paper.
- ^ Tutorial: Using Arrays in LiveCode
- ^ Monroe, Tim (2003). "Children of the Revolution: Editing QuickTime Movies in Revolution". MacTech. 19 (10).
Happily, Runtime Revolution provides a software development kit (SDK) for writing Revolution plug-ins, and this makes writing our plug-in a snap.
- ^ Waddingham, Mark (4 October 2007). "Writing Externals for Linux with 2.9". Runtime Revolution Newsletter. Runtime Revolution, Ltd.
- ^ Gaskin, Richard (20 September 2001). "Beyond the Browser, Rediscovering the Role of the Desktop in a Net-centric World". Fourth World Embassy Articles. See Section 5. Tools for Creating Net Apps.
- ^ "LiveCode 9.5.0 Release Notes" (PDF). livecodestatic.com. Retrieved 12 March 2024.
- ^ "Archived copy" (PDF). Archived from the original (PDF) on 22 December 2015. Retrieved 1 September 2015.
{{cite web}}: CS1 maint: archived copy as title (link) - ^ "LiveCode 7.0.0 Release Notes" (PDF). livecodestatic.com. Retrieved 12 March 2024.
- ^ "LiveCode 6.7.0 Release Notes" (PDF). livecodestatic.com. Retrieved 12 March 2024.
- ^ "LiveCode 6.6.5 Release Notes" (PDF). livecodestatic.com. Retrieved 12 March 2024.
- ^ "LiveCode 6.5.2 Release Notes" (PDF). runrev.com. Retrieved 12 March 2024.
- ^ "LiveCode 5.5.0 Release Notes" (PDF). runrev.com. Retrieved 12 March 2024.
- ^ "LiveCode 4.6.0 Release Notes" (PDF). runrev.com. Retrieved 12 March 2024.
- ^ "LiveCode 4.5.0 Release Notes" (PDF). runrev.com. Retrieved 12 March 2024.
- ^ "Livecode User Guide" (PDF). Archived from the original (PDF) on 21 December 2012. Retrieved 1 May 2013.
Bibliography
[edit]- Lavieri, Edward. LiveCode Mobile Development HOTSHOT
- Holgate, Colin. LiveCode Mobile Development Beginner's Guide
- Schonewille, Mark. Programming LiveCode for the Real Beginner
- Shafer, Dan. Revolution: Software At The Speed Of Thought, Volume 1 (Runtime Revolution Ltd, 2003)
- Wang, Wallace. Beginning Programming For Dummies, 4th Edition
External links
[edit]LiveCode
View on GrokipediaHistory
Origins and Early Development
Runtime Revolution Ltd. was incorporated on October 13, 1999, in Edinburgh, Scotland, by Kevin Miller and a small team of developers with the goal of creating accessible cross-platform software tools.[8] The company, led by Miller as CEO, initially focused on building upon existing technologies to develop a modern rapid application development (RAD) environment.[9] This effort culminated in the release of the software known as Revolution in 2001, which served as an integrated development environment emphasizing ease of use for creating applications across multiple desktop platforms, including Windows, macOS, and Linux.[10] Revolution's foundations trace back to earlier hypermedia and scripting technologies, particularly Apple's HyperCard, released in 1987, and its associated HyperTalk language from the late 1980s.[2] MetaCard, a commercial HyperCard clone developed by MetaCard Corporation and first commercially released in June 1992, provided the core engine for Revolution, with its MetaTalk scripting language—debuting around 1993—evolving into what would become LiveCode Script.[11] In July 2003, Runtime Revolution acquired MetaCard's technology and intellectual property, allowing full integration and further enhancement of the platform without reliance on the original vendor.[12] From its inception, Revolution positioned itself as a direct successor to HyperCard, targeting non-programmers through an English-like scripting syntax that simplified complex tasks like GUI design and multimedia integration.[2] This approach enabled rapid prototyping and deployment of cross-platform applications, filling a gap left by HyperCard's discontinuation and the limitations of more traditional programming languages. Early versions prioritized desktop environments, supporting seamless development and execution on Windows, macOS, and Linux without requiring code recompilation for each platform.[13]Key Milestones and Recent Updates
In 2010, the product formerly known as Runtime Revolution was renamed to LiveCode to better reflect its focus on live scripting and cross-platform development.[4] The company behind it, Runtime Revolution Ltd., underwent a rebranding to LiveCode Ltd. in March 2015, aligning its corporate identity more closely with the product's name.[4] A significant shift occurred in April 2013 with the launch of the open-source LiveCode Community Edition (version 6.0), funded through a successful Kickstarter campaign that raised £493,795 from 3,342 backers to support educational access and community-driven enhancements.[14][15] This edition, licensed under GPLv3, facilitated free development until its discontinuation on August 31, 2021, with the release of version 9.6.4, after which maintenance ceased and the codebase was archived on GitHub.[6][16] The introduction of HTML5 deployment in 2015 marked a major expansion for web-based applications, enabled by a 2014 crowdfunding campaign on the company's platform that met its $395,000 goal and raised approximately $400,000 to port the engine to browser environments.[17][18] Concurrently, the first developer preview of version 8.0, announced on March 12, 2015, introduced LiveCode Builder, a new C++-based language for creating custom widgets and extensions to integrate platform-specific APIs.[19] Version progression continued with stable release 9.6.4 on August 31, 2021, coinciding with the Community Edition's end; this was followed by 9.6.5 RC-2 on October 25, 2021, adding Android App Bundle support for Google Play compliance.[6][20] In 2023, version 9.6.9 stable arrived on April 10, incorporating over 75 features, bug fixes, and security updates, including Android API 31 support and Xcode 14.2 compatibility. The LiveCode 10 series began with the stable release of version 10.0 on October 9, 2024.[21][22] Recent updates in 2025 have focused on modern platform support and new tools. LiveCode Classic 10.0.1 stable was released on April 17, enabling iOS builds with any Xcode version from 12.4 onward.[23] Version 10.0.2 stable followed on June 13, with further refinements.[24] On August 21, 10.0.3 RC-1 introduced Android API 35 support, Xcode 15 compatibility, iOS 17 enhancements, and fixes for macOS Sonoma issues like menus and date/time controls.[25] On October 27, 2025, version 10.0.3 RC-2 was released, enhancing Google Play Store compliance with further Android API 35 support and bug fixes.[26] Additionally, LiveCode Create, a web-based IDE for cross-platform editing, advanced with developer preview 7 (DP-7) in June 2025 and DP-8 in August 2025, emphasizing deployment and datastore improvements.[24][25]LiveCode Script
Core Syntax and Structure
LiveCode Script is a dynamically typed, object-oriented scripting language that belongs to the xTalk family of languages, which includes HyperTalk from Apple's HyperCard as a foundational influence.[27] This heritage gives it an English-like syntax designed for readability and accessibility, enabling developers to write procedural code with familiar constructs similar to those in languages like English prose or early multimedia scripting environments.[28] At its core, LiveCode Script operates on a message-passing paradigm, where the system sends messages in response to events—such as user interactions or system triggers—and scripts define handlers to process these messages.[29] For instance, a common event handler might respond to a mouse click with the structureon mouseUp ... end mouseUp, allowing the script to execute specific actions like updating interface elements or performing calculations.[30]
The basic structure of LiveCode Script revolves around attaching scripts to objects within a hierarchical, stack-based model, where stacks serve as containers for cards, and cards hold interactive elements like buttons, fields, and groups.[29] This object hierarchy defines the message path: when an event occurs, the message starts at the originating object and travels upward through parent objects (e.g., from a button to its card, then to the stack) until a handler intercepts and processes it, or it reaches the engine level. Scripts are written directly in the object's script editor and consist of handlers, commands, and control structures; for example, the put command assigns or outputs values to variables or containers, as in put "Hello" into field "Greeting", while set modifies object properties, such as set the text of [button](/page/Button) "Submit" to "Done". Control flow is managed through structures like repeat, enabling loops for iteration, as shown in this example for repeating an action three times:
repeat with i = 1 to 3
put "Iteration" & i into field "Log"
end repeat
repeat with i = 1 to 3
put "Iteration" & i into field "Log"
end repeat
put "user input" into tName, while an array could map keys to values as put "red" into tColors["primary"].[32] Operators support arithmetic operations (e.g., + for addition, as in put 5 + 3 into tSum), string concatenation (&), comparisons (=, <), and logical evaluations (and, or). Unlike compiled languages, LiveCode Script executes interpretively, parsing and running code directly at runtime without a separate compilation phase, which facilitates rapid prototyping and live modifications during development.[33]
Advanced Language Features
LiveCode Script supports advanced data structures including arrays, which can be multidimensional or associative, allowing developers to manage complex datasets efficiently. Multidimensional arrays enable grid-like storage, such as a two-dimensional array for tabular data, while associative arrays use string keys for flexible indexing beyond numerical positions. Lists provide ordered collections for sequential data handling, and binary data support facilitates processing non-textual content like images or files directly in strings marked with the "*b" indicator. For pattern matching, thefilter command integrates regular expressions to selectively process lines, items, or elements in containers, enabling operations like extracting email addresses from text via regex patterns such as [\w\.-]+@[\w\.-]+\.\w+.
Multimedia capabilities in LiveCode Script include built-in commands for handling images, audio, and video. The import command loads graphics into image objects from various formats, supporting bitmap pictures for visual elements. Audio playback is managed through the play command for sounds or the play file command for external audio files, with options to control rate and synchronization using properties like playRate. Video and animations leverage player objects, where commands like play video handle playback, pausing, and stepping through media clips.
Database integration is provided via the Database library, formerly known as revdb, which supports SQL operations across engines like MySQL, PostgreSQL, and SQLite. The revExecuteSQL command executes queries for inserts, updates, or deletes, while revDataFromQuery retrieves records into arrays, streamlining data persistence without external dependencies. Networking features encompass TCP/IP sockets opened with the open socket command for low-level connections and HTTP requests via the put command into URLs, which handles GET/POST operations with customizable headers. JSON and XML parsing are facilitated by built-in functions jsonEncode and jsonDecode (introduced in 2024 for faster engine-level performance) and dedicated libraries: the JSON Library offers additional capabilities for converting between LiveCode values and JSON strings, supporting UTF-8 encoding; the XML Library provides tree-based parsing with functions like revXMLCreateTreeFromFile for structured document handling.[34]
Error handling in LiveCode Script uses a try-catch construct with the try, catch, and end try keywords to trap execution errors and execute alternative code paths. Custom handlers can intercept errors via the errorDialog message or by locking error dialogs with lock error dialogs, allowing programmatic recovery without default UI interruptions. For modularity, custom functions and commands are defined as handlers within scripts, and libraries are created by designating stacks with start using to encapsulate reusable code across applications.
Development Environment
Integrated Tools and Workflow
The integrated development environment (IDE) of LiveCode provides a visual stack editor centered around the Canvas Area, where developers design user interfaces by dragging and dropping widgets such as buttons, fields, and cards from the Tools Palette.[35] This drag-and-drop approach enables rapid prototyping of stack-based applications, with the Project Browser offering a hierarchical view for navigating and managing objects across cards and substacks.[35] Complementing the visual tools is an integrated script editor that supports syntax highlighting for keywords and variables, auto-indentation for code alignment, autocomplete suggestions for LiveCode Script elements, and real-time error checking to identify syntax issues during development.[36] LiveCode's workflow emphasizes compile-free development, allowing developers to edit scripts or UI elements and immediately test changes in run mode without compilation steps, facilitating an iterative process of design, coding, and refinement.[1] The Property Inspector panel, accessible upon selecting an object, provides a dedicated interface for modifying attributes such as appearance (e.g., colors, fonts, positions), behavior (e.g., states like focused or disabled), and data bindings to variables or sources, with changes reflected instantly in previews.[37] For runtime debugging, tools like the Message Watcher monitor incoming messages to objects, while the Variable Watcher tracks global and local variable states during execution, enabling efficient troubleshooting without halting the application. Prototyping is supported through built-in preview modes, including a simulator for desktop and mobile interfaces that launches the app in a live environment to test responsiveness and interactions across screen sizes. Version control integration with systems such as Git is possible through external tools or by exporting project elements manually for diffing and merging. Stack files, saved with the .livecode extension, use a binary format that ensures compatibility across all supported platforms, allowing seamless sharing and opening of projects without format conversion. As of November 2025, the primary IDE is LiveCode Create, which is in developer preview (version dp-8), while LiveCode Classic remains available for ongoing development and deployment.Extension Development with LiveCode Builder
LiveCode Builder (LCB) is a specialized programming language introduced in LiveCode 8.0 in May 2016, designed to enable developers to create custom extensions for the LiveCode engine, including widgets and libraries that extend core functionality at the system level.[38] Unlike standard LiveCode Script, LCB emphasizes strict type handling, modular structure, and integration with native code, allowing for the development of high-performance components such as custom user interface elements or computational libraries.[39] This extensibility feature addresses limitations in scripting by permitting direct access to engine internals and external APIs, facilitating the creation of reusable, engine-embedded modules.[40] The syntax of LiveCode Builder closely resembles LiveCode Script but incorporates systems-oriented enhancements for robustness and efficiency. It supports optional static typing for variables, parameters, and return values, with core types includingBoolean, Integer, Real, String, Data, List, and Array, alongside a flexible any type for dynamic usage.[39] Modules form the building blocks, organized in reverse DNS naming conventions (e.g., com.example.myWidget), and contain public or private declarations for constants, types, variables, and handlers. Handlers define behavior with explicit input/output parameters (e.g., in, out, inout) and can bind to foreign functions in languages like C via the foreign handler syntax, enabling seamless integration with platform-specific libraries for tasks requiring low-level access.[39] For instance, a simple widget module might declare its type and implement core events like on create for initialization or on paint for rendering:
module community.livecode.example.simpleWidget
public type SimpleWidget
public handler SimpleWidget.onCreate()
// Initialization logic here
end handler
public handler SimpleWidget.onPaint(pSurface as [Canvas](/page/Canvas), pRect as [Rectangle](/page/Rectangle))
// Drawing code using the [canvas API](/page/API)
canvas.drawLine pSurface, point(0,0), point(100,100)
end handler
end module
module community.livecode.example.simpleWidget
public type SimpleWidget
public handler SimpleWidget.onCreate()
// Initialization logic here
end handler
public handler SimpleWidget.onPaint(pSurface as [Canvas](/page/Canvas), pRect as [Rectangle](/page/Rectangle))
// Drawing code using the [canvas API](/page/API)
canvas.drawLine pSurface, point(0,0), point(100,100)
end handler
end module
.lcb files within the LiveCode IDE's Extension Builder tool, which provides templates, syntax highlighting, and compilation support. Developers declare the extension type (widget or library) and identifier at the module level, import necessary APIs (e.g., com.livecode.canvas for graphics or com.livecode.[engine](/page/Engine) for core interactions), and implement event handlers tailored to the extension's purpose, such as geometry changes or data exchange with LiveCode stacks.[40] The IDE compiles the LCB source to platform-agnostic bytecode bundled in a .livecodescript resource, which is then packaged into a .lce file for distribution and integration—extensions can be loaded dynamically into stacks via commands like widget add or installed globally through the Extension Store. Cross-compilation is supported across LiveCode's platforms (desktop, mobile, server), with the engine handling runtime execution, though foreign bindings may require platform-specific adjustments.[40] Testing occurs directly in the IDE by simulating the extension in a preview stack, allowing iterative refinement before final packaging.[40]
Common use cases for LiveCode Builder extensions include performance-critical applications where scripting alone is insufficient, such as implementing advanced data visualizations (e.g., interactive charts with real-time updates) or hardware integrations (e.g., custom sensor interfaces via native APIs). For compute-intensive tasks like 3D rendering, developers can create widgets that offload processing to bound C libraries, achieving native-like speeds while maintaining LiveCode's cross-platform deployment. Libraries extend non-visual functionality, such as optimized mathematical routines or database connectors not natively supported. These extensions enhance the engine's capabilities without altering core code, promoting a modular ecosystem for specialized needs.[40]
Platform Support
Supported Platforms and Compatibility
LiveCode supports a wide range of desktop operating systems for both running the integrated development environment (IDE) and deploying standalone applications. On macOS, the IDE and engine are compatible with versions from 10.9 (Mavericks) through 15.x (Sequoia), including native support for Apple Silicon M1 and later processors introduced in LiveCode 9.6.8 and continued in version 10. Recent updates in LiveCode 10 address specific compatibility issues, such as menu rendering and date/time item display on macOS Sonoma and later, with general support for Sequoia reported as of 2025 though some features may require workarounds.[41] For Windows, support extends to versions 7, 8.x, 10, and 11, with both 32-bit and 64-bit builds available, including 32-bit compatibility via the WoW layer on 64-bit systems. Linux compatibility covers major modern distributions requiring glibc 2.13 or later and GTK/GDK 2.24 or later for graphical interfaces, such as recent Ubuntu, Fedora, and Debian releases; various Unix variants, such as those based on BSD or Solaris, are also supported through the engine's Unix underpinnings. Additionally, LiveCode enables server-side scripting deployment on Linux and Unix-based servers without a graphical interface. The latest release, LiveCode 10.0.3 RC-2 (October 2025), includes enhancements for platform stability.[26] For mobile platforms, LiveCode provides robust support for iOS and Android app development and deployment. iOS compatibility includes devices running up to iOS 18, with LiveCode 10.0.2 (April 2025) introducing support for iOS SDK 18.2 and Xcode 15 and later versions (from 12.4 onward for broader compatibility), allowing builds that meet Apple's App Store requirements as of 2025.[23] Android support in LiveCode 10.0.3 RC-2 (October 2025) targets API level 35 (Android 15), ensuring compliance with Google Play Store policies effective August 31, 2025, and includes updates to use Java 11 or later instead of requiring Java 8. Deployment to mobile platforms requires a Mac for iOS builds but supports Mac, Windows, and Linux hosts for Android. Beyond traditional desktop and mobile, LiveCode extends to web and embedded environments. HTML5 deployment has been available since the first alpha release in August 2015, enabling standalone web applications that run in modern browsers without plugins, leveraging JavaScript integration for enhanced interactivity. Raspberry Pi devices are supported via Linux ARM builds, allowing both IDE operation (on compatible distributions) and standalone app deployment for embedded projects. A key advantage of LiveCode's platform support is that deployed applications are fully standalone, requiring no separate runtime or installation beyond the target OS, which simplifies distribution across all supported platforms. LiveCode maintains strong backward compatibility, ensuring that stacks and scripts created in earlier versions (from 1.0 onward) can be opened, edited, and deployed without modification in current releases like version 10, preserving developer workflows over time. Version-specific updates, such as those in LiveCode 10 for macOS Sonoma menu fixes, iOS 18 support, and Android API 35 compliance, focus on enhancing stability and adherence to OS vendor requirements while avoiding breaking changes to core functionality.Deployment and Distribution Options
LiveCode applications are built into standalone executables directly from the integrated development environment (IDE) by selecting the "Save as Standalone Application" option in the File menu, where developers configure settings such as the product name, file description, and target platform before generating the output.[42] These executables have a compact footprint, typically starting around 10-16 MB for basic applications, embedding the LiveCode engine and required resources without additional runtime dependencies.[43] For platforms requiring code signing, such as iOS, developers must integrate Apple provisioning profiles obtained from the Apple Developer Portal to enable distribution and device installation.[44] Deployment formats include native binaries tailored to specific platforms: executable files (.exe for Windows, .app for macOS, binaries for Linux), APK packages for Android, and IPA files for iOS, allowing seamless execution on desktop and mobile devices.[42] For web-based applications, LiveCode supports HTML5 output, which compiles the app into JavaScript and HTML5-compatible code runnable in modern browsers without plugins.[45] Additionally, backend scripts can be deployed to servers using the LiveCode Server engine, supporting CGI processing, API middleware, and database interactions for web services.[46] Distribution options encompass submission to major app stores like the Apple App Store and Google Play for native mobile apps, web hosting services for HTML5 builds, and direct sharing of self-contained desktop executables via downloads or installers.[47] LiveCode's commercial licensing model enables unlimited distribution without royalties or per-device fees, facilitating broad deployment for both personal and enterprise applications.[48] Recent enhancements include LiveCode 10.0.1 (released April 2025), which removes Xcode version dependencies for iOS builds, allowing compatibility with any Xcode from version 12.4 onward to support iOS targets up to 18.[23] For Android, updates in LiveCode 10.0.3 RC-2 (October 2025) added support for API level 35 and improved JDK 11+ detection on Windows, ensuring compliance with Google Play Store requirements for new apps and updates targeting Android 15.[26]Applications and Impact
Common Use Cases and Examples
LiveCode finds extensive application in educational environments, where its intuitive scripting enables the creation of interactive simulations and e-learning tools that teach computational thinking without requiring prior coding experience. At Brigham Young University, instructors used LiveCode in introductory programming courses for non-technical majors in fields like humanities, linguistics, and education as of 2015, allowing students to build custom applications tailored to their career needs, such as teaching aids or data analysis tools for research.[49][50] This approach has led to increased student engagement, with some participants advancing to advanced projects or altering their professional paths based on acquired skills.[50] Additionally, organizations like OneBillion.org have developed gamified educational apps with LiveCode, achieving 2 million downloads and ranking #1 on app stores while advancing learning outcomes by up to 18 months in six weeks for disadvantaged children.[51] In business contexts, LiveCode supports the rapid development of database front-ends, interactive kiosks, and multimedia presentations, leveraging its cross-platform capabilities for efficient deployment. For example, ScreenSteps, a knowledge management platform built with LiveCode, serves companies from small businesses to Fortune 500 enterprises by enabling customizable training modules and documentation tools.[51] Similarly, KLM's flight booking system, powered by LiveCode, processes over 70,000 daily reservations for 28 million annual passengers, demonstrating its reliability in high-volume data handling and user interfaces.[51] These applications often include custom CRM systems or reporting tools, where LiveCode's English-like syntax accelerates prototyping and iteration for non-specialist developers.[51] For mobile development, LiveCode excels in prototyping iOS and Android applications, particularly for data collection utilities and casual games, building on its heritage as a successor to HyperCard for card-based, stack-oriented user interfaces that facilitate quick visual iterations. The Gluggy app, developed for sole traders to manage invoices and expenses, was created rapidly with LiveCode to incorporate user feedback and deploy across platforms.[51] In gaming, Industrial Toys' Midnight Rises achieved over 600,000 downloads and top-5 App Store ranking within three months of development, highlighting LiveCode's efficiency for multimedia-rich mobile prototypes.[51] A representative example of LiveCode's rapid application development strengths is a button script that dynamically builds a list from user input, showcasing how minimal code can handle events and update interfaces iteratively. In a stack with an input field named "InputField" and a list field named "ListField", the button'smouseUp handler might use the following script:
on mouseUp
put the text of field "InputField" into tNewItem
if tNewItem is not empty then
put tNewItem & return after the text of field "ListField"
put empty into field "InputField" -- Clear input for next entry
end if
end mouseUp
on mouseUp
put the text of field "InputField" into tNewItem
if tNewItem is not empty then
put tNewItem & return after the text of field "ListField"
put empty into field "InputField" -- Clear input for next entry
end if
end mouseUp
