»ö« 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:06
raiph left,
btyler joined
00:09
TeaserASA joined
00:12
Psyche^ left
00:13
raiph joined
|
|||
lue | grondilu: that won't work for S26. | 00:13 | |
00:14
sftp joined
|
|||
grondilu | Indeed. I don't read it often anyway. When I do I just read it in Vim. | 00:15 | |
00:18
Psyche^ joined
|
|||
lue | .oO(That's surprising. I was just reading about conspiracy theories, and clicked on a link to a high-res picture of the face on Mars. I got redirected to notice.usa.gov) |
00:18 | |
grondilu | my 02:15 comment sounds so much like a meme, I can't resist: memecrunch.com/meme/SKM2/pod2man-ca.../image.png | 00:20 | |
rjbs- | grondilu: dork :) | 00:21 | |
lue | Vim is good. If you're stranded on a deserted island without a GUI or gnu in sight. Then it's passable :) . | 00:25 | |
diakopter | bwahaha. | 00:27 | |
grondilu | lue: what editor do you use? | ||
grondilu installed padre but couldn't get used to it. | 00:28 | ||
diakopter | Notepad++, thanks for asking :) | ||
grondilu | that windows stuff :/ | 00:29 | |
lue | Editor MACroS | ||
grondilu | emacs is too heavy, imho. And the name is longer. | ||
lue | I personally could never get into vim (although it is the best editor I have for quick in-terminal file edits). If this IRC client were Vim, I'd have to remember to press 'r' for RESPOND MODE, for instance :) | 00:31 | |
00:32
Oflameo left
|
|||
grondilu | Well, Vi is a text editor. It has no ambition to be used as a IRC client. | 00:32 | |
lue | Also what may help you understand my viewpoint is that I think the Space Cadet keyboard looks Unbelievably Awesome™ :) | ||
grondilu: I know. I was making a joke about how I have to explicitly enter a mode before doing what the program's designed to do (in Vi's case, INSERT MODE) | 00:33 | ||
[ and I've been sure to have judicious use of smileys to keep my words from sparking a Holy War :) ] | 00:34 | ||
00:34
ivanshmakov left
00:35
ivanshmakov joined
|
|||
grondilu | I think at some point we get so used to using our prefered editor, that the idea of using any other one seems absurd. To me for instance pressing 'i' or 'o' to enter insert mode is completely natural. | 00:35 | |
lue | Yeah. Like I said, I do use vim for quick in-terminal edits [ principally when the edit isn't worth the small effort to switch to my emacs window :) ], but I suppose I like emacs enough now that I feel no need to learn vim much. | 00:37 | |
I will say though: vim has far better Perl 6 support at the moment. /me should get back to his perl6-mode for emacs sometime. | |||
grondilu | what kind of support, apart from syntax hilighting? | 00:38 | |
(which doesn't even work so well, at least for long files) | 00:39 | ||
lue | The syntax hilighting :) . cperl-mode, the only mode aside from mine offering any kind of support for Perl 6, is utter crap. (I've somehow broken it to the point where typing an OPENING BRACE causes a lisp error :| . Perhaps it was always broken, but I didn't notice before making ELisp errors fatal) | 00:40 | |
Also: typing \s+ in your regex code somehow is interpreted as starting a subst pattern, and breaks highlighting there. | |||
grondilu | can't emacs read a vim syntax file? | 00:41 | |
lue | (I could go on, but it's been a while since I've willingly subjected myself to CPerl.) My point is, the vi hilighter isn't perfect (far from), but at least from my POV it's better. | ||
geekosaur | cperl-mode has always been narsty | 00:42 | |
handy when it works, but narsty | |||
00:42
sftp left
|
|||
lue | grondilu: I'd be surprised if no-one's coded a vi-hilighter for emacs yet. I haven't really looked though. | 00:42 | |
Again, I should pick up my perl6-mode again, and get it doing more. | |||
00:42
c1sung left
00:43
c1sung joined
|
|||
grondilu | what would be nice would be a perl6-capable ctags. | 00:43 | |
Though I understand that would be tough. | |||
00:43
sftp joined
|
|||
lue | geekosaur: I believe once, while going through the shipped elisp, I found what I think was a "convert code to webpage with hilighting" file. There was a specific piece of code in there to work around CPerl because it apparently gets stubborn about its custom colors. | 00:43 | |
geekosaur | it kinda has to | 00:44 | |
lue | (also: use of non-standard colors to highlight non-essential distinctions. IMO there's no need to highlight an @array different from a %hash or $scalar.) | ||
If you can't tell, I'm kinda done with CPerl as something that's "good". :) | 00:45 | ||
geekosaur | (what is actually happening is that emacs' font lock support is ridiculously inadequate for Perl, so it does it all itself. which means that other stuff that expects to be able to hook emacs' font lock mechanisms generally fails with it, because it doesn't bother with the hooks.) | 00:46 | |
lue | .oO(Sure, I could let Lisp errors be non-fatal like before, and then have CPerl not die when invoking -electric- functions, but I shouldn't have to.) |
||
I've yet to get to the part coding my p6-mode where I've run into problems with font-lock (except embedded comments. Those definitely have to be outside the realm of provided font-lock stuff). | 00:47 | ||
Sometimes when I think about my mode again, I realize that it'd be easier if I could just parse the source file with Perl 6 :) | 00:48 | ||
colomon | ;) | ||
lue | (esp. with how Perl 6 has a few "sub"-languages: pod, Regex, Q, etc.) | ||
Any situation involving the entire selection of Unicode brackets will be Pure Fun® when I eventually get to it. (My first naïve attempt at a p6-mode focused on correctly parsing and highlighting embedded comments, by way of keeping a hard-coded list of all open/close pairs possible. It should surprise no-one that this initial attempt caused emacs to lag :P) | 00:52 | ||
lue & | 00:54 | ||
01:24
benabik joined
01:26
stephenwan joined
01:33
raiph left
01:42
Vlavv` left
|
|||
Mouq | r: say [1,2,3].combinations | 01:43 | |
camelia | rakudo a10341: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in method combinations at src/gen/CORE.setting:7869 in block at /tmp/46tStGAs5U:1» | ||
Mouq | Shouldn't combinations and permutations default to *-1? | 01:44 | |
Well, *ought't? | |||
01:44
FROGGS_ joined
01:48
FROGGS left
|
|||
dalek | rl6-roast-data: 0019802 | coke++ | / (5 files): today (automated commit) |
01:49 | |
01:54
Vlavv` joined
|
|||
dalek | p: c0c8267 | coke++ | t/docs/opcodes.t: test for parrot opcodes Improve test for finding documented opcodes |
01:55 | |
p: 2b99f92 | coke++ | docs/ops.markdown: fix formatting. Mark async opcode as experimental |
|||
Mouq | [Coke]++ # moar documentation | 01:59 | |
01:59
Vlavv` left
02:00
Vlavv` joined
|
|||
lue | Mouq: I'd say that's a reasonable default. | 02:24 | |
Mouq | r: say <4 5 6>[] | 02:26 | |
camelia | rakudo a10341: OUTPUT«4 5 6» | ||
02:28
prevost joined
|
|||
dalek | p: 65cb592 | coke++ | docs/ops.markdown: doc some file opcodes |
02:33 | |
02:40
fridim_ left
02:48
grondilu left
03:02
preflex left
03:05
preflex joined,
ChanServ sets mode: +v preflex
|
|||
BenGoldberg | All this opcode documentation... how much of it could be autogenerated? | 03:06 | |
03:06
TeaserASA left
|
|||
BenGoldberg | Obviously not the text, but all of the argument variations which have the same base name... | 03:07 | |
Mouq | BenGoldberg: see t/docs/opcodes.t : I'm guessing the argument variations wouldn't be too much of a stretch… | 03:17 | |
BenGoldberg | :) Right... so why not write a program which looks at the docs, finds where in them there's a list of argument variations, looks at the code, makes a list of actual implemented argument variations, and supplements the list in the docs with any that are in the code but unmentioned in the docs. | 03:21 | |
Mouq | BenGoldberg: Well volunteered! :) | 03:22 | |
BenGoldberg | erm... | 03:24 | |
Mouq | Heh ;) | 03:25 | |
BenGoldberg | I don't understand perl6 (or nqp) well enough to do it. | 03:28 | |
I'm happy enough to try to find bugs... | 03:33 | ||
rn: my @foo := gather {}[0]; say @foo; | |||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«(Any)» | ||
..rakudo a10341: OUTPUT«Type check failed in binding; expected 'Positional' but got 'Any' in block at /tmp/ydICRHOCKb:1» | |||
03:35
berekuk joined
03:38
raiph joined
03:47
berekuk left
03:53
gattschardo left
03:55
gattschardo joined
04:01
preflex left,
preflex joined,
ChanServ sets mode: +v preflex
|
|||
Mouq | "Could not find sub cuid_325_1380772919.56994" -- my favorite kind of error message | 04:03 | |
TimToady | the default for combinations is 0..* (autostopping on the size of the list) | 04:09 | |
04:09
BenGoldberg left
|
|||
TimToady | so <a b c>.combinations starts with () and ends with ('a','b','c') | 04:10 | |
04:13
prevost left
|
|||
Mouq | r: <a b c>.list.combinations.say # ... | 04:16 | |
camelia | rakudo a10341: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in method combinations at src/gen/CORE.setting:7869 in block at /tmp/_NVB1FZPKL:1» | ||
Mouq | (checking) | ||
*was checking. Currently trying to bend NQP to my will | 04:17 | ||
TimToady | anyway, default is documented at S32/Containers:616 | 04:23 | |
lue wonders if synopsebot will respond to S32::Containers:616 | 04:26 | ||
Mouq | S32:616(Containers) | ||
synopsebot | Link: perlcabal.org/syn/S32.html#line_616 | ||
Mouq | idk | 04:27 | |
diakopter | Mouq++ | ||
wb Syno Psebot | 04:28 | ||
lue | diakopter: nope, almost though | ||
TimToady | that seems wrongish though | ||
lue | (S32.html !~~ defined) | ||
diakopter | S99999999999999:9999999999999 | ||
synopsebot | Link: perlcabal.org/syn/S99999999999999.h...9999999999 | ||
diakopter | .oO( that's quite a few synopse's |
04:29 | |
) | |||
04:29
xinming joined
|
|||
lue | wait, why does permutations not accept any arguments? I could swear nPr was an infix operator... | 04:30 | |
04:30
eiro left
|
|||
lue | (not that nPr is what .permutations does, but still. What if I just want all possible 3-element lists of 0..9, respecting order?) | 04:34 | |
04:35
rindolf joined
04:37
eiro joined
|
|||
dalek | p/proto-inner: 33fe530 | Mouq++ | src/QRegex/P6Regex/Grammar.nqp: Update obsolete proto-regex syntax in P6Regex ( If anything should be up-to-date on S05… ) |
04:40 | |
p/proto-inner: 26c85b4 | Mouq++ | src/ (3 files): Non-functional sketch of proto regex with pre- and post- matches I.e., proto rule foo { 'bar' {*} 'baz' } as per S05:1330 Builds and doesn't break anything |
|||
synopsebot | Link: perlcabal.org/syn/S05.html#line_1330 | ||
Mouq | Someone can definitely take that and work on it. | 04:41 | |
I need to go to bed | |||
'night #perl6++ | |||
lue | good ♞ then Mouq o/ | ||
04:51
rindolf left
04:52
Mouq left
05:05
berekuk joined,
btyler left
05:18
rindolf joined
05:29
FROGGS_ left
05:31
rindolf left,
rindolf joined
06:02
rindolf left
06:09
aindilis joined
06:11
SamuraiJack_ joined
06:17
clkao joined
06:21
iSlug joined
06:24
[Sno] left
06:26
clkao left
06:27
[Sno] joined,
[Sno] left
06:32
kaleem joined
06:37
[Sno] joined
06:41
dmol joined
06:47
ssutch left
06:48
ssutch joined
07:02
raiph left
07:04
zakharyas joined
07:10
FROGGS joined
|
|||
sjn | arnsholt: hey, I hoped to see you at Oslo.pm yesterday; talk about Perl6 @ uio | 07:12 | |
07:14
darutoko joined
|
|||
arnsholt | Yeah, had to do other stuff, unfortunately | 07:18 | |
sjn | arnsholt: let's continue in #oslo.pm; I have some news | 07:34 | |
07:35
fhelmberger joined
|
|||
jnthn | morning o/ | 07:41 | |
yoleaux | 04:31Z <diakopter> jnthn: interestingly, after optimization, only 0.04% of time is spent in the compunit loading... o_O | ||
FROGGS | morning | 07:42 | |
jnthn | Well, that's not much :) | ||
...depending on the context :) | |||
lizmat | good *, #perl6! | ||
07:43
iSlug left,
iSlug joined
|
|||
jnthn | FROGGS: Seems the remaining cursless failures are thanks to <?before ...> switches...afaict, anyway | 07:48 | |
FROGGS | yeah, I was fearing that... | ||
jnthn: mast/nom was merged in? | |||
master* | |||
jnthn | yeah | ||
Well, I've got merges locally of this stuff | 07:49 | ||
FROGGS | k, so I'll fix it so we get a clean spectest run | ||
jnthn | Well | ||
FROGGS | ahh, okay | ||
jnthn | I can maybe do it here also | ||
I'll push the NQP merge | |||
Then triage the Rakudo and bump it | |||
FROGGS | this must be applied again: github.com/rakudo/rakudo/commit/b9bebcca25 | ||
and there are two other <?[...]> which contain a hash-sign which must be tweaked I think | 07:50 | ||
it is a public holiday here today so I have enough time now to fix that | 07:51 | ||
lizmat | ah, Reunification Day ? | 07:52 | |
jnthn | ok, got for that | ||
dalek | Heuristic branch merge: pushed 16 commits to nqp by jnthn | ||
FROGGS | lizmat: and my grandmom's birthday :o) | 07:53 | |
lizmat | cool! must have been a great birthday gift for your grandmom 24 years ago! | 07:54 | |
FROGGS | well, she had seen much much worse times, so I'm not sure it was soo bad fer her in the GDR | 07:58 | |
she had a house and a garden so it was basically all what she needed | 07:59 | ||
jnthn: you are merging it to master? | 08:00 | ||
jnthn | FROGGS: I merged cursless in NQP into nqp/master | ||
FROGGS | k | 08:01 | |
jnthn | FROGGS: So now it's just Rakudo to triage | ||
dalek | rlito: b9edaad | (Flavio S. Glock)++ | / (6 files): Perlito5 - perl6 - create html/perlito5to6.html and "make build-5to6browser" |
08:03 | |
08:05
ssutch left
08:07
fglock joined
|
|||
fglock | I created a web page for the perl5-to-perl6 translator | 08:08 | |
this is very early code, it doesn't clean up extra parenthesis and there are bugs everywhere | |||
perlcabal.org/~fglock/perlito5to6.html | 08:09 | ||
08:09
ssutch joined
|
|||
FROGGS | fglock: how does that work? you are compiling to an ast and then generate perl6 code? | 08:10 | |
I can't imagine that this would work with QAST | 08:11 | ||
maybe you would take the match objects... | |||
fglock | yes, it is a normal compiler | ||
FROGGS | fglock: this is pretty awesome! | ||
fglock | the perl5 to perl6 compiler, compiled to javascript | 08:12 | |
hmm - $^O didn't interpolate correctly | 08:14 | ||
ah, no - it did | 08:15 | ||
it's a mix up of perl5 and perl6 - need more work :P | |||
FROGGS | r: say chr(15) | 08:16 | |
camelia | rakudo a10341: OUTPUT«» | ||
fglock | it is $^O = ${ chr(15) } = in perl6 $( chr(15) ) which doesn't make sense | 08:18 | |
08:21
Woodi joined
08:24
iSlug left
|
|||
FROGGS | p5eval: ${ chr(15) } | 08:27 | |
p5eval | FROGGS: linux | ||
FROGGS | interesting | ||
jnthn | wtf :) | ||
FROGGS | jnthn: we totally need that in perl 6 :P | 08:28 | |
jnthn | :P | ||
r: multi chr(15) { 'linux' }; say $(chr(15)) | 08:29 | ||
camelia | rakudo a10341: OUTPUT«linux» | ||
jnthn | Done. :P | ||
OK, so that unspace fix helped. Reduction meta-ops are busted now, though... | 08:30 | ||
FROGGS | /home/froggs/dev/rakudo/src/Perl6/Grammar.nqp:418: token spacey { <?[\s\#]> } | 08:31 | |
/home/froggs/dev/rakudo/src/Perl6/Grammar.nqp:451: \\ <?before <[\s\#]> > | |||
/home/froggs/dev/rakudo/src/Perl6/Grammar.nqp:4039: token escape:ws { \s+ [ <?[\#]> <.ws> ]? } | |||
not more than these should be wrong... | 08:32 | ||
I'd fix it too if you pushed to nom | |||
jnthn | hmm | ||
FROGGS | or to another branch | ||
jnthn | think I'll just merge nom into cursless and we can work on it there | ||
FROGGS | yeah, so I can do something :o) | 08:33 | |
jnthn | Wasn't expecting this much to fix... | ||
FROGGS | how many fails? | ||
or do you mean the merge? | |||
dalek | Heuristic branch merge: pushed 21 commits to rakudo/cursless by jnthn | 08:34 | |
jnthn | no, spectest | ||
FROGGS | k | 08:35 | |
dalek | kudo/cursless: 0029ea5 | jnthn++ | src/Perl6/Grammar.nqp: Undo before removal in unsp. |
||
jnthn | reduce is the bothersome one | ||
dalek | rlito: eae6843 | (Flavio Glock)++ | / (2 files): Perlito5 - perl6 - fix $^O variable |
08:36 | |
fglock | ... ' running in ' ~ ($?VM) | 08:37 | |
FROGGS | r: say $*OS # larry will kill me :P | ||
camelia | rakudo a10341: OUTPUT«linux» | ||
fglock | should it use $*OS ? I've got the $?VM from here - doc.perl6.org/language/variables#Sp...+Variables | 08:38 | |
08:38
REPLeffect joined
|
|||
fglock | I'll change | 08:39 | |
jnthn: multi chr(15) ... that could be used to build a compatibility layer :) | 08:40 | ||
dalek | rlito: 0d6f509 | (Flavio Glock)++ | / (2 files): Perlito5 - perl6 - fix $^O variable more |
08:43 | |
jnthn | FROGGS: Found the pattern in what's up, I think | 08:48 | |
FROGGS: <?[...]> with both a cclass thing and a enumcharlist thing get made into an altseq, which LTM ignores. | 08:49 | ||
FROGGS | yes, I think I had an issue with <?[\s\#]> | 08:50 | |
but I thought this was fixed... | |||
dalek | kudo/cursless: ecc836b | jnthn++ | src/Perl6/Grammar.nqp: Undo a before to cclass that busts LTM. |
08:51 | |
FROGGS | still need to wait for the spectest run... | ||
jnthn | FROGGS: It works | ||
But doesn't LTM properly | |||
FROGGS: Above fixes the reduce issue | |||
FROGGS | jnthn: awesome! | 08:52 | |
I would like to fix that in nqp then though... how can I check that something does LTM properly? | |||
jnthn | std: my @array; @array.min:{ $^a <=> $^b } | ||
camelia | std 4cde04e: OUTPUT«ok 00:00 44m» | ||
FROGGS | just an alternation with <?[...]> inside? | 08:53 | |
jnthn | rn: my @array = 5,-3,7,0,1,-9; say @array.min:{ $^a <=> $^b } | ||
camelia | rakudo a10341, niecza v24-95-ga6d4c5f: OUTPUT«-9» | ||
jnthn | That parses wrong now without a space after the : ... | 08:54 | |
08:55
yogan joined
|
|||
jnthn | ah, found it | 08:57 | |
FROGGS | token spacey { <?[\s#]> } ? | 08:58 | |
jnthn | no, the one in methodop | ||
FROGGS | <?[\s{]> | 08:59 | |
yeah | |||
I need a faster computer :o( | |||
there are a few other candidates... token infix:sym«!=» { <sym> <?[\s\]]> <O('%chaining')> } | |||
jnthn | I fixed taht one in the last commit | 09:00 | |
FROGGS | you pushed? | ||
... t/spec/S12... *sigh* | |||
jnthn | That one was in ecc836b yeah | 09:02 | |
FROGGS | ahh, I was thinking you are talking about the "candidate" | 09:03 | |
wait | |||
nvm | |||
jnthn | r: m-b- | ||
camelia | rakudo a10341: OUTPUT«Cannot call 'match'; none of these signatures match::(Cool:D : $target, *%adverbs) in method match at src/gen/CORE.setting:3370 in block at /tmp/Su_qsHJgPp:1» | ||
FROGGS | these might all be problematic: gist.github.com/FROGGS/80bc4940327cb6d395e7 | 09:05 | |
jnthn | no, there has to be a \s -like thing that compiles to cclass *AND* and enumcharlist thing in the same <?[...]> for it to be a problem | 09:06 | |
That's only true of spacey in that list | |||
ah, and the methodop one which I already caught here | 09:07 | ||
eeks | |||
std: m-b- | |||
camelia | std 4cde04e: OUTPUT«===SORRY!===Bogus term at /tmp/FNZczCymJb line 1 (EOF):------> m-b-⏏<EOL>Undeclared routine: 'm-b' used at line 1Parse failedFAILED 00:00 42m» | ||
jnthn | std: m'b' | 09:08 | |
camelia | std 4cde04e: OUTPUT«===SORRY!===Confused at /tmp/SoZG4HlTuC line 1:------> m'b⏏' expecting any of: POST argument list feed_separator infix or meta-infix infixed function postcircumfix postfix postfix_prefix_meta_operator | ||
..postop st…» | |||
jnthn | n: m'b' | ||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===Confused at /tmp/DnYjxFFeyS line 1:------> m'b⏏'Undeclared routine: 'm'b' used at line 1Parse failed» | ||
jnthn | n: m-b- | ||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===Bogus term at /tmp/W7iIKGyiI7 line 1 (EOF):------> m-b-⏏<EOL>Undeclared routine: 'm-b' used at line 1Parse failed» | ||
FROGGS | std: m-b-c | ||
camelia | std 4cde04e: OUTPUT«===SORRY!===Undeclared routine: 'm-b-c' used at line 1Check failedFAILED 00:00 41m» | ||
jnthn | OK, so *that* spectest failure is simply t/spec being wrong. | ||
FROGGS | std: m'b'c | ||
camelia | std 4cde04e: OUTPUT«===SORRY!===Undeclared routine: 'm'b'c' used at line 1Check failedFAILED 00:00 41m» | ||
jnthn | There are tests that expect you can use ' and - as regex delimeters | ||
FROGGS | ' and - is not allowed to be at the dn/beginning | 09:09 | |
ahh | |||
jnthn | Before the <apostrophe> LTM fix you could (wrongly, it appears) do so in Rakudo | ||
FROGGS | I think I made that working | ||
at least the usage of \W as delim | |||
jnthn | Yes, it's fine in general, but not wiht those two. :) | ||
FROGGS | but yes, ' and - as delim should not work | 09:10 | |
that is a problem in perl5, you can't call a sub named m | |||
tadzik | sub bus | ||
jnthn | convergence++ | 09:11 | |
sub way | |||
dalek | ast: 7c5ddf1 | jnthn++ | S05-metasyntax/delimiters.t: Remove tests that STD/Niecza disagree with. Rakudo will also, after cursless branch merges. |
09:12 | |
jnthn | So, now down to S05-mass/named-chars.t I think. | ||
09:13
iSlug joined
|
|||
jnthn | not ok 374 - Negative charclass hex \X[2724] match | 09:13 | |
The fails all look like that | |||
FROGGS | yeah, I see it too | ||
jnthn | think I see it | 09:16 | |
jnthn-- | |||
FROGGS | O.o | ||
timotimo | o_O | 09:19 | |
FROGGS | I believe stage parse dropped from about 160s to 145s | 09:20 | |
I should really benchmark that | |||
timotimo | good idea. so sad it will take about 3 minutes each time, though :( | 09:21 | |
arnsholt | jnthn: OOC, what's the cursless refactor refactoring? Something will stop using cursors or summat? | 09:22 | |
FROGGS | arnsholt: yes, you have to pull out your mouse to not have a cursor :P | 09:23 | |
I've taped my touchpad fwiw | |||
jnthn | arnsholt: Yes, it greatly reduces the number of Cursor allocations | ||
timotimo | my mouse has a on/off switch at the bottom | ||
and the cable is removable, too | |||
arnsholt | Ah, right. So not cursor-less, but less cursors | ||
jnthn | arnsholt: Right | ||
About 50%-60% or so of what we had before for CORE.setting parse, for example | 09:24 | ||
FROGGS | 50-60% less? | ||
jnthn | FROGGS: No | ||
FROGGS | k | ||
timotimo | no, 40-50% less | ||
jnthn | Right :) | ||
arnsholt | Oh, nice! I assume that gives at non-zero speed increase in setting compilation? | 09:25 | |
timotimo | yes, but also not nearly close to 50% | ||
jnthn | Yeah, though it's not a huge increase | ||
Which tells us a few things. | 09:26 | ||
oh noes, github fail | |||
arnsholt | Yeah, that's interesting | ||
timotimo | another piece of the puzzle was that the line pos cache was rebuilt each time a compile_in_context was used (which was 137 times in the core setting) | ||
but i'm not sure if the fix for that is in any branch right now | |||
FROGGS | I have seen the commit | 09:27 | |
jnthn | timotimo: You got the patch handy | ||
? | |||
jnthn hasn't... | |||
timotimo | github is down, yes? | ||
jnthn | Something's wrong, but I just managed to push at least | ||
timotimo | ah, it still exists | ||
09:27
Woodi left
|
|||
jnthn | Though, dalek didn't report it so something is up | 09:28 | |
nwc10 | its website was slow to load for me | ||
timotimo | pastebin.com/ZvzwmPhe | ||
FROGGS | maybe this one, but I can't fetch the site: github.com/perl6/nqp/commit/5f7801861b | ||
jnthn | status.github.com says the exception rate just skyrocketed... | ||
timotimo | that happens when you deploy 50-odd times a day :P | 09:29 | |
jnthn | timotimo: Thanks, will work on getting that patch in. | 09:31 | |
arnsholt: What's the status of NativeCall stuff on JVM, ooc? | 09:36 | ||
diakopter | FROGGS: that github link worked for me | 09:41 | |
jnthn still can't push | |||
diakopter | push harder? | 09:42 | |
jnthn | error: unknown option `harder' | ||
09:45
SamuraiJack__ joined
|
|||
arnsholt | jnthn: Stalled, trying to figure out the get_boxed_ref stuff | 09:46 | |
09:46
cognominal left
|
|||
jnthn | arnsholt: ah, hm | 09:46 | |
09:46
cognominal joined
|
|||
jnthn | arnsholt: I suspect NativeCall is the major thing for a JVM Star now... | 09:46 | |
arnsholt | Basically, they way it's implemented/works on Parrot is at odds with how box targets work on JVM | 09:47 | |
09:47
crazedpsyc left,
fglock left
|
|||
jnthn | Flattening multi-field things into P6opaques probably ain't gonna work too well on JVM... | 09:47 | |
09:47
fglock joined,
crazedpsyc joined
|
|||
jnthn | So yeah, we'll have to do it a bit different. | 09:48 | |
arnsholt | Yeah | ||
09:48
SamuraiJack_ left,
hugme left
|
|||
arnsholt | Problem is that the way it works on Parrot means we really want something like a Map<REPR, SixModelObject> | 09:48 | |
09:48
Timbus joined
|
|||
jnthn | arnsholt: Yeah. | 09:49 | |
arnsholt: Something along those lines would do it. | |||
arnsholt | But that doesn't play along too nice with the JVM inverted approach where each flattened REPR injects fields and methods | ||
jnthn | Well, it's more like we want a Map<REPR, Integer> or so which specifies the slot to getattr | 09:50 | |
arnsholt | Yeah | ||
09:50
hugme joined,
ChanServ sets mode: +v hugme
|
|||
jnthn | FROGGS: OK, I'm happy enough cursless can merge, I think... | 09:51 | |
09:51
fglock left
|
|||
jnthn | Just pusehd the final fix there but dalek seems unreporting... | 09:51 | |
timotimo | cool. so what else can we just allocate less of? | 09:52 | |
arnsholt | I guess P6OpaqueBaseInstance could have a Map<REPR, Something> we could use to dig out what we want, but that'll add an awful lot of Maps | 09:53 | |
JimmyZ wonders the ?% time of compiling core.setting | |||
timotimo | oh that sounds nice, we could just allocate less time for parsing and such! | 09:56 | |
jnthn | arnsholt: no, not per instance...it'd go in REPR data | 09:57 | |
arnsholt: If it's the slot index it's the same for everything | |||
09:57
lizmat_ joined
|
|||
jnthn | timotimo: Currently building with the linepos patches | 09:58 | |
arnsholt: Is the current progress pushed somewhere? | |||
arnsholt | jnthn: Oh, that's a good point. Not quite as terribly expensive | ||
nqp/nativecall-jvm is in sync with my local changes I think | 09:59 | ||
Nothing there about this though, since I've been stuck on the design part of it | |||
10:00
lizmat left
|
|||
jnthn | ok | 10:00 | |
timotimo: With that I have lowest CORE.setting time I've seen in a good while on JVM | |||
timotimo: for parse phase | |||
FROGGS, timotimo: cursless is merged to nom and pushed | 10:01 | ||
timotimo | \o/ | 10:02 | |
moritz | \o | 10:03 | |
jnthn | .oO( /nick dalek ) |
||
10:05
daxim joined
|
|||
jnthn | timotimo: your linepos patch is in NQP (+ using it in NQP::World) and Rakudo | 10:05 | |
nwc10: CORE.setting build should have a bit less GC churn now; may help on smaller systems | 10:08 | ||
timotimo | ah, NQP::World? i didn't find any usage of compile_in_context there, and i didn't have the presence of mind to search for .compile | 10:09 | |
jnthn | ;) | ||
jnthn did | |||
jnthn does a little Rakudo debugger work, to see if he can make any progress towards having it on JVM also | 10:10 | ||
warnings because we deprecated .exists :( | 10:12 | ||
diakopter | you folks seen this? hotness. runnable.com/ | 10:14 | |
jnthn | tadzik: Please can .exists usage in Term::ANSIColor be fixed (or I'll accept a commit bit to do it :)) | 10:16 | |
s/fixed/updated/ | |||
tadzik | jnthn: sure | ||
jnthn: you are now a Collaborator | 10:19 | ||
jnthn | tadzik: Thanks! | ||
tadzik | Thank you :) | ||
moritz | .oO( your now Conspirator ) |
||
jnthn | now if only I could get at github... | 10:20 | |
10:25
gfldex joined
|
|||
FROGGS | still benchmarking.... I'll compare the almost up-to-date version to 2013-09 | 10:25 | |
moritz | status.github.com/ " | 10:27 | |
10:20 UTC The site is unavailable as we continue mitigating a large DDoS attack. | |||
" | |||
FROGGS | jnthn: see? they think you're attacking them | 10:29 | |
FROGGS .oO( "That can't be something human-ish!" ) | |||
jnthn | I don't commit *that* fat :P | ||
moritz was just able to git pull a rakudo | |||
jnthn | *fast | ||
yeah, it sometimes works... | |||
FROGGS | 7/10 rakudo recompile completed | 10:30 | |
moritz | wow, new error message while pulling from github: "No route to host" | 10:31 | |
10:32
Woodi joined
|
|||
lizmat_ | p5eval: sub m { "hello" }; &m | 10:35 | |
p5eval | lizmat_: hello | ||
10:36
lizmat_ is now known as lizmat
|
|||
jnthn | hello, lizmat :) | 10:36 | |
lizmat | .oO( you *can* call a sub called "m" in perl 5 ) |
||
p5eval: sub m { "hello" }; m() # just not this way | 10:39 | ||
p5eval | lizmat: 1 | ||
FROGGS | r: say ([+] 140.925, 138.979, 138.785, 138.639, 138.615, 139.286, 140.331, 139.872, 140.185) / 10 | 10:48 | |
camelia | rakudo a10341: OUTPUT«125.5617» | ||
FROGGS | r: say ([+] 140.925, 138.979, 138.785, 138.639, 138.615, 139.286, 140.331, 139.872, 140.185) / 9 | ||
camelia | rakudo a10341: OUTPUT«139.513» | ||
FROGGS | today's rakudo's stage parse | ||
2013.09 comes in a few hours :o) | 10:49 | ||
lizmat | .oO( odd that we don't have a method .avg ?) |
10:50 | |
FROGGS | I guess it will be specced within hours too :P | ||
lizmat | 10:48 UTCWe're working to re-establish connectivity after the attack disrupted our primary internet transit links. | 10:52 | |
FROGGS | 2013.09's first stage parse completed in 156.949 | 10:53 | |
that is 15%-something | |||
lizmat | r: say 100 - 14000/157 | 10:54 | |
camelia | rakudo a10341: OUTPUT«10.828025» | ||
lizmat | more like 11 :-( | ||
but I'l take it! | |||
that's at least 15 minutes saved / day for me | 10:55 | ||
colomon | lizmat: surely it should be mean instead of avg? not that we have mean.... | 10:56 | |
10:56
pecastro_ is now known as pecastro
|
|||
lizmat | .oO( and so the bikeshedding starts :-) |
10:56 | |
I guess that's the reason it's not in there :-) | |||
colomon | that and it's a one-liner | 10:57 | |
lizmat | still, it would have been nice to be able to say: | ||
r. (1,2,3,4,5).avg.say | |||
r: (1,2,3,4,5).avg.say | |||
camelia | rakudo a10341: OUTPUT«No such method 'avg' for invocant of type 'Parcel' in block at /tmp/lU7J50O51E:1» | ||
colomon | rn: sub mean(@*a) { @a R/ [+} @a; }; say mean(4, 6, 7) | 10:58 | |
camelia | rakudo a10341: OUTPUT«===SORRY!=== Error while compiling /tmp/oc7vcy2lCDVariable '@a' is not declaredat /tmp/oc7vcy2lCD:1------> sub mean(@*a) { @a⏏ R/ [+} @a; }; say mean(4, 6, 7) expecting any of: postfix» | ||
..niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===Variable @a is not predeclared at /tmp/OruBcCVvK6 line 1:------> sub mean(@*a) { ⏏@a R/ [+} @a; }; say mean(4, 6, 7)Prefix requires an argument at /tmp/OruBcCVvK6 line 1:------> sub mean(@*a) …» | |||
colomon | rn: sub mean(*@a) { @a R/ [+} @a; }; say mean(4, 6, 7) | ||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===Prefix requires an argument at /tmp/AULlvW9nEY line 1:------> sub mean(*@a) { @a R/ [+⏏} @a; }; say mean(4, 6, 7)Parse failed» | ||
..rakudo a10341: OUTPUT«===SORRY!=== Error while compiling /tmp/EYSZnuqBeJPreceding context expects a term, but found infix + insteadat /tmp/EYSZnuqBeJ:1------> sub mean(*@a) { @a R/ [+⏏} @a; }; say mean(4, 6, 7)» | |||
colomon needs to wake up | |||
10:59
fhelmberger left
|
|||
colomon | rn: sub mean(*@a) { @a R/ [+] @a; }; say mean(4, 6, 7) | 11:00 | |
camelia | rakudo a10341, niecza v24-95-ga6d4c5f: OUTPUT«5.666667» | ||
11:01
FROGGS[mobile] joined
|
|||
colomon | rn: sub median(*@a) { @a %% 2 ?? (@a[*/2-1] + @a[*/2]) / 2 !! @a[*/2-1]; }; say median(1,3,4,7); say median(1,3,9) | 11:04 | |
camelia | rakudo a10341, niecza v24-95-ga6d4c5f: OUTPUT«3.51» | ||
colomon has left an important step out! | |||
rn: sub median(*@r) { my @a = @r.sort(+*); @a %% 2 ?? (@a[*/2-1] + @a[*/2]) / 2 !! @a[*/2-1]; }; say median(1,3,4,7); say median(1,3,9) | |||
camelia | rakudo a10341, niecza v24-95-ga6d4c5f: OUTPUT«3.51» | 11:05 | |
colomon | rn: sub median(*@r) { my @a = @r.sort(+*); @a %% 2 ?? (@a[*/2-1] + @a[*/2]) / 2 !! @a[*/2-1]; }; say median(3,1,4,7); say median(1,9,3) | ||
camelia | rakudo a10341, niecza v24-95-ga6d4c5f: OUTPUT«3.51» | ||
11:07
iSlug left
11:10
pmurias joined
|
|||
jnthn | whee | 11:13 | |
11:13
fhelmberger joined
11:14
iSlug joined
|
|||
jnthn | OK, it needs some minor hacks that I'm gonna have to redo properly, and I've built it by hand, but I've just been single-stepping code with Rakudo::Debugger on JVM. :) | 11:15 | |
lizmat just pushed some roast changes to github | 11:17 | ||
jnthn | Turns out prompt doesn't work on Rakudo JVM yet due to .flush also not working. | ||
That's an easy fix. There's also an exception handler related thing that needs some VM abstraction. Those aside, it'll just be a case of sorting out build stuff. | 11:18 | ||
lizmat just push some nom changes to github | 11:19 | ||
*pushed | |||
basically KeySet -> SetHash and KeyBag -> BagHash changes | 11:20 | ||
jnthn | lizmat++ | ||
tadzik: Pushed exists updates | 11:26 | ||
dalek | kudo-debugger: c901e44 | jnthn++ | bin/perl6-debug.nqp: Some pir:: -> nqp:: in prep for JVM support. |
||
tadzik | \o/ | 11:27 | |
dalek | kudo/nom: bd0f19c | jnthn++ | / (2 files): Use recursion_limit method from HLL:Compiler. |
||
jnthn | heh, that commit was a while ago :) | ||
Guess github is gonna be playing catch up :) | 11:28 | ||
lizmat | parse time for me went from 140 -> 123 | ||
so, 17 seconds gained for each build :-) | 11:29 | ||
dalek | ast: 3ca73a7 | (Elizabeth Mattijsen)++ | S02-types/ (4 files): Part 1 of bringing Set/Bag tests up to spec |
||
ast: 109ff98 | (Elizabeth Mattijsen)++ | S (9 files): Part 2 of bringing Bag/Set tests up to spec again |
|||
kudo/nom: bc39750 | (Elizabeth Mattijsen)++ | src/core/ (4 files): Part 1 of bringing Set/Bag up to spec again |
|||
kudo/nom: 7eacce5 | (Elizabeth Mattijsen)++ | / (10 files): Part 2 of bringing Set/Bag up to spec again |
|||
kudo/nom: 71b47aa | (Elizabeth Mattijsen)++ | t/spectest.data: Part 3 of getting the Set/Bag tests up to spec again |
|||
tadzik | \o/ | ||
dalek | kudo-debugger: 6b8fc4f | jnthn++ | lib/Debugger/UI/CommandLine.pm: Stop using deprecated .exists method. |
11:30 | |
kudo-debugger: e014aaf | jnthn++ | bin/perl6-debug.nqp: Some JVM compatibility fixes. |
|||
jnthn | lizmat: Great! | ||
lizmat | spectest before took 504 wallclock / 3700 CPU | 11:31 | |
running post cursless merge spectest now | 11:32 | ||
11:31 UTCWe've restored access to code downloads and queued service hooks are being delivered. The attack continues, but our mitigation is holding firm. | |||
diakopter | o_O | 11:35 | |
jnthn | The fact perl6-debug hasn't been a nightmare to make work on JVM bodes well for getting it on Moar too, once we have Rakudo over there.. | 11:37 | |
diakopter | :) | ||
lizmat | spectest down to 492 wallclock / 3600 CPU | 11:40 | |
cool! | |||
jnthn | \o/ | 11:42 | |
11:48
raiph joined
11:50
l30n1du5 joined
11:54
fhelmberger left
|
|||
dalek | rlito: bb6da3c | (Flavio S. Glock)++ | / (3 files): Perlito5 - perl6 - make build-5to6browser by default; cleanup |
11:56 | |
11:56
mtk0 left,
mtk left
11:59
fglock joined,
btyler joined
12:02
mtk joined
12:07
denis_boyun joined
12:20
l30n1du5 left
|
|||
lizmat | .oO( wish we had a make target that would only run the files in t/spec that are listed in git status ) |
12:20 | |
dalek | ast: 9d973ed | (Elizabeth Mattijsen)++ | S02-types/ (5 files): KeyHash is now called QuantHash |
12:21 | |
12:23
pmurias left
12:26
iSlug left
|
|||
dalek | kudo/nom: 93064b1 | (Elizabeth Mattijsen)++ | / (5 files): Introduce QuantHash |
12:28 | |
lizmat | TimToady: .elems on a Baggy, is the sum of all weights, this becomes weird with MixHash, or not ? | 12:30 | |
arnsholt | lizmat: How about: make $(git s --porcelain | perl -nE 'chomp; next if substr($_, 0, 2) ne " M"; say substr($_, 3); ') | 12:33 | |
Where git s is my alias for git status, obv. | |||
lizmat | arnsholt++ will try the next time I have t/spec changes | 12:37 | |
arnsholt | jnthn: What's the correct way to call a method in a superclass in NQP? | 12:39 | |
jnthn | nqp::findmethod(SuperClassName, 'method')(self, ...args...) | 12:40 | |
arnsholt | Right. Cheers | ||
I think it looks like I'll have to override an action method not defined in NQP::RegexActions to set up $/ on subrule calls | 12:41 | ||
moritz | eeks, rakudo segfaulted during setting parsing | 12:44 | |
masak | good afternoon, #perl6 | 12:45 | |
moritz | \o masak | ||
make: *** No rule to make target `src/core/QuantHash.pm', needed by `CORE.setting.pbc'. Stop. | 12:52 | ||
lizmat: did you forget to git add QuantHash.pm? | |||
dalek | p: 755bd8b | jnthn++ | src/vm/parrot/QAST/Operations.nqp: Fix copy-pasto. |
12:54 | |
p: 1eb7d09 | jnthn++ | src/vm/parrot/QAST/Operations.nqp: Add an nqp::flushfh op on Parrot. |
|||
p: a4e9ac9 | jnthn++ | src/vm/jvm/ (7 files): Implement nqp::flushfh on JVM. |
|||
[Coke] | my 9th grader is taking Mandarin this year. at the school's open house, I asked the teacher if *i* could peek at the course materials... she gave me a copy of the textbooks to borrow indefinitely. Whee! | 12:55 | |
masak | [Coke]: nice! | ||
[Coke] | jnthn: "hey, no adding opcodes without documentation! | 12:56 | |
I'll grab that one, though. | |||
12:57
iSlug joined,
ajr joined
|
|||
dalek | p: ff08120 | jnthn++ | docs/ops.markdown: Document flushfh; [Coke]++ for reminder. |
12:57 | |
12:57
ajr is now known as Guest26235
12:58
Guest26235 is now known as ajr_
|
|||
dalek | p: b71e06e | coke++ | docs/ops.markdown: doc new opcode. (fix nearby op name) |
12:58 | |
[Coke] | D'oh. | ||
jnthn | oops | 12:59 | |
:) | |||
[Coke] | fixing. | ||
jnthn | Well, we're flush with docs for that op now... | ||
dalek | p: 57ede8d | coke++ | docs/ops.markdown: what? too much docs? use jnthn++'s explanation in alphabetical slot. |
13:00 | |
kudo/nom: a8d9dc8 | jnthn++ | / (2 files): Start using nqp::flushfh. Fixes .flush, and also prompt(), on JVM. |
|||
[Coke] | jnthn++ \o/ | ||
only 505 failing tests in t/docs (most of them are duplicates because something is documented but exists in parrot -and- java) | 13:01 | ||
(autogenerating signatures) - the problem with that is the signatures often take a perl 6 object, but immediately die if given something not, e.g., a bigint. | 13:02 | ||
so it's not as straightforward as you might think. | |||
also, the point is to get the -descriptions- autogenerating potentially incorrect signatures would then make it slightly harder to figure out where we were missing docs. (or leave a lot of XXX boilerplate) | 13:03 | ||
if you want to help, find an opcode that isn't documented (run the test) and give me a snippet of text to use for the description. | |||
13:03
benabik left
|
|||
[Coke] | (another issue: we are categorizing the opcodes - can't get that from the code) | 13:03 | |
jnthn | Down to one hack in the debugger code now. | 13:06 | |
jnthn will fix this, and then leave the build stuff for another time. | 13:07 | ||
13:09
daxim left
13:16
lowpro30 joined
13:17
skids left,
lowpro30_ joined
|
|||
FROGGS | r: say ([+] 157.831, 154.795, 155.103, 154.866, 155.325, 154.584, 154.834, 155.286, 155.128) / 9 | 13:18 | |
camelia | rakudo 71b47a: OUTPUT«Missing or wrong version of dependency 'src/stage2/QRegex.nqp'current instr.: '' pc 16569 (src/gen/perl6-pod.pir:6540) (src/Perl6/Pod.nqp:464)called from Sub '' pc 1902 (src/stage2/gen/module_loader.pir:880) (src/vm/parrot/ModuleLoader.nqp:47)called from Sub…» | ||
FROGGS | what? | ||
13:18
daxim joined
|
|||
[Coke] | r: say.what.say | 13:19 | |
camelia | rakudo 71b47a: OUTPUT«Missing or wrong version of dependency 'src/stage2/QRegex.nqp'current instr.: '' pc 16569 (src/gen/perl6-pod.pir:6540) (src/Perl6/Pod.nqp:464)called from Sub '' pc 1902 (src/stage2/gen/module_loader.pir:880) (src/vm/parrot/ModuleLoader.nqp:47)called from Sub…» | ||
FROGGS | :o( | ||
13:19
lowpro30__ joined
|
|||
tadzik | nooo | 13:19 | |
[Coke] tries to remember what the command is to force a rebuild... | |||
13:20
rindolf joined
|
|||
tadzik | evalbot control rebuild | 13:20 | |
nope | |||
FROGGS | k, 10.168828361% faster | 13:21 | |
13:21
lowpro30 left
|
|||
FROGGS | nqp: say(1) | 13:21 | |
camelia | nqp: OUTPUT«1» | ||
13:22
lowpro30_ left
|
|||
jnthn gets "don't know how to build QuantHash"... :( | 13:23 | ||
lizmat: ping? | |||
JimmyZ | git reset HEAD^ --hard | 13:26 | |
13:31
Lorn_ is now known as Lorn,
Lorn left,
Lorn joined
13:33
lowpro30__ left
|
|||
jnthn | Well, will do some $dayjob stuff for a bit...only got one more patch to try out anyway... :) | 13:34 | |
13:34
raiph left,
raiph joined
13:38
Fatalnix left
|
|||
nwc10 | jnthn: trying it. I think that I got a kernel panic. Whoops | 13:38 | |
but unfortunately the screen saver had cut in, so when it hung, it hung with all black output on the "console" (the TV) | |||
so I didn't get to see whether it had (like before) dropped me into the kernel debugger | 13:39 | ||
(before locking up. Oops) | |||
trying again | |||
Kernel panic makes a change from a JVM bug. | |||
moritz | [Coke]: evalbot rebuilds don't work atm | 13:40 | |
13:40
iSlug left
13:41
lowpro30 joined,
iSlug joined
|
|||
arnsholt | Heh. That's a fun failure mode. Even funner then segfaults, even =D | 13:45 | |
13:45
denis_boyun left
|
|||
nwc10 | I think it's because the USB drivers are pants | 13:46 | |
13:48
xinming left
|
|||
jnthn | .oO( Wearable tech considered overrated... ) |
13:48 | |
13:48
stevan_ left
13:49
stevan_ joined
13:50
stevan_ left
13:52
lowpro30 left
13:57
iSlug left
|
|||
dalek | kudo/nom: 454984b | (Elizabeth Mattijsen)++ | src/core/QuantHash.pm: Oops, forgot to add QuantHash, moritz++ |
14:05 | |
14:05
lowpro30 joined
|
|||
lizmat | sorry about that, guys | 14:05 | |
it spectested ok here :-) | 14:06 | ||
jnthn | :P | 14:07 | |
lizmat | r: say 1 | 14:08 | |
camelia | rakudo 71b47a: OUTPUT«Missing or wrong version of dependency 'src/stage2/QRegex.nqp'current instr.: '' pc 16569 (src/gen/perl6-pod.pir:6540) (src/Perl6/Pod.nqp:464)called from Sub '' pc 1902 (src/stage2/gen/module_loader.pir:880) (src/vm/parrot/ModuleLoader.nqp:47)called from Sub…» | ||
lizmat | hope that gets fixed soon | ||
14:08
lowpro30 left
|
|||
lizmat | again, sorry about that… had a little nap in the sun | 14:08 | |
jnthn | Nice timing...I did my $dayjob errands and was about to do some real work, but now I can distract myself testing my Rakudo patch :P | 14:09 | |
14:09
larks left
|
|||
lizmat | yw, running errands myself now & | 14:09 | |
14:15
jnap joined
|
|||
dalek | kudo-debugger: 33b17a7 | jnthn++ | / (2 files): Final code tweaks to support Parrot and JVM. Still need to get proper build/runner stuff in place for JVM, but that should be all that's needed now. |
14:18 | |
jnthn | My word to multiple threads confuse the poor debugger. | 14:20 | |
*do | |||
14:21
kaleem left
|
|||
dalek | kudo/nom: eb07bd1 | jnthn++ | src/ (3 files): Add nqp::p6invokehandler. Hides away a Parrot specific detail. Cleans up one place in Actions, but the debugger is the main beneficiary. |
14:27 | |
14:40
SmokeMachine left
14:41
larks joined
14:43
bluescreen10 joined,
skids joined
14:44
denisboyun joined
|
|||
FROGGS | perl6 t/spec/S02-types/declare.rakudo.parrot | 14:47 | |
not ok 40 - The object is-a 'QuantHash' | |||
# Actual type: QuantHash | |||
jnthn | Is QuantHash a role or a class? | 14:48 | |
FROGGS | a role | 14:49 | |
that explains it | |||
jnthn | da | 14:51 | |
ok ... ~~ QuantHash is probably the easy fix | |||
dalek | ast: c7c53a7 | (Tobias Leich)++ | S02-types/declare.t: fix QuantHash test |
14:53 | |
14:54
sftp left
14:56
guru joined,
ajr_ left,
guru is now known as Guest34241
14:57
sftp joined
14:58
benabik joined
14:59
Guest34241 is now known as ajr_
15:00
iSlug joined
|
|||
TimToady | nr: m 'this is fine' | 15:10 | |
camelia | niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: Unable to resolve method match in type Any at /tmp/7KPgmywCmx line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4583 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4584 (module-CORE @ 576)  at /h…» | ||
..rakudo 454984: OUTPUT«Cannot call 'match'; none of these signatures match::(Cool:D : $target, *%adverbs) in method match at src/gen/CORE.setting:3372 in block at /tmp/Qvspk9sH2f:1» | |||
TimToady | (syntactically, anyway) | 15:11 | |
nr: $_ = 'thisisfine'; say m 'this is fine' | 15:12 | ||
camelia | rakudo 454984, niecza v24-95-ga6d4c5f: OUTPUT«「thisisfine」» | ||
TimToady | nr: $_ = 'soisthis'; say m -so is this- | 15:13 | |
camelia | rakudo 454984, niecza v24-95-ga6d4c5f: OUTPUT«「soisthis」» | ||
TimToady | so there should probably be tests for delims that work as long as there's whitespace between | 15:16 | |
15:17
ssutch left
|
|||
jnthn | ah, yes | 15:17 | |
15:25
yogan left,
yogan joined
15:27
sftp left
15:29
sftp joined
15:30
fglock left
15:33
kaare_ joined
15:34
sftp left
|
|||
FROGGS | m -so is this- <-- that is not a programming style I will adopt soon | 15:35 | |
15:36
zakharyas left
15:37
sftp joined
|
|||
jnthn | FROGGS: s ' only ' a little odd ' | 15:38 | |
FROGGS | yeah | ||
jnthn | std: s ' only ' a little odd ' | ||
camelia | std 4cde04e: OUTPUT«ok 00:00 42m» | ||
jnthn | r: s ' only ' a little odd ' | ||
camelia | ( no output ) | ||
FROGGS | s "nice" :o) " | 15:39 | |
PerlJam | What is this? Perl 5? ;> | ||
FROGGS | std: s "a"b" | ||
camelia | std 4cde04e: OUTPUT«ok 00:00 42m» | ||
TimToady | std: s"a"b" | ||
camelia | std 4cde04e: OUTPUT«ok 00:00 42m» | 15:40 | |
FROGGS | of course, only the single quotes belong to ident | ||
jnthn | identifier, but yes | ||
Good we got STDier amongst the cursor killing, anyway... :) | |||
TimToady | that STDlier to you :P | 15:41 | |
*that's | |||
now my 's key is getting gimpy... | |||
it it's it's it it it it's <-- intermittent | 15:42 | ||
yay, my Stage parse dropped from 96.5 to 85.5 | 15:44 | ||
jnthn | TimToady: Which backend? | ||
FROGGS | aww, I wanna have an i7 too | ||
TimToady | JVM | ||
FROGGS | ahh, that is JVM | ||
then mine is already faster? | |||
TimToady just has an ancient T61 | 15:45 | ||
(2 core) | |||
jnthn | TimToady: I only gained a couple of seconds on JVM, but am down to around 44s/45s now. | ||
FROGGS | I had a Lenovo Thinkpad before my DELL, and I don't miss it at all | 15:46 | |
TimToady | well, GC might be more efficient with more cores | ||
jnthn | True | ||
TimToady likes the T61, for all its faults | |||
jnthn picks up a new laptop tomorrow :) | |||
Hopefully it'll be around as fast as my current desktop | 15:47 | ||
jnthn only uses the laptop when traveling, not at home... | |||
FROGGS | I use my laptop like 16/7 | ||
jnthn | :) | 15:48 | |
I suspect if laptop use was physically comfortable for me, I might use one most of the time too | |||
I'd probably be more nomadic also... :) | |||
FROGGS | well, my neck hurts a lot and so does my back and my legs... dunno if laptops are preferable :o) | 15:49 | |
but my flat is too small for a desktop-pc+table of mine | 15:50 | ||
TimToady tries a differential compile on his supercomputer | |||
FROGGS | 65.3s stage parse here | 15:55 | |
jnthn | FROGGS: on JVM? | 15:57 | |
FROGGS | yes | ||
jnthn | Figured so :) | ||
FROGGS | hehe | ||
I never had such a nice number on @parrot | |||
it was once around 80s though, must be a year ago now | |||
jnthn | Yeah. The setting grew... :) | 15:58 | |
FROGGS | true, happened much since then | 15:59 | |
TimToady | 59.4 -> 55.0 on six cores | ||
FROGGS | sad that we don't have a number for moarvm yet :o) | 16:00 | |
and then we really need buildbots | 16:01 | ||
parrot, jvm, moarvm Rxx linux, windows, mac | |||
jnthn | I'll try and do a bit moar hacking this evening to get closer to being able to dig into bootstrap | 16:02 | |
FROGGS | ohh awesome! | ||
jnthn | I've got quite a lot of travel coming up in the next 3 weeks, but I'm hopeful the tuit supply won't be hit too hard. | 16:03 | |
FROGGS | I like to help too, but well, I dunno how and I think I'm not capable of fixing things in the current state | ||
jnthn | Well, current task is getting --target=mbc to work out right | ||
But that shouldn't be much more than debugging. | |||
FROGGS | k, so I will try it tonight | 16:04 | |
jnthn | me too ;) | ||
Actually fixing the Pod regression would be helpful, as I guess I can't build nqp-cc until that one is fixed... | |||
16:06
iSlug left
16:14
raiph left,
ssutch joined
16:15
Rotwang joined
16:33
denisboyun left
|
|||
TimToady | lizmat: it'll probably be a .total method instead of .elems, and we'll probably add an immutable QuantMap to go with QuantHash | 16:35 | |
errands & | |||
16:39
sftp left
16:42
iSlug joined
16:44
sftp joined
|
|||
jnthn | gist.github.com/jnthn/6812967 # action method count/time stats, if anybody is curious | 16:44 | |
timotimo | is the time number time-per-call or sum-of-all-times? | 16:45 | |
oh, must be time-total, otherwise the parsing would take like an hour :) | 16:46 | ||
jnthn | total :) | ||
So we can understand what is in it for us if we optimize | |||
timotimo | seems like the actions don't take much time, that is very nice indeed. | ||
comparing what package_def and dec_number have to do, it seems like dec_number is unjustly slow | 16:48 | ||
but it's only worth about 1 second all in all, so not sure if we'd want to do anything there | |||
well, all action methods in all are very roughly 30 seconds; how much time does stage parse cost on your computer in total? | 16:49 | ||
jnthn | yes, dec_number stands out | ||
TimToady: Yes but on my machine the whole parse stage is 45s. | |||
um, timotimo ^ | 16:50 | ||
r: say 1.8 / 45 | |||
camelia | rakudo eb07bd: OUTPUT«0.04» | ||
16:50
xenoterracide left
|
|||
jnthn | So it's 4% of CORE.setting compilation time | 16:50 | |
16:50
ajr_ left
|
|||
timotimo | oh, this is on jvm? | 16:50 | |
jnthn | yes | 16:51 | |
timotimo | that makes a difference of about 3x to me :) | ||
jnthn | Thing is, we have an nqp::radix op | ||
Which I *think* may be capable of doing a lot of what that action method is doing | |||
timotimo | nqp: say(nqp::radix("1023", 10)) | ||
camelia | nqp: OUTPUT«Error while compiling block : Error while compiling op call (source text: "nqp::radix(\"1023\", 10)"): Error while compiling op radix (source text: "nqp::radix(\"1023\", 10)"): Operation 'radix' requires 4 operands, but got 2current instr.: '' pc 55082 (src/stage2/QAST.…» | 16:52 | |
timotimo | ah, that way | ||
nqp: say(nqp::radix_I(10, "1032", 0, 0, Int)) | |||
camelia | nqp: OUTPUT«get_boxed_ref could not unbox for the given representationcurrent instr.: '' pc 93 ((file unknown):61) (/tmp/qPqWpVX92J:1)» | ||
timotimo | string_to_bigint already uses nqp::radix in the actions | 16:53 | |
jnthn | Well, we're producing a num here I guess... | ||
timotimo | the question is probably if it allows underscores; this filter_number thing is probably very costy if 99.99% of our numbers don't have any underscores | ||
jnthn | Well, I think radcalc may be mroe so | 16:54 | |
I believe nqp::radix can do underscores | |||
FROGGS | is =cut valid for perl6's pod | ||
? | |||
jnthn | I...don't think so? | 16:55 | |
r: =cut | |||
camelia | rakudo eb07bd: OUTPUT«===SORRY!=== Error while compiling /tmp/ELygstVbDSPreceding context expects a term, but found infix = insteadat /tmp/ELygstVbDS:1------> =cut⏏<EOL>» | ||
jnthn | um :) | ||
timotimo | hehe. | ||
jnthn | I think there's an error saying "no, =cut is Perl 5" or soin Perl 6's grammar, though | ||
arnsholt | jnthn: Giving this $/ in subrule arguments thing a whack, I'm urnning into some trouble. Could it be that the subrule's (pristine) $/ gets set up before the arguments are evaluated? | ||
FROGGS | jnthn: why do we have =cut in nqp code then? | ||
jnthn | Anyway, I throw out the dec_number thing for anybody who fancies trying their hand, and suggest nqp::radix may be the way to go there :) | ||
FROGGS | like, NQPHLL.nqp | 16:56 | |
16:56
iSlug left
|
|||
jnthn | FROGGS: I...have no idea ;) | 16:56 | |
FROGGS | nqp/src/HLL/CommandLine.nqp:89:=cut | ||
and right before it there is an =end | |||
:o) | |||
jnthn | Thinko maybe :) | ||
And our Pod parsing was, like, liberal man. | 16:57 | ||
16:58
raiph joined
|
|||
timotimo | yeah, tadzik transformed all of his chill into the pod parser | 16:59 | |
also, the filter_number thing does all the string copies | |||
the really un-nice quadratic kind | 17:00 | ||
17:00
xenoterracide joined
|
|||
timotimo | even if there is nothing for it to do | 17:00 | |
oh well. i'll investigate nqp::radix | |||
nqp::index to see if a character is 0, 1, 2, 3, 4, 5, 6, 7, 8 or 9 is also ... | 17:02 | ||
(and another for 0-9A-Z) | |||
those could much more easily be chr and integer compares, no? | |||
well, it would be nice to figure out if it's actually that that causes slowness | 17:04 | ||
17:12
kaleem joined
|
|||
timotimo | i wonder if we can make a big difference by keeping around a hash of string-of-number to number? | 17:13 | |
i bet we see a hundred 1 and 0, some 10s | |||
17:15
denisboyun joined
|
|||
arnsholt | timotimo: Maybe a kind of cache structure? | 17:15 | |
timotimo | also, does add_numeric_constant do any caching? | ||
17:18
kaleem left
17:22
SamuraiJack__ left
|
|||
timotimo is very distracted | 17:28 | ||
17:40
zwut00 joined
17:48
benabik left
|
|||
timotimo | r: say nqp::radix_I(10, "1024", 0, 0, Int) | 17:52 | |
camelia | rakudo eb07bd: OUTPUT«No such method 'gist' for invocant of type 'FixedPMCArray' in sub say at src/gen/CORE.setting:12751 in block at /tmp/3bBM2Gb7Ze:1» | ||
timotimo | ah, it returns an array of parts | ||
r: my Mu $res := nqp::radix_I(10, "1024", 0, 0, Int); say nqp::atpos($res, 0); say nqp::atpos($res, 1); | 17:53 | ||
camelia | rakudo eb07bd: OUTPUT«102410000» | ||
timotimo | r: my Mu $res := nqp::radix_I(10, "1024", 0, 4, Int); say nqp::atpos($res, 0); say nqp::atpos($res, 1); | 17:54 | |
camelia | rakudo eb07bd: OUTPUT«102410000» | ||
timotimo | r: my Mu $res := nqp::radix_I(10, "1024", 0, 1, Int); say nqp::atpos($res, 0); say nqp::atpos($res, 1); | ||
camelia | rakudo eb07bd: OUTPUT«-102410000» | ||
timotimo | r: my Mu $res := nqp::radix_I(10, "1024", 0, 3, Int); say nqp::atpos($res, 0); say nqp::atpos($res, 1); | ||
camelia | rakudo eb07bd: OUTPUT«-102410000» | ||
timotimo | not quite sure why there's a +4 for the $neg parameter in the Str part of core... | ||
r: my Mu $res := nqp::radix_I(10, "1024", 0, 0, Int); say nqp::atpos($res, 0); say nqp::atpos($res, 1); say nqp::atpos($res, 2); | 17:55 | ||
camelia | rakudo eb07bd: OUTPUT«1024100004» | ||
timotimo | and the last thing seems to be the position of the dot in the number | ||
jnthn | timotimo: github.com/perl6/nqp/blob/master/s....ops#L2891 has some doc on it | 17:57 | |
And yes, there already is caching of constants, odne in H::World | 17:58 | ||
*done in Perl6::World | |||
dalek | p: d756b3f | (Tobias Leich)++ | src/ (2 files): fix pod-parsing, jnthn++ |
||
FROGGS | jnthn: running a spectest too, to be sure | 17:59 | |
timotimo | now the question becomes: is a string-indexed hash for parsing numbers sensible? | ||
FROGGS | but nqp-cc builds, nqp's tests are ok, and rakudo builds | ||
jnthn | timotimo: I still think the whole lot may be replaceable with an nqp::radix call | 18:00 | |
timotimo | all of it? | ||
18:00
daxim left
|
|||
jnthn | Well, we need to convert the b/x/whatevers into a base | 18:00 | |
And do some work on the array that comes out | |||
I guess divide the first by the second, for example | 18:01 | ||
er, or something like that | |||
timotimo | not quite | ||
jnthn | bbiab | ||
timotimo | otherwise it would give you 0.1024 for 1024 :) | ||
probably multiply it with the third to the power of the radix or something? | 18:02 | ||
18:06
ssutch left
|
|||
FROGGS | jnthn: spectest passes | 18:13 | |
18:16
darutoko left
18:18
guru joined,
guru is now known as Guest19395,
Guest19395 is now known as ajr_
18:19
ssutch joined
|
|||
japhb__ | timotimo: Have you looked through the Str.Numeric implementation? It's crazy general, but you might be able to browse through it to find just the bit you need. | 18:19 | |
timotimo | no, i'm afraid of failure and so i'm distracting myself :) | ||
japhb__ | Ah. | 18:20 | |
timotimo: Also, there's some documentation of the op in nqp ... src/vm/parrot/ops/nqp_bigint.ops line 436 and following. Line 444 looks typoed; it should be "The contents of $1 ..." | 18:24 | ||
lue | hello world o/ | ||
japhb__ | o/ lue | 18:25 | |
lue | o/ japhb__ | 18:26 | |
18:39
raiph left
18:46
sqirrel joined
18:53
rindolf left
|
|||
lizmat is back from errands | 18:59 | ||
.oO( and backlogging ) |
19:00 | ||
19:02
denisboyun left
19:03
slava joined,
xinming joined
|
|||
dalek | ecs: 29e1f75 | (Elizabeth Mattijsen)++ | S32-setting-library/Containers.pod: Change use of .elems on Set/Bag/Mix to new method .total |
19:08 | |
19:08
iSlug joined
19:09
jnap left,
iSlug left
19:13
xorp joined
19:20
riceandbeans joined
|
|||
riceandbeans | how can I make a multidimensional array in perl? | 19:20 | |
19:20
jnap joined
|
|||
lizmat | hello riceandbeans, you mean Perl 5 or Perl 6 ? | 19:22 | |
lue | r: my @a = [1,2],[3,4 | 19:23 | |
camelia | rakudo eb07bd: OUTPUT«===SORRY!=== Error while compiling /tmp/Q1i_8hPq8IUnable to parse expression in array composer; couldn't find final ']'at /tmp/Q1i_8hPq8I:1------> my @a = [1,2],[3,4⏏<EOL> expecting any of: postfix sta…» | ||
lue | r: my @a = [1,2],[3,4]; say @a.perl | ||
camelia | rakudo eb07bd: OUTPUT«Array.new([1, 2], [3, 4])» | ||
lue | (if you're using P6 that is) | ||
arnsholt | Does anyone else get test failures on NQP/Parrot at HEAD? | 19:24 | |
(t/nqp/05-comments.t) | |||
diakopter | jnap: did you find the --crash flag? | ||
19:25
slava left,
slava joined
|
|||
jnap | diakopter: probably not, but to be honest I've been so busy lately I can't even recall looking for it :( | 19:25 | |
19:25
iSlug joined
|
|||
diakopter | jnap: sorry, I meant to type jnthn, and also in the other channel | 19:27 | |
jnap | diakopter: np :) glad my memory is failing less than I thought | 19:28 | |
dalek | kudo/nom: 0dbbbfe | (Elizabeth Mattijsen)++ | src/core/ (2 files): Change .elems to .total for Sets/Bags, .elems is now what you expect for a hash |
19:29 | |
19:30
iSlug left
|
|||
dalek | ast: 3ee1ee0 | (Elizabeth Mattijsen)++ | S02-types/bag (2 files): Adapt applicable tests to use .total rather than .elems |
19:30 | |
riceandbeans | perl5, sorry | 19:31 | |
19:32
iSlug joined
|
|||
riceandbeans | just in general, defining a multidimensional array | 19:32 | |
@array = [][]; doesn't work | |||
geekosaur | no, it won't. it's also off topic here; try #perl | ||
perl6 solutions won't help you much in perl5 | |||
FROGGS | @array = [], [] # is perl6, and almost perl 5 :o) | 19:33 | |
TimToady | @array = ([],[]); will work in either | ||
riceandbeans | is perl6 really that vastly different? | ||
geekosaur | (mainly because this is one of the areas where perl5 is most ... unusual... and perl6 is correcting that | ||
) | |||
TimToady | you'll note p6 actually makes things easier by not requiring the parens | ||
geekosaur | perl5 needs to play ugly games with references to get multidimensional stuff | ||
FROGGS | riceandbeans: yes and no, it has huge differences in some areas, but in others you an nearly write identical code | ||
geekosaur | in many ways it feels like trying to do real structures in something like C which doesn't do real structures | 19:34 | |
riceandbeans | ok, let me explain briefly what I want to do and maybe you could give me a little advice | ||
lizmat | r: role A { has %!a }; role B does A {}; class Foo does B { method BUILD (:%!a) {} } # is this a bug, or is this intended to work this way ? | ||
camelia | rakudo eb07bd: OUTPUT«===SORRY!=== Error while compiling /tmp/Cl4EuJc9DAAttribute %!a not declared in class Fooat /tmp/Cl4EuJc9DA:1------> ass Foo does B { method BUILD (:%!a) {} ⏏} # is this a bug, or is this intended expecting any of:…» | ||
riceandbeans | I want to scan a file for criteria, upon finding it, I want relative data from each line to be part of its own separate reference and able to be sorted by a certain value with it | 19:35 | |
say I'm scanning a maillog, with one line, storing from, to, msg size, attachment | |||
in ruby I'd make a class and invoke it as a new instance | 19:36 | ||
FROGGS | riceandbeans: if you need detailed perl 5 specific help then a perl 5 channel might be better | ||
lizmat | r: role A { has %.a }; role B does A {}; class Foo does B { method BUILD (:%.a) {} } # is this a bug, or is this intended to work this way ? | ||
riceandbeans | FROGGS: I'm banned there from a disagreement with popl | ||
camelia | ( no output ) | ||
PerlJam | riceandbeans: are you sure it wasn't a temp ban? | ||
riceandbeans | yeah | ||
diakopter | riceandbeans: just use a different nick if you burned that one :) | ||
FROGGS | riceandbeans: banned in #perl-help or in #perl ? | ||
riceandbeans | #perl | 19:37 | |
FROGGS | #perl-help might be your friend :o) | ||
riceandbeans | FROGGS: I'm not sure what approach I should best go with this, and how much of a pain it would be to get perl6 on CentOS6 box | ||
lue | lizmat: I want to say it's a bug, but don't trust me when it comes to private attributes :) | ||
FROGGS | riceandbeans: see, #perl's topic is: Welcome to the perl hackers' chat channel - For help, #perl-help or freenode #perl | Interesting questions may still be answered ... or not | ||
diakopter | riceandbeans: how big are your input files | ||
geekosaur points out that, having been banned in one channel, asking off topic questions in another channel is not the best way to go about getting that ban lifted | |||
diakopter | geekosaur: he was asking if he can use p6 instead | 19:38 | |
FROGGS | riceandbeans: not much pain if you an handle git, or tar and make | 19:39 | |
can* | |||
lizmat | r: role A { trusts B }; role B {} | ||
camelia | rakudo eb07bd: OUTPUT«===SORRY!=== Error while compiling /tmp/WafTtSz_QeIllegally post-declared type: B used at line 1Undeclared routine: trusts used at line 1» | ||
diakopter | geekosaur: sounds you want grep with captures put into an array of hashes or arrays | ||
erm. | 19:40 | ||
riceandbeans: I mean | |||
geekosaur: sry | |||
TimToady | r: role A { has %.a }; role B does A {}; class Foo does B { method BUILD (:%.a) {} }; B.new(:a(:lue(42))).perl.say | ||
lizmat | r: role B {} role A { trusts B } | ||
camelia | rakudo eb07bd: OUTPUT«B.new(a => ("lue" => 42).hash)» | ||
rakudo eb07bd: OUTPUT«===SORRY!=== Error while compiling /tmp/Wm1n7_HOWlTwo terms in a rowat /tmp/Wm1n7_HOWl:1------> role B {} ⏏role A { trusts B } expecting any of: statement list horizontal whitespace postfix …» | |||
lizmat | r: role B {}; role A { trusts B } | ||
camelia | rakudo eb07bd: OUTPUT«===SORRY!=== Error while compiling /tmp/rXGp6qq6XdMethod 'add_trustee' not found for invocant of class 'Perl6::Metamodel::ParametricRoleHOW'at /tmp/rXGp6qq6Xd:1------> » | ||
lizmat | I guess this is a rakudobug, or at least an LTA error | 19:41 | |
TimToady | not sure it makes sense to trust a role | 19:42 | |
(rather than a class) | |||
diakopter | r: (role { }).new | ||
camelia | ( no output ) | ||
diakopter | r: (role { }).new.WHAT.say | ||
camelia | rakudo eb07bd: OUTPUT«(<anon>)» | ||
riceandbeans | diakopter: my input files are ~70MB text files | 19:43 | |
diakopter | perl6 isn't quite ready for that | ||
19:43
japhb_ left
|
|||
TimToady | depends on how patient you are | 19:43 | |
slava | isn't java-rakudo pretty good with large files? | 19:44 | |
lizmat | but should a class that does a role, which does another role, which has a private attribute, be able to see that attribute ? | ||
FROGGS | slava: yes | ||
riceandbeans | a class would make this easier, which is why i WANT to use ruby | ||
but out of the box, everything pretty much supports perl, whereas ruby is the weirdo in the corner no one wants to talk to | |||
but sometimes he knows how to do some cool magic tricks | 19:45 | ||
TimToady | well, we're even weirder than ruby :) | ||
19:46
Tene left
|
|||
lue thinks you should be able to see the private attributes of roles from classes that C<does> those roles. | 19:46 | ||
19:47
Tene joined,
Tene left,
Tene joined
|
|||
diakopter | p5 is to p6 as Burt Wonderstone is to Jim Carrey's character | 19:47 | |
19:47
djanatyn left
|
|||
PerlJam | lizmat: but is it the role that has the private attr or does the role merely convey the role to a class and the class is what really has the private attr? | 19:47 | |
lizmat | I want to make QuantHash the basic role for Set/Bag/Mix as per spec | ||
which means I have to specify the %!elems in there | 19:48 | ||
19:48
djanatyn joined
|
|||
lizmat | but then Bag, which does Baggy, which does QuantHash, don't see the attribute anymore :-( | 19:48 | |
*doesn't | 19:49 | ||
lue | I see roles as a collection of things that classes can take and use for themselves (think starter kits for various kinds of projects). I think private attributes from roles should be visible to the class. | 19:51 | |
diakopter | lizmat: can you create accessors in Baggy for it? | ||
lizmat | and throw performance even more out of the window ? | ||
diakopter | [half-rhetorical question directed at TimToady also] :) | ||
PerlJam | lizmat: get it working first, then working fast :-) | 19:52 | |
lue | .oO(Alternate solutions: a private !setElems() method, or invent protected attributes. One of these alternates is a joke.) |
||
diakopter | PerlJam: trite | ||
lizmat instead keeps QuantHash as a shell role, until the situation improves | |||
diakopter | PerlJam: often, performance is part of "working" | 19:53 | |
PerlJam | lue: you and I apparently have similar views on roles. I wonder if the spec backs that up? I don't see anything in particular that makes me think one way or the other. | 19:54 | |
19:55
kay_ left
|
|||
TimToady | I thought we've have QuantHash for the mutable *Hash types, and QuantMap for the Setty,Baggy,Mixy types | 19:55 | |
if we need that many roles, which I don't know we do | |||
lue | PerlJam: The intro to perlcabal.org/syn/S14.html#Roles might be informative. | 19:56 | |
TimToady | but I figured the immutable/mutable distinction was probably important for how/when .totals is calculated | ||
*.total rather | |||
lue | "or a set of generic methods and their associated data" specifically | ||
19:56
japhb_ joined
|
|||
PerlJam | oh, duh. I just needed to read farther along | 19:58 | |
S14:100 even | |||
synopsebot | Link: perlcabal.org/syn/S14.html#line_100 | ||
lizmat | TimToady: the distinction between mutable / immutable is made at the lowest level, in the class | 20:00 | |
basically, overrides on at_key, delete_key and .WHICH | |||
that's all | 20:01 | ||
20:01
denis_boyun joined
|
|||
lizmat | so I don't think we need a QuantMap | 20:01 | |
Setty/Baggy/Mixy serve both the immutable as the mutable versions of Set/Bag/Mux | 20:02 | ||
Mix | |||
20:03
riceandbeans left
|
|||
jnthn | lizmat: The role attributes should be visibl ein the class, I think the ruling was. Just didn't get around to implementing it yet. | 20:04 | |
lizmat | maybe all I need is some pointers to fix this ? | 20:05 | |
jnthn | void *over_there; | ||
I can describe the change... :) | |||
TimToady | that's only one pointer :) | ||
jnthn | Smart *ass; # :P | 20:06 | |
diakopter | it could point to more than one pointer.. | ||
lue suddenly has an urge to search for the hidden wonders of abusing void pointers... | |||
jnthn | lue: See the MoarVM GC | ||
lue | :) | ||
diakopter | lue: see every GC | ||
jnthn | lizmat: At the moment, when we see a $!foo, we immediately ask the class, "do you know of a $!foo"? | ||
TimToady | technically speaking, a void pointer doesn't point to anything; it's a big enough chunk of memory to hold a pointer :) | 20:07 | |
FROGGS | and it should ask up the long ladder(tm)? | ||
jnthn | lizmat: The fix is (perhaps only when the answer is "no", or perhaps always) to store these up until after class composition time (triggered int he package_def action method) | ||
lizmat: And then do the checks then | |||
lizmat: Probably keeping the $/ around of the variables we need to check so we can get the location reporting right also. | 20:08 | ||
lizmat | ah, ok, I think that rings a bell | ||
jnthn | lizmat: Better still data structure wise is a hash of array | ||
lizmat | ok, will have a go at that | ||
jnthn | lizmat: Keys are the attribute names to check | ||
lizmat: Value is array of the $/s of the places we saw it | |||
lizmat: There is one nasty subtlety | |||
lizmat: Which is the following csae: | 20:09 | ||
role R { has int $!x }; class C does R { method m() { say $!x } } # we need to also go back and fix the AST to know that it should be looking up an int attribute | |||
20:09
kaare_ left
|
|||
lizmat | ok, that's a bit yikes | 20:10 | |
jnthn | Well, I can tell you something wrose... :P | ||
lizmat | but this doesn't work now anyway, so could wait for future refinement, no? | ||
worse ? | |||
.oO( what have I gotten myself into ;-) |
20:11 | ||
FROGGS | *g* | ||
jnthn | Worse is if somebody is silly enough to write BEGIN C.new.m; inside the class body :P | ||
diakopter | You find yourself mired in a morass of tarpits and boondoggles. | ||
jnthn | We'll call that "erroneous" or "you asked for it, you got it" :P | ||
lizmat | ah, yes, you *can* do that, but not with inherited attributes :-) | 20:12 | |
jnthn | lizmat: Well, actually if you just keep the AST nodes around, all you need do is set .returns(...) on it | ||
lizmat: There's already code there that does it today | |||
lizmat: It's just a matter of setting it later | |||
lizmat | yup, got ya (I think) | ||
jnthn | lizmat: I can't think of any further gotchas. | 20:13 | |
Oh, that BEGIN case already fails *in general*. | |||
r: class Foo { BEGIN Foo.new } | |||
20:13
grondilu joined
|
|||
camelia | rakudo eb07bd: OUTPUT«===SORRY!===No such method 'new' for invocant of type 'Foo'» | 20:13 | |
jnthn | We didn't actually add the default parent yet | ||
lizmat | *phew* | ||
jnthn | Even if we had | 20:14 | |
r: class Foo is Any { BEGIN Foo.new } | |||
camelia | rakudo eb07bd: OUTPUT«===SORRY!===No such method 'new' for invocant of type 'Foo'» | ||
jnthn | hah | ||
:) | |||
Fine :) | |||
So yeah, we can not worry | |||
lizmat | I'll give it a stab tomorrow | ||
jnthn | OK :) | ||
jnthn will be about for some of tomorrow if there's questions :) | 20:15 | ||
20:15
denis_boyun left
|
|||
lizmat | cool! I most certainly will have questions | 20:15 | |
:-) | |||
diakopter | r: class NeverTruer is unknown { } | ||
camelia | rakudo 0dbbbf: OUTPUT«===SORRY!=== Error while compiling /tmp/7SErsmJZpK'NeverTruer' cannot inherit from 'unknown' because it is unknown.at /tmp/7SErsmJZpK:1------> » | ||
diakopter cracks meself up | |||
lizmat | r: class NeverTruer is Mu {} # huh, even more unknown ? | 20:16 | |
camelia | ( no output ) | ||
lue | r: class Foo is known { } | 20:18 | |
camelia | rakudo 0dbbbf: OUTPUT«===SORRY!=== Error while compiling /tmp/ZhPba7M_Ky'Foo' cannot inherit from 'known' because it is unknown.at /tmp/ZhPba7M_Ky:1------> » | 20:19 | |
japhb__ | .oO( "But I just *said* it was known. Why don't you believe me?" ) |
20:20 | |
dalek | kudo/nom: a2bf0a4 | (Elizabeth Mattijsen)++ | / (6 files): Move set operators to their own file, for clarity and ease of maintenance |
20:21 | |
jnthn | btw, if you add up all the action method times in that thing I produced earlier, you get to 24s, and on my machine that's almost exactly half of stage parse. | 20:22 | |
um, wait, I can't math, it's a bit over half. | |||
japhb__ | Half the time after the cursless merge, or after? | 20:25 | |
s:1st/after/before | |||
jnthn | after | ||
japhb__ | Nice. | 20:26 | |
jnthn | So yeah, we spend more time asting than parsing | ||
FROGGS | jnthn: do you think that changing [...]**0..1 to [...]? might help? | 20:28 | |
japhb__ | Over 7s in just the top two; I can see why timotimo was asking about dec_number earlier. | ||
jnthn | FROGGS: Yeah, but it needs care (needs changes to action methods too) | 20:29 | |
20:29
dalek left
|
|||
jnthn | FROGGS: But it wants doing. | 20:29 | |
FROGGS | k, that was my expectation | ||
jnthn | FROGGS: It'll save an array allocation each time so it's very worth it | ||
20:29
dalek joined,
ChanServ sets mode: +v dalek
|
|||
FROGGS | why are we doing this at all?? github.com/rakudo/rakudo/blob/nom/...5210-L5211 | 20:40 | |
jnthn | FROGGS: I'm not sure. I mentioned to timotimo that nqp::radix may be able to replace those and some of what radcalc is doing | 20:42 | |
FROGGS | I mean, $int and $frac is unused | ||
colomon | dohQ | ||
doh! | |||
FROGGS++ | 20:43 | ||
jnthn | oh wtf | ||
FROGGS++ | |||
FROGGS | we are doing text-filtering stuff on numbers just for fun *g* | ||
colomon | but I *like* text-filtering numbers! | ||
japhb__ | Wow, nice catch. | ||
jnthn | Does that mean filter_number becomes unused? :) | ||
dalek | kudo/nom: d30b53e | (Elizabeth Mattijsen)++ | src/core/Baggy.pm: Slight optimization in Str / pick / roll |
||
FROGGS | colomon: go write a module! :P | 20:44 | |
diakopter | just don't git blame that... | ||
FROGGS | jnthn: yes | ||
hehe | |||
dalek | albot/host07: dd10ea1 | moritz++ | evalbot.pl: prepare some paths for hosting camelia on host07.perl6.com |
20:45 | |
jnthn | does host07.perl6.com have a JDK 7? :D | ||
colomon | diakopter: moritz added those lines, but they actually did something when he added them. | 20:47 | |
moritz++ | |||
diakopter | jnthn: yah | ||
jnthn | diakopter: yayz | ||
diakopter | jnthn: there's a nice ubuntu package | ||
www.webupd8.org/2012/01/install-ora...u-via.html | 20:48 | ||
updates same-day as new downloads from Oracle | |||
japhb__ | Who owns that box? | ||
diakopter | moi | ||
japhb__ | Thank you, diakopter++! | 20:49 | |
What kind of machine is it? | |||
diakopter | medium-class virtual | ||
japhb__ | Which hosting service? | ||
diakopter tries to remember | 20:50 | ||
japhb__ | *chuckle* | ||
diakopter | digitalocean.com | ||
mwilson@host07:~$ uptime 20:50:33 up 103 days | |||
japhb__ | 2 GB RAM or 4 GB? | 20:51 | |
japhb__ is looking at www.digitalocean.com/pricing ... | |||
diakopter | 3.9GB | ||
moritz | 4GB, modulo rounding errors :-) | ||
lue just had a violent mental reaction to src/core/set_operators.pm | 20:52 | ||
lizmat | lue: why ? | 20:53 | |
japhb__ | Good. That should be able to build one thing while running a couple queries at the same time | ||
lue | something about <<"\x220B">> just threw me for a loop. | ||
diakopter | japhb__: the two cores aren't super-fast | ||
lizmat | ah, yes | ||
diakopter | but they're okay | 20:54 | |
japhb__ | diakopter: I'd rather slow cores than running out of RAM .... | ||
lizmat | lue: I *could* put in the actual unicode characters, but then parse time would be x15 or so | ||
diakopter | *whimper* | ||
japhb__ | lizmat: That bad? I thought it was only 2-4x worse for parse with Unicode ... | ||
lue | Oh, OK. I was about to say if someone could explain that to me, I'd be fine. That's a perfectly acceptable reason. | ||
japhb__ | Has the delta gotten way worse in the last 6 months? | 20:55 | |
lizmat | let me put it this way: normally parse time is around 2 minues | ||
the last time I tried it, I stopped it after it had been busy for 50+ minutes | |||
japhb__ | Holy crap. | ||
lue | O.o | ||
japhb__ | That's insane. | ||
lizmat | I welcome you to prove me wrong :-) | ||
lue | methinks that's a serious bug. | ||
japhb__ | That feels like a big bug | 20:56 | |
lizmat | it's a known issue | ||
FROGGS | an Unibug! | ||
diakopter | deficiency, not bug | ||
FROGGS | diakopter: would moarvm have the same problem? | ||
diakopter | unclear. | ||
japhb__ | Is Unicode parsing O(n**2) or something? | ||
lue | r: my infix:<<"\x2603">>($a, $b) {say $a, "☄", $b}; say now - BEGIN now; | 20:57 | |
camelia | rakudo 0dbbbf: OUTPUT«===SORRY!===Type 'infix:<☃>' is not declaredat /tmp/pXM71Bdn7N:1------> my infix:<<"\x2603">>⏏($a, $b) {say $a, "☄", $b}; say now - BEMalformed myat /tmp/pXM71Bdn7N:1------> my infix:<<"\x⏏2603">>($a, $b…» | ||
jnthn | diakopter: Won't because the problem is utf-8 being used as an internal representation | ||
lue | r: sub infix:<<"\x2603">>($a, $b) {say $a, "☄", $b}; say now - BEGIN now; | ||
camelia | rakudo 0dbbbf: OUTPUT«0.05488848» | ||
jnthn | diakopter: Which Moar doesn't do | ||
lue | r: sub infix:<☃>($a, $b) {say $a, "☄", $b}; say now - BEGIN now; | ||
camelia | rakudo 0dbbbf: OUTPUT«0.0537766» | ||
jnthn | Nor does JVM, so I imagine the setting bug doesn't exist there either | 20:58 | |
s/setting/unicode/ | |||
diakopter | I find it funny that atoi is faster than utf8 indexing | ||
lizmat | lue: just insert "#∅" anywhere in the setting, and try to build :-) | 20:59 | |
lue | I could pull out my old laptop with an old old copy of rakudo on it, and see which setting compiles sooner :P | ||
20:59
skids left
21:01
grondilu left,
iSlug left
21:04
aindilis left
21:05
REPLeffect left,
dmol left
|
|||
dalek | p: 7d0611b | (Tobias Leich)++ | src/HLL/Grammar.nqp: [...]**0..1 to [...]? for dec_number |
21:06 | |
21:07
dmol joined
|
|||
dalek | kudo/nom: 6f84eb5 | (Tobias Leich)++ | / (3 files): [...]**0..1 to [...]? for dec_number Also strip call to filter_number(). |
21:09 | |
21:11
sqirrel left
21:13
zwut00 left
21:14
donaldh joined
|
|||
dalek | kudo/nom: 147c1e0 | (Elizabeth Mattijsen)++ | src/core/Baggy.pm: Normalize Baggy.gist to make consistent with future Mixy.gist |
21:14 | |
21:15
Rotwang left,
bluescreen10 left
|
|||
dalek | ast: cf33793 | (Elizabeth Mattijsen)++ | S02-types/bag (2 files): Fix tests for new Baggy.gist format |
21:15 | |
21:22
dmol left
21:23
raiph joined
|
|||
raiph | .tell fglock TimToady doesn't like $*OS: irclog.perlgeek.de/perl6/2013-09-07#i_7555053 | 21:26 | |
yoleaux | raiph: I'll pass your message to fglock. | ||
diakopter | moritz: .cabal is in /root not ~p6eval | 21:35 | |
21:37
PacoAir left
|
|||
lizmat | TimToady: .pick($n > 1) on a MixHash, how would that work? I assume it won't work? What to deduct for a chosen key? | 21:45 | |
(or on a Mix, for that matter) | 21:46 | ||
TimToady | I don't we need to support .pick on a Mix until someone comes up with a real use case | 21:47 | |
lizmat | okidoki | 21:48 | |
diakopter wonders what a Mix is | 21:49 | ||
is that like a compilation of your fav songs on a tape? | |||
TimToady | kinda | 21:50 | |
diakopter | or a saved setting of audio output levels? | ||
TimToady | with a marking that says how much you like each one | ||
diakopter | is it ordered? | ||
TimToady | no | ||
it's a Bag with fractional balls | 21:51 | ||
21:51
alester left
|
|||
lizmat | :-) | 21:51 | |
possibly negative even | |||
TimToady | or dice that are loaded | ||
diakopter | what is it keyed on | 21:52 | |
lizmat | anything you want | ||
TimToady | anything that can be in a set or bag | ||
21:53
aindilis joined
|
|||
diakopter | but its .Str ? | 21:53 | |
TimToady | what about its .Str? | ||
diakopter | is that what it's keyed on? | ||
TimToady | no | ||
japhb__ | .WHICH? | ||
TimToady | 3rd base | 21:54 | |
diakopter | .WHICH.Str ? | ||
.WHO??? | |||
TimToady | today, tomorrow... | ||
lizmat | $ perl6 -e 'Mix.new-fp((a=>1.5, b=>2.5)).Str.say' | ||
a(1.5) b(2.5) | |||
TimToady | it's just an object hash | ||
perigrin | .o($doctor.WHO) | ||
diakopter | .oO( but who's on second ) |
21:55 | |
TimToady | beats me, I'm just the warmup band | 21:56 | |
perigrin | .WHO is :on_first | ||
japhb__ | Speaking of which. I've been taking a tuit here and there to try to unbitrot p6-pb (samuraisam/ssutch's Perl 6 Proto Buffers project). It compares different nodes of its model using overloaded infix:<eq>. Am I correct in thinking that it should overload infix:<eqv> instead? | ||
21:56
BenGoldberg joined
|
|||
diakopter | www.archive.org/download/otr_abbott...ve_Rad.mp3 | 21:56 | |
lizmat | diakopter: the current rakudo implementation uses the .WHICH of the object to key on, but keeps a copy of the object as well | 21:57 | |
diakopter | why not the original? | ||
(why a copy) | |||
lizmat | why not the original what ? | ||
TimToady | abbot and costello | ||
lizmat | ah, sorry, yes, the original | ||
TimToady | *tt | ||
BenGoldberg | The original Abbot and Costello? | 21:58 | |
PerlJam | .oO( costtello? ) |
||
diakopter | .oO( originttal? ) |
||
lizmat | %h{object.WHICH} = ( object,value ) basically | ||
$ perl6 -e '(a=>1.5, b=>2.5).Mix.Str.say' | 21:59 | ||
a(1.5) b(2.5) | |||
BenGoldberg | What position is WHICH playing? | ||
diakopter | is there like a farce of the absurd where the level of absurdity becomes absurd? | ||
TimToady | if it were kept as object => value it'd be very easy to return .pairs | ||
lizmat | TimToady: it is | ||
%h{object.WHICH} = ( object => value ) basically | 22:00 | ||
:-) | |||
PerlJam | diakopter: If there is, #perl hasn't reached it yet (not for lack of trying though) | 22:01 | |
dalek | kudo/nom: 61580f2 | (Elizabeth Mattijsen)++ | / (8 files): Initial implementation of Mixy / Mix / MixHash, as per spec (almost) |
||
FROGGS | or we are beyond measurement | ||
PerlJam | oh, perhaps we've already "wrapped around" absurdity | 22:02 | |
lizmat | and that's enough for today, absurdly enough | ||
FROGGS | /o\ we are trapped in an absurdity-loop! /o\ | 22:03 | |
lizmat | tomorrow I'll have a stab at fixing the private attribute visibility problem with roles | ||
good night, #perl6! | |||
the absurdity of my attempts will become clear tomorrow :-) | 22:04 | ||
FROGGS | gnight! | ||
*g* | |||
jnthn | 'night, lizmat | ||
PerlJam | good night lizmat! pleasant dreams! | ||
TimToady | oo/ | ||
japhb__ | So *anyway* ... am I correct that the correct equivalence test for a tree node structure should be infix:<eqv>? | 22:05 | |
PerlJam | japhb__: sounded right to me. but I'm no expert | ||
TimToady | well, === would only check that the two parent objects were the same object | ||
22:06
bbkr left
|
|||
TimToady | (unless they happened to be immutable value trees) | 22:06 | |
22:06
bbkr joined
|
|||
diakopter | lizmat: nite | 22:07 | |
japhb__ | OK, I'll patch that too. | ||
perigrin | ($witch.WHICH is which?) | 22:09 | |
BenGoldberg | The absurdity of #perl6 is greater than א₀ but less than א₁ | 22:11 | |
TimToady | otoh, if you have two tree that you're just comparing fringes of, and don't care whether the nodes are the same, then eq is likelier to work, assuming .Str only emits the leaves | ||
*treeses | 22:12 | ||
japhb__ | TimToady: " | 22:13 | |
er | |||
TimToady ponders the relurdity of it all | |||
22:13
REPLeffect joined
|
|||
japhb__ | TimToady: But wouldn't the infix:<eqv> multis be expected to know that's what makes sense for that tree? | 22:13 | |
TimToady | japhb__: you'd think | 22:14 | |
japhb__ | True, I would. :-) | ||
TimToady | and, in fact, our string types might end up looking like that underneath | ||
but the nodes would be an implementation detail | 22:15 | ||
japhb__ | Sure. | ||
What's the current idiom for marking that an attribute's value must be specified during object construction? Is it still 'has $.foo = die "Must specify a value for the foo attribute when constructing $?CLASS"' ? | 22:23 | ||
Because ... eww/ | |||
TimToady | nothing better yet | ||
22:23
FROGGS[mobile] left
|
|||
TimToady | course, one could define something that was shorter | 22:24 | |
japhb__ | I can see why samuraisam just specified a new() to allow required params ... | ||
At one point I thought we discussed 'has $.foo is required' or somesuch, but ISTR there was some reason it wouldn't work at the time. Can we resurrect that now? | 22:25 | ||
22:27
bluescreen10 joined
|
|||
TimToady | r: class Foo { has $.foo = !!! }; Foo.new | 22:28 | |
camelia | rakudo 61580f: OUTPUT«Stub code executed in method at /tmp/pt7C4gVK33:1 in block at src/gen/CORE.setting:871 in method BUILDALL at src/gen/CORE.setting:826 in method bless at src/gen/CORE.setting:815 in method new at src/gen/CORE.setting:800 in method new at src/gen/CO…» | ||
TimToady | that's pretty short :) | ||
japhb__ | Heh | ||
Too bad that for this use the error ends up being LTA ... | 22:29 | ||
TimToady | r: class Foo { has $.foo = !!! 'foo' }; Foo.new | ||
camelia | rakudo 61580f: OUTPUT«foo in method at /tmp/eDuIMWOTlG:1 in block at src/gen/CORE.setting:871 in method BUILDALL at src/gen/CORE.setting:826 in method bless at src/gen/CORE.setting:815 in method new at src/gen/CORE.setting:800 in method new at src/gen/CORE.setting:798…» | ||
japhb__ | r: class Foo { has $.foo = !!! 'foo value required' }; Foo.new | 22:30 | |
camelia | rakudo 61580f: OUTPUT«foo value required in method at /tmp/1dTnTyRS6h:1 in block at src/gen/CORE.setting:871 in method BUILDALL at src/gen/CORE.setting:826 in method bless at src/gen/CORE.setting:815 in method new at src/gen/CORE.setting:800 in method new at src/gen/CO…» | ||
japhb__ | Hmmmm. | ||
TimToady | r: class Foo { has $.foo is default(42) }; Foo.new | 22:31 | |
camelia | rakudo 61580f: OUTPUT«===SORRY!=== Error while compiling /tmp/wdXQzQzjRMCan't use unknown trait 'is default' in an attribute declaration.at /tmp/wdXQzQzjRM:1------>  expecting any of: rw readonly box_target» | ||
TimToady | looks like we have traits on attrs now though, at least syntactically | 22:32 | |
well, we always had rw | |||
jnthn | multi trait_mod:<is>(Attribute:D $a, :$required!) { $a.set_build(method () { die "$a.name is required" } }; class Foo { has $.foo is required; }; Foo.new | ||
r: multi trait_mod:<is>(Attribute:D $a, :$required!) { $a.set_build(method () { die "$a.name is required" } }; class Foo { has $.foo is required; }; Foo.new | |||
camelia | rakudo 61580f: OUTPUT«===SORRY!=== Error while compiling /tmp/AEA5wD1dsZUnable to parse expression in argument list; couldn't find final ')'at /tmp/AEA5wD1dsZ:1------> method () { die "$a.name is required" } ⏏}; class Foo { has $.foo is required; …» | ||
dalek | p: e0585e5 | (Tobias Leich)++ | src/NQP/ (2 files): [...]**0..1 to [...]? in deflongname |
22:33 | |
nqp: ab37e54 | (Tobias Leich)++ | src/NQP/ (2 files): | |||
nqp: [...]**0..1 to [...]? in statement | |||
22:33
dalek left
|
|||
jnthn | r: multi trait_mod:<is>(Attribute:D $a, :$required!) { $a.set_build(method () { die "$a.name is required" }) }; class Foo { has $.foo is required; }; Foo.new | 22:33 | |
camelia | rakudo 61580f: OUTPUT«Too many positional parameters passed; got 2 but expected 1 in method <anon> at /tmp/mCzly_jDrt:1 in block at src/gen/CORE.setting:871 in method BUILDALL at src/gen/CORE.setting:826 in method bless at src/gen/CORE.setting:815 in method new at src/gen…» | ||
jnthn | r: multi trait_mod:<is>(Attribute:D $a, :$required!) { $a.set_build(method (Z) { die "$a.name is required" }) }; class Foo { has $.foo is required; }; Foo.new | ||
camelia | rakudo 61580f: OUTPUT«===SORRY!=== Error while compiling /tmp/fqg_X28QeyInvalid typename 'Z' in parameter declaration.at /tmp/fqg_X28Qey:1------> a, :$required!) { $a.set_build(method (Z⏏) { die "$a.name is required" }) }; clas» | ||
jnthn | argh | ||
22:33
dalek joined,
ChanServ sets mode: +v dalek
|
|||
jnthn | r: multi trait_mod:<is>(Attribute:D $a, :$required!) { $a.set_build(method (|) { die "$a.name is required" }) }; class Foo { has $.foo is required; }; Foo.new | 22:33 | |
camelia | rakudo 61580f: OUTPUT«$!foo.name is required in method <anon> at /tmp/qh6KpO8Ymi:1 in block at src/gen/CORE.setting:871 in method BUILDALL at src/gen/CORE.setting:826 in method bless at src/gen/CORE.setting:815 in method new at src/gen/CORE.setting:800 in method new at …» | ||
jnthn | r: multi trait_mod:<is>(Attribute:D $a, :$required!) { $a.set_build(method (|) { die "$a.name() is required" }) }; class Foo { has $.foo is required; }; Foo.new | ||
camelia | rakudo 61580f: OUTPUT«$!foo is required in method <anon> at /tmp/GBIcDY7c76:1 in block at src/gen/CORE.setting:871 in method BUILDALL at src/gen/CORE.setting:826 in method bless at src/gen/CORE.setting:815 in method new at src/gen/CORE.setting:800 in method new at src/g…» | ||
jnthn | Or something like that :) | 22:34 | |
TimToady | obviously completely impossible yet :) | ||
jnthn | Yeah. Can't be done. :) | ||
r: multi trait_mod:<is>(Attribute:D $a, :$required!) { $a.set_build(method (|) { die "$a.name().substr(2) is required" }) }; class Foo { has $.foo is required; }; Foo.new # neater, I guess | |||
camelia | rakudo 61580f: OUTPUT«foo is required in method <anon> at /tmp/0xG2PeY5Hw:1 in block at src/gen/CORE.setting:871 in method BUILDALL at src/gen/CORE.setting:826 in method bless at src/gen/CORE.setting:815 in method new at src/gen/CORE.setting:800 in method new at src/gen…» | ||
jnthn | r: multi trait_mod:<is>(Attribute:D $a, :$required!) { $a.set_build(method (|) { die "$a.name().substr(2) is required to construct a {self.^name}" }) }; class Foo { has $.foo is required; }; Foo.new # informativer | 22:35 | |
camelia | rakudo 61580f: OUTPUT«foo is required to construct a Foo in method <anon> at /tmp/NAZsRkFb7z:1 in block at src/gen/CORE.setting:871 in method BUILDALL at src/gen/CORE.setting:826 in method bless at src/gen/CORE.setting:815 in method new at src/gen/CORE.setting:800 in me…» | ||
TimToady | couldn't we find a longer name than "required"? required-to-be-initialized-or-else | ||
FROGGS | is needed | ||
jnthn | is obligatory | ||
diakopter | is mandatory? | 22:36 | |
japhb__ | is needy # ;-) | ||
diakopter | is necessary | ||
is crucial | |||
TimToady | is critical | ||
is a must | |||
diakopter | is indispensable | ||
FROGGS | has $.mass is critical | ||
japhb__ | *BOOM* | 22:37 | |
BenGoldberg | indispecriticucianecesseedatory | 22:38 | |
diakopter | perfect | ||
TimToady | r: class Foo { has Int:D $.foo }; Foo.new | ||
camelia | ( no output ) | ||
TimToady | seems like that should blow up | ||
jnthn | No idea how or where. :) | ||
diakopter | n: class Foo { has Int:D $.foo }; Foo.new | ||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===Only simple types may be attached to variables at /tmp/Y3qXTs_T0b line 1:------> class Foo { has Int:D⏏ $.foo }; Foo.newUnhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.sett…» | 22:39 | |
FROGGS | ohh, it blows | ||
diakopter | up. | ||
TimToady | niecza++ for knowing when it doesn't know :) | ||
FROGGS | r: my Int:D $x | ||
camelia | ( no output ) | ||
BenGoldberg | rn: class Foo { has int:D $foo }; Foo.new.say | 22:40 | |
FROGGS | :D | ||
camelia | rakudo 61580f: OUTPUT«Foo.new()» | ||
..niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===Malformed has at /tmp/Mb0HsJlL6h line 1:------> class Foo { has⏏ int:D $foo }; Foo.new.sayParse failed» | |||
TimToady | if Int:D is an invariant, we seem to be varying rather early | 22:41 | |
japhb__ | "invariants aren't"? | ||
22:42
kay joined
|
|||
BenGoldberg | And here I thought :D was a smiley face. | 22:42 | |
22:42
kay is now known as Guest27353
|
|||
TimToady | the Int:D approach would also prevent people from setting it to an undefined value later | 22:44 | |
would be nice if it could be used to check initialization too | |||
jnthn | Might be able to fudge a way :) | 22:45 | |
TimToady | I suppose we could check for it particularly and install an = die "Must be initialized to an defined value" | ||
or some such | |||
but only if there isn't an = pseudoassignment already | 22:46 | ||
jnthn | I was pondering sticking it into the buildplan somehow... | ||
TimToady | that'd work for my as well as has, seems | ||
jnthn | Hm | ||
Isn't | |||
my Int:D $x; | |||
Just statically an error? | |||
TimToady | yes, could be | 22:47 | |
TimToady ponders the Int():D type... | 22:48 | ||
BenGoldberg | Here's another "wouldn't it be nice" ... if there were a way to tell perl that certain of a class's member values should be initialized *positionally* from the constructor's argument list. | ||
lue thinks at some point you should stop relying on the default constructor | 22:49 | ||
TimToady | there is, it's called writing your own constructor | ||
BenGoldberg | So I could say: class Foo { has $bar <something something>; }; my $baz = new Foo(4); # $baz.bar is now 4 | ||
jnthn | TimToady: Yes, the combinatorics there are one thing that's made me not be too hasty to work on these ;-) | ||
TimToady | note, however, that it doesn't support derived classes very well to use positionals | ||
lue | BenGoldberg: method new($attr1) { ... } :) | ||
22:51
btyler left
|
|||
TimToady | it's almost easy, if you name the positionals right, and you can bless 'em as :$myattr | 22:51 | |
ajr_ | should perl6 -e "for 1..3 {say $_}" not give the same output as perl6 -e "for 1..3 {.say }" ? | ||
lue | I can't help but wonder if "this attribute is required" is common enough to save people from writing :$attr! filled constructors themselves. I'm middle-of-the-road on the issue. | ||
BenGoldberg | r: for 1..3 { say $_ }; for 1..3 { .say } | ||
camelia | rakudo 61580f: OUTPUT«123123» | ||
lue | ajr_: .say is equal to $_.say | 22:52 | |
donaldh | Hmmm, eager ListIters allocate a 100_000 element SixModelObject[] right off the bat. | ||
lue | (which is equal to say $_) | ||
ajr_ | The first produces 1..3 | ||
True | |||
3 times | |||
The second: | |||
1 | |||
2 | |||
3 | |||
lue | r: for 1..3 {.say }; | ||
camelia | rakudo 61580f: OUTPUT«123» | 22:53 | |
BenGoldberg | What do you mean, 1..3 three times? | ||
TimToady | how old is your rakudo? | ||
ajr_ | 1..3 | ||
True | |||
1..3 | |||
2013.09 | |||
lue | r: for 1...3 {say $_} | ||
camelia | rakudo 61580f: OUTPUT«123» | ||
TimToady | 1..3 and 1...3 should be equivalent in list context | ||
jnthn | ajr_: On Parrot or JVM, and where are you running it? | ||
ajr_ | parrot | 22:54 | |
TimToady | isn't camelia using parrot? | ||
diakopter | not for long | ||
BenGoldberg | ajr: When you type "perl6 -e ...", what shell are you using? | ||
ajr_ | bash | 22:55 | |
TimToady | so $_ is getting interplated by the shell? | ||
BenGoldberg | If the shell's environment variable _ contains "1..3", and if your shell is interpolating $_, you could be getting unexpected results | ||
lue | try perl6 -e ' ... ' instead of perl6 -e " ... " | ||
TimToady | since it's in double quotes | ||
ajr_ | doh! | ||
BenGoldberg | :) | ||
TimToady | ajr_: don't feel special, we all do this one from time to time | 22:56 | |
ajr_ | That was it. Sorry. | ||
donaldh | rakudo allocates 15 of these 100_000 element SixModelObject[]s before it can 'say 1'. | 22:57 | |
japhb__ | Shell quoting: it's why Perl has arbitrary quote constructs. | ||
donaldh: Why 100_000? | |||
jnthn | donaldh: Hm. That's a little over-keen... | 22:58 | |
donaldh | japhb__: a page up | ||
japhb__ | donaldh: I meant, where did that magic number come from? | 22:59 | |
donaldh | japhb__: in ListIter.pm my int $max = 100_000; | 23:00 | |
japhb__ has been iterating on the error message from an 'is required' sort of construct. How does "Foo::Bar requires a value for attribute foo" sound? | |||
donaldh | an eager ListIter allocates an array this size. | ||
japhb__ | Ah. | ||
jnthn | Well, it wants to avoid having to resize... | ||
But yeah, that's a big chunk size. | 23:01 | ||
japhb__ | s/00_// | ||
donaldh | The weird thing is these seem to get allocated just to load the CORE.setting. | ||
diakopter | jnthn: I think it should x8 in size until 100k or so, then just double like usual | ||
japhb__ | Is power-of-two an advantage? Would a chunk size of 2 ** N be better than 10 ** M ? | 23:02 | |
23:02
kivutar joined
|
|||
jnthn | diakopter: The resizing is *exactly* what we're trying to avoid. | 23:03 | |
japhb__: yes, most likely | |||
BenGoldberg | Why not profile it somehow? | ||
diakopter | jnthn: I'm saying that would reduce it a lot | ||
japhb__ | jnthn: Sure, but log base 8 (N / 1024) is going to be pretty small. | ||
BenGoldberg | See what happens if your set $max to ... 10 or so, and keep track of how many times it gets resized... then change $max so it's just big enough to not resized while loading CORE.setting. | 23:04 | |
donaldh | As an aside, a min size of 8 for VMArrayInstance is quite wasteful when parsing CORE.setting. Very many < 4 element arrays. | ||
Very many single element arrays. | |||
japhb__ | Didn't niecza have an optimization for that at one point? | 23:05 | |
TimToady | perl 5 always starts with 4, iirc | ||
or did, last I looked | |||
donaldh | BTW these 15 arrays are full of nulls | ||
jnthn | donaldh: Do they live? | 23:07 | |
BenGoldberg | japhb__: What happens if Foo::Bar requires a value for $.foo, and also for @.foo? Does it print the same error message twice? | ||
donaldh | let me check again. | ||
jnthn | BenGoldberg: You won't make it past compile time, iirc... | 23:08 | |
japhb__ | BenGoldberg: How would you even do that? Constructors expect to refer to attributes using the un-sigiled name .... | ||
jnthn | r: class A { has $.foo; has @.foo; } | ||
camelia | rakudo 61580f: OUTPUT«===SORRY!===Two or more attributes declared that both want an accessor method 'foo'» | ||
TimToady | ah, yes, note that perl 5 only extends by 20% !!! | ||
newmax = key + AvMAX(av) / 5; | |||
BenGoldberg | Ahh, ok, nevermind | ||
TimToady | and gets by fine with that | 23:09 | |
the overhead of copying pointers gets swamped by the overhead of actually putting more stuff into the array | |||
so it's better to guess small | |||
diakopter | fsdo of "gets" "by" and "fine" | ||
donaldh | jnthn: yes, they are still referenced, while at the REPL prompt | ||
jnthn | donaldh: eek, ok | ||
r: 15 * 100_000 * 8 | 23:10 | ||
camelia | ( no output ) | ||
jnthn | r: say 15 * 100_000 * 8 | ||
camelia | rakudo 61580f: OUTPUT«12000000» | ||
japhb__ | jnthn: That error reminds me ... what's the BCP for error messages with regards to quoting interpolants? Meaning, should we be saying "method foo" or "method 'foo'"? | ||
jnthn | japhb__: Typically quote method names, but not type names (as the uppercase starting letter is clue enough) | ||
TimToady | diakopter: p5 relies on the programmer to pre-extend the array if they have better knowledge | 23:11 | |
japhb__ | OK, and I assume quote attribute names as well, since they lack the uppercase. | ||
jnthn | makes sense | ||
TimToady | but 100_000 is just stupid | ||
diakopter | well, lazy anyway | 23:12 | |
japhb__ | And how big is an array slot? One pointer? Or a full object inlined? | ||
donaldh | jnthn: they are referenced by oLex and oRet of various CallFrames. | ||
japhb__ | Oh, I see you used * 8, so I'm assuming one pointer | ||
donaldh | jnthn: the graph of CallFrames seems to go on for evah | 23:13 | |
TimToady | diakopter: this seems like a better time to be impatient than to be lazy :) | 23:14 | |
jnthn | That may be due to the prior_invocation thing that I managed to kill off over in MoarVM and now need to do for the JVM. | 23:15 | |
TimToady: Well, it's *meant* to do this when it knows there's a huge number of things coming. Apparently it's doing it when it doesn't know. | |||
donaldh | well, caller [ <- caller ]+ <- priorInvocation | ||
yeah | |||
TimToady | maybe we should remember how many things we got last time we did this :) | 23:16 | |
diakopter | sshhh don't give away all the secrets | ||
donaldh | Yeah, eagerness is triggered by: my $eager = nqp::p6bool(nqp::istype($n, Whatever) || $n == $Inf); | 23:17 | |
TimToady | seems like that should trigger laziness, not eagerness | ||
donaldh | oops, wrong paste. my $eager = nqp::p6bool(nqp::istype($n, Whatever)); | ||
TimToady | still | 23:18 | |
this couldn't be the for eagerness bug, could it? | |||
hmm, doesn't seem like it could | 23:19 | ||
jnthn | I *think* that's something else, but I've known since Austin Pm wants to re-do various things in lists, including to support the hyper/race things | ||
donaldh | oh, look at the hour. | 23:20 | |
goodnight o/ | |||
jnthn | 'night, donaldh++ | ||
TimToady | yes, we talked about that; we don't really need to pass all those contexts down the stack, but we do need to at least know when there's going to be a list-context handshake of some sort | ||
o/ | |||
jnthn | *nod* | 23:21 | |
23:21
donaldh left
|
|||
jnthn | Anyway, I'm inclined to wait for that to happen rather than try to patch it here and there... | 23:21 | |
TimToady | since you have to generate one on the caller end as well as the callee | ||
a simple dynvar ain't gonna cut it | |||
jnthn | *nod* | 23:22 | |
The one list-y thing I do plan to refactor in the next weeks is feeds, but that'll be after the monthly release... | 23:23 | ||
Want to try and get them to the point where I can do the producer/consumer stuff on JVM. | |||
For now though, I want to sleep :) | 23:24 | ||
'night o/ | |||
TimToady | \o | ||
23:29
Guest27353 left
|
|||
TimToady | nr: constant @fact = 1, * * ++(my $) ... *; say @fact[5] | 23:36 | |
camelia | niecza v24-95-ga6d4c5f: OUTPUT«120» | ||
..rakudo 61580f: OUTPUT«===SORRY!=== Error while compiling /tmp/XM9g02xuRaUnsupported use of $) variable; in Perl 6 please use $*EGIDat /tmp/XM9g02xuRa:1------> constant @fact = 1, * * ++(my $)⏏ ... *; say @fact[5]» | |||
TimToady | nr: constant @fact = 1, * * ++(my $ ) ... *; say @fact[5] | ||
camelia | rakudo 61580f, niecza v24-95-ga6d4c5f: OUTPUT«120» | ||
TimToady | std: constant @fact = 1, * * ++(my $) ... *; say @fact[5] | 23:37 | |
camelia | std 4cde04e: OUTPUT«ok 00:00 46m» | ||
TimToady | I guess the fix for that hasn't got into rakudo yet | ||
lue | TimToady: what's the purpose of (my $) anyway? Not upset about it, but just curious :) . | 23:44 | |
geekosaur | evil way to make a closure with a "static" local variable (WhateverCode) | 23:47 | |
TimToady | it's just an anonymous variable | ||
nr: constant fact = 1, * * ++my $ ... *; say fact[5] | 23:48 | ||
camelia | rakudo 61580f: OUTPUT«120» | ||
..niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: System.NullReferenceException: Object reference not set to an instance of an object at Builtins.InvokeSub (Niecza.P6any obj, Niecza.Variable[] pos) [0x00000] in <filename unknown>:0  at Niecza.Kernel.ToComposable (Niecza.STable…» | |||
TimToady | I guess we really don't need the parens there | ||
lovely nieczabug, btw | |||
r: constant fact = 1, * * ++my$ ... *; say fact[5] | 23:50 | ||
camelia | rakudo 61580f: OUTPUT«120» | ||
TimToady | I guess my doesn't require ws | ||
TimToady wonders if my$ will catch on as an idiom | 23:54 | ||
BenGoldberg | r: constant fact = 1, * * ++my$ ... *; say fact[^5] | 23:55 | |
camelia | rakudo 61580f: OUTPUT«1 1 2 6 24» | ||
TimToady | nr: say my$++ for 1..5 | ||
camelia | niecza v24-95-ga6d4c5f: OUTPUT«01234» | ||
..rakudo 61580f: OUTPUT«===SORRY!=== Error while compiling /tmp/BAxHQZsC_tUndeclared routine: for used at line 1» | |||
BenGoldberg | Undeclared routine:[empty name]? :) | 23:56 | |
TimToady | say what? | ||
guess it's parsing as ( my $ ) + + for | 23:57 | ||
nr: say my$++ | 23:59 | ||
camelia | rakudo 61580f: OUTPUT«===SORRY!=== Error while compiling /tmp/p_iFSPZcxpTwo terms in a rowat /tmp/p_iFSPZcxp:1------> say my$++⏏<EOL> expecting any of: scoped declarator constraint postfix infix stopper …» | ||
..niecza v24-95-ga6d4c5f: OUTPUT«0» | |||
TimToady | um... |