Lazarus (software)

From Wikipedia, the free encyclopedia

Jump to: navigation, search
Lazarus

Lazarus 0.9.23 Screenshot (Linux, Amd64)
Developer volunteers
Latest release 0.9.24 / November 8, 2007
OS cross-platform
Genre Pascal SDK
License GPL, LGPL, and others
Website www.lazarus.freepascal.org
This article concerns the software IDE named Lazarus. For other uses of the name, see Lazarus (disambiguation).

Lazarus is a cross platform Visual Integrated development environment (IDE) which provides a Rapid Application Development (RAD) Delphi clone for Pascal and Object Pascal developers. It is developed for and supported by the Free Pascal compiler.

Distributed under a mix of licences,[1] all of which are free software licences, Lazarus is free software, just as Free Pascal is. Notably among those licences is a modified version of the GNU Lesser General Public License. The modification grants extra permissions to allow Lazarus to be used in proprietary software.[2]

Free Pascal is a compiler which runs on many operating systems. It is designed to use and compile Delphi source code, which is Object Oriented Pascal. Unlike Java which is intended to be write once, run anywhere, Lazarus and Free Pascal aim to be write once, compile anywhere. As the same compiler is available for all of the above operating systems, there is no need for recoding to produce identical products for different platforms, except when operating-system-dependent features are used. Cross-compiling is supported.

Under Microsoft Windows Lazarus is less stable and less well-documented than Delphi, but has multi-platform capability and is more transparent, customizable and can run from stick (!). Under Linux, Delphi source code can be compiled with Lazarus with a little adaptation. Lazarus source code can be adapted to compile under Delphi and Kylix (Delphi for Linux).

Contents

The Lazarus GUI subsystem, Lazarus Component Library (LCL), is basically a set of visual and non visual component classes over a Widget toolkit-dependent part. The LCL is based on the Delphi VCL, but has not been kept totally compatible to improve use with operating systems other than Microsoft Windows.

In Lazarus terminology, this part is called simply "the Interface". Actually it's more like one Interface per Widget toolkit.

The current status of Widget toolkit Interface is roughly like this:

  • Win32 GDI support (win32 native) is in mainstream use.
  • GTK+ 1.2.x is in mainstream use (Unix derivatives including Mac OS X)
  • GTK+ 2.6+ is fully working. Running the IDE with the Gtk 2 interface still presents minor problems, however.
  • Qt 4.2+ has headers translated, and the interface is partially implemented.
  • for wxWidgets (C++) there is no header translation yet.
  • for Cocoa (Mac OS X native toolkit, Objective C) No header translation yet.
  • for Carbon (Mac OS X native toolkit, C) is partially implemented.
  • wince (Windows CE native) has headers and the interface is working.
  • fpGUI (Free Pascal GUI toolkit) needs to wait until fpGUI stabilizes.

Currently there is no cross platform tool for PDAs or good RADs. Support for PDAs on Lazarus is being implemented and it may occupy this vacancy.

Platforms with LCL Interfaces being implemented:

Possible in the future:

The Lazarus project has a good community and a vigorous development process, with many contributors and development testers. The community solves the problems using a discussion board, and programmers submit fixes for issues raised on the board. Each night untested builds are generated for beta testing.

Developers can install packages which 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 directly supported:

  • PostgreSQL, with the PSQL package
  • dBase and FoxPro can be supported without the need for an external server or library through the TDbf component
  • MySQL works
  • SQLite needs a single external library and the TSqliteDataset component
  • MSSQL is working with Zeoslib
  • InterBase / Firebird also work with the latest ZeosLib

Some helper data providers (CSV, SDF) are also provided.

Free Pascal supports cross-compiling, and 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 OS X has been done, but is not ready for release.

Lazarus is also used to build PDA applications, e.g. for Windows CE, on a machine running Linux or Windows.

While resembling the Delphi RAD in many ways, there are a few limitations regarding the performance and feature set:

  • Under Windows executable file size is somewhat larger than the Delphi equivalent because debug information is included within Lazarus executables, instead of as separate files like Delphi. Lazarus program file size can be significantly reduced by using Strip. See also FPC wiki: Size Matters
  • Components for Delphi can be installed in Lazarus, but they must be converted, which can be complex.
  • Missing important media libraries and widgets:
    • Microsoft Office connectivity
    • Datasnap (not a publicly documented system, Borland proprietary enterprise functionality)
  • Networking is mostly available, with a wealth of packages to choose from:
    • Indy.
      • Status: Linux/x86, win32: 100 percent working;
      • FreeBSD/x86: also 100 percent, but requires developer's versions;
      • Mac OS X/PowerPC: servers untested, various endianness problems in demoes;
      • Other platforms remain untested, though some client success on wince was claimed;
    • ICS A bit win32-centric, but quite well suited for Windows-specific customization if needed.
    • Synapse FPC support hugely improved the last year.
    • lNet is a FPC native non-blocking variant, with Linux/FreeBSD specific (KSE/EPoll) optimizations for mass connectivity
  • No support to directly call .NET libraries. On the other hand, it is possible to call Object Pascal code from .NET software. [1]
  • No easy COM support. (*)
  • No frames
  • No visual form inheritance (*)
  • 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.

(*) denotes features currently being worked on

Although Lazarus software is GPL licensed, software developed using it can be deployed on any license. The Lazarus Component Library (LCL) is statically linked into programs and is licensed using a modified version of LGPL specially designed to allow static linking to proprietary programs.

Note that installing a designtime package is equivalent to linking to the IDE. So distributing the Lazarus IDE with non-GPL compatible (e.g. MPL, the Jedi packages) designtime packages pre-installed would be a license violation. Despite that, you can build proprietary Lazarus packages, as long as you don't distribute a Lazarus pre-installed with them.

Advanced Search
Included Web Search Engines


Safe Search

close

Top Matching Results

Occasionally Search.com will highlight specialized results that are based on the context of your query. Examples of specialized results include specific links to news, images, or video.

Top Matching Results may highlight information from other Search.com pages, content from the CNET Network of sites, or third party content. The listings are based purely on relevance. Search.com does not receive payment for listings in this section but our partners that provide this data may get paid for listing these products.

Sponsored Links

This section contains paid listings which have been purchased by companies that want to have their sites appear for specific search terms and related content. These listings are administered, sorted and maintained by a third party and are not endorsed by Search.com.

Search Results

Search.com sends your search query to several search engines at one time and integrates the results into one list which has been sorted by relevance using Search.com's proprietary algorithm. You can customize the list of search engines included in your metasearch from the preferences.

The search engines that are used in your metasearch may allow companies to pay to have their Web sites included within the results. To view the Paid Inclusion policy for a specific search engine, please visit their Web site. Search.com does not accept payment or share revenue with any search engine partner for listings in this section.