»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
00:01
leont left
00:03
Vlavv left
|
|||
jnthn | 'night, #perl6 | 00:05 | |
ruoso | night jnthn | ||
00:11
ggoebel left
00:22
benabik left
00:27
benabik joined
00:41
dayangkun joined
00:44
BenGoldberg left
01:00
markov left
01:01
markov joined
01:04
kriptik joined
|
|||
kriptik | i'm looking forward to learn perl6, can anyone tell me what would be a perfect usecase to experiance the language power | 01:05 | |
ruoso | text parsing using grammars would be my suggestion | 01:07 | |
timotimo | indeed. the simplicity by which a grammar and an actions class construct useful data structures from your input data is quite an awesome thing to behold | 01:09 | |
of course if your input format is sufficiently insane, the simplicity gets kind of lost in the shuffle | 01:10 | ||
kriptik | thnx, any super awesome tutorial out there i should check out for that/ | 01:11 | |
? | |||
timotimo | i thought the perl6 book was okay, but it really depends on what your background is | 01:12 | |
there's a few things the perl6 book didn't explain. ("why is there suddenly a colon here?") | |||
that's probably because i hadn't written a single line of perl5 yet | 01:13 | ||
kriptik | i did some perl5 using dancer then switched back to ruby/sinatra | ||
timotimo | one resource that i found super nice was the advent calendar posts on perl6advent.wordpress.com, but that's more like an appetizer than an introduction or tutorial text | ||
we have a dancer-alike called Bailador, you can check that and other modules out on modules.perl6.org | 01:18 | ||
otherwise asking questions here is always okay; right about now most people are asleep, though | |||
kriptik | thanks timotimo, i didnt know that bailador was perl6 | 01:20 | |
is it plack compatible? | |||
timotimo | unfortunately i don't know anything about web app development. i only did some django a few years back | ||
kriptik | you use perl6 for? | 01:21 | |
timotimo | uh ... experimenting, learning, hacking the compiler ;) | ||
kriptik | hacking the compiler, please explain :) | ||
timotimo | i contribute little things to rakudo itself | ||
kriptik | what is rakudo? | ||
timotimo | fixing low hanging fruit bugs for example | 01:22 | |
rakudo is our current "main" implementation of perl6 | |||
kriptik | i like that experession low hanging fruit bugs :) | ||
nice | |||
timotimo | hah, i didn't think of the two running together yet | ||
kriptik | so what do you like most about perl6 | 01:23 | |
timotimo | i was drawn to perl6 for its type system and object system | ||
after running into too much trouble writing a kind of big framework in python, i needed something to complain at compile time when i'm doing obvious type errors | 01:24 | ||
kriptik | python is complied language? | ||
timotimo | more or less | 01:25 | |
it's bytecode compiled, but there is no compile-time type checking | |||
but really all the other aspects are really interesting to me: the way functional programming flows so seamlessly into most other concepts, the short and expressive syntax that has gained so much readability compared to perl5 (the rules syntax for grammars is so super nice) and all the other stuff | |||
and perl6 has what masak likes to call "strange consistencies"; concepts that pop up in many places; it's all connected, like a conspiracy theorist would claim | 01:26 | ||
kriptik | hmm, i never understood these stuff, i hope i will soon. thats what drawn me into perl 6 and ruby 2, i wanna know which one would be faster or even use a low level web api like rake or plack based on the language... i am kinda of an ultimate tool freak seeker, i know its pointless still i can't help it | 01:27 | |
timotimo | oh, you want execution speed? :| | ||
kriptik | perl6 is fast right? | ||
timotimo | it can be | ||
kriptik | no wait, i thought it will be faster than perl5 | 01:28 | |
timotimo | niecza is very fast compared to rakudo, but niecza lacks a bunch of features | ||
kriptik | hmm, niecza is...? | ||
timotimo | another perl6 implementation, that one runs on .net and mono | ||
kriptik | i wouldnt use a .net framework or mono | 01:29 | |
is there such a thing as perl virtual machine | |||
timotimo | rakudo is currently being ported to the JVM, we are hoping for good speed improvements there. after that comes a new VM that is custom made for perl6 | 01:30 | |
parrot used to be that, and rakudo runs on that | |||
kriptik | yeah i came accross parrot | ||
timotimo | but sadly it isn't very fast | ||
kriptik | compared to...? | ||
timotimo | niecza, if you want to compare it to other perl6 implementations | 01:31 | |
dalek | rl6-roast-data: 0b38e01 | coke++ | / (5 files): today (automated commit) |
||
timotimo | you can definitely get speed improvements when you use natively typed variables (int, str and num instead of Int, Str and Num), but it only gets you so far. | ||
flussence | Parrot's performance is comparable to the Javascript engine on a ~15 year old browser | 01:32 | |
timotimo | in the next few days, we'll get compile-time inlining for some sub calls for the JVM; i'm hoping for a decent speed boost from that alone, but we won't be faster than perl5 for complicated tasks so soon. | 01:33 | |
sadly, i've been toying around with pypy before i came to perl6; the speed difference is crazy | 01:34 | ||
anyway, rakudo is definitely still in the "make it work" phase, the real "make it fast" phase is yet to come | 01:35 | ||
and with good compile-time analysis at our disposal, i think we'll get to very nice places indeed. | |||
01:36
xinming left
01:38
xinming joined,
raiph joined
|
|||
ruoso | r: sub foo { CONTROL { say "Inside CONTROL!" }; return "bar" }; say foo(); | 01:45 | |
camelia | rakudo 8d851b: OUTPUT«bar» | ||
ruoso | wasn't "Inside CONTROL!" supposed to be printed above as well? | ||
01:45
xinming left
01:47
colomon joined
|
|||
timotimo | r: sub test { sub foo { CONTROL { say "Inside CONTROL!" }; return "bar" }; say foo(); CONTROL { say "outside control!" } }; test; | 01:47 | |
camelia | rakudo 8d851b: OUTPUT«bar» | ||
timotimo doesn't know about CONTROL | |||
r: sub test { sub foo { CONTROL { say "Inside CONTROL!" }; note "something"; return "bar" }; say foo(); CONTROL { say "outside control!" } }; test; | |||
camelia | rakudo 8d851b: OUTPUT«somethingbar» | ||
01:47
xinming joined
|
|||
timotimo | r: sub test { sub foo { CONTROL { say "Inside CONTROL!" }; warn "something"; return "bar" }; say foo(); CONTROL { say "outside control!" } }; test; | 01:48 | |
camelia | rakudo 8d851b: OUTPUT«Inside CONTROL!outside control!something in sub foo at /tmp/j9RkIWYtwk:1bar» | ||
timotimo | seems like return control exceptions don't fire yet? | ||
ruoso | I am slightly confused about how "next/last" is currently implemented. It was my understanding that they would be control exceptions, but there is no QAST nodes that create the CONTROL catching, so next/last are probably just hacked in right now | 01:51 | |
timotimo | look at MapIter | 01:52 | |
it has an nqp::handle thing for LAST, REDO and NEXT | |||
ruoso | yeah, but that is not what is called from the Actions | 01:54 | |
timotimo | can you elaborate? if you have a for loop you get a MapIter that gets sunk, don't you? | ||
ruoso | I am looking at Actions.nqp around line 988 | 01:55 | |
I don't see MapIter being created at those points | |||
timotimo | did you look at tweak_loop? | 01:56 | |
at least it reacts to NEXT, FIRST and LAST phasers | 01:57 | ||
ruoso | yes, but phasers are a different thing altogether | ||
timotimo | OK | ||
well, at least the for loop gets these control exception thingies from a call to "map" which creates a MapIter | 01:58 | ||
ruoso | for instance statement_control:sym<loop> doesn't even mention map, it goes straight for the while op | ||
timotimo | right, i was looking for that op, is that an nqp op? | 01:59 | |
yes, it seems to be | |||
ruoso | and I only see parrot-specific references to NEXT/LAST as control exceptions in MapIter.pm | 02:00 | |
(which may explain why it works in parrot and fails in the jvm) | |||
r: say gather loop { take 1; last } | |||
camelia | rakudo 8d851b: OUTPUT«1» | ||
timotimo | mhm, could be | ||
unfortunately i don't know more :( | 02:01 | ||
and i'm late for bed yet again ;) | |||
ruoso | :) | ||
timotimo | good luck! and good luck to you too, kriptik | ||
02:03
ggoebel joined
02:19
xinming left
02:20
xinming joined
02:25
arcterus joined
02:30
ggoebel left
|
|||
kriptik | thanks timotimo, appreciate your insights, saved me time | 02:43 | |
02:43
fred_ joined,
fred_ is now known as Guest5573
02:44
Guest5573 left
02:47
raiph left
02:54
raiph joined
02:58
PacoAir left
03:07
arcterus left
03:21
xinming left
03:23
xinming joined
|
|||
diakopter | sorear: ping | 03:39 | |
03:44
preflex_ joined,
ChanServ sets mode: +v preflex_,
preflex left,
preflex_ is now known as preflex
03:46
zacts left
|
|||
sorear | diakopter: pong | 03:52 | |
04:02
raiph left
04:05
ivan``_ left
04:07
ivan`` joined
04:08
raiph joined
04:14
ivan`` left
|
|||
lizmat | good *, #perl6! | 04:18 | |
04:19
colomon left
04:25
zacts joined
04:38
ivan`` joined
04:44
celesta left
04:49
birdwindupbird joined
04:52
zacts left
04:56
raiph left
04:58
crab2313 joined
|
|||
moritz | \o * | 05:02 | |
lizmat | moritz /o! | ||
05:05
arcterus joined
05:10
arcterus left
05:12
dayangkun left
|
|||
lizmat | colomon: I started integrating Set/Bag changes from Niecza, but am now blocking on naming special operators like ⊆,∈,∋,∪ to texan. Suggestions? | 05:13 | |
.tell colomon I started integrating Set/Bag changes from Niecza, but am now blocking on naming special operators like ⊆,∈,∋,∪ to texan. Suggestions? | |||
yoleaux | lizmat: I'll pass your message to colomon. | ||
preflex | yoleaux: you have 1 new message. '/msg preflex messages' to read it. | ||
JimmyZ | lizmat: you want use E, U temporarily ? | 05:15 | |
lizmat | well, I could, but what about ∋ ⊆ ∅ | 05:16 | |
ø I guess for ∅ | |||
I mean, is there an official -> texan translation for these ? | |||
.u - | |||
yoleaux | U+002D HYPHEN-MINUS [Pd] (-) | ||
lizmat | .u - | 05:17 | |
yoleaux | U+002D HYPHEN-MINUS [Pd] (-) | ||
JimmyZ | ョ | 05:18 | |
lizmat | gee, that's a real minus | ||
JimmyZ | ヨ | ||
lizmat | JimmyZ: colomon warned against using any non-texan for these, as it will make parsing the setting 4x as slow | ||
JimmyZ | yes | ||
lizmat | I'm frustrated enough with building a core setting taking 5 minutes or so already | ||
05:19
crab2313 left
|
|||
JimmyZ | I spent all my time to compile NQP this morning after every small code modification | 05:20 | |
:( | |||
05:24
fridim_ left
|
|||
lizmat | ok, I was exaggerating: it is real3m51.304s | 05:25 | |
JimmyZ | Stage post : 16101.782 | 05:26 | |
this one it was when I compile it with 1GB memory | 05:27 | ||
on Parrot | |||
lizmat | 4.5 hours ? | 05:28 | |
wow | |||
JimmyZ | yeah | ||
sorear | hey | ||
benabik | 1GB = many swapping | ||
sorear | .c ⊆ | ||
yoleaux | sorear: Sorry, no results! | ||
JimmyZ | benabik: yeah | ||
sorear | .u ⊆ | ||
yoleaux | U+2286 SUBSET OF OR EQUAL TO [Sm] (⊆) | ||
lizmat | JimmyZ: indeed… no way to get more memory ? | 05:29 | |
sorear | does sub infix:["\c[SUBSET OF OR EQUAL TO]"] work ? | ||
because 1. it should if I'm remembering the spec correctly 2. it will fix the slowness if I'm remembering the etiology correctly | |||
JimmyZ | lizmat: no... I was on linode server | ||
lizmat | $ perl6 -e 'sub infix:["\c[SUBSET OF OR EQUAL TO]"]' | 05:30 | |
===SORRY!=== | |||
No such method 'ast' for invocant of type 'NQPMu' | |||
sorear | JimmyZ: that's why I started niecza | ||
lizmat | but that could be because I don't have icu | ||
sorear | could also be the lack of a signature and a body | ||
r: sub infix:["z"]($x,$y) { say $x }; 3 z 4 | 05:31 | ||
camelia | rakudo 8d851b: OUTPUT«===SORRY!===No such method 'ast' for invocant of type 'NQPMu'» | ||
JimmyZ | sorear: :-) | ||
sorear | or, it could be a real bug | ||
r: sub infix:<<z>>($x,$y) { say $x }; 3 z 4 | |||
camelia | rakudo 8d851b: OUTPUT«3» | ||
sorear | r: sub infix:<<\x2286>>($x,$y) { say $x }; 3 ⊆ 4 | ||
camelia | rakudo 8d851b: OUTPUT«3» | ||
sorear | try that | ||
lizmat | will do | 05:32 | |
$ perl6 -e 'sub infix:<<\x2286>>($x,$y) { say $x }; 3 ⊆ 4' | |||
===SORRY!=== | |||
Two terms in a row | |||
infix:<<\x2286>>($x,$y) { say $x }; 3 ⏏â | 05:33 | ||
hmmmm…. | |||
sorear | basically, parsing turns into molasses because the parser does a lot of indexing into strings | ||
parrot without ICU supports only utf8 and latin1 as encodings | |||
lizmat | I consider it molassy enough as it is | 05:34 | |
sorear | if you include literal non-latin1 characters in CORE.setting, the setting is a unicode string, and indexing goes quadratic | ||
lizmat | I guess this applies to *any* source code: it's just worse because the setting is so large, right|? | ||
sorear | JimmyZ: you could try the JVM port. it uses less memory to build. | ||
lizmat: right | 05:35 | ||
JimmyZ | sorear: I'm waiting for MoarVM :P | ||
05:36
raiph joined
05:44
bluescreen10 left,
iSlug joined
|
|||
dalek | kudo/nom: 09953c2 | (Elizabeth Mattijsen)++ | / (4 files): Give KeySey its own file |
05:55 | |
lizmat | *KeySet *sigh* | 05:56 | |
06:00
iSlug left
06:02
dayangkun joined
06:18
iSlug joined
06:27
FROGGS joined
|
|||
lizmat | morning FROGGS! | 06:27 | |
FROGGS | morning lizmat | ||
06:35
iSlug left
|
|||
sorear | o/ | 06:42 | |
FROGGS | hi sorear | ||
06:51
kaleem joined
06:54
dmol joined
06:55
arcterus joined
07:07
iSlug joined
07:10
yannickberthoud joined,
iSlug left
07:15
Timbus left
07:17
Timbus joined
07:21
iSlug joined,
yannickberthoud left
|
|||
lizmat | I thought I'd test how molassy things would get: Stage parse normally around 127 seconds: still waiting after more than 30 minutes now for Stage parse to finish | 07:24 | |
I guess the lack of icu is making things even worse | |||
so I would say we're looking at a factor of 15 in my case at least | 07:25 | ||
07:25
iSlug left,
yannickberthoud joined
07:28
woolfy joined
07:30
arcterus left,
yannickberthoud left,
iSlug joined
|
|||
lizmat | I'll just let it run to see where it ends while cycling& | 07:30 | |
jnthn | morning, #perl6 | 07:31 | |
07:34
sqirrel joined
|
|||
jnthn | .tell ruoso the next/last handlers for while loop are emitted as part of code generation, that is a QAST::Op while (and until, repeat_while and repeat_until) gets them "for free". MapIter handles them for for loops and contains a Parrot-specific version as well as a generic version of the looping code that JVM uses. | 07:37 | |
yoleaux | jnthn: I'll pass your message to ruoso. | ||
07:40
kriptik left
|
|||
jnthn | r: sub infix:["\x65"]($a, $b) { "$a & $b" }; say 1 A 2 | 07:41 | |
camelia | rakudo 09953c: OUTPUT«===SORRY!===No such method 'ast' for invocant of type 'NQPMu'» | ||
jnthn | Hmm | ||
lizmat: If we can get syntax like infix:["\xAB"] working then we can declare those operators in the setting without them literally appearing, I guess... | 07:42 | ||
07:42
iSlug left,
yannickberthoud joined
07:45
iSlug joined,
yannickberthoud left
07:52
dmol left,
ssutch joined
07:56
leont joined
08:01
iSlug left
|
|||
sorear | morning jnthn | 08:26 | |
jnthn | o/ sorear | 08:27 | |
Keeping busy? | |||
diakopter | jnthn: actually, the compilation unit also needs collectable too.. | 08:28 | |
er, ww | |||
08:30
kaleem left
|
|||
sorear | jnthn: yeah | 08:31 | |
finally got a weekend off, too zonked to p6 though | |||
jnthn | *nod* | 08:32 | |
It's important to take some rest too :) | 08:33 | ||
08:35
iSlug joined
08:37
daxim joined
08:43
rindolf joined,
yannickberthoud joined,
iSlug left
08:46
iSlug joined,
yannickberthoud left
08:50
iSlug left,
yannickberthoud joined
08:59
crab2313 joined
09:04
dakkar joined
09:06
yannickberthoud left
09:09
fhelmberger joined
09:17
dmol joined
|
|||
mathw | morning | 09:25 | |
rest? rest? What's that? *twitch* | |||
jnthn | mathw: That thing where you use http | 09:26 | |
mathw | oh yeah, that | 09:30 | |
been reading about that lately, might be writing a restful service in the near future | |||
I like the idea of actually using all these HTTP methods we usually ignore :) | 09:31 | ||
09:37
Vlavv joined
|
|||
moritz | mathw: I recently read that if you want to insult a random programmer, you tell him "your API isn't really RESTful!" | 09:47 | |
mathw | I'm not sure that works... what if htey weren't trying to write a RESTful API? | 09:48 | |
I'm pretty sure a lot of people out there don't actually care | |||
I mean, if people really cared about that kind of thing they wouldn't be so keen to write things in JavaScript, surely? | 09:49 | ||
(false association for a Monday morning, woohoo!) | 09:50 | ||
moritz | mathw: you keep saying that, but I don't believe you, since your API isn't RESTful!!!! :-) | 09:51 | |
mathw | actually, Form.pm's API is entirely stateless and it's pure, too | 09:52 | |
so naaaaaaaah | |||
jnthn | People tend to use REST to mean a bunch of different things :) | 09:53 | |
moritz | mathw: it doesn't use HTTP, so it can't be RESTful :-) | 09:55 | |
09:55
iSlug joined
|
|||
jnthn | .oO( Any sufficiently adopted term will be misused sufficiently that it becomes useless for precisely describing anything ) |
09:55 | |
moritz | mathw: and it's not in CLOUD either !!! | ||
09:57
arcterus joined
09:59
iSlug left,
crab2313 left
10:00
iSlug joined
10:01
arcterus left
10:06
iSlug left,
yannickberthoud joined
|
|||
mathw | All our problems can be solved by putting it in the cloud. | 10:07 | |
I'm even putting my internet connection in the cloud, so I can access it from everywhere | |||
moritz | sounds legit. | 10:08 | |
10:10
yannickberthoud left
|
|||
mathw | Absolutely | 10:10 | |
jnthn: I agree, especially if it's something to do with the internet | |||
10:13
iSlug joined
10:15
yannickberthoud joined,
iSlug left,
raiph left
10:20
iSlug joined,
yannickberthoud left
10:22
rindolf left
10:25
yannickberthoud joined,
iSlug left
10:28
ssutch left
10:30
yannickberthoud left
|
|||
mathw | yay for unit tests! | 10:38 | |
mathw completes the first stage of a behaviour change: break the unit tests | |||
or rather, adjust the unit tests to expect the new, correct, behaviour | |||
10:44
flussence_ joined
10:45
japhb_ left,
pecastro left,
pecastro joined
10:46
japhb_ joined
10:48
kaleem joined
|
|||
mathw | I'm really liking test-driven stuff. It's great gradually turning all those red failure markers into success markers :) | 10:59 | |
FROGGS | right, that is very satisfying | 11:00 | |
mathw | The trick then becomes being sure you've got a comprehensive test suite, so when it's all green you know you're done | 11:02 | |
11:02
Rotwang joined,
dayangkun left
|
|||
FROGGS | troo | 11:03 | |
timotimo | there should be a test that tells you if the test suite is good enough | ||
mathw | why not solve the halting problem while you're at it? | ||
FROGGS | and you must keep in mind that you probably never have a comprehensive test suite :o) | ||
moritz | it's pretty much a question of experience | 11:04 | |
when you work with a codebase for a while, you learn how much to (not) rely on its test suite | |||
timotimo | tadzik: i was thinking the other day: if a user wants to put multiple spaces into table cells, all they need to do is make a table header that explicitly sets the cell widths. | 11:07 | |
11:07
crab2313 joined
|
|||
tadzik | timotimo: or maybe they should just use | | 11:08 | |
timotimo | both things would probably end up using the same code (that i still need to write, mind you) | 11:13 | |
last night while i lay awake thinking about rakudo, i had the crazy idea that pruning away match objects in the perl6 grammar could speed up parsing because it would relieve pressure off the GC | 11:14 | ||
11:16
PacoLinux joined
|
|||
timotimo | so maybe today i'll write up a quick and dirty .prune for NQPMatch or what it's called and see if it reduces the peak memory usage noticably and if it decreases parse time at all | 11:21 | |
moritz | interesting idea | 11:25 | |
timotimo | sometimes in my pre-sleep lunacies i get desparate for that rakudo performance :P | ||
oh, i just noticed this hasn't been reviewed yet, should be straight-forward: github.com/rakudo/rakudo/pull/189/files | 11:27 | ||
dalek | kudo/nom: e8320df | (Timo Paulssen)++ | src/Perl6/Actions.nqp: make sure that tabs in heredocs get properly dedented. |
11:30 | |
kudo/nom: 3340362 | moritz++ | src/Perl6/Actions.nqp: Merge pull request #189 from timo/heredoc_tabs make sure that tabs in heredocs get properly dedented. |
|||
timotimo | appreciate it :) | ||
moritz too | |||
timotimo | i can use "self" in an nqp class, right? | 11:35 | |
oh, i may not even have to, though | |||
11:35
mtk left
|
|||
moritz | method prune() { @!array := nqp::list(); %!hash := nqp::hash(); } | 11:35 | |
:-) | |||
timotimo | well, @!array and %!hash are defined to be in NQPCapture, not in NQPMatch and i was writing the method for the latter | 11:36 | |
11:36
nyuszika7h is now known as vimperator,
vimperator is now known as nyuszika7h
|
|||
moritz | er, right | 11:37 | |
timotimo | so i was using nqp::bindattr for that | ||
11:37
mtk joined
|
|||
timotimo | also, i thought it would be important to $!cursor := Nil, too | 11:37 | |
FROGGS | is Nil available there? | 11:39 | |
moritz | NQPMu is | ||
now the realy interesting question is: where to call $/.prune? | 11:40 | ||
timotimo | good | ||
i'd sprinkle calls to $/.prune into action methods in Grammar.nqp in rakudo as i see fit and try not to make it explode :) | 11:41 | ||
hoping it'll explode during setting compile if i make a mistake ;) | |||
moritz | I'd thought the .prune() calls go into Actions | 11:44 | |
11:45
hanekomu left
|
|||
timotimo | er, yes, of course | 11:45 | |
"action methods in grammar.nqp" doesn't make a whole lot of sense | |||
moritz | (because if we don't need the captures at all, we can use non-capturing calls in the first place) | 11:46 | |
11:46
PacoLinux left
|
|||
timotimo | exactly, the prune goes after the action has done enough with it to create an .ast | 11:46 | |
11:47
PacoLinux joined
11:55
colomon joined
|
|||
lizmat | timotimo: there should be a test that tells you if the test suite is good enough" There is for Perl 5: it's called Devel::Cover::Test, part of the Devel::Cover distribution, see: metacpan.org/release/Devel-Cover | 12:03 | |
12:05
crab2313 left
|
|||
timotimo | right. good luck with that for a test suite like roast, though :( | 12:07 | |
12:07
Rotwang left
|
|||
timotimo | .o( timotimo—— for moving the goalpost ) | 12:07 | |
12:10
skids left
|
|||
lizmat | actually, I think rakudo is much better suited to be able to do this than Perl 5, judging from jnthn's work on the debugger | 12:12 | |
timotimo | oh; well for code coverage maybe; but concept coverage is not doable :P | 12:13 | |
12:14
fridim_ joined
|
|||
lizmat | troo | 12:14 | |
timotimo | about to test prune vs. no-prune. | 12:15 | |
jnthn | A coverage tool may not be too hard to hack together a first cut of. | ||
12:19
fridim_ left
12:22
mucker joined
|
|||
timotimo | hrmpf. time spent parsing is about the same | 12:22 | |
maxresident went down by like 8% or so | 12:24 | ||
from 1656512k to 1587572 | |||
ah. more like 4% | |||
so the effort wasn't worth it at all. but a negative result is a result nonetheless. just means that the hashes and lists in our match objects don't take up crazy much space (or clearing them out along with the cursor doesn't lead to sufficient amounts of memory being freed, your pick) | 12:25 | ||
i *could* still try it on jvm, though | |||
mathw | that might be interesting | 12:26 | |
you know you want to | |||
12:26
domidumont joined
|
|||
timotimo | i'm already doing it | 12:26 | |
though since the gc is already concurrent, i don't think relieving GC pressure by removing the match objects will make a difference in time used | 12:27 | ||
and the jvm memory usage pattern is also not as easy to inspect just with /bin/time | 12:28 | ||
12:28
domidumont left,
domidumont joined
|
|||
timotimo | hm, maybe bindattr'ing nqp::list() and nqp::hash() was a bad choice and i should have used NQPMu instead. i can still try that. | 12:28 | |
jnthn | yes, it would allocate a new list and hash... | 12:29 | |
timotimo | oh the things you do when you don't think it through ... | ||
12:30
daxim left,
hoelzro left
|
|||
mathw | We've all been there... | 12:30 | |
12:30
daxim joined,
hoelzro joined
|
|||
timotimo | oh, wow! that ... changed absolutely nothing :| | 12:36 | |
FROGGS | >.< | 12:37 | |
timotimo | i guess that just means that nqp::list() and nqp::hash() are pretty fast? | ||
and now: misspelling =time make as just =make | 12:41 | ||
tadzik | and now, the conclusion | 12:42 | |
[Coke] | "previously.... on #perl6" | ||
moritz | timotimo: where did you add the $/.prune() calls? (which methods)? | 12:43 | |
timotimo | hm, what's the easiest way to collate that? | 12:44 | |
in 33 places, if that helps? | |||
12:45
crab2313 joined
|
|||
timotimo | well, the memory savings are pretty much nonexistent; at least nothing spectacular shows up in the maxresident piece of the readout of time. | 12:45 | |
and the compilation speed doesn't seem to change either | |||
moritz | one nastiness is that nqp::list and nqp::hash themselves allocate new objects | 12:46 | |
I wonder if we should bind NQPMu instead | |||
timotimo | well, i replaced that with NQPMu already, so that's not it | ||
12:46
domidumont1 joined
|
|||
moritz | ok | 12:46 | |
did you add the .prune() to all the literals? | |||
like quibbler and numish etc. | 12:47 | ||
timotimo | i just put $/.prune at the end of many methods. not to those, though | ||
quibble could be a good idea indeed. | |||
moritz | and fwiw the GC isn't concurrent on parrot | 12:49 | |
timotimo | yes, that part above was refering to trying it on the jvm | ||
12:49
crab2313_ joined,
crab2313_ left,
domidumont left
|
|||
moritz | ah | 12:50 | |
timotimo | when passing :node to a QAST::Op, will that make a copy? | 12:51 | |
FROGGS | method node(*@value) { $!node := @value[0] if @value; $!node } | 12:53 | |
I think not because it does a bind, right? | |||
timotimo | is that what gets called? | 12:54 | |
FROGGS | yes | ||
timotimo | in that case, it shouldn't copy | ||
FROGGS | nqp/src/QAST/Node.nqp:22: method node(*@value) { $!node := @value[0] if @value; $!node } | ||
12:54
domidumont1 left
12:55
domidumont joined
|
|||
timotimo | it seems like i put too much pruning in there now. | 12:58 | |
EXPR_reduce in NQPHLL is complaining | |||
12:59
arcterus joined
|
|||
jnthn | Note that if $!node holds a reference to a match object, which in turns holds a reference to a cursor, then they ain't gonna go away when pruning as they are still referenced. | 12:59 | |
moritz | jnthn: that's why NQPMatch.prune assigns NQPMu to $!cursor | 13:01 | |
jnthn | ah, ok | 13:02 | |
Note that a more conservative thing to do may be to clear $!cstack inside of CAPHASH iff $!bstack is null | |||
(if $!bstack is null and since match objects are cached, $!cstack will be unrequired beyond that point) | 13:03 | ||
Note that this may already be done :) | |||
13:03
arcterus left
|
|||
timotimo | i'll have a quick look | 13:03 | |
13:05
PacoLinux left
|
|||
timotimo | that is currently not being done | 13:06 | |
13:06
imarcusthis- left
|
|||
jnthn | It's probably a reasonable thing to do. | 13:08 | |
FROGGS | jnthn: tell us more :o) | ||
timotimo | i've added it, i can commit it later. should prune make it into nqp/master? | ||
jnthn | timotimo: Not sure about that one yet. | 13:10 | |
timotimo: But the $!cstack throwing away is probably worth a spectest :) | 13:11 | ||
timotimo | will do | ||
13:13
konundra joined
13:14
xinming left
13:16
xinming joined
13:17
domidumont left
13:19
pmurias joined
|
|||
pmurias | jnthn: did you find the problem ruoso was having with --target=ast? | 13:19 | |
jnthn | pmurias: I patched QAST::BVal to not explode, yes. | 13:20 | |
pmurias | good | 13:21 | |
being able to look at the ast is really important for new developers | |||
jnthn | *nod* | ||
Wonder if we should somehow try to test it somewhere...at least test it won't explode. | 13:22 | ||
mathw | 'not exploding' is a good first step for testing | 13:27 | |
the great thing about software is that we can catch explosions without expensive repair work required afterwards | |||
frettled | unless it's controller software for a sentrifuge ;) | ||
pmurias | jnthn: I have a start of a unit tests for QAST, github.com/pmurias/rakudo-js/blob/...ast-node.t | 13:28 | |
13:29
xinming left
|
|||
pmurias | jnthn: I thought about testing --target=ast but wasn't sure we want to hardcode the exact format into the tests | 13:30 | |
13:31
xinming joined
|
|||
jnthn | We shouldn't test the exact contents, no | 13:31 | |
But we can look for some obviousthings | |||
like "if I call a function elephant, does the word elephant appear in the dump output" | |||
I'd test $somenode.dump really, not --target=ast itself. | |||
r: sub elephant() { }; elegant | 13:32 | ||
camelia | rakudo 334036: OUTPUT«===SORRY!===Undeclared routine: elegant used at line 1. Did you mean '&elephant'?» | ||
jnthn | :D | ||
tadzik | that's irrelephant | ||
FROGGS | >.o | ||
jnthn | I want to think of a better pun than that, but I can't trumpet | 13:33 | |
pmurias | nqp --help was broken untill recently so we should test that too ;) | ||
FROGGS | why not... testing the command line arguments for sanity isnt soo bad | ||
[Coke] | do the tests for nqp get run as part of a rakudo build? | 13:36 | |
(IFF nqp had to be built as part of the build for rakudo) | 13:37 | ||
pmurias | we could have some rought sanity checks for command line arguments and unit tests for the trickier dump methods | ||
FROGGS | [Coke]: no, dont think so | 13:38 | |
timotimo | spectests are about to finish | 13:45 | |
13:45
rindolf joined
|
|||
timotimo | try.rakudo.parrot is b0rked, no tests run | 13:46 | |
13:46
btyler joined
|
|||
timotimo | documentation/why.t failed one, but i think that file is dirty locally | 13:46 | |
IO-Socket-INET fails 7 of 41, i suppose that's known? | |||
[Coke] | timotimo: github.com/coke/perl6-roast-data/b....out#L2477 | 13:47 | |
they have been failing for some time. | |||
:( | |||
jnthn | timotimo: How does the try one fail? | 13:48 | |
timotimo | one prune too many :) | 13:49 | |
jnthn | Too many prunes always lead to crap... | ||
timotimo | yeah. i'm thinking of leaving the prune stuff out completely now. doesn't seem to have any benefits. | 13:52 | |
but i'll stash it away in a branch and put it up on github because maybe one day someone finds out what's wrong with my approach and does the obvious one-line-fix and makes it all much better :) | 13:53 | ||
clearing the cstack doesn't seem to affect parse time btw | 14:01 | ||
jnthn | I didn't expect it'd help time, but it should allow less memory usage. | 14:02 | |
timotimo | i will need to check that | ||
at least try now works :) | |||
barely a difference in maxresident | 14:06 | ||
14:14
PacoLinux joined
14:15
kaare_ joined
14:24
sqirrel left
14:33
kaleem left
14:40
cognominal left
14:41
Psyche^_ left,
cognominal joined
14:42
Psyche^ joined
14:49
anuby_h joined
14:50
skids joined,
xinming left
14:52
xinming joined
14:53
crab2313 left,
BenGoldberg joined
14:54
rindolf left
14:56
domidumont joined
15:00
rindolf joined
15:05
PacoLinux left
|
|||
daxim | when is nqp/rakudo 2013.08 scheduled for release? | 15:07 | |
15:08
rindolf left,
domidumont left
|
|||
FROGGS | daxim: 2013-08-22 Rakudo #67 moritz | 15:08 | |
github.com/rakudo/rakudo/blob/nom/..._guide.pod | |||
daxim | och | ||
15:11
PacoLinux joined
15:19
atrodo left,
birdwindupbird left
15:21
atrodo joined
|
|||
jnthn grabs his Perl 6 tuits | 15:25 | ||
mathw | I didn't see the 'u' in that for a moment | ||
jnthn | o.O | ||
What are you used to reading?! :P | |||
mathw | I think I spent too long in the pub on Saturday | 15:26 | |
with a bunch of martial artists | |||
I do value our traditions of training, but I'm not sure we need to preserve the one about getting really really drunk afterwards | 15:27 | ||
slava | jnthn: that was an awesome talk on the perl6 debugger (I think it was you), also, epic beard :D | ||
mathw: shush, that is the important part | 15:28 | ||
jnthn | slava: I'm probably to blame for debugger talks, yes. :) | ||
moritz | speaking of talks, I have a distinct lack of slides so far. | ||
slava | jnthn: your beard is how I know perl6 will be alright :) | ||
diakopter | marshal autists | ||
jnthn | moritz: Erm, me too, and I have 3 talks O.O | 15:30 | |
15:30
rindolf joined
|
|||
jnthn | slava: I guess I better keep it then... :P | 15:30 | |
jnthn is happy of it most of the time, except in these summer temperatures... :) | |||
mathw shaved off most of his hair a couple of weeks ago | 15:31 | ||
slava | yes | ||
www.wired.com/wiredenterprise/2012/...d-gallery/ | |||
mathw | it seemed prudent, as I was contemplating four days of aikido in a place with no air conditioning and generally poor ventilation when it's reaching 30C outside | 15:32 | |
diakopter | slava: yes, but jnthn's 1/3-1/2 their ages :) | ||
mathw | nothing wrong with starting early | 15:33 | |
slava | diakopter: so perl6 will be even mroe awesome :) | ||
mathw | don't forget the important contribution of $larry's moustache | 15:34 | |
slava | mathw: that goes without saying, IMO | ||
I can't wait for a Perl6 book to come out so I can bug everyone at YAPC :P | |||
15:36
rindolf left
|
|||
timotimo | bug them for signatures? | 15:36 | |
jnthn | .oO( camelia them for signatures? ) |
15:37 | |
PerlJam | slava: A Perl 6 book has already come out :) | ||
mathw makes note: make camelia costume | |||
slava | err, when?! :( | ||
I am so behind :( | |||
mathw makes a better note: persuade friends more talented in textiles to make camelia costume for him | 15:38 | ||
PerlJam | slava: I'm teasing somewhat. But there's "Using Perl 6" and the much older "Perl 6 and Parrot Essentials" | ||
timotimo | wow | ||
PerlJam: the state of the "perl6 book", at least the one that's on perl6/book, isn't really that amazing yet | 15:39 | ||
moritz | and it won't become amazing, because work on it has ceased | ||
PerlJam | indeed | ||
:( | |||
moritz | I've tried to put the stuff into perl6/doc instead | ||
and improve it there | |||
but it's a lonely quest, and I'm not good at sustaining such efforts alone | 15:40 | ||
std: 1 1 | |||
camelia | std c2215f0: OUTPUT«===SORRY!===Two terms in a row at /tmp/unf45YRB4C line 1:------> 1 ⏏1 expecting any of: feed_separator infix or meta-infix infixed function statement modifier loopParse failedFAILED 00:00 42m» | ||
moritz tries to get the file name in there | |||
15:42
dmol left,
konundra left
15:43
FROGGS left
|
|||
moritz | I'm not too happy with the way STD does it | 15:45 | |
15:46
btyler left
|
|||
lizmat | timotimo: "IO-Socket-INET fails 7 of 41, i suppose that's known?" Yes, I put them there, because the test seems to work out ok, but at the expense of 7 x 20 second timeouts | 15:47 | |
not sure yet if it is the general socket code that's to blame, or the test setup, but something is seriously wrong there | |||
each test is not also tested for the time it took: if it is more than 5 seconds, it will fail | 15:48 | ||
timotimo | righto | ||
lizmat | all of these failures are at 20 seconds | ||
if these are fixed, doing a spectest will be at least 1 minute shorter in wallclock when doing a parallel test | |||
and 2.5 minutes when doing a non-parallel test | 15:49 | ||
timotimo | ... oh no | 15:50 | |
i think i lost the only good copy of rakudo_optimiser_transformer.p6 | |||
how am i going to rapid-prototype my stuff now? ;_; | |||
15:50
btyler joined
|
|||
moritz | because rakudo batches several error in one message, so with the current format the file name is repeated for every routine | 15:50 | |
how would you like it if we changed it ===SORRY!==== Error while compiling $file\n | 15:53 | ||
and then the rest of the message as is, without the file names? | |||
dammit, I wanted to make slides, now I'm hacking rakudo again | 15:57 | ||
timotimo | :D | 15:58 | |
jnthn | moritz: CDD :P | 15:59 | |
timotimo | so when i have a QAST::Var, i can search through the lexpads; is there a central place where i should look to find out what kinds of things are stored in there for variables? like type constraints and such? | 16:01 | |
16:02
daxim left
|
|||
moritz | nr: say Bool.pick | 16:02 | |
camelia | rakudo 334036: OUTPUT«False» | ||
..niecza v24-88-g1f87209: OUTPUT«True» | |||
lizmat | r: say Int.pick | 16:04 | |
camelia | rakudo 334036: OUTPUT«Nil» | ||
lizmat | hmmm... | ||
timotimo | kind of hard to pick from the range of all BigInts :P | 16:05 | |
ah, that's how; lexpad.symbol("name")<type> will be ... a thing | 16:07 | ||
benabik | r: Bool ~~ Enum | 16:08 | |
camelia | rakudo 334036: ( no output ) | ||
benabik | r: say Bool ~~ Enum | ||
camelia | rakudo 334036: OUTPUT«False» | ||
timotimo | r: say Bool.^mro | ||
camelia | rakudo 334036: OUTPUT«(Bool) (Cool) (Any) (Mu)» | ||
benabik | I keep wanting camelia to output the result if there's no other output. | ||
jnthn | benabik: I think we had it that way once and it was just differently confusing :) | 16:09 | |
benabik | jnthn: Ah, but it would less confusing for *me*, you see. ;-) | ||
16:09
anuby_h left,
PacoLinux left
|
|||
benabik | Ah. .pick and .roll are simply implemented special for Bool. | 16:09 | |
16:09
FROGGS joined
|
|||
benabik | Ah, sorry I expected it to be an EnumMap not an Enum. But EnumMap doesn't seem to have .pick either? Eh. | 16:11 | |
16:12
PacoLinux joined
16:13
pmurias left
|
|||
moritz | r: say %*ENV.pick.perl | 16:19 | |
camelia | rakudo 334036: OUTPUT«"PERLBREW_HOME" => "/home/p6eval/.perlbrew"» | ||
jnthn wonders why on earth some seemingly innocent changes break the Rakudo on Parrot build | 16:23 | ||
16:25
fhelmberger left
|
|||
timotimo | r: my $foo where * > 10 = 20; | 16:25 | |
camelia | rakudo 334036: ( no output ) | ||
timotimo can't seem to find the code in actions that handles the "where" clause in token type_constraint :| | |||
or is that rule post_constraint? | |||
jnthn | It's post_ there ain't it? | 16:26 | |
timotimo | that seems to be for parameters, though. or is that the same? | ||
jnthn sees a method post_constraint | |||
timotimo | oh | ||
jnthn | oh... | ||
hmm | |||
timotimo | it does at least handle a where block | ||
jnthn | I didn't even know you could write that :P | ||
timotimo | r: my $foo where * > 10 = 5; | ||
camelia | rakudo 334036: ( no output ) | ||
timotimo | oh ... well :) | 16:27 | |
r: my ($foo where * > 10) = 5; | |||
camelia | rakudo 334036: ( no output ) | ||
timotimo | r: my ($foo where * > 10); $foo = 5; | ||
camelia | rakudo 334036: ( no output ) | ||
timotimo | doesn't seem very effective so far. | ||
jnthn | Right :) | 16:28 | |
Maybe it's NYI :) | |||
timotimo | r: sub Foo returns Int where * > 10 { 5 }; Foo; | ||
camelia | rakudo 334036: OUTPUT«===SORRY!===Missing blockat /tmp/9aUIcATTe8:1------> sub Foo returns Int ⏏where * > 10 { 5 }; Foo; expecting any of: statement list prefix or term prefix or meta-prefix new name to be defin… | ||
timotimo | r: sub Foo returns (Int where * > 10) { 5 }; Foo; | ||
camelia | rakudo 334036: OUTPUT«===SORRY!===Missing blockat /tmp/ErDJ8cIxxE:1------> sub Foo returns ⏏(Int where * > 10) { 5 }; Foo; expecting any of: statement list prefix or term prefix or meta-prefix new name to be def… | ||
16:28
rindolf joined
|
|||
timotimo | r: sub Foo(--> Int where * > 10) { 5 }; Foo; | 16:28 | |
camelia | rakudo 334036: OUTPUT«===SORRY!===Missing blockat /tmp/2SnkNntE9f:1------> sub Foo(--> Int ⏏where * > 10) { 5 }; Foo; expecting any of: statement list prefix or term prefix or meta-prefix new name to be defined… | ||
timotimo | mhm. | 16:29 | |
anyway, i'll go have a bit of balconytime :3 | |||
16:34
dmol joined
16:37
PacoLinux left
16:38
PacoLinux joined
16:52
vk_ joined,
benabik left
|
|||
masak | oh hai, #perl6 | 16:56 | |
lizmat | masak! | ||
jnthn | evening, masak o/ | 16:57 | |
lizmat | fwiw, I retried compiling the setting with a single line of "# ⊆" added to the prologue | ||
stage parse went from 127 seconds to 3400 seconds | |||
jnthn | o.O | ||
lizmat: Did you see my workaround suggestion? | |||
lizmat | that's about 26 times slower | 16:58 | |
jnthn: not yet, after cycling I had to catch up on some sleep and email :-) | |||
jnthn | k :) | ||
lizmat | going to run a spectest with the resulting setting, see if there are any differences there | ||
won't be able to do much more until much later this evening | 16:59 | ||
16:59
zwut00 joined
|
|||
pmichaud | yeah, we really need to fix the string handling and utf8 stuff in the regex engine :-/ | 17:00 | |
jnthn | I don't think the problem exists on JVM | ||
pmichaud | I'm sad I haven't had time to do that yet. Lots of lost time and opportunity in there. | ||
I hope it doesn't exist on JVM :) | |||
jnthn | Of course, we have OTHER problems with strings on the JVM :D | ||
lizmat | pmichaud! | ||
pmichaud | if it was a problem on the jvm I'd be even more sad. | ||
jnthn | And Moar is NFG (or an approximation thereof so far...) so it's all fixed width. | 17:01 | |
lizmat | result of make: real63m10.308s, user63m6.534s, sys0m3.673s | ||
pmichaud | \o/ | ||
lizmat | I would say, about 12 times slower in total | 17:02 | |
diakopter | wow | 17:05 | |
lizmat | and that by adding a single line of comment with a non-ascii character :-) | 17:08 | |
diakopter | what if you add it at the end | 17:09 | |
lizmat | I'll try that later, just for reference | 17:10 | |
spectest comes out ok, without a timing difference | |||
timotimo | is there a good short way to print out everything in an nqp::hash? | 17:11 | |
17:11
spider-mario joined
|
|||
jnthn | timotimo: in nqp? | 17:11 | |
timotimo | yes | ||
lizmat | make is running, I'll check back in 30 mins or so, afk& | ||
jnthn | for %h { say($_.key ~ ' = ' $_.value) } | 17:12 | |
? :) | |||
timotimo | oh that's surprisingly easy | ||
17:12
preflex left
|
|||
FROGGS | jnthn / timotimo: can't we make a gist/DUMP method for hashes in nqp? | 17:12 | |
17:12
preflex_ joined,
ChanServ sets mode: +v preflex_
17:13
preflex_ is now known as preflex,
domidumont joined
|
|||
[Coke] | r: say 3400/127 | 17:13 | |
camelia | rakudo 334036: OUTPUT«26.771654» | ||
pmichaud | I'm afk | 17:14 | |
timotimo | i fear i'll run into a few unstringifyables | 17:15 | |
17:15
konundra joined
17:16
dakkar left
|
|||
moritz | is that, like, unspeakables? | 17:16 | |
FROGGS | meh | ||
FROGGS wanted to make a "lost for words" joke | |||
timotimo | yeah, in this case i got a null pmc access :) | ||
there's nqp::isstr, right? | 17:17 | ||
FROGGS | nqp: say(nqp::isstr("hello")) | ||
camelia | nqp: OUTPUT«1» | ||
FROGGS | seems like | ||
timotimo | right, i could have totally checked that here :S | ||
17:18
Ben_Goldberg joined
|
|||
FROGGS | :P | 17:18 | |
17:18
flussence_ is now known as flussence
|
|||
timotimo | currently trying to replace a couple of p6store ops with p6storeunchecked (which i had to freshly map) | 17:18 | |
17:19
btyler left
|
|||
moritz tries to give compile-time errors with ===SORRY!=== the file name | 17:19 | ||
17:19
mucker left
17:20
BenGoldberg left
17:21
domidumont left
|
|||
timotimo | so, in a my Int $foo, the lexpad entry will have a .<descriptor> and that's a ContainerDescriptor and its .of will be the Int type object? | 17:22 | |
kind of seems like | |||
17:22
domidumont joined
|
|||
FROGGS | r: sub test(*@s is rw) { for @s -> $s is rw { $s = 1} }; my %h = a => 1; for %h.keys { test($_) }; say %h | 17:25 | |
camelia | rakudo 334036: OUTPUT«Cannot modify an immutable value in sub test at /tmp/8U83bCPD34:1 in block at /tmp/8U83bCPD34:1» | ||
jnthn | timotimo: Somethin glike that, yes | ||
FROGGS | jnthn: your commit 787295d0d2ea732e1a716795c5f3a150885f8346 changed the behaviour of the code above ^^ | ||
was that intended? | |||
(it wasn't dying before) | 17:26 | ||
jnthn | huh...the change mostly made code like that *not* die. | ||
We untodo'd a bunch of related tests. | |||
FROGGS | star: sub test(*@s is rw) { for @s -> $s is rw { $s = 1} }; my %h = a => 1; for %h.keys { test($_) }; say %h | 17:27 | |
camelia | star 2013.02: OUTPUT«("a" => 1).hash» | ||
FROGGS | see -------------------------^ ó.ò | ||
jnthn | Um | ||
oh, .keys | |||
wtf | |||
FROGGS | yeah | ||
jnthn | That doesn't even make any sense. | ||
I'm glad it dies now :P | |||
How on earth did it work before, anyways? :) | 17:28 | ||
FROGGS | yeah, just wanted to make sure that my v5 code needs changing :o) | ||
timotimo | magic & unicode farts | ||
FROGGS | farts mostly | ||
FROGGS giggles | |||
timotimo | did i write unicode? i meant unicorn. | ||
FROGGS | hehe | ||
timotimo | i don't think there's a unicode fart emoticon | ||
jnthn | I'm sure Unicode probably does have a char for fart :P | ||
FROGGS | that makes it even more funny :P | ||
timotimo | although that would be so cool | ||
jnthn | It has pile of poo :P | ||
FROGGS | .u fart | 17:29 | |
yoleaux | No characters found | ||
timotimo | if i could use it in identifiers ... :D | ||
FROGGS | meh | ||
timotimo | if i have a container descriptor that has an rw of 1 and an of of Mu, can i turn any p6store into a p6storeunchecked automatically? | 17:30 | |
although how often does that happen. what about Mu? | |||
diakopter | .u 5c41 | ||
yoleaux | No characters found | ||
timotimo | (i'm only looking at p6store Var, Var right now, though | ||
jnthn | timotimo: Yes, you probably can | ||
diakopter | aww, it doesn't have 5c41 | ||
jnthn | If you're doing it in the optimizer | ||
timotimo | i'll hopefully be able to put Var + typechecked return value into the same optimisation thing right after that | 17:31 | |
yes, this is all in the optimizer | |||
jnthn | dinner, bbiab | ||
timotimo | hm, is the correct check nqp::istype($desc.of, $!Mu) or is it $desc.of =:= $!Mu? | 17:33 | |
diakopter | .u 1f4a8 | 17:35 | |
yoleaux | U+1F4A8 DASH SYMBOL [So] (💨) | ||
diakopter | .ask dpk which unicode version does yoleaux have for .u ? | 17:36 | |
yoleaux | diakopter: I'll pass your message to dpk. | ||
17:40
PacoLinux left,
btyler joined
|
|||
timotimo | nqp: say(NQPMu =:= NQPMu); | 17:42 | |
camelia | nqp: OUTPUT«1» | ||
17:42
araujo left
|
|||
timotimo | oh yikes, i get so much "turning it unchecked" output from compiling the setting | 17:44 | |
i'm sure it's super broken now :D | |||
17:45
ssutch joined
|
|||
timotimo | haha, yes, i think nqp::istype(something, $!Mu) is pretty dumb :) | 17:46 | |
[Coke] | masak: alloveralbany.com/images/northshire...toga13.jpg (this place is opening soon relatively near me) | 17:52 | |
timotimo | '"nothing is written in stone" is written in stone' it should say | ||
i can't tell how to check if the types match; =:= doesn't trigger on Int, Int apparently, and eqv isn't in nqp | 17:54 | ||
perhaps i can istype that? | |||
17:54
lue left
|
|||
masak | [Coke]: :D | 17:56 | |
[Coke]: notice also that the book in the window almost says... "FROGGS" o.O | |||
[Coke] | masak: I pretty much have to go patronize their shop now! | 17:57 | |
timotimo | my code turned 3 p6store into p6storeunchecked based on matching descriptor .of types | ||
PerlJam | masak: I think you're imagining things ... the book says "FROGS", not "FROGGS" :) | 17:58 | |
masak | PerlJam: hence "almost" :) | ||
timotimo | cool, that seems like it kinda works | ||
FROGGS | :o) | ||
timotimo | i hope the spectest harness isn't confused by the mass amount of debug output | 17:59 | |
masak | [Coke]: there's a strain of self-defeating autopuns like that, which are simply a consequence of people not thinking things through. I don't like them at all. but this one is kinda funny because it's so deliberate. | 18:00 | |
PerlJam | timotimo: It should be ``"nothing" is written in stone'' :-) Classic use/mention dichotomy :) | ||
masak | PerlJam: that would be funny, too. but not an autopun. | ||
PerlJam | yep | ||
masak .oO( "this" is not a pipe ) | |||
masak .oO( you think that's "air" you're breathing? ) | 18:01 | ||
18:01
arcterus joined
|
|||
timotimo | i do get a bunch of spectest fails | 18:01 | |
PerlJam | Coke: that setting looks fairly permanent. Perhaps suggest to them that they could swap out the saying every once in a while :) | 18:02 | |
FROGGS .oO( employees must "wash hands" ) | |||
18:03
wtw joined
18:05
arcterus left
|
|||
timotimo | i had kind of hoped i could just make it work no-prob, but no ... :( | 18:05 | |
18:06
lue joined
18:08
zby_home joined
|
|||
FROGGS | r: { try die "huhu"; CATCH { $! = "42" } }; say $! # how can I unset $! ? | 18:08 | |
camelia | rakudo 334036: OUTPUT«huhu in block at /tmp/406uIpZynY:1 in block at /tmp/406uIpZynY:1» | ||
timotimo | $! = Nil? ;) | 18:09 | |
FROGGS | timotimo: where? in the CATCH block? | 18:10 | |
r: try { die "huhu"; CATCH { say "catched"; $! = Nil } }; say $! | 18:11 | ||
camelia | rakudo 334036: OUTPUT«catchedhuhu in block at /tmp/lI7iIMwd3g:1» | ||
FROGGS | hmmm | 18:12 | |
timotimo | hm | ||
FROGGS | r: try { die "huhu"; CATCH { say "catched"; OUTER::<$!> = Nil } }; say $! | 18:13 | |
camelia | rakudo 334036: OUTPUT«catchedCannot modify an immutable value in block at /tmp/XYuPd26nLB:1 in block at /tmp/XYuPd26nLB:1» | ||
FROGGS | r: try { die "huhu"; CATCH { say "catched"; OUTER::DYNAMIC<$!> = Nil } }; say $! | 18:14 | |
camelia | rakudo 334036: OUTPUT«catchedCannot modify an immutable value in sub infix:<=> at src/gen/CORE.setting:14966 in block at src/gen/CORE.setting:2137 in block at /tmp/uqBrUoxQHd:1 in block at /tmp/uqBrUoxQHd:1» | ||
FROGGS | r: try { die "huhu"; CATCH { say "catched"; OUTER::DYNAMIC::<$!> = Nil } }; say $! | ||
camelia | rakudo 334036: OUTPUT«catchedhuhu in block at /tmp/Bw4pNKBaQ9:1» | ||
timotimo | oh my. it seems like i have to make sure i don't p6store a !rw thing into a container or something | ||
masak | r: try { die "huhu"; CATCH { default { say "unset!" } } }; say "alive" | 18:17 | |
camelia | rakudo 334036: OUTPUT«unset!alive» | ||
masak | FROGGS: this? | ||
18:17
raiph joined,
rafl left
|
|||
FROGGS | r: try { die "huhu"; CATCH { default { say "unset!" } } }; say "alive $!" | 18:17 | |
camelia | rakudo 334036: OUTPUT«unset!alive huhu» | ||
masak | ah. | ||
FROGGS | masak: no, $! should be unset | ||
masak | hrm. | 18:18 | |
r: try { die "huhu"; CATCH { default { $! = "nah" } } }; say $! | |||
camelia | rakudo 334036: OUTPUT«huhu in block at /tmp/VFtawR5inf:1» | ||
masak | weird. | 18:19 | |
FROGGS | yeah | ||
masak | r: try { die "huhu"; CATCH { default { $_ = "nah" } } }; say $! | ||
camelia | rakudo 334036: OUTPUT«Cannot modify an immutable value in block at /tmp/Ks5PWeJxmi:1 in block at /tmp/Ks5PWeJxmi:1» | ||
FROGGS | I need it to mimik Perl 5's chop/chomp | ||
timotimo | oh. well, crap. | 18:20 | |
my $a; my $b = sub($arg) { $a := $arg }; my $val = 42; $b($val); dies_ok { $a = 23 }, "bound ro sub param remains readonly"; | 18:21 | ||
how am i supposed to rely on the descriptor if it can be changed just like that :| | |||
can i check for readwriteness at optimize time *at all*, *ever*? | |||
FROGGS | timotimo: I can't help you there :/ | 18:22 | |
timotimo | the only way to make this safer is to look everywhere that reaches the var i'm currently looking at and see if any binding goes on either directly or indirectly. great :| | ||
well, afk for a bit first. maybe jnthn has an idea when he returns from nomming | |||
18:25
rafl joined
|
|||
FROGGS | r: $! = 42; try { temp $!; die "huhu"; CATCH { default { 1; } } }; say $! # *narf* | 18:25 | |
camelia | rakudo 334036: OUTPUT«42» | ||
FROGGS | n: $! = 42; try { temp $!; die "huhu"; CATCH { default { 1; } } }; say $! # *narf* | 18:26 | |
camelia | niecza v24-88-g1f87209: OUTPUT«Unhandled exception: Writing to readonly scalar at /tmp/GJRlu4FVFW line 1 (mainline @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 4579 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4580 (module-CORE @ 576)  at /home/p6eval/niecza/li… | ||
FROGGS | n: try { temp $!; die "huhu"; CATCH { default { 1; } } }; say $! # *narf* | ||
camelia | niecza v24-88-g1f87209: OUTPUT«Internal error in exception dispatch: Writing to readonly scalar at <unknown> line 0 (KERNEL Scalar.TEMP @ 0)  at <unknown> line 0 (ExitRunloop @ 0) » | ||
FROGGS | n: try { die "huhu"; CATCH { default { 1; } } }; say $! # *narf* | ||
camelia | niecza v24-88-g1f87209: OUTPUT«huhu» | 18:27 | |
FROGGS | w/e | ||
18:30
domidumont left
|
|||
FROGGS | jnthn / lizmat: did I got it right that we might want to avoid unicode chars in the nqp/rakudo codebase? | 18:31 | |
dalek | rl6-roast-data: 5280008 | coke++ | / (5 files): today (automated commit) |
18:32 | |
[Coke] | FROGGS: yes, please. | ||
FROGGS | [Coke]: that cover « and » too | 18:33 | |
covers* | |||
[Coke] | ... dunno if latin1 is safe. | ||
^^^^ jvm percentage is dropping slightly. | |||
18:33
domidumont joined
|
|||
FROGGS | dunno about safe, but it is a matter of speed as I understand it | 18:33 | |
18:34
crab2313 joined
18:36
benabik joined
|
|||
jnthn | FROGGS: Yeah, though I think latin-1 is fine. | 18:41 | |
*chars in latin-1 | |||
FROGGS | k | ||
timotimo | i suppose if i only fire my optimisation if the lhs of the p6store has :decl, it could be safe from the binding problem | 18:43 | |
but then it won't give much optimization any more | 18:44 | ||
[Coke] | FROGGS: yes, speed impact is what I meant by safe. | 18:45 | |
18:45
Ben_Goldberg left
|
|||
timotimo | jnthn: can i ask you for guidance later for implementing p6storeunchecked on the jvm? i'm guessing it'll not be more than copypasting one to five lines from p6store, but i don't know what most of the checks entail and which are safe to remove | 18:46 | |
18:47
ssutch left
18:52
rindolf left
|
|||
timotimo | really, timotimo? "!nqp::isnull($op[0].decl) is wrong, i need to check if the decl is 'var'. This should do nicely: 'nqp::isnull($op[0].decl) eq "var"'" >_> | 18:54 | |
jnthn | timotimo: Well, storeUnchecked is implemented in RakudoContainerSpec.java already, which is the thing that's doing the actual skipping | 18:55 | |
timotimo | oh, neat! | ||
jnthn | The op wants to look the same, just call spec.storeUnchecked, not store, afaict | 18:56 | |
18:56
crab2313 left
18:57
domidumont left,
domidumont joined
|
|||
timotimo | btw, all these CallSiteDescriptors are invokedynamic-related, yes? | 18:57 | |
jnthn | No | 18:59 | |
Invocation related though | |||
They describe the arguments | |||
timotimo | ok | ||
now my optimisation doesn't fire at all any more :( | 19:00 | ||
huh. shouldn't my Int $a = 5; result in a QAST::Var that has :decl set in addition to :scope<lexical>? | 19:01 | ||
huh. the vars that have the lexical declarations are all at the very top of the block | |||
19:02
arcterus joined
|
|||
timotimo | that's no good for my optimisation; it seems like i'll have to check for "bind" ops to the same lexical inside its scope and additionally do some barebones "escape analysis" | 19:02 | |
why did i ever think this would be easy? | |||
19:03
domidumont left
|
|||
jnthn | :decl is just 'var', no? | 19:04 | |
You're looking for p6store ops, then probably want to go look at the thing being assigned to if it's a QAST::Var, and find the container | |||
timotimo | in this case :decl is contvar, but the var with the decl is in the wrong place. | 19:05 | |
19:05
sqirrel joined
|
|||
jnthn | decls always go into the first QAST::Stmts node. | 19:05 | |
That's normal. | |||
But that's not where the assignment is | |||
timotimo | now i just have p6store for Var lexical $a, Var lexical $orig | 19:06 | |
jnthn | Right, that's all you need. | ||
You take the name $a, look in the symtable, and the hash you get back will probably contain a descriptor key | |||
timotimo | except when someone goes ahead and binds a read-only container to my var behind my back | ||
jnthn | That is the container descriptor. | ||
ah, rebinds... | |||
timotimo | that's how i do it now, but i get spectest fallout, i'll copypaste the explodin gcase now | ||
jnthn | Right. | 19:07 | |
timotimo | my $a; my $b = sub($arg) { $a := $arg }; my $val = 42; $b($val); dies_ok { $a = 23 }, "bound ro sub param remains readonly"; | ||
jnthn | Well, I've for a while expected the optimizer to start collecting "facts" about variables and parameters as it goes | ||
timotimo | yes, that would be at the very least necessary | ||
did you stop expecting that? or is "for a while" a start point + duration, rather than start point + duration + end point? | 19:08 | ||
jnthn | So really it's a case of pushing the optimizations we can probably do onto a list somewhere, and then at the end of analyzing the block, check that the optimization wasn't "poisoned" | ||
No, I still expected it. :) | |||
*expect | |||
I just didn't get around to it :) | |||
timotimo | :D | ||
jnthn | Seeing a bind to a variable counts as poisoning this particular opt, for example | ||
timotimo | in this case it would even be possible to do it and hold a reference to the op we changed and the var it depends on and then reverting that as soon as we hit a bind | ||
jnthn | I suspect there's a neat way to factor it. | ||
That feels icky | |||
timotimo | right, i'll avoid that then | 19:09 | |
jnthn | I'd prefer to record what we can do and do it when we know it's safe, ratehr than speculatively do stuff, in this case. | ||
The trick to keeping optimizers sane is always knowing when you're doing analysis and when you're doing transformation, and not muddling the two. | |||
timotimo | one question that remains is how to keep these facts around throughout compilation; if i put my $a into a MysteryFunctionFromOuterSetting, how do i remember wether that's safe or not? | ||
oh, hold on, i don't think that applies here, does it? | 19:10 | ||
i mean i can't pass a variable to a function that doesn't have lexical access and change its container through binding or some other witchcraft? | 19:11 | ||
jnthn | Not unless it's a contextual | 19:13 | |
timotimo | not quite sure what that means...? | 19:15 | |
jnthn | $*foo | 19:16 | |
timotimo | ah, yeah sure | ||
i should be able to tell by the :scope, right? | |||
jnthn | Yeah, I guess...should be contextual | ||
Though "is context" may be interesting | 19:17 | ||
Put it in as a level 3 opt while we assess it | |||
timotimo | i have it at 3, but the default is 3 at the moment anyway | ||
interestingly, $*orig is just as :decl(contvar) as $a and both are defined as lexical | |||
but the lookup is used with &DYNAMIC rather than a QAST::Var, so my optimisation would appear to be safe from that | 19:18 | ||
maybe while writing the analysis part of the poisoning process, it'll turn out that turning lexicals into locals will be a very low hanging fruit | |||
19:20
vk_ left
|
|||
timotimo | is that a "nice little optimization" or "a worthwhile optimization"? | 19:21 | |
jnthn | timotimo: The default is 3 for setting comp, the default for outside of that is 2 | 19:23 | |
timotimo: Note setting comp passes --optimize | |||
uh | |||
--optimize=3 | |||
Lexicals to locals needs more care | |||
It's do-able but things like pseudo-package use can spoil it | 19:24 | ||
timotimo | oh, ok | ||
19:25
PacoAir joined
|
|||
jnthn | So that needs to also "poison" | 19:25 | |
timotimo | pseudo-packages like OUTER etc? | ||
no, more likely CALLER | |||
jnthn | OUTER, yeah | ||
'cus that relies on the lexical stuff | |||
timotimo | that's easier to have poisoning for than other lexical stuff | ||
(eval will be interesting, too. probably just a blanket poison for everything if eval is encountered) | |||
jnthn | Right. | 19:26 | |
masak | timotimo: the formal definition of "strangely consistent" is something like this: given that infix:<~> joins strings, infix:<+> adds numbers, and prefix:<+> numifies, what's the operator that stringifies? it's prefix:<~>. why? because when that's the answer, it's strangely consistent. | 19:28 | |
there are consistencies that are even stranger than that, though. that particular consistency is fairly normal, as consistencies go. | |||
timotimo | bbl for now. | 19:29 | |
masak .oO( bbn for later ) | |||
dalek | p: 34ce310 | jnthn++ | src/vm/jvm/QAST/Compiler.nqp: Op inline info for JVM backend. Go with an opt-out approach, rather than the opt-in one on the Parrot backend, since that is overwhelmingly the right default. |
||
kudo/nom: e815354 | jnthn++ | src/vm/parrot/ops/perl6.ops: Improve an error, less op variants. |
19:30 | ||
kudo/nom: fe419d2 | jnthn++ | src/ (5 files): Get optimizer inlining working on JVM backend. This also fixes an oops-looking-at-invalid-memory bug that could take place on the Parrot backend post-inline. |
|||
19:31
PacoAir left
|
|||
jnthn | OK, that's that done... :) | 19:34 | |
19:34
araujo joined,
araujo left,
araujo joined
|
|||
lue thinks the bitwise ops are a possible extension to that definition of strangely consistent | 19:36 | ||
masak | oh! another good strange consistency: given that infix:<< <=> >> does numeric comparison, what operator does string comparison. why, infix:<leg>, of course. | ||
lue: yes, I'd say so. | |||
timotimo | jnthn, please suggest a good datastructure for the poisoning, especially since itneeds to mirror the block stack/lexpad | 19:38 | |
maybe the infovcould actually be saved there? does that make sense? is the @BLOCKS listbgoing to be serialist orvsomething likevthat? | 19:39 | ||
wow this keyboard is difficult | 19:40 | ||
i am not sure i see the strangeness in leg and <=> | 19:41 | ||
or in pre/infix + and ~ | 19:42 | ||
19:42
arcterus left
|
|||
timotimo | my interpretation of strange seems to include "surprising in a bad way" or something | 19:42 | |
jnthn | timotimo: Do we already have a notion of "curent block information"? | 19:44 | |
timotimo | i did not see anything obvious in that vein, no | ||
19:45
arcterus joined
|
|||
jnthn | OK, I suggest something a bit like that, where each points to its outer | 19:45 | |
timotimo | ah because we may need to follow BVal often | 19:46 | |
how do we properly go from a bval to ts dataset? cuid? | |||
jnthn | You don't need to follow BVal, I don't think | ||
That doesn't imply anything about lexical nesting | |||
timotimo | well if i call a block i need to know if it users eval or CALLER | 19:47 | |
or is that done by looking for op:call with a name into the lexpad instead? | 19:48 | ||
in that case do i get the block object that has the poison information another way? | 19:49 | ||
oh another stumbling block in that case will be multis and methods... | 19:50 | ||
19:52
sqirrel left
|
|||
jnthn | timotimo: You can't determine anything statically about CALLER | 19:52 | |
timotimo: The point is you don't need to though. | |||
timotimo | i am ni longer convinced i can get this to work properly without tremendous amounts of assistance | 19:53 | |
jnthn | The caller could be in another compilation unit. Or late bound. | ||
timotimo | bbl | ||
19:53
dmol left
19:54
vk_ joined,
dmol joined
19:58
zby_home left
|
|||
dalek | p: 1c9a894 | (Tobias Leich)++ | src/QAST/Node.nqp: strip non-latin1 chars |
20:00 | |
kudo/nom: 89216fa | (Tobias Leich)++ | src/Perl6/Pod.nqp: strip non-latin1 chars |
20:01 | ||
20:02
kaare_ left
|
|||
timotimo | i thought using CALLER should poison | 20:05 | |
jnthn | Hm | 20:06 | |
I don't know it needs to poison lexical demotion though. | |||
Because anything that is not $*foo or declared with the "is dynamic" trait should not be accessible via CALLER today anyway. | |||
colomon | tadzik: MuEvent started failing overnight? | ||
yoleaux | 05:13Z <lizmat> colomon: I started integrating Set/Bag changes from Niecza, but am now blocking on naming special operators like ⊆,∈,∋,∪ to texan. Suggestions? | ||
timotimo | ah, ok | 20:07 | |
dalek | kudo/nom: 156de3b | moritz++ | src/ (2 files): Inlcude file name after the SORRY line that way bulk messages (like for missing subroutines) get the file name exactly once (not 0 times as before, and not repeated for every occurrence either) |
20:09 | |
colomon | lizmat: those all have existing texan identities … usually the next thing in the file in the Niecza version. I think rakudo already supports all of these? something like (<=), (elem), (cont), and (|) for those particular examples./ | 20:10 | |
20:12
konundra left
|
|||
tadzik | colomon: not my fault :) | 20:12 | |
20:12
konundra joined
|
|||
colomon | tadzik: I certainly never said it was! Just wanted to make sure you knew. :) | 20:13 | |
jnthn | timotimo: feel free to kick off a bench run, btw | 20:15 | |
timotimo | ah, yes, indeed | ||
inlining \o/ | |||
20:17
arcterus left
20:23
colomon left
|
|||
FROGGS | jnthn: btw « is stored as C2 AB instead of AB... is it still okay then? | 20:25 | |
jnthn | FROGGS: The important thing is that it can be transcoded to something fixed width, which latin-1 is | ||
FROGGS | k | ||
20:26
cognominal left
|
|||
lizmat | skimming backlog: FROGGS, yes, please no non-ascii: stage parse at 3384 seconds (rather than 3400) with non-ascii char at end of setting | 20:26 | |
this is probably noise, so it doesn't matter | 20:27 | ||
jnthn | lizmat: Note that anything in latin-1 is OK | ||
lizmat | colomon: I figured as much, will look at this later tonight / tomorrow | ||
afk again& | |||
20:27
cognominal joined
|
|||
woolfy | lizmat: you're still here :-) | 20:29 | |
FROGGS | *g* | 20:30 | |
masak | woolfy! \o/ | 20:31 | |
FROGGS | .u ø | ||
yoleaux | U+00F8 LATIN SMALL LETTER O WITH STROKE [Ll] (ø) | ||
lizmat | .oO( woolfy is demoing IRC to a friend of ours ) |
||
20:33
BenGoldberg joined
|
|||
FROGGS | I think there are no other non-latin chars left | 20:35 | |
20:36
colomon joined
|
|||
timotimo | irc is truly a marvel of modern engineerspersonship | 20:37 | |
20:37
Mouq joined
|
|||
Mouq | Hey #perl6 | 20:39 | |
What does $(1,2,(9,10)) mean? | |||
So, for example, if I create a Parcel ((1,2,(9,10))=>"hiding",5), I access it with .[0].{$(1,2,(9,10))} | 20:40 | ||
I don't know why anyone would find this useful, of course | 20:41 | ||
Well, actually... | 20:42 | ||
jnthn | $(...) is the same as (...).item | 20:43 | |
Mouq | Oh! Okay, cool. Thank you | 20:44 | |
jnthn | Note that @(...) is the same as (...).list, and same for % and .hash | 20:45 | |
Mouq | So it's forcing a context | ||
jnthn | Yes | 20:46 | |
Mouq | Cool | ||
timotimo | this is taking me a bit longer than it should ... | 20:48 | |
jnthn | timotimo: The optimizer thing? | ||
timotimo | no, getting the benchmark up | 20:49 | |
jnthn | oh :) | ||
Was gonna say, you shouldn't feel bad about optimizer hacking taking a while :) | |||
timotimo | now i'm starting it | 20:50 | |
20:54
ssutch joined
|
|||
timotimo | well, i'm starting the newest build at least | 20:54 | |
lizmat | hmmm… quite a few spectests are failing for parakudo atm | 20:56 | |
$ perl6 t/spec/S02-literals/string-interpolation.t | |||
use of uninitialized value of type Any in string context in any at src/Perl6/Grammar.nqp:933 | |||
===SORRY!=== Error while compiling t/spec/S02-literals/string-interpolation.t | |||
Leading 0 does not indicate octal in Perl 6; please use 0o1 if you mean that | |||
20:57
konundra left
|
|||
lizmat | all test failures seem to be like that: although the subtests seem to pass | 20:57 | |
hmm.. could it be that warnings all of a sudden became fatal ? | 20:58 | ||
timotimo | need to leave my workspace for a bit | 20:59 | |
lizmat | r: sub f ($x is copy) { my $x } | 21:00 | |
camelia | rakudo 89216f: OUTPUT«Potential difficulties: Redeclaration of symbol $x at /tmp/a2Efi2HMHw:1 ------> sub f ($x is copy) { my $x ⏏}» | ||
lizmat | in HEAD this has become: | ||
===SORRY!=== Error while compiling -e | |||
Redeclaration of symbol $x | |||
jnthn | lizmat: Maybe a consequence of the recent moritz++ patch? | ||
lizmat | feels like it | 21:01 | |
although looking at the diff, it doesn't seem to be | 21:02 | ||
jnthn | lizmat: fwiw, fe419d2 I spsectested on Parrot and it didn't seem problematic. So it's probably between that and HEAD. | 21:05 | |
lizmat | making / spectesting without moritz's patch | ||
yup, it's moritz's patch | 21:10 | ||
21:11
benabik left
|
|||
timotimo | 10/43: Testing while_push | 21:12 | |
21:13
vk_ left,
skids left
21:17
konundra joined
|
|||
timotimo | these benchmarks take soooo looooong | 21:22 | |
21:24
btyler_ joined,
dmol left
21:27
atrodo left,
btyler left
21:29
kingbeast joined
21:30
atrodo joined
21:34
xinming left
21:36
xinming joined
|
|||
timotimo | 19/43: Testing for_assign ... | 21:36 | |
masak | heh. I still find wanradt's question kinda backwards in gist.github.com/masak/5768668 | 21:38 | |
"have you considered using Perl 5 instead?" -- no, I guess I didn't consider that. | |||
tadzik | I don't suppose $remaining_time.Int works in Perl 5 | 21:42 | |
timotimo | you could have used - in identifiers | ||
that's not in perl5, right? | |||
masak | :P | 21:43 | |
dalek | kudo/use-from-java: 1d8f4d7 | jnthn++ | src/Perl6/Grammar.nqp: Start processing use more smartly. This handles it through the usual longname parser, meaning we now can pick out the name itself from any colonpairs. |
||
kudo/use-from-java: 1dbc3d8 | jnthn++ | src/Perl6/ (4 files): Pass use/need colonpairs to module loader. This also catches any use of :from<...> and complains for now; this is the hook where :from<jvm> support will go. |
|||
perigrin | tadzik: using MooseX::Types it works but it doesn't do what you'd expect or want :) | 21:45 | |
jnthn | lizmat: Above will help when ver/auth stuff is reached also :) | 21:46 | |
timotimo | \o/ | ||
lizmat | I was looking at it and pleasantly surprised :-) | ||
dalek | kudo/nom: df814a2 | (Elizabeth Mattijsen)++ | src/core/Exception.pm: Fixes spectests that were broken by 156de3be59136b3b75f4eb51c7ee1697667a5cfe |
||
FROGGS | hmmm, my version was just a bit more verbose compared to jnthn++'s :o) | 21:47 | |
lizmat | moritz: seems you fatalized a lot of warnings | ||
fixed this by: | 21:48 | ||
-my class X::Comp::Group does X::Comp { | |||
+my class X::Comp::Group is Exception { | |||
which was the original state before your patch | |||
not sure whether it is the right thing to do, but it fixes the spectests | 21:49 | ||
jnthn | lizmat: Yeah, doing it 'cus I want some basic use foo:from<java>; support for my JVM talk at YAPC::Eu | 21:50 | |
lizmat | :) | 21:51 | |
.tell moritz please check df814a2, it was needed to fix many spectests, but fear it is not the solution you had in mind | 21:56 | ||
yoleaux | lizmat: I'll pass your message to moritz. | ||
lizmat | on that thought, I call it a night: more early tomorrow | 21:57 | |
sleep& | |||
jnthn | 'night, lizmat++ | 21:58 | |
22:00
zwut00 left
|
|||
slava | where is YAPC:Eu? | 22:03 | |
I'll look it up, nvm | |||
jnthn | Kyiv | ||
slava | ooh, maybe I should go | ||
stop by in my home town, too | 22:04 | ||
jnthn | There's a Perl 6 hackathon on Sun, then talks Mon-Wed. :) | ||
timotimo | is it already on the upcoming weekend? | 22:08 | |
tadzik | yep | ||
timotimo | oh my | ||
after learning about the nonexistence of the exam directly adjacent to that event, maybe i should have reconsidered and tried to get there | 22:10 | ||
a bit late now | |||
22:12
FROGGS left
|
|||
timotimo | 39/43: Testing visit_2d_indices_cross ... | 22:20 | |
not long now | |||
22:22
spider-mario left
|
|||
timotimo | 39/43: Testing visit_2d_indices_cross ... | 22:23 | |
java.lang.StackOverflowError | |||
should that be the error mode? o_O | |||
jnthn | gather/take can sometimes fail in that way | ||
timotimo | all right | 22:27 | |
yay benchmark run done. let me whip up some graphs | |||
t.h8.lv/p6bench/after-jvm-inline.html - here we go | 22:30 | ||
wow, not bad in some of them! | |||
jnthn looks | 22:31 | ||
timotimo | 156de3b is the new one fwiw | ||
tadzik | wow | 22:32 | |
an order of magnitude here and there | |||
22:35
btyler_ left
|
|||
diakopter | what does while empty look like | 22:35 | |
can you paste the source of the tests? | |||
jnthn | diakopter: They're all in the perl6-bench repo, fwiw | ||
tadzik | timotimo: maybe it's not too late | 22:36 | |
timotimo | er, some are a bit changed up | ||
tadzik | I bought the conf ticket yesterday, booked the hotel yesterday... | ||
timotimo | i'm definitely not spontaneous enough | ||
;) | |||
tadzik | not with that attitude! :) | 22:37 | |
timotimo | yup | ||
diakopter | which perl6-bench repo | ||
timotimo | hold on, i'll push up my local dirty changes | 22:38 | |
diakopter | you so dirty | ||
timotimo | github.com/timo/perl6-bench/tree/latest-stuff in the microbenchmarks.pl file | 22:39 | |
feel very free to contribute changes and/or new micro or macrobenchmarks | 22:41 | ||
diakopter | japhb said he was being very careful not to microoptimize individual tests for each language | 22:42 | |
but to keep the look as close as possible instead | |||
timotimo | ah | ||
well, in some cases there was pathologicality introduced ... or something | |||
i think most of the 1s are no longer necessary | |||
diakopter | I thought () allocated | 22:43 | |
wouldn't a 1 be faster? | |||
slava | jnthn: I just told someone that you are working on rakudo-jvm :) | ||
the thought of using perl6 instead of javascript (rhino) appealed to them greatly | 22:44 | ||
timotimo | the point was hat nested for loops used to create ridiculous amounts of list elements | ||
japhb_ | Anyone happen to remember the name of the project to use the ipython notebook protocol to talk to Rakudo? (Or even better, knows the status?) | 22:45 | |
diakopter | .oO( someone must be using python... ) |
22:46 | |
japhb: timotimo | |||
github.com/timo/iperl6kernel | |||
22:48
kingbeast left
|
|||
timotimo | i did, yes. it's very far from usable, though | 22:48 | |
got blocked somewhat by zeromq and lack of threading | |||
dalek | kudo/use-from-java: e40c9bc | jnthn++ | src/Perl6/ModuleLoader.nqp: Add a mechanism to register :from loaders. |
22:51 | |
kudo/use-from-java: 42c2152 | jnthn++ | src/Perl6/ (2 files): Refactor to make alternative loaders easier. This relaxes what is returned to just be something hash-ish, not a full-blown context. |
|||
kudo/use-from-java: d3b14a7 | jnthn++ | / (2 files): Very basic :from<java> support. The objects are decidedly lacking in sugar so far, not to mention the marshalling of Perl 6 types will need a lot of work. But you can do: use java::lang::System:from<java>; say System.currentTimeMillis(); And it works. |
22:52 | ||
lee_ | wow, cool | 22:56 | |
22:57
btyler joined
|
|||
colomon | \o/ | 22:58 | |
diakopter | jnthn: so it follows the "import" semantics of Java? | 23:01 | |
jnthn | diakopter: apparently :) | ||
diakopter | heh. | 23:02 | |
if someone has a couple hours, feel free to volunteer to help me set up rakudo-jvm on a new evalbot host | |||
23:03
takesako_______ joined,
Bucciarati joined,
segomos joined,
nwc10 joined
23:04
dagurval joined,
Hor|zon joined,
szbalint joined,
avuserow joined
|
|||
masak | 'night, #perl6 | 23:05 | |
diakopter | 0/ | 23:06 | |
23:06
FOAD left,
FOAD joined
23:27
leont left
|
|||
timotimo | i'm kind of saddened that our rc-forest-fire isn't running anywhere near fast enough for the benchmark framework to even consider a second run ... | 23:29 | |
23:30
skids joined
|
|||
japhb_ | timotimo, agreed, definitely. :-( | 23:42 | |
diakopter, Well, I have to use Python anyway, I figured I might as well enjoy tab completion in my Perl 6 REPL ... | 23:43 | ||
timotimo | ipython is darn excellent. | 23:44 | |
japhb_ | timotimo: Wiill zeromq and threading still be a problem when use-from-java is merged, assuming I can otherwise use rakudo-jvm? | ||
23:46
Rotwang joined
|
|||
timotimo | dunno. i'd personally hope for something more like zavolaj-on-jvm or something to get zmq | 23:46 | |
japhb_ | I had to modify the parameters for rc-forest-fire several times to even get any useful data out (at first it would generate and display the first frame and already be over enough_time) | ||
timotimo | ipython has a requirement for a server to listen and respond to pings regularly, otherwise the frontend will shut down | ||
23:47
btyler left
|
|||
japhb_ | nodnod | 23:47 | |
timotimo | if you don't have that in a thread, you're dooooooomed | ||
japhb_ | nodnod | 23:48 | |
timotimo | did you see my last results? | ||
japhb_ | Not yet, no. Link? | 23:52 | |
timotimo | t.h8.lv/p6bench/after-jvm-inline.html | 23:54 | |
jnthn gave our jvm port support for compile-time inlining of subs and such |