»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:08 For-Odin joined 00:14 For-Odin left 00:15 balders_dod joined
swarley So 00:17
􏿽xBB
Is that supposed to be a guillete?
Or >>?
TimToady » is the real one, and >> is the "Texas" version
swarley So, you can use >>?
colomon yes 00:18
swarley Because 􏿽xBB is rendered oddly in gVim for me
TimToady maybe your vim isn't understanding UTF-8 properly
swarley Well, the character appears correctly
But it's position is very low
TimToady maybe you need a better font then... 00:19
or just move to Texas
swarley Ah there, i switched fonts and it's fine 00:20
TimToady \o/
swarley I just need to figure out how to map a key to that character now though
TimToady in vim, ^K>> works 00:21
swarley Oh, cool.
lue recommends Compose key in linux
TimToady yes, that also works more widely
colomon set up his TextMate to do it for >>[tab]
TimToady
.oO(That's the wonderful thing about standards, there's so many of them to choose from...)
00:22
timotimo i'm wondering what to do before i can allow myself to pullrequest 00:24
i guess i'll just use a pull request to ask for comments?
TimToady or under Gnome you can say CTRL+SHIFT+u BB 00:25
jnthn evening o/ 00:40
timotimo github.com/rakudo/rakudo/pull/101 - i made a pull request with some thoughts as a request for comments 00:50
jnthn timotimo: Thanks, I'll review it once I've had to rest :) 00:54
s/to/some
timotimo: 1s in the spectest is noise 00:55
timotimo oh, wait
i'm not sure if the spectests are run with optimize=3, i think not!
jnthn The improvement seems good :)
timotimo i should re-run, definitely.
jnthn No, they are 2 by default
masak good evening, #perl6 ;)
colomon \o 00:56
jnthn timotimo: Does it regress any spectests, ooc?
00:56 japhb_ joined
timotimo if disabled, no 00:56
don't know for sure how to turn the optimization up to 3 for the spectests :|
is there an easy way? 00:57
would like to not have to re-compile rakudo for it
but i can totally do it. it's fast on that box
yeah, i'll just do it
jnthn Well, make it a #2 :) 00:59
timotimo done just that 01:00
jnthn Or diddle the harness, I guess
timotimo and now i'll wait about 1100 seconds (and not in binary)
colomon has written many bits of code which work perfectly when not used. 01:03
timotimo :) 01:05
S05... 01:08
masak 'night, #perl6 01:10
colomon o/
timotimo night masak! 01:11
S16... 01:12
the dreaded socket io net spectest 01:14
swarley Just making sure before I venture further with a messed up based, there is nothing outstandingly incorrect here is there? pastebin.com/njuiSUqU 01:16
01:19 xinming_ joined, raiph left
timotimo Files=722, Tests=26726, 1109 wallclock secs ( 4.41 usr 1.05 sys + 877.37 cusr 76.03 csys = 958.86 CPU - if that's not just due to some weird coincidence, that's really quite an improvement! 01:19
where did it come from?!
oh, hold on, the wallclock seconds are actually 10 seconds more :( 01:20
so, 1% longer
jnthn timotimo: The optimizer is most likely to have very little effect on spectest, fwiw. 01:21
timotimo: The spectests are generally long lists of things to try with no looping.
timotimo: Whereas the place the optimizations can help most is by making repeated actions faster.
01:22 xinming left
timotimo yeah 01:22
timotimo runs four spectests, two on his branch, two on nom, and looks at how good it works 01:23
bbl
jnthn sleep, 'night & 01:36
01:38 hash_table joined
timotimo the tension is almost unbearable 01:39
but it is barely humanable
so i will be all right
01:51 lue left 02:02 aindilis joined
timotimo assuming i didn't do a silly mistake again, the optimizer enhancement seems to have had 0 effect on the spectest suite. 02:03
02:08 inverse left
timotimo jnthn: fwiw, i have a test suite to check that my junction unfolding doesn't break things, and it gets a reduction in run time by 40%, too, even if i remove all the loopy code from it 02:10
but it's (of course) very junction heavy
02:12 raiph joined 02:13 [particle]1 left 02:14 [particle] joined 02:18 xinming_ left 02:20 raiph left 02:24 xinming joined
swarley r: say "hello" ~~ /<+. - < h e l l o >>/ 02:29
p6eval rakudo c356d8: OUTPUT«===SORRY!===␤Unrecognized regex metacharacter < (must be quoted to match literally)␤at /tmp/EdrVfFYZbW:1␤------> say "hello" ~~ /<+⏏. - < h e l l o >>/␤Unrecognized regex metacharacter + (must be quoted to match literally)␤at /t…
swarley oh
duh
timotimo i know some of these characters! 02:30
swarley Should I define keywords as terms?
token term:<while> { <sym> ... }
hm, it appears not 02:31
timotimo i only know than in python a term is a bigger expression than just a keyword (and while does not constitute part of a term)
02:38 benabik joined
timotimo r: sub infix:<,>($a, $b) { say "whoa"; ($a, $b) }; any(1, 2); 02:41
p6eval rakudo c356d8: ( no output )
timotimo r: sub infix:<,>($a, $b) { say "whoa"; ($a, $b) }; say(1, 2);
p6eval rakudo c356d8: OUTPUT«12␤»
timotimo r: sub infix:<,>($a, $b) { say "whoa"; ($a, $b) }; say (1, 2);
oh, dur, recursion warning 02:42
p6eval rakudo c356d8: OUTPUT«(timeout)whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤whoa␤w…
02:45 FROGGS_ joined
swarley Now, before I go and do something crazy. You guys said I should use NQP instead of the PCT right? 02:45
timotimo yeah, nqp is nice to have. haven't looked at PCT at all, though 02:46
colomon if you asked the parrot guys, they might well say PCT. 02:47
colomon doesn't know, and hasn't talked much to parrot guys in the last 18 months.
swarley But, I heard something earlier about parrot being deprecated, what's the replacement?
[17:09:15] <timotimo> swarley: yeah, parrot is being deprecated 02:48
Good old /grep
02:48 FROGGS left
timotimo oh, no, that was not completely serious 02:53
currently, there's work going on to make nqp cross-compile to JVM and java script. after that, nqp can self-host on jvm and java script.
(and rakudo can be run as a jar file or as a java script thingie)
swarley oh nifty. 02:54
Does NQP currently compile down to pbc? 02:55
timotimo er, it does compile down to pir, i know that much
02:55 colomon left
timotimo │/home/timo/build/rakudo/install/bin/parrot -o CORE.setting.pbc src/gen/CORE.setting.pir - so yes 02:55
02:55 colomon joined
timotimo i think my pull request #101 is pretty nice. this is a workflow i should try more often. 02:57
okay, 4am is definitely "should be restin'" territory
swarley: i wish you the best of luck! :)
swarley Thank you, sleep well 02:58
03:01 raiph joined 03:12 hash_table left 03:15 arlinius left 03:22 rummik joined 03:27 rummik left, rummik joined, rummik left, rummik joined, rummik left 03:29 rummik- joined 03:33 rummik- left 03:38 balders_1od joined 03:41 balders_dod left, s1n left 04:15 Targen joined 04:16 preflex_ joined 04:17 preflex left, preflex_ is now known as preflex 04:19 b1rkh0ff left, b1rkh0ff joined 04:42 arlinius joined 04:56 daniel-s_ joined 05:00 daniel-s left 05:07 FROGGS_ left 05:08 FROGGS_ joined 05:16 kaare_ joined 05:42 MikeFair left 06:10 kaare_ left 06:15 SunilJoshi joined 06:31 SunilJoshi left, MikeFair joined 06:36 quester joined 06:39 Chillance left, Targen left 06:40 xinming left 06:41 xinming joined 06:55 Targen joined 07:39 [particle]1 joined 07:42 [particle] left 07:43 vividsnow joined 07:48 balders_1od left 07:54 vividsnow left 07:58 araujo left, araujo joined 08:17 vividsnow joined 08:39 SunilJoshi joined 08:43 kaare_ joined 08:45 FROGGS_ is now known as FROGGS
FROGGS moritz: morning, how do I invoke the QAST dumper again? can I do this from within perl? like on a given regex 08:51
moritz FROGGS: ./perl6 --target=past 09:02
09:04 quester left
FROGGS ohh, cool! 09:06
moritz: thanks 09:08
09:44 Psyche^ joined 09:47 Patterner left, Psyche^ is now known as Patterner
masak good forenoon, #perl6 10:04
10:07 PacoAir joined
FROGGS hi masak 10:12
sorear o/ FROGGS, masak
10:25 grondilu joined
grondilu had a segmentation fault during last compilation attempt. 10:26
^ compilation of rakudo, that is.
grondilu is currently trying again 10:29
it worked this time, I guess it's because I had too many other processes running. 10:33
jnthn o/ all 10:47
10:51 spider-mario joined
FROGGS sorear o/, grondilu o/, jnthn o/ 10:56
grondilu \o 11:03
11:06 Su-Shee_ joined 11:07 SamuraiJack joined 11:10 Su-Shee left, Su-Shee_ is now known as Su-Shee
nwc10 jnthn: good curry? 11:18
jnthn nwc10: Yes, good and spicy :)
Then good beer afterwards 11:21
Including a stout called "else if" :P
nwc10 good job you're in Sweden, not Denmark :-)
jnthn ponders getting module loading working 11:22
11:33 MayDaniel joined
arnsholt o/ 11:33
jnthn hi arnsholt 11:34
timotimo mornin' 11:35
11:42 SunilJoshi left
arnsholt Wat? 11:46
Apparently weird things happen if I try to set the storage_spec properly in P6int.c 11:47
jnthn "properly"?
arnsholt Well, fetching the info from the REPR data I've attached, rather than the hardcoded sizeof(INTVAL)*8
jnthn Mebbe that P6opaque doesn't cope with alignment issues yet. 11:48
arnsholt Could be
timotimo looking for suggestions what to do with my junction-opt branch next :)
arnsholt This is weird. If I have one bit of code that sets spec.bits to 64, it segfaults, if I have another one, it seems to work 11:58
11:59 Targen left
timotimo maybe the one bit is executed too late and there's a discrepancy between the bits value at different points in the program? 11:59
arnsholt Don't think so. I printf the value in the function =) 12:00
timotimo could only really guess wildly 12:01
arnsholt But for some reason the REPR data is zeroed out, even though it shouldn't be
I think that's related to it
jnthn arnsholt: You're not ending up on the other side of a pre-comp boundary, are you? 12:02
timotimo jnthn: i was trying to find the gist where you created the optimisation transformation testbed, but it seems it got deleted? i wanted to star or fork it so that you were credited properly
jnthn arnsholt: repr data must be explicitly serialized
arnsholt Oh, of course! 12:03
jnthn timotimo: hm, not even sure which gist you mean ;)
arnsholt I've just added the stuff to the REPR data, so the P6int in the bootstrappy parts doesn't have it
jnthn argh argh argh HLL::Compiler specializes on --target=nqp all over...
*--target=pir even
timotimo jnthn: i would give you the link, but ... ;) 12:04
oh, wait, irclog!
gist.github.com/4348324 - anonymous gist, i see! 12:05
jnthn oh, that :) 12:08
timotimo phenny: tell hoelzro: do you feel like you can open a pull request for your pygments work soon? or do you want more testing to be done first? 12:10
phenny timotimo: I'll pass that on when hoelzro is around.
timotimo is there a way to step into the perl6 grammar with the rakudo debugger or the grammar tracer to see what's going on in special cases? 12:13
i might tackle the missing "null regex" error messages if i could see wth is going on :D
jnthn No, it doesn't do that...problem being that the debugger works partly by subclassing Perl6::Grammar 12:14
timotimo oh, haha :)
and copypasting the prel6 grammar into a .p6 file won't work either, because the actions are nqp?
jnthn Right 12:15
And also it depends on Perl6::World 12:16
arnsholt jnthn: Is there something special I have to do to add REPR data to a REPR that didn't previously have that?
(I imagine using new deserialize logic for old data in the bootstrap stuff is going to explode in fun and interesting ways)
jnthn arnsholt: Aside from just hanging your REPR data off the approriate STable hook?
Oh 12:17
Yeah, you need to implement serialize/deserialize REPR data functions
Also since it's a back-incompat change you'll need to look at bumping the serialization format version and then only reading it if the current version is high enough.
arnsholt Hmm. 12:18
jnthn I won't pretend it's much fun, but it shouldn't be too hard. 12:19
Reason you need to support both ways for a bit is due to the bootstrapping nature of things.
arnsholt Yeah, that makes sense
Where does the serialization format numbering stuff live? 12:20
jnthn src/6model/serialization.c, but I've not had to do a back-incompat change before :)
But it keeps the current version number in the reader/writer objects.
Most of the infrastructure you need should be there.
Just need to have a MIN_READABLE and MAX_READABLE or so and on deserialization do a check for being in range rather than exact version number. 12:21
arnsholt Excellent. I've got to do some laundry now, but I'm gonna give it a whack once that's done
timotimo phenny: tell hoelzro: the only issues i can see with it are: @!foo has a red, fat ! and +@($block) has a red, fat ($ in it, so everything that looks remotely like a twigil (thrigil?) seems to get that treatment 12:22
phenny timotimo: I'll pass that on when hoelzro is around.
dalek p: 8658578 | jnthn++ | src/HLL/Compiler.pm:
Make --target=pir a little less special.

Whole thing needs a good bit of reviewing, though.
12:26
12:27 SunilJoshi joined
dalek p-jvm-prep: 6860de4 | jnthn++ | / (4 files):
Start to prepare cross-compiler for libraries.

Previously, we always created a Java class file with the same name. This generates unique names, but provides a way to get control over it when compiling so you can get something that can be started directly by invoking the JVM with that class name also.
12:27
jnthn Whee... gist.github.com/4648146
timotimo ooooh 12:28
12:34 mr- joined
nwc10 oooh. 12:50
how verbose is the Java equivalent? :-)
jnthn++ # reducing the risk of RSI when programming for the JVM 12:51
12:52 sftp left 12:56 sftp joined 12:59 vividsnow left
dalek p-jvm-prep: 59cbf82 | jnthn++ | / (4 files):
Implement nqp::loadbytecode.

