[fpc-pascal] What's in Hello World
tsiegel at softcon.com
tsiegel at softcon.com
Sun Jan 7 22:04:23 CET 2024
For what it's worth, the hello world program in powerbasic
(https://www.powerbasic.com) comes to a whooping 7,168 bytes. That's the
console version, not the gui version, that's a bit bigger, but by not
much more. I have an epub reader I've been working on for a few years,
on and off, and that program which has a complete gui, web browser
calls, and the like, weighs in at just over 75K. I always use
powerbasic if I'm writing a windows only program, since it's ability to
produce such small executables is well known. Heck, it even has a
#bloat command in the compiler to artificially inflate the size of the
exe files it builds, because so many didn't believe that it was
producing an actual windows binary.
I use FPC when working on cross platform programs, since it can compile
for many platforms, unless I need a gui. In that case, I use java,
since I can put it in grid mode, and then I don't have to worry about
how the gui is laid out. Something that typically takes sighted
assistance, and a great deal of time otherwise.
Of course, GCC produces small binaries too, and I'll use that too when
the need arrises.
It all depends on what I am working on, and where it is going to run.
On 1/7/2024 7:33 PM, Michael Van Canneyt via fpc-pascal wrote:
>
>
> On Sun, 7 Jan 2024, Sven Barth via fpc-pascal wrote:
>
>>>>
>>>> - FPC compiled as is: 388976 B
>>>> - FPC compiled with full smartlinking: 55920 B
>>>> - FPC compiled with C linkage: 388760 B
>>>> - FPC compiled with full smartlinking and C linkage: 56792 B
>>>
>>> Maybe it is a good idea to add these numbers to the above WIKI page,
>>> to quantify
>>> the discussion and to illustrate what the effect is of various options.
>>
>> Probably... 🤷♀️
>>
>> And just for the fun of it, the size if the RTL is compiled into a
>> dynamic package and that is used:
>>
>> - no smartlinking: 15784 B
>> - with smartlinking: 15608 B
>>
>> With the librtl.so having a size of 649912 B which will ammortize
>> itself if multiple applications use dynamic packages.
>
> Nice result. Smaller than a C program :-)
>
>>
>>> I think we should also explain why linking to C has almost no effect
>>> on actual binary size.
>>
>> That's mainly because the functions that differ between FPC_USE_LIBC
>> and not are rather slim syscalls anyway, so the main bunch of Pascal
>> code is still the same in both cases.
>
> I know this, but most likely users will not realize this... :-)
>
> Michael.
>
> _______________________________________________
> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
More information about the fpc-pascal
mailing list