»ö« 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.
jnthn 'night, #perl6 00:10
timotimo night jnthn 00:11
00:11 shachaf joined 00:16 aghbas joined 00:20 colomon joined 00:24 ajr_ left, lue left 00:25 grondilu left 00:31 shachaf left
timotimo enh. i think i worked myself into a corner. now i don't know where my error comes from ... somewhere an NQPMu snuck in 00:31
00:37 lue joined
timotimo finds out that serialise_array and serialize_aos are actually still needed :( 00:41
dalek p: 173dc64 | (Solomon Foster)++ | src/ (2 files):
Change name sprintfAddHandler to sprintfaddargumenthandler.
00:44
kudo/nom: 492feb2 | (Solomon Foster)++ | src/core/Cool.pm:
Change name sprintfAddHandler to sprintfaddargumenthandler.
01:07 PacoAir left
timotimo is building all of p6doc with the new code now 01:13
hardly any add_constant, mostly just $*W.find_symbol([...]).new(...) 01:14
01:14 benabik left
timotimo hum. i have a string in a twine that should be an object instead :| 01:14
01:22 aghbas left
BenGoldberg .ping 01:32
where is yoleaux? 01:33
preflex: seen yoleaux
preflex yoleaux was last seen on #perl6 1 day, 3 hours, 35 minutes and 17 seconds ago, saying: There is no ping command; nor can this be construed as a response.
01:34 FROGGS_ joined
TimToady then it disappeared in a puff of logic 01:36
01:36 benabik joined 01:38 FROGGS left, PacoAir joined
timotimo turns out i just verschlimmbessert the pod code 01:39
hopefully i can make it all work out tomorrow 01:41
gm.
hm*
can full pod blocks be attached to things oin perl code? or just pod strings with formatting codes? 01:42
BenGoldberg r: my @a = 1..*; say @a.infinite, @a.uniq.infinite, @a.squish.infinite, (map { -$_ }, @a).infinite; 01:45
camelia rakudo 492feb: OUTPUT«True(Mu)(Mu)(Mu)␤»
timotimo computer says no
meaning only formatted strings 01:46
i wonder if that will turn out to be a deficiency
or if perhaps i missed another way to attach docs
01:47 PacoAir left
timotimo indeed the brackets would allow nested blocks so i was wrong 01:50
good to know
do i understand correctly that :margin allows you to put parts of text at differing columns in thevsame block? 01:55
01:59 kaare__ joined 02:07 colomon left
raiph timotimo: "not sure i made clear to him how objectively far along rakudo is nowadays" -- how far along do you think it is? 02:22
timotimo raiph: "I REALLY LOVE PLAYING WITH IT" is totally objective, no? 02:25
02:26 preflex left
raiph totally :) 02:29
timotimo i'm willing to invest more time into pod6 because i like it a bit better than for example markdown 02:36
02:46 kaare__ left 02:49 orafu left, OuLouFu joined 02:50 OuLouFu is now known as orafu
sorear o/ 03:00
JimmyZ \o 03:12
03:17 tokuhirom joined 03:49 tokuhirom left 04:18 BenGoldberg left 04:29 Psyche^ joined 04:30 arlinius joined 04:32 Psyche^_ left 04:48 SamuraiJack joined 04:50 FROGGS_ left 04:52 raiph left 05:04 jaldhar joined 05:08 raiph joined, raiph left 05:12 raiph joined 05:17 colomon joined 05:45 raiph left 05:50 jaldhar left 05:52 jaldhar joined 06:12 Bzek left
TimToady jnthn: it's not clear to me why all of the stringy substrs shouldn't just be called substr, assuming that doesn't interfere badly with type inference or some such 06:19
06:21 PacoAir joined 06:34 SamuraiJack left 06:58 benabik left 07:01 iSlug joined 07:25 xilo left 07:38 cognominal left 07:39 cognominal joined 07:40 spider-mario joined
tadzik good morning #perl6 08:03
08:05 domidumont joined 08:37 ilogger2 joined, ChanServ sets mode: +v ilogger2, ggoebel2 joined 08:39 domidumont joined 08:40 jnthn joined 08:41 moritz_ joined 08:42 zakalwe_ joined, zakalwe_ left, zakalwe_ joined, Bucciarati_ joined 08:44 genehack_ joined 08:45 Kelder joined 08:46 Bucciarati left, awwaiid_ left, apejens left, lee_ left, nwc10 left, zakalwe left, LordV left, moritz left 08:47 PerlPilot joined 08:48 Juerd_ joined, nyuszika7h joined 08:49 apejens joined, DrEeevil joined, _ilbot joined, nwc10 joined, LordV joined 08:50 sciurius_ joined 08:54 Juerd_ is now known as Juerd 08:55 synopsebot joined 08:59 jfried left, gabriel left, gabriel_1 joined 09:02 `patch` left 09:03 apejens left, DrEeevil left, _ilbot left, nwc10 left, LordV left 09:04 bonsaikitten joined 09:06 Juerd left, ggoebel2 left, synopsebot left, Kelder left, jnthn left, sciurius_ left, genehack_ left, zakalwe_ left, domidumont left, nyuszika7h left, PerlPilot left 09:07 `patch`_ joined, jfried joined, apejens_ joined, nwc10 joined, LV joined, synopsebot joined, sciurius_ joined, nyuszika7h joined, Juerd joined, PerlPilot joined, Kelder joined, genehack_ joined, zakalwe_ joined, jnthn joined, domidumont joined, ggoebel2 joined, awwaiid joined, cognominal__ joined, charsbar_______2 joined, ivan``_ joined, simcop2387 joined, pmichaud_ joined, Gruber joined, imarcusthis- joined, PacoAir joined, colomon joined, arlinius joined, konundra joined, nebuchadnezzar joined, stevan_ joined, pecastro joined, robinsmidsrod joined, [particle] joined, daniel-s_ joined, Khisanth joined, tadzik joined, [Coke] joined, sergot joined, camelia joined, dalek joined, gdey joined, jferrero joined, BooK joined, integral joined, Nom- joined, Celelibi joined, morgan.freenode.net sets mode: +vv camelia dalek, crazedpsyc joined, eternaleye joined, anocelot joined, avuserow joined, Woodi joined, sivoais joined, segomos joined, rafl joined, Yappo__________ joined, mst joined, sftp joined, geekosaur joined, smash joined, mtk joined, ugexe joined, broquaint joined, sorear joined, eiro joined, patspam joined, frdmn joined, vaelxon joined, woolfy joined, lizmat joined, Maddingue joined, cosimo joined, PZt joined, labster joined, drbean joined, FOAD joined, jlaire joined, estrabd joined, itz joined, TimToady joined, Lorn joined, revdiablo joined, autumn joined, mattp__ joined, djanatyn joined, ruoso joined, sjn joined, betterwo1ld joined, scottp_ joined, sunnavy_ joined, lestrrat joined, odoacre joined, takesako______ joined, Hor|zon_ joined, szbalint_ joined, baest joined, Timbus joined, DarthGandalf joined, kshannon joined, gfldex joined, hoelzro joined, sjohnson joined, mathw joined, p5eval joined, bakedb joined, Tene joined, bloonix joined, obra joined, Pompel_ joined, rs0 joined, JimmyZ joined, SHODAN joined, markov joined, avar joined, felipe joined, Rix joined, logie joined, ponbiki joined, tomaw joined, ingy joined, __sri joined, Gothmog_ joined, pnu joined, wtw_ joined, groky joined, BinGOs joined, felher joined, arnsholt joined, danaj joined, timotimo joined, silug_ joined 09:08 bonsaikitten is now known as Guest96567 09:10 bruges joined, Exodist joined, kst joined, mikemol_ joined, atrodo joined, jercos joined, diakopter joined, cotto joined, risou_awy joined, zamolxes joined 09:12 breinbaas joined, fgomez_ joined 09:13 _ilbot joined, daniel-s_ left 09:14 daniel-s_ joined, drbean left 09:17 bruges_ joined 09:18 spider-mario_ joined, DrEeevil joined, moritz joined 09:19 fgomez_ left, spider-mario_ is now known as spider-mario 09:20 jtpalmer_ joined, amkrankruleuen joined 09:24 rhr joined, berekuk_ joined, bruges left, Guest96567 left, moritz_ left, lee_ joined, Colby` joined, Colby` is now known as Pleiades` 09:26 hugme joined, ChanServ sets mode: +v hugme
jnthn o/ 09:37
arnsholt 'lo 09:38
jnthn: Should I have to do something to get the dyncall ops loaded in plain NQP?
jnthn arnsholt: You mean, besides having mappings for them in Compiler.nqp? 09:40
arnsholt Yah
I'm writing a test file (using Parrot NQP) and it seems to not recognise the op 09:41
Do I have to .loadlib something perhaps?
jnthn oh...Parrot
yeah, there they need to get a loadlib 09:42
Passing --vm-libs=nqp_dyncall or so is one way
arnsholt That'll do for now, thanks!
Hmm. Looks like --vm-libs is no more, but pir::loadlib will do for now, I guess 09:47
Cross-platform can wait 09:48
09:48 Kelder is now known as Ayiko
arnsholt Blah, that's not an op either 09:49
dalek rlito: f04d32c | (Flavio S. Glock)++ | / (9 files):
Perlito5 - keep track of existing namespaces for indirect-object parser; namespace cleanup
09:57 Rotwang joined
jnthn arnsholt: oh, without the hyphen 10:05
--vmlibs 10:06
10:20 ztt joined 10:28 kingbeast joined 10:35 GlitchMr joined 10:53 zakalwe_ left 11:02 DrEeevil left, `patch`_ left, apejens_ left, nwc10 left, bonsaikitten joined, nwc10 joined, apejens joined, `patch` joined 11:20 zakalwe joined
dalek p: 8f912e2 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/ (4 files):
VMArray should serialize its type.

This fixes the issue with the utf8/utf16/utf32 types in the new Buf implementation.
11:30
p: 91720fe | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/P6 (2 files):
Get P6int/P6num to take/keep bit size.
p: 2ea09b8 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/VMArray (4 files):
Compact int8/int16/int32 array storage.

This means a buf8/utf8/blob8 will actually be a byte array in memory.
jnthn arnsholt: 91720fe is probably helpful to your nativecall work :) 11:31
afk for a bit 11:39
11:47 dmol joined 11:49 frdmn left 11:54 daniel-s__ joined 11:55 frdmn joined, daniel-s_ left 11:57 Bucciarati_ is now known as Bucciarati 12:13 dmol1 joined 12:14 dmol left 12:36 ztt left 12:46 dmol1 left 13:08 crab2313 joined 13:12 SamuraiJack joined 13:19 SamuraiJack_ joined 13:21 SamuraiJack left
arnsholt jnthn: Oh, super! Cheers! 13:27
13:28 zby_home_ joined
ggoebel2 An article on why javascript (and dynamic languages using GC) aren't currently up to muster on mobile devices and the performance challenges they face: sealedabstract.com/rants/why-mobile...-are-slow/ 13:29
13:34 birdwindupbird joined 13:38 mtk left
bonsaikitten ggoebel2: pretty much nonsense 13:39
"when I do stupid things the results are stupid"
13:39 birdwindupbird left 13:41 drbean joined
colomon jnthn: speaking of weird results, I sometimes run out of memory compiling jakudo on my Mac. 8 gigs of ram, 33 gigs of hard drive space. 13:44
tadzik arnsholt: ping 13:47
13:48 crab2313 left
tadzik arnsholt: do you feel like some beer today? :) 13:50
jnthn colomon: I suspect you're not really running out of memory, just hitting a heap size limit 13:54
ggoebel2, bonsaikitten: The bits on GC performance relative to how much memory it's allowed to use match what I've seen in various situations, fwiw. 13:56
colomon jnthn: the thing I find scary about the situation is I then hit make again and everything works. 14:05
jnthn colomon: OK, that's weird. 14:07
mst tadzik: YES 14:08
14:17 grondilu_ joined, grondilu joined
grondilu 'our $someVar is export = *' <- is that NYI or something? 14:18
jnthn correct 14:19
grondilu ok
jnthn constant foo is export # does work
grondilu tries that
tadzik mst: are you in Oslo? 14:20
mst tadzik: no, but I'm still going to drink beer today :)
tadzik fair enough :)
14:22 kingbeast left
arnsholt tadzik: Beer would be cool, but sadly I'm not in Oslo today 14:24
How long are you in Oslo? 14:25
tadzik arnsholt: until thursday 14:31
and contrary to my initial expectations, I'll probably have plenty of time during the week as well :)
14:33 grondilu_ left
timotimo \o/ 14:37
dalek p: 92197db | jnthn++ | src/vm/jvm/ (2 files):
Add nqp::encode(...) op for encoding to a buffer.
14:38
timotimo yays! :) 14:40
dalek kudo/rebuf: 958ece3 | jnthn++ | src/core/ (4 files):
Get Str.encode working for new Buf implementation.

It now also returns utf8/utf16/utf32 types when appropriate, falling back to blob8 for the rest of the cases. With this, both unpack.t and pack.t now pass on JVM (will need some work on Parrot to get things to work again there, though).
jnthn guesses trying to decode a utf8/utf16/utf32 as if they were anything else should just fail 14:46
arnsholt jnthn++ # nqp::encode
I agree. It should throw an exception of some kind 14:47
Trying to magically recover from badly encoded data isn't going to be fun (and will likely cause all kinds of backwards compat headaches later on)
jnthn *nod*
Well, this is the specy-ish Buf/Blob etc implementation attempt so far, so we get to figure out the interesting corner cases :) 14:48
It's easier to explore 'em with an impl, though :)
arnsholt tadzik: Cool. We should be able to get some beers during the week then. I'm back at work on monday. You at the Oslo Opera office for a bit?
14:49 crab2313 joined, mtk joined 14:51 crab2313 left 14:53 xilo joined 14:58 mdxi joined 15:02 rindolf joined 15:08 raiph joined
tadzik arnsholt: yeah, I'm sent here to work with the rest of the team 15:09
dalek p: 3fde283 | jnthn++ | src/vm/jvm/ (2 files):
First pass at nqp::decode(...).
15:20
15:22 zby_home_ left
dalek kudo/rebuf: 36a3460 | jnthn++ | src/core/Buf.pm:
Add decode for new Buf implementation.

Again, will need some work to get this supported on Parrot too. Also added .Str that works to utf8/utf16/utf32 types since they carry their encoding around with them.
15:22
15:22 n0den1te joined 15:24 zby_home joined
[Coke] yawns 15:30
15:36 dispareil joined
dispareil Hi everyone ....i want to know about the future prospects of Perl 6 15:38
mst 'pretty f*cking awesome' 15:47
[Coke] msg++ 15:48
... msT++
mst people are having awesome fun, exploring awesome ideas, the latest VM work shows a path to passing 'fast enough' for a bunch more problems than previously 15:52
[Coke] dispareil: did you have a more specific question? 15:54
anyone here that's familiar with java's ProcessBuilder? 15:55
woolfy mst++
mst dispareil: it's notable that I'm a happy perl5 programmer and fairly known as being relatively skeptical of the perl6 project's chances of being -my- choice of next language to use 15:56
n0den1te [Coke]: qx and backticks?
mst dispareil: but really, things are looking very cool at the moment and even if I never go from 'skeptical' to 'believer' I really enjoy hanging out here and sharing ideas :) 15:57
[Coke] n0den1te: I'm trying to polish off the shell() implementation, but yes. 16:00
n0den1te [Coke]: cool, what did you want to know about PB? Maybe I can help there. :) 16:01
[Coke] let me gist something. 16:03
16:08 lizmat left
[Coke] gist.github.com/coke/6045565 16:08
16:08 lizmat joined
[Coke] It seems that the env. I'm creating is not being passed along. 16:09
(apologies for the large amount of debugging output) 16:10
n0den1te oldest form of debugging. :)
okay, so when you spawn the shell command you want to inherit the parent's environment? 16:11
TimToady actually, I believe the oldest form of that required tweezers
lizmat magnetic ones, at that :-) 16:12
n0den1te TimToady: Ah, I'm too young to remember those. :-)
TimToady has seen computers with vacuum tubes running for real work 16:13
though I'm not old enough to have witnessed the moth incident :) 16:14
n0den1te: by default, you pass on what your parent gave you, but a process also needs to be able to override part or all of it 16:15
[Coke] n0den1te: yes. 16:16
well. This is perl, so I want to inherit the parent's %*ENV, not the actual java System.getEnv 16:17
n0den1te [Coke]: the XX prefixed items are where you have put entries from parent's ThreadContext. 16:19
I don't know nqp's API well enough to say - what you got out of iter is from System.getEnv props.
TimToady also note that %*ENV, as a dynamic variable, is designed to be inherited within Perl 6 as well, so you probably want whatever %*ENV is visible at the point of whatever is spawned
[Coke] the XX are testing whether or not it was impacting new entries or just old entries. no impact - they all get the old value, not the new value.
TimToady: one impossible problem at a time. 16:20
(also, I'm pretty sure we're getting that for "free" with the current setup)
(we're passing in the dynamic env when the nqp opcode is invoked.)
TimToady (if a spawner wants the original ENV that our process inherited, it can always say something like: my %*ENV = %PROCESS::ENV;
[Coke]: okay, good 16:21
n0den1te [Coke]: well, if you *really* want to wipe environment with a new set of items, you can look into Runtime's exec family of methods.
They all call into PB under the hood.
[Coke] n0den1te: from the docs, I should be able to get the env, clear it, and then set new values.
16:22 skids joined 16:23 birdwindupbird joined 16:26 dispareil left 16:29 pupoque joined 16:38 Rotwang left, skids left, skids joined
n0den1te [Coke]: Yes, I had that doc open here. I just wrote a small test to verify those docs were right. 16:40
[Coke]: there's nothing that stands out to me from your gist as to the error. 16:43
[Coke]: except maybe that you're not getting *ENV propagated back into your shell()'s context. 16:44
[Coke] I just whipped up a small example that works fine. :| 16:45
gist.github.com/coke/6045565 //WTF.java 16:46
(if I run that with "/usr/bin/env", I get the expected output)
n0den1te [Coke]: That'd work fine (I tried that out here too). What I meant was, somehow the mehtod doesn't see that *ENV<key> was modified and the ThreadContext sees the default shell env vars. 16:47
16:47 lue joined
[Coke] but it does see that it was modified - when I'm looping over the keys of $*ENV, the correct value is there. 16:48
arglebargle, no it isnt.
thank you
n0den1te [Coke]: nice, we all have our days. :) 16:50
[Coke] TimToady: this is how I'm invoking the op from rakudo:
$status = nqp::shell($cmd, nqp::getattr(%*ENV, EnumMap, '$!storage'));
wondering if there is a better way to spcify the ENV there, or a better way to ask for the internal java storage. 16:51
jnthn [Coke]: Looks right to me at first glance 16:53
[Coke] jnthn: it should, it came from you. ;)
16:53 Rotwang joined
jnthn ;) 16:54
Well, I'm not equally smart every day :)
TimToady compensates by being equally smartmouthed every day :) 16:55
TimToady is usually not equally smart on any day, let alone every day... 16:56
dalek p: fe29d89 | jnthn++ | src/vm/parrot/6model/reprs/VMArray.c:
Missing GC marking in VMArray REPR on Parrot.
16:57
jnthn *sigh* it still segfaults...
arnsholt nqp/t/nativecall/01-basic.t now has one passing testcase \o/ 16:59
jnthn: Would you be sad if all the tests in the NQP on Parrot were run under 'nqp --vmlibs=nqp_dyncall_ops'? 17:00
jnthn arnsholt: Could live with it 17:01
arnsholt tadzik: Cool. I work at the university, so we can meet up on the subway heading into the city. You have any preference for monday or wednesday?
Spiffy. 'Cause that's by far the easiest way to get the NativeCall tests running properly on Parrot 17:02
I'll see if I can come up with something more clever, but that's the dead easy way. Just make it prove --exec '$(NQP_EXE) --vmlibs=nqp_dyncall_ops' ... 17:03
jnthn Ugh. Now I understand why VMArray deserialization segfaults... 17:06
jnthn figures he'll fix that after dinner
17:22 birdwindupbird left 17:23 ajr joined, ajr is now known as Guest88114, Guest88114 is now known as ajr_
diakopter jnthn: why was it? :) 17:28
TimToady it was because he hasn't yet fixed it after dinner 17:43
n0den1te groans 17:44
18:18 n0den1te left
diakopter :) 18:20
18:22 rindolf left 18:33 rindolf joined 18:38 rindolf left 18:52 rindolf joined 18:54 fgomez joined
jnthn back 19:05
diakopter wb
19:05 rindolf left
jnthn grumbles about the warm weather 19:05
19:17 skids left 19:19 SamuraiJack_ left
tadzik yeah, I got to Norway and all I got was warm weather too. I feel cheated :P 19:24
arnsholt: I don't have plans for either so far
lizmat if it's any consolation: the coming for days in NL are going tobe 30+
four
jnthn eek 19:31
arnsholt tadzik: How about Wednesday, then? Should I pick a brew pub, or do you have some places you'd like to visit? 19:32
19:33 cognominal__ left
dalek ast: 0a12a9c | (Elizabeth Mattijsen)++ | integration/99problems-21-to-30.t:
pick() is now implemented
19:33
lizmat r: my Any $a; say $a.list; my Hash $h; say $h.list # there is a discrepancy here that smells 19:36
camelia rakudo 492feb: OUTPUT«(Any)␤Cannot look up attributes in a type object␤ in method pairs at src/gen/CORE.setting:7181␤ in method list at src/gen/CORE.setting:7175␤ in block at /tmp/dRd2wyGXC4:1␤␤»
lizmat FWIW, I think both should generate an empty list, the latter of type Hash 19:37
jnthn: we figured not going to Portland would give us some cooler weather 19:38
but instead of us going to Portland, the Portland weather came to us
tadzik arnsholt: I've no idea for a place :) 19:40
jnthn lizmat: Sounds like... 19:41
lizmat jnthn: in EnumMap::pairs it says: "return unless nqp::defined($!storage);" This bombs with "Cannot look up attributes in a type object" in nqp::defined 19:44
so I guess the intent there *was* to return an empty list
19:44 raiph left
jnthn Isn't it the $!storage that'd bomb? 19:46
lizmat you could also say that...
19:46 domidumont left
lizmat anyway, the test seems bombing in a way that is not intended, I would think 19:47
jnthn r: say EnumMap.pairs
camelia rakudo 492feb: OUTPUT«Cannot look up attributes in a type object␤ in method pairs at src/gen/CORE.setting:7181␤ in block at /tmp/Op0nABViNL:1␤␤»
jnthn Probably Paris should only be defined on EnumMap:D 19:48
*paris 19:49
lizmat well, from you guidance, I have refrained from turning methods into multi methods
jnthn um. pairs
You can :D on single dispatch too :)
lizmat we'll always have pairs :-)
TimToady Pairs in the the spring.
lizmat jnthn: will try that 19:50
19:51 raiph joined
jnthn grr, Rakudo on Parrot takes at lesat twice as long to build as Rakudo on JVM... 19:52
lizmat anyway, suppose I have a list of Hashes: my Hash @l 19:54
dalek p: c37b962 | jnthn++ | src/vm/parrot/6model/serialization.c:
Set type object STable earlier in deserialization.

Otherwise, things like typed arrays find the types they want to look at the storage_spec of are not yet complete enough and explode.
lizmat jnthn: is that to fix the pb I found?
jnthn lizmat: No, it's part of my work to get the new Buf stuff I'm doing to work on Parrot. 19:55
lizmat ah, ok
back to what I was saying: so you have a list of Hashes @l, you can then *not* just simply do a keys/kv/pairs on any element, because they might bomb if not properly initialized yet 19:57
you would *have* to say something like "my Hash @l is default ({})" to make this work 19:58
that seems counter-intuitive to me
19:59 rindolf joined
lizmat possibly we could make "is default ({})" the default for Hash ? 19:59
19:59 cognominal joined
lizmat conversely "is default([])" the default for List/Array ? 19:59
jnthn: adding the EnumMap:D:, turns the error into "Parameter '' requires an instance, but a type object was passed" 20:05
jnthn Yup 20:06
We can probably be smarter when we know it's the invocant
20:07 raiph left
jnthn But it's failing to reach the method rather than failing inside of it now, at least. 20:07
lizmat well, that's what I'm saying: it should return an empty something appropriate for the given method
20:08 raiph joined
jnthn I'm not convinced an undefined thing should magically pretend it's an empty thing... 20:08
lizmat r: my Hash %h; say %h<foo>.keys 20:09
camelia rakudo 492feb: OUTPUT«Cannot look up attributes in a type object␤ in method pairs at src/gen/CORE.setting:7181␤ in method keys at src/gen/CORE.setting:7177␤ in block at /tmp/rXs2KeQu2r:1␤␤»
lizmat in a similar P5 situation, this would just return an empty list 20:10
p5eval: my %h; keys %{ $h{foo}}
p5eval lizmat: 0
20:10 sftp left
lizmat p5eval: my %h; ()=keys %{ $h{foo}} 20:11
p5eval lizmat: 0
lizmat p5eval: my %h; print keys %{ $h{foo}}
p5eval lizmat: 1
lizmat grrr
anyway, P5's "0" is the number of keys, not the first key as it is currently in P6 20:12
p5eval: my %h; my @a= keys %{ $h{foo}}; $#a
p5eval lizmat: -1
20:13 sftp joined
lizmat r: my %h; my @a= keys %h<foo>; say @a.end 20:13
camelia rakudo 492feb: OUTPUT«0␤»
lizmat r: my %h; my @a= keys %h<foo>; say @a.elems
camelia rakudo 492feb: OUTPUT«1␤»
lizmat p5eval: my %h; my @a= keys %{ $h{foo}}; 0+@a 20:14
p5eval lizmat: 0
lizmat so, in p5 we get an empty array, in perl 6 we got an array with one elemen
well, that is, if we *don't* type the hash. If we *do* type the hash, it bombs 20:15
r: my Hash %h; my @a= keys %h<foo>; say @a.elems
camelia rakudo 492feb: OUTPUT«Cannot look up attributes in a type object␤ in method pairs at src/gen/CORE.setting:7181␤ in method keys at src/gen/CORE.setting:7177␤ in sub keys at src/gen/CORE.setting:2122␤ in sub keys at src/gen/CORE.setting:2121␤ in block at /tmp/ibkWfRPDXo:1␤␤»…
lizmat jnthn: if the invocant is defined, ten $!storage is always set, right ? 20:19
jnthn No
The underlying storage is lazily allocated
lizmat so guarding a method like "invert" with an EnumMap:D: will still bomb if the storage hasn't been allocated yet 20:21
r: myt Hash $h=() # somewhat related, is this a rakudobu ? 20:22
camelia rakudo 492feb: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/AEi2uFGho9:1␤------> myt Hash ⏏$h=() # somewhat related, is this a rak␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-infix␤ statement end␤ …
lizmat r: my Hash $h=() # somewhat related, is this a rakudobu ?
camelia rakudo 492feb: OUTPUT«Type check failed in assignment to '$h'; expected 'Hash' but got 'Parcel'␤ in block at /tmp/UZvBZZPVsf:1␤␤» 20:23
jnthn lizmat: No, that's what the defiend check is for.
lizmat you mean the "return unless nqp::defined($!storage)", right? 20:24
jnthn yes
lizmat r: my Hash $h={} # guess it should be thiss 20:26
camelia rakudo 492feb: ( no output )
dalek p: abc88b3 | jnthn++ | src/vm/parrot/6model/reprs/VMArray.c:
Give VMArray its missing get_elem_stable.
p: 4c6b793 | jnthn++ | src/vm/parrot/6model/reprs/VMArray.c:
Fix VMArray growth logic bug.
lizmat r: my EnumMap $h; say $h.hash # shouldn't this be (Hash) ? 20:28
camelia rakudo 492feb: OUTPUT«(EnumMap)␤»
jnthn No. .list and .hash are "give me something listy/hashy", not expect coercions.
*exact
lizmat ok 20:29
20:32 rindolf left
lizmat TimToady: would you consider "my Hash $h is default({})" valid code? having the default me {} rather than a simple value? 20:32
jnthn The sparse case of "my Hash @foo" is probably worth a spec question if there's no answer at present, though, with regard to things like .pairs.
lizmat ok, will write of a spec issue then 20:33
s/of/up/
n: r: my Hash %h; my @a= keys %h<foo>; say @a.elems # just curious 20:37
camelia niecza v24-88-g1f87209: OUTPUT«1␤»
lizmat n: my Hash %h; my @a= keys %h<foo>; say @a.elems # just curious 20:38
camelia niecza v24-88-g1f87209: OUTPUT«1␤»
lizmat n: my Hash %h; my @a= keys %h<foo>; say @a # just curious
camelia niecza v24-88-g1f87209: OUTPUT«0␤»
lizmat that doesn't feel right either, but at least it doesn't bomb 20:39
dalek p: 0c3febd | jnthn++ | src/vm/parrot/ (2 files):
A few more missing VMArray pieces Buf needs.
20:42
20:43 ecocode joined
timotimo works on a preliminary ugly-ish hack to make pod blocks get implicit indent if they are specced to. 20:46
20:47 mdxi left, mdxi joined
lizmat jnthn: FWIW, if I remove "return unless nqp::defined($!storage);" from EnumMap::pairs(EnumMap:D:), I get massive spectest failures 20:49
jnthn Yes, I'd imagine. 20:50
lizmat so it would seem that at some level, the code already depends on return an empty list on lack of $!storage
jnthn Yes, the point of adding the :D was to prevent the method being called on a type object, it's orthogonal to if $!storage is populated
20:51 ajr_ left
lizmat so how do you create a Hash that is DEFINITE but doesn't have $!storage ? 20:51
jnthn Every hash starts that way, I think.
r: my %h; say nqp::defined(nqp::getattr(%h, EnumMap, '$!storage')) 20:52
camelia rakudo 492feb: OUTPUT«0␤»
20:52 mdxi left
lizmat r: my $h=Hash.new; say nqp::defined(nqp::getattr($h, EnumMap, '$!storage')) 20:53
camelia rakudo 492feb: OUTPUT«Can not get attribute '$!storage' declared in class 'EnumMap' with this object␤ in block at /tmp/S1a0WxnjDH:1␤␤»
jnthn $h has a scalar container around it 20:54
So you'd need nqp::decont($h) in the getattr
lizmat r: my $h=Hash.new; say nqp::defined(nqp::getattr(nqp::decont($h), EnumMap, '$!storage'))
camelia rakudo 492feb: OUTPUT«0␤»
lizmat gotcha 20:55
jnthn: the error message "Parameter '' requires an instance, but a type object was passed" 21:08
wouldn't that be better as "Invocant requires an instance, but a type object was passed"
or perhaps even better as "Cannot call "foo" on a type object" ? 21:09
jnthn lizmat: Yes, it would be.
Well, the invocant one at lesat is easy to do 21:10
lizmat ok, I'll go dig
dalek kudo/nom: c5d90d6 | (Elizabeth Mattijsen)++ | src/core/EnumMap.pm:
Standardized error where EnumMap type objects are used as invocant when they shouldn't
21:17
21:18 ecocode` joined 21:19 bruges joined
lizmat jnthn: in bind.c , if there is no param->variable_name, can I assume it is about the invocant ? 21:20
21:20 ecocode left
lizmat (line 478) 21:20
21:21 bruges_ left
dalek rlito: 754fd76 | (Flavio S. Glock)++ | / (4 files):
Perlito5 - indirect-object parser works (" new Dog -> bark ")
21:23
jnthn lizmat: No 21:24
lizmat: But param->flags has a "this is an invocant" flag in there somewhere.
lizmat aha, ok
jnthn (it's just a big bitmask thingy) 21:25
lizmat SIG_ELEM_INVOCANT
jnthn sounds like it 21:28
dalek p: 38cee07 | jnthn++ | src/vm/parrot/ (2 files):
nqp::encode and nqp::decode on Parrot.
21:29
timotimo cool :) 21:31
jnthn Missing: the operators, getting read/write IO operations that use Buf updated.
21:32 pupoque left 21:33 pupoque joined 21:36 spider-mario left
lizmat r: Hash.pairs 21:39
camelia rakudo 492feb: OUTPUT«Cannot look up attributes in a type object␤ in method pairs at src/gen/CORE.setting:7181␤ in block at /tmp/GqyEutmyKK:1␤␤»
dalek kudo/nom: 819d371 | (Elizabeth Mattijsen)++ | src/vm/parrot/guts/bind.c:
Make some lower level error message more understandable

