Lazarus (software)

Last updated
Lazarus
Developer(s) Lazarus and Free Pascal Team (volunteers)
Stable release
3.6.0 [1]   OOjs UI icon edit-ltr-progressive.svg / 30 September 2024;2 months ago (30 September 2024)
Repository
Written in Object Pascal
Operating system cross-platform: Windows, macOS, Linux [2]
Platform IA-32, x86-64, ARM (Raspberry Pi) [2]
Available in14 languages
List of languages
Chinese (simplified), Dutch, English, Finnish, French, German, Indonesian, Italian, Japanese, Polish, Portuguese (Brazilian), Russian, Spanish, Ukrainian
Type Integrated development environment
License GNU General Public License and modified GNU Lesser General Public License (with static linking exception)
Website www.lazarus-ide.org

Lazarus is a cross-platform, integrated development environment (IDE) for rapid application development (RAD) using the Free Pascal compiler. Its goal is to provide an easy-to-use development environment for developing with the Object Pascal language, which is as close as possible to Delphi. It is free and open-source software with different parts released under different software licenses.

Contents

Lazarus is often used to create native-code console and graphical user interface (GUI) applications for desktop computers, mobile devices, web applications, web services, visual components, and function libraries for several different operating system platforms, including macOS, Linux, and Windows. [2]

A project created by using Lazarus on one platform can be compiled on any other one which Free Pascal compiler supports. For desktop applications, one source code can target macOS, Linux, and Windows, with little or no modification. For example, the Lazarus IDE is created from one code base and available on all major platforms including Raspberry Pi.

Features

Lazarus provides a What You See Is What You Get (WYSIWYG) development environment for creating rich user interfaces, application logic, and other supporting code artifacts, similar to Delphi. Along with project management features, the Lazarus IDE also provides:

Cross-platform development

Architecture of the Lazarus Component Library LCLArchitecture.png
Architecture of the Lazarus Component Library
Interaction of class libraries and widgetsets in Lazarus and Free Pascal Lazarus architecture.svg
Interaction of class libraries and widgetsets in Lazarus and Free Pascal

Lazarus uses Free Pascal as its back-end compiler. As Free Pascal supports cross-compiling, Lazarus applications can be cross-compiled from Windows, Linux, or macOS to any of the supported Free Pascal compilation targets. Applications for embedded devices (smartphones, PDAs, routers, game consoles) can be cross-compiled from any desktop platform.

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, it is possible to create applications in a write once, compile anywhere manner, unless system-dependent features are used explicitly. LCL was originally modeled after the Visual Component Library (VCL) in Delphi 6, but is not restricted to Windows. This is done by separating the definition of common widget classes and their widgetset-specific implementation. Each widget set is supported by providing an interface which interacts directly with the set. [3]

Database development

Developers can install packages that allow Lazarus to support several database management systems (DBMSes). Programs can interact with a DBMS through code or by components dropped on a form.

The following DBMSes are supported out of the box:

Differences from Delphi

Lazarus resembles Delphi in many ways. It supports Component Object Model (COM) since version 2.2.0, and offers most of Delphi's networking functions. However, there are limits to the performance and feature set.

Lazarus does not support the following, which Delphi does:

LCL is not fully compatible with VCL. This makes the extensive 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 are a considerably bigger problem than incompatibilities between LCL and VCL. Components for Delphi can be converted to work in Lazarus. This can be complex, though less so than for Lazarus versions older than 0.9.30, based on FP 2.4.x.

On Windows, the default size of an executable file is larger than the Delphi 6 or 7 equivalent, as Lazarus stores debug information within the executable, rather than as separate files. Starting with version 0.9.30, Lazarus supports external debug symbols via compiler options. Thus, program file sizes can be significantly reduced. Alternatively, debug info can be stripped from EXEs (e.g. using a port of the UNIX strip command).

Distribution and licensing

Like Free Pascal, Lazarus is free software. Different portions are distributed under different free software licenses, including GPL, LGPL, MPL, and a modified version of LGPL. [6] 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.

Installing a design time package is equivalent to linking to the IDE, so that distributing the Lazarus IDE with a GPL-incompatible design-time package such as the JEDI packages licensed under the Mozilla Public License, pre-installed would cause a license violation. This does not prohibit proprietary packages from being developed with Lazarus.

History

