| [Tux] | Is JJ (Juan Julian) here too? | 06:40 | |
| ab5tract | I’m late to comment but I think that calling a range “valid” when it will never produce a range of numbers is absolutely wrong | 07:33 | |
| That’s Perl logic | 07:34 | ||
| I don’t see any cause to keep this behavior in 6.e | |||
| It’s a tiny change to RakuAST to address this | 07:35 | ||
| Honestly, it’s this kind of “it’s an invalid valid” behavior that makes people bounce off of Raku (and for very good reason imo) | 07:36 | ||
| ShimmerFairy: if you want to add a sanity check to the range class in RakuAST, I would vociferously support your PR | 07:37 | ||
|
08:03
zostay_ joined
08:05
summerisle_ joined
08:09
zostay left,
summerisle left,
zostay_ is now known as zostay
08:12
hankache left
|
|||
| [Tux] | ===( 9109;2 4559/? 0/? 0/? )======================================Potential difficulties: | 08:14 | |
| Useless use of constant integer 1 in sink context | |||
| at t/75_hashref.t:33 | |||
| ------> CATCH { default { $e = $_; <HERE>1; }} | |||
| just remove the `1;` ? | |||
| lizmat | or make it return 1 ? | 08:30 | |
| not sure what the 1 was supposed to mean? | |||
| [Tux] | neither do I :) | 08:51 | |
| lizmat | what's the API of the sub with the CATCH in it? | 08:52 | |
| [Tux] | it is in a test file. looking right now ... | ||
| weird: not in the source code at all | 08:54 | ||
| ignore that | 08:55 | ||
| lizmat | ah, just remove the 1 | ||
| indeed has no function there | |||
| [Tux] | removed and pushed | 08:57 | |
|
09:13
Voldenet left
10:23
Voldenet joined
|
|||
| lizmat | c: HEAD use v6.*; my @a := [1,[2,[3,4]]]; @a[||("1",)] := 42; dd @a | 10:25 | |
| committable6 | lizmat, ¦HEAD(25984bb): «Cannot bind to Array slice in block <unit> at /tmp/k0dX0UrTB5 line 1 «exit code = 1»» | ||
| lizmat | c: HEAD use v6.*; my @a := [1,[2,[3,4]]]; @a[||(1,)] := 42; dd @a | ||
| committable6 | lizmat, ¦HEAD(25984bb): «[1, 42]» | ||
| lizmat | meh | ||
| ShimmerFairy | Thinking about the Range stuff, I don't think we could outright ban all backwards ranges, since then we'd need to come up with a new way of modeling "a range of zero elements". I think my only concern, ultimately, is that stuff like 9^..7 indicates an expectation that won't hold. So maybe we only refuse to build backwards ranges with exclusive ends? | 10:34 | |
| lizmat | if you're talking about 9 ^.. 7 , then we would need to build the check into infix:<^..> | 10:36 | |
| and I guess then only if they are literal values | |||
| so maybe this needs to be a worry in the grammar ? | |||
| ShimmerFairy | I think checking in the constructor would be best, so that all ways of spelling a Range are checked. I don't know if there's a sensible use case for Range.new(9, 5, :excludes-max) where 9..^5 wouldn't make sense too. | 10:38 | |
| lizmat | Again, you're talking literal values: the constructor doesn't see that | 10:39 | |
| and disallowing that will most likely break existing code that depends on being able to create an empty Range with such endpoints | 10:40 | ||
| so I think a worry in the grammar is the best way forward when literal values are specified | 10:41 | ||
| the worry could be something like: reverse Ranges are not supported, did you mean to use the sequence operator: ... | |||
| ShimmerFairy | I don't care about literal values in particular, just situations where $min > $max. 11..9 has surprising behavior, but the rule of "backwards ranges count as empty" is easily learned. But the fact that those ranges can still exist, holding their constructed values, means that 11^..9 comes with *additional* surprising behavior that's worth worrying about. | 10:42 | |
| That being said, at the very least, worrying the literal spellings of 3^..^1 etc. would be helpful since no good can come from trying to put exclusive ends on top of a backwards Range. (One could argue that literal spellings of 1..0 are a worry too, to a lesser extent.) | 10:43 | ||
| lizmat | yeah, because most likely the user intended to use ... or wasn't aware that decreasing ranges aren't a thing | 10:44 | |
| ShimmerFairy | While backwards Range = emptiness makes enough sense overall, if a user wants to express constant emptiness you'd expect them to type something like @a[Empty] rather than @a[1..0], so that the intent is clear. | 10:47 | |
| lizmat | m: my @a = 1; @a[0;0] = 42 # meh | 11:37 | |
| camelia | Cannot modify an immutable Int (1) in block <unit> at <tmp> line 1 |
||
| Geth | rakudo/lizmat-78: aea709da78 | (Elizabeth Mattijsen)++ | src/core.c/Any.rakumod Fix Any:D.AT-POS() candidate It wasn't returning a container if called on a container. Also remove the "is raw" trait on an AT-POS candidate that will never return anyway. |
11:53 | |
| rakudo: lizmat++ created pull request #6853: Fix Any:D.AT-POS() candidate |
|||
| rakudo/lizmat-79: ebcb78ebb3 | (Elizabeth Mattijsen)++ | src/core.c/Any.rakumod Make sure dd() properly reports on caller's scope Looks like legacy actually removed the frame of the "else" in which the reporting lived: RakuAST needed an extra level. Fix this more generally by making sure that if no arguments are specified, the reporting is done from the sub's scope itself. This fixes the issue for core's built with legacy, as well as with RakuAST. And if in the future "else" scopes will also be optimized away, then this will continue to work properly. |
13:14 | ||
| rakudo: lizmat++ created pull request #6854: Make sure dd() properly reports on caller's scope |
13:15 | ||
| rakudo/main: cfb221c3e2 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | src/core.c/Any.rakumod Fix Any:D.AT-POS() candidate (#6853) It wasn't returning a container if called on a container. Also remove the "is raw" trait on an AT-POS candidate that will never return anyway. |
13:16 | ||
| roast: bed6022ba0 | (Elizabeth Mattijsen)++ | S09-multidim/XX-POS-on-undimensioned.t Add test for github.com/rakudo/rakudo/commit/cfb221c3e2 |
13:28 | ||
| [Coke] | Release tentatively scheduled for a week from Saturday. No hiccups on any commits so far in blin | 13:33 | |
| releasable6: next | |||
| releasable6 | [Coke], Next release in ≈9 days and ≈5 hours. There are no known blockers. 46 out of 184 commits logged | ||
| [Coke], Details: gist.github.com/f1898250f4bce4b8bd...cb23299bc1 | |||
| [Coke] | Are we good with everything that's been merged so far, anything that is a must-have for .10 that isn't in yet? (I wonder if we should have a tag for PRs to show if we want them in release X) | 13:39 | |
| (I guess that tag is just blocker, actually) | 13:40 | ||
| Geth | rakudo/main: 7373bf69e8 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | src/core.c/Any.rakumod Make sure dd() properly reports on caller's scope (#6854) Looks like legacy actually removed the frame of the "else" in which the reporting lived: RakuAST needed an extra level. Fix this more generally by making sure that if no arguments are specified, the reporting is done from the sub's scope itself. This fixes the issue for core's built with legacy, as well as with RakuAST. And if in the future "else" scopes will also be optimized away, then this will continue to work properly. |
15:48 | |
| rakudo/lizmat-64: 48aed24ced | (Elizabeth Mattijsen)++ | src/Raku/ast/code.rakumod Oops, forgot one "int" |
16:26 | ||
| rakudo/main: a3e3686389 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | 3 files RakuAST: create ::IfUnless base class (#6831) The handling of RakuAST::StatementModifier::If and ::Unless differ only in the nqp op that generates the QAST. Instead ::Unless doing a cat-license of ::If, create a base class ::IfUnless referring to a method that provides the op-name, and make ::If and ::Unless provide the correct op name. This also allows some conditions /base and /var-loweing to be simplified. |
16:29 | ||
| rakudo/main: 4872dd8950 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | src/Raku/ast/expressions.rakumod RakuAST: add base class RakuAST::MetaInfix::CrossZip (#6834) The logic of RakuAST::MetaInfix::Cross and RakuAST::MetaInfix::Zip are identical, except for three values: - action ('cross with' | 'zip with') - metaop ('X' | 'Z') ... (11 more lines) |
16:30 | ||
|
16:38
finanalyst joined
|
|||
| ab5tract | now that RAKUDO_RAKUAST is full-on, maybe we could start using some DEPARSE magic in choice places... for example, in the default usage handler | 16:47 | |
| lizmat | pretty sure the AST is gone by that time ? | ||
| ab5tract | well I managed it with whatevercodes | 16:48 | |
| lizmat | ok, maybe I'm not understanding ? | ||
| ab5tract | I'm pretty sure we can now surface where clauses in the usage handler | ||
| so that you can actually see what the rejection criteria is | 16:49 | ||
| lizmat | well, if you can, more power to you! :-) | 16:50 | |
| Geth | rakudo/main: 8d60a82737 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | 4 files RakuAST: nqp::objprimspec can handle nqp::null (#6832) So there is no need to extra guard against this eventuality. Also slightly re-arrange some if's into ternaries |
||
| lizmat | m: use v6.*; my @a := [1, [2, [3,4]]]; @a[||1,1,1] for ^500000; say now - ENTER now | 16:54 | |
| camelia | 0.296980531 | ||
| lizmat | m: use v6.*; my @a := [1, [2, [3,4]]]; @a[||<1 1 1>] for ^500000; say now - ENTER now | ||
| camelia | 0.276994147 | 16:55 | |
| lizmat | m: use v6.*; my @a := [1, [2, [3,4]]]; @a[||1,1,1] for ^1000000; say now - ENTER now | ||
| camelia | 0.54141459 | ||
| lizmat | m: use v6.*; my @a := [1, [2, [3,4]]]; @a[||<1 1 1>] for ^1000000; say now - ENTER now | ||
| camelia | 0.536706294 | ||
| lizmat | argh | 16:56 | |
| c: HEAD use v6.*; my @a := [1, [2, [3,4]]]; @a[||1,1,1] for ^1000000; say now - ENTER now | |||
| committable6 | lizmat, ¦HEAD(8d60a82): «No build for this commit» | ||
| lizmat | c: HEAD~1 use v6.*; my @a := [1, [2, [3,4]]]; @a[||1,1,1] for ^1000000; say now - ENTER now | ||
| committable6 | lizmat, ¦HEAD~1: «1.666141178» | ||
| lizmat | c: HEAD~1 use v6.*; my @a := [1, [2, [3,4]]]; @a[||<1 1 1>] for ^1000000; say now - ENTER now | ||
| committable6 | lizmat, ¦HEAD~1: «1.237835858» | ||
| lizmat | so why is a list of allomorphs faster than a list of ints ? | 16:57 | |
| it's because currently <1 1 1> is qasted as a WVal, and 1,1,1 is QASTed as infix:<,>(1,1,1) | 16:58 | ||
| Geth | rakudo/main: fba5df0890 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | 3 files RakuAST: make several lookup tables compile-time (#6836) So that they don't need to be initialized every time they are about to be accessed. |
16:59 | |
| rakudo/main: 72076fa94e | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | src/Raku/ast/expressions.rakumod RakuAST: replace variable by literal (#6837) This variable was only initialized to zero, and then used without being referenced or mutated anywhere else. |
17:00 | ||
|
17:11
finanalyst left
|
|||
| ab5tract | but both of those look correct to me | 17:12 | |
| Geth | rakudo/lizmat-59: 48 commits pushed by (Nick Logan)++, (Elizabeth Mattijsen)++, (Will Coleda)++ review: github.com/rakudo/rakudo/compare/1...63a8ac63c7 |
17:52 | |
| lizmat | they are both correct, but one is significantly faster than the other | 17:53 | |
| if infix:<,> is the core infix:<,> at compile time, then (1,1,1) can also be QASTed as a WVal | 17:54 | ||
|
19:28
hankache joined
19:58
Pixi` joined
20:01
Pixi left
|
|||
| Geth | rakudo/lizmat-80: 35fb7a4fdf | (Elizabeth Mattijsen)++ | src/Raku/ast/expressions.rakumod Re-imagine ::ApplyPrefix.IMPL-RECORD-NATIVE-RETURN-TYPE - no return statements - re-arranged conditions so short-circuiting can happen earler - assuming it will usually work, use ifnull for condition in binding |
20:05 | |
| rakudo: lizmat++ created pull request #6856: Re-imagine ::ApplyPrefix.IMPL-RECORD-NATIVE-RETURN-TYPE |
|||
| rakudo/lizmat-64: 14 commits pushed by (Elizabeth Mattijsen)++, (Will Coleda)++ review: github.com/rakudo/rakudo/compare/4...74a635ef2e |
20:07 | ||
| rakudo/main: a7cbac9ecc | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | tools/build/monitor-process.pl Fix typo in argument handling (#6850) |
20:08 | ||
| rakudo/main: db8e2b4179 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | src/Raku/ast/variable-declaration.rakumod RakuAST: simplify missing initializer test (#6838) No need to create intermediate variables |
20:09 | ||
| rakudo/main: d9a5d7dd86 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | src/Raku/ast/resolver.rakumod RakuAST: streamline ::Resolver::(EVAL|Compile) (#6842) Specifically the .current-scope and .outer.scope methods, as these are pretty hot during compilation, and use atpos(..,i) vs ...[i] is about 2x as fast. |
20:13 | ||
| rakudo/main: 1ca0a10077 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | src/Raku/ast/resolver.rakumod RakuAST: streamline ::Resolver::(EVAL|Compile).find-scope-property (#6843) Another hot method during compilation, rewritten to use atpos and no return statements. |
20:14 | ||
| rakudo/main: 8bc8f978ba | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | src/Raku/ast/expressions.rakumod RakuAST: optimize ::Infix.IMPL-APPLY-SINK-TO-OPERANDS (#6840) In this relatively hot piece of code, replace for loops by native nqp::while and use nqp::atpos instead of postcircumfix []. For reference, an nqp::while loop + nqp::atpos is about 2x as fast as a for loop in nqp. That's because the iterator overhead is pretty big in nqp. And using nqp ops also creates smaller bytecode so more chance of inlining. |
20:18 | ||
| rakudo/main: bb691c098e | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | src/Raku/ast/expressions.rakumod RakuAST: optimize ::Assignment.IMPL-APPLY-SINK-TO-OPERANDS (#6841) In this relatively hot piece of code, replace for loops by native nqp::while and use nqp::atpos instead of postcircumfix []. |
20:19 | ||
|
23:27
coleman left,
apogee_ntv left
23:44
coleman joined,
apogee_ntv joined
23:48
coleman left,
apogee_ntv left,
coleman joined
23:49
apogee_ntv joined
|
|||