Recent

Author Topic: Practical Ways to Help Lazarus and Free Pascal Thrive?  (Read 10616 times)

JD

  • Hero Member
  • *****
  • Posts: 1909
Re: Practical Ways to Help Lazarus and Free Pascal Thrive?
« Reply #15 on: May 09, 2025, 11:01:40 am »
A hard core killer app written in FPC.  An app that would attract hard core programmers towards Pascal.  That's not easy to create.

Yes, a hard core killer app would definitely help.  I got one in the back of my mind that I occasionally work on but, other people who have done that app have taken over 30 years to develop it and/or benefit from having a team of superbly knowledgeable and qualified people working on it.  That's tough to match and tougher to exceed.  Not going to happen but, it's my pipe dream and it's free, what's unfortunate is, it's rather unlikely I'll provide the helpful killer app.

@440bx
Maybe this will give you some new ideas since you like peeking into Windows Internals. Unfortunately, flamerOn is no longer on this forum and BigChimp passed away.

Lazarus applications with source provided by flamerOn
https://forum.lazarus.freepascal.org/index.php?topic=22225.5
« Last Edit: May 09, 2025, 11:11:33 am by JD »
Linux Mint - Lazarus 4.0/FPC 3.2.2,
Windows - Lazarus 4.0/FPC 3.2.2

mORMot 2, PostgreSQL & MariaDB.

Martin_fr

  • Administrator
  • Hero Member
  • *
  • Posts: 12075
  • Debugger - SynEdit - and more
    • wiki
Re: Practical Ways to Help Lazarus and Free Pascal Thrive?
« Reply #16 on: May 09, 2025, 11:09:38 am »
@Martin_fr,

Regarding item 3. I would like to help there.

Well, here in Germany is a magazine called "CT". IIRC years ago the printed a small article (just a few lines) that someone must have sent them. But I don't know the exact details. I would assume in other countries there are similar magazines. And there may be some online too.

The entire idea is just to have the name appear somewhere. So people will have seen it. And people will have seen the word Pascal is still in circulation. It's not much, but it can add to the overall effort.

It means:
- finding publishers that will accept such articles and contact details
- writing a small article
- working with translators for different countries

The article must probably be small enough. E.g. the magazine I mention has a section (a few pages) with 4 or 5 articles per page, each just describing a new release of something. For example here is the online version of such a page: https://www.heise.de/select/ct/2025/10/2509214260237424602 (as you can see the articles include stuff even about small projects / so likely they would include our announcement too)

Thaddy

  • Hero Member
  • *****
  • Posts: 18726
  • To Europe: simply sell USA bonds: dollar collapses
Re: Practical Ways to Help Lazarus and Free Pascal Thrive?
« Reply #17 on: May 09, 2025, 11:44:45 am »
side note: Ah, yes, Ct. Famed for including at one time a complete D7 pro! (Yes, pro, with rtl/vcl sources and all) on their CD. Great source. Attick is full of Ct disks. Where are those days?
« Last Edit: May 09, 2025, 11:46:38 am by Thaddy »
If Europe sells their USA bonds the USD will collapse. Europe can affort that given average state debts. The USA can't affort that. Just an advice...

LV

  • Sr. Member
  • ****
  • Posts: 404
Re: Practical Ways to Help Lazarus and Free Pascal Thrive?
« Reply #18 on: May 09, 2025, 11:51:43 am »
It seems CudaText wasn’t mentioned here, even though it has 2.5 million downloads on SourceForge alone.
https://sourceforge.net/projects/cudatext/files/stats/timeline?dates=2005-02-08+to+2025-05-09
This project is written in Free Pascal using Lazarus, which serves as great promotion for the platform.
https://github.com/Alexey-T/CudaText

440bx

  • Hero Member
  • *****
  • Posts: 6063
Re: Practical Ways to Help Lazarus and Free Pascal Thrive?
« Reply #19 on: May 09, 2025, 12:10:51 pm »
@440bx
Maybe this will give you some new ideas since you like peeking into Windows Internals. Unfortunately, flamerOn is no longer on this forum and BigChimp passed away.