The first attempt to develop an IDE for Free Pascal dates back to 1998, under the "Megido" project. After the project failed, some of its developers started a new project based on a more flexible foundation. The name "Lazarus" alludes to the revival of the Megido concept. It is inspired by Lazarus of Bethany, who, according to the Gospel of John, was restored to life by Jesus four days after his death.

The first preliminary LCL version was ready for release in 2001. In 2003, the first beta version of Lazarus (0.9.0.3) was hosted at SourceForge. Lazarus version 1.0 was released in 2012. A significantly enhanced Lazarus 1.2 with was released in 2014. More than four million downloads had been made from SourceForge as of March 2014.

Versions

Legend:
Old version, not maintained
Old version, still maintained
Latest version
Latest preview version
Future release
Version numberRelease datePlatformComments
Old version, no longer maintained: 0.0.5January 2001 Windows First release of component library
Old version, no longer maintained: 0.1January 2001 Windows Redesign of component library to support platform-sensitive development for Linux and Windows using GTK+ and other widgetsets
Old version, no longer maintained: 0.5January 30, 2001 Windows, Linux Bug fixes and new features supporting cross-platform development and project skeletons
Old version, no longer maintained: 0.8October 9, 2001 Windows, Linux Codetools implemented, bug fixes
Old version, no longer maintained: 0.8.2January 17, 2002 Windows, Linux Expanded find functions
Old version, no longer maintained: 0.8.4August 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 maintained: 0.8.5October 26, 2002 Windows, Linux LCL decoupled from interfaces
Old version, no longer maintained: 0.9.0.3September 4, 2003 Linux First release on SourceForge
Old version, no longer maintained: 0.9.1February 27, 2004 Windows, Linux Support for packages, numerous added and enhanced properties
Old version, no longer maintained: 0.9.4January 3, 2005 Windows Threading support improved, oldest public version hosted at SourceForge
Old version, no longer maintained: 0.9.6February 25, 2005Windows
Old version, no longer maintained: 0.9.8July 19, 2005Windows
Old version, no longer maintained: 0.9.10October 3, 2005Windows, 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 maintained: 0.9.12February 7, 2006WindowsNew packages for database support, CGI applications and printing
Old version, no longer maintained: 0.9.14April 2, 2006Windows, Mac OS X (PPC), Linux Bugfixes, more controls in WinCE and Qt4 interface
Old version, no longer maintained: 0.9.16May 28, 2006Windows, Mac OS X (PPC), LinuxBug 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 maintained: 0.9.18September 23, 2006Windows, Mac OS X (PPC), LinuxBugfixes, procedure list implemented, new command-line tool "lazbuild"
Old version, no longer maintained: 0.9.20November 5, 2006Windows, Mac OS X (PPC), LinuxBufixes, code folding implemented, Qt widgetset improved
Old version, no longer maintained: 0.9.22March 26, 2007Windows, Mac OS X (PPC), LinuxNew components to write Windows services and Linux daemons, support for custom mouse cursors; includes Free Pascal 2.0.4
Old version, no longer maintained: 0.9.24November 15, 2007Windows, Mac OS X, LinuxFirst 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 maintained: 0.9.26October 5, 2008Windows, Mac OS X, LinuxInternal 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 maintained: 0.9.26.2March 13, 2009Windows, Mac OS X, LinuxBug fixes, improved icon support; includes Free Pascal 2.2.2
Old version, no longer maintained: 0.9.28September 29, 2009Windows, Mac OS X, LinuxImprovements 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 maintained: 0.9.28.2October 25, 2009Windows, Mac OS X, LinuxMainly bug fixes
Old version, no longer maintained: 0.9.30March 22, 2011Windows, Mac OS X, LinuxLarge number of new features, including docking and multiple source-code windows. Based on Free Pascal 2.4.2
Old version, no longer maintained: 0.9.30.2RC1September 30, 2011Windows, Mac OS X, LinuxIncludes Free Pascal 2.4.4. Release candidate for Lazarus 0.9.30.2
Old version, no longer maintained: 0.9.30.2RC2October 26, 2011Windows, Mac OS X, LinuxRelease candidate for Lazarus 0.9.30.2
Old version, no longer maintained: 0.9.30.2November 5, 2011Windows, Mac OS X, LinuxBug fixes
Old version, no longer maintained: 0.9.30.4RC1March 3, 2012Windows, Mac OS X, LinuxBug fixes, includes Free Pascal 2.6.0. Release candidate for Lazarus 0.9.30.4
Old version, no longer maintained: 0.9.30.4RC2March 7, 2012Windows, Mac OS X, LinuxRelease candidate for Lazarus 0.9.30.4
Old version, no longer maintained: 0.9.30.4RC3March 11, 2012Windows, Mac OS X, LinuxRelease candidate for Lazarus 0.9.30.4
Old version, no longer maintained: 0.9.30.4March 14, 2012Windows, Mac OS X, LinuxBug fixes
Old version, no longer maintained: 1.0RC1July 29, 2012Windows, Mac OS X (Intel), LinuxRelease candidate for Lazarus 1.0
Old version, no longer maintained: 1.0RC2August 21, 2012Windows, Mac OS X, LinuxRelease candidate for Lazarus 1.0
Old version, no longer maintained: 1.0August 28, 2012Windows, Mac OS X, LinuxFirst 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
Old version, no longer maintained: 1.0.2October 10, 2012Windows, Mac OS X, LinuxBug fixes, minor additions to LCL and widgetsets
Old version, no longer maintained: 1.0.4December 2, 2012Windows, Mac OS X, LinuxBug fixes, minor additions to IDE, LCL and widgetsets as well as LazReport and TAChart
Old version, no longer maintained: 1.0.6February 3, 2013Windows, Mac OS X, LinuxBug fixes, minor additions to IDE, LCL and widgetsets as well as LazReport and TAChart
Old version, no longer maintained: 1.0.8March 19, 2013Windows, Mac OS X, LinuxBug fix release; includes Free Pascal 2.6.2
Old version, no longer maintained: 1.0.10June 12, 2013Windows, Mac OS X, LinuxBug fixes
Old version, no longer maintained: 1.0.12August 24, 2013Windows, Mac OS X, LinuxBug fixes
Old version, no longer maintained: 1.0.14November 16, 2013Windows, Mac OS X, LinuxBug fixes
Old version, no longer maintained: 1.1.99September 16, 2013Windows, Mac OS X, LinuxAlpha version for Lazarus 1.2
Old version, no longer maintained: 1.2RC1November 3, 2013Windows, Mac OS X, LinuxRelease candidate for Lazarus 1.2
Old version, no longer maintained: 1.2RC2January 13, 2014Windows, Mac OS X, LinuxRelease candidate for Lazarus 1.2
Old version, no longer maintained: 1.2March 4, 2014Windows, Mac OS X, LinuxMultiple new features, including a macro recorder, support for layered graphs and Pascal Script. Based on Free Pascal 2.6.2
Old version, no longer maintained: 1.2.2April 23, 2014Windows, Mac OS X, BSD, Solaris, LinuxBug fix release. Based on Free Pascal 2.6.4
Old version, no longer maintained: 1.2.4June 16, 2014Windows, Mac OS X, BSD, Solaris, LinuxBug fix release
Old version, no longer maintained: 1.2.6October 12, 2014Windows, Mac OS X, BSD, Solaris, LinuxBug fix release
Old version, no longer maintained: 1.4.0April 19, 2015Windows, Mac OS X, BSD, Solaris, LinuxImprovements of editor, resource handling and additional new features. Based on Free Pascal 2.6.4
Old version, no longer maintained: 1.4.2July 14, 2015Windows, Mac OS X, BSD, Solaris, LinuxBug fix release
Old version, no longer maintained: 1.4.4October 4, 2015Windows, Mac OS X, BSD, Solaris, LinuxBug fix release
Old version, no longer maintained: 1.6February 18, 2016Windows, Mac OS X, LinuxMultiple new features, including docking, project groups and improved editor. Based on Free Pascal 3.0.0. [7]
Old version, no longer maintained: 1.6.2November 13, 2016Windows, Mac OS X, LinuxBug fix release
Old version, no longer maintained: 1.6.4February 26, 2017Windows, macOS, LinuxBug fix release. Based on Free Pascal 3.0.2
Old version, no longer maintained: 1.8.0December 6, 2017Windows, macOS, BSD, LinuxMajor release with many new features including an online package manager. Based on Free Pascal 3.0.4
Old version, no longer maintained: 1.8.2February 28, 2018.Bug fix release
Old version, no longer maintained: 1.8.4May 22, 2018Windows, macOS, BSD, LinuxBug fix release. [8]
Old version, no longer maintained: 2.0.0January 5, 2019Windows, macOS, BSD, LinuxMultiple new features including Cocoa support and the introduction of a Pascal to JavaScript transpiler
Old version, no longer maintained: 2.0.2April 16, 2019Windows, macOS, BSD, LinuxBug fix release
Old version, no longer maintained: 2.0.4August 6, 2019Windows, macOS, BSD, LinuxBug fix release
Old version, no longer maintained: 2.0.6November 1, 2019Windows, macOS, BSD, LinuxBug fix release
Old version, no longer maintained: 2.0.8April 16, 2020Windows, macOS, BSD, LinuxBug fix release, improved Cocoa widgetset
Old version, no longer maintained: 2.0.10July 11, 2020Windows, macOS, BSD, LinuxBug fix release, minor additions, first version based on Free Pascal 3.2.0
Old version, no longer maintained: 2.0.12February 21, 2021Windows, macOS, BSD, LinuxBased on Free Pascal 3.2.0. List of fixes available. [9]
Old version, yet still maintained: 2.2.0January 5, 2022Windows, macOS, BSD, LinuxBased on Free Pascal 3.2.2. Multiple improvements, among others in the IDE, the LCL and widgetsets. [10]
Old version, yet still maintained: 2.2.2May 19, 2022Windows, macOS, BSD, LinuxBug fix release
Old version, yet still maintained: 2.2.4September 28, 2022Windows, macOS, BSD, LinuxBug fix release
Old version, yet still maintained: 2.2.6March 6, 2023Windows, macOS, BSD, LinuxBug fix release
Old version, yet still maintained: 3.0December 21, 2023Windows, macOS, BSD, LinuxMultiple improvements, among others in the IDE, the LCL, widgetsets and the debugger. [11]
Old version, yet still maintained: 3.2February 28, 2024Windows, macOS, BSD, LinuxBug fixes and minor improvements. [12]
Old version, yet still maintained: 3.4May 29, 2024Windows, macOS, BSD, LinuxBug fixes and minor improvements. [12]
Current stable version:3.6September 30, 2024Windows, macOS, BSD, LinuxBug fixes and minor improvements. [12]

