| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[DELTA]
6.64 Sun Dec 16 18:27:40 PST 2012
Build Fixes
* Update the home page in the meta file. makemaker.org has been
unmaintained for a while.
6.63_04 Thu Nov 22 13:18:06 PST 2012
Test Fixes
* Eliminated the problematic and not very useful PASTHRU test
on Windows. A better test will come after stable. [github 41]
(Michael G Schwern)
* Avoid a new regex warning in 5.17.x in t/MM_OS2.t. (Craig A. Berry)
VMS Fixes
* Better ignore files due to non-case-preserving filesystems.
(Craig A. Berry)
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[DELTA]
1.26 -- Sun Dec 16 19:39
* Merge patch from JDHEDDEN - Add Scalar::Util::isdual() RT#76150
1.25_01 -- Wed Nov 21 09:47
* Fix a hash order dependency bug t/tainted.t
(Currently this is a core only version to fix perl5 smokes)
|
|
|
|
|
|
|
|
|
| |
BeOS was an operating system for personal computers developed by Be Inc,
initially for their BeBox hardware. The OS Haiku was written as an open source
replacement/continuation for BeOS, and its perl port is current and actively
maintained.
The BeOS port has not been updated since 2004.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
gdbm_open() takes a fifth argument, for an optional callback function used
to report a fatal error. Since it was added in 5.000, the tied hash wrapper
implemented in GDBM_File.xs has (intended) to default this to croak().
However, the callback expects a function taking a single const char *
argument, whereas croak(const char *pat, ...) has variable arguments.
The code as-was had two bugs
1) The calling ABI on some platforms differs between a (known) variable-
argument function, and one which takes (known) fixed arguments. As the
call site knows the pointer is to a function with fixed arguments, the
calling convention it uses doesn't match what Perl_croak_nocontext()
expects, which can lead to crashes.
2) A message containing % characters will be interpreted as a printf format.
Both these are fixed by using a small station function as a wrapper, which
takes a single string argument, and passes to croak() a "%s" format string,
followed by the string for the error message.
Add a test for this functionality.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Use the address of the glob op instead.
This argument is going away, because it is undocumented, unused on
CPAN outside of the core, and may get in the way of allowing glob() to
be overridden properly.
Another reason is that File::DosGlob leaks memory, because a glob op
freed before iteration has finished will leave File::DosGlob still
holding on to the remainder of the list of files. The easiest way to
fix that will involve using an op address instead of a special index,
so there will be no reason to keep it.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
[DELTA]
0.95 Sat Dec 8 15:11:09 2012
- U::C::Locale newly supports locales: bs_Cyrl, ee.
- updated to CLDR 21: uk.
- updated to CLDR 22: th, to.
- added loc_bscy.t, loc_ee.t in t.
- modified tests: loc_th.t, loc_to.t, loc_uk.t in t.
|
|
|
|
|
|
|
|
|
|
| |
Accomplished by modifying the hard-coded 'print ok'-type statements. (These
tests were written in too idiosyncratic a manner to make conversion to
t/test.pl simple.
Correct order of files in MANIFEST.
See: RT #115838
|
|
|
|
|
|
| |
directory t/opbasic.
For RT #115838
|
|
|
|
| |
be updated.
|
|
|
|
|
|
|
|
|
|
|
| |
[DELTA]
0.94 Fri Nov 23 18:45:53 2012
- U::C::Locale newly supports locale: zh__zhuyin.
- added Unicode::Collate::CJK::Zhuyin for zh__zhuyin.
- doc: added CAVEAT to CJK/Stroke.pm
- modified tests: loc_cjk.t, loc_cjkc.t in t.
- added cjk_zy.t, loc_zhzy.t in t.
|
| |
|
|
|
|
|
|
|
| |
EPOC was a family of operating systems developed by Psion for mobile
devices. It was the predecessor of Symbian.
The port was last updated in April 2002.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch does the following:
*) Introduces multiple new hash functions to choose from at build
time. This includes Murmur-32, SDBM, DJB2, SipHash, SuperFast, and
One-at-a-time. Currently this is handled by muning hv.h. Configure
support hopefully to follow.
*) Changes the default hash to Murmur hash which is faster than the
old default One-at-a-time.
*) Rips out the old HvREHASH mechanism and replaces it with a
per-process random hash seed.
*) Changes the old PL_hash_seed from an interpreter value to a
global variable. This means it does not have to be copied during
interpreter setup or cloning.
*) Changes the format of the PERL_HASH_SEED variable to a hex
string so that hash seeds longer than fit in an integer are possible.
*) Changes the return of Hash::Util::hash_seed() from a number to a
string. This is to accomodate hash functions which have more bits than
can be fit in an integer.
*) Adds new functions to Hash::Util to improve introspection of hashes
-) hash_value() - returns an integer hash value for a given string.
-) bucket_info() - returns basic hash bucket utilization info
-) bucket_stats() - returns more hash bucket utilization info
-) bucket_array() - which keys are in which buckets in a hash
More details on the new hash functions can be found below:
Murmur Hash: (v3) from google, see
http://code.google.com/p/smhasher/wiki/MurmurHash3
Superfast Hash: From Paul Hsieh.
http://www.azillionmonkeys.com/qed/hash.html
DJB2: a hash function from Daniel Bernstein
http://www.cse.yorku.ca/~oz/hash.html
SDBM: a hash function sdbm.
http://www.cse.yorku.ca/~oz/hash.html
SipHash: by Jean-Philippe Aumasson and Daniel J. Bernstein.
https://www.131002.net/siphash/
They have all be converted into Perl's ugly macro format.
I have not done any rigorous testing to make sure this conversion
is correct. They seem to function as expected however.
All of them use the random hash seed.
You can force the use of a given function by defining one of
PERL_HASH_FUNC_MURMUR
PERL_HASH_FUNC_SUPERFAST
PERL_HASH_FUNC_DJB2
PERL_HASH_FUNC_SDBM
PERL_HASH_FUNC_ONE_AT_A_TIME
Setting the environment variable PERL_HASH_SEED_DEBUG to 1 will make
perl output the current seed (changed to hex) and the hash function
it has been built with.
Setting the environment variable PERL_HASH_SEED to a hex value will
cause that value to be used at the seed. Any missing bits of the seed
will be set to 0. The bits are filled in from left to right, not
the traditional right to left so setting it to FE results in a seed
value of "FE000000" not "000000FE".
Note that we do the hash seed initialization in perl_construct().
Doing it via perl_alloc() (via init_tls) causes problems under
threaded builds as the buffers used for reentrant srand48 functions
are not allocated. See also the p5p mail "Hash improvements blocker:
portable random code that doesnt depend on a functional interpreter",
Message-ID:
<CANgJU+X+wNayjsNOpKRqYHnEy_+B9UH_2irRA5O3ZmcYGAAZFQ@mail.gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
[DELTA]
0.92 Wed Nov 14 20:58:19 2012
- fix: index() etc. with preprocess/normalization should be always croaked.
- doc: referred to the latest UTS #10 and updated its section numbers.
- supported the identical level (see 'identical' in POD).
- Now UCA_Version 26 (for Unicode 6.2.0) is supported.
- added ident.t in t.
- modified tests: cjkrange.t, compatui.t, hangtype.t, index.t,
overcjk0.t, overcjk1.t, test.t, view.t in t.
* But the default UCA_Version is still 24.
(In the next release, UCA_Version 26 will be the default.)
|
| |
|
|
|
|
|
|
| |
Without a line number. See:
https://rt.perl.org/rt3/Ticket/Display.html?id=115110 .
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
With a test.
|
| |
|
| |
|
|
|
|
|
|
| |
When a stash is deleted, caller() will return undef in the package slot
for any stack level for which the deleted stash was the current package.
This made Carp confused in some cases, so fix that.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
I wrote this to look for memory leaks. Since it could be useful to
re-run it at some future time, I might as well put it somewhere where
it will not get lost.
It still needs a bit of work. Currently, evaluating chunks of binary
code can cause memory leaks. In those cases the binary code is dumped
straight to the terminal, which is not helpful.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
It turns out that some of what t/op/while_readdir.t was testing
was also tested by t/op/defins.t
|
|
|
|
|
|
| |
This takes as input the current Unicode character data base, and outputs
lists of the multi-character folds in it, in a form suitable for input
to regen/regcharclass.pl
|
|
|
|
|
| |
(I have an ulterior motive. I need somewhere to list broken CPAN modules
once patches are submitted, so I can close RT tickets.)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As mentioned in <https://rt.cpan.org/Ticket/Display.html?id=79915>,
bigint.pm does not use any prototype when globally overriding hex.
This means that map { hex } ... will stop working in completely unre-
lated code if bigint happens to be loaded. (Explicit $_ will con-
tinue to work.)
I thought it would be a simple matter of adding the right prototype
depending on perl version (and inferring $_), but the basic tests
I added failed for other reasons after I fixed the prototype and
$_ handling.
It turns out this whole thing is a mess, so I have basically reimple-
mented these two overrides.
What bigint, bignum and bigrat were doing was this: In import,
*CORE::GLOBAL::hex and ::oct are assigned functions that create
Math::BigInt objects if the pragma is in effect. If import is passed
'hex' or 'oct', then the function assigned does not check the pragma
hints, but simply creates Math::BigInt objects regardless.
This means that ‘use bigrat’ stops hex() and oct() from creating
objects in ‘use bigint’ scopes, and vice versa. In fact, whichever
pragma is loaded last wins. Any scopes elsewhere in the program that
use the same pragma will have special hex() and oct() behaviour. But
the other two lowercase big* pragmata will be disabled with regard to
hex and oct.
Having ‘use bigint 'hex'’ override hex globally makes no sense to me.
I have no qualms about changing it, as it was already broken. Any
subsequent ‘use bigint;’ would turn off the global override. So now
it exports hex or oct to the calling package, just like a normal mod-
ule. You can now also call bigint::hex.
Also, in writing tests I found that oct("20") gives me 20. Apparently
this was never tested properly.
I also found notes about ‘5.9.4 or later’ when the code checked
$] > 5.009004. (Actually, in one place the code checked > 5.009003,
so I made it match, as we use the _ prototype now, which was intro-
duced in 5.9.5.) One was in the docs, so I changed it to 5.10.0,
since it is not helpful to mention dev versions. The docs were also
wrong to imply that ‘no bigint’ would countermand ‘use bigint 'hex'’.
|
| |
|
|
|
|
|
| |
Historical behaviour is that file handles take priority over package names,
and the use of PL_stashcache shouldn't change this.
|
|
|
|
|
| |
my subs do not currently work yet. I am not sure what the API
should be.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Historically the regex engine has assumed that any string passed to it
will have a trailing null char. This isn't normally an issue in perl code,
since perl strings *are* null terminated; but it could cause problems with
strings returned by XS code, or with someone calling the regex engine
directly from XS, with strend not pointing at a null char.
The engine currently relies on there being a null char in the following
ways.
First, when at the end of string, the main loop of regmatch() still reads
in the 'next' character (i.e. the character following the end of string)
even if it doesn't make any use of it. This precludes using memory mapped
files as strings for example, since the read off the end would SEGV.
Second, the matching algorithm often required the trailing character to be
\0 to work correctly: the test for 'EOF' was "if next char is null *and*
locinput >= PL_regeol, then stop". So a random non-null trailing char
could cause an overshoot.
Thirdly, some match ops require the trailing char to be null to operate
correctly; for example, \b applied at the end of the string only happens
to work because the trailing char (\0) happens to match \W.
Also, some utf8 ops will try to extract the code point at the end, which
can result in multiple bytes past the end of string being read, and
possible problems if they don't correspond to well-formed utf8.
The main fix is in S_regmatch, where the 'read next char' code has been
updated to set it to a special value, NEXTCHR_EOS instead, if we would be
reading past the end of the string.
Lots of other random bits in the regex engine needed to be fixed up too.
To track these down, I temporarily hacked regexec_flags() to make a copy
of the string but without trailing \0, then ran all the t/re/*.t tests
under valgrind to flush out all buffer overruns. So I think I've removed
most of the bad code, but by no means all of it. The code within the
various functions in regexec.c is far too complex to be able to visually
audit the code with any confidence.
|
|
|
|
| |
Soon, we’ll be testing that these tests work. :-)
|
| |
|
| |
|
|
|
|
|
| |
MPE/iX was a business-oriented minicomputer operating system made by
Hewlett-Packard. Support from HP terminated at the end of 2010.
|
|
|
|
|
|
|
|
|
| |
If a pattern passed to File::Glob consists of a space-separated list
of patterns, the stack will only be extended by doglob() enough for
the list returned by each subpattern. So iterate() needs to extend
the stack before copying the list of files from an AV to the stack.
This fixes a regression introduced in 5.16.0.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This changes &foo to go through S_pending_ident (by setting
PL_pending_ident, which causes yylex to defer to S_pending_ident for
the next token) the way $foo and %foo do.
This necessitated reducing the maximum identifier length of &foo from
252 to 251, making it match @foo, $foo, etc. So somebody’s JAPH might
break. :-)
|
|
|
|
|
| |
The recently added utf8_strings.h has been expanded to include more than
just strings. I'm renaming it to avoid confusion.
|
| |
|