Recent

Author Topic: Rolling releases Lazarus[stable or main]+FPC[main]  (Read 3648 times)

Okoba

  • Hero Member
  • *****
  • Posts: 648
Re: Rolling releases Lazarus[stable or main]+FPC[main]
« Reply #15 on: January 24, 2026, 10:12:03 am »
@Martin_fr some of these bugs are not related to Trunk as you said. One like #41431 was reported numerous times by you, me and others from 2017!
What I understood from it is that not much people write inline code otherwise it would be solved by now.
Can I ask how do you manage automatic tests?

Martin_fr

  • Administrator
  • Hero Member
  • *
  • Posts: 12080
  • Debugger - SynEdit - and more
    • wiki
Re: Rolling releases Lazarus[stable or main]+FPC[main]
« Reply #16 on: January 24, 2026, 11:56:37 am »
@Martin_fr some of these bugs are not related to Trunk as you said. One like #41431 was reported numerous times by you, me and others from 2017!
True, but the point is that in trunk there can (at times) be more. And that is not just a theoretical issue.

Right now, I would recommend 3.2.3.  Chances (extremely high) are that the number of fixed compiler bugs (several, compared to 3.2.2) outnumber any potential new ones (and given its a fixes branch, new ones are possible but less likely).

But that aside, trunk is a gamble.

Same for Lazarus. Even though I myself would say its most of the time stable (I use it, and rarely have issues), I was just reminded how wrong that feeling is. The last - I guess - 2 month, the editor had been unstable. But it had taken about that time before any error caused by that, has manifested for me (despite I compile with asserts, that actually eventually caught it). So I would have told everyone, its fine, you can pick any commit and run it.

Quote
What I understood from it is that not much people write inline code otherwise it would be solved by now.
Well, not every inline code fails, and even if inlined code is broken, it must still be called in a way were the error manifests.

I caught the "inline (nested) treats params as var params" bug in my test. But without the test, I might not have noticed. For most of the data, the code still worked. But the testcase luckily contained data that run into the error.

And then, its very hard to measure how many people are affected by a compiler bug like that.
Most people, if they get an error from it, will likely not attribute it to the compiler. It takes a lot of very different debugging to make that connection.
So my guess: Most people will just think, their code is wrong, and if they can't figure the exact cause they just rewrite it, and get something working. That is, if they notice that their app is broken, if they just get the odd, annual user feedback about some obscure error, they may just be forced to ignore it if they can't ever reproduce it.

Quote
Can I ask how do you manage automatic tests?

Most of them are unit test. Some are running the full product in a real or mock setup. "Automatic" here doesn't mean CI (though some of the tests for my Lazarus work, do now run on GitLab CI, but that wasn't what I referred too). So the tests are still started manually.

"Automatic" in this case is the difference to "manual product testing" => That is, testing is not just building the final product, and going through a checklist (open a file, perform foo and bar). Rather it is having the test trigger all that code.