Examples of applications produced with Lazarus

Examples of Delphi libraries compatible with Lazarus

See also

Related Research Articles

An integrated development environment (IDE) is a software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, and a debugger. Some IDEs, such as IntelliJ IDEA, Eclipse and Lazarus contain the necessary compiler, interpreter or both; others, such as SharpDevelop and NetBeans, do not.

In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.

C++Builder is a rapid application development (RAD) environment for developing software in the C++ programming language. Originally developed by Borland, as of 2009 it is owned by Embarcadero Technologies, a subsidiary of Idera. C++Builder can compile apps for Windows, iOS, macOS, and Android. It includes tools that allow drag-and-drop visual development, making programming easier by incorporating a WYSIWYG graphical user interface builder.

The Visual Component Library (VCL) is a visual component-based object-oriented framework for developing the user interface of Microsoft Windows applications. It is written in Object Pascal.

Component Library for Cross Platform (CLX), is a cross-platform visual component-based framework for developing Microsoft Windows and Linux applications. It was developed by Borland for use in its Kylix, Delphi, and C++ Builder software development environment.

<span class="mw-page-title-main">Delphi (software)</span> General-purpose programming language and a software product

Delphi is a general-purpose programming language and a software product that uses the Delphi dialect of the Object Pascal programming language and provides an integrated development environment (IDE) for rapid application development of desktop, mobile, web, and console software, currently developed and maintained by Embarcadero Technologies.

