| IRC logs at
Set by AlexDaniel on 12 June 2018.
06:52 domidumont joined
nwc10 good *, #moarvm 07:35
07:43 zakharyas joined
MasterDuke i'll concur about the '*' and the '#moarvm', but am reserving judgement on the 'good' 07:44
07:58 sena_kun joined
nine Yeah....I woke up a second time this night (once is sadly par for the course) and couldn't fall asleep again. Until I did and then dreamed that I couldn't fall asleep. 08:19
MasterDuke we could get into a four yorkshiremen contest here about waking up in the night (the baby is currently teething) 08:27
08:28 zakharyas1 joined 08:30 zakharyas left
lizmat in my time we got out of bed an hour before we went to sleep 08:31
MasterDuke you had a bed?! 08:32
08:34 zakharyas1 left
MasterDuke nine: is impressive. after it's merged i'll rebase and 08:34
nine MasterDuke: well it's your impressive work that prompted me to fix those things :) 09:19
MasterDuke thanks, but you don't want to see how these sausages are made... 09:22
nine one never does :D
MasterDuke ooo, this looks really cool 09:57
jnthn morning o/ 10:17
.oO( too late, last week it would have been still morning :-)
nwc10 \o
MasterDuke m: my $a; my $s := now; $a := now for ^100_000; say now - $s;
camelia 0.9384962
nwc10 I wasn't intending to reply, but was more curious here - of this list, what *doesn't* Raku have?
W functions?
MasterDuke well, that's now only 0.19s locally (up from 0.03s before bug fixes), and there's only one failing spectest 10:19
Failed test 'Instant subtraction (non-integral seconds)'
expected: '0.285714'
     got: '0.285714285'