Lazarus applications with source provided by flamerOn
https://forum.lazarus.freepascal.org/index.php?topic=22225.5
@JD
Those are interesting.  Thank you for the link.

My pipe dream app which I work on only every now and then is a dis-assembler a la IDA Pro or Ghidra but, more accurate and much more informative.  My thinking is that if there was an app like that but _much better_ than either one of those, that would attract some really hard core programmers to further enhance it.  I doubt I'll ever get it to what I consider is the "minimum acceptable" (which is way beyond what any other similar utility does today.)  My ultimate goal is to emit FPC assembly routines that, when compiled, generate the same code as the original (that would require an additional utility to patch the resulting .exe to remove FPC's library (which is obviously not needed.)  That would allow creating a Lazarus project for it, which after compiled with debug symbols could be run and debugged in the Lazarus IDE.   That's how I envision porting C code to Pascal. Disassemble the executable to Pascal assembly functions, no darn C headers and macros and all that C junk to deal with.  A "sidebar" to it is generating DWARF debug symbols for disassembled Windows dlls, that would allow the Lazarus IDE to operate like Visual Studio does, when stepping in a system dll, Visual Studio automatically downloads the PDB file.  Lazarus would have a "bank" of external DWARF debug files for the Windows dlls and best of all, since the disassembly can be edited better symbols can be had as the disassembly gets better and better.  That would attract some reverse engineers and, there would be no alternative for them but to use Lazarus and Pascal :)

One thing I completed a number of years ago is a "wrapper" to turn a .exe into a callable dll.  For instance, I fully implemented it for Delphi 2.  I have a program that loads Delphi 2's dcc32.exe as a dll and compiles all the .dpr files it finds in a directory and its subdirectories.  A bonus is that, it executes _faster_ than the original .exe because its I/O no longer needs to use IPC (for it to be done by the console) and the wrapper does a little bit of caching.  The result is close to twice the speed of executing dcc32.exe (one of the reasons is because the .exe doesn't have to be loaded for every compile.)  It also does it for BRCC32.exe (the resource compiler).  Therefore the utility can do a full build of resources and exes. 

One thought that has crossed my mind is to modify that wrapper to turn FPC into a service which Lazarus could use.  That would improve the edit-compile-run cycle.  It's been a recurring thought, maybe I'll scratch that itch someday.  I'd probably give it serious consideration and move it up the "priority queue" if I knew the Lazarus team would seriously consider using it.  Not a killer app but, I think it would be a nice "polishing" improvement.

Combine that FPC service with the dis-assembler I first mentioned and you got something that blows everything that's currently available out of the water.  (there are a few other "little" improvements I have in the back of my mind but, that's already enough to keep me busy until I kick the bucket.)

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

JD

  • Hero Member
  • *****
  • Posts: 1909
Re: Practical Ways to Help Lazarus and Free Pascal Thrive?
« Reply #20 on: May 09, 2025, 12:40:29 pm »
It seems CudaText wasn’t mentioned here, even though it has 2.5 million downloads on SourceForge alone.
https://sourceforge.net/projects/cudatext/files/stats/timeline?dates=2005-02-08+to+2025-05-09
This project is written in Free Pascal using Lazarus, which serves as great promotion for the platform.
https://github.com/Alexey-T/CudaText

His handle on this forum is AlexTP
Linux Mint - Lazarus 4.0/FPC 3.2.2,
Windows - Lazarus 4.0/FPC 3.2.2

mORMot 2, PostgreSQL & MariaDB.

ccrause

  • Hero Member
  • *****
  • Posts: 1092
Re: Practical Ways to Help Lazarus and Free Pascal Thrive?
« Reply #21 on: May 10, 2025, 09:20:37 am »
My pipe dream app which I work on only every now and then is a dis-assembler a la IDA Pro or Ghidra but, more accurate and much more informative.
It would be great if the (cross platform) disassembler can be integrated with fpdebug. This is one of the time consuming steps when adding new platform support in fpdebug.  Obviously your focus is different from "just debugging", but the disassembler functionality could potentially be shared between the projects.

