Replies: 7 comments 5 replies
-
Thanks Rob - all good info. What happens if you compile perl with Also, SP is using POSIX threads instead of MCF. Does that make a difference? |
Beta Was this translation helpful? Give feedback.
-
I tried that without success a couple of nights back - but I think the source I used was corrupted.
I'll look more at that tomorrow, and file a perl issue if I have trouble unravelling it.
I think not - but should be checked. BTW (and unrelated), Shawn, are you aware that perls 5.38.3 and 5.40.1 were released a couple of days ago ? |
Beta Was this translation helpful? Give feedback.
-
If it comes to it, it should be possible to add a P::D::S step to modify
Yes, I started on it yesterday. Progress is being tracked under #231 |
Beta Was this translation helpful? Give feedback.
-
Likely useful data point: #85 (comment) |
Beta Was this translation helpful? Give feedback.
-
Perl 5.40.1 built with
|
Beta Was this translation helpful? Give feedback.
-
I've managed to build perl-5.41.8 using gcc-14.2 such that all of the shipped modules are built with
You should find it pretty quickly if you search for I guess that narrows it down a bit .... though only to the point that it proves what the smart punters will reckon they already knew ;-) I'll give the same a go with SP's gcc-13.2.0, and provide the result as an update. UPDATE - The same procedure worked splendidly with SP's gcc-13.2.0 compiler and perl-5.41.8 source. |
Beta Was this translation helpful? Give feedback.
-
A dev release is at https://github.com/StrawberryPerl/Perl-Dist-Strawberry/releases/tag/dev_5401_20250124_gcc13 Core and dual-life modules are compiled using the same optimisations as perl itself, but anything installed or updated from CPAN uses |
Beta Was this translation helpful? Give feedback.
-
Following on from some ideas that came up in PDLPorters/pdl#522, I decided to try building the devel release of 5.41.8 (released overnight) with -O2 optimization.
It was built using
gcc version 14.2.0 (MinGW-W64 x86_64-ucrt-mcf-seh, built by Brecht Sanders, r1
, but a number of tests failed.So I reverted to optimizing with
-Os -falign-functions -falign-jumps -falign-labels -falign-loops -freorder-blocks -freorder-blocks-algorithm=stc -freorder-blocks-and-partition
- same as SP has been doing, and same as I normally do each month when a new devel release is made available..And that worked fine, of course.
I did three 64-bit builds - with nvtypes of double, long double and quadmath, respectively.
In each of those 3 installations I then reset $Config{OPTIMIZE} to
-O2
(by hacking lib/Config_heavy.pl) before building any additional modules.With optimization at -O2, I then installed some perl modules without any issues - apart from some minor issues that I also strike when I build with the usual "-Os ..." optimization:
Among those that I installed were PDL, Image::Magick, Inline::C, Math::LongDouble, Math::Float128, Math::Decimal64, Math::Decimal128, Math::GMP, Math::GMPf, Math::GMPq, "Math::GMPz, Math::MPFR, Math::Random::BlumBlumShub, Math::Random::MicaliSchnorr, Math-FakeDD, Win32::IPC, Win32::GenRandom, Math::MPFI, and a variety of prerequisite modules that are also pulled in.
My hunch is that the "-Os ...." optimization is needed only for the building of perl's guts, and that all of the Core modules could then be built with simply
-O2
optimization.I'd like to test that out, but I don't know how to orchestrate such a build. Any ideas on that ?
(I suppose I could test out the dual-life modules by re-installing them using "cpan -fi ...", but I don't think the ones in "ext" can readily be rebuilt outside of the building of perl itself.)
For my own builds, I intend to keep doing that post-build hack of re-setting $Config{optimize} to "-O2" until such time as it becomes evident that it causes a problem.
It would be a whole lot simpler if perl could just be built flawlessly with "-O2", as was once the case.
Beta Was this translation helpful? Give feedback.
All reactions