nwc10 I feel that the the list is valid, but note also that half of those things need internals changes, or are impossible within any human timeframe
10:21 domidumont left
lizmat yeah, it's easy to make list of missing things 10:22
MasterDuke m: say (2/7).Num
camelia 0.2857142857142857
lizmat my car misses a Mr. Fusion powersource 10:23
nwc10 I think it's a *good* list, and I agree with most of it
I didn't mean at all to belittle it
I think it has most things that matter, and doesn't omit anything massive
jnthn I think we even do call the W functions in quite a few places in MoarVM
MasterDuke the test is
nwc10 it was more "a solution to most of these already exists" 10:24
jnthn Remind me what the /r flag is?
nwc10 substition (or transliteration) returns the modified value. Original variable is unchanged
jnthn Oh, right :)
Yeah, we have that but differently done 10:25
nine A thing that's very true for Raku(do) also: "Simply put, we need more people, and we need to do better with the people we have. We need a way to get more people able to work on actual real core features, and we need to ensure that the people we do have can work on features as best as they can." 10:26
from the reply
jnthn Indeed. 10:27
nine I think much more than with those technical topics we can learn from Perl about these social aspects. 10:28
For example that we absolutely need to keep a good balance between backwards compatibility and the possibility for newcomers to be able to make contributions to the core.
nwc10 Oops. I accidentally started a discussion. I didn't mean to distract people. 10:29
nine Personally I love Perl's backwards compatibility as a user and I've completely given up on getting any change into perl.
nine is having lunch anyway :)
nwc10 where did breakfast go?
that one with the IO module and the opcode hook was a real problem, in that different things expect different behaviours from the same "feature", and it was never thought through 10:30
nine In a slight deviation to my usual eating schedule I had a bit of cake with my coffee before the 11 o'clock meeting and I count that as breakfast ;) 10:31
nwc10 aha, "safely in my tummy"
this being the phrase I was trying to encourage the children with, particularly when there are dogs around
on the basis of if it's not safely in *your* tummy, pretty soon it might be safely in a different tummy 10:32
MasterDuke now has the commit that speeds up `now`, but it still has the problem with that one spectest 10:42
lizmat MasterDuke: does it keep the old nqp::time_* ops working ? 10:43
MasterDuke yeah
lizmat Cool!
I would be in favour of merging all of that now 10:44
anybody any objections ?
nine I guess that one spec test failure counts as an objection?
MasterDuke well, time is one of those things i know is impossible to get right (like names and places), so i certainly would appreciate if people gave the diff a look 10:45
lizmat: i just made the minimal changes needed for Telemetry to work. it might be possible to simplify/optimize it to work in nanoseconds and reduce some of the math going on 11:15
lizmat MasterDuke: cool, will look at that after the merge 11:16
MasterDuke: look at the failing test, I believe we cannot fix that 11:17
since Instant no longer has a Rat at its source
and 2/7 cannot be represented correctly using integer / float representations 11:18
sena_kun no merge if breakage 11:20
MasterDuke well, the test is just testing the string representation 11:21
lizmat MasterDuke: but you can't go from an approximation to a Rat, so that will never work? 11:22
MasterDuke true. but i wonder what master would say if the test is changed to is-deeply 11:23
lizmat fails with is-deeply 11:24
# got:<2/7>)
passes with: is-deeply diff(second => 2/7).Rat, 2/7 11:25
MasterDuke ah, but the duration is carrying around the 2/7
lizmat ah... did you change Duration as well to not have a Rat at its core ? 11:26
MasterDuke yeah
i'll see how easy it is to back that out
lizmat well... don't
MasterDuke and just change Instant instead 11:27
lizmat because I feel that using a Rat there is the wrong thing anyway
MasterDuke wait, don't what?
lizmat don't revert the Duration change
you won't be able to make a Rat out of a nanosecond (integer) value anyway
the whole intent of making Instant based on a Rat, was to give it more precision than floating point would 11:28
MasterDuke just nanoseconds / 1000000000 11:29
lizmat hmmm... actually, that might work if you changed the .Rat methods on Instant and Duration ?
MasterDuke well, i do already 11:31
lizmat Cool 11:32
but that still makes the test fail then... what does it give for the values ?
MasterDuke # expected: '0.285714' 11:33
#      got: '0.285714285'
lizmat and with: is-deeply diff(second => 2/7).Rat, 2/7 ? 11:34
MasterDuke # expected: <2/7>
#      got: 0.285714285
which seems odd 11:35
lizmat no, that's correct
because 2/7 can not really be represented as a string
so it chooses to do <2/7> instead
MasterDuke right 11:36
lizmat perhaps changing the test to: is diff(second => 2/7).Num, 2/7.Num
actually: is-deeply diff(second => 2/7).Num, 2/7.Num 11:37
this passes on master
MasterDuke hm, doesn't here 11:38
# expected: 0.2857142857142857e0
#      got: 0.285714285e0 11:40
lizmat is-deeply diff(second => 2/7).Num, 2/7.Num, 'Instant subtraction (non-integral seconds)'; 11:42
doesn't pass for you on master ?? qeird
MasterDuke on my branch
lizmat aah... ok 11:44
MasterDuke would we have more freedom to change tests if we stick this change behind a lang version boundary? i.e., 6.e 11:46
lizmat how about: is diff(second => 2/7).fmt('%.9f'), (2/7).fmt('%.9f') 11:47
since the test *was* about string comparisons
11:50 lizmat_ joined
MasterDuke heh. fails in the last number (expected 6 got 5). `.fmt('%.8f')` works... 11:50
lizmat_ well, that'd be close enough, I'd say 11:51
MasterDuke it also passes if you just change the `is` to `is-approx` 11:53
11:53 lizmat left 11:56 lizmat_ is now known as lizmat
lizmat MasterDuke: 11:56
MasterDuke cool. that'll have to be cherry-picked back to the errata branches, right? 11:58
lizmat yeah, guess so :-) 12:01
sena_kun yes 12:02
I'll do cherry-picking anyway, but doing so now will save some time when releasing.
Also, can anyone please check kill.t test on errata branches?
nine sena_kun: I get the same errors as you 12:11
sena_kun: oh, actually... did you run make stresstest after switching branches, or just runn kill.t manually? Because that failing test should be fudged 12:15
sena_kun nine, on errata branches this test dies for me when I do make stresstest, yes. 12:16
Actually, I do `z ss` using zscipt, but I believes it does the same.
nine And if you run kill.rakudo.moar manually? 12:17
sena_kun s/es/e/
nine, <- ?
nine That does say that it's TODOed: not ok 9 - did we get STDOUT # TODO 12:19
Though what's TODO is less fixing rakudo and more fixing the test, which I did a year ago in roast master
sena_kun nine, but you can re-create failure when running stresstest, no?
nine sure 12:20
sena_kun Phew. So yes, 1)when running separately it seems to be ok; 2)when running as part of the suite it complains about number of tests not matching. 12:22
nine Well, actually no
sena_kun Hm? 12:23
nine Sorry, I misspoke. make stresstest passes on 6.c-errata and 6.d-errata 12:24
MasterDuke i just had a fail in t/spec/MISC/bug-coverage-stress-6.d.t 12:31
nine MasterDuke: that one's still waiting for 12:37
MasterDuke ah, thought that had already been merged, nm then
nine I think I'll just change the fix to $l.lock; $.unlock; and leave the potential optimization for later 12:38
MasterDuke otherwise passing tests all around for the nqp::time PRs 12:39
hm, but maybe there's a way to get back some of the performance of `now` i initially had... 12:41
12:55 zakharyas joined
MasterDuke initial idea didn't work...i got rid of one division, but added enough multiplications to more than compensate 13:04
13:11 lucasb joined
sena_kun nine, cannot reproduce it now, so just a noise, I guess. 13:12
MasterDuke ok, by making some (i believe reasonable) assumptions and hardcoding some values, got `my $a; my $s := now; $a := now for ^100_000; say now - $s;` back down to 0.045s 13:22
i.e., the Instant we create with `now`is always after the complete list of leap seconds, so no need to calculate that for each call 13:29
and now down to 0.03s 14:07
nwc10 extrapolating wildly, it will be free in about 3 hours from now, and if you keep going further then it will start to return the answer before you even called it :-) 14:08
cool - 0.03s sounds awesome 14:09
MasterDuke it's fun to compare a before and after profile. something like 3.8m fewer things allocated 14:11
15:44 sena_kun left, sena_kun joined 15:46 lucasb left 15:48 lucasb joined 17:08 patrickb joined 17:26 patrickb left 18:00 patrickb joined 18:22 zakharyas left 19:05 sxmx left
lizmat for some reason I got pinged on Twitter about this: 19:09
19:30 zakharyas joined 20:06 patrickb left 20:42 zakharyas left
bartolin_ does anyone know (if there is) an easy way to generated different code for the JVM backend in a module? something similar to the preprocessor directives (#?if jvm ... #endif) we have for the core. More specifically I'd like to special case two declarations for the JVM in lib/NativeCall.rakumod -- see 20:48
moon-child $*VM 20:52
r: say $* eq 'jvm' 20:53
camelia True
bartolin_ r: if $* eq "jvm" { my $foo = "jvm" } else { my constant $foo = "moar" }; say $foo 20:55
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '$foo' is not declared
at <tmp>:1
------> 3else { my constant $foo = "moar" }; say 7⏏5$foo
5===SORRY!5=== Error while compiling <tmp>
Variable '$foo' is not declared
at <tmp>:1
------> 3else { my constant $foo = "moar" }; say 7⏏5$foo
bartolin_ that's what I'd like to do ...
japhb r: BEGIN q:c{my {'constant' if $* eq 'moar'} $foo = "{$*}";}.EVAL; say $foo; 20:59
camelia 5===SORRY!5=== Error while compiling <tmp>
An exception occurred while evaluating a BEGIN
at <tmp>:1
Exception details:
5===SORRY!5=== Error while compiling /home/camelia/EVAL_0
Malformed my
at /home/camelia/EVAL_0:1
5===SORRY!5=== Error while compiling <tmp>
An exception occurred while evaluating a BEGIN
at <tmp>:1
Exception details:
5===SORRY!5=== Error while compiling /home/camelia/EVAL_0
Malformed my
at /home/camelia/EVAL_0:1
bartolin_ hmm EVAL. I didn't consider that. But it's probably not the right thing to do ;) 21:02
maybe it would be 'good enough' to just drop the constant on MoarVM. 21:03
japhb bartolin_: I talked with camelia for a bit. There's another problem that I forgot: EVAL is a lexical context; $foo won't leak. 21:05
bartolin_ oh, so it wouldn't even help. japhb++
japhb Come to think of it, it's probably a CompUnit. 21:06
lizmat notable6: weekly reset 21:11
notable6 lizmat, Moved existing notes to “weekly_2021-03-29T21:11:03Z”
lizmat and another Rakudo Weekly News hits the Net: 21:20
21:34 sxmx joined
MasterDuke anyone have an idea why would generate massive profiles? just running the sift4 sub with a fixed string against 1000 words from a scrabble list generates a 67mb html profile and the file size blows up fast 21:36
22:07 sena_kun left 22:23 Voldenet left 22:28 Voldenet joined, Voldenet left, Voldenet joined 23:25 Voldenet left 23:30 Voldenet joined, Voldenet left, Voldenet joined