Loads the class file for compilation unit, triggers deserialization and runs any load-time code.
13:08
p-jvm-prep: a7b6661 | jnthn++ | .gitignore:
Update .gitignore.
p: ce4d991 | jnthn++ | src/QAST/Operations.nqp:
An nqp::loadbytecode.
13:34
p: 8e78004 | jnthn++ | src/stage0/ (9 files):
Update bootstrap.
p: bde6231 | jnthn++ | src/ModuleLoader.pm:
Use some nqp:: ops in ModuleLoader.

Some bits of it will want to be backend-specific, but may as well make the rest easier to share.
p: 35db357 | jnthn++ | src/NQP/World.pm:
Update NQP::World to use more nqp:: ops.
13:49 SunilJoshi left 13:54 clkao joined 14:07 MikeFair___ joined, MikeFair left
arnsholt jnthn: src/6model/serialization.c dies if the serialization version is != to the one in the code. Should that be > perhaps? 14:13
jnthn arnsholt: No, as I said, we should introduce #defines for a min and max and check if it lies between the two. 14:15
arnsholt Oh, right, right!
jnthn arnsholt: We don't need to support every way we ever serialized, I think :)
arnsholt I misparsed it as version checks in the {,de}serialize_repr_data functions affected (which we need as well) 14:16
jnthn ah, ok :)
arnsholt Yeah, I guess we can ditch some of them eventually
14:16 pmurias joined
pmurias jnthn: wouldn't an exact version check be better? Unless you want to have a complex scheme to check all the valid combinations? 14:20
arnsholt Right now I've made it die if version is smaller than MIN_VERSION or larger than CURRENT_VERSION 14:21
jnthn pmurias: We have to support a couple of versions at a given time thanks to bootstrap.
arnsholt: wfm
arnsholt Might as well die if we get version numbers from the future =)
jnthn pmurias: To write we always write current verion, it's just as reading issue. 14:22
arnsholt: yes, good point.
*a
arnsholt Hmm. For some reason my repr_data objects are full of zeroes 14:23
Even though they shouldn't
It's compiling src/stage1/gen/nqp-mo.pm, so that's the very first round of compilation, right? 14:25
jnthn yeah
arnsholt adds some more printf()s 14:28
timotimo jnthn: can you review and/or provide guidance for github.com/rakudo/rakudo/pull/101 today? 14:29
arnsholt Hmm. deserialize_repr_data is hit once, and creates a repr_data that isn't seen in get_storage_spec 14:31
compose and type_object_for aren't hit AFAICT 14:32
pmurias timotimo: maybe put your test into roast? 14:33
timotimo pmurias: can you suggest a category? should they be considered "tests for the optimisation rakudo has" or "tests that junctions work as intended"? 14:34
depending on that, i may put them into integration/ instead of the S** category where junctions belong
arnsholt jnthn: So what's actually segfaulting is that decontainerize is passed the pointer 0xfffffffffffffffd from type_check in nqp.ops 14:35
But my changes are all to the repr_data stuff in P6int
timotimo wow, who even has that much RAM? :P
arnsholt Yeah, I suspect this is NULL minus a couple of bytes =) 14:36
pmurias timotimo: the test mostly tests junctions so I suppose it's a junction test
jnthn arnsholt: Can I see a diff of your changes? I may be able to spot something 14:38
timotimo: Yes, will look over it some more. It seemed like a sane direction as much as I looked at it so far.
pmurias timotimo: it's not really rakudo specific
jnthn timotimo: doing the any/all case is probably also not so bad
timotimo jnthn: yeah, but seemed much harder from my point of view 14:39
jnthn timotimo: For the tests - we should have enough junction tests to make sure the optimization doesn't break stuff.
timotimo: any(1,2) generates something more complex than 1|2 ?
timotimo at least a bit more complex 14:40
it generates a call to infix:<,> at least. 14:41
jnthn Oh?
That's...odd. I'd expect it to be a QAST::Op.new( :op('call'), :name('&any'), ... )
timotimo also, all the junction tests i've seen so far would prevent the optimisation from happening, because it seems to require an if, whereas these tests all have just a boolean context marker before them, i think the optimizer code i have bails out in that case
jnthn With the args in there.
pmurias jnthn: after skimming through roast, the one timotimo added also seems a worthy addition
arnsholt jnthn: gist.github.com/4648660 on dyncall-sized-num
timotimo jnthn: let me quickly check the generated asts. 14:42
jnthn timotimo: OK, then add tests to cover the cases you have.
arnsholt I've merged in master locally, but don't think any of those changes touch these bits of code
timotimo oh, huh. i must have missed something.
jnthn arnsholt: fwiw, writing the align is probably a bad idea as if you write the file on a machine with one alignment and read it on another... 14:46
I dobut that's the bug though.
arnsholt Oh, good point
Yeah, that shouldn't be it 14:47
jnthn I'm not immediately seeing what is going wrong.
timotimo i ought to do more systematic and rigorous tests. 14:48
jnthn The code looks pretty much as I'd have done it...
arnsholt Dang 14:50
timotimo jnthn: strange, i was certain i had gotten a big explosive error when i activated any/all support in my code due to some strange parcel related something-or-other. 14:53
14:55 gaussblurinc joined 14:57 s1n joined
timotimo what other calls should activate the junction unfolder except prefix:<?>, <!> and <so>? 15:00
jnthn Can't immediately thing of any others 15:02
oh
not
timotimo excellent
had you not put the "oh" in between, it would have been a nice combination of autopun and "not" humor
jnthn :P 15:03
dalek p-jvm-prep: 7fdaa9e | jnthn++ | lib/QAST/JASTCompiler.nqp:
Fix temp allocation thinko.
p-jvm-prep: 0965731 | jnthn++ | / (2 files):
Add nqp::ctxlexpad.