Martin_fr

  • Administrator
  • Hero Member
  • *
  • Posts: 12075
  • Debugger - SynEdit - and more
    • wiki

Thaddy

  • Hero Member
  • *****
  • Posts: 18726
  • To Europe: simply sell USA bonds: dollar collapses
Re: Practical Ways to Help Lazarus and Free Pascal Thrive?
« Reply #23 on: May 10, 2025, 12:06:34 pm »
Wrong statement in the article: fpc is supported on all flavors of Raspberry pi including 1, not just 4 and later.
I still don't know who ported and packaged it but it has always been in the distribution from PI day one. (well that should be 3.14........)
« Last Edit: May 10, 2025, 12:09:09 pm by Thaddy »
If Europe sells their USA bonds the USD will collapse. Europe can affort that given average state debts. The USA can't affort that. Just an advice...

440bx

  • Hero Member
  • *****
  • Posts: 6063
Re: Practical Ways to Help Lazarus and Free Pascal Thrive?
« Reply #24 on: May 10, 2025, 03:38:26 pm »
It would be great if the (cross platform) disassembler can be integrated with fpdebug. This is one of the time consuming steps when adding new platform support in fpdebug.  Obviously your focus is different from "just debugging", but the disassembler functionality could potentially be shared between the projects.
It used to be that writing the core part of a dis-assembler was not a big deal.  I'm thinking about the days of the i486.  I don't remember exactly but, IIRC, there were only about 140 instructions.  The only "difficult" part was dealing with a handful of undocumented functions or undocumented side effects in some instructions.  Typical programming bread and butter.

Today, writing a half-way decent dis-assembler is a whole lot of work (not to mention the necessary testing.)  That's why I was using Distorm for a while and now I'm using Zydis.  With today's modern processors, the dis-assembler alone is a real project.
FPC v3.2.2 and Lazarus v4.0rc3 on Windows 7 SP1 64bit.

munair

  • Hero Member
  • *****
  • Posts: 887
  • compiler developer @SharpBASIC
    • SharpBASIC
Re: Practical Ways to Help Lazarus and Free Pascal Thrive?
« Reply #25 on: May 10, 2025, 04:53:09 pm »
Not sure if it qualifies as a "killer app", but it sure is unique software 100% written with Lazarus. The page also mentions that.
https://ssgeos.org/solpage.htm
It's only logical.

silvercoder70

  • Full Member
  • ***
  • Posts: 200
    • Tim Coates
Re: Practical Ways to Help Lazarus and Free Pascal Thrive?
« Reply #26 on: May 11, 2025, 11:57:00 am »
Perhaps (sometimes?) we can easily forget there are useful tools out there that are written with free pascal. In addition to the solpage mention,a few apps get a mention here (Scientific Pascal):

https://bsky.app/profile/scipastips.bsky.social

and might indicate that fpc/lazarus gets more use in the research area. But perhaps not what would be classed as a killer app.

And for my own benefit ...

@440bx – Many ideas here and your disassembler project sounds seriously ambitious, but also really intriguing.

@Thaddy – good catch on the Raspberry Pi detail. Lazarus and FPC have had Pi support for a long time, and that kind of correction helps set the record straight. Hope you mentioned it :)

@JD – thanks for the reminder about CudaText. With millions of downloads, it’s probably the most widely used Lazarus-based app out there — a great showcase for the platform.

If anyone’s working on similar tools or experiments, please share? I would also like to do a video with some devs using fpc down the track, :)
🔥 Pascal Isn’t Dead -> See What It Can Do: @silvercoder70 on YouTube

VisualLab

  • Hero Member
  • *****
  • Posts: 711
