Skip to content
This repository was archived by the owner on Jun 1, 2023. It is now read-only.

Commit 8b555a0

Browse files
committed
cperl-5.25.3 released
Major features (over perl5.26): * kept encoding/${^ENCODING} (fixed it) * removed support for the perl4 ' package seperator * kept c2ph/pstruct (fixed it). * for qw() is legal again * enhanced user-type support, type-check assigments, add HvCLASS for base/fields (compile-time inheritance), type-infer bless and subroutine return types. added use types and use types 'strict' warnings and checks. * merged with perl-5.25.9 * Improved .pmc loading (needed for the jit) * Fixed major security problems in Storable and unicode identifiers * Improved hash-table DDos detection (the distributed part, from different IPs), previously only safe for DoS. Prevents now also from theoretical SlowDOS-like attacks, consuming too much memory in the sleeps. * Constant fold with barewords (also upstream) * set UNITCHECK phase See perl5253cdelta
1 parent c5bb2ff commit 8b555a0

File tree

10 files changed

+832
-199
lines changed

10 files changed

+832
-199
lines changed

INSTALL

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,10 @@ directory.
8484

8585
=head2 Changes and Incompatibilities
8686

87-
Please see pod/perldelta.pod for a description of the changes and
87+
Please see F<pod/perldelta.pod> for a description of the changes and
8888
potential incompatibilities introduced with this release. A few of
8989
the most important issues are listed below, but you should refer
90-
to pod/perldelta.pod for more detailed information.
90+
to F<pod/perldelta.pod> for more detailed information.
9191

9292
B<WARNING:> This version is not binary compatible with versions of Perl
9393
earlier than 5.22.0.
@@ -103,7 +103,7 @@ The standard extensions supplied with Perl will be handled automatically.
103103

104104
On a related issue, old modules may possibly be affected by the changes
105105
in the Perl language in the current release. Please see
106-
pod/perldelta.pod for a description of what's changed. See your
106+
F<pod/perldelta.pod> for a description of what's changed. See your
107107
installed copy of the perllocal.pod file for a (possibly incomplete)
108108
list of locally installed modules. Also see the L<CPAN> module's
109109
C<autobundle> function for one way to make a "bundle" of your currently
@@ -1011,10 +1011,10 @@ much, much more slowly than a standard perl.
10111011

10121012
=head2 DTrace support
10131013

1014-
On platforms where DTrace is available, it may be enabled by
1015-
using the -Dusedtrace option to Configure. DTrace probes are available
1016-
for subroutine entry (sub-entry) and subroutine exit (sub-exit). Here's a
1017-
simple D script that uses them:
1014+
On platforms where DTrace is available, it may be enabled by using the
1015+
C<-Dusedtrace> option to Configure. DTrace probes are available
1016+
e.g. for subroutine entry (sub-entry) and subroutine exit
1017+
(sub-exit). Here's a simple D script that uses them:
10181018

