{"push_id":787506842,"size":77,"distinct_size":17,"ref":"refs/heads/feature/CM-317-cperl-signatures","head":"aece7d2e2399376b5cf3f14e8d4335277543b6b8","before":"5c948481f0a4e253b7b81969db2f85197064cd72","commits":[{"sha":"19dd0a857763f7eb5a6b35e673d77c52310a8c5e","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"types: enhance and enable more\n\nrewrote the type matcher to be efficient. compare a single U32.\nwith max. 3 args. (1-2 used so far with our coreops).\ncreate the types now for opcode.h, and wrote a type encoder for the\nsigs. do not compare strings anymore.\n\nfix identation for some ops in pp.c\n\nenable ck_type promotion for more ops.\nadd more types, and enable more variants. we should be complete now.\nadd a testcase.\n\nrename n_complement to i_complement (was ncomplement)","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/19dd0a857763f7eb5a6b35e673d77c52310a8c5e"},{"sha":"6247a06a76164007fee051fe33d321e45002c871","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"types: change type_Void to 0xff\n\nThis way entersub returns Void and fails to match.","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/6247a06a76164007fee051fe33d321e45002c871"},{"sha":"ec49c4e74e55fe175e405620eecfc06da5d1ccfd","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"types: i_complement renamed in ext modules\n\nSafe, Opcodes, B::Deparse","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/ec49c4e74e55fe175e405620eecfc06da5d1ccfd"},{"sha":"661cce2b83e8c28299e982c63c90af157a22177e","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"types: exempt msgrcv from t/op/signatures.t\n\nswallow trailing comma test. msgrcv had a proper S S S S S sig, but\nis only L now. 5 args were too much.","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/661cce2b83e8c28299e982c63c90af157a22177e"},{"sha":"da4d6dc85999b65a04bdd3761bfee8530996ed95","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"[CHANGE] % with one negative integer argument\n\nDescribe how cperl behaves differently to perl5 with both integer\narguments with one negative to %. It behaves like with use integer.\nWith a typed integer variable or a integer constant cperl uses i_modulo\ndue to type dispatch. This behaves now like with the libc, and not like\nperl5 and is consistent with constant folding being done on promoted ops.\n\nAlso provide rationale for all other incompatible changes.","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/da4d6dc85999b65a04bdd3761bfee8530996ed95"},{"sha":"56c2124d355940f49975c7ca3c0e951ac7e4846f","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"i_modulo: fix t/op/int.t test to avoid i_modulo promotion","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/56c2124d355940f49975c7ca3c0e951ac7e4846f"},{"sha":"a7d382c0b5d2795f6fb6d1b21ce42b8ca87d6808","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"pod/perlcperl.pod: improve on types, ...","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/a7d382c0b5d2795f6fb6d1b21ce42b8ca87d6808"},{"sha":"16b3f98ce6f10a92b1739e53e511853d0aa2cd7d","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"types: i_divide exception\n\ndo not promote int / int to i_divide, as the result\nneeds to be num, and we do not check the result type yet.\nThis needs to be done in the type checker later in rpeep.\nTODO new tests in t/op/coretypes.t\n\nThis fixes a couple of arithmetic modules which divide int\nconstants in numeric context.\n\n  cpan/Math-Complex/t/Complex\n  cpan/Term-Cap/test\n  dist/Math-BigRat/t/bigrat\n  lib/Unicode/UCD\n  lib/sort\n  t/op/hexfp\n  t/op/sprintf2\n  t/op/write","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/16b3f98ce6f10a92b1739e53e511853d0aa2cd7d"},{"sha":"e3f5f9ee142f86fc56ed63ef8ffa4e67bc0d855e","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"types: add u_add to promote from add [WARN]\n\ni_int is only IV, but we want to use the UV range also.\nSo favor u_add over i_add in auto-promotions.\nuse integer still promotes to i_add.\n\nFix t/op/inc.t to forbid i_multiply loosing UV_MAX.\nThis is one example which could happen in practice:\n1 + 2.0 * (~0 >> 1) => UV_MAX vs 1 + 2 * (~0 >> 1) => -1\n\nBut forbid u_add promotion with use integer, we need\nan op with :Int result then, which is i_add.","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/e3f5f9ee142f86fc56ed63ef8ffa4e67bc0d855e"},{"sha":"8aa08955f7a0c3a94c46a8d6fe0e0761ed32fbd2","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"perlcperl.pod: one more incompatibility\n\nDocument the new (/old - until 2002) behavior of automatic integerization of\nall arithmetic ops, with the excpetions of + which will try to use UV (but\nnot NV), / which will stay numeric and shifts which will stay unsigned.\n\nPractically this could lead to problems in modules with constant numbers in\nthe IV_MAX - UV_MAX range, esp. by using * as in t/op/inc.t.\n** has no integer variant, so is safe.","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/8aa08955f7a0c3a94c46a8d6fe0e0761ed32fbd2"},{"sha":"6131f1eee4d3430dfe9637a3c4a95facde6869ee","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"types: add u_multiply to promote multiply\n\nanalog to u_add. these are the two only exceptions for constant\nintegers which do promote to UVs, useful for large constants.\nOnly t/op/inc.t which tests UV overflow to NV had to be changed\nto use NV context.","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/6131f1eee4d3430dfe9637a3c4a95facde6869ee"},{"sha":"fb1856a311119c9603cc1e355e45deaf5d7e0df9","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"types: fix ck_type for S? ops\n\narith ops with optional args, like abs, exp need not\nhave kids, they take PL_defgv ($_) then, which is untyped.\n\nFixes occasional lib/B/Deparse-core.t crashes","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/fb1856a311119c9603cc1e355e45deaf5d7e0df9"},{"sha":"6154d6fc742728273b9bd927bdc4f3883ea6ef7c","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"sized arrays: run-time part, my @a[20]\n\nsized arrays cannot grow beyond the declared size and cannot be magic.\nThe declared size is always equal to the actual size, the array is pre-filled\nwith undef.\nthus sized arrays are faster to access at run-time than aelemfast (constant indices),\nbut this name is already taken.\n\nadd 2 new ops: aelemsize_const for constant indices, similar to aelemfast_lex,\nand aelemsize for variable indices.\nconstant indices are already compile-time checked, there is no need to\nbounds-check and check magic at run-time.\nNote that aelemsize_const can also be used for non-constants but\ntypechecked indices.\n\naccess to non-existing indices result in a die with PL_no_aelem.\nthese can be yet unassigned indices or indices beyond the declared size.\n\nnegative indices for constants are resolved at compile-time, as the\nactual size is already known then, so we can omit the check for negative indices\nat run-time.\nInstead of being pre-filled with &PL_sv_undef we could imagine dying on access\non an unassigned index.\n\nWithout AELEMSIZE_RT_NEGATIVE the declared size is always equal to the actual size.\nTo allow the actual size (AvFILL) deviate from the declared size (AvMAX)\nbut this causes a slower run-time access for constant indices. (percent?)\n\nAdd the 2 new ops to Opcodes in tag :base_core\n\nuse feature \"sized_arrays\"\n\nThere is no number-only token yet, needed for the const part.\nBut THING is good enough for literals, like IV, NV and \"str\",\neven - is disallowed already.\nSet the type already at the parse, because the targ is\nallocated.\n\nadd Perl_av_init_sized\n\nwith coretype support and native types.\nprotect native sized arrays from being cleared:\nSvREADONLY for sized and also !AvREAL for native","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/6154d6fc742728273b9bd927bdc4f3883ea6ef7c"},{"sha":"a76f6d30d38e4be0472071a77aa52f36b5d85c66","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"shaped arrays: rename from sized arrays\n\nRationale: Discussion with #perl6. They named it shaped because this fits\nbetter for multidimensial arrays.  We will eventually add multidim also, and\nit is less confusing for the casual user of cperl and perl6 then.\nEven if \"shaped\" reminds me on \"shaved\", and \"sized\" is easier to pronounce\nand remember. \"shaped\" are only structs, but not arrays. Oh well.\nif multi, they are multi-sized.\n\nAdd more samples to the feature docs, but it should be in perldata.\n\nshaped arrays: add unchecked op variants as _u\n\nharmonize the names for the unchecked variants for all types.\nuse the _u suffix.\nimplemented for native and boxed typed, but not yet\nused (enabled in the compiler)\n\nshaped arrays: fix init_shaped, add t/op/aelem_u.t\n\njust fixed the native type check.\nscalar does not work yet.\n\nnot native tests yet, as the compiler does not add the box ops, and uses\nthe new ops yet.\neven the current tests still use the old aelemfast_lex ops, not the\nnew typed ones.\n\nshaped arrays: compile-time check out of bounds\n\nadd ck_aelem, add SHAPED flag to sv_dump.\ncheck shaped array indices at compile-time.\n\nTODO: promote the aelem ops if shaped or typed.\n\nshaped array: compile-time check invalid ops\n\nThrow \"Invalid modification of shaped array: op var\"\n\nDetect shape modifying ops: shift, unshift, pop, push.\nbut for unshift, push only the 0 and 1 arg cases yet.\nsplice is only checked at run-time, as we would need to check many\nconst args.\nDisable the temp. SvREADONLY so we can assign now.\n\ndo not initialize the shaped array with undef, as it is readonly.\nrather use the magic NULL value.\n\nadd run-time errors for the compile-time counterparts.\nNote that the var name is not yet fixed there.\n\nenable ck_pad for padav also, coming only from newAVREF, via PADANY.\nbut the op is not chained yet.\n\ncompile to aelemfast_lex_u.\nflip negative constant indices to positive and allow max 255,\nnot just 127.\n\non lval return an empty sv body to be filled in as in aelemfast,\nwhich is just an optimized padav. needed e.g. for sassign lval.\nThis is the inlined behaviour of aelemfast_lex, with ignoring magic,\nav_fetch and bounds checks.\n\naelem_u: add OPpMAYBE_LVSUB to op_private\nthis private bit is allowed, the others not.","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/a76f6d30d38e4be0472071a77aa52f36b5d85c66"},{"sha":"373e2491f9f5a003e3155339100056471c1663da","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"shaped arrays: re-enable multideref aelem optim\n\nimprove the old PL_check[o->op_type] != Perl_ck_null check\nto check for ext/arybase ck_ overrides in maybe_multideref().\nWe use now our own ck_aelem.\nAnd we dont need to skip on helem with arybase.\n\nThis fixes the ext/B/t/f_sort.t regression.","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/373e2491f9f5a003e3155339100056471c1663da"},{"sha":"3799bc7693453d946b188e9237c3de81b48e3022","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"shaped arrays: fix porting/args_assert.t","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/3799bc7693453d946b188e9237c3de81b48e3022"},{"sha":"5babfc836a341088f3664e1091ed2b63da6fa9db","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"shaped arrays: fix t/porting/podcheck.t","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/5babfc836a341088f3664e1091ed2b63da6fa9db"},{"sha":"1bfe7da2ccb9de71da4512addd0bca7d6cde55b6","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"shaped arrays: fix t/porting/diag.t\n\nadd exceptions for test problems with the\nnew shaped array diagnostics.","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/1bfe7da2ccb9de71da4512addd0bca7d6cde55b6"},{"sha":"a825520df59fe0a78c7db293a65cbbe7a4be7b5d","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"loop out-of-bounds: optimize loops with static arylen\n\nwhen the loop is bound by arylen, like for (0..$#a) { $a[$_] }\nthe array accesses in the body can use the unchecked aelem_u\nversions.\ncheck right array and index.\nonly try to optimize AELEM, not constant indices, and\nMULTIDEREF is not optimized yet.\n\navoid slow aelem private bits. do not optimize then.\nTODO: magic av allowed with _u? for now not checked.","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/a825520df59fe0a78c7db293a65cbbe7a4be7b5d"},{"sha":"f9810f90695e98cd2dcf66e62662630a9a83076d","author":{"email":"b3538261d0c0bffcce3d04dcc48be08a7393a14f@cpanel.net","name":"Reini Urban"},"message":"shaped arrays: convert my num to Num on 32-bit\n\nwarn only with use warnings \"misc\";","distinct":false,"url":"https://api.github.com/repos/perl11/cperl/commits/f9810f90695e98cd2dcf66e62662630a9a83076d"}]}