summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* [perl #126632] improve diagnostics for the comctl32 testTony Cook2016-01-251-1/+3
|
* perldelta for 273df2b1892a ... 273df2b1892Tony Cook2016-01-251-0/+8
|
* Add parallel build and MSVC support for the gmake makefileTony Cook2016-01-2559-444/+923
|\
| * bump $XS::APItest::VERSIONTony Cook2016-01-251-1/+1
| |
| * XS DLLs shouldn't have comctl32.dll manifest in them, they dont link to itDaniel Dragan2016-01-255-8/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The manifestdependency flag caused on VC 2005 and up for all XS DLLs to include a manifest that references common controls v6 DLL, even though nothing but perl5**.dll and perl-static.exe would ever link to comctl32.dll. VC 2005 to VC 2008 put manifests in all DLLs since those VC version's CRTs require manifests to load, all other VCs generate .rsrc section free, and manifest free, DLLs by default. The /manifestdependency flag passed to VC linker for all XS DLL, was causing 52 KB of bloat in disk size of the DLLs, and perhaps a little bit of CPU to parse the manifest XML when the XS DLL is loaded. Add a test to make sure the manifest for V6 isn't accidentally broken and V5 gets loaded instead. Note this commit leaves a little bit of unequal handling of the comctl manifest between VC and GCC builds. VC >= 2005 builds with this patch will add a manifest to perl523.dll and build helpers (not installed) perlglob.exe and generate_uudmap.exe while GCC builds only manifest perl.exe and wperl.exe. With a VC 2013 32b build, before C:\p523\src>dir /s *.dll 55 File(s) 7,858,688 bytes After C:\p523\src>dir /s *.dll 55 File(s) 7,805,440 bytes
| * win32/GNUmakefile collapse shell echos into one linersDaniel Dragan2016-01-251-131/+137
| | | | | | | | | | | | Previously each line was 1 shell process launch. By grouping all the echos together, CPU and IO are saved by doing alot less cmd.exe process launches. makefile.mk does the same thing already. See #126632 for benchmark details.
| * add MSVC support to win32/GNUmakefileDaniel Dragan2016-01-252-30/+411
| | | | | | | | | | | | | | | | | | | | -copy things from makefile.mk to GNUmakefile -rework CFG_VARS to escape "s. Previously on gmake GCC builds, all "s inside the CFG_VARS vars were dropped from Config_heavy.pl due to command line parsing (dmake uses --cfgsh-option-file and a temp file, nmake escapes). Due to gmake's very poor temp file handling, keep it as a cmd line and dont convert it to a temp file. What vars to escape was modeled on the nmake makefile.
| * add parallelness to win32/GNUmakefileDaniel Dragan2016-01-2521-368/+379
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -.UPDATEALL is dmake only, doesn't exist in gmake, create more targets instead GNUmakefile:1319: warning: overriding recipe for target '.UPDATEALL' GNUmakefile:1024: warning: ignoring old recipe for target '.UPDATEALL' -fix ok/nok targets on dmake and gmake -dont delete old mini config.h, the copy overwrites it, for dmake and gmake 1 less process to run this way -modify whitespace and comments between 2 makesfiles so there are less delta lines if the 2 are diffed, this aids in diagnostics -remove perlmainst.c/perlmain.c build products, just use runperl.c directly 1 less disk file to create and later clean and git status and 2 less nodes in the make graph to traverse, also better for C debugger, since "runperl.c" is around after a git clean of the source tree, and runperl.c is in every single callstack in perl. -remove copying mini config.h to CORE dir, pointless since (mini) config.h isn't an input to config_h.PL, remove the exit 1 from commit 137443ea0a from 5.003, rewriting config.h is not a reason to stop the build with a fatal error, vivify CORE dir or else sub copy() fails -deshell UNIDATAFILES/mktables, 1 less cmd.exe process and 1 less .bat file written to disk for gmake (dmake always uses cmd.exe ATM) -combining mini config.h AKA $(MINIDIR)\.exists shell append lines is for another commit -perlglob.exe is not installed, it doesn't need to be rebased, it is only needed for module building, removing the dep makes the dep graph simpler -rename PERLIMPLIB so the lib is built in its final location in CORE dir this removes an extra xcopy process run. Since perl dll's .a/.lib is not longer in the root of the source tree, change the 2 tests and ExtUtils::CBuilder::Platform::Windows to look at the uninstalled final location dir, not the root dir -fix typo 0.282224->0.280224 in dist/ExtUtils-CBuilder/Changes -for GCC PERLEXPLIB must be used, passing "perldll.def" on cmd line to g++ means all data globals with EXTCONST are exported (which have dllexport on their declaration) instead of just what is in perldll.def and globvar.sym, INTERN/EXTERN.h could be revised to fix that, but I am not doing that at this time. Also drop linking GCC perl523.dll from 3 processes to just 1 process like with VC builds. Removing 2nd run of dlltool fixes a race condition where libperl523.a was generated twice. This caused a race condition failure where linking a XS DLL failed because the GCC linker of the XS DLL saw a partially written libperl523.a. -Relocation was tested with $(LINK32) -v -mdll -o $@ -Wl,--disable-auto-image-base -Wl,--image-base -Wl,0x400000 $(BLINK_FLAGS) $(PERLDLL_OBJ) $(shell @type Extensions_static) $(LIBFILES) $(PERLEXPLIB) to g++ linker to force an address conflict and verified with VMMap (unrelocated perl523.dll has ~40KB private memory, relocated has ~240KB private memory on Win 7 32b), historically there are problems with dllexport and dlltool and relocation problems with mingw -$(COREDIR)\ppport.h in gmake is separate lines since gmake normally launches processes directly, not through the shell, so it is more efficent to keep it as multiple lines for gmake, while dmake likes to burn CPU and IO between each line, and runs each line through cmd.exe -disable parallel building in make_ext.pl by not passing MAKEFLAGS env var to any subprocess, EUMM is not ready for parallelness inside a module building on Win32 -have harness proc and child .t procs share same disk perl.exe and perl523.dll files, this way they share memory pages, makefile.mk does the same thing
| * backport EUMM commitsDaniel Dragan2016-01-2532-32/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -commit "Cache is_make_type" and "Optimise is_make_type RE" stops 40 executions of "gmake.exe -v" process for each Makefile.PL run, these 40 make process launches make it it very difficult to debug make_ext.pl and the make tool with a system call logger, see Perl RT #123440 ticket for details -commit "Win32 gmake needs SHELL to be specified" allows Win32 perl to be built with gmake, if msysgit is in the PATH env var, without this patch gmake will use bash as the shell instead of cmd.exe and no EUMM modules can be built during a Win32 perl build, since bash and cmd.exe command line strings are not compatible with each other, see Perl RT #123440 ticket for details
| * t/echo.t needs SHELL env for Win32 gmakebulk882016-01-251-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Win32 gmake prefers "sh.exe" (IE bash) over "cmd.exe" if it finds sh.exe in PATH. Win32 Git usually comes with sh.exe. Running sh.exe causes problems and isn't a supported build config for native (not Cygwin) Win32 perl. See also https://rt.perl.org/Public/Bug/Display.html?id=123440#txn-1374997 Fixes --------------------------------- ok 8 - something.txt exists not ok 9 - contents# Failed test 'contents' # at t/echo.t line 69. # got: '$ # ' # expected: '$something$ # ' # Testing variables escaped # Temp dir: C:\Users\Owner\AppData\Local\Temp\gGwL2kl3Oh ok 10 - make: variables escaped
| * Win32 gmake needs SHELL to be specifiedSisyphus2016-01-252-3/+25
| | | | | | | | Signed-off-by: Ed J <mohawk2@users.noreply.github.com>
| * Optimise is_make_type REEd J2016-01-251-1/+1
| |
| * Cache is_make_typeEd J2016-01-252-5/+16
|/
* Putting the core into corelistChris 'BinGOs' Williams2016-01-241-1/+1
|
* TODO long-failing argv.t tests on VMS.Craig A. Berry2016-01-231-17/+23
| | | | | This has to do with the fact that redirection is handled by Perl, not by DCL.
* regen/mk_invlists.pl: add braces round subobject initialisersAaron Crane2016-01-212-67/+65
| | | | | | This suppresses many clang warnings saying "suggest braces around initialization of subobject" when the generated charclass_invlists.h is included.
* perldelta for 08b3e84fbb1cTony Cook2016-01-211-1/+6
|
* [perl #127122] warn on unless (assignment) when syntax warnings are onTony Cook2016-01-215-1046/+1044
| | | | | | Previously the assignment was hidden by the not op wrapped around the condition, but newCONDOP() is sufficiently flexible that it isn't needed.
* perldelta for e9e9e546c676Tony Cook2016-01-211-1/+2
|
* [perl #126991] treat cop_line as unsigned in caller() (since it is)Tony Cook2016-01-212-2/+7
|
* add 5.23.8 placeholders to Module::CoreListTony Cook2016-01-213-3/+23
|
* more version bumpingStevan Little2016-01-201-1/+1
|
* manual tweakStevan Little2016-01-201-2/+2
|
* bumping versionStevan Little2016-01-2022-136/+136
|
* Fix Module-CoreList version in Changes fileChris 'BinGOs' Williams2016-01-201-1/+1
|
* new perldeltaStevan Little2016-01-2011-223/+645
|
* updating the epigraph and release scheduleStevan Little2016-01-202-1/+20
|
* add in the Known Issue, thanks again to BinGOs++v5.23.7Stevan Little2016-01-201-0/+12
|
* Adding the new version to Perl history Stevan Little2016-01-201-0/+1
|
* mauke++ && BinGOs++Stevan Little2016-01-201-16/+6
|
* remove the last of the boiler plateStevan Little2016-01-201-6/+0
|
* update module core list in perldeltaStevan Little2016-01-201-1/+69
|
* sorry, this is not correct, it was a small change to the test, I misread the ↵Stevan Little2016-01-201-13/+0
| | | | commit at first
* Update %Module::CoreList::released with new dateStevan Little2016-01-201-1/+1
|
* updated Module::CoreList (version has already been bumped in Changes and on ↵Stevan Little2016-01-201-6/+116
| | | | modules, this just adds the data)
* first run through for the perldelta, more to comeStevan Little2016-01-201-215/+133
|
* updating copyright to 2016Stevan Little2016-01-202-3/+3
|
* apparently that was now to best to deprecate an email address, this one is ↵Stevan Little2016-01-191-0/+1
| | | | better
* updating my own email, that address is no longer validStevan Little2016-01-192-2/+2
|
* Use lookup table for /\b{gcb}/ instead of switch stmtKarl Williamson2016-01-195-102/+143
| | | | | | | | | | | | | | This changes the handling of Grapheme Cluster Breaks to be entirely via a lookup table generated by regen/mk_invlists.pl. This is easier to maintain and follow, as the generation of the table follows the text of Unicode's UAX29 precisely, and loops can be used to set every class up instead of having to name each explicitly, so it will be easier to add new rules. And the runtime switch statement is replaced by a single line. My gcc compiler optimized the previous version to an array lookup, but this commit does it for not so clever compilers.
* t/re/uniprops.t: Fix bug in diagnostic outputKarl Williamson2016-01-193-3/+3
| | | | | An 'ord' was missing, so a warnings was raised. This file is generated by mktables
* Add qr/\b{lb}/Karl Williamson2016-01-1919-13/+7454
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds the final Unicode boundary type previously missing from core Perl: the LineBreak one. This feature is already available in the Unicode::LineBreak module, but I've been told that there are portability and some other issues with that module. What's added here is a light-weight version that is lacking the customizable features of the module. This implements the default Line Breaking algorithm, but with the customizations that Unicode is expecting everybody to add, as their test file tests for them. In other words, this passes Unicode's fairly extensive furnished tests, but wouldn't if it didn't include certain customizations specified by Unicode beyond the basic algorithm. The implementation uses a look-up table of the characters surrounding a boundary to see if it is a suitable place to break a line. In a few cases, context needs to be taken into account, so there is code in addition to the lookup table to handle those. This should meet the needs for line breaking of many applications, without having to load the module. The algorithm is somewhat independent of the Unicode version, just like the other boundary types. Only if new rules are added, or existing ones modified is there need to go in and change this code. Otherwise, running regen/mk_invlists.pl should be sufficient when a new Unicode release is done to keep it up-to-date, again like the other Unicode boundary types.
* Make tables for Perl-tailored Unicode Line_Break propertyKarl Williamson2016-01-194-3/+13262
| | | | | | | | | This is in preparation for adding qr/\b{lb}/. This just generates the tables, and is a separate commit because otherwise the diff listing is confusing, as it doesn't realize there are only additions. So, even though the difference listing for this commit for the generated header file is wildly crazy, the only changes in reality are the addition of some tables for Line Break.
* regen/mk_invlists.pl: Use property's real valuesKarl Williamson2016-01-192-2/+9
| | | | | | | A future commit will tailor a property to use fewer values than Unicode provides. Currently we look at the official property, and croak if not all the property values are there. This commit instead looks at the tailored property, the one that actually is being output.
* mktables: Add field to constructorKarl Williamson2016-01-193-10/+17
| | | | | This allows a default value to be specified, to prepare for a later commit.
* regen/mk_invlists.pl: Internal housekeepingKarl Williamson2016-01-192-9/+8
| | | | | | | | | This moves the name of a synthetic enum value to a better place in the code. The list it had been in is for a specific purpose that is not applicable to synthetic values, though it worked. But the new place is more logical, and can take advantage of the previous commit which makes things in this place more predictable.
* regen/mk_invlists.pl: Keep internal enum values lastKarl Williamson2016-01-192-125/+130
| | | | | | | | | | | | | | | | | | | | | Most Unicode properties have a finite set of possible values. Most, for example, are binary, they can be either true or false, but nothing in between. Others have more possibilities (and still others, like Name, are not restricted at all. The Word Break property, for example can take on a restricted set of values, currently 19 in all, that indicate what type, for purposes of word breaking, the character is. In implementing things like Word Break, Perl adds some internal-only values, like EDGE, which means matching like /^/ or /$/. By using these synthetic values, we don't need to have extra code for edge cases. These properties are implemented using C enums. Prior to this commit, the actual numeric values for each enum was mostly arbitrary, with the synthetic ones intermixed with the offical ones. This commit changes that so the synthetic ones are all higher numbers than any official ones, and the order they appear in the generating code will be the numerical order they have, so that the program has control of their order.
* remove vestigial uses of PRIVSHIFTDavid Mitchell2016-01-193-13/+22
| | | | | | | | | | | | | | | | | | | | | | | This is a hangover from when a magic (e.g. tied) var, after calling mg_get(), would only set the private (SVp_IOK,SVp_NOK,SVp_POK) flags on the result, indicating that although it now had a valid integer value (say), it wasn't a "real" integer. This was achieved by, after calling mg_get(), shifting all the public flags by PRIVSHIFT to convert them to private flags. Since 5.18.0, that's not been the case (i.e. mg_get() on a tied var leaves Svf_IOK etc set). But there are still a couple of vestigial uses of PRIVSHIFT in the core, and this commit removes them. For one of them, I added a test that shows that (in slightly contrived circumnstances), it was possible for a SVp_IOK NV to be upgraded to a SVf_IOK int on return from localisation, losing its fractional component. The other one, in S_sv_unmagicext_flags(), only seemed to get called when setting a new value (e.g. from mg_set()), so its unlikely that such a var would still have private flags set that could be incorrectly upgraded to public.
* Remove B::Section from B.pmTodd Rinaldo2016-01-191-67/+1
| | | | | This package is a vestigial reminant of B::C's removal in de1254415ffeb03b so is safe to be removed.
* lib/ExtUtils/typemap: silence g++ warning.David Mitchell2016-01-191-3/+11
| | | | | | | | | | | | From the added code comment: The weird way this is written is because g++ is dumb enough to warn "comparison is always false" on something like: sizeof(a) > sizeof(b) && a > B_t_MAX (where the LH condition is false)