And most tests I have, run (nested) loops with different (combination of) data => so the tests can easily do thousands of calls to the tested code. Ensuring to trigger as many cases as possible (trying to reach high coverage, not just for codelines, but also for conditions and sub-conditions, as well as combinations and variations of branches / unfortunately we don't have tools to measure those).

Many of my tests can be run from console. So then the test can run in lots of buildmodes, and I have a script that runs it in all of them (that will run for some time, but that happens in the background).
Primarily that was for finding my own mistakes, so I could run with all different levels of -gt. And I could run with/without -gh (as gh can hide pointer errors).
Even different optimization levers could help find dangling pointers (as mem layout changes, changes go up that a dangling pointer hits something that makes it noticeable).

But the different optimization levels, combined with all the other switches, ended up revealing the compiler bugs.
Had I just done my basic test runs from the IDE (using O1, so I can debug any error if the tests raises an exception), then I would never have noticed them.

Okoba

  • Hero Member
  • *****
  • Posts: 648
Re: Rolling releases Lazarus[stable or main]+FPC[main]
« Reply #17 on: January 24, 2026, 04:15:30 pm »
I almost always use Lazarus Trunk, but it need to be tested first. If it works, it works, if not, it crashes on build or just after open.
For FPC, it is almost always better to use Trunk as it has more features that I need. So I use a version that I tested and "works" for me and keep it for a month or two and go to the next version.

I write test codes to catch issues but I have trouble with automatic or fuzzy testing for Pascal and as I never found any good resource for it, so my tests are mostly manual.

Do you know any source for FPC and Lazarus active user count?
I guess lack of full time developers (as far as I know) is the reason we have these old issues remaining unresolved. I tried to help with that with thing like Bounties (https://forum.lazarus.freepascal.org/index.php/topic,70056.msg545586.html#msg545586) but it is not enough at all.

Martin_fr

  • Administrator
  • Hero Member
  • *
  • Posts: 12080
  • Debugger - SynEdit - and more
    • wiki
Re: Rolling releases Lazarus[stable or main]+FPC[main]
« Reply #18 on: January 24, 2026, 06:05:40 pm »
I write test codes to catch issues but I have trouble with automatic or fuzzy testing for Pascal and as I never found any good resource for it, so my tests are mostly manual.

Well, depends what you mean by "automatic". To me a testcase (e.g fpc unit tests) is automatic. Even if I have to press run manually. It then does everything else without my interference.

It works particularly well for non interactive code. So separation of GUI an logic is key. Or well, you could create a form, and call the Form.Button137.Click method, if you needed to. (In 4.99, there is a mock widgetset that might be just good enough to allow your app to run without showing an actual form on the screen / it is used in the testcase for LCL.ChildSizing).

Quote
Do you know any source for FPC and Lazarus active user count?
Download numbers on source forge. Though its a very rough indicator only, and leaves out a lot of alternative download sources.

Okoba

  • Hero Member
  • *****
  • Posts: 648
Re: Rolling releases Lazarus[stable or main]+FPC[main]
« Reply #19 on: January 26, 2026, 10:17:24 am »
I would be interesting and beneficial if Lazarus had some anonymous analytics.

440bx

  • Hero Member
  • *****
  • Posts: 6065
Re: Rolling releases Lazarus[stable or main]+FPC[main]
« Reply #20 on: January 26, 2026, 10:43:59 am »
I would be interesting and beneficial if Lazarus had some anonymous analytics.
Can you elaborate on what you mean by "anonymous analytics" in this context ?

Thank you!.
FPC v3.2.2 and Lazarus v4.0rc3 on Windows 7 SP1 64bit.

Martin_fr

  • Administrator
  • Hero Member
  • *
  • Posts: 12080
  • Debugger - SynEdit - and more
    • wiki
Re: Rolling releases Lazarus[stable or main]+FPC[main]
« Reply #21 on: January 26, 2026, 10:46:59 am »
I would be interesting and beneficial if Lazarus had some anonymous analytics.

Well, as I said => Sourceforge has those for Lazarus.

The mirrors don't have it. And for many of the downloads we have no access to gather data.
- We don't have data how many git clones there are. (Though, GitLab publishes how many forks exist on GitLab, that is afaik visible for everyone: 122 / there may be some on GitHub too)
- We don't have data how often downloads from the various Linux distros repositories are made.
...

The forum also already shows stats. And there isn't much more. If we did want to spent lots of time, we could work out the percentage of countries for the subset of IP4 data of spammers from last week. But that is not worth the time, and likely the spammers will have different bots next week with different locations.

Also, the forum data is as semi-representative as sourceforge is for downloads. => Several huge language groups have their own forums in their native language. And there again we have zero data at all.

So this forum tells at best how many of the users are comfortable discussing their issues in English.

Okoba

  • Hero Member
  • *****
  • Posts: 648
Re: Rolling releases Lazarus[stable or main]+FPC[main]
« Reply #22 on: January 28, 2026, 06:29:31 pm »
Something like what https://www.heidisql.com/ has. Knowing how many users are using the project and with version, beside being cool can be helpful to the team and community.

Martin_fr

  • Administrator
  • Hero Member
  • *
  • Posts: 12080
  • Debugger - SynEdit - and more
    • wiki
Re: Rolling releases Lazarus[stable or main]+FPC[main]
« Reply #23 on: January 28, 2026, 06:38:05 pm »
Something like what https://www.heidisql.com/ has. Knowing how many users are using the project and with version, beside being cool can be helpful to the team and community.
Code: Text  [Select][+][-]
  1. HeidiSQL users with enabled statistics feature

Which means, that says nothing about real numbers. This is only the subset of people who enabled the "call home" feature of the software.

We don't have a "call home" in Lazarus or FPC => so we do not have the numbers on how many people use it on which environment... But Sourceforge gives you similar numbers: The subset of people (who downloaded via Sourceforge) by OS or by region.




E.g. Window 64 bit Lazarus 4.0
https://sourceforge.net/projects/lazarus/files/Lazarus%20Windows%2064%20bits/Lazarus%204.0/lazarus-4.0-fpc-3.2.2-win64.exe/stats/timeline?dates=2025-01-28%20to%202026-01-27&period=daily

Add to that other OS and other download servers, Repositories of Linux distros, Git (and FpcUpDeluxe)....

Fixes Release (like 4.4) have slightly lower numbers. The 3.0 release had particularly many downloads, but we don't know if that were more people, or duplicate downloads, and if the downloads shifted between Sourceforge and alternatives, or to other OS.
« Last Edit: January 28, 2026, 06:46:08 pm by Martin_fr »

Okoba

  • Hero Member
  • *****
  • Posts: 648
Re: Rolling releases Lazarus[stable or main]+FPC[main]
« Reply #24 on: January 28, 2026, 09:36:05 pm »
Is there any particular reason as why Lazarus does not have such thing?

Martin_fr

  • Administrator
  • Hero Member
  • *
  • Posts: 12080
  • Debugger - SynEdit - and more
    • wiki
Re: Rolling releases Lazarus[stable or main]+FPC[main]
« Reply #25 on: January 28, 2026, 09:50:35 pm »
Is there any particular reason as why Lazarus does not have such thing?

I don't know.

My personal opinion:
- Even if it was optional, some people/users would not like it.
- More important: the reported figures are not very meaningful

As for the latter:
- We would not know which percentage of users would turn it on. So it would give very little clue.
- We would not know how those percentage of on/off differs between targets, so even a nn% Linux would be meaningless, if maybe Linux users are less (or more) likely to turn this off. (Or Windows used by companies behind a firewall would be blocked... or ...)
- As users install through different media, the option may not be equally advertised, further affecting the numbers. Some distribution channels may not even include the feature, or have patched it to go to their servers (which would lead to further outcry).

Also, even if we could get reliable numbers, it would be quite some work to be put in to get them. But what gain would it bring? what would become better by knowing?

Okoba

  • Hero Member
  • *****
  • Posts: 648
Re: Rolling releases Lazarus[stable or main]+FPC[main]
« Reply #26 on: January 29, 2026, 08:01:28 am »
My opinion: I guess it does not need to be optional if it is anonymous or at least enabled by default.
What can it help:
Like many projects it helps knowing what users want or use and focus on that. I know people talk on forum but we know what people say and what the act is different.
It can help advertise the project and give more confidence to the developers and users. You know the old repeated saying of no one is using Pascal.
It helps with knowing what versions are used and advertising updates, reducing the pressure of keeping old versions around. Less pressure for the team.
And it all helps some people more motivated to work on a project that feels more alive.


As far as I know FPK is the the lead maintainer for FPC, and Sven is the active representative. Are there such persons for Lazarus? I know your work on everything about the IDE especially the debugger, but I like to know if there is a team structure. For example how do you decide to have rolling release for example.

JuhaManninen

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 4673
  • I like bugs.
Re: Rolling releases Lazarus[stable or main]+FPC[main]
« Reply #27 on: January 29, 2026, 10:00:05 am »
... For example how do you decide to have rolling release for example.
Lazarus releases are rolling quite nicely already, meaning they are released reasonably often. The testing period for a "release candidate" is rather short, too, not prolonged artificially.
FPC release cycle is the problem. Lazarus release must use a released FPC. So do Linux etc. distros.
There are fundamental flaws in FPC release process. For example a minor dot-release should contain only bug fixes and they should be released often. FPC decided to add new features there, too. So we are still waiting for a dot-release for year after year after year ...
The situation is so bad I hope somebody forks the project and starts to maintain releases. I guess bug fixes would start to flow to the new better maintained project, too.
The current situation makes FPC look dead from outside which doesn't really matter. What matters, it makes life more difficult for people who use it and don't see it as dead.
The explanation is always "it will be released when it is ready" which is dummy because no substantial SW will ever be ready. That's why multiple release versions are made.
Mostly Lazarus trunk and FPC 3.2 on Manjaro Linux 64-bit.

marcov

  • Administrator
  • Hero Member
  • *
  • Posts: 12634
  • FPC developer.
Re: Rolling releases Lazarus[stable or main]+FPC[main]
« Reply #28 on: January 29, 2026, 10:32:08 am »
There are fundamental flaws in FPC release process. For example a minor dot-release should contain only bug fixes and they should be released often. FPC decided to add new features there, too. So we are still waiting for a dot-release for year after year after year ...

I wonder where you got the idea that new features are the problem with fixes release. 

Quote
The situation is so bad I hope somebody forks the project and starts to maintain releases. I guess bug fixes would start to flow to the new better maintained project, too.

Wishful thinking, and not realistic at all.

Quote
The current situation makes FPC look dead from outside which doesn't really matter. What matters, it makes life more difficult for people who use it and don't see it as dead.
The explanation is always "it will be released when it is ready" which is dummy because no substantial SW will ever be ready. That's why multiple release versions are made.

If you don't consider that release management to be doing anything for a stable product, simply use a snapshot.
« Last Edit: January 29, 2026, 03:05:53 pm by marcov »

ALLIGATOR

  • Sr. Member
  • ****
  • Posts: 367
  • I use FPC [main] 💪🐯💪
Re: Rolling releases Lazarus[stable or main]+FPC[main]
« Reply #29 on: January 29, 2026, 10:32:20 am »
That's why I believe that it's high time to have periodic releases of Lazarus based on FPC [main]  :)

More for Windows, I don't know how this can be agreed with the maintainers of the distributions  %)
I may seem rude - please don't take it personally

 

TinyPortal © 2005-2018