Re: Practical Ways to Help Lazarus and Free Pascal Thrive?
« Reply #27 on: May 12, 2025, 02:37:18 pm »
I don't think that killer applications written using FPC/Lazarus are that important, because that's what the end user usually comes into contact with. The vast majority of end users don't care what the program was created in. Ergonomics are important to the user. Nevertheless, I think that applications created using FPC/Lazarus should be documented. This will always, to some extent, increase the popularization of FPC/Lazarus.

However, considering that FPC and Lazarus are programming tools, the most effective way to popularize them would be:
  • expanding and improving: compiler, debugger and IDE,
  • expanding existing libraries and creating new ones,
  • expanding and improving documentation regarding: FPC, Lazarus, libraries.
Point (1) time is being realized (slowly but steadily). Some fixes to the compiler (language pains) should be included. Some of them were mentioned by 440bx, such oddities as writable constants (but there are more). This should “be straightened out” in the language.

Point (2) is also (generally) realized. But there are fewer libraries compared to, for example, C or C++ (which is obvious - the number of people involved). And this point is one of the more important ones. This is well shown by the popularity of Python - the reason is libraries (even though it is basically the worst programming language, right next to JS). In any case, it seems to me that for most programmers it is probably easier to create libraries than to expand a compiler or debugger.

Point (3) is also very important. Much of the content in the documentation would need to be improved, supplemented and expanded. In addition, one central repository with documentation would be useful: FPC, Lazarus, libraries (scattering it across several different websites is inconvenient). In addition, many descriptions are incomplete (this has been mentioned many times on this forum). Also the look of these pages and the layout of the content (headers, links, color, size and font style, etc.) is quite archaic. It would be good to refresh this. But those who wanted to do it would have to have access to it.

The FPC and Lazarus website(s) could also use some refreshing. It doesn't always have to involve completely turning everything upside down. Just "a bit" is enough.

I have no major objections to the tutorials. They are quite decent. Besides, creating them is very time-consuming and demanding. But basic documentation of tools and libraries is necessary. Without it, it is difficult to work even for those who already know FPC/Lazarus.



I believe that the first step is to improve, streamline and expand the documentation, starting with the appearance and then moving on to the content (in stages). Yes, I know, it's a lot of work. But without it, the slow "downhill slide" will continue (which I don't think any of us want).
« Last Edit: May 12, 2025, 09:05:48 pm by VisualLab »

Martin_fr

  • Administrator
  • Hero Member
  • *
  • Posts: 12075
  • Debugger - SynEdit - and more
    • wiki
Re: Practical Ways to Help Lazarus and Free Pascal Thrive?
« Reply #28 on: May 13, 2025, 12:32:37 am »
The best thing thst could happen with pascal programming at this point would be to make a better community with the people who still use it and reinstate real-time support like there used to be.
Last I heard there are people who use similar real time media (just with a fancy modern alias). So it ain't dead. They just don't wont to play with everyone. Their choice.

Also, we have a great community, right here on this forum, on many other forums around the world, in other media, and real life local meeting groups.
Saying "make a better community" is an insult to any of them.

VisualLab

  • Hero Member
  • *****
  • Posts: 711
Re: Practical Ways to Help Lazarus and Free Pascal Thrive?
« Reply #29 on: May 13, 2025, 01:40:59 am »
I don’t think most people even want to use pascal because they have heard so much bad propaganda about it. Therefore changing the documentation to appeal to people who aren’t coming is a waste of time.

Documentation is important, it also serves (and will serve) those who use Pascal and Object Pascal. After all, not everyone has all the details related to the compiler, IDE or libraries (RTL, FCL, LCL) in mind. It depends on the frequency of use.

In addition, from time to time it is necessary to fill in the gaps in the documentation and improve its appearance. At home, some changes are also made every few years (painting the walls, repairs, rearranging the furniture, etc.). This is not about complaining, but about specific actions for the general benefit of the community.
« Last Edit: May 13, 2025, 01:58:44 pm by VisualLab »

 

TinyPortal © 2005-2018