01:17 pyrimidine joined 01:26 pyrimidine joined 02:12 vendethiel- joined 02:18 FROGGS joined 02:48 ilbot3 joined 02:59 FROGGS_ joined 03:40 flaviusb joined 06:19 domidumont joined 06:26 domidumont joined 07:00 domidumont joined 08:02 brrt joined
brrt \o #moarvm 08:10
I've forgotten what exactly I wanted to write for my blog post on the register allocation algorithm and now I have to start over again... :-(
specifically, I'm not sure how to describe linear scan well 08:12
08:29 domidumont joined
brrt oh, in response to a more or less random conversation i had 08:30
we should organise moarconf 08:31
moritz brrt: write up something, even if you think it's not quite clear; then let #perl6 folks read it and give some feedback
brrt and we should organise it sufficiently far into the future
08:31 zakharyas joined
brrt moritz: good idea.... I guess I haven't done that yet because I hadn't thought of it 08:32
08:33 Ven_ joined
nwc10 what is the advantage of moarconf over (say) a room with a bar near YAPC::Europe? 08:33
brrt Well.... ehm... 08:34
I'm not sure
depends on what you plan
well, one of the difference would be that if you'd give it a name and announced it, people not already on this channel could join 08:35
or to put it another way 09:02
if we're just going to have a room near a bar near YAPC::EU,
then we should organise that
:-)
09:22 xtt joined 09:23 Ven_ joined
jnthn morning o/ 09:47
nwc10 \o
09:49 Ven_ joined
jnthn is going to look into the Rakudo phasers scope mis-handling issue first today 09:51
masak which issue is that, ooc? 10:04
jnthn masak: Some phasers like LAST and QUIT are never cloned 10:05
Meaning the moment you get into recursion or concurrency you can end up in bother.
This is a particular problem with LAST/QUIT in supply/react blocks 10:06
I guess NEXT is vulnerable also... 10:13
But seems just those 3
masak oki 10:14
is there a failing case or an RT ticket?
brrt is it JIT sensitive? 10:15
I ask because last I recall phasers are typically implemented as exceptions with goto
and those are tricky
jnthn masak: Two fudged tests in S17-procasync/encoding.t for starters 10:16
brrt: Phasers are implemented in quite a range of ways thanks to their varying timings etc.
brrt oh, yes
jnthn m: sub foo($a) { for ^$a { LAST say $a; foo($a - 1) } }; foo(3) 10:18
camelia rakudo-moar b597b7: OUTPUTĀ«1ā¤1ā¤1ā¤1ā¤1ā¤1ā¤1ā¤1ā¤1ā¤1ā¤Ā»
jnthn m: sub foo($a) { for ^$a { NEXT say $a; foo($a - 1) } }; foo(3)
camelia rakudo-moar b597b7: OUTPUTĀ«1ā¤1ā¤1ā¤1ā¤1ā¤1ā¤1ā¤1ā¤1ā¤1ā¤1ā¤1ā¤1ā¤1ā¤1ā¤Ā»
jnthn m: sub foo($a) { for ^$a { FIRST say $a; foo($a - 1) } }; foo(3)
camelia rakudo-moar b597b7: OUTPUTĀ«3ā¤2ā¤1ā¤1ā¤2ā¤1ā¤1ā¤2ā¤1ā¤1ā¤Ā»
jnthn masak: ^^ is a repro without concurrency fwiw
masak yes, that looks wrong 10:20
jnthn It's a bit tricky to work out a good fix 10:22
m: react { whenever Supply.from-list() { .say; LAST say "done!" } }
camelia rakudo-moar b597b7: OUTPUTĀ«done!ā¤Ā»
jnthn m: react { my $x = 42; whenever Supply.from-list() { .say; LAST say $x } } 10:23
camelia rakudo-moar b597b7: OUTPUTĀ«(Any)ā¤Ā»
jnthn This one is the "worst" case (and QUIT has the same)
Basically, we never even *did* an iteration of the loop to have chance to capture an appropriate outer for the LAST thunk. 10:24
But we still want it to somehow point to the correct things outside of the loop
Which is a problem all the LEAVE-time phasers don't have (because we run them in the exit handler when their surroudning scope still exists), CATCH doesn't have (it's in dynamic scope too), ENTER doesn't have (easiest phaser - just call it at block entry!), FIRST doesn't have (we set a flag and it's called inside of the block), BEGIN/CHECK/INIT/END don't have (no expectation of closure semantics) 10:28
POST/KEEP/UNDO are all cases of LEAVE. PRE is a case of ENTER.
NEXT can assume there always was at least one value so it only has half the problem 10:29
Also, note that all the LEAVE ones work out because the exit_handler does a clone and then we've got a special instruction that says "go and look some frames down to dynamic scope for the thing that should be the outer" 10:31
In summary: making phasers Just Work How People Expect is surprisingly hard. 10:32
(And yes, I'm partly writing this out to help me think through the problem :))
10:45 TimToady joined
brrt never does that, you know :-P 10:46
11:02 xtt joined 11:31 Ven_ joined 12:10 Dunearhp joined
jnthn OK, I need to clean up a bit after lunch, but I seem to have fixed the phaser scope thing 12:32
nwc10 ilmari: ^^^ (well, 1 word in there) 12:33
jnthn Those encoding.t tests pass. Will check those LAST/NEXT recursion things above but expect those are fixed too
ilmari nwc10: thanks. soon
jnthn And, my $dayjob code that makes heavy use of Proc::Async is no longer explosive in its tests. 12:34
lunch &
12:36 xtt joined
timotimo that's great news 12:36
12:46 vendethiel joined
brrt what happens if we don't have bugs anymore? :-o 13:10
(and when perl6 is already fast?) 13:11
lizmat and jnthn will be out of a job
timotimo you can still become a consultant for perl6
nwc10 odd, I don't think that this blog post was actually put live on blog.pyston.org/2016/11/11/pyston-0-6-released/ 13:43
nope 13:44
github.com/dropbox/pyston/releases/tag/v0.6 -- undingen released this Nov 21, 2016 Ā· 4 commits to master since this release
13:53 Ven_ joined
jnthn back 14:05
nwc10 and fed?
jnthn Fed. Washing machine repair guy came. And food/beer/whisky delivery after that. 14:06
brrt 'instructions follow each other in memory' - that's cute :-) 14:10
jnthn Yay, seems my fix also fixes the various other busted examples I wrote out here earlier 14:17
And doesn't regress any spectests
dalek arVM: 0f7277a | jnthn++ | / (8 files):
Implement captureinnerlex op.

Used to fix scoping issues with LAST/QUIT phasers in Perl 6.
14:27
ilmari nwc10: mm, burrito 14:31
jnthn: I first read "Fed." as an abbreviation for Federal and boggled until I read nwc10's previous line
jnthn No, the government isn't so big as to have federal washing machine repair guys yet :) 14:34
15:53 Ven_ joined
japhb "yet" 15:54
timotimo japhb: jnthn has a little business venture planned in that space 15:55
japhb
.oO( "You will accept your federal washing machine parts and your designated federal repair interval and YOU WILL LIKE IT." )
.oO( "I don't want my hard-earned tax money going into somebody else's washing machine! No washing machine freeloaders!" )
15:56
timotimo no, only frontloaders and toploaders
when i was little(r) i thought toploader washing machines would rotate "like a turntable", and i always thought that was stupid 15:57
now i have a toploader washing machine myself and realize it rotates like a wheel
just like frontloaders, except the hole to put clothes in rotates around, too, rather than being located on the rotational axis 15:58
ilmari timotimo: that's the european style toploader. the american style does rotate around the vertical axis
timotimo oh, really?
ilmari en.wikipedia.org/wiki/Washing_mach...op-loading 15:59
timotimo okay. i still think that's stupid. but it must have some raison d'etre
ilmari it is stupid
japhb timotimo: back and forth for clean and rinse, spinning like a salad spinner (really high speed around the vertical axis) for drain/spin.
Aside from the fact that the agitator gets in the way of loading clothes, how is the axis of rotation stupid? 16:00
timotimo it's probably because i know nothing about how a washing machine actually washes 16:01
ilmari japhb: the very fact that there is an agitator makes the mechanism inherently more complicated than a front-loader
timotimo i seem to believe it's important that the clothes wiggle around and push up against each other and rub and such, but i don't think they usually do that in washing machines
ilmari timotimo: the wikipedia article explains it pretty well 16:02
japhb timotimo: I think figuring out how to do that reliably in a front-loader is how we got HE (High water Efficiency) washing machines
timotimo ah, yes! 16:03
washing machines with horizontal axis don't have to immerse the whole drum in water to get good washing results
well, i'm glad we had a talk about real machines in the channel for a virtual machine 16:09
helps to have a bit of connection to the real world every now and then, you know?
i'm glad moarvm is a european-style virtualing machine. 16:10
jnthn back 16:36
japhb jnthn: What's next on your agenda? 16:43
timotimo good bugnuggets always fall before jnthn's feet :P 16:44
maybe next up is race/hyper weirdnesses? i know that's in there somewhere
jnthn race/hyper is something I always mean to get to, then something "more terribly broken" takes its place 16:46
timotimo right
jnthn Right now I'm investigating a rather weird issue with a test I tried to write to cover the earlier fix
In the QUIT case 16:47
Seems I tickled another oddity
timotimo you must have plumage, because wow, you're tickling lots of things ;)
17:31 domidumont joined 18:31 FROGGS joined
FROGGS o/ 18:33
jnthn o/ FROGGS 18:38
20:40 viki joined
viki Any clues to how to print out the value of this thing: mp_int *ia = force_bigint(ba, tmp); ? Looking at libtommath docs, I see int mp_toradix (mp_int * a, char *str, int radix); 20:41
and I tried doing: char *str1; mp_toradix(ia, str1, 10); printf("Z: %s", str1); but I'm getting a segfault 20:42
I just wanna see what number is in ia 20:43
nine viki: just "p *ia" in gdb
viki hm.. 20:44
viki goes to look up how to use gdb
... 20:46
nine The segfault is because you declared the str1 pointer variable but didn't initialize it to point to a buffer that could take the value
viki goes to look up how to *install* gdb :)
OK. Thanks. I'll look into learning gdb and stuff 20:47
and maybe re-read K&R, while I'm at it :)
stmuk_ K&D is the new K&R :) 21:13
moritz apt-get install gdb? 21:15
22:03 zakharyas joined 22:10 mtj_ joined 22:34 mtj_ joined
timotimo what are we doing wrong? 22:43
viki About what?
timotimo something related to bigints, clearly 22:44
viki hehe 22:45
It's a secret :) I wanna debug it on my own, so I could unlock MoarVM Hacking achievement :)
timotimo cool 22:48