
Lazarus 2.0.0 - samuell
http://forum.lazarus-ide.org/index.php?topic=44161
======
ZeroCool2u
For those that are interested in learning more about Lazarus, here is the
IDE's site: [http://www.lazarus-ide.org/](http://www.lazarus-ide.org/)

And to associate a face with the name, here is the screen shot page:
[http://wiki.lazarus.freepascal.org/Screenshots](http://wiki.lazarus.freepascal.org/Screenshots)

W10 Specific page:
[http://wiki.lazarus.freepascal.org/File:lazarus_win10_1709.p...](http://wiki.lazarus.freepascal.org/File:lazarus_win10_1709.png)

------
openbasic
Lazarus amazes me as a free and opensource software project. So much hard work
and dedication. Congrats!

------
SXX
So while I'm not exactly user of Lazarus other developer on our humble open
source project uses it for our map editor. Screenshots might look dated and
ugly, but it's much closer to being working solution for cross-platform
desktop applications than many would imagine it to be.

Pros: super easy to serialize data, compilation is fast, easy to avoid
crashes.

Cons: version packaged in Debian is far from perfect, some UI bindings are not
very stable on macOS for instance.

------
theamk
Interesting tidbit: Free Pascal, used by Lazarus, has no garbage collector nor
automatic destructors for dynamic memory.

This makes it one of the few modern languages where you have to manually free
all child pointers (like in C).

~~~
sysrpl
Actually it does have automatic destructors, they're just not the default
option.

The first way to auto destroy objects is to expose an Interface and free your
object in the Release method. You can inherit from several class types that
already do that if you don't want to rewrite a new class.

The second way is a newer feature that allows you to define Initiazlize and
Finalize methods on any complex type. When you define these methods, the
compiler generates code to reference count your object and call Initazlize on
create, and Finalize when your object is no longer referenced. This works the
same on stack based types as well as heap allocated types.

See also
[http://wiki.freepascal.org/management_operators](http://wiki.freepascal.org/management_operators)

~~~
theamk
Sweet! The docs say "since version 3.1.1", and the latest release seems to be
3.0.4, so I guess this has not been released yet?

Do you think that the changes help with simpler algorithms -- like in
StringHashList [0], where destructor specifically calls Dispose on each array
element, and then deletes the array storage itself?

[0]
[https://github.com/graemeg/lazarus/blob/95d183bacd5f895d3e6c...](https://github.com/graemeg/lazarus/blob/95d183bacd5f895d3e6c7cc5b11ea7723debda31/components/lazutils/stringhashlist.pas)

~~~
sysrpl
The odd minor versions are never released as official builds, but they are
official versions. You'll need to build it yourself which isn't that hard.
Keep in mind fpc, the compiler, is separate from Lazarus, but if you want to
use Lazarus with fpc 3.1.x you need to build Lazarus using fpc 3.1.x. Again
it's not that hard (make all).

The change we're talking about automatically invokes Initialize and Finalize
on all types for dynamic allocations / destruction, unless they intentionally
circumvent it. Intentional circumvention might include allocating raw memory
in a class and treating the class like an array with an index property. In
other words, if you declare a raw pointer, allocate untyped memory (e.g.
bytes), and handle something back from that memory using a typecast, then you
are bypassing automatic allocation and destruction.

All other ways to make space for complex types (records and classes) as well
as types which may hold complex types (arrays and nested fields) will safely
and reliably use Initialize and Finalize when needed if they are defined.

~~~
edwinyzh
>You'll need to build it yourself which isn't that hard.

Or use fpcupdeluxe with several clicks, screenshot here:
[https://screenpresso.com/=iyqoc](https://screenpresso.com/=iyqoc)

------
its_y0ur_boy
TL;DR:

> Lazarus is a free cross-platform visual integrated development environment
> (IDE) for rapid application development using the Free Pascal compiler

------
dang
[https://news.ycombinator.com/item?id=18856123](https://news.ycombinator.com/item?id=18856123)

~~~
noir_lord
The previous link was for RC3 this one is for the actual release.

Title might be better if it was 'Lazarus 2.0 released' maybe.

~~~
rudedogg
Would also like to see this un-duped. The discussions around Lazarus are
always interesting.

~~~
samuell
Sent them a mail about this. Let's see what happens.

