diff options
author | Nicholas Clark <nick@ccl4.org> | 2021-10-10 18:35:06 +0000 |
---|---|---|
committer | Nicholas Clark <nick@ccl4.org> | 2021-10-13 08:09:18 +0200 |
commit | c44af6e357f211a32d6942d405451f8003ff808c (patch) | |
tree | 0b6a176bd76728cd85902d6014a009e0d957b95a | |
parent | 4214a5f7a04127ac82392db8df150746acd2355a (diff) | |
download | perl-c44af6e357f211a32d6942d405451f8003ff808c.tar.gz |
Add a section to INSTALL describing that we now rely on some C99
And the implications for XS authors writing code to work on both current and
earlier perl installations.
-rw-r--r-- | INSTALL | 37 |
1 files changed, 37 insertions, 0 deletions
@@ -88,6 +88,8 @@ potential incompatibilities introduced with this release. A few of the most important issues are listed below, but you should refer to F<pod/perldelta.pod> for more detailed information. +=head3 Compatibility with earlier versions + B<WARNING:> This version is not binary compatible with earlier versions of Perl. If you have built extensions (i.e. modules that include C code) using an earlier version of Perl, you will need to rebuild and reinstall @@ -107,6 +109,41 @@ list of locally installed modules. Also see the L<CPAN> module's C<autobundle> function for one way to make a "bundle" of your currently installed modules. +=head3 C99 + +With 5.36 we changed our C compiler baseline requirement from "ANSI C89" to +"C89 plus some specific C99 features". We have been using C99 features +optionally for some time - we now additionally B<rely> on a few in the core C +code and installed headers, which we know work on all supported compilers on +all platforms we target. Because earlier versions of Perl still compile with +strictly ANSI C89 compilers and there are still a few installations in the +wild which use these very old compilers, XS code that targets earlier versions +of Perl must not B<rely> on C99 features - that includes XS code in this +distribution that is dual life on CPAN. To test that XS code can build on +such compilers, some authors configure their perl builds with compiler flags +to warn or raise errors on C99 specific features, most often for mixed +declarations and code. This obviously will not work if you attempt it for +this release - it will not build. However, XS authors should be aware that +this means + +=over 4 + +=item * + +If you change the C compiler flags in your F<Makefile.PL> or similar to add +such warnings or errors, you must now only do it for 5.35.4 or earlier. + +=item * + +Do not rely on now being able to use C99 features in your XS code, even for +platforms with C99 compilers - some installations of earlier versions of perl +are deliberately configured to enforce C89 standards so that locally authored +extension code conforms to them. If you choose to require C99 for your code, +that's fine, but do so knowing that if you distribute it, some installations +of perl are configured to fault C99. + +=back + =head1 Run Configure Configure will figure out various things about your system. Some |