10191019
perl$target:::sub-entry, perl$target:::sub-return {
10201020
printf("%s %s (%s:%d)\n", probename == "sub-entry" ? "->" : "<-",

Porting/release_managers_guide.pod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ and testing CPAN modules.
380380
That page accepts a query parameter, C<pair> that takes a pair of
381381
colon-delimited versions to use for comparison. For example:
382382

383-
http://analysis.cpantesters.org/beforemaintrelease?pair=5.20.2:5.22.0%20RC1
383+
L<http://analysis.cpantesters.org/beforemaintrelease?pair=5.20.2:5.22.0%20RC1>
384384

385385
=head3 update perldelta
386386

STATUS.md

Lines changed: 39 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -10,32 +10,35 @@ cperl started Feb. 2015 when `:const` was added, parrot was killed and
1010
it became clear that optimizing for fun is better than waiting for
1111
someone else to allow it.
1212

13-
Currently it is about 20% faster than perl5 overall, >2x faster
14-
then 5.14 and uses the least amount of memory measured since 5.6,
15-
i.e. less than 5.10 and 5.6.2, which were the previous leaders. While
16-
perl5.22 uses the most memory yet measured. cperl 5.24 is about 2x faster
17-
than 5.22. Function calls with signatures are 2x faster, normal functions with a
18-
`my(..) = @_;` prolog are automatically promoted to signatures.
13+
Currently it is about 20% faster than perl5 overall, >2x faster then
14+
5.14 and uses the least amount of memory measured since 5.6, i.e. less
15+
than 5.10 and 5.6.2, which were the previous leaders. While perl5.22
16+
uses the most memory yet measured. cperl 5.24 and 5.26 is about 2x
17+
faster than 5.22 in bigger real-world applications. Esp. function
18+
calls with signatures are 2x faster, normal functions with a `my(..) =
19+
@_;` prolog are automatically promoted to signatures.
1920

2021
But not all of the wanted features are merged. The plan is to support
2122
most perl5-compatible perl6 features (*"do not break CPAN"*), improve
2223
performance and memory usage, re-establish compiler (`B::C`) support,
2324
re-establish perl5 core development which essentially stopped 2002,
24-
use perl6-like development policies, and better security fixes and
25-
maintenance than the upstream p5p perl5. See [README.cperl](perlcperl.html).
25+
use perl6-like development policies, better security fixes and
26+
maintenance than the upstream p5p perl5, and stop the ongoing
27+
destruction going on in p5p. See [README.cperl](perlcperl.html).
2628

2729
There's no class keyword yet as this needs proper field and method
2830
handling, multi-dispatch, aggregate type handling and class
2931
finalization, which is not yet finished. But classes are user-facing
30-
types, and type-support is builtin.
32+
types, and type-support is builtin. use base and use fields were
33+
improved to behave almost like classes.
3134

3235
Tested and developed on linux and darwin 64bit. darwin 32bit fails
3336
on two unrelated core tests (issignaling setpayloadsig + chmod linked in).
3437
Windows is smoked with MSVC 10 and 12 for 32 and 64bit.
3538

3639
The current stable release is
3740
[5.24.2c](https://github.com/perl11/cperl/releases/tag/cperl-5.24.2) - [perl5242cdelta](perl5242cdelta.html),
38-
the latest development release [5.25.2c](https://github.com/perl11/cperl/releases/tag/cperl-5.25.2) - [perl5252cdelta](perl5252cdelta.html).
41+
the latest development release [5.25.3c](https://github.com/perl11/cperl/releases/tag/cperl-5.25.3) - [perl5253cdelta](perl5253cdelta.html).
3942
We also have [5.22.4c](https://github.com/perl11/cperl/releases/tag/cperl-5.22.4), [perl5224cdelta](perl5224cdelta.html).
4043

4144
All tests pass. CPAN works.
@@ -49,13 +52,17 @@ Patches are needed for `Module::Build`, `IO::Socket::SSL` and `Net::SSLeay`.
4952
sloppy types there neither. See below for *Known Problems*.
5053

5154
This is still much less than with a typical major perl5 release, and
52-
the patches are all provided in my
53-
[rurban/distroprefs](https://github.com/rurban/distroprefs/), so the
55+
the patches are all provided in my [rurban/distroprefs](https://github.com/rurban/distroprefs/), so the
5456
upgrade is seemless. E.g. Test2 (the new Test::Simple) broke >15
55-
modules without any patches.
57+
modules without any patches. Test2 is not yet supported, as it is still 20% slower,
58+
and has no significant benefit over the old Test-Simple.
5659

57-
v5.24.0c, v5.24.1c and v5.24.2c have [about 24 fixes](perldelta.html#Known-Problems-fixed-elsewhere), for problems which are not fixed in perl-5.24.1.
58-
Ditto cperl-5.22.4c has about 20 fixes which are not in the latest perl-5.22.3.
60+
v5.24.0c, v5.24.1c and v5.24.2c have
61+
[about 24 fixes](perldelta.html#Known-Problems-fixed-elsewhere), for
62+
problems which are not fixed in perl-5.24.1. Ditto cperl-5.22.4c has
63+
about 20 fixes which are not in the latest perl-5.22.3. Since cperl
64+
development is about 10x faster than p5p development, these numbers do
65+
increase over time.
5966

6067
![Memory usage: perl -e0](cperl-m0.png)
6168

@@ -73,6 +80,7 @@ For all versions see [bench-all/](bench-all/index.html)
7380
* signatures are 2x faster, not 2x slower as with 5.24 or almost as slow
7481
as without as with 5.26.
7582
* function return types declarations as attribute
83+
* type-check assignments, since 5.26 also for user-types
7684
* many more builtin function attributes
7785
* shaped arrays with compile-time checks and optims
7886
* static loop optims, eliminated run-time bounds checks
@@ -87,7 +95,7 @@ For all versions see [bench-all/](bench-all/index.html)
8795
still fast.
8896
* cperl has besides java the only secure hash table implementation of all popular
8997
dynamic scripting languages or static languages with internal hash table support.
90-
other secure hash tables are only found in glibc, bsd or unix kernels or various
98+
Other secure hash tables are only found in glibc, bsd or unix kernels or various
9199
public services.
92100
* seperate XS and PP XS calls dynamically with a new enterxssub op
93101
* -DI and -Dk
@@ -130,7 +138,11 @@ For all versions see [bench-all/](bench-all/index.html)
130138
* undeprecate qw-as-parens with for. 'for qw(a b c) { print }' works again.
131139
* constant fold unpack in scalar context
132140
* range works with unicode characters
141+
* length and ref are optimized in boolean context
133142
* UNITCHECK global phase introspection
143+
* base/fields classes behave now like closed cperl classes: The ISA is readonly,
144+
inheritance checks are performed at compile-time already. More support for
145+
closed classes, esp. restricted stashes and readonly ISA.
134146

135147
Most of them only would have a chance to be merged upstream if a p5p
136148
committer would have written it.
@@ -294,20 +306,21 @@ are limited. So they are based on master.
294306

295307
works for the compiler, but does not do COW yet, i.e. slower for
296308
uncompiled perls, faster for compiled.
309+
The upstream COW implementation is still a complete mess.
297310

298311
* [feature/CM-367-cperl-warnings-xs-carp](http://github.com/perl11/cperl/commits/feature/CM-367-cperl-warnings-xs-carp)
299312
* [feature/CM-367-cperl-carp-builtin](http://github.com/perl11/cperl/commits/feature/CM-367-cperl-carp-builtin)
300313
* [feature/gh9-warnings-xs](https://github.com/perl11/cperl/issues/9)
301314

302315
[code](http://github.com/perl11/cperl/commits/feature/gh9-warnings-xs)
303316

304-
much faster and much less memory, but 3 minor scope test fails.
317+
much faster and much less memory, but 3 minor scope tests fails.
305318

306319
* [feature/gh6-no-miniperl](https://github.com/perl11/cperl/issues/6)
307320

308321
[code](http://github.com/perl11/cperl/commits/feature/gh6-no-miniperl)
309322

310-
Need to fix some Makefile deps and break cross-references
323+
Need to fix some Makefile deps and break cross-references.
311324

312325
* [feature/CM-626-cperl-use-dots](http://github.com/perl11/cperl/commits/feature/CM-626-cperl-use-dots)
313326

@@ -321,7 +334,7 @@ are limited. So they are based on master.
321334

322335
[code](http://github.com/perl11/cperl/commits/feature/gh102-smallhash)
323336

324-
optimize the speed for small hashes.
337+
optimize the speed for small hashes, less keys.
325338

326339
* [feature/gh176-unexec](https://github.com/perl11/cperl/issues/176)
327340

@@ -339,7 +352,7 @@ and various [hash tables refactorings]((https://github.com/perl11/cperl/issues/2
339352

340353
feature/gh24-base-hash feature/gh24-he-array feature/gh24-oldnew-hash-table
341354
featurex/gh24-array_he featurex/gh24-hash-loop featurex/gh24-hash-loop+utf8
342-
featurex/gh24-hash-utf8
355+
featurex/gh24-hash-utf8.
343356

344357
## A bit more work is needed for
345358

@@ -369,13 +382,14 @@ They also revert some wrong decisions p5p already made.
369382
[code](http://github.com/perl11/cperl/commits/feature/gh24-new-hash-table)
370383

371384
lots of small attempts, but still too hairy. needs a complete hash table rewrite.
385+
getting there, but not yet finished for 5.26.
372386

373387
* [feature/gh16-multi](https://github.com/perl11/cperl/issues/16)
374388

375389
[code](http://github.com/perl11/cperl/commits/feature/gh16-multi)
376390

377-
class, method and multi keywords but no dispatch, subtyping and type checks yet.
378-
in work.
391+
class, method, multi, has keywords but no dispatch, subtyping and type checks yet.
392+
in work. HvCLASS merged to master with 5.26.
379393

380394
* various more hash tables:
381395

@@ -384,10 +398,11 @@ They also revert some wrong decisions p5p already made.
384398

385399
## Soon
386400

387-
* user facing classes, multiple dispatch (fast for binary, slow for mega)
401+
* user facing classes, multiple dispatch (fast for binary, slow for mega),
402+
internal-only pseudohashes.
388403

389404
* builtin macros
390405

391406
* builtin ffi
392407

393-
2016-12-16 rurban
408+
2017-02-20 rurban

0 commit comments

Comments
 (0)