»ö« 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)whoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoawhoaw… | ||
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 failedFAILED 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 failedFAILED 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
|