General lexpad introspection still needs more work though.
p-jvm-prep: 7fbb725 | jnthn++ | src/org/perl6/nqp/runtime/Ops.java:
Don't lose caller in library loading.
p-jvm-prep: d312240 | jnthn++ | src/org/perl6/nqp/sixmodel/reprs/ContextRefInstance.java:
Implement object lexical lookup through context.

Need to do a bunch of other cases, but this is what ModuleLoader needs.
15:03 Chillance joined
timotimo okay, with more junction optimisations, maybe the spectest time will decrease (it's at 6:23 right now) 15:04
arnsholt jnthn: Making the conditional in get_storage_spec if(repr_data && repr_data->bits) seems to fix it 15:06
I've no idea how I end up with nulled out repr_data, but at least this seems to do the trick 15:07
timotimo well, the junction tests pass at least. don't know if the optimisation got them, though. gotta check more closely 15:08
15:09 awwaiid left
arnsholt Even passes the NQP tests =D 15:09
timotimo hey, that's excellent! :) 15:10
jnthn Nice :)
timotimo 6:19 instead of 6:23. is that significant or noise? 15:13
i don't feel like running the suite four times in a row tbh :)
i could just run the junction tests, though
jnthn Probably noise. But as I said, the spectests are really the worst case for the optimizer.
timotimo yes, but i *still* got a damned good improvement from no-loop-code 15:14
and that surprised me bigtime in a positive way
jnthn :)
15:16 xinming left, xinming joined
dalek p: 4bfcd13 | jnthn++ | src/NQP/World.pm:
Sketch in JVM support for module/setting code-gen.
15:25
p: 9ed3bc1 | jnthn++ | src/NQP/ (2 files):
Add an option for stable SC handles.

