5 3f40aba3 Merge branch 'ebcdic' into blead
6 df8c7dee Fix segfault in filehandle duplication
7 b66f3475 Fix PerlIO_get_cnt and friends
11 [ this is a template for a new perldelta file. Any text flagged as XXX needs
12 to be processed before release. ]
14 perldelta - what is new for perl v5.19.4
18 This document describes differences between the 5.19.3 release and the 5.19.4
21 If you are upgrading from an earlier release such as 5.19.2, first read
22 L<perl5193delta>, which describes differences between 5.19.2 and 5.19.3.
26 XXX Any important notices here
28 =head1 Core Enhancements
30 XXX New core language features go here. Summarize user-visible core language
31 enhancements. Particularly prominent performance optimisations could go
32 here, but most should go in the L</Performance Enhancements> section.
34 [ List each enhancement as a =head2 entry ]
36 =head2 rand() now uses a consistent random number generator
38 Previously perl would use a platform specific random number generator,
39 varying between the libc C<rand()>, C<random()> or C<drand48()>.
41 This meant that the quality of perl's random numbers would vary from
42 platform to platform, from the 15 bits of C<rand()> on Win32 to
43 48-bits on POSIX platforms such as Linux with C<drand48()>.
45 Perl now uses its own internal C<drand48()> implementation on all
46 platforms. [perl #115928]
48 =head2 Better 64-bit support
50 On 64-bit platforms, the internal array functions now use 64-bit offsets,
51 allowing Perl arrays to hold more than 2**31 elements, if you have the
54 The regular expression engine now supporst strings longer than 2**31
55 characters. [perl #112790, #116907]
59 XXX Any security-related notices go here. In particular, any security
60 vulnerabilities closed should be noted here rather than in the
61 L</Selected Bug Fixes> section.
63 [ List each security issue as a =head2 entry ]
65 =head1 Incompatible Changes
67 =head2 Locale decimal point character no longer leaks outside of
68 S<C<use locale>> scope (with the exception of C<$!>)
70 This is actually a bug fix, but some code has come to rely on the bug being
71 present, so this change is listed here. The current locale that the program is
72 running under is not supposed to be visible to Perl code except within the
73 scope of a S<C<use locale>>. However, until now under certain circumstances,
74 the character used for a decimal point (often a comma) leaked outside the
77 This continues the work released in Perl 5.19.1. It turns out that that did
78 not catch all the leaks, including C<printf> and C<sprintf> not respecting
79 S<C<use locale>>. If your code is affected by this change, simply add a
82 Now, the only known place where C<'use locale'> is not respected is in the
83 stringification of L<$!|perlvar/$!>.
87 XXX Any deprecated features, syntax, modules etc. should be listed here.
89 =head2 Module removals
91 XXX Remove this section if inapplicable.
93 The following modules will be removed from the core distribution in a
94 future release, and will at that time need to be installed from CPAN.
95 Distributions on CPAN which require these modules will need to list them as
98 The core versions of these modules will now issue C<"deprecated">-category
99 warnings to alert you to this fact. To silence these deprecation warnings,
100 install the modules in question from CPAN.
102 Note that these are (with rare exceptions) fine modules that you are encouraged
103 to continue to use. Their disinclusion from core primarily hinges on their
104 necessity to bootstrapping a fully functional, CPAN-capable Perl installation,
105 not usually on concerns over their design.
109 XXX Note that deprecated modules should be listed here even if they are listed
110 as an updated module in the L</Modules and Pragmata> section.
114 [ List each other deprecation as a =head2 entry ]
116 =head1 Performance Enhancements
122 The trie performance enhancement for regular expressions has now been extended
123 to those compiled under C</iaa>.
127 =head1 Modules and Pragmata
129 XXX All changes to installed files in F<cpan/>, F<dist/>, F<ext/> and F<lib/>
130 go here. If Module::CoreList is updated, generate an initial draft of the
131 following sections using F<Porting/corelist-perldelta.pl>, which prints stub
132 entries to STDOUT. Results can be pasted in place of the '=head2' entries
133 below. A paragraph summary for important changes should then be added by hand.
134 In an ideal world, dual-life modules would have a F<Changes> file that could be
137 [ Within each section, list entries as a =item entry ]
139 =head2 New Modules and Pragmata
149 =head2 Updated Modules and Pragmata
155 L<autodie> has been upgraded from version 2.20 to 2.21.
157 Numerous improvements have been made, many speed-related. See the F<Changes>
158 file in the CPAN distribution for full details.
162 L<B> has been upgraded from version 1.45 to 1.46.
164 The fix for [perl #118525] introduced a regression in the behaviour of
165 C<B::CV::GV>, changing the return value from a C<B::SPECIAL> object on a
166 C<NULL> C<CvGV> to C<undef>. C<B::CV::GV> again returns a C<B::SPECIAL>
167 object in this case. [perl #119351]
171 L<B::Concise> has been upgraded from version 0.98 to 0.99.
173 The handling of the C<glob> operator, broken since Perl 5.17.6, has been fixed.
177 L<Carp> has been upgraded from version 1.31 to 1.32.
183 In stack traces, subroutine arguments that are strings are now quoted in a
184 consistent manner, regardless of what characters they contain and how they're
185 internally represented.
189 C<Carp> now takes care not to clobber the status variables C<$!> and
194 C<Carp> now won't vivify the C<overload::StrVal> glob or subroutine or the
199 C<Carp> now avoids some unwanted Unicode warnings on older Perls. This doesn't
200 affect behaviour with current Perl.
204 C<Carp::Heavy> detects version mismatch with C<Carp>, to give a good error
205 message if a current (stub) C<Carp::Heavy> gets loaded by an old C<Carp> that
206 expects C<Carp::Heavy> to provide subroutines.
212 L<charnames> has been upgraded from version 1.38 to 1.39.
214 This module now works on EBCDIC platforms.
218 L<CPAN::Meta> has been upgraded from version 2.132140 to 2.132510.
220 No changes have been made to the installed code other than the version bump to
221 keep in sync with the latest CPAN release.
225 L<CPAN::Meta::Requirements> has been upgraded from version 2.122 to 2.123.
227 No changes have been made to the installed code other than the version bump to
228 keep in sync with the latest CPAN release.
232 L<Data::Dumper> has been upgraded from version 2.148 to 2.149.
234 This upgrade is part of a larger change to make the array interface 64-bit safe
235 by using SSize_t instead of I32 for array indices.
237 In addition, an EBCDIC fix has been applied.
241 L<Devel::Peek> has been upgraded from version 1.13 to 1.14.
243 This upgrade is part of a larger change to preserve referential identity when
244 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
245 nonexistent array elements.
247 In addition, C<Dump> with no args was broken in Perl 5.19.3, but has now been
252 L<DynaLoader> has been upgraded from version 1.19 to 1.20.
254 The documentation now makes it clear, as has always been the case, that
255 C<dl_unload_file> is only called automatically to unload all loaded shared
256 objects if the perl interpreter was built with the C macro
257 DL_UNLOAD_ALL_AT_EXIT defined. Support for GNU DLD has also been removed.
261 L<Encode> has been upgraded from version 2.52 to 2.55.
263 An erroneous early return in C<decode_utf8> has been removed, and a bug in
264 C<_utf8_on> under COW has been fixed. Encode also now uses L<parent> rather
265 than L<base> throughout.
269 L<Exporter> has been upgraded from version 5.69 to 5.70.
271 A number of typos have been corrected in the documentation.
275 L<ExtUtils::CBuilder> has been upgraded from version 0.280205 to 0.280212.
277 No changes have been made to the installed code other than the version bump to
278 keep in sync with the latest CPAN release.
282 L<ExtUtils::Command> has been upgraded from version 1.17 to 1.18.
284 No changes have been made to the installed code other than the version bump to
285 keep in sync with the latest CPAN release.
289 L<ExtUtils::MakeMaker> has been upgraded from version 6.72 to 6.76.
291 Numerous updates and bug fixes are incorporated. See the F<Changes> file for
296 L<ExtUtils::ParseXS> has been upgraded from version 3.21 to 3.22.
298 No changes have been made to the installed code other than the version bump to
299 keep in sync with the latest CPAN release.
303 L<File::Find> has been upgraded from version 1.24 to 1.25.
305 Better diagnostics are now provided in the case of a failed C<chdir>.
309 L<File::Glob> has been upgraded from version 1.20 to 1.21.
311 C<glob()> now warns in the context of C<use warnings "syscalls";> if the
312 supplied pattern has an internal NUL (C<"\0">) character.
316 L<HTTP::Tiny> has been upgraded from version 0.034 to 0.035.
318 Encoded data from C<post_form> now preserves term order if data is provided as
319 an array reference. (They are still sorted for consistency if provided as a
324 L<I18N::LangTags> has been upgraded from version 0.39 to 0.40.
326 Bosnian has now joined Croatian and Serbian in the lists of mutually
327 intelligible Slavic languages. [perl #72594]
331 L<IO> has been upgraded from version 1.28 to 1.29.
333 A minor internals-only change has been made to the XS code.
337 L<IPC::Open3> has been upgraded from version 1.15 to 1.16.
339 This upgrade is part of a larger change to preserve referential identity when
340 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
341 nonexistent array elements.
345 L<Locale::Codes> has been upgraded from version 3.26 to 3.27.
347 New codes have been added and the (deprecated) set of FIPS-10 country codes has
352 L<Math::BigInt> has been upgraded from version 1.9992 to 1.9993.
354 Cleaned up the L<Math::BigInt> and L<Math::BigFloat> documentation to be more
355 consistent with other perl documentation. [perl #86686]
357 Added a bint() method for rounding towards zero. [perl #85296]
361 L<Math::BigInt::FastCalc> has been upgraded from version 0.30 to 0.31.
363 This upgrade is part of a larger change to make the array interface 64-bit safe
364 by using SSize_t instead of I32 for array indices.
368 L<Module::CoreList> has been upgraded from version 2.97 to 2.98.
370 The list of Perl versions covered has been updated.
374 L<Module::Load::Conditional> has been upgraded from version 0.54 to 0.58.
376 C<requires> has been made more robust. [cpan #83728]
380 L<Module::Metadata> has been upgraded from version 1.000014 to 1.000018.
382 The module's DESCRIPTION has been re-worded regarding safety/security to
383 satisfy CVE-2013-1437. Also, versions are now detainted if needed. [cpan
388 L<mro> has been upgraded from version 1.13 to 1.14.
390 This upgrade is part of a larger change to make the array interface 64-bit safe
391 by using SSize_t instead of I32 for array indices.
395 L<parent> has been upgraded from version 0.226 to 0.227.
397 No changes have been made to the installed code other than the version bump to
398 keep in sync with the latest CPAN release.
402 L<Parse::CPAN::Meta> has been upgraded from version 1.4405 to 1.4407.
404 No changes have been made to the installed code other than the version bump to
405 keep in sync with the latest CPAN release.
409 L<Perl::OSType> has been upgraded from version 1.003 to 1.005.
411 The Unix OSType 'bitrig' has been added.
415 L<perlfaq> has been upgraded from version 5.0150043 to 5.0150044.
417 The use of C<gensym> in a number of examples has been removed, the use of C<&>
418 in subroutine calls is now clarified and several new questions have been
423 L<re> has been upgraded from version 0.25 to 0.26.
425 A function signature has been corrected in the XS implementation.
429 L<Scalar::Util> has been upgraded from version 1.31 to 1.32.
431 The documentation of C<blessed> has been improved to mention the fact that
432 package "0" is defined but false.
436 L<Socket> has been upgraded from version 2.011 to 2.012.
438 Syntax errors when building on the WinCE platform have been fixed. [cpan #87389]
442 L<Storable> has been upgraded from version 2.46 to 2.47.
444 This upgrade is part of a larger change to preserve referential identity when
445 passing C<undef> to a subroutine by using NULL rather than &PL_sv_undef for
446 nonexistent array elements.
450 L<Term::ReadLine> has been upgraded from version 1.10 to 1.14.
452 Term::ReadLine::EditLine support has been added.
456 L<Time::Piece> has been upgraded from version 1.22 to 1.23.
458 Day of year parsing (like "%y%j") has been fixed.
462 L<Unicode::Collate> has been upgraded from version 0.98 to 0.99.
464 By default, out-of-range values are replaced with C<U+FFFD> (REPLACEMENT
465 CHARACTER) when C<UCA_Version> E<gt>= 22, or ignored when C<UCA_Version> E<lt>=
466 20. When C<UCA_Version> E<gt>= 22, the weights of out-of-range values can be
471 L<Unicode::UCD> has been upgraded from version 0.53 to 0.54.
473 This module now works on EBCDIC platforms.
477 L<version> has been upgraded from version 0.9903 to 0.9904.
479 No changes have been made to the installed code other than the version bump to
480 keep in sync with the latest CPAN release.
484 L<warnings> has been upgraded from version 1.18 to 1.19.
486 The C<syscalls> warnings category has been added to check for embedded NUL
487 (C<"\0">) characters in pathnames and string arguments to other system calls.
491 L<XS::Typemap> has been upgraded from version 0.10 to 0.11.
495 =head2 Removed Modules and Pragmata
507 XXX Changes to files in F<pod/> go here. Consider grouping entries by
508 file and be sure to link to the appropriate page, e.g. L<perlfunc>.
510 =head2 New Documentation
512 XXX Changes which create B<new> files in F<pod/> go here.
516 XXX Description of the purpose of the new file here
518 =head2 Changes to Existing Documentation
520 XXX Changes which significantly change existing files in F<pod/> go here.
521 However, any changes to F<pod/perldiag.pod> should go in the L</Diagnostics>
530 XXX Description of the change here
536 The following additions or changes have been made to diagnostic output,
537 including warnings and fatal error messages. For the complete list of
538 diagnostic messages, see L<perldiag>.
540 XXX New or changed warnings emitted by the core's C<C> code go here. Also
541 include any changes in L<perldiag> that reconcile it to the C<C> code.
543 =head2 New Diagnostics
545 XXX Newly added diagnostic messages go under here, separated into New Errors
554 XXX L<message|perldiag/"message">
564 L<Invalid \0 character in %s for %s: %s\0%s|perldiag/"Invalid \0 character in %s for %s: %s\0%s">
566 (W syscalls) Embedded \0 characters in pathnames or other system call arguments
567 produce a warning as of 5.20. The parts after the \0 were formerly ignored by
572 =head2 Changes to Existing Diagnostics
574 XXX Changes (i.e. rewording) of diagnostic messages go here
580 Warnings and errors from the regexp engine are now UTF-8 clean
584 The "Unknown switch condition" error message has some slight changes.
585 This error triggers when there is an unknown condition in a (?(foo))
586 conditional; The error message used to read:
588 Unknown switch condition (?(%s in regex;
590 But what %s could be was mostly up to luck; For (?(foobar)), you
591 might've seen "fo" or "f". For Unicode characters, you'd generally
592 get a corrupted string.
593 The message was changed to read:
595 Unknown switch condition (?(...)) in regex;
597 And additionally, the '<-- HERE' marker in the error will now point
598 to the correct spot in the regex.
602 =head1 Utility Changes
604 XXX Changes to installed programs such as F<perlbug> and F<xsubpp> go here.
605 Most of these are built within the directories F<utils> and F<x2p>.
607 [ List utility changes as a =head3 entry for each utility and =item
608 entries for each change
609 Use L<XXX> with program names to get proper documentation linking. ]
617 L<find2perl> now handles C<?> wildcards correctly. [perl #113054]
621 =head1 Configuration and Compilation
623 XXX Changes to F<Configure>, F<installperl>, F<installman>, and analogous tools
624 go here. Any other changes to the Perl build process should be listed here.
625 However, any platform-specific changes should be listed in the
626 L</Platform Support> section, instead.
628 [ List changes as a =item entry ].
634 The F<Makefile.PL> for C<SDBM_File> now generates a better F<Makefile>, which
635 avoids a race condition during parallel makes, which could cause the build to
636 fail. This is the last known parallel make problem (on *nix platforms), and
637 therefore we believe that a parallel make should now always be error free.
641 Strictly only for a build where build files such as F<Makefile.SH> have not
642 been updated by C<git> in an already configured and built tree.
648 XXX Any significant changes to the testing of a freshly built perl should be
649 listed here. Changes which create B<new> files in F<t/> go here as do any
650 large changes to the testing harness (e.g. when parallel testing was added).
651 Changes to existing files in F<t/> aren't worth summarizing, although the bugs
652 that they represent may be covered elsewhere.
654 [ List each test improvement as a =item entry ]
660 The test script F<t/bigmem/regexp.t> has been added to test that regular
661 expression matches on very large strings now succeed as expected.
665 Various cases of C<die>, C<last>, C<goto> and C<exit> triggering C<DESTROY> are
666 now tested by the new test script F<t/op/rt119311.t>.
670 The new test script F<t/win32/signal.t> tests that C<$!> and C<$^E> are now
671 preserved across signal handlers by the Win32 signal emulation code.
675 The test script F<t/x2p/find2perl.t> has been added to test the F<find2perl>
676 program on platforms where it is practical to do so.
680 =head1 Platform Support
682 XXX Any changes to platform support should be listed in the sections below.
684 [ Within the sections, list each platform as a =item entry with specific
685 changes as paragraphs below it. ]
689 XXX List any platforms that this version of perl compiles on, that previous
690 versions did not. These will either be enabled by new files in the F<hints/>
691 directories, or new subdirectories and F<README> files at the top level of the
698 Compile support has been added for Bitrig, a fork of OpenBSD.
702 =head2 Discontinued Platforms
704 XXX List any platforms that this version of perl no longer compiles on.
706 Configure hints and conditional code for several very old platforms
707 has been removed. We have not received reports for these in many years,
708 typically not since perl-5.6.0.
714 Configure support for the 3b1, also known as the AT&T Unix PC (and the
715 similar AT&T 7300), has been removed.
719 =head2 Platform-Specific Notes
721 XXX List any changes for specific platforms. This could include configuration
722 and compilation changes or changes in portability/compatibility. However,
723 changes within modules for platforms should generally be listed in the
724 L</Modules and Pragmata> section.
730 The building of XS modules has largely been restored. Several still cannot
731 (yet) be built but it is now possible to build Perl on WinCE with only a couple
732 of further patches (to L<Socket> and L<ExtUtils::MakeMaker>), hopefully to be
737 =head1 Internal Changes
739 XXX Changes which affect the interface available to C<XS> code go here. Other
740 significant internal changes for future core maintainers should be noted as
743 [ List each change as a =item entry ]
749 The internal representation has changed for the match variables C<$1>, C<$2>
750 I<etc.>, C<$`>, C<$&>, C<$'>, C<${^PREMATCH}>, C<${^MATCH}> and
751 C<${^POSTMATCH>. It uses slightly less memory, avoids string comparisons
752 and numeric conversions during lookup, and uses 23 fewer lines of C. This
753 change should not affect any external code.
757 Arrays now use NULL internally to represent unused slots, instead of
758 C<&PL_sv_undef>. C<&PL_sv_undef> is no longer treated as a special value,
759 so C<av_store(av, 0, &PL_sv_undef)> will cause element 0 of that array to
760 hold a read-only undefined scalar. C<$array[0] = anything> will croak and
761 C<\$array[0]> will compare equal to C<\undef>.
765 =head1 Selected Bug Fixes
767 XXX Important bug fixes in the core language are summarized here. Bug fixes in
768 files in F<ext/> and F<lib/> are best summarized in L</Modules and Pragmata>.
770 [ List each fix as a =item entry ]
776 The value of C<$^E> is now saved across signal handlers on Win32. [perl #85104]
780 A lexical filehandle (as in C<open my $fh...>) is usually given a name
781 based on the current package and the name of the variable; e.g.,
782 "main::$fh". Under recursion, the filehandle was losing the "$fh" part of
783 the name. This has been fixed.
787 Perl 5.19.3 accidentally extended the previous bug to all closures, even
788 when not called recursively; i.e., lexical handles in closure would always
789 be called "main::" or "MyPackage::" etc. This has been fixed.
793 Uninitialized values returned by XSUBs are no longer exempt from
794 uninitialized warnings. [perl #118693]
798 C<elsif ("")> no longer erroneous produces a warning about void context.
803 Passing C<undef> to a subroutine now causes @_ to contain the same read-only undefined scalar that C<undef> returns. Furthermore, C<exists $_[0]> will now return true if C<undef> was the first argument.
804 [perl #7508, #109726].
808 Passing a nonexistent array element to a subroutine does not usually
809 autovivify it unless the subroutine modifies its argument. This did not
810 work correctly with negative indices and with nonexistent elements within
811 the array. The element would be vivified immediately. The delayed
812 vivification has been extended to work with those. [perl #118691]
816 Assigning references or globs to the scalar returned by C<$#foo> after the
817 @foo array has been freed no longer causes assertion failures on debugging
818 builds and memory leaks on regular builds.
822 Perl 5.19.2 threw line numbers off after some cases of line breaks
823 following keywords, such as
828 This has been fixed. [perl #118931]
832 On 64-bit platforms, large ranges like 1..1000000000000 no longer crash,
833 but eat up all your memory instead. [perl #119161]
837 C<__DATA__> now puts the C<DATA> handle in the right package, even if the
838 current package has been renamed through glob assignment.
842 The string position set by C<pos> could shift if the string changed
843 representation internally to or from utf8. This could happen, e.g., with
844 references to objects with string overloading.
848 Taking references to the return values of two C<pos> calls with the same
849 argument, and then assigning a reference to one and C<undef> to the other,
850 could result in assertion failures or memory leaks.
854 Elements of C<@-> and C<@+> now update correctly when they refer to
855 nonexistent captures. Previously, a referenced element (C<$ref = \$-[1]>)
856 could refer to the wrong match after subsequent matches.
860 When C<die>, C<last>, C<next>, C<redo>, C<goto> and C<exit> unwind the
861 scope, it is possible for DESTROY recursively to call a subroutine or
862 format that is currently being exited. It that case, sometimes the lexical
863 variables inside the sub would start out having values from the outer call,
864 instead of being undefined as they should. This has been fixed.
869 C<${^MPEN>} is no longer treated as a synonym for C<${^MATCH}>.
873 Perl now tries a little harder to return the correct line number in
874 C<(caller)[2]>. [perl #115768]
878 Line numbers inside multiline quote-like operators are now reported correctly. [perl #3643]
882 C<#line> directives inside code embedded in quote-like operators are now respected.
886 Line numbers are now correct inside the second here-doc when two here-doc
887 markers occur on the same line.
891 Perl 5.19.2 inadvertently stopped some lines of code from being available
892 to the debugger if C<< => >> occurred at the beginning of a line and the
893 previous line ended with a keyword. This is now fixed.
897 An optimisation in Perl 5.18 made incorrect assumptions causing a bad
898 interaction with the L<Devel::CallParser> CPAN module. If the module was
899 loaded, then lexical variables declared in separate statements following a C<my(...)> list might fail to be cleared on scope exit.
903 C<&xsub> and C<goto &xsub> calls now allow the called subroutine to
904 autovivify elements of @_.
908 C<&xsub> and C<goto &xsub> no longer crash if C<*_> has been undefined and
909 has no ARRAY entry (i.e., @_ does not exist).
913 =head1 Known Problems
915 XXX Descriptions of platform agnostic bugs we know we can't fix go here. Any
916 tests that had to be C<TODO>ed for the release would be noted here. Unfixed
917 platform specific bugs also go here.
919 [ List each fix as a =item entry ]
931 XXX If any significant core contributor has died, we've added a short obituary
934 =head1 Acknowledgements
936 XXX Generate this with:
938 perl Porting/acknowledgements.pl v5.19.3..HEAD
940 =head1 Reporting Bugs
942 If you find what you think is a bug, you might check the articles recently
943 posted to the comp.lang.perl.misc newsgroup and the perl bug database at
944 http://rt.perl.org/perlbug/ . There may also be information at
945 http://www.perl.org/ , the Perl Home Page.
947 If you believe you have an unreported bug, please run the L<perlbug> program
948 included with your release. Be sure to trim your bug down to a tiny but
949 sufficient test case. Your bug report, along with the output of C<perl -V>,
950 will be sent off to perlbug@perl.org to be analysed by the Perl porting team.
952 If the bug you are reporting has security implications, which make it
953 inappropriate to send to a publicly archived mailing list, then please send it
954 to perl5-security-report@perl.org. This points to a closed subscription
955 unarchived mailing list, which includes all the core committers, who will be
956 able to help assess the impact of issues, figure out a resolution, and help
957 co-ordinate the release of patches to mitigate or fix the problem across all
958 platforms on which Perl is supported. Please only use this address for
959 security issues in the Perl core, not for modules independently distributed on
964 The F<Changes> file for an explanation of how to view exhaustive details on
967 The F<INSTALL> file for how to build Perl.
969 The F<README> file for general stuff.
971 The F<Artistic> and F<Copying> files for copyright information.