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

Commit

Permalink
cperl-5.25.3 released
Browse files Browse the repository at this point in the history
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
  • Loading branch information
rurban committed Feb 21, 2017
1 parent c5bb2ff commit 8b555a0
Show file tree
Hide file tree
Showing 10 changed files with 832 additions and 199 deletions.
14 changes: 7 additions & 7 deletions INSTALL
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,10 @@ directory.

=head2 Changes and Incompatibilities

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

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

On a related issue, old modules may possibly be affected by the changes
in the Perl language in the current release. Please see
pod/perldelta.pod for a description of what's changed. See your
F<pod/perldelta.pod> for a description of what's changed. See your
installed copy of the perllocal.pod file for a (possibly incomplete)
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
Expand Down Expand Up @@ -1011,10 +1011,10 @@ much, much more slowly than a standard perl.

=head2 DTrace support

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

perl$target:::sub-entry, perl$target:::sub-return {
printf("%s %s (%s:%d)\n", probename == "sub-entry" ? "->" : "<-",
Expand Down
2 changes: 1 addition & 1 deletion Porting/release_managers_guide.pod
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,7 @@ and testing CPAN modules.
That page accepts a query parameter, C<pair> that takes a pair of
colon-delimited versions to use for comparison. For example:

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

=head3 update perldelta

Expand Down
63 changes: 39 additions & 24 deletions STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,32 +10,35 @@ cperl started Feb. 2015 when `:const` was added, parrot was killed and
it became clear that optimizing for fun is better than waiting for
someone else to allow it.

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

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

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

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

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

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

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

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.
Ditto cperl-5.22.4c has about 20 fixes which are not in the latest perl-5.22.3.
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. Ditto cperl-5.22.4c has
about 20 fixes which are not in the latest perl-5.22.3. Since cperl
development is about 10x faster than p5p development, these numbers do
increase over time.

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

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

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

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

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

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

much faster and much less memory, but 3 minor scope test fails.
much faster and much less memory, but 3 minor scope tests fails.

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

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

Need to fix some Makefile deps and break cross-references
Need to fix some Makefile deps and break cross-references.

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

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

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

optimize the speed for small hashes.
optimize the speed for small hashes, less keys.

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

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

feature/gh24-base-hash feature/gh24-he-array feature/gh24-oldnew-hash-table
featurex/gh24-array_he featurex/gh24-hash-loop featurex/gh24-hash-loop+utf8
featurex/gh24-hash-utf8
featurex/gh24-hash-utf8.

## A bit more work is needed for

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

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

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

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

class, method and multi keywords but no dispatch, subtyping and type checks yet.
in work.
class, method, multi, has keywords but no dispatch, subtyping and type checks yet.
in work. HvCLASS merged to master with 5.26.

* various more hash tables:

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

## Soon

* user facing classes, multiple dispatch (fast for binary, slow for mega)
* user facing classes, multiple dispatch (fast for binary, slow for mega),
internal-only pseudohashes.

* builtin macros

* builtin ffi

2016-12-16 rurban
2017-02-20 rurban
Loading

0 comments on commit 8b555a0

Please sign in to comment.