Hash.pairs now says
   "Invocant requires an instance, but a type object was passed"
instead of:
   "Parameter '' requires an instance, but a type object was passed"
lizmat The above error (Cannot look up…) was already fixed with my previous commit 21:40
timotimo cool 21:41
good things are going on, i see.
21:44 yoleaux joined, ChanServ sets mode: +v yoleaux
diakopter . 21:44
jnthn TimToady: What should operators like ~, ~& and so forth do on Blob/Buf types when there are different kinds of thing on each side? 21:47
21:54 zby_home left
lizmat trying to interpret this error: Can not get attribute '$!infinite' declared in class 'List' with this object 21:58
does that mean that it knows that List.$!infinite exists, but that the invocant is not a List ? 21:59
jnthn It could mean that, yes
Note that all attribute lookups are fully qualified 22:00
So it just means "this attribute doesn't exist on the object you tried to look it up on"
lizmat hmmm… wonder how that would be possible, I mean 22:01
trying to optimize List.infinite, as it is being called a lot
jnthn Probably a screw-up when using nqp::getattr 22:02
OK. Note that using nqp::getattr(...) rather than writing $!infinite is not an optimization :)
In fact, it's currently the opposite
lizmat I mean, how can that method be called if the object is not ISA List ?
this is the diff: 22:03
- self.DEFINITE && $!nextiter.defined && $!nextiter.infinite;
+ $!infinite //=
+ (self.DEFINITE && $!nextiter.defined && $!nextiter.infinite);
jnthn I can guess better if I can see what you're trying...
lizmat also: + has Bool $!infinite; # true: infinite list, false: not, undef: check
jnthn hmm 22:04
lizmat this is probably too naive, but it's failing for a reason I don't understand
22:05 ecocode` left
lizmat it appears to happen on a circumfix {} 22:09
that in the end calls ListIter.infinite
and that calls "nqp::atpos($!rest,0).infinite" and then bombs 22:10
hmmm… this also explains some recursion I've seen when trying to put some debug code in infinite 22:11
.oO( trying to find out why my @a=1..Inf; @a.infinite returns true, but @a.uniq.infinite doesn't
22:12
I guess I forgot to mention this happens when setting is loaded 22:14
timotimo i'm almost at the point where i'd go and re-enable trimming the whitespace in pod blocks again.
22:19 lue left
dalek kudo/rebuf: cb96e37 | jnthn++ | src/core/Buf.pm:
Start to get Buf ops back in place.

Since Buf ~~ Blob, they are now really blob ops. Done some tweaks to try and adapt a little better to the new range of types available. Unfortunately, the ops all seem to hit a multi-dispatch conflict.
22:20
lizmat "RPA of elements remaining to be reified" what is an RPA ? 22:25
jnthn: if something is supposed to return a Bool, but can't decide on True/False, wouldn't it be better to return Bool, rather than Mu ? 22:27
or maybe better a question for TimToday :-) 22:29
*TimToady :-) 22:30
r: say (1..Inf).uniq.infinite # shouldn't this be Bool rather than Mu ? 22:31
camelia rakudo 819d37: OUTPUT«(Mu)␤»
timotimo Resizable Parrot Array iirc 22:32
actually, Resizable PMC Array
22:33 lue joined
timotimo one day i'll write an ikiwiki clone based off of pod6 ... 22:34
lizmat timotimo: I guess that's Parrot's way of saying "my @a"
dalek ecs: a0ec33f | (Elizabeth Mattijsen)++ | S99-glossary.pod:
Add RPA
22:35
timotimo yeah, pretty much
lizmat afk for 30 mins or so
timotimo nqp uses it internally afaict
or ... it uses qrpa 22:36
lue timotimo: better yet, improve november to use Pod6 :) 22:37
timotimo i know nothing about november :| 22:40
the only instance of it seems to be in japanese
which i also know nothing about :)
lue github.com/viklund/november/ (hasn't been touched in years, sadly) 22:41
timotimo pod6 isn't entirely there yet, though 22:44
especially formattingcodes in table cells are sorely missing.
well ... sorely missing mostly from the S26 rendering.
i'm considering implementing formattingcodes that don't span lines now and proper multiline formattingcodes later.
damn it, =for output squashes everything into one line 22:45
22:48 lue left 22:49 cognominal left
jnthn lizmat: These days, it really means "the VM's low level array-ish thing" 22:51
timotimo i think pod block parsing needs to be rewritten in a more configuration-driven way. there's currently a 1:1 relationship with "is code block (and does not allow formatting codes)" and "will preserve justification and preformatting", but output and input blocks ought to be preformatted but allow all fcodes
jnthn lizmat: In JVM and Moar impls it's something with VMArray REPR
timotimo at the moment there's the "ALLOW_FCODES" thing i came up with which could be a short term solution, but ... enh.
lizmat so, should I remove mention of RPA from the comments ? and replace it with the more generic VMArray ? 22:52
or VMArray REPR
?
jnthn lizmat: Well, but that ain't true on Parrot
lizmat well, this is in src/core/ListIter, so VM agnostic 22:53
jnthn "low level array" or "VM's array type" maybe
lizmat VM's array type sounds good to me
timotimo do i need the [ ] after the || in [ "foo" | "bar" || [ "baz" | "quux"] 22:55
]
what about before?
jnthn || is looser than | 22:57
timotimo thank you 22:58
23:00 lue joined 23:02 Khisanth left
lizmat jnthn: "$type = 'RPA' if $type eq 'ResizablePMCArray';" seems to be a parrotism, that should be surrounded bu a #if parrot, right ? 23:04
by
src/core/Mu:714 23:05
23:07 lue left
jnthn lizmat: hm, yeah 23:07
Notice how $type is set is also VM specific :) 23:09
'night, #perl6 23:10
dalek kudo/nom: 9db2d52 | (Elizabeth Mattijsen)++ | src/core/ListIter.pm:
Make ListIter.infinite return Bool when it can't make up it's mind.

This at least makes (1..Inf).uniq.infinite return Bool rather than Mu
kudo/nom: d1c591c | (Elizabeth Mattijsen)++ | src/core/Mu.pm:
Only do this parrotism when Parrot is the VM (in DUMP)
kudo/nom: 4a977dc | (Elizabeth Mattijsen)++ | src/core/ (4 files):
In comments, Change Parrot-centric mention of RPA to more general VM's array
lizmat gnight jnthn! 23:11
jnthn: "Notice how $type is set is also VM specific :)" exactly :-) 23:13
23:14 grondilu left 23:17 Khisanth joined 23:20 lue joined 23:27 raiph left
lizmat
.oO( ooh, s/it's/its/ in commit message of 9db2d52)
23:27
23:28 lue left
lizmat r: say Iterable^mro 23:29
camelia rakudo 819d37: OUTPUT«===SORRY!===␤Undeclared routine:␤ mro used at line 1␤␤»
lizmat r: say Iterable.^mro
camelia rakudo 819d37: OUTPUT«(Iterable) (Any) (Mu)␤»
lizmat r: say ListIter.^mro
camelia rakudo 819d37: OUTPUT«(ListIter) (Iterator) (Iterable) (Any) (Mu)␤»
lizmat r: say List.^mro
camelia rakudo 819d37: OUTPUT«(List) (Iterable) (Cool) (Any) (Mu)␤»
lizmat hmmm 23:30
timotimo coded himself into a corner and can't get out 23:32
there needs to be a table or something rather than rules full of special cases. 23:33
lizmat takes away the fourth wall
timotimo output and input can contain code blocks, but are themselves to be parsed with preformatting ... but the rules that do preformatting (those are called *_raw) will never accept nested blocks ...
welp ... time for a dramatic restructuring ... 23:34
lizmat .tell jnthn: it feels to me that in some cases List.infinite is being called on a Iterable object 23:35
yoleaux lizmat: What kind of a name is "jnthn:"?!
lizmat .tell jnthn it feels to me that in some cases List.infinite is being called on a Iterable object
yoleaux lizmat: I'll pass your message to jnthn.
23:35 pupoque left
lizmat .tell jnthn when judging by the code, it should call Iterablle.infinite 23:36
yoleaux lizmat: I'll pass your message to jnthn.
lizmat .tell jnthn could this have to do with the fact that Iterable.infinite returns Mu ?
yoleaux lizmat: I'll pass your message to jnthn.
23:39 grondilu joined 23:40 lue joined 23:42 fridim__ joined 23:44 grondilu left 23:45 BenGoldberg joined
lizmat gnight #perl6! 23:52
23:53 colomon left 23:55 Rotwang left
woolfy good night lizmat 23:57
23:58 colomon joined