Object Pascal is an extension to the programming language Pascal that provides object-oriented programming (OOP) features such as classes and methods.

<span class="mw-page-title-main">Free Pascal</span> Free compiler and IDE for Pascal and ObjectPascal

Free Pascal Compiler (FPC) is a compiler for the closely related programming-language dialects Pascal and Object Pascal. It is free software released under the GNU General Public License, with exception clauses that allow static linking against its runtime libraries and packages for any purpose in combination with any other software license.

Borland Kylix is a compiler and integrated development environment (IDE) formerly sold by Borland, but later discontinued. It is a Linux software development environment based on Borland Delphi and Borland C++ Builder, which runs under Microsoft Windows. Continuing Delphi's classical Greek theme, Kylix is the name for an ancient Greek drinking cup. The closest supported equivalent to Kylix is the free Lazarus IDE package, designed to be code-compatible with Delphi. As of 2010 the project has been resurrected in the form of Delphi cross compiler for Mac and Linux, as shown in the Embarcadero's Delphi and C++ Builder roadmap. As of September 2011 with Kylix discontinued the framework for cross-platform development by Embarcadero is FireMonkey.

Virtual Pascal is a freeware 32-bit Pascal programming language compiler, integrated development environment (IDE), and debugger for OS/2 and Microsoft Windows, with some limited Linux support. Virtual Pascal was developed by Vitaly Miryanov and later maintained by Allan Mertner.