We can't do these in general thanks to the bootstrap, but we need it in order to handle cross-compiling.
timotimo jnthn: my intuition says that if there's junctions on both sides, i should unfold the smaller one, so that there are less junctions in there overall, does that make sense? 15:26
jnthn timotimo: think so, yes 15:27
timotimo since junctions are somewhat slow, they should be used as little as possible, and turning $x & $y == -1|0|1 into $x == -1|0|1 && $y == -1|0|1 "sounds" faster than $x | $y == -1 && $x | $y == 0 && $x | $y == 1 (also this unfolding seems totally wrong) 15:28
is it just me or is unfolding only the right side not even doable in a sensible way? 15:29
dalek p-jvm-prep: 7c09119 | jnthn++ | nqp-jvm-cc.nqp:
Use stable-sc option always.
15:31
p-jvm-prep: db4bab9 | jnthn++ | / (3 files):
Start cross-compiling an nqp-mo and ModuleLoader.

The nqp-mo is very close to the real NQP one, just with some Parrot specific bits and mixins (NYI) commented out. ModuleLoader has a few more bits commented out, but is very close.
jnthn timotimo: oh, I guess it dpends on the | vs &
timotimo: tbh, I'd leave the "junctions on both sides" case for now 15:32
I think there could be some tricky things there depending on who has the | and who has the &
timotimo i'll unfold only the left side if it has both and unfold the right side only if the left side has none. sounds good to me at least
jnthn We're meant to thread one then the other, it's not about the side.
So yeah, I'd just go for the "junction on one side" for now. It will cover most of the interesting cases to optimize anyway :) 15:33
15:40 cibs left
nwc10 finds junctions crazy and counter-intuitive 15:40
15:41 gaussblurinc left, cibs joined 15:42 LlamaRider joined
LlamaRider Hi #perl6. Need a panda tip - when I try "panda install Web", it complains HTTP::Daemon is not in the ecosystem. 15:43
tips to circumvent?
timotimo LlamaRider: you can git clone the repo for http::daemon and install it with panda locally by giving its path, that ought to help 15:44
other than that, i think panda knows --no-dependencies or something like that
15:45 spider-mario left
LlamaRider any clue where that module is? A github search gets a bunch of other http guys, but not http::daemon 15:48
timotimo sorry, no clue :( 15:50
jnthn: how early should the optimisation code bail out if the level isn't high enough for this particular optimisation? 15:51
LlamaRider I think I will just end up trying HTTP::Easy instead. Thanks for the help anyway!
timotimo have fun! :) 15:52
jnthn timotimo: The main reason the various other things don't bail out is because the analysis they do can produce "this code will never work" errors.
So the analysis without the transformation still does something worthwhile.
For yours, I don't think that's the case, so you could just guard the whole thing. 15:53
15:54 mr- left
timotimo ah, ok. i will then 15:55
16:00 LlamaRider left 16:06 cog joined 16:18 jtpalmer_ is now known as jtpalmer 16:19 b1rkh0ff left, b1rkh0ff joined
dalek p-jvm-prep: f391295 | jnthn++ | src/org/perl6/nqp/runtime/LibraryLoader.java:
Don't duplicately load modules.
16:22
p-jvm-prep: 710ca4d | jnthn++ | / (2 files):
Implement nqp::forceouterctx.
p-jvm-prep: e409dbb | jnthn++ | / (2 files):
Add an almost-empty setting.
p-jvm-prep: dbf1735 | jnthn++ | src/org/perl6/nqp/runtime/LibraryLoader.java:
Remove leftover debugging code.
p-jvm-prep: cbdf515 | jnthn++ | nqp-jvm-cc.nqp:
Set default setting and --no-regex-lib.

Means that it's now possible to just do:
   nqp nqp-jvm-cc.nqp -e "say('ok')"
