||This article for grammar, style, punctuation, use of undefined acronyms may require cleanup to meet Wikipedia's quality standards. (February 2011)|
Lazarus IDE 1.0 running on Mac OS X
|Developer(s)||Volunteers (Lazarus Team)|
|Stable release||1.2.6 / October 12, 2014|
|Written in||Object Pascal|
|Operating system||Cross-platform, including Linux, Mac OS X, Microsoft Windows, FreeBSD, Solaris|
|Platform||ARM, IA-32, PowerPC|
|Type||RAD tool for Pascal and Object Pascal|
|License||GNU General Public License, GNU Lesser General Public License, and others|
Lazarus is a free cross-platform visual integrated development environment (IDE) for rapid application development (RAD) using the Free Pascal compiler, which supports dialects of Object Pascal, to varying degrees. Software developers use Lazarus to create native-code console and graphical user interface (GUI) applications for the desktop, and also for mobile devices, web applications, web services, visual components and function libraries (.so, .dll, etc., for use by other programs). The Free Pascal compiler supports a number of different platforms, such as Mac, Linux and Windows.
Lazarus inherits three features from its use of the Free Pascal compiler: compile and execution speed, and cross-compilation. The Free Pascal compiler benefits from the Pascal language structure and the steady advancements of the Pascal compiler design (spanning several decades) to compile large applications quickly, often in a matter of seconds. When compiling reference programs for performance metrics, Lazarus produces programs that exhibit near or similar performance when compared with the same programs written in C.
An application that developers create using Lazarus on one platform can potentially compile and execute on any platform for which a Free Pascal compiler exists. The usual caveats of the limitations of the target platform apply; however, for desktop applications a single source can target Mac, Linux, and Windows, usually with no modification (or very little modification). An example application is the Lazarus IDE which itself was created using the Lazarus IDE from a single code base and is available on all major platforms and also runs on the Raspberry PI.
- 1 Features
- 2 Cross-platform development
- 3 Database development
- 4 Differences from Delphi
- 5 Distribution and licensing
- 6 History
- 7 Versions
- 8 Applications produced with Lazarus
- 9 Libraries compatible with Lazarus
- 10 See also
- 11 References
- 12 Additional references
- 13 External links
Most similar to earlier versions of the Borland Delphi, Lazarus provides a highly visual development environment for the creation of rich user interfaces, application logic, and other supporting code artifacts. Along with the customary project management features, the Lazarus IDE also provides features that includes but are not limited to:
- A What You See Is What You Get (WYSIWYG) visual windows layout designer
- An extensive set of GUI widgets or visual components such as edit boxes, buttons, dialogs, menus, etc.
- An extensive set of non-visual components for common behaviors such as persistence of application settings
- A set of data-connectivity components for MySQL, PostgresSQL, FireBird, Oracle, SQLite, Sybase, and others
- Data-aware widget set that allows the developer to see data in visual components in the designer to assist with development
- Interactive code debugger
- Code completion
- Code templates
- Syntax highlighting
- Context-sensitive help
- Text resource manager for internationalization
- Automatic code formatting
- The ability to create custom components
Similar to Free Pascal’s run-time library, Lazarus provides a cross-platform application framework called the Lazarus Component Library (LCL), which provides a single, unified interface for programmers, with different platform-specific implementations. Using LCL, one can create applications in a write once, compile anywhere manner, unless system-dependent features are used explicitly.
As Free Pascal supports cross-compiling, Lazarus applications can be cross-compiled from Windows to Linux and FreeBSD, and vice versa. Compiling from Mac OS X to Windows, Linux and FreeBSD is possible. Cross-compiling to Mac OS X could be done for older (PowerPC) versions, but not for newer Intel versions, since Apple no longer releases the assembler and linker sources.
With Lazarus 1.3 (development version) it is possible to generate Android applications.
Lazarus Component Library
The standard application framework, Lazarus Component Library (LCL) was modeled after the Visual Component Library (VCL) in Delphi 6, but it is available for operating systems other than Windows. This is done by separating the definition of common widget classes and their widgetset-specific implementation. Support for each widget set is done by providing an interface which interacts directly with the widget set.
Developers can install packages that allow Lazarus to support several databases. Programs can interact with databases through code or by components dropped on a form. The data-aware components represent fields and are connected by the correct setting of properties to a TDataSource, which represents a table, and to the database components, which may be TPSQLDatabase, TSQLiteDataSet, or equivalent.
The following databases are supported out of the box using the built-in database components:
- dBase and FoxPro can be supported without the need for an external server or library through the TDbf component
- InterBase / Firebird. See 
- Microsoft SQL Server and Sybase ASE. See 
- MySQL. See 
- ODBC databases. See 
- Oracle. See 
- PostgreSQL. See 
- SQLite. See 
Other components, such as Zeoslib, can also be used.
Differences from Delphi
While resembling Delphi in many ways, there are a few limitations regarding the performance and feature set.
- Under Windows executable, by default, file size is somewhat larger than the Delphi (6/7) equivalent because debug information is included within Lazarus executables, instead of as separate files like Delphi. From release 0.9.30 external debug symbols are supported; program file size can be significantly reduced by using an external symbols file (it can be set in Compiler options), or by using Strip
- Components for Delphi can be installed in Lazarus, but they must be converted, which can be complex (less complex since FP 2.4.x-based 0.9.30)
- Missing important media libraries and widgets:
- Microsoft Office connectivity (popping up Excel with a simple table filled out works in 2.5.x trunk)
- Datasnap (not a publicly documented system, Embarcadero proprietary enterprise functionality)
- Networking is mostly available
- No support to directly call .NET libraries;. It is possible to call Object Pascal code from .NET software.
- COM support was missing until version 2.2.0.
- Missing dynamically loadable packages support.
- Not 100 percent compatible with VCL. As mentioned previously this is by design, although the current LCL widget set should suffice for most applications. But this makes the deep repository of available VCL widgets inaccessible without conversion. The conversion effort mostly involves some editing, although there are a few fundamental differences. When porting, missing units in the libraries and COM support are a considerably bigger problem than incompatibilities between LCL and VCL.
Distribution and licensing
Specifically, the LCL, which is statically built into the produced executables, is licensed under a modified version of the LGPL, granting extra permissions to allow it to be statically built into the produced software, including proprietary ones.
Note that installing a design-time package is equivalent to linking to the IDE. Thus, distributing the Lazarus IDE with a GPL-incompatible design-time package (e.g. the JEDI packages, which are licensed under the Mozilla Public License) pre-installed would cause a license violation. This does not prohibit proprietary packages from being developed with Lazarus, though.
Lazarus is officially distributed via Sourceforge.
The first attempt to develop a visual IDE for Free Pascal dates back to 1998, when the Megido project commenced. For various reasons this approach failed. Consecutively, some of Megido's developers decided to start a new project based on a more flexible foundation. The first preliminary LCL version could be released in 2001, and in 2003 the first beta version of Lazarus (0.9.0.3) was hosted at SourceForge. The first final Lazarus version (1.0) was released in 2012. Lazarus 1.2 with significant enhancements was released in 2014.
Unlike Megido, Lazarus was a big success. It is available for a range of operating systems including various Linux distributions, Mac OS X, BSD, Solaris and Windows. More than four million downloads from SourceForge (as of March 2014) mark the increasing popularity of this IDE.
|Version number||Release date||Platform||Comments|
|Old version, no longer supported: 0.0.5||January 2001||Windows||First release of component library|
|Old version, no longer supported: 0.1||January 2001||Windows||Redesign of component library to support platform-sensitive development for Linux and Windows using GTK+ and other widgetsets.|
|Old version, no longer supported: 0.5||January 30, 2001||Windows, Linux||Bug fixes and new features supporting cross-platform development and project skeletons.|
|Old version, no longer supported: 0.8||October 9, 2001||Windows, Linux||Codetools implemented, bug fixes.|
|Old version, no longer supported: 0.8.2||January 17, 2002||Windows, Linux||Expanded find functions.|
|Old version, no longer supported: 0.8.4||August 19, 2002||Windows, Linux||Improved graphics and font support, support for Delphi 6 syntax. Binary DFMs are now automatically converted to LFMs.|
|Old version, no longer supported: 0.8.5||October 26, 2002||Windows, Linux||LCL decoupled from interfaces.|
|Old version, no longer supported: 0.9.0.3||September 4, 2003||Linux||First release on Sourceforge|
|Old version, no longer supported: 0.9.1||February 27, 2004||Windows, Linux||Support for packages, numerous added and enhanced properties.|
|Old version, no longer supported: 0.9.4||January 3, 2005||Windows||Threading support improved, oldest public version hosted at Sourceforge|
|Old version, no longer supported: 0.9.6||February 25, 2005||Windows|
|Old version, no longer supported: 0.9.8||July 19, 2005||Windows|
|Old version, no longer supported: 0.9.10||October 3, 2005||Windows, Mac OS X (PPC)||Bug fixes, extensibility of IDE improved, document editor for FPDoc files. Includes Free Pascal 2.0.1|
|Old version, no longer supported: 0.9.12||February 7, 2006||Windows||New packages for database support, CGI applications and printing.|
|Old version, no longer supported: 0.9.14||April 2, 2006||Windows, Mac OS X (PPC), Linux||Bugfixes, more controls in the WinCE and Qt4 interface|
|Old version, no longer supported: 0.9.16||May 28, 2006||Windows, Mac OS X (PPC), Linux||Bug fixes, online help for IDE windows and for LCL applications, improvements to QT widgetset interface. Includes Free Pascal 2.0.2|
|Old version, no longer supported: 0.9.18||September 23, 2006||Windows, Mac OS X (PPC), Linux||Bugfixes, procedure list implemented, new command-line tool "lazbuild"|
|Old version, no longer supported: 0.9.20||November 5, 2006||Windows, Mac OS X (PPC), Linux||Bufixes, code folding implemented, QT widgetset improved.|
|Old version, no longer supported: 0.9.22||March 26, 2007||Windows, Mac OS X (PPC), Linux||New components to write Windows services and Linux daemons, support for custom mouse cursors. Includes Free Pascal 2.0.4|
|Old version, no longer supported: 0.9.24||November 15, 2007||Windows, Mac OS X (Intel and PPC), Linux||First stable release for Win64, WinCE, and Intel-based Mac OS X. Improvements in Qt, Carbon, and Gtk2 widgetset interfaces. Customizable toolbar. Includes Free Pascal 2.2.0|
|Old version, no longer supported: 0.9.26||October 5, 2008||Windows, Mac OS X (Intel and PPC), Linux||Internal graphic system was rewritten. LCL now uses Unicode strings encoded as UTF-8 on all platforms. FPDoc help in tooltips. First version to run natively using the Carbon widgetset on Mac OS X.|
|Old version, no longer supported: 0.9.26.2||March 13, 2009||Windows, Mac OS X (Intel and PPC), Linux||Bug fixes, improved icon support. Includes Free Pascal 2.2.2|
|Old version, no longer supported: 0.9.28||September 29, 2009||Windows, Mac OS X (Intel and PPC), Linux||Improvements of editor and debugger including support for double-byte fonts such as Eastern, Japanese, Chinese, and Arabic, smaller file sizes of generated applications. Includes Free Pascal 2.2.4|
|Old version, no longer supported: 0.9.28.2||October 25, 2009||Windows, Mac OS X (Intel and PPC), Linux||Mainly bug fixes.|
|Old version, no longer supported: 0.9.30||March 22, 2011||Windows, Mac OS X (Intel and PPC), Linux||Large number of new features, including docking and multiple source-code windows. Based on Free Pascal 2.4.2.|
|Old version, no longer supported: 0.9.30.2RC1||September 30, 2011||Windows, Mac OS X (Intel and PPC), Linux||Includes Free Pascal 2.4.4. Release candidate for Lazarus 0.9.30.2.|
|Old version, no longer supported: 0.9.30.2RC2||October 26, 2011||Windows, Mac OS X (Intel and PPC), Linux||Release candidate for Lazarus 0.9.30.2.|
|Old version, no longer supported: 0.9.30.2||November 5, 2011||Windows, Mac OS X (Intel and PPC), Linux||Bug fixes.|
|Old version, no longer supported: 0.9.30.4RC1||March 3, 2012||Windows, Mac OS X (Intel and PPC), Linux||Bug fixes, includes Free Pascal 2.6.0. Release candidate for Lazarus 0.9.30.4.|
|Old version, no longer supported: 0.9.30.4RC2||March 7, 2012||Windows, Mac OS X (Intel and PPC), Linux||Release candidate for Lazarus 0.9.30.4.|
|Old version, no longer supported: 0.9.30.4RC3||March 11, 2012||Windows, Mac OS X (Intel and PPC), Linux||Release candidate for Lazarus 0.9.30.4.|
|Old version, no longer supported: 0.9.30.4||March 14, 2012||Windows, Mac OS X (Intel and PPC), Linux||Bug fixes|
|Older version, yet still supported: 1.0RC1||July 29, 2012||Windows, Mac OS X (Intel), Linux||Release candidate for Lazarus 1.0.|
|Older version, yet still supported: 1.0RC2||August 21, 2012||Windows, Mac OS X (Intel and PPC), Linux||Release candidate for Lazarus 1.0.|
|Older version, yet still supported: 1.0||August 28, 2012||Windows, Mac OS X (Intel and PPC), Linux||First final version. This stable release includes Free Pascal 2.6.0. Multiple corrections and improvements of the IDE, including a macro function, expanded code-folding and new debugger functions.|
|Older version, yet still supported: 1.0.2||October 10, 2012||Windows, Mac OS X (Intel and PPC), Linux||Bug fixes, minor additions to LCL and widgetsets|
|Older version, yet still supported: 1.0.4||December 2, 2012||Windows, Mac OS X (Intel and PPC), Linux||Bug fixes, minor additions to IDE, LCL and widgetsets as well as LazReport and TAChart|
|Older version, yet still supported: 1.0.6||February 3, 2013||Windows, Mac OS X (Intel and PPC), Linux||Bug fixes, minor additions to IDE, LCL and widgetsets as well as LazReport and TAChart|
|Older version, yet still supported: 1.0.8||March 19, 2013||Windows, Mac OS X (Intel and PPC), Linux||Bug fix release. Includes Free Pascal 2.6.2|
|Older version, yet still supported: 1.0.10||June 12, 2013||Windows, Mac OS X (Intel and PPC), Linux||Bug fixes.|
|Older version, yet still supported: 1.0.12||August 24, 2013||Windows, Mac OS X (Intel and PPC), Linux||Bug fixes.|
|Older version, yet still supported: 1.0.14||November 16, 2013||Windows, Mac OS X (Intel and PPC), Linux||Bug fixes.|
|Older version, yet still supported: 1.1.99||September 16, 2013||Windows, Mac OS X, Linux||Alpha version for Lazarus 1.2|
|Older version, yet still supported: 1.2RC1||November 3, 2013||Windows, Mac OS X, Linux||Release candidate for Lazarus 1.2|
|Older version, yet still supported: 1.2RC2||January 13, 2014||Windows, Mac OS X, Linux||Release candidate for Lazarus 1.2|
|Older version, yet still supported: 1.2||March 4, 2014||Windows, Mac OS X, Linux||Multiple new features, including a macro recorder, support for layered graphs and Pascal Script. Based on Free Pascal 2.6.2|
|Older version, yet still supported: 1.2.2||April 23, 2014||Windows, Mac OS X, BSD, Solaris, Linux||Bug fix release. Based on Free Pascal 2.6.4|
|Older version, yet still supported: 1.2.4||June 16, 2014||Windows, Mac OS X, BSD, Solaris, Linux||Bug fix release.|
|Current stable version: 1.2.6||October 12, 2014||Windows, Mac OS X, BSD, Solaris, Linux||Bug fix release.|
|Latest preview version of a future release: 1.3||March 2015||Windows, Mac OS X, Linux||Unstable preview version for Lazarus 1.4|
|Future release: 1.4||N/A||N/A||planned|
Applications produced with Lazarus
- ASuite is a free open source application launcher for Windows. From 2.0 Alpha 2, it's fully written in Lazarus/FPC.
- AksiIDE is a Free Light IDE/Editor for PHP Developer.
- Cartes du Ciel is a free planetarium program for Linux, Mac OS X and Windows. The software maps out and labels most of the constellations, planets, and objects you can see with a telescope. It is fully written in Lazarus/FPC and released under GPL.
- Cheat Engine is an open source memory scanner/hex editor/debugger. It is useful for cheating in computer games. Since version 6.0 it is compiled with Lazarus/FPC.
- Greenfish Icon Editor Pro is a freeware icon, cursor and animation editor.
- EPANET, a software package for modelling water distribution systems.
- MyNotex is a free software for Gnu/Linux useful to take and to manage textual notes.
- Peazip is an open source archiver, made with Lazarus/FPC.
- TorChat is moving away from Python, and is being rewritten in Lazarus + Free Pascal.
- Double Commander is a cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas.
- Xoctave is a cross platform Graphical User Interface for GNU Octave.
- Star Manager is a system manager that allows adjusting backlight brightness and sound volume of an ARM processor-based WinCE device, to set wallpapers on the desktop, to control and manage system processes and memory load, to control battery charge and see device configuration.
Libraries compatible with Lazarus
- GLScene is a free OpenGL-based library that provides visual components and objects allowing description and rendering of 3D scenes.
- OpenWire is an Open Source library that allows pin type properties to make connections between LCL components similar to LabVIEW or Agilent VEE.
- Michaël van Canneyt; Florian Klämpfl (2012), Free Pascal (Free Pascal 2 ed.), Computer & Literatur Verlag GmbH, ISBN 978-3936546729, 393654672X
- Michaël van Canneyt; Mattias Gärtner; Swen Heinig; Felipe Monteiro de Carvalho; Inoussa Ouedraogo; Jörg Braun (2011), Lazarus, Böblingen, Germany: Computer & Literatur Verlag GmbH
- Michaël van Canneyt; Mathias Gärtner; Swen Heinig; Felipe Monteiro de Carvalho; Inoussa Ouedraogo (2011), Lazarus - the complete guide, Blaise Pascal Magazine