Geth rakudo: ugexe++ created pull request #6451:
Remove dead code from Perl6::ModuleLoader
02:44
03:15 apogee_ntv left, apogee_ntv joined
Geth nqp/ugexe/dispatch-op-arg-release-kind: 6098829c6a | (Nick Logan)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp
Release dispatch op arg registers under their coerced kind

Previously add-dispatcher-op recorded each argument's register kind before coercing small-int, uint, and num32 arguments to full-width registers, then released the coerced register under that stale kind. That put an int64 register on the uint64 free-list (and similar for the other coerced kinds), so a later fresh_register of that kind in the same ... (7 more lines)
03:26
nqp: ugexe++ created pull request #854:
Release dispatch op arg registers under their coerced kind
03:27
ugexe m: run $*EXECUTABLE, q[-e], q[use nqp; sub f(uint $x) { nqp::dispatch("boot-value", $x) }; say f(3)]; BEGIN %*ENV<RAKUDO_RAKUAST>=1 03:30
camelia Bytecode validation error at offset 50, instruction 8:
operand type 160 (?) does not match register type 32 (int64) for op decont_u in frame f
in block <unit> at -e line 1

The spawned command '/home/camelia/rakudo-m-inst-2/bin/perl6-m' exit…
ugexe m: run $*EXECUTABLE, q[-e], q[use nqp; sub f(uint $x) { nqp::dispatch("boot-value", $x) }; say f(3)];
camelia 3
ugexe fixes that
Geth rakudo: ugexe++ created pull request #6452:
RakuAST: literalize an unhandled node to the sentinel, not a die
04:04
rakudo: ugexe++ created pull request #6453:
RakuAST: deparse and raku a "will" trait via .phase and .block
04:32
05:39 hurufu joined 06:59 [Tux] left, [Tux] joined 07:19 [TuxCM] joined 07:20 [Tux] left 08:01 rnddim joined, ShimmerFairy left 08:02 rnddim left, rnddim joined, rnddim is now known as ShimmerFairy 08:04 ShimmerFairy left, ShimmerFairy joined
Geth rakudo/main: 5eaeac3775 | (Nick Logan)++ (committed using GitHub Web editor) | 3 files
RakuAST: deparse and raku a "will" trait via .phase and .block

RakuAST::Trait::Will holds .phase and .block, but both handlers reached for .type and .expr, which it does not have. .raku threw "No such method
  'type'", and .DEPARSE had no candidate at all: the deparse method was
mistakenly named "raku", so it both shadowed the real .raku and left
  "will" traits to fall through to the base "Deparsing ... not yet
implemented" catcher. So `my $x will begin { }` could be neither deparsed nor reconstructed.
Rename the deparse method and read .phase and .block in both handlers.
08:56
rakudo/revert-6453-ugexe/deparse-will-trait: 33ff040431 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | 3 files
Revert "RakuAST: deparse and raku a "will" trait via .phase and .block"

This reverts commit 5eaeac37755a93d3f3efa886a7dc8c952f27a117.
lizmat huh? 08:57
ab5tract oh wow, if I've ever seen that `my $x will begin { }` syntax before, I've forgotten it by now 14:39
I can dig it 14:40
lizmat fwiw, I think BEGIN my $x .... is clearer 15:35
it's just that for consistency *any* phaser can be specified
[Coke] ok, dropping (finally) off the perl6-users mailing list 16:17
well, trying to. not sure if the unsub email I just sent is being listened to by anything. 16:19
ugexe anyone have any other NYI type suggestions I should look into? 16:41
anyone know why we have bindpos_u and atpos_u but not other seemingly expected _u variants like push_u, pop_u, shift_u, unshift_u? 16:53
m: my uint @a; @a.push(2**64-1) 17:01
camelia Cannot unbox 64 bit wide bigint into native integer. Did you mix int and Int or literals?
in block <unit> at <tmp> line 1
ugexe if someone wanted to do the moarvm part of that but not the rest i could drive that to completion 17:07
i came about this from github.com/rakudo/rakudo/commit/a64c2f55f9 17:15
lizmat it was my understanding that nine didn't think they would be necessary 17:37
ugexe do you have any evidence of that? the link i showed suggests he thought the opposite at one time 17:44
lizmat it was just from memory... and that commit indeed points to it being needed.. 17:50
m: use nqp; my uint $a = -1; my uint @a; nqp::push_i(@a,$a); dd @a # this appears not needing it 17:56
camelia uint = array[uint].new(18446744073709551615)
ugexe m: my uint @a; @a.push(my uint $ = 2**64-1) 18:11
camelia ( no output )
ugexe nqp::push_i(self, T.^unsigned ?? (my uint $ = non-iterable.AT-POS($_)) !! (my int $ = non-iterable.AT-POS($_)))) for ^$elems; 18:16
so we'd need to do something like that then
(on the lines nine commented on that i linked) 18:20
maybe even `my T $ = ...` would work 18:23
i guess the question still remains if push_u etc should exist still stands, but the question of if the lack of it can be worked around the answer is yes 18:25
18:39 hurufu left 18:40 hurufu joined
japhb I think the _u variants should be there for real, and not just be workarounds. 18:57
Workarounds tend to be either slow or wrong, and when I use unsigned integers I typically want exactly NOT that. 18:58
20:28 hurufu left 21:05 ShimmerFairy left 21:06 ShimmerFairy joined 21:34 committable6 left, bloatable6 left, jjatria left, committable6 joined, bloatable6 joined, jjatria joined
lizmat the _u variants could just be synonyms , at least initiallly? 23:26
ugexe whats the point of that though 23:27
lizmat because at the VM level they'd do the same thing?
ugexe i personally don't like the idea of faux constraints that don't actually work
we already will presumably have to deal with the fallout of making push_i working differently (correctly) with uints 23:29
no use in adding a second vector with push_u
(assuming aliases) 23:31
lizmat m: dd UInt.HOW.^nam # isn't that the real underlying issue? 23:42
camelia Method NQPClassHOW.nam not found
in block <unit> at <tmp> line 1
lizmat m: dd UInt.HOW.^name
camelia "Perl6::Metamodel::SubsetHOW"
lizmat that there's no HLL equivalent to uint ? 23:43
it's late here, so will check in again tomorrow
&
ugexe yeah probably 23:49