summaryrefslogtreecommitdiff
path: root/pod/perldelta.pod
Commit message (Collapse)AuthorAgeFilesLines
* Remove my_strftime8()Karl Williamson2023-05-011-1/+2
| | | | | | | | | | | | The comment from Tony Cook https://github.com/Perl/perl5/issues/20373#issuecomment-1524256091 made me realize that this function doesn't fully work. It was added as public API earlier in the 5.37 series, but we don't want it making it into a stable release. This commit renames it so that the original name will no longer work, but POSIX.xs can still, by changing to use the new name.name
* New perldelta for 5.37.12Steve Hay2023-04-201-68/+315
|
* Finalize perldeltaSteve Hay2023-04-201-2/+25
|
* perldelta - Update modulesSteve Hay2023-04-191-2/+44
|
* perldelta - Remove boilerplateSteve Hay2023-04-191-342/+11
|
* Update perldeltaSteve Hay2023-04-191-6/+17
|
* perldelta: Mention support for LC_NAMEKarl Williamson2023-04-191-0/+6
|
* perldelta for 51675517951Tony Cook2023-03-231-1/+3
|
* New perldelta for 5.37.11Yves Orton2023-03-211-324/+202
|
* perldelta.pod - add more docs on %{^HOOK}, update github links,Yves Orton2023-03-201-31/+90
| | | | Also spell check and remove empty sections.
* pod/perldelta.pod - updates for 5.37.10Yves Orton2023-03-201-199/+211
| | | | Also trim some whitespace from perlvar.pod
* win32: inject a socket-aware version of CloseHandle() into the CRTTomasz Konojacki2023-03-171-2/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | _close() on an fd calls CloseHandle(), which is illegal if the fd contains a socket handle. We previously worked around this by having our own close(), which called closesocket() before calling _close() (e601c439adce167078ac7b49550c0418ace86f94). Amusingly, the author of that solution thought it's just a temporary workaround: /* * close RTL fd while respecting sockets * added as temporary measure until PerlIO has real * Win32 native layer * -- BKS, 11-11-2000 */ To make it thread-safe, we had to manipulate the internals of file descriptors, which kept changing (b47a847f6284f6f98ad7509cf77a4aeb802d8fce). Unfortunately, the C runtime has been rewritten and it no longer exposes them at all. We had to disable the thread-safety fix in Visual C++ 2015 builds (1f664ef5314fb6e438137c44c95cf5ecdbdb5e9b). It also wouldn't work with MinGW configured to use UCRT. This commit introduces a new solution: we inject a socket-aware version of CloseHandle() into the C runtime library. Hopefully, this will be less fragile. This also fixes a few issues that the original solution didn't: - Closing a busy pipe doesn't cause a deadlock (fixes #19963) - _dup2 properly closes an overwritten socket (fixes #20920)
* mg.c - add support for ${^LAST_SUCCESSFUL_PATTERN}Yves Orton2023-03-141-0/+19
| | | | | | | | | | | | | | | | | | This exposes the "last successful pattern" as a variable that can be printed, or used in patterns, or tested for definedness, etc. Many regex magical variables relate to PL_curpm, which contains the last successful match. We never exposed the *pattern* directly, although it was implicitly available via the "empty pattern". With this patch it is exposed explicitly. This means that if someone embeds a pattern as a match operator it can then be accessed after the fact much like a qr// variable would be. @ether asked if we had this, and I had to say "no", which was a shame as obviously the code involved isn't very complicated (the docs from this patch are far larger than the code involved!). At the very least this can be useful for debugging and probably testing. It can also be useful to test if the /is/ a "last successful pattern", by checking if the var is defined.
* Add perldelta.pod entry for goto being permitted in some defer/finally blocksPaul "LeoNerd" Evans2023-03-071-0/+16
|
* Allow :isa in class declaration without a blockArne Johannessen2023-03-021-0/+6
| | | | | | | | | Using class attributes in the unit class syntax was a syntax error. This change makes the following two lines equivalent: class B :isa(A) ; class B :isa(A) { } Addresses GH issue #20888.
* add a bit more guidance into the perldelta templateKaren Etheridge2023-02-201-3/+6
|
* Generate new perldelta for 5.37.10Karen Etheridge2023-02-201-424/+195
|
* perldelta: fill in synced modulesKaren Etheridge2023-02-201-23/+67
|
* perldelta finalizationKaren Etheridge2023-02-201-202/+254
| | | | | | | | | - add additions to perldiag - documentation section - remove placeholders - finalize Acknowledgements - fix typos - linkify issue/PR references
* perldelta for optimize_optree() + finalize_optree()Paul "LeoNerd" Evans2023-02-201-0/+14
|
* perldelta for my_snprintfKarl Williamson2023-02-201-0/+6
| | | | a683fa5b7e816ae5c10d246c9a0b1f3ea743274b
* perldelta for utf8_length() changeKarl Williamson2023-02-201-0/+4
| | | | 71d63d0dc1fcf23d28f488655c105c0dfefbd254
* perldelta.pod - note that REG_INF has been raisedYves Orton2023-02-201-0/+7
| | | | It used to be U16_MAX and it is now I32_MAX.
* perldelta.pod - document $SIG{__DIE__} and compile error count bugfixesYves Orton2023-02-201-0/+29
| | | | | | | | We have fixed bugs related to $SIG{__DIE__} being inconsistently triggered during eval, and we have fixed bugs with compilation inconsistently stopping after 10 errors. This patch also includes a micro-tweak to perl.h to allow the threshold to be sanely overriden in Configure.
* perldelta for 626df4fd56, 6c19911f93Tony Cook2023-02-201-0/+7
|
* Perldelta for 8ab54e77 (GIMME/dowantarray deprecation)Dagfinn Ilmari Mannsåker2023-02-191-1/+6
|
* perldelta.pod: performance entry for GH #20800Richard Leach2023-02-191-0/+6
|
* perldelta for d8a109ccd8Tony Cook2023-02-141-1/+9
|
* Perldelta for new 'class' featurePaul "LeoNerd" Evans2023-02-111-0/+28
|
* regcomp.c - remove (**{ ... }) from the regex engineYves Orton2023-02-081-6/+6
| | | | | | | | | | | | | | | | | Dave M pointed out that this idea was flawed, and after some testing I have come to agree with him. This removes it. It was only available for 5.37.8, so no deprecation cycle involved. The point of (**{ ... }) was to have a postponed eval that does not disable optimizations. But some of the optimizations are disabled because if they are not we do not match correctly as the optimizations will make unwarranted assumptions about the pattern, assumptions which can be incorrect depending on what pattern is returned from the codeblock. The original idea was proposed because (?{ ... }) was treated as though it was (??{ ... }) and disabled many optimizations, when in fact it doesn't interact with optimizations at all. When I added (*{ ... }) as the optimistic version of (?{ ... }) I used "completeness" as the justification for also adding (**{ ... }) when it does not make sense to do so.
* perldelta for b1414dcb98d, dd3d299fefbbfTony Cook2023-02-081-0/+11
|
* perldelta for a36fec492e3c3, 7e2d91e6d3a09eTony Cook2023-02-071-1/+6
|
* perldelta for af62106ad344b13Tony Cook2023-01-251-1/+4
|
* New perldelta for 5.37.9reneeb2023-01-201-89/+306
|
* finalize perldelta for 5.37.8reneeb2023-01-201-322/+59
|
* regcomp.c - add optimistic eval (*{ ... }) and (**{ ... })Yves Orton2023-01-191-0/+14
| | | | | | | | | | | | | | | | | This adds (*{ ... }) and (**{ ... }) as equivalents to (?{ ... }) and (??{ ... }). The only difference being that the star variants are "optimisitic" and are defined to never disable optimisations. This is especially relevant now that use of (?{ ... }) prevents important optimisations anywhere in the pattern, instead of the older and inconsistent rules where it only affected the parts that contained the EVAL. It is also very useful for injecting debugging style expressions to the pattern to understand what the regex engine is actually doing. The older style (?{ ... }) variants would change the regex engines behavior, meaning this was not as effective a tool as it could have been. Similarly it is now possible to test that a given regex optimisation works correctly using (*{ ... }), which was not possible with (?{ ... }).
* perldelta for 67244d99e1 and earlier commitsJames E Keenan2023-01-141-0/+8
| | | | Commits for Math-Complex upgrade to 1.60
* perldelta for 44ba6f934a, ccc99c3cb950, 151ba7cd97fa, 5c556116d15Tony Cook2023-01-101-0/+17
|
* perldelta for 8c61f504eeb9Tony Cook2023-01-101-2/+3
|
* sv.c - add support for HvNAMEf and HvNAMEf_QUOTEDPREFIX formatsYves Orton2022-12-221-0/+6
| | | | | | | | They are similar to SVf and SVf_QUOTEDPREFIX but take an HV * argument and use HvNAME() and related macros to extract the string. This is helpful as it makes constructing error messages from a stash (HV *) easier. It is the callers responsibility to ensure that the HV is actually a stash.
* New perldelta for 5.37.8Richard Leach2022-12-201-183/+279
|
* Update perldelta.pod for 5.37.7Richard Leach2022-12-201-309/+77
|
* Address GH #20571Karl Williamson2022-12-201-0/+7
| | | | | | | | | | | | The blamed commit, 04de022, exposed a bug in the module itself. I will submit a PR to fix it. But this ticket did tell me that there was a problem with that commit. It returned a C language value, CHAR_MAX, which doesn't really have a corresponding concept in Perl. Instead we use -1 to indicate that a positive-valued variable is in some abnormal state. This commit changes to do that, and documents the changes, which should have been done in 04de022.
* perldelta for 3 upgraded CPAN modulesJames E Keenan2022-12-191-0/+12
|
* Detect forbidden flow at compiletime of `defer` or `finally`Paul "LeoNerd" Evans2022-12-171-0/+12
| | | | | | | Using the new `forbid_outofblock_ops()`, many kinds of forbidden control flow out of a `defer` or `finally` block can be detected statically with this function by analysing the optree, rather than leaving it until runtime when the attempt is actually made.
* perldelta.pod - add note about regex engine decompositionYves Orton2022-12-151-1/+3
|
* pod/ - document $INC and INCDIRYves Orton2022-12-091-0/+31
|
* pp_ctl.c - handle objects in @INC a bit more gracefullyYves Orton2022-12-091-0/+5
| | | | | | | | | | | | If an object doesn't have an INC hook then don't call it. Either simply stringify the ref (think overloads), OR, if it is a blessed coderef, then just execute it like it was an unblessed coderef. Also handle when an object is passed as the first argument of the array form of call. Previously this would throw an exception as the first argument on the stack when we call_method() would not be blessed. When this is the scenario we pass in the array as the third argument to the method.
* pp_ctl.c - require_file: truthful errors and tests: ties are called onceYves Orton2022-12-091-0/+31
| | | | | | | | | | | | | | | | | | | | We need to keep track of what we actually checked. We cannot simply report the state of @INC at the end of the require, as it might have changed, possibly several times during the require. This also accounts for most "silly" stuff that might upset our internal assumptions, for instance where a tie might report one value to the code doing the directory check and another in the error message. We had long standing tests to see that @INC tie elements where called "once" but they actually tested they were called twice despite claiming otherwise. This fixes all of those test so that a tied @INC entry is called exactly once, and whatever it returned the first time is placed in the error message. This includes a change to the require error message, so that where it once said "@INC contains:" it now says "@INC entries checked:". Note this patch requires parent v0.239 to be available (which was done in the previous commit).
* sv.c - sv_2pv_flags: Fix double FETCH from tied overloaded scalarYves Orton2022-12-061-0/+6
| | | | | | | | | | | | | | When dealing with a tied scalar with get magic, and the FETCH method returned a blessed reference with overloading magic (with "a" magic), the tied scalar returned from the fetch was not copied prior to calling the magic function as an argument, this would then cause the get magic to be called again if the overloaded method happened to copy or otherwise use the tied scalar. The solution is to copy the reference prior to dispatching the overload call. It looks like we have been testing for the double FETCH for some time, without any good rationale, so this test merely changes things to expect the desired count.