<span class="mw-page-title-main">Graphical user interface builder</span> Software development tool

A graphical user interface builder, also known as GUI designer or sometimes RAD IDE, is a software development tool that simplifies the creation of GUIs by allowing the designer to arrange graphical control elements using a drag-and-drop WYSIWYG editor. Without a GUI builder, a GUI must be built by manually specifying each widget's parameters in the source code, with no visual feedback until the program is run. Such tools are usually called the term RAD IDE.

Morfik Technology Pty Ltd. is an Australian software company that was acquired by Altium in 2010.

fpGUI Graphical user interface toolkit in Object Pascal

fpGUI, the Free Pascal GUI toolkit, is a cross-platform graphical user interface toolkit developed by Graeme Geldenhuys. fpGUI is open source and free software, licensed under a Modified LGPL license. The toolkit has been implemented using the Free Pascal compiler, meaning it is written in the Object Pascal language.

HiAsm (Hight Assembler) (Russian: Хай-асм) is a free application integrated development environment (IDE) for Windows API (Win32), Qt, wxWidgets, scripts and pages in PHP, HTML, and JavaScript, in addition to applications for devices based on Windows Mobile, such as the Pocket PC PDA.

<span class="mw-page-title-main">Pascal Script</span>

Pascal Script is a scripting language based on the programming language Pascal that facilitates automated runtime control over scriptable applications and server software. It is implemented by a free scripting engine that includes a compiler and an interpreter for byte code.

<span class="mw-page-title-main">FireMonkey</span>

FireMonkey is a cross-platform GUI framework developed by Embarcadero Technologies for use in Delphi, C++Builder or Python, using Object Pascal, C++ or Python to build cross-platform applications for Windows, macOS, iOS, and Android. A third-party library, FMX Linux, enables the building of FireMonkey applications on Linux.

<span class="mw-page-title-main">Lazarus Component Library</span>

The Lazarus Component Library, abbreviated LCL, is a visual software component library for the Lazarus IDE.

<span class="mw-page-title-main">Widgetset</span>

Widgetsets support platform-sensitive development with the Lazarus IDE system. They act as adapter libraries that provide an interface between a platform-independent sourcecode written in Free Pascal and platform-specific system functions. Thus they allow for development of platform-native software without requiring to provide specific source code for different target platforms.

This page details the history of the programming language and software product Delphi.

References

  1. https://forum.lazarus.freepascal.org/index.php?topic=68708.0.{{cite web}}: Missing or empty |title= (help)
  2. 1 2 3 "Downloads". lazarus-ide.org. Lazarus and Free Pascal Team. Retrieved 2023-03-25.
  3. "LCL Internals". lazarus.freepascal.org. Lazarus and Free Pascal Team. Retrieved 25 March 2023.
  4. 1 2 3 4 5 6 7 "SQLdb Package". lazarus.freepascal.org. Lazarus and Free Pascal Team. Retrieved 25 March 2023.
  5. "Using Pascal Libraries with .NET and Mono". lazarus.freepascal.org. Lazarus and Free Pascal Team. Retrieved 25 March 2023.
  6. ""COPYING.txt" file from the online source code repository".
  7. Lazarus 1.6 on http://forum.lazarus.freepascal.org
  8. Lazarus 1.8.4 on http://forum.lazarus.freepascal.org
  9. "Lazarus 2.0 fixes branch". Lazarus Wiki. Retrieved 28 February 2021.
  10. "Lazarus 2.2.0 release notes". Lazarus Wiki. Retrieved 6 January 2022.
  11. "Lazarus 3.0 release notes". Lazarus Wiki. Retrieved 21 January 2023.
  12. 1 2 3 "Lazarus 3.0 release notes". Lazarus Wiki. Retrieved 20 June 2024.
  13. c-evo Lazarus port website
  14. "In which language is TC written??". Ghisler.ch. 2010-08-09. Retrieved 2016-08-11.
  15. sourceforge.net.

Further reading