This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update Module::CoreList for 5.31.5
[perl5.git] / dist / Module-CoreList / lib / Module / CoreList.pod
1 =head1 NAME
2
3 Module::CoreList - what modules shipped with versions of perl
4
5 =head1 SYNOPSIS
6
7  use Module::CoreList;
8
9  print $Module::CoreList::version{5.00503}{CPAN}; # prints 1.48
10
11  print Module::CoreList->first_release('File::Spec');
12  # prints 5.00405
13
14  print Module::CoreList->first_release_by_date('File::Spec');
15  # prints 5.005
16
17  print Module::CoreList->first_release('File::Spec', 0.82);
18  # prints 5.006001
19
20  if (Module::CoreList::is_core('File::Spec')) {
21    print "File::Spec is a core module\n";
22  }
23
24  print join ', ', Module::CoreList->find_modules(qr/Data/);
25     # prints 'Data::Dumper'
26  print join ', ',
27           Module::CoreList->find_modules(qr/test::h.*::.*s/i, 5.008008);
28     # prints 'Test::Harness::Assert, Test::Harness::Straps'
29
30  print join ", ", @{ $Module::CoreList::families{5.005} };
31     # prints "5.005, 5.00503, 5.00504"
32
33 =head1 DESCRIPTION
34
35 Module::CoreList provides information on which core and dual-life modules shipped
36 with each version of L<perl>.
37
38 It provides a number of mechanisms for querying this information.
39
40 There is a utility called L<corelist> provided with this module
41 which is a convenient way of querying from the command-line.
42
43 There is a functional programming API available for programmers to query
44 information.
45
46 Programmers may also query the contained hash structures to find relevant
47 information.
48
49 =head1 FUNCTIONS API
50
51 These are the functions that are available, they may either be called as functions or class methods:
52
53   Module::CoreList::first_release('File::Spec'); # as a function
54
55   Module::CoreList->first_release('File::Spec'); # class method
56
57 =over
58
59 =item C<first_release( MODULE )>
60
61 Behaviour since version 2.11
62
63 Requires a MODULE name as an argument, returns the perl version when that module first
64 appeared in core as ordered by perl version number or undef ( in scalar context )
65 or an empty list ( in list context ) if that module is not in core.
66
67 =item C<first_release_by_date( MODULE )>
68
69 Requires a MODULE name as an argument, returns the perl version when that module first
70 appeared in core as ordered by release date or undef ( in scalar context )
71 or an empty list ( in list context ) if that module is not in core.
72
73 =item C<find_modules( REGEX, [ LIST OF PERLS ] )>
74
75 Takes a regex as an argument, returns a list of modules that match the regex given.
76 If only a regex is provided applies to all modules in all perl versions. Optionally
77 you may provide a list of perl versions to limit the regex search.
78
79 =item C<find_version( PERL_VERSION )>
80
81 Takes a perl version as an argument. Upon successful completion, returns a
82 reference to a hash.  Each element of that hash has a key which is the name of
83 a module (I<e.g.,> 'File::Path') shipped with that version of perl and a value
84 which is the version number (I<e.g.,> '2.09') of that module which shipped
85 with that version of perl .  Returns C<undef> otherwise.
86
87 =item C<is_core( MODULE, [ MODULE_VERSION, [ PERL_VERSION ] ] )>
88
89 Available in version 2.99 and above.
90
91 Returns true if MODULE was bundled with the specified version of Perl.
92 You can optionally specify a minimum version of the module,
93 and can also specify a version of Perl.
94 If a version of Perl isn't specified,
95 C<is_core()> will use the numeric version of Perl that is running (ie C<$]>).
96
97 If you want to specify the version of Perl, but don't care about
98 the version of the module, pass C<undef> for the module version:
99
100 =item C<is_deprecated( MODULE, PERL_VERSION )>
101
102 Available in version 2.22 and above.
103
104 Returns true if MODULE is marked as deprecated in PERL_VERSION.  If PERL_VERSION is
105 omitted, it defaults to the current version of Perl.
106
107 =item C<deprecated_in( MODULE )>
108
109 Available in version 2.77 and above.
110
111 Returns the first perl version where the MODULE was marked as deprecated. Returns C<undef>
112 if the MODULE has not been marked as deprecated.
113
114 =item C<removed_from( MODULE )>
115
116 Available in version 2.32 and above
117
118 Takes a module name as an argument, returns the first perl version where that module
119 was removed from core. Returns undef if the given module was never in core or remains
120 in core.
121
122 =item C<removed_from_by_date( MODULE )>
123
124 Available in version 2.32 and above
125
126 Takes a module name as an argument, returns the first perl version by release date where that module
127 was removed from core. Returns undef if the given module was never in core or remains
128 in core.
129
130 =item C<changes_between( PERL_VERSION, PERL_VERSION )>
131
132 Available in version 2.66 and above.
133
134 Given two perl versions, this returns a list of pairs describing the changes in
135 core module content between them.  The list is suitable for storing in a hash.
136 The keys are library names and the values are hashrefs.  Each hashref has an
137 entry for one or both of C<left> and C<right>, giving the versions of the
138 library in each of the left and right perl distributions.
139
140 For example, it might return these data (among others) for the difference
141 between 5.008000 and 5.008001:
142
143   'Pod::ParseLink'  => { left => '1.05', right => '1.06' },
144   'Pod::ParseUtils' => { left => '0.22', right => '0.3'  },
145   'Pod::Perldoc'    => {                 right => '3.10' },
146   'Pod::Perldoc::BaseTo' => {            right => undef  },
147
148 This shows us two libraries being updated and two being added, one of which has
149 an undefined version in the right-hand side version.
150
151 =back
152
153 =head1 DATA STRUCTURES
154
155 These are the hash data structures that are available:
156
157 =over
158
159 =item C<%Module::CoreList::version>
160
161 A hash of hashes that is keyed on perl version as indicated
162 in $].  The second level hash is module => version pairs.
163
164 Note, it is possible for the version of a module to be unspecified,
165 whereby the value is C<undef>, so use C<exists $version{$foo}{$bar}> if
166 that's what you're testing for.
167
168 Starting with 2.10, the special module name C<Unicode> refers to the version of
169 the Unicode Character Database bundled with Perl.
170
171 =item C<%Module::CoreList::delta>
172
173 Available in version 3.00 and above.
174
175 It is a hash of hashes that is keyed on perl version. Each keyed hash will have the
176 following keys:
177
178   delta_from - a previous perl version that the changes are based on
179   changed    - a hash of module/versions that have changed
180   removed    - a hash of modules that have been removed
181
182 =item C<%Module::CoreList::released>
183
184 Keyed on perl version this contains ISO
185 formatted versions of the release dates, as gleaned from L<perlhist>.
186
187 =item C<%Module::CoreList::families>
188
189 New, in 1.96, a hash that
190 clusters known perl releases by their major versions.
191
192 =item C<%Module::CoreList::deprecated>
193
194 A hash of hashes keyed on perl version and on module name.
195 If a module is defined it indicates that that module is
196 deprecated in that perl version and is scheduled for removal
197 from core at some future point.
198
199 =item C<%Module::CoreList::upstream>
200
201 A hash that contains information on where patches should be directed
202 for each core module.
203
204 UPSTREAM indicates where patches should go. C<undef> implies
205 that this hasn't been discussed for the module at hand.
206 C<blead> indicates that the copy of the module in the blead
207 sources is to be considered canonical, C<cpan> means that the
208 module on CPAN is to be patched first. C<first-come> means
209 that blead can be patched freely if it is in sync with the
210 latest release on CPAN.
211
212 =item C<%Module::CoreList::bug_tracker>
213
214 A hash that contains information on the appropriate bug tracker
215 for each core module.
216
217 BUGS is an email or url to post bug reports.  For modules with
218 UPSTREAM => 'blead', use L<mailto:perl5-porters@perl.org>.  rt.cpan.org
219 appears to automatically provide a URL for CPAN modules; any value
220 given here overrides the default:
221 L<http://rt.cpan.org/Public/Dist/Display.html?Name=$ModuleName>
222
223 =back
224
225 =head1 CAVEATS
226
227 Module::CoreList currently covers the 5.000, 5.001, 5.002, 5.003_07,
228 5.004, 5.004_05, 5.005, 5.005_03, 5.005_04 and 5.7.3 releases of perl.
229
230 All stable releases of perl since 5.6.0 are covered.
231
232 All development releases of perl since 5.9.0 are covered.
233
234
235 =head1 HISTORY
236
237 Moved to Changes file.
238
239 =head1 AUTHOR
240
241 Richard Clamp E<lt>richardc@unixbeard.netE<gt>
242
243 Currently maintained by the perl 5 porters E<lt>perl5-porters@perl.orgE<gt>.
244
245 =head1 LICENSE
246
247 Copyright (C) 2002-2009 Richard Clamp.  All Rights Reserved.
248
249 This module is free software; you can redistribute it and/or modify it
250 under the same terms as Perl itself.
251
252 =head1 SEE ALSO
253
254 L<corelist>, L<Module::Info>, L<perl>, L<http://perlpunks.de/corelist>
255
256 =cut