And it will load the (currently almost empty) setting (which does also bring in the MOP).
timotimo aaaaw yiss :))
tadzik ooh 16:24
16:26 cog left
arnsholt jnthn: Changing the nqp::composetype stuff to the new compose protocol. Should I do that in a branch, or is it ok to do straight on master^Wnom? 16:29
jnthn arnsholt: Will need updates in both Rakudo and NQP I guess. Anyway, so long as you land both fairly close in time, straight in nom/master should be fine. 16:31
nwc10 is wondering how easy/hard it would be to run a smoker that smokes the NQP bootstrap 16:32
ie
for each checkin on NQP
1) does it pass its own tests as-is
2) if so, can it redo the bootstrap?
3) if so, does it still pass the tests?
4) if so, profit!
can travis do that? 16:33
arnsholt jnthn: I'll make a partner branch for Rakudo as well, in that case
jnthn nwc10: Actually it's probably a bit simpler than that... (more)
arnsholt In case of unexpected strangeness down the line
jnthn The NQP build does 3 steps. First, building whatever bootstrap files were checked in from PIR to PBC. Second, building current NQP source with those. Third, using the thing it just build from latest source to build the latest source again. 16:34
And then make test runs on that final output.
So you're always testing the latest NQP compiled by the latest NQP. 16:35
nwc10 ah OK? so each build is actually a re-bootstrap?
jnthn Yeah, all make bootstrap-files does is say "make the current state be the set of pre-compiled output that we ship"
nwc10 aha. that makes a lot of sense
it's a manually initiated step saying "this lot are good. I'm not about to paint myself into a corner by using the new ones" 16:36
16:36 cog joined 17:01 vividsnow joined
dalek ast: ef58502 | (Timo Paulssen)++ | S03-junctions/boolean-context.t:
add a few junction tests relevant to the optimizer
17:02
timotimo jnthn: if there are no more worries, i'd consider this code ready to be merged. i'll run a spectest again, just to make sure. 17:07
17:11 vividsnow left
TimToady nwc10: if you find junctions crazy and counterintuitive, you must find English crazy and counterintuitive as well, since they're stolen straight out of English :) 17:12
nwc10 well, English is already ambiguous in its use of "or", and a double (or triple) negative in colloquial English doesn't mean the same thing as one in more formal English, so, um 17:14
that might actually be a "Yes, I do find it counterintuitive" :-)
oh, and the answer to confirm the hypothesis implied by a question such as "you don't have any cheese?" 17:16
TimToady "Yes, I don't" -- how you'd say it in Japanese
nwc10 not related, but amuses me - "no, not *that* left. The other left!"
Japanese++ # logical date orders, logical answers 17:17
actually, to be clear, it's not *junctions* in isolation. It's how they *combine* that doesn't pan out how I expect 17:18
TimToady well, the regular verb system is the best part; only two irregular verbs (plus compounds of those)
well, the left one governs in both English and in Perl 17:19
if any of these equals all of those # one of the left has to equal every value on the right
if all of these equals any of those # all the values on the left must equal at least one on the right 17:20
jnthn timotimo: OK, gonna sort out some food now, will have a look after that :)
timotimo: Just pull request the latest :)
timotimo the latest stuff is already in the pullrequest
oh, what did i do wrong? forgot to update the plan. as i always do. 17:21
dalek ast: 8b2fc6f | (Timo Paulssen)++ | S03-junctions/boolean-context.t:
bump up the plan, too.
17:22
jnthn timotimo: OK. Shop, then food, then will look :) 17:23
jnthn bbl
TimToady otoh, among those Japanese verb forms, you have to track several levels of politeness, and whether you're being polite to the person you're speaking to, or polite to the person you're speaking about, and the fact that the causative forms tend to have negative connotations, whether active or passive :) 17:24
so every natural language has ways to drive you nuts
and if you put the wrong honorific on, either too low, or too high, it's an insult (because if you put one too high you're obviously being sarcastic) 17:27
timotimo NQP is supposed to be Not Quite Perl6, no? The Rosettacode page on Parrot omits the 6, which could lead to some confusion, i think. 17:28
nwc10 TimToady: it almost sounds like someone designed it to be a torture test 17:29
TimToady well, it's Not Quiter Perl 5 :)
timotimo (especially since it "excludes many features of perl", since with nqp you get OOP and signatures and such)
TimToady timotimo: feel free to fix--it's a wiki, after all
timotimo don't relly feel like registering :| 17:30
17:37 mr- joined 17:47 Exodist joined 17:51 marloshouse_ joined
masak o/, #perl6 17:51
17:51 marloshouse left, marloshouse_ is now known as marloshouse
moritz \o masak, #perl6 17:53
timotimo evening :) 17:55
masak nwc10: I tend not to trust my own intuition about how negated operators and junctions combine. 17:56
nwc10: which isn't a big practice, because there's some demoivrian duality there which always allows me to go 'if none(@things) eq $target' instead of 'if all(@things) ne $target'. 17:57
s/a big practice/a big hurdle in practice/
TimToady and in the places where people are likely to get tripped up, p6 does not-raising just like English, so it tends to do what they want 18:06
or to put it the other way, English treats not like a metaoperator, just like Perl 6
timotimo i wonder in what places creating parcels at optimize time and adding them as word values is helpful
TimToady one could imagine an optimization where common capture types can map to common multi sig types via an integer table 18:09
masak yes, I'm pondering whether the not-raising is what currently confuses nwc10.
it certainly confused me before I learned about it ;)
TimToady if you think of it all in terms of HOP, it helps, I think 18:10
timotimo is there a win to finding call &infix:<,> where all its Want child nodes have a ctv and creating a parcel from that, for instance?
TimToady ne is just a ! that applies an eq
masak *nod*
yes, that's the model I ended up with.
and the ! is raised to the whole expression.
TimToady well, but that falls out of the fact that the eq already 'ate' its arguments 18:11
timotimo (shouldn't the optimizer already inline that call anyway?)
TimToady timotimo: I'd think of it more as going all the way to a preformed capture, when you know it's going to be fed to a signature binding 18:12
timotimo in what kind of example code would that happen?
TimToady is just talking in a hand-wavey fashion; pay him no mind 18:13
timotimo hehe.
TimToady is probably suggesting something that already happens
TimToady would be (marginally) more productive by getting dressed for church... 18:14
nwc10 now he tells us...
TimToady
.oO(what to wear to one's daughter's hipster church...)
18:15
masak hips. 18:16
masak .oO( we wore bones before it was hip )
18:18 benabik left
TimToady
.oO(the hipster bone's connected to the...thighster bone...)
18:19
18:20 cog left
TimToady the fuzzy red and black plaid, I think--they'll think I'm a recovering goth 18:20
goths always recover by adding red into their wardrobe 18:21
18:23 am0c left 18:27 benabik joined 18:33 MikeFair___ left 18:34 MikeFair joined 18:40 spider-mario joined
FROGGS good evening 18:41
std: / $( $x ) / 18:42
p6eval std 7deb9d7: OUTPUT«===SORRY!===␤Variable $x is not predeclared at /tmp/aLP8vr9fow line 1:␤------> / $( ⏏$x ) /␤Check failed␤FAILED 00:00 43m␤»
timotimo hello froggs 18:44
FROGGS hi timotimo
19:02 mtk left
dalek kudo-js: f742245 | (Paweł Murias)++ | runtime.js:
Do not use the Boolean type as nqp is supposed to just use 1 and 0.
19:11
kudo-js: ab0ee8e | (Paweł Murias)++ | run_tests:
Run faster tests first.
kudo-js: 822ed2a | (Paweł Murias)++ | / (2 files):
Pass a ctx arguments to ops.
kudo-js: 4a75697 | (Paweł Murias)++ | / (2 files):
Move runtime for grammars (which we haven't regained yet since the refactor) to a leftovers file.
19:13 xy joined 19:14 benabik left 19:16 benabik joined 19:19 vividsnow joined
jnthn timotimo: I've realized there's a problem with optimizing "any" 19:26
r: my @a = 1,2,3; say 2 == any(@a)
p6eval rakudo c356d8: OUTPUT«any(False, True, False)␤»
jnthn It can flatten.
r: my @a = 1,2,3; if 2 == any(@a) { say 'ok' }
p6eval rakudo c356d8: OUTPUT«ok␤»
timotimo good point. 19:27
strangely, that passes in my changed perl
i'll check to figure out why the optimizer bails out for that optimization 19:28
ah, in that specific case, it fails because of the +$node.list == 1 { return 0 }, but if i flatten two lists in there, it will most probably fail again 19:29
jnthn I think we'd be best avoiding any/all for now 19:30
timotimo ah, look
if only one argument is passed, like @a, it will bail out due to tha tcheck
jnthn yeah, any(1, @a, 2) is still gonna be a problem though 19:31
The only way we can do better is to check that all the values are known at compile time and that they won't flatten, which is a bit of work...
timotimo indeed. 19:32
jnthn shoulda spotted that one earlier
timotimo yes, i will just skip any/all handling.
(and add tests for that behaviour, for future reference)
dalek ast: 865c95f | (Timo Paulssen)++ | S03-junctions/boolean-context.t:
optimizers got to take special care of any/all/none due to flattening
19:34
jnthn timotimo: OK. Other than that it looked good 19:35
timotimo pushed the remove-any-and-all commit to the PR 19:36
jnthn: so the decision to make this a level 2 optimization comes some time in the future? 19:37
nwc10 sorry if this is a naive question - assuming that the plan survives contact with the enemy, and the JVM port pans out to functionality, does it mean that one can
timotimo it does mean that one can
nwc10 a) distribute the JVM version of Rakudo Star as a single JAR?
b) also run it in webbrowsers (if anyone is crazy enough to still enable Java as a plugin)?
jnthn timotimo: Hm, we could do that now.
timotimo can the jar contain the dependencies, like the byte code utility library nqp-jvm uses? 19:38
jnthn timotimo: Otherwise nobody benefits by default
timotimo right. i'll cook up and push a commit
nwc10 good third question :-)
jnthn Maybe worth spectesting with it that way too
3 is mostly for things that I know have caused problems and need moer careful consideration. 19:39
timotimo i've already started the rakudo build, spectests are on the way in a minute
jnthn nwc10: I'm not sure we get those capabilities "for free". 19:40
nwc10: But they sound feasible with a bit of work.
nwc10 ah OK. Cool.
jnthn nwc10: On the web part of it, depends how class loaders and stuff play out there I suspect.
timotimo there's one more confusion i have: is invokedynamic something that'll be important to the whole effort? it would seem that nqp itself may not need it, but perhaps rakudo will? 19:41
nwc10 probably not worth trying too hard, as I don't think that anyone sane still invites malware to their machine via Oracle's most wonderful software
jnthn nwc10: I've avoided using any of the "unsafe" things would would surely be forbidden in a web context, so hopefully it's fine...
I'm happy to delegate it to somebody who thinks running a Perl 6 applet in their browser is a cool thing ;) 19:42
nwc10 OK, next naive question - are the unsafe things needed for such useful stuff as accessing the file system?
jnthn No, that can happen through the normal class libs.
NativeCall is one thing that'd use the unsafe stuff, for example.
nwc10 jnthn: yes, seems a good plan. Delegate to a minion. MOAR BRAAAAANES
19:43 SamuraiJack left
diakopter indeed 19:44
dalek p/dyncall-sized-num: d841e27 | jnthn++ | src/HLL/ (2 files):
Abstract notion of "pre-compiled".

Previously, this has been tied to --target=pir.
19:44 dalek left
arnsholt Ooops. That was my fault 19:45
19:45 dalek joined, ChanServ sets mode: +v dalek
timotimo jnthn: the spectests succeeded :) 19:46
dalek kudo/dyncall-sized-num: f7a5a2f | (Arne Skjærholt)++ | src/ (4 files):
Start integrating with native size support in NQP.
arnsholt jnthn: I've gotten the moving parts to move together, more or less, but doesn't look like the bits information gets to the P6int REPR ATM 19:47
I'll look more into it tomorrow
timotimo heh, i parsed "look more into it" as "appear to be enjoying it more" 19:49
jnthn timotimo: I want to look at exploiting invokedynamic; at the moment, I'm not. 19:52
arnsholt I'm certainly confused ATM =)
jnthn timotimo: It's in the category of "optimization" more than "make something work" :)
arnsholt: Maybe NativeHOW lacks a repr_compose function that does composetype? Or did you take care of that?
arnsholt Oh. In that case, I think I may just have put it in the wrong place 19:53
There's a method compose, where I put the composetype call 19:54
jnthn arnsholt: Oh, you can do it in there too 19:55
arnsholt: I just ended up with a repr_compose method that compose calls
arnsholt In that case, I dunno
My initial exploration (with printf in P6int's compose function) seemed to indicate no joy. But I could just have missed it in the compiler output 19:56
Maybe I'll try a die or something tomorrow =)
jnthn timotimo: OK, you're happy it's ready to merge? 19:59
timotimo i think so, yes 20:04
dalek kudo/nom: 433dca6 | (Timo Paulssen)++ | src/Perl6/Optimizer.pm:
unfold junctions at compile time sometimes.
20:06
rakudo/nom: 8f80e88 | (Timo Paulssen)++ | src/Perl6/Optimizer.pm:
rakudo/nom: build a new "is_from_core".
20:06 dalek left
jnthn closed the pull request in a few seconds 20:06
20:06 dalek joined, ChanServ sets mode: +v dalek
arnsholt Hmm. Looks like the flood limit on irc.perl.org is different from freenode 20:06
tadzik it is 20:16
20:18 mr- left 20:27 kaare_ left
timotimo jnthn: do you think there's a way to get rakudo to spit out pre- and post-optimisation pasts easily? 20:27
jnthn timotimo: --target=past should give you pre-opt, and I guess --target=optimize may already give you the post-optimized. 20:29
timotimo oh, it does! 20:32
that's neat
masak .oO( --target=beer doesn't give me beer :/ ) 20:37
pmurias jnthn: how good will the interop with things like jruby and closure be?
nwc10 can jruby interact with native Java functions? 20:38
(similar question for closure)
jnthn pmurias: no idea
pmurias: As good as somebody spends time making it I guess :) 20:39
nwc10 OK, answer seems to be "yes" (both ways) for JRuby
jnthn I'd certainly like us to be able to call out to Java code, and the other direction would seem rather useful too
pmurias if we interop with JRuby we could have Perl6 on Rails ;) 20:40
nwc10 pmurias: surely you're actually doing the more useful port here - getting Perl6 closer to the metal, by interacting with Node.js 20:42
timotimo :D
tadzik pmurias: and we'll be better than Parrot :)
20:43 vividsnow left
tadzik I watched a Node.js talk today. It was all about "look, we have an event loop. And we don't have threads, you can start 8 applications if you care" and said nothing about being useful as a web client 20:43
20:44 adu joined
timotimo er, node.js as a web *client*? 20:44
well, i suppose you could do that. but why? 20:45
masak tadzik: someone on Twitter once said "Node.js looks like a partial implementation of POE"
jnthn masak: Yes, but is POE webscale? 20:46
moritz for some reason I always had the impression that POE required you to know far too much about it's itnernals or data model or whatever
ie no fun to use as a newcomer
timotimo Perl Over Ethernet? 20:47
oh, it's the event framework
moritz Perl Object Enfironment
tadzik timotimo: because Javascript
node is really just v8, so you _could_ not care about what the website does with JS 20:48
like WWW::Mechanize being not enough, but WWW::Mechanize::Firefox being too much
moritz I consider myself pretty well-versed when it comes to Perl 5, but when I try to do some POE stuff, I find myself cargo-culting stuff from the docs all the time
geekosaur has not done POE in a while, nut a lot of stuff claimed by the docs never actually worked as the docs claimed in his experience 20:49
*but a lot...
tadzik moritz: did you try AnyEvent?
moritz tadzik: not really
timotimo so, MuEvent for perl6 will be super rad, right? 20:50
also, since parrot now has threads, and the JVM has threads, too, how long until nqp gets threads? how far down most people's priority lists is that?
pmurias nwc10: right now I have stoped doing the port till my exams are over ;) 20:52
moritz jnthn: I thought I might try to experiment a bit with constant folding
jnthn: and somehow I need to mark those operators that are constant-foldable 20:53
should I mix in a role into the proto? or add an attribute to Routine?
tadzik timotimo: I wrote Threads.pm a while ago, but as nqp only works with green threads for now, so does rakudo 20:54
bringing native threads to nqp is probably pretty doable
timotimo yes, i've read about the green threads and i liked that quite a bit (although i have not played around with it yet) 20:55
20:56 sftp left
grondilu is surprised we need threads in nqp 20:57
20:57 snearch joined
nwc10 I think that you might find it quite hard to abstract the threads models of Parrot and JVM in such a way that it's easy to write one system to target both 20:57
20:57 sftp joined
jnthn moritz: Perhaps the mixin 20:58
moritz: You could do it as part of the precedence mixin stuff perhaps...
moritz I'll try it as a normal trait in core for now 21:03
pmurias timotimo: there is node-webkit which allows writing desktop apps in node which use HTML do display the GUI 21:04
timotimo oh. well, that's halfway sensible. that kind of approach exists for like 20 different platforms already anyway
pmurias tadzik: speed is the main advantage of node.js, and using javascript both on the client and sever side 21:05
timotimo: is there something like that in perl? 21:06
21:07 bruges_ left
dalek kudo/constant-folding: a1bcaa6 | moritz++ | src/core/ (2 files):
mark some numeric operators as pure
21:08
nwc10 moritz: not sure if this is somethign that matters, but
in perl 5 21:09
timotimo pmurias: i really don't know anything about perl5
nwc10 a) beware that anything that does warn shouldn't be constant folded
(warnings might be fatal)
21:09 bruges joined
nwc10 b) This code is valid and should not bail out at compile time 21:09
if (0) {
$a = 0/0;
}
pmurias timotimo: what's your language of choice (besides Perl6 ;) 21:10
timotimo it was python for a very long time
21:11 erkan left
timotimo i have a work-project, which turned into a somewhat big framework type deal and my lack of discipline when working with unrestricted types is making it hard for me to work efficiently 21:11
a friend of mine had been showing me areas where perl5 is extremely good and when i saw that perl6 is gradually typed, has compile-time checks, proper signatures and such a nice object system, i was kind of hooked
also, djanatyn had been showing me a few cool things 21:12
moritz nwc10: I kinda hope that when stuff returns a Failure instead of throwing an exception, I can just serialize the Faillure and return it
nwc10 I don't understand that Perl 6 toolchain/architecture enough to know whether that works 21:13
but I hope that the suggested corner test cases are useful 21:14
moritz nwc10: certainly worth considering 21:15
masak g'night, #perl6
timotimo good night masak! 21:16
nwc10 I can't offhand remember any other corner cases of constant folding
moritz nwc10: I also thought about emitting compile time warnings or errors like "$construct will always warn/error at run time"
well, I wonder if 'string' x $very_big_number is a good idea
21:16 bluescreen10 joined
pmurias isn't moving errors to compile time allowed in Perl6? 21:17
nwc10 moritz: depends how those interact with dead code.
moritz pmurias: I'm not sure. If not, maybe we can establish that :-) 21:18
anyway, bed time for me.
moritz waves
pmurias moritz: g'night
nwc10 should go to bed too
jnthn 'night, moritz
timotimo well, good night bedgoers! 21:22
japhb Wow, it's like someone yelled 'Lights out!' over there. :-) 21:30
timotimo i'm staying up at least a bit longer 21:32
FROGGS jnthn: do you agree that this is a typo? github.com/rakudo/rakudo/blob/nom/...r.pm#L1623 cmp to github.com/perl6/std/blob/master/S...2474-L2475 21:35
there is nothing like, $[abc], is there?
std: $[abc]
p6eval std 7deb9d7: OUTPUT«===SORRY!===␤Unsupported use of $[ variable; in Perl 6 please use user-defined array indices at /tmp/zWTiPQ6JDd line 1:␤------> $[⏏abc]␤Parse failed␤FAILED 00:00 41m␤»
FROGGS but there is $<abc> for a match var, and $(...) for contextualizer 21:36
jnthn FROGGS: Yeah, looks typo-ish. 21:37
STD seems righter
FROGGS k
I still have problems, so there are other things wrong 21:38
it's hard to compare std and nqp/rakudo
dalek p-jvm-prep: ca07f22 | jnthn++ | docs/ROADMAP:
ROADMAP update.
21:43
p-jvm-prep: d1a8010 | jnthn++ | / (2 files):
Simplify nqp::say, provide nqp::print.
p-jvm-prep: 0ff27ea | jnthn++ | src/org/perl6/nqp/jast2bc/JASTToJVMBytecode.java:
Get more string decode handling in place.
p-jvm-prep: 448080d | jnthn++ | nqp-src/NQPCORE.setting:
Fix say and add print to the NQP setting.
p-jvm-prep: 1aee9de | jnthn++ | nqp-jvm-cc.nqp:
Try to leave less files around.
jnthn FROGGS: Yeah, though they're closer than they once were. The exception stuff often differs 'cus Rakudo knows about typed exceptions.
21:43 matija joined
FROGGS and the grammar and actions are split up 21:43
(and we are building an ast)
colomon is very happy to see what appears to be steady progress on nqp-jvm-prep 21:44
timotimo is amazed, frankly, at the amount of progress that jnthn is cranking out 21:50
FROGGS TimToady: in STD regexes, what token will parse the contextualizer? / $( 1 ) / 22:00
TimToady: is it token metachar:var line 5060? 22:01
jnthn FROGGS: yes 22:02
djanatyn timotimo: :O
jnthn FROGGS: and variable in the main language parses contextualizers.
djanatyn timotimo: what have I been showing you?
FROGGS jnthn: k, so than I'm on the right track since friday ;o)
dunno if the smiley is right though 22:03
timotimo djanatyn: you've been showing me bits of perl6 here and there
jnthn FROGGS: I suspect you may want to override that rule in Rakudo's regex grammar, if we don't already.
FROGGS well, I adjusted it so it will match $(..., and not just $<alpha>... and $\W<alpha>... 22:04
djanatyn timotimo: do you mean perl5?
timotimo i'm pretty sure not 22:05
jnthn FROGGS: I wonder if we can't just do what STD does...
FROGGS: You may be seeing a fossil from an older, now-fixed parsing bug... 22:06
FROGGS jnthn: k, thanks
22:14 snearch left
dalek p-jvm-prep: a4567c9 | jnthn++ | / (2 files):
Stopgap solution for coercion stuff.

Needs to pay attention to the methods that will usually do the work also, but that can come later.
22:17
p-jvm-prep: c778c18 | jnthn++ | src/org/perl6/nqp/runtime/Ops.java:
Better boolification default.
p-jvm-prep: a2c3290 | jnthn++ | src/org/perl6/nqp/runtime/Ops.java:
Stringify to 1, not 1.0.
p-jvm-prep: 865ecf2 | jnthn++ | nqp-src/NQPCORE.setting:
Add testing functions to setting.

Directly copied from main NQP setting; seem to work.
p-jvm-prep: 35a1e9b | jnthn++ | / (35 files):
Rearrange test suite a little.
p-jvm-prep: b9a8931 | jnthn++ | t/qast/qast_ (2 files):
Update tests for .0 changes.
22:21 balders_dod joined 22:23 MayDaniel left
dalek p-jvm-prep: 8b22061 | jnthn++ | / (16 files):
Start running a subset of the NQP test suite.

This adds a "make nqptest" target and adds the tests that we already are able to cross-compile and pass from t/nqp. They are copied right from the NQP repo, unmodified.
So far we pass 15 test files and 95 tests (out of 65 files and 584 tests).
22:27
22:28 cog joined
tadzik awesome awesome 22:30
jnthn++
stevan_ jnthn: around? 22:31
jnthn stevan_: yeah, though only for a little longer...gotta get up to teach tomorrow :)
stevan_ may I ask a few questions, i don't require deep answers :)
I promise I won't keep you too long 22:32
jnthn sure
stevan_ cool
so first question is, how complete is QAST? is that all the nodes NQP uses?
jnthn Rakudo and NQP both produce QAST 22:33
stevan_ specifcally these nodes -> github.com/perl6/nqp/tree/master/src/QAST
jnthn It's serving us pretty well.
stevan_ ok, cool
jnthn QAST evolved from PAST, which was, API wise, very stable.
stevan_ k
jnthn QAST was partly "lessons learned", partly integrating 6model, and partly preparing for backend independence. 22:34
stevan_ so, second question, how much thinking have you guys done about how Perl 5 and Perl 6 would interoperate?
jnthn I don't see major QAST changes down the line. masak++ has added some bits related to macros... 22:35
On interop, we've talked about various options.
stevan_ yeah it seemed pretty complete to me, just wasnt sure if there was something I hadn't seen
is there a prevailing wind in any specific direction? 22:36
spider-mario I’m seeing some strange behavior with !op and junctions
it seems that (junction) !op value is `not ((junction) op value)`
at least with op = %% 22:37
stevan_ jnthn: I guess the specifics are; are you planning on just linking to libperl.so? or do you think p5 on Rakudo is more of a possibility?
spider-mario r: all(3, 4) !%% 2
p6eval rakudo 9c9d79: ( no output )
22:37 adu left
spider-mario r: say(all(3, 4) !%% 2) 22:37
p6eval rakudo 9c9d79: OUTPUT«True␤»
jnthn The two interop things that are worth doing, in my view, are (a) embed Perl 5 and hang its SVs off 6model objects and try and make things somehow sorta work, and (b) build a Perl 5 implementation that targets QAST. 22:38
spider-mario I thought it would mean “all not divisible by 2”
when it seems to actually mean “not(all divisible by 2)”
n: say(all(3, 4) !%% 2) 22:39
p6eval niecza v24-18-gaf64300: OUTPUT«True␤»
spider-mario why is that?
r: say(all(2, 3) != 2)
p6eval rakudo 9c9d79: OUTPUT«True␤»
jnthn Where a is useful in so far as "we get run the XS modules" and b is useful in so far as "it just integrates nicely"
stevan_ right
jnthn On b, we actually do have a very tiny bit of it ;)
r: say 'a b' ~~ m:P5/a b/
p6eval rakudo 9c9d79: OUTPUT«「a b」␤␤»
stevan_ larry's work on the STD_p5? 22:40
oh, the regex
hehe :)
jnthn well, but I took "how is Perl 5 regex parsed" from STD_P5 with few changes.
What's cute is that you can actually use the Rakudo debugger to single step through P5 regexes too 22:42
grondilu rn: say all(3, 4) !%% 2
jnthn I basically got it for "free" 'cus the debugger works at AST level.
p6eval rakudo 9c9d79, niecza v24-18-gaf64300: OUTPUT«True␤»
grondilu rn: say not all(3, 4) %% 2
p6eval rakudo 9c9d79, niecza v24-18-gaf64300: OUTPUT«True␤»
jnthn spider-mario: I think that was discussed here earlier; the not is lifted outside of the expression, iirc
spider-mario it certainly looks so 22:43
thanks
flussence think of the all() as a mini-fork()
timotimo jnthn: tbh, i didn't do much to make sure this negation stuff works with my optimisation. didn't even look at !op much
spider-mario I was more puzzled by !op than by all
timotimo do you think something may go wrong?
stevan_ jnthn: ok, perfect, you've answered my questions :) 22:44
spider-mario maybe we should make it a test?
stevan_ thanks much
have a good night sleep
spider-mario and run that test with optimizations enabled
jnthn stevan_: welcome
spider-mario hm, do you usually speak american or british english here? 22:45
geekosaur "yes"? :)
spider-mario I see that timotimo has just said “optimisation”
I replied “optimization” without putting too much thought
(+with)
jnthn spider-mario: I'm British and end up typing American spellings a bunch of the time 22:46
spider-mario neither are my native language, I’m french
geekosaur language here is somewhat flexible, in my experience. mostly some form of English but you'll spates of other languages as well
jnthn I've even had people edit my commits to Rakudo to change things from British to American spelling o.O
spider-mario :D 22:47
so, I shouldn’t worry about it?
timotimo i haven't fixed what spelling of optimization i should be using in my head
spider-mario neither have I
timotimo i don't do optimization often, at all. at least not this kind
spider-mario the spelling in french is the same as in british english 22:48
diakopter jnthn: probably that's when an American doesn't know there is a British spelling
spider-mario with an `s`
timotimo the german one is "optimierung" 22:49
jnthn OK, time for some rest 22:50
'night o/
spider-mario there are things where french is closer to american english than british english, though
good night, jnthn
for example, (US) to have a cramp vs. (UK) to have cramp
timotimo good night jnthn! and good teaching :) 22:51
spider-mario in french, it’s « avoir une crampe », so there’s an article before the noun
I meant closer than *to* british english 22:52
22:52 awwaiid joined
timotimo ah, the optimization i wrote doesn't recognize operators if they have METAOP_NEGATE applied to them 22:52
spider-mario of course british english is still closer to american english than french is. :D
timotimo the optimization bails out pretty pessimistically 22:54
22:57 cog left
japhb timotimo: That's exactly what you want. 22:57
Nothing more annoying than discovering your optimization was over-general and is acting as an automated bug insertion mechanism 22:58
timotimo indeed!
23:06 cog joined 23:10 PacoAir left 23:31 sftp left 23:41 pmurias left, userman joined 23:43 cog left 23:48 cog joined 23:55 userman left