|  | 
|  | 1 | +<h1>cperl-5.22.0 / 2015-06-23</h1> | 
|  | 2 | + | 
|  | 3 | +<p>These are the changes above perl-5.22.1 | 
|  | 4 | +See pod/perlcperl.pod for a summary, but note that perlcperl includes also | 
|  | 5 | +still in work features.</p> | 
|  | 6 | + | 
|  | 7 | +<ul> | 
|  | 8 | +<li>installperl uses PERLNAME=cperl with -Dusecperl</li> | 
|  | 9 | +<li>installperl honors Configure -Dperlpath</li> | 
|  | 10 | +<li>fixed some crashing cornercases found by the AFL fuzzer or similar: | 
|  | 11 | +#125840: $x=*0; *x=$x | 
|  | 12 | +protect from XSRETURN(-1) | 
|  | 13 | +#125341: BEGIN <> | 
|  | 14 | +fixed various off-by-one \0 errors with the new 5.16 GV code.</li> | 
|  | 15 | +<li>merge SVf_PROTECT with SVf_READONLY, no double readonly system</li> | 
|  | 16 | +<li>fix old OA_TARGLEX bug with TARGET_MY optim</li> | 
|  | 17 | +<li>add shaped arrays and optimize certain accesses to omit run-time | 
|  | 18 | +bounds checks. loops with static ranges, constant array indices.</li> | 
|  | 19 | +<li>typed all internal ops and use them. | 
|  | 20 | +provide upgrade and downgrade variant tables.</li> | 
|  | 21 | +<li>re-instate pre-2002 exceptions for i_modulo and i_divide with constants | 
|  | 22 | +and typed integers, as with use integer. | 
|  | 23 | +[CHANGE] constant integer modulo now behaves as under use integer | 
|  | 24 | +and deviates with one negative argument from post-2002 code.</li> | 
|  | 25 | +<li>integer constants behave now as under use integer. provide upgrade | 
|  | 26 | +exceptions with the u_ suffix for u_add and u_multiply.</li> | 
|  | 27 | +<li>opcodes: re-arrange, add pure, boxret, typed and native variants. | 
|  | 28 | +renamed some opcodes for harmonization and provide backcompat macros</li> | 
|  | 29 | +<li>fix OP_SASSIGN to be a proper BINOP and remove the various exceptions</li> | 
|  | 30 | +<li>coretypes as builtins, with type check and promotion. | 
|  | 31 | +native types implemented, but not yet promoted</li> | 
|  | 32 | +<li>convert static method calls to subs, as described in | 
|  | 33 | +http://blogs.perl.org/users/rurban/2011/06/how-perl-calls-subs-and-methods.html | 
|  | 34 | +4% faster</li> | 
|  | 35 | +<li>DEBUG_k: -Dk for compiler checks and optimizations, also -Dkv</li> | 
|  | 36 | +<li>rewrote Config as XS, as perfect hash</li> | 
|  | 37 | +<li>change EUMM to depend on lib/Config_heavy.pl, not lib/Config/pm | 
|  | 38 | +because of Config bootstrapping quirks with miniperl and perl variants</li> | 
|  | 39 | +<li>utils: prefix perldoc, perlbug and perlivp with a 'c'. | 
|  | 40 | +rewrote cperlbug to post to github.com/perl11/cperl/issues</li> | 
|  | 41 | +<li>hash_func: add FNV1A, FNV1A_YOSHIMITSUTRIAD/FNV1A_YT, CRC32, METRO64CRC, METRO64, | 
|  | 42 | +SPOOKY32 hashes</li> | 
|  | 43 | +<li>hash_func: select FNV1A as new default. See https://github.com/rurban/perl-hash-stats</li> | 
|  | 44 | +<li>allow Configure -Dhash_func=name</li> | 
|  | 45 | +<li>DEBUG_H: prefix with HASH, and extend it</li> | 
|  | 46 | +<li>fixup (void)INCMARK</li> | 
|  | 47 | +<li>B::Deparse test fixup</li> | 
|  | 48 | +<li>enterxssub: fix ext/Devel-Peek/t/Peek.t</li> | 
|  | 49 | +<li>enterxssub: fix B::Deparse and tests</li> | 
|  | 50 | +<li>enterxssub: fix B tests</li> | 
|  | 51 | +<li>Safe 2.39_01c, Opcode 1.33c: disable enterxssub</li> | 
|  | 52 | +<li>Safe 2.39_01c: Document XS inabilities</li> | 
|  | 53 | +<li>add seperate enterxssub op, ~12% faster</li> | 
|  | 54 | +<li>Safe: skip loading empty Carp::Heavy</li> | 
|  | 55 | +<li>B-Deparse: skip DynaLoader::dl_load_flags on cperl</li> | 
|  | 56 | +<li>Test-Harness: fix for cperl</li> | 
|  | 57 | +<li>fastarith: on gcc and clang use fast overflow intrinsics</li> | 
|  | 58 | +<li>perlcperl.pod: add build + install doc</li> | 
|  | 59 | +<li>ExtUtils::Mkbootstrap: allow missing DynaLoader.pm</li> | 
|  | 60 | +<li>apidoc: fix placing set_version in perlapi</li> | 
|  | 61 | +<li>cperl: do not normalize PL_patchlevel</li> | 
|  | 62 | +<li>cperl version: permit ending c in every cperl VERSION</li> | 
|  | 63 | +<li>more Porting updates: skip DynaLoader for cmpVERSION</li> | 
|  | 64 | +<li>regen Porting/checkcfgvar.pl</li> | 
|  | 65 | +<li>fix t/porting/regen.t</li> | 
|  | 66 | +<li>t/lib/warnings/op: fix for new DynaLoader</li> | 
|  | 67 | +<li>DynaLoader: fix porting/diag.t</li> | 
|  | 68 | +<li>DynaLoader: comment about t/comp/require.t test 53</li> | 
|  | 69 | +<li>t/porting/args_assert.t: fix for set_version</li> | 
|  | 70 | +<li>t/porting/podcheck.t: update for XSLoader/DynaLoader copies</li> | 
|  | 71 | +<li>regen: Possible unintended interpolation of @Changed</li> | 
|  | 72 | +<li>Makefile: improve DL_SRC dependency, touch ar lib</li> | 
|  | 73 | +<li>XSLoader: fix XSLoader.t test 24</li> | 
|  | 74 | +<li>Documentation: add cperl specific changes to *Loader.pod</li> | 
|  | 75 | +<li>perlcall.pod: format flags with C<>, add more about SP vs MARK</li> | 
|  | 76 | +<li>XSLoader: converted to compiled builtin</li> | 
|  | 77 | +<li>DynaLoader.pod: formatting</li> | 
|  | 78 | +<li>metaconf: add dl extensions and path_sep to config.h</li> | 
|  | 79 | +<li>config.h: add LDLIBPTHNAME</li> | 
|  | 80 | +<li>metaconf: add HAS_LIBNAME_UNIQUE to config.h</li> | 
|  | 81 | +<li>metaconf: add d_vms_case_sensitive_symbols and HAS_VMS_CASE_SENSITIVE_SYMBOLS</li> | 
|  | 82 | +<li>xsutils: boot_core_xsutils: boot_DynaLoader</li> | 
|  | 83 | +<li>ExtUtils-Embed-1.33 usecperl variant to boot DynaLoader immediately</li> | 
|  | 84 | +<li>DynaLoader: converted to compiled builtin</li> | 
|  | 85 | +<li>attributes: regen lib/.gitignore via regen/lib_cleanup.pl</li> | 
|  | 86 | +<li>attributes: fix t/porting/diag.t, add :-shared error to perldiag.pod</li> | 
|  | 87 | +<li>attributes: fix tests for cperl</li> | 
|  | 88 | +<li>attributes.pm: disable pp parts</li> | 
|  | 89 | +<li>cperl: allow :const and coretype function return attributes</li> | 
|  | 90 | +<li>lib/attributes.pm: do not bootstrap with cperl</li> | 
|  | 91 | +<li>attributes 0.26_01c converted to XS</li> | 
|  | 92 | +<li>Makefile.SH: replace CC with LD to link exes</li> | 
|  | 93 | +<li>add use cperl pragma</li> | 
|  | 94 | +<li>coretypes: fix t/op/stash.t omit deleting READONLY stash keys</li> | 
|  | 95 | +<li>coretypes: declare Undef, Int, UInt, Num, Str</li> | 
|  | 96 | +<li>ExtUtils-MakeMaker: fix repreq.t for builtin strict</li> | 
|  | 97 | +<li>strict: fix test for cperl</li> | 
|  | 98 | +<li>strict 1.10c converted to compiled builtin, re-add xsutils.c</li> | 
|  | 99 | +<li>usecperl Deparse: lexical_subs is enabled</li> | 
|  | 100 | +<li>mv README.cperl -> pod/perlcperl.pod</li> | 
|  | 101 | +<li>cperl.pm: fix t/porting/maintainers.t</li> | 
|  | 102 | +<li>cperl: display cperl specifics with -V</li> | 
|  | 103 | +<li>Fix cperl pod_rules (readmes in the MANIFESTs)</li> | 
|  | 104 | +<li>Update perldata/const from const qualifier to :const attribute</li> | 
|  | 105 | +<li>perldata.pod: add const and coretypes</li> | 
|  | 106 | +<li>pod: fix porting tests</li> | 
|  | 107 | +<li>README.cperl: tailcall optimization (long term plan)</li> | 
|  | 108 | +<li>README.cperl: We track stable upstream releases only</li> | 
|  | 109 | +<li>README.cperl: php7 + => pod</li> | 
|  | 110 | +<li>-DH debug hash fill, size and collisions</li> | 
|  | 111 | +<li>Configure: set cperl as package, and use its installstyle</li> | 
|  | 112 | +<li>Configure: support -Dusecperl, $Config{usecperl}, ifdef USE_CPERL</li> | 
|  | 113 | +<li>add cperl documentation: pod/perltypes.pod README.cperl</li> | 
|  | 114 | +<li>add CHECK_*_ATTRIBUTES for compile-time</li> | 
|  | 115 | +<li>make -s: more Makefile silencing</li> | 
|  | 116 | +<li>make -s: ExtUtils::Mkbootstrap 7.04_01c: silence Running Mkbootstrap</li> | 
|  | 117 | +<li>fix RT#81332 744aaba059 bloats the B compilers</li> | 
|  | 118 | +<li>test -D switches: add PERLIO_DEBUG changes</li> | 
|  | 119 | +<li>test -D switches: new t/run/switchDBG.t</li> | 
|  | 120 | +<li>DEBUG_I: add documentation for -DI and PERLIO_DEBUG</li> | 
|  | 121 | +<li>PerlIO_debugio: reuse fd from PERLIO_DEBUG for PL_perlio_debug_fd</li> | 
|  | 122 | +<li>DEBUG_I: add a seperate -DI instead of PERLIO_DEBUG</li> | 
|  | 123 | +<li>schmorp stableperl patches for 5.22.0</li> | 
|  | 124 | +<li>restricted hash error message with stashes</li> | 
|  | 125 | +<li>[perl #125369] - Set correct flags for smartmatch in certain cases</li> | 
|  | 126 | +<li>installperl: no strip with DEBUGGING</li> | 
|  | 127 | +<li>parse unicode superscripts simplified (max 2 digits)</li> | 
|  | 128 | +<li>parse unicode constant superscripts (one digit)</li> | 
|  | 129 | +<li>parse sdot for multiply also</li> | 
|  | 130 | +<li>parse some new unicode keywords</li> | 
|  | 131 | +<li>hints/darwin.sh: document -no-cpp-precomp cargo cult</li> | 
|  | 132 | +<li>Devel::Peek fix tests for changed core dump.c</li> | 
|  | 133 | +<li>dump: adjust core tests for changed dump</li> | 
|  | 134 | +<li>dump: add FLAGS values and PADLIST sizes</li> | 
|  | 135 | +<li>MD5: static is not at beginning of declaration</li> | 
|  | 136 | +<li>t/porting/globvar.t: skip PL_memory_debug_header also</li> | 
|  | 137 | +<li>add warnings 7fatal testcase for #123398</li> | 
|  | 138 | +<li>don't fatalize warnings during unwinding (#123398)</li> | 
|  | 139 | +<li>lib/vars_carp.t: fix wrong test</li> | 
|  | 140 | +<li>Ignore ENOTTY on open via the perlio buffer layer</li> | 
|  | 141 | +<li>regen_lib: add some love for vim</li> | 
|  | 142 | +<li>MARK -Ds debugging</li> | 
|  | 143 | +<li>XSLoader 0.21: use dl_find_symbol 3rd optional argument</li> | 
|  | 144 | +<li>DynaLoader: extend t/DynaLoader.t to be run from basedir also</li> | 
|  | 145 | +<li>DynaLoader/dl_*.xs: Define all PERL_IN_DL_*_XS markers</li> | 
|  | 146 | +<li>DynaLoader 1.33 dl_find_symbol add 3rd optional argument</li> | 
|  | 147 | +<li>Configure: support non-perl5 package, and use its installstyle</li> | 
|  | 148 | +<li>xs_boot_epilog (Xp): change ax from U32 to I32</li> | 
|  | 149 | +<li>force_next: fix -Wsign-comp warning</li> | 
|  | 150 | +<li>perl_hash_crc32: use HW hasher as default with SSE4.2</li> | 
|  | 151 | +<li>Makefile: add TAGS target (etags, not ctags)</li> | 
|  | 152 | +<li>EUMM: more make -s improvements</li> | 
|  | 153 | +<li>make -s: silent means silent</li> | 
|  | 154 | +<li>lib/h2ph.t: keep tmpfiles on error</li> | 
|  | 155 | +</ul> | 
|  | 156 | + | 
|  | 157 | +<p>Perl 5</p> | 
|  | 158 | + | 
|  | 159 | +<p>For an overview of what's changed in this release, see pod/perldelta.pod.</p> | 
|  | 160 | + | 
|  | 161 | +<p>For the details of changes in previous releases, see the individual | 
|  | 162 | +perlNNNdelta.pod files. For example, pod/perl588delta.pod describes the | 
|  | 163 | +changes between versions 5.8.7 and 5.8.8.</p> | 
|  | 164 | + | 
|  | 165 | +<p>For a list of contributors to perl, see AUTHORS.</p> | 
|  | 166 | + | 
|  | 167 | +<p>If you need a detailed commit history (i.e. descriptions of each | 
|  | 168 | +individual commit),  you can view the git version control history online | 
|  | 169 | +at http://perl5.git.perl.org/perl.git (follow the 'shortlog' link beside | 
|  | 170 | +the relevant tag). Or, you can download a copy of the git repository and | 
|  | 171 | +then run a command like</p> | 
|  | 172 | + | 
|  | 173 | +<pre><code>git log --name-status v5.12.0..v5.14.0 | 
|  | 174 | +</code></pre> | 
|  | 175 | + | 
|  | 176 | +<p>to view all the changes between 5.12.0 and 5.14.0.</p> | 
|  | 177 | + | 
|  | 178 | +<p>See pod/perlgit.pod for more details on using git and accessing the | 
|  | 179 | +commit history.</p> | 
|  | 180 | + | 
|  | 181 | +<p>In perl releases prior to 2009, the source tarball included a collection | 
|  | 182 | +of Changes files that listed the individual commits that had gone into | 
|  | 183 | +each release. Since these files had become very large, and since the | 
|  | 184 | +same information is now freely available online, it was decided to remove | 
|  | 185 | +them from subsequent releases.</p> | 
|  | 186 | + | 
|  | 187 | +<p>If you need access to these removed files, then they can be be found most | 
|  | 188 | +recently in the 5.8.9 and 5.10.0 tarballs, at</p> | 
|  | 189 | + | 
|  | 190 | +<pre><code>http://www.cpan.org/src/perl-5.8.9.tar.gz | 
|  | 191 | +http://www.cpan.org/src/5.0/perl-5.10.0.tar.gz | 
|  | 192 | +</code></pre> | 
|  | 193 | + | 
|  | 194 | +<p>The contents of the files in question can mostly be regenerated using git | 
|  | 195 | +commands. The following table shows the equivalents. Note that the files | 
|  | 196 | +prior to Changes5.005 were not simple lists of commits, so can't be | 
|  | 197 | +recreated just by running the git command. As it happens, even the latter | 
|  | 198 | +ones are not exact equivalents. This is due to a combination of errors in | 
|  | 199 | +the original Changes files, and "impedance mismatches" when the previous | 
|  | 200 | +version control data was imported into git in December 2008.</p> | 
|  | 201 | + | 
|  | 202 | +<p>For example, the Changes5.005 file includes 206 spurious entries from the | 
|  | 203 | +maint5.004 Perforce branch.</p> | 
|  | 204 | + | 
|  | 205 | +<p>Running the following command with the range argument shown in the table | 
|  | 206 | +will produce <em>approximately</em> the same list of changes in the specified | 
|  | 207 | +file shown from the listed tarball.</p> | 
|  | 208 | + | 
|  | 209 | +<pre><code>git log --name-status <range> | 
|  | 210 | +</code></pre> | 
|  | 211 | + | 
|  | 212 | +<p>file           tarball  <range> argument to 'git log' | 
|  | 213 | +  ------------   ------   -------------------------------- | 
|  | 214 | +  Changes5.000   Either   N/A | 
|  | 215 | +  Changes5.001   Either   perl-5.000..perl-5.001 | 
|  | 216 | +  Changes5.002   Either   perl-5.001..perl-5.002 | 
|  | 217 | +  Changes5.003   Either   perl-5.002..perl-5.003 | 
|  | 218 | +  Changes5.004   Either   perl-5.003..perl-5.004 | 
|  | 219 | +  Changes5.005   Either   perl-5.004..perl-5.005_03 | 
|  | 220 | +  Changes5.6     Either   perl-5.005_03..perl-5.6.0 | 
|  | 221 | +  Changes5.8     Either   perl-5.6.0..perl-5.8.0 | 
|  | 222 | +  Changes5.8.1   5.8.9    perl-5.8.0..perl-5.8.1 ^1ede746b | 
|  | 223 | +  Changes5.8.2   5.8.9    perl-5.8.1..perl-5.8.2 | 
|  | 224 | +  Changes5.8.3   5.8.9    perl-5.8.2..perl-5.8.3 | 
|  | 225 | +  Changes5.8.4   5.8.9    perl-5.8.3..perl-5.8.4 | 
|  | 226 | +  Changes5.8.5   5.8.9    perl-5.8.4..perl-5.8.5 ^3a81978b | 
|  | 227 | +  Changes5.8.6   5.8.9    perl-5.8.5..perl-5.8.6 ^498d59dd | 
|  | 228 | +  Changes5.8.7   5.8.9    perl-5.8.6..perl-5.8.7 | 
|  | 229 | +  Changes5.8.8   5.8.9    perl-5.8.7..perl-5.8.8 | 
|  | 230 | +  Changes        5.8.9    perl-5.8.8..perl-5.8.9 | 
|  | 231 | +  Changes        5.10.0   perl-5.8.0..perl-5.10.0</p> | 
0 commit comments