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 |