»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:03 lumi__ left 00:04 lumi__ joined
[Coke] pmichaud: anything else I can do to make isRakudoFastYet happen? 00:04
pmichaud [Coke]: undoubtedly yes. Let me review what you have thus far tomorrow morning and I'll outline something then. 00:13
right now I'm pretty exhausted from being up much of the night last night
00:20 risou_awy is now known as risou
jnthn sleep tiem - night & 00:21
diakopter n
00:26 mberends left, lumi__ left, lumi__ joined 00:27 daniel-s joined 00:35 benabik joined, araujo joined 00:38 risou is now known as risou_awy 00:40 lumi__ left, lichtkind joined 00:41 lumi__ joined
lichtkind thank you all 00:43
00:49 aindilis joined 00:53 lumi__ left 00:54 lumi__ joined 01:05 eternaleye joined 01:10 lumi__ left 01:11 lumi__ joined
lichtkind rakudo: my %a = 1 => 1, 2=>2, 3=>3; %a.delete(1,2); say %a 01:11
p6eval rakudo db4495: OUTPUT«Too many positional parameters passed; got 3 but expected 2␤ in method delete at src/gen/CORE.setting:4446␤ in <anon> at /tmp/oZumGKOIcJ:1␤ in <anon> at /tmp/oZumGKOIcJ:1␤␤»
01:12 uasi joined 01:14 dayangkun joined 01:15 JimmyZ joined 01:16 lumi__ left 01:17 lumi__ joined 01:26 jevin left 01:27 jevin joined 01:31 lumi__ left
lichtkind i thought say ~ %a should have same outout as %a 01:32
01:33 lumi__ joined 01:35 lichtkind left 01:40 wolfman2000 left 01:45 lumi__ left, lumi__ joined 01:53 woosley joined 01:57 DarthGandalf left, dayangkun_ joined 01:58 whiteknight left 02:01 DarthGandalf joined, dayangkun left, Trashlord joined 02:02 lumi__ left 02:03 lumi__ joined 02:07 Yappoko___ left, Yappoko___ joined
[Coke] pmichaud: no worries. I'm wiped too. Long $DAYJOB week. 02:13
02:18 lumi__ left, lumi__ joined 02:23 dayangkun__ joined, dayangkun__ left 02:27 dayangkun_ left 02:28 lumi__ left 02:29 lumi__ joined 02:36 tdignan left, tdignan joined 02:38 lue left 02:41 lumi__ left 02:42 lumi__ joined 02:51 envi joined 03:17 lue joined 03:23 Su-Shee_ joined 03:27 Su-Shee left, molaf joined 03:56 wolfman2000 joined 04:02 birdwindupbird joined 04:09 uasi left 04:11 sorear joined 04:15 lumi__ left 04:17 lumi__ joined
[Coke] make test in nqp/ build dir on rakudo-nom has todo passes as well as failures. 04:23
04:24 agentzh joined
[Coke] so if one did want to be able to run perl6 on, say, JS, would making the new nqp target JS be the way to go? 04:24
(to start with, anyway)
04:25 Trashlord left 04:26 SHODAN joined 04:27 Trashlord joined, lumi__ left 04:28 lumi__ joined
[Coke] IWBNI nqp had a hint about what the dozen directories under src/ were for. 04:30
04:37 Shozan joined
dalek kudo/nom: 433a731 | Coke++ | t/spectest.data:
track failure mode
04:37
04:37 SHODAN left 04:40 abercrombie left 04:41 uasi joined 04:43 molaf left 04:44 _jaldhar is now known as jaldhar 04:48 Shozan left 04:49 lumi__ left 04:50 lumi__ joined
dalek kudo/nom: 3053e41 | pmichaud++ | docs/announce/2011.0 (3 files):
Add announcements from master into nom branch.
04:51
04:57 wolfman2000 left
tadzik [Coke]: also, do you have the roles-related commits pulled in? 04:58
pmichaud the 'nom' branch is now the default. 05:00
messages sent to p6c, parrot-dev, and rakudo.org
the 'master' branch is now 'ng'
dalek kudo/nom: 15813b2 | tadzik++ | t/spectest.data:
Fix a couple of failure reasons in spectest.data
[Coke] tadzik: I just ran that, last commit before mine was jnthn's hours ago.
tadzik pmichaud++ 05:01
pmichaud I need sleep -- will check on things in the morning here.
tadzik [Coke]: I know, but I got different fails in parametric roles
05:01 lumi__ left
[Coke] tadzik: is there a way to programatically distinguish warnings? I was basically blacklisting them as they came up. 05:02
tadzik [Coke]: Well, maybe you could notice that the next line is indented (is a backtrace) if it's an error, warnings seem not to backtrace
05:02 lumi__ joined
tadzik that's the only thing I can think of 05:02
awful. I woke up too early 05:03
[Coke] k. you and I should probably polish up that script and get it checked in so we're not fighting each other on udpates. 05:05
tadzik no worries, I just fixed that few I thought were weird 05:06
[Coke] yes, but when I run the script again, I'll fix them back. ;) 05:09
tadzik (:
are you sure you are on nom HEAD? Those parametric roles warnings seemed odd 05:10
that's what last jnthn's commits fixed
going to get some moar sleep & 05:11
moritz good morning
05:11 lumi__ left 05:12 lumi__ joined
[Coke] perhaps I missed an update. 05:14
it is 3 hours past my bedtime. ;)
05:14 sftp left 05:16 jevin left 05:20 jevin joined 05:25 lumi__ left, lumi__ joined
tadzik good moritz 05:52
05:53 chromatic left 05:58 lumi__ left, lumi__ joined
moritz wow, we had an earthquake in Germany 06:01
though no real damage, it seems
strength 4.4 (insert laughter from the US and far east here)
TimToady well, something has to poke the Alps up in the air
06:04 orafu left, JimmyZ left, OuLouFu joined 06:05 OuLouFu is now known as orafu, packetknife joined
moritz iirc the alps erode faster than they are being pushed 06:07
TimToady just has to be dynamic :) 06:08
moritz @*ALPS.push: ... :-)
Patterner throw people; 06:10
TimToady De.roll 06:11
06:15 lumi__ left 06:16 lumi__ joined 06:27 wtw joined, Su-Shee_ is now known as Su-Shee 06:29 JimmyZ joined 06:31 koban` joined, koban` left 06:32 satyavvd joined, lumi__ left, lumi__ joined 06:36 benabik_ joined, satyavvd left 06:39 benabik left, benabik_ is now known as benabik 06:45 lumi__ left, lumi__ joined 06:56 JimmyZ__ joined 06:58 JimmyZ left 06:59 mj41 joined 07:00 JimmyZ__ left 07:02 donri joined 07:03 lumi__ left 07:04 lumi__ joined, JimmyZ joined 07:06 JimmyZ_ joined 07:09 JimmyZ left, JimmyZ_ is now known as JimmyZ 07:17 wamba joined 07:18 masak joined
masak bon matin #perl6 07:18
Perl 6 Day! \o/
07:19 JimmyZ_ joined 07:21 JimmyZ left, JimmyZ_ is now known as JimmyZ
pnu what would be the missing parts to make rakudo (completely) self-hosting (i.e. everything would be written in perl6)? i'm not actually suggesting that - just trying to understand the systems' architecture and need some starting points.. 07:21
07:21 lumi__ left 07:22 lumi__ joined
masak pnu: interesting question. 07:23
pnu: nqp is a separate language, but enough of a subset to Perl 6 that maybe it still counts as "self-hosting"... 07:24
src/binder/ and src/pmc/ and src/ops/ contain a bunch of C files. or sometimes Parrot-specific files that preprocess down to C. 07:27
pnu is nqp self-hosting then? 07:28
masak yes.
the rest of the Rakudo source tree, I think, is either Perl 6 or nqp.
07:29 woosley left, woosley joined
pnu i quess a common runtime is important for language interop., but i wouldn't be too conserned about anything else except perl5 interop. at this point.. or what do you people think? 07:30
masak it was discussed yesterday. 07:31
chromatic had a couple good points.
pnu oh, i'll check the logs 07:32
masak irclog.perlgeek.de/perl6/2011-09-08#i_4397189
07:32 woosley1 joined 07:34 woosley left 07:35 lumi__ left 07:36 lumi__ joined
pnu masak: in addition to those src files, i guess that actually running a program needs parrot.. so just rewriting those wouldn't be enough? 07:36
i mean there needs to be some runtime environment anyway. 07:37
masak right. 07:38
pnu so.. it would require implementing parrot in perl6? ;-)
(or some other vm) 07:39
07:39 woosley1 left 07:40 wamba left
TiMBuS well, not really? 07:41
masak pnu: if the goal is "everything in Perl 6" then, yes, I guess.
TiMBuS the garbage collector yeah, but thats about it..
masak that's not about it :) 07:42
something has to manage control flow. exceptions and gather blocks and stuff.
something has to map objects to memory.
and handle method dispatch.
(efficiently!)
07:43 packetknife left
TiMBuS isnt nom doing most of that, and thats in perl6 07:43
masak that's a good question. 6model takes over some of those things, yes.
07:44 JimmyZ_ joined, lumi__ left
TiMBuS i didnt mean it was easy, i just meant you dont need what you'd define as a VM. then again a VM these days is hard to define 07:44
JimmyZ_ What? Perl 6 day? 07:45
anything important today?
TiMBuS talk like a parrot day
07:45 lumi__ joined 07:46 JimmyZ left, JimmyZ_ is now known as JimmyZ
masak JimmyZ: in $dayjob, I get to pick about a day a week for Perl 6 work. 07:46
tadzik 3 day weekend!
TiMBuS haha
JimmyZ that's great
masak so I've got the whole day free for whatever I want to do to advance the state of Perl 6! \o/
JimmyZ masak: macro ! 07:47
:)
masak JimmyZ: yes :)
TiMBuS threads!
masak no, surely not.
TiMBuS :[
JimmyZ ;)
masak les patches sont welcome.
pnu where to look for more info about this 6model?
masak pnu: jnthn's blog about it. 07:48
pnu: 6guts.wordpress.com/
07:48 Su-Shee left, JimmyZ_ joined
pnu is there anyone actively working with perl5 interop.? (sorry, haven't check yesterdays backlog yet) 07:50
07:51 im2ee joined
masak there's blizkost. 07:51
im2ee Hey ! :)
masak github.com/jnthn/blizkost
im2ee: hi! :)
07:51 JimmyZ left, JimmyZ_ is now known as JimmyZ
masak rakudo: say "Hello im{ 6 * 7 - 4 * 10 }ee!" 07:51
p6eval rakudo 15813b: OUTPUT«Hello im2ee!␤» 07:52
07:53 sivoais left, sivoais joined
tadzik hey im2ee 07:53
bbkr Good.morning() #perl6 07:54
07:55 lumi__ left 07:56 lumi__ joined
masak bbkr: .good given $morning; 07:56
07:57 JimmyZ_ joined
pnu ok thanks masak++ 07:57
07:59 JimmyZ left, JimmyZ_ is now known as JimmyZ
im2ee :) 08:00
08:02 woosley joined
masak oh! 08:02
08:02 packetknife joined
masak my grant application is up: news.perlfoundation.org/2011/09/hag...mplem.html 08:02
im2ee I have a request... Can you show me your blogs? :) I want to create own blog and i want to look on others, to get some inspiration. :) 08:04
masak im2ee: Google for "planet Perl 6" and click on the links on the right.
im2ee I know planet perl six :) 08:05
tadzik showed me this. :)
masak, there are much blogs .. i didn't see it before! Thank You! :) 08:06
08:06 donri_ joined, donri_ left 08:07 lumi__ left 08:08 lumi__ joined 08:12 JimmyZ left, JimmyZ joined
masak im2ee: in particular, my blog template is very simple: github.com/masak/psyde/blob/master.../post.html 08:12
simplicity++ 08:13
08:13 wamba joined, woosley left
masak yay, they even got the <code> things right in my grant application. :) 08:15
08:17 SHODAN joined, lichtkind joined, wamba left
lichtkind rakudo: say 5 08:18
p6eval rakudo 15813b: OUTPUT«5␤»
masak hail Eris. 08:20
moritz suddenly gets a very good idea for an April Fool's prank
08:20 renormalist joined, JimmyZ_ joined
masak moritz: pretending that Perl and Python are uniting their forces and merging into one single, horribly inconsistent and ugly language? :P 08:21
moritz masak: not quite that elaborate 08:22
08:22 lumi__ left
moritz masak: I thought of Perl and Ruby this time :-) 08:22
08:22 JimmyZ left
masak :P 08:22
08:22 JimmyZ_ is now known as JimmyZ
masak (and then thinking "hey, that's a silly idea, but language interop is nice" and going off to create a virtual machine with the same name as the made-up language...) 08:22
08:23 lumi__ joined, packetknife left, satyavvd joined, alvis_ joined 08:28 wamba joined
jnthn mornin' 08:32
08:33 lumi__ left, daxim joined
masak jnthn: good moritz 08:33
masak realizes that Eiffel has an ANY class 08:34
jnthn Does it have a TOWER class?
JimmyZ just saw Hague Grant Application: Implementation of Macros
08:34 lumi__ joined
masak yes, news.perlfoundation.org/2011/09/hag...mplem.html is up. 08:35
TPF will be happy to read your comments about whether I should do this grant or not. 08:36
JimmyZ doesn't like there is js script from twitter, it blocked me 08:37
08:38 M_o_C joined
JimmyZ can't open news.perlfoundation.org because of the twitter js srcript :( 08:38
masak JimmyZ: can't you turn of js? 08:39
off*
moritz installing noscript would be my first action in an environment where js had such a bad effct
JimmyZ installs noscript 08:40
masak noscript++ # the only safe option
moritz www.perlmonks.org/?node_id=924178 woah. A case where a seemingly lazy poster actually thanked me for an RTFM answer
masak moritz++ # helping people help themselves 08:42
today's gem from Ward's Wiki: 'I like to create objects to "localize design decisions", not to "hide information".' 08:45
if only there was a way to ++ that whole phrase.
objects as concentrations of some specific design consideration.
08:45 lichtkind_ joined 08:47 lichtkind left, lichtkind_ is now known as lichtkind
masak it's not news at all, but the discussions about Sagas have made me realize that *anything* is up for becoming a class, even abstract, intangible concerns that generally don't look like a class. 08:47
a Saga is a cross-cutting concern capturing the lifetime of some process. 08:48
moritz example for such a class?
lichtkind sat in ingys talk about lang interop called acmeism
snarkyboojum how far did sorear get when playing with macros a while back? 08:49
moritz snarkyboojum: you mean the rakudo branch? 08:50
s/branch/fork/?
I think he had unparameterized macros in term position
snarkyboojum moritz: not sure :)
masak moritz: the classical e-commerce example for a saga is one that makes sure that an order either gets paid for or doesn't get delivered. the challenge is that various subsystems (sales, billing, inventory) advance their states irrespective of each other.
I have unparameterized macros in term position. 08:51
I was not aware of sorear's attempts.
08:51 wamba left
moritz I'm quite sure you were 08:51
:-)
masak huh/
huh.
I've completely forgotten about it, at least.
lichtkind is >>++ gone?
masak lichtkind: no. 08:52
08:52 lumi__ left
masak lichtkind: when you ask such questions, I get concerned. what sources do you have? :) 08:52
snarkyboojum I remember him getting something going about 12-18 months ago, but no details :)
08:52 lumi__ joined
masak lichtkind: getting rid of >>++ hasn't even been *discussed*. 08:53
lichtkind masak: my source it that nom doesnt do it
masak rakudo: my @a = 1, 2, 3; @a>>++; say @a
p6eval rakudo 15813b: OUTPUT«2 3 4␤»
masak lichtkind: ditch your source. it sucks.
lichtkind masak: i tell that jnthn :) 08:54
moritz masak: github.com/sorear/rakudo/tree/topic/macros
jnthn what, nom just did it... :)
masak jnthn: why you tell lichtkind lies? :)
moritz: thanks, looking. 08:55
snarkyboojum also moritz's lovely irc log shows some 4 pages of decent reading on the topic (sorear/macro) :D
masak ooh
moritz snarkyboojum: that's what I also searched for :-)
jnthn :P
lichtkind masak: thanks i used slightly different syntax which didnt worked 08:56
jnthn Correct syntax does tend to help ;)
lichtkind what an enlightenment 08:57
masak lichtkind: bet you put a space after @a and before >>++
jnthn figures coffee would help too, and goes to make some :)
masak lichtkind: *that* changed, but not recently. like, three years ago.
moritz masak: irclog.perlgeek.de/perl6/2010-05-06#i_2299141 you even discussed macros with sorear++ back then
masak moritz: sounds like something I would do, yes :P 08:58
lichtkind masak: not only that i apllied it directly to (1..5)
masak lichtkind: that wouldn't give you a parse error, but a runtime error.
moritz masak: I was a bit surprised you didn't mention that experiment in your grant proposal, but assumed you had good reasons
(forgetting about is also a good reason :-) 08:59
masak lichtkind: from that you still shouldn't conclude that >>++ doesn't exist.
moritz: yes :/
masak suddenly starts remembering
whoa.
09:00 wamba joined
snarkyboojum moritz++ #irc logging and stuff :D 09:01
masak especially stuff ;) 09:03
09:03 lumi__ left 09:04 lumi__ joined
masak sorear: sorry for forgetting your efforts from last year in my grant application! I will definitely peruse them now, though, to contrast and compare with what I have so far in my branch. 09:05
09:06 replore_ joined, JimmyZ_ joined 09:08 JimmyZ left, JimmyZ_ is now known as JimmyZ 09:16 wamba left
moritz how important do people find pir:: and nqp:: being available in p6eval? 09:17
(I mean things like pir::open() in rakudo, not the nqp: target from p6eval) 09:18
masak moritz: it sounds unsafe, if that's what you're after.
moritz they are a security hole, though one that needs quite some insider knowledge to exploit
masak moritz: the 'though' part shouldn't matter.
if someone wants to cause harm, we have to assume they're knowledgeable.
moritz if I operated under that assumption, I'd have to shut down p6eval immediately. 09:19
09:20 JimmyZ_ joined
snarkyboojum or close the security hole :) 09:20
moritz snarkyboojum: the security hole is "allowing code to execute", whichi s the whole point of p6eval
snarkyboojum moritz: but in a less controlled manner? 09:21
jnthn moritz: I don't feel strongly either way, tbh. It can be helpful to have them to hand for debugging stuff, occasionally.
But I see the concern too.
09:21 JimmyZ left, JimmyZ_ is now known as JimmyZ 09:22 replore_ left
moritz if you present the security question as a black-or-white question, you lose p6eval. So see it as shades of gray 09:22
currently I'm in the "watch and see if further action becomes necessary" position, though I do think about possibilities to tighten security 09:23
09:23 lumi__ left
jnthn moritz: We (thankfully) don't have a history of people abusing it. 09:23
09:23 lumi__ joined
masak moritz: my advice: think long and hard about what *could* be done with pir:: and nqp::. do not post your conclusions on the channel. 09:26
jnthn Which of course doesn't mean we never will, but I guess we could try having a little faith in huge manatee for a while longer. :-)
masak moritz: decide whether or not to keep nqp:: and pir:: in p6eval depending on the worst possible thing that can be done with them.
moritz masak: the answer is really simple :/
jnthn masak: All the things that we banned yesterday with SAFE 09:27
masak right.
jnthn masak: It depends if we're trying to fend of a determined, hardened attacker, or just mischevious/idiotic folk. :)
09:28 Trashlord left
moritz exactly 09:28
masak I agree -- let's hope we never get the former kind.
and maybe it's premature securitization to try to design against one.
snarkyboojum breaking things doesn't always require evil intent :)
masak snarkyboojum: no, but breaking things in this way probably requires quite a bit of planning and forethought. 09:29
moritz snarkyboojum: that's why we have SAFE.setting
snarkyboojum if you're in a virtualised environment, just restore from a snapshot post-breach then, and you're all good :) 09:32
moritz we're not *that* virtualized
(just chroot)
iirc there are prototypial break-out-of-vm exploits in the wild too
snarkyboojum I've been spoiled by working on EC2 for work over the last few months.. nice model
tadzik waits for someone else to make the first comment on a grant application 09:33
moritz tadzik: don't. Usually that's me, but I also waited this time.
09:33 JimmyZ left
snarkyboojum moritz: true - but they're probably more sophisticated than working around a SAFE.setting 09:33
tadzik I'd expect some Big Name on the first comment :) 09:34
moritz so, not me :-)
tadzik oh, I disagree :)
moritz rakudo: callframe(1)<&open>('README', :r).get.say 09:35
p6eval rakudo 15813b: OUTPUT«Method 'at_key' not found for invocant of class 'CallFrame'␤ in method postcircumfix:<{ }> at src/gen/CORE.setting:931␤ in <anon> at /tmp/uFH92hjX2D:1␤ in <anon> at /tmp/uFH92hjX2D:1␤␤»
moritz rakudo: callframe(1).my<&open>('README', :r).get.say
p6eval rakudo 15813b: OUTPUT«Method 'postcircumfix:<( )>' not found for invocant of class 'Any'␤ in <anon> at src/gen/Metamodel.pm:2761␤ in <anon> at /tmp/8rs9JKDfTb:1␤ in <anon> at /tmp/8rs9JKDfTb:1␤ in <anon> at /tmp/8rs9JKDfTb:1␤␤»
moritz rakudo: callframe(2).my<&open>('README', :r).get.say
p6eval rakudo 15813b: OUTPUT«Method 'postcircumfix:<( )>' not found for invocant of class 'Any'␤ in <anon> at src/gen/Metamodel.pm:2761␤ in <anon> at /tmp/CkGXJvU3_5:1␤ in <anon> at /tmp/CkGXJvU3_5:1␤ in <anon> at /tmp/CkGXJvU3_5:1␤␤»
moritz for 0..10 { say $_; say callframe($_).my<&open>; } 09:36
rakudo: for 0..10 { say $_; say callframe($_).my<&open>; }
p6eval rakudo 15813b: OUTPUT«0␤Any()␤1␤Any()␤2␤Any()␤3␤Any()␤4␤Any()␤5␤Any()␤6␤Any()␤7␤Any()␤8␤Any()␤9␤Any()␤10␤Any()␤»
snarkyboojum moritz: do you have anything like watching requests to p6eval and locking out on suspicious behaviour? :)
moritz snarkyboojum: I have a tail -f on the log file running
09:36 lumi__ left
moritz though I don't watch it permanently, having a life and all :-) 09:36
snarkyboojum moritz: though any such "second guessing" is bound to be annoying :) - ah tail -f 09:37
masak .oO( note to self: conduct attack while moritz is asleep )
moritz oh, I'd need to look outwards the lexical chain, not the call chain
09:37 lumi__ joined
masak so, OUTER:: 09:37
moritz which is NYI 09:38
jnthn rakudo: say ("Tadeusz Sośnierz", "Moritz Lenz").max({ .chars }) ~ " is a bigger name"
p6eval rakudo 15813b: OUTPUT«Tadeusz Sośnierz is a bigger name␤»
jnthn tadzik: See! ^^
masak :D
tadzik oh you :) 09:39
masak don't use string concat where a comma would work :)
jnthn masak: hangover from non-spacey days :)
masak "non-spacey"? 09:40
09:40 JimmyZ joined
jnthn b: say 'a', 'b' 09:40
p6eval b 1b7dd1: OUTPUT«ab␤»
jnthn rakudo: say 'a', 'b'
p6eval rakudo 15813b: OUTPUT«ab␤»
moritz b: say 'a', ' b';
jnthn oh huh, I thought we put spaces in :)
p6eval b 1b7dd1: OUTPUT«a b␤»
masak different rules between Lists and Parcels, friend :)
jnthn darn
masak yeah.
jnthn Where do I go to learn Perl 6? 09:41
masak I discovered this too recently.
thing is, I *really*, really like the way it fell out.
jnthn And yes, of course I could put a space at the start of the string :)
09:41 robinsmidsrod left
masak even if we now have this inexplicable .gist method everywhere... 09:41
jnthn Well, .gist is quite good output for gisting :P
tadzik ohh 09:42
use Github::Gist could overload the default .gist to paste code and output to gist :P
jnthn :D
snarkyboojum moritz: how much overhead would be required to launch a separate virtualised/sandboxed eval environment on each request to p6eval :D
moritz too much for that machine 09:43
masak re-reads the "defensive copying" p6l thread and tries not to get mad at Darren Duncan for being so crazy 09:44
snarkyboojum moritz: definitely, I was thinking of getting creative with EC2 :)
moritz snarkyboojum: does EC2 allow IRC?
(lots of hosting services don't; fear of botnets)
tadzik okay, the First Comment is submitted. You can start submitting yours now :)
snarkyboojum moritz: IRC is just an open port no? 09:45
09:45 M_o_C_ joined
masak Darren: "let's make everything immutable". moritz: "we probably shouldn't change everything, it's 2011". Darren: "fine, you do what you like, and I'll work on my perfect dream project which doesn't have a 'hello world' implementation yet" 09:45
09:46 lumi__ left
snarkyboojum moritz: EC2 is infrastructure as a service.. no platform restrictions - you can do what you like on it (within reason) 09:46
moritz "we probably shouln't turn Perl 6 into Haskell"
09:47 lumi__ joined
masak also, "it doesn't help with the problem at hand" 09:47
09:48 M_o_C left 09:52 robinsmidsrod joined 09:54 JimmyZ left, robinsmidsrod left 09:56 lumi__ left 09:57 lichtkind left, lumi__ joined, lichtkind joined
tadzik oh, gsoc code samples 10:00
10:03 JimmyZ joined 10:06 lumi__ left 10:07 lumi__ joined
lichtkind rakudo: my @a = 2..5;my $b = [|](all(2..5)> 1); say $b; 10:07
p6eval rakudo 15813b: OUTPUT«any(all(True, True, True, True))␤» 10:08
lichtkind i thought i get just a true
masak lichtkind: why did you think that?
lichtkind: [|] doesn't collapse a junction.
rather the reverse.
moritz [||] would produes that, I hope
rakudo: my @a = 2..5;my $b = [||](all(2..5)> 1); say $b; 10:09
p6eval rakudo 15813b: OUTPUT«all(True, True, True, True)␤»
moritz *produce
masak just prefix:<?> it, for blog's sake.
lichtkind rakudo: my @a = 2..5;my $b = [||](all(2..5)> 1); say $b;
p6eval rakudo 15813b: OUTPUT«all(True, True, True, True)␤»
moritz oh, [||] of a single item is just identity
masak: so
masak or so.
flussence rakudo: say ?(True & True) 10:10
p6eval rakudo 15813b: OUTPUT«Bool::True␤»
flussence oh, that's useful to know
dalek p: c6f6882 | jonathan++ | / (7 files):
Add archetypes to the various NQP meta-objects.
flussence could never figure out how to get simple values out of junctions
10:10 Trashlord joined
jnthn flussence: You're kinda not meant to... 10:11
10:11 robinsmidsrod joined
flussence I know, but what are they good for when you can't? :) 10:11
moritz as matchers.
and there's a trick, y'know
10:12 lumi__ left
moritz rakudo: sub eigen(Mu $j) { my @e; (sub f($x) { @e.push($x) }).($j) }; say eigen(1|2|3) 10:12
p6eval rakudo 15813b: OUTPUT«any(1, 1, 2, 1, 2, 3)␤»
moritz huh.
b: sub eigen(Mu $j) { my @e; (sub f($x) { @e.push($x) }).($j) }; say eigen(1|2|3)
p6eval b 1b7dd1: OUTPUT«any(1, 2, 3)␤» 10:13
moritz b: sub eigen(Mu $j) { my @e; (sub f($x) { @e.push($x) }).($j); @e }; say eigen(1|2|3)
p6eval b 1b7dd1: OUTPUT«123␤»
moritz rakudo: sub eigen(Mu $j) { my @e; (sub f($x) { @e.push($x) }).($j); @e }; say eigen(1|2|3)
flussence ooh, clever.
p6eval rakudo 15813b: OUTPUT«1 2 3␤»
moritz there you go
10:13 lumi__ joined
flussence moritz++ 10:13
tadzik Google has a funny definition of friday 10:14
Friday, 12 September 2011: 19:00 UTC (12:00 noon Pacific Time)
"Soft" deadline for student code sample submission
Friday, or 12 September? :P
moritz yes.
tadzik touche 10:15
masak Google all switched to the Julian calendar. 10:17
flussence or the deadline's for year 2011 + 2**32... 10:18
10:18 lumi__ left 10:19 lumi__ joined
bbkr_ how aften is modules.perl6.org refreshed? 10:21
masak in nom, in the REPL, when I define a class, I get a "Use of uninitialized value in string context" warning.
I want to submit an RT ticket about this. any objections?
jnthn masak: I can see why it happens and I don't know the best fix off hand, but it's decidedly LTA. So please RT it. 10:22
flussence can reproduce here... didn't this used to return "_block\d+"?
moritz well, it's supposed to return the type object
which warns on stringification
jnthn moritz: It does.
Right.
It's doing the "right thing"
moritz maybe the REPL should really .gist
jnthn It's just that the right thing is a tad annoying. :)
moritz: ooh! That would do it... 10:23
masak submits rakudobug
dalek kudo/nom: ae8a6dd | moritz++ | src/SAFE.setting:
forbid mkdir in SAFE.setting
10:24
tadzik bbkr_: at least once an hour I suppose 10:26
flussence I wonder if linux's seccomp would be useful for safe mode - once you switch it on, every syscall except read/write/exit is blocked by the OS.
moritz that's too restrictive for us 10:29
the compiler is allowed to open() files for one
10:31 lumi__ left 10:32 lumi__ joined, im2ee left
flussence (hm, it might be useful for try.rakudo though... if I can figure out how to do the seccomp call after the REPL starts up) 10:32
10:33 M_o_C_ left, im2ee joined
moritz with NCI, once that's work 10:34
ie you inject a bit of p6 code (before the user's code) that does the NCI call
*once that works
dalek kudo/nom: 1ff410a | jonathan++ | tools/build/NQP_REVISION:
Bump NQP_REVISION to get archetypes patch.
10:38
kudo/nom: 9a0650a | jonathan++ | src/Perl6/Metamodel/ (3 files):
Make roles inheritalizable; implement inheritalize (which just returns the pun), so class Foo is SomeRole { } works again.
kudo/nom: 8c9dd1a | jonathan++ | src/core/traits.pm:
Catch invalid inheritance/composition operations, and fill out support for types that know how to produce inheritable/composable types.
10:43 lumi__ left, lumi__ joined
dalek kudo/nom: 21089d9 | jonathan++ | src/Perl6/Metamodel/RolePunning.pm:
Only make a pun once.
10:44
masak just sent a long summary of the "defensive copy" thread to p6l.
jnthn spectests++ # catching my silly bugs 10:45
tadzik jnthn: commited that? Unbelievebale
s/':'/' '/
flussence rakudo: sub a(Str $_ is copy) { s/foo/bar/ }; say a('foo') 10:47
p6eval rakudo 15813b: OUTPUT«bar␤»
masak I'd be very interested in hearing of perceived problems with the rw/non-rw approach I outline in the email.
flussence ooh, didn't realise that worked
masak flussence: you prolly want 'Cool', not 'Str', though :) 10:48
flussence good point, I tend to be far too strict with my types...
masak wonders whether 'is copy' should make descendant references rw or non-rw... 10:49
jnthn tadzik: It still leaves room to make lots of *different* puns :P
tadzik but compose them only once :P 10:50
jnthn Well, we don't compose puns. That's the point of them - to use a role in a non-compositional context.
We *almost* pass S14-role/instantiation.t again...but I need to do next $hard-thing first... 10:51
10:52 lumi__ left
masak lol audreyt twitter.com/audreyt/status/112031008257359872 10:53
10:53 lumi__ joined
tadzik :P 10:53
so I.pm is the next step?
Naah
flussence ''.pm! 10:54
bbkr_ tadzik: is there any log from refreshing modules.perl6.org available? MongoDB is still not there (added 3 days ago). I've checked META.info (valid json) and link to repo. No idea why it is not showing up. 10:55
10:58 ab5tract joined
masak really likes twitter.com/CompSciFact/status/111...0604145664 11:02
tadzik bbkr_: you can try running the perl script from the modules.perl6.org repo and see if it fails and why 11:06
11:06 lumi__ left 11:07 lumi__ joined 11:08 djanatyn left 11:11 lichtkind left 11:15 Trashlord left 11:20 lumi__ left 11:21 lumi__ joined 11:32 lumi__ left
moritz bbkr_: there is a log, though not public. I'll look into it. 11:32
bbkr_ tadzik: thanks for pointing me to the right direction. i've run script and it processed whole list without problems (99 ok, 0 fail). and new Mongo module is present in generated index.html file. so I have no idea what failed
moritz: thanks
11:33 lumi__ joined 11:34 replore joined, Psyche^ joined
moritz seems the log file didn't capture the relevant information :( 11:34
11:35 Patterner left, Psyche^ is now known as Patterner
moritz reruns 11:35
72 MongoDB 11:36
Updated since last check
MongoDB driver
let's see if it shows up when that thing is finished
ok - 99 11:37
nok - 0
bbkr_ it's visible now
thanks
moritz seems that the cronjob entry somehow doesn't really work
pmichaud good morning, #perl6 11:40
moritz good am, pm 11:41
bbkr_ How about providing "Last update on: ..." info on this page (maybe somewhere in footer)? This will show immediately if update is stuck.
moritz bbkr_: that would be a very good idea
bbkr_: if you get around to it, the code is in the modules.perl6.org repo in web/build-project-list.pl
if not, I'll do it eventually, just no promises when that will be 11:42
jnthn morning, pmichaud
bbkr_ moritz: i will add it during weekend
moritz ++bbkr_ 11:43
bbkr_ which timezone is the server in? 11:44
moritz CEST
bbkr_ ok
moritz though displaying it with perl's gmtime() would be the most sensible, I think 11:45
"Only make a pun once." # from jnthn++'s last commit message 11:46
what if there's a difference audience the second time? :-)
11:46 lumi__ left 11:47 lumi__ joined
moritz fwiw apache2 has a security update, which I'm going to install right now on feather2 11:47
which means a short downtime for *.perl6.org and related services 11:48
feel informed and warned
flussence should be only about 10 seconds, if we're lucky :)
moritz I think it was about 5 11:49
flussence \o/ 11:50
(OTOH, I'm not fond of the way Debian messes with services directly from the package manager - that could be 0 seconds if done right...) 11:52
moritz well, it seems that Debian isn't directly targeted at servers 11:53
for example they do things like automatically enabling services when you install them
flussence that's the one thing I *really* don't like...
moritz imagine you accidentally enable a DHCP server that way in a big corp network *shudder*
flussence I think I've done that before at $dayjob :) 11:54
moritz OTOH the typical customer would think "I've installed that stupid thing, why isn't it running?" if it were otherwise
flussence (fortunately it's not a big enough network to matter...)
plobsing moritz: do you expect a lightbulb to be already running after you install it? 11:57
moritz plobsing: if I don't do the install by hand (but via Building Manager), maybe 11:58
11:59 Reaganomicon left, george_z0rwell joined 12:01 domidumont left, lumi__ left 12:02 ab5tract left 12:03 lumi__ joined 12:06 hugme joined, ChanServ sets mode: +v hugme 12:09 pmurias joined 12:11 satyavvd left
pmurias moritz: is there anything important on the evalbot box? (besides the evalbot) 12:11
12:12 george_z0rwell left, pernatiy joined
moritz pmurias: you'd have to ask diakopter, but nothing too important, I think 12:12
12:12 plobsing left
moritz it seems I've fixed the module.perl6.org updating script 12:16
12:17 lumi__ left, lumi__ joined
masak hugme: hug hugme 12:18
hugme hugs hugme
pmichaud Can I delete the old/ subdirectory from the nom branch? 12:19
jnthn pmichaud: yes
masak hugme: hug hugme hugs hugme
hugme hugs hugme hugs hugme
12:19 ab5tract joined
masak :) 12:19
moritz rakudo: sleep 1 12:20
p6eval rakudo 21089d: OUTPUT«Could not find sub &sleep␤ in <anon> at /tmp/zXOTnYBREl:1␤ in <anon> at /tmp/zXOTnYBREl:1␤␤»
moritz LHF
masak ok, I'll do that one :)
moritz ++masak
jnthn :)
jnthn finishes nomming lunch and gets back to sorting out the role type checking stuff 12:21
dalek kudo/nom: c8ebd81 | pmichaud++ | src/old/ (142 files):
Remove the we-have-not-needed-it-for-a-long-time old/ subdirectory.
pmichaud rakudo: lunch 1
p6eval rakudo 21089d: OUTPUT«Could not find sub &lunch␤ in <anon> at /tmp/ZNVok77nv0:1␤ in <anon> at /tmp/ZNVok77nv0:1␤␤»
tadzik nom: business time 12:22
p6eval nom 21089d: OUTPUT«Could not find sub &business␤ in <anon> at /tmp/A1AI9KA7s8:1␤ in <anon> at /tmp/A1AI9KA7s8:1␤␤»
jnthn :P
nom: marine
p6eval nom 21089d: OUTPUT«Could not find sub &marine␤ in <anon> at /tmp/WnLPGBUlQQ:1␤ in <anon> at /tmp/WnLPGBUlQQ:1␤␤»
masak can I put &sleep in src/core/control.pm? it used to be in src/core/system.pm in b, but there's no such file in nom. 12:23
moritz masak: +1 12:24
masak also, &shell formerly known as &run already seems to have done a similar jump.
very well. I'll make it so.
12:25 ab5tract left
pmichaud control.pm is fine, yes. 12:28
12:29 lumi__ left
tadzik masak: you'll probably be able to uncomment a few tests with this 12:29
masak tadzik: I found t/S29-context/sleep.t
jnthn INET.pm also depends on sleep 12:30
tadzik masak: ...what jnthn said
12:30 lumi__ joined
masak oh, right. 12:30
jnthn And sockets should otherwise work
masak I saw that one but didn't pay any mind.
will try that one too, then.
tadzik it fails for different reasons, but at least it'll run now :)
masak \o/
moritz doesn't it need Buf?
jnthn Aww. 12:31
tadzik I suppose it does
masak rakudo: say Inf
p6eval rakudo 21089d: OUTPUT«Inf␤»
tadzik maybe nom-buf will fail differently, now that we have parametric roles fixed
masak rakudo: say Inf ~~ Inf 12:32
p6eval rakudo 21089d: OUTPUT«Bool::True␤»
tadzik nom: say NaN ~~ NaN
p6eval nom 21089d: OUTPUT«Bool::False␤»
tadzik oh?
moritz nom: say NaN == NaN 12:33
p6eval nom 21089d: OUTPUT«Bool::False␤»
pmichaud b: say Nan ~~ NaN
tadzik nom: my $a = NaN; say $a ~~ NaN
p6eval b 1b7dd1: OUTPUT«Could not find sub &Nan␤ in main program body at line 22:/tmp/Y9NU82rvhQ␤»
nom 21089d: OUTPUT«Bool::False␤»
moritz nom: say Inf == Inf
p6eval nom 21089d: OUTPUT«Bool::True␤»
pmichaud b: say NaN ~~ NaN
p6eval b 1b7dd1: OUTPUT«Bool::True␤»
masak b: say NaN == NaN
p6eval b 1b7dd1: OUTPUT«Bool::False␤»
jnthn If we want that to work I guess we hvae to special-case it.
As NaN == NaN is meant to be false.
masak b is correct here.
pmichaud nom: say NaN == NaN
p6eval nom 21089d: OUTPUT«Bool::False␤»
pmichaud nom is correct on == 12:34
jnthn Does spec want NaN ~~ NaN to be true?
I guess ~~ is meant to be smart. :)
tadzik I won't like it to outsmart me :)
masak oh, nom doesn't have Inf? 12:35
I see a lot of $Inf workaround in src/core
tadzik no, jnthn fixed the compilation time :>
pmichaud $Inf may be fossil
flussence rakudo: say (Inf > 2**32)
p6eval rakudo 21089d: OUTPUT«Bool::True␤»
flussence rakudo: say (Inf > 2**64)
p6eval rakudo 21089d: OUTPUT«Bool::True␤»
flussence rakudo: say (Inf > 2**128)
p6eval rakudo 21089d: OUTPUT«Bool::True␤»
flussence seems to work
pmichaud it used to be that nom had Inf at runtime but not at setting compile-time
moritz .oo( rakudo is rather stubborn )
pmichaud I don't know if that's still the case.
flussence rakudo: say (Inf + 1 > Inf)
masak pmichaud: gettomg "error:imcc:undefined identifier 'Inf'" when compiling my &sleep patch.
p6eval rakudo 21089d: OUTPUT«Bool::False␤»
masak pmichaud: &sleep defaults to Inf. lexical scoping issues? 12:36
moritz masak: use $Inf instead
pmichaud setting may still require $Inf
masak ok.
that's what I suspected.
pmichaud masak: setting-compile-time constant issues, perhaps
jnthn Bootstrapping is hard. News at 11. :)
pmichaud spectests say that NaN ~~ NaN should be true (as beijing has it) 12:37
masak rakudo: constant bleep_bloop = 42; say "alive"
p6eval rakudo 21089d: OUTPUT«alive␤»
masak \o/
I could tackle the NaN ~~ NaN thing, too. if no-one else wants to.
pmichaud might check to see how beijing handled it
masak nod 12:38
pmichaud ("beijing" is too much to type. I'm going back to "ng" for a while.)
tadzik (:
masak feels like the green dinosaur in the last panel of Dinosaur Comics, discovering how much fun Perl 6 Day is: "guys, this *rocks*!" 12:39
pmichaud what should be the best way to create a Failure but not immediately return?
tadzik nom-buf still fails
moritz pmichaud: Failure.new?
sub { fail() }.()
pmichaud I'll do sub { fail() } for now
I agree Failure.new should work, but building the exception is being a bit of a pain-ish. 12:40
masak sleep.t passes locally. 12:41
IO-Socket-INET.t fails 17 out of 17, but it runs to completion. 12:43
someone++ nicely annotated the failures in t/spectest.data 12:44
only those two test files mention &sleep
12:45 lumi__ left
masak uncomments sleep.t for now 12:45
12:45 Trashlord joined, lumi__ joined
moritz masak++ # p6l mail 12:48
masak commit's away!
moritz though I admit I've just wrote a reply before I've finished reading masak's p6l mail
dalek kudo/nom: ac4d97c | masak++ | / (2 files):
[src/core/control.pm] add &sleep

It's the same as in Beijing, modulo $Inf hack.
Also, uncommented sleep.t in spectest.data.
moritz because a thought struck me that scared me of the 'immutability all the way down' 12:49
tadzik masak: could you fix the IO::S::INET failure reason as well?
masak moritz: your objection indeed seems to make sense. 12:50
12:50 Sarten-X2 left
jnthn sleep. It's the same as in Beijing. 12:50
pmichaud pir::sleep__vN(1e16) while True;
might want some unboxing here.
moritz not necessary 12:51
masak tadzik: 'Type check failed in assignment to '$!listen'; expected 'Int' but got 'Bool'' seems to be the immediate reason. but I'd rather do the NaN ~~ NaN thing first.
pmichaud well, if we don't unbox we go through the vtable
tadzik masak: fair enough
moritz 1e16 becomes a Num that automatically unboxes due to Past::Want
pmichaud okay, then the next line
+ pir::sleep__vN($seconds);
masak pmichaud: you feel a pressing need to optimize &sleep? 1/2 :P
pmichaud masak: it's not optimization so much as rigor 12:52
moritz that might need a decontainerize
masak oh, well then.
pmichaud I think we had decided we didn't want to rely on vtables
masak ah.
jnthn They'll make our life harder for porting later.
moritz pmichaud: I don't think it goes through a vtable
see above
pmichaud moritz: I'm certain the $seconds one has to
moritz yes, that one needs to 12:53
jnthn moritz: The 1e16 one won't. The $seconds one probably does.
masak moritz: indeed, your p6l objection is very sobering -- and that wasn't at all the effect I was shooting for. maybe this is where sorear++'s complications rear their head. :/ 12:54
it felt like a clean solution when I was just looking at part of the problem... :)
moritz "only make it immutable where I want it to"
:-)
masak yeah! how hard could that be? :P 12:55
12:57 lumi__ left, lumi__ joined
pmichaud I think that as long as we have mutable objects, we end up with leaky encapsulation. I haven't seen a way to resolve that. 12:57
moritz afaict only Haskell gets that "right", but that's now what we want Perl 6 to become 12:58
/now/not/
s/^/s/ # :-)
12:58 Holy_Cow joined
masak moritz: the Little Animal Farm case is perhaps educational. strict encapsulation is very important, because the fairness of the contest depends on contestants not being able to break the invariants of the Game class. 12:58
moritz: (yes, I know .HOW could help break them anyway. that's cheating.)
jnthn Well, part of it is about the contract you make with the outside world. 12:59
PerlJam good morning #perl6
masak morning, PJ
jnthn For example, whenever you request some information from a meta-object, it may be handling you back the real, mutable thing, which means you can screw up its internal state. The contract for working with meta-objects is "look but don't touch". 13:00
o/ PerlJam
moritz good am, pj
jnthn *handing
13:00 Sarten-X joined
PerlJam leaky encapsulation day? 13:00
masak pmichaud: the arrays an hashes shared by Game are all "mutable objects", but the requirement on them for not leaking internal references feels very straightforward. will I spend the rest of my life sighing and correcting juniors' leaky OO code?
13:01 Holy_Cow left, am0c joined
pmichaud masak: clearly we're able to accomplish a lot of stuff with leaky encapsulation. See p5. :-) 13:01
moritz masak: maybe the real answer is that we make it too hard to construct immutable data structures in the first place
masak jnthn: that's a good point. a class may *choose* not to copy defensively due to performance concerns. it may not be purely pure OO, but it works IRL.
jnthn masak: How much of your life do you spend doing that today when working with non-Haskell-programming juniors? :) 13:02
13:02 sftp joined, bluescreen10 joined
masak moritz: it's not too much that I want the data structures immutable in this case. it's that I want the clients to get "safe" data structures by default. 13:02
jnthn masak: I'm not sure what you mean by "purely pure OO" :)
masak jnthn: I mean caring more about invariants than about performance.
13:03 Reaganomicon joined
masak sometimes, the invariants *are* more important. 13:03
Game is an example of that.
pmichaud I don't know that a feature of "OO" has ever been that we'd have objects with non-modifiable state, fwiw.
masak sometimes, performance is more important. the MOP is an example of that.
pmichaud: not my point.
jnthn To what degree is this to do with OO, and to what degree is this just a mutability/data hiding issues? 13:04
masak pmichaud: my point is that the enforcing of invariants is all tied up in securing one's public mutable data structures.
jnthn "just" :)
masak: If performance isn't a concern and the invariants are, why not clone? 13:05
moritz masak: one could reason that it violates encapsulation to expose parts of the internal state of the object without copying, and yet you do that, and hope that it's save
masak jnthn: I create objects *because* I want to locally enforce invariants.
pmichaud I wonder if "secure", "public", and "mutable" are exclusive in some sense.
moritz and that's exactly what you do, pass some parts of self around
masak jnthn: cloning is what I ended up doing. my point is that I needed to do it in an ad-hoc manner. cf my original mail in the thread.
moritz: right. Damian's point is that that is a crappy default. 13:06
he doesn't propose a solution, though.
moritz masak: and I disagree in my latest mail
masak pmichaud: ooh, like "pick any two"?
pmichaud: I'd like to see that elaborated.
moritz immutalizing by default is an equally crappy default
jnthn masak: Suppose that we (1) had a deep clone mechanism in Perl 6 and (2) had a trait you could put on attribute accessor methods that used it
pmichaud masak: the phrase "securing one's public mutable data structures" just struck me as odd.
jnthn masak: To what degree would that help? 13:07
masak jnthn: it would go a long way.
PerlJam jnthn: "is recursive_read_only" ?
masak 'is defensive'
moritz that makes more sense to me than recursively write-protected arguments and returns
jnthn PerlJam: No, I'd want it to have a name that made extremely clear that it's copying.
13:07 lumi__ left
PerlJam jnthn: "dcopy"? (deep or defensive, your choice) 13:08
jnthn Some smart person down the road may be able to work out how to make it COW or something.
masak jnthn: ooh!
jnthn
.oO( Make it COW, so it's not a pig )
13:08 lumi__ joined
masak ooh ooh can we go with 'is ersatz'? :) 13:09
or 'is replica' 13:10
moritz +(1..Inf).pick
masak moritz: 42
moritz +42 it is then to 'is ersatz' 13:11
masak :D
PerlJam Makes me want a "must" to go with "is" and "does"
sub foo (@array must clone)
or something
masak PerlJam: there's 'will'
PerlJam oh, true 13:12
jnthn yeahbut will wants a code block
masak .oO( "I don't care what Will says he wants!" )
moritz why would you disregard [Coke] so blatantly? :-) 13:13
jnthn :P
masak 可口可乐 13:14
PerlJam Are deep clone and shallow clone the only options? Is there ever a case where someone would have an N dimensional data set, but only want to confer immutability to N-M dimensions?
pmichaud fwiw, I'm still toying with the notion of a "deep immutability" flag.
I'm not quite ready to toss that out entirely.
kind of a third option between return (read only) and return-rw 13:16
s/between/beyond/ # perhaps 13:17
jnthn One other challenge here is that we don't currently have a way to say to a data structure "oh hai, are you immutable?" 13:18
pmichaud jnthn: right, it has to be an aspect of container-ness
jnthn pmichaud: I think it's deeper.
nom: 3 does role { method huh { say "oh noes" } }; 3.huh
moritz containers are easily (and accidentally) stripped 13:19
p6eval nom ac4d97: OUTPUT«oh noes␤»
pmichaud i.e., some data structure is in a "immutable container", which imposes an immutability constraint on the parts of the structure
jnthn pmichaud: How does "does" know that it can't do that mixin?
It's not a function of containerness.
moritz the MOP knows it?
pmichaud jnthn: in that case you're trying to modify the object, not its container.
jnthn moritz: HOw?
pmichaud: Right
That's my point.
I don't have a way to ask an object if it's mutable or not.
moritz jnthn: good question 13:20
pmichaud jnthn: why is that modification bad, ooc?
I mean, how does what you just wrote destroy immutability?
moritz and it would be very useful to have ways to make user-defined classes with immutable objects
jnthn pmichaud: Note that I managed to change a literal ;)
moritz pmichaud: action at a distance
pmichaud you changed its behavior but not its value.
jnthn pmichaud: Well, hm :) 13:21
moritz that's like an augment, except the 'use MONKEY_PATCHING' part
erm, TYPING
pmichaud and is what you just did legal p6, anyway?
moritz I hope not
jnthn pmichaud: My guess is "no"
pmichaud me too 13:22
jnthn pmichaud: My question is "how do we know not to allow it?"
moritz nom: 3 does role { method huh { say "oh noes" } }; 2.huh
p6eval nom ac4d97: OUTPUT«Method 'huh' not found for invocant of class 'Int'␤ in <anon> at /tmp/t7HcCTf2w4:1␤ in <anon> at /tmp/t7HcCTf2w4:1␤␤»
pmichaud jnthn: "not to allow" has to be a runtime check
jnthn Also spooky
nom: 3 does role { method huh { say "oh noes" } }; eval '3.huh'
p6eval nom ac4d97: ( no output )
moritz because it has a different $*ST? 13:23
pmichaud and in the case of method mixins, it's not that we disallow the mixin, it's that we throw an exception for any mixin that attempts to violate our immutability container constraint
jnthn (Because we don't share constant tables that aggresively)
moritz so it's a different 3?
jnthn moritz: Right. It'll be extremely variable between implementations.
moritz: We never hit this in master because it didn't really have constants
pmichaud: Yes, it's certainly runtime.
pmichaud well, ng has constants, they just weren't shared to the degree they are in nom
moritz nom: 3 does role { method huh { say "oh noes" } }; (1+2).huh
p6eval nom ac4d97: OUTPUT«Method 'huh' not found for invocant of class 'Int'␤ in <anon> at /tmp/LRlL_KicrZ:1␤ in <anon> at /tmp/LRlL_KicrZ:1␤␤»
13:24 lumi__ left
moritz nom: say 3 === 3 13:24
p6eval nom ac4d97: OUTPUT«Bool::True␤»
moritz nom: say 3 === (1 + 2)
p6eval nom ac4d97: OUTPUT«Bool::True␤»
jnthn pmichaud: Well, we could check that one at compile time I suspect. But in general it's runtime.
13:24 lumi__ joined
pmichaud jnthn: what I'm trying to get it is a new form of container (more) 13:24
we already have the case where we create anonymous containers for values (e.g., during binding) 13:25
and we do this because we need to preserve some set of flags or information
and we have to clone a container (not its value contents) to preserve the flags
let me see if I can describe what I'm toying with 13:26
(via an example)
suppose we have an Object in a container $a, where $a has been marked with the "deep immutable" flag 13:27
PerlJam
.oO( "shape of ... an object" "form of ... an immutability container")
pmichaud anytime we do $a.method(), the "deep immutable flag" imposes constraints on accesses to its attributes. In particular, $!private ends up being wrapped in an immutability container prior to any operation being performed on it. (more) 13:29
Yes, I realize this has implications for where we do decontainerization presently, but that's pretty much true of any approach we consider that tries to enforce immutability.
masak yes but what about moritz++' objection? 13:30
pmichaud note it's the attribute access that gets the immutability constraint 13:31
moritz masak: if I understood pmichaud++ correctly, he first wants to offer an option, not make it the default
jnthn pmichaud: Essentially as we "recurse" into a data structure, we containerize things with an immutability marker on the way down?
pmichaud yes
and only attributes
not all arguments / return values
13:31 wamba joined
masak oh! 13:31
that makes sense. 13:32
pmichaud here's an example:
class Dog { has @!legs; method legs() { @!legs } }; 13:33
as written, someone can use $fido.legs to modify legs
masak aye.
pmichaud however, if $fido is a container with deep immutability, they won't be able to
because @!legs would end up being wrapped in a container with deep immutability 13:34
masak right. that's essentially what I propose in my email earlier today.
pmichaud and if you attempt to do something to @!legs that causes one of its attributes to be modified, an exception will be thrown.
flussence
.oO( plaster-cast(@!legs) )
masak but my focus was on arrays and hashes, not objects.
pmichaud it's all objects.
masak right.
moritz that's how I imagine taint checking to work too
pmichaud even arrays and hashes in nom have private attributes.
13:34 lumi__ left
masak the parallel with taint checking is interesting, yes. 13:35
jnthn pmichaud: It feels fairly workable, when you put it that way.
PerlJam pmichaud: so, could you show an example with an array?
pmichaud PerlJam: Didn't I just do that? ;-)
moritz @!legs is the array
13:35 lumi__ joined
moritz we'd just to be careful not create too many container objects, that would be very costly 13:36
pmichaud less costly than deep clones, though.
and definitely lazy.
and we don't have to deal with identity issues that deep cloning present.
masak b: say Int ~~ Real
pmichaud *presents
p6eval b 1b7dd1: OUTPUT«Bool::True␤»
masak rakudo: say Int ~~ Real
p6eval rakudo ac4d97: OUTPUT«Bool::True␤»
jnthn Well, the other thing to keep in mind is that attributes can only be accessed in the lexical scope they're decalred in.
13:36 jaldhar left
PerlJam I meant more like sub foo (@array is deeply_immutable) { @array[6][9] = 42; } ... where does the mechanism take effect? 13:37
jnthn We could actually give them an immutability container from the get go
moritz PerlJam: @array[6] compiles to a method call
pmichaud PerlJam: @array is the container with the deeply_immutable flag.
ultimately it gets down to @array.at_pos
jnthn And have actual attribute accesses within the class code-gen a stripping operation when they compile an attribute access.
pmichaud which then resorts to the case I gave above
moritz so the return value from @array[6] has that flag too
masak why is Int ~~ Real true in nom? it just says 'my class Int' in the class declaration.
pmichaud masak: bootstrap
PerlJam aye, okay. I'm a little slow this morning :)
moritz masak: BOOTSTRAP.pm
masak oh ah. 13:38
pmichaud masak: the inheritance for fundamental types is in bootstrap
if someone wants to switch Real to be a role I'd be fine with that :)
I think where at the point where that can happen
moritz pmichaud: last time I tried I ran into ugly problmes
pmichaud *we're
moritz: okay, maybe I'll give it a shot so I can understand the issues 13:39
jnthn Given I'm in the middle of doing stuff with roles, maybe better to hold off at least for today.
pmichaud maybe I'll hold off at least for today
masak my stub Int metaclass Perl6::Metamodel::ClassHOW { ... };
whoa.
"not your grandfather's Perl 6."
pmichaud "these aren't the roles I'm looking for. Move along."
moritz pmichaud: if I had the choice, I'd rather see you working on regex bits :-)
masak 'my *stub* Int *metaclass*'??? 13:40
pmichaud moritz: yeah, I'm looking for my regex shaped tuits.
moritz you could regex for the shapes...
oh wait :-)
jnthn masak: NQP language extension. :)
tadzik public enterprise mixin factory ...
jnthn masak: Read "metaclass" more like a trait.
flussence all this talk of immutable stuff sounds vaguely like postgresql... it basically enforces something like /sub foo is [pure|immutable|rw]/ 13:41
moritz I once met a class...
masak jnthn: uh, ok.
jnthn masak: It means "stub a type Int, and do it using metaclass Perl6::Metamodel::ClassHOW"
masak I'm going to add .isNaN to src/core/Real.pm. any objections? it's in b already.
jnthn: if it's a trait, why doesn't it look like one? :( 13:42
pmichaud I always felt like isNaN was the wrong approach to the problem, but we can adopt it for now.
jnthn masak: Because it isn't actually one.
pmichaud (because I'm not sure what the "right approach" looks like)
masak jnthn: but since it's out-of-band anyway, why not lead the reader down a pleasant garden path? 13:43
pmichaud I think that "stub" and "metaclass" are some of the teeth of our circularity saw.
jnthn pmichaud: Yes, precisely.
masak I understand that. I was just talking about dressing the teeth up to look innocent. :) 13:44
jnthn masak: I suspect at the time I had much bigger concerns than figuring out nice syntax for it. 13:45
masak: I'm also not especially convinced it'll survive.
masak fair enough.
moritz is totally fine with the syntax
it looks special, and heck, it *is* special
masak maybe I'll get used to it. 13:46
13:46 lumi__ left
jnthn iirc, a lot of what it's doing is coping with our current lack of good serialization. 13:46
masak but as a first impression 'metaclass' doesn't say 'using the following metaclass' to me.
pmichaud sometimes teeth should look menacing.
masak also agreed. 13:47
13:47 lumi__ joined
jnthn masak: You'd best go and complain to the CLOS designers too then, for doing similar there :P 13:47
pmichaud would "STUB" and "METACLASS" be better? ;-)
PerlJam jnthn: maybe there's a reason masak doesn't use clos?
masak quite possible.
pmichaud: currently the keywords look like sub calls to me. 13:48
listops.
jnthn masak: Anyway, I agree it's not beautiful. But it's also not in Rakudo.
masak: It's parsed by NQP only.
pmichaud my #`(look out!) stub Int #`(danger!) metaclass .....
jnthn ;)
[Coke] masak: ZOMG i actually recognized 可口可乐 from the other day. ;)
pmichaud or maybe we should be able to decorate with ^^^ somehow :) 13:49
masak I now have NaN ~~ NaN working locally. making spectest Justin Case.
pmichaud masak++
masak [Coke]: maybe you were the only one who got the pun, then :P
jnthn So long as you don't make spectest Justin Beiber...
pmichaud we have to be careful with NaN handling. early implementations of it in ng massively slowed down the test suite.
masak jnthn: at an 800% slower rate... :P
pmichaud (actually even not-early implementations did that... I fixed it up a bit in February of this year)
jnthn Dammit, my epic refactor didn't work first time... 13:50
pmichaud I'll be sure to review the commit :)
13:50 SHODAN left, benabik_ joined 13:51 benabik left, benabik_ is now known as benabik
pmichaud if someone wants to add my comments re: immutability to the p6l thread, that'd be great. I'm not sure how to compose it (and would rather continue my search for regex-shaped tuits) 13:51
so far I have regex TOP { .* <regex-tuit> .* } and token regex-tuit { ... } but there I get a little stuck. :-P 13:53
that ... part needs some work.
moritz no wonder, slacking off on IRC like this :-)
flussence could someone :391s/run/shell/ in rakudo/Makefile? 13:54
13:55 ab5tract joined
masak pmichaud++ # the Hunt for the Regex-Shaped Tuits 13:55
pmichaud I think there might be some over by the couch... I'll look there a short while
masak flussence: I'll do that.
pmichaud (I also need a short nap)
bbiaw
dalek kudo/nom: 948ca74 | masak++ | tools/build/Makefile.in:
[Makefile.in] s/run/shell/

  flussence++ for fossil spotting.
13:57
14:00 lumi__ left, lumi__ joined 14:04 SHODAN joined
donri just noticed how similar the whatwg.org and perl6.org designs are 14:05
coincidence?
masak we're *novices* at HTML. what's their excuse? :P 14:06
donri haha 14:07
14:07 SHODAN left, Trashlord left
moritz whatwg is scarily similar to early versions of perl6.org, much more than the current version 14:07
jnthn ...did you see the style sheet? :) 14:08
body.front-page > a + a + a + a + a + a + a + a + a + a + a + a { color: black; background: #CCFF99; border-color: #99FF00; }
moritz is this poetry?
jnthn :) 14:09
donri looks like perl
donri ducks
masak jnthn: reminds me of this: "What's one and one and one and one and one and one and one and one and one and one?" "I don't know, " said Alice, "I lost count." "She can't do addition," said the Red Queen.
jnthn There's about 10 lines that look like the above, just different in numbers of "+ a"s ;)
masak: hehe
[Coke] alice++
14:10 lumi__ left 14:11 lumi__ joined
dalek kudo/nom: 6c2607a | masak++ | src/core/Real.pm:
[src/core/Real.pm] implemented .isNaN

Same as in Beijing.
14:12
kudo/nom: 88e14a0 | masak++ | src/core/Numeric.pm:
[src/core/Numeric.pm] made NaN ~~ NaN true

Borrowed the implementation from Beijing.
donri obviously 1 & 1 & 1 ad nauseam is 1 14:13
dalek ast: 6a56a35 | masak++ | S02-builtin_data_types/nan.t:
a few rakudo unfudges
ast: 56eedd1 | masak++ | S03-smartmatch/disorganized.t:
[disorganized.t] removed duplicate test
jnthn heh, typical. disorganized test file and a dupe
masak :) 14:14
masak goes for a walk in the disgustingly nice weather
14:17 risou_awy is now known as risou, MayDaniel joined 14:22 SHODAN joined
flussence rakudo: sub a(Str $_ is copy) { for q{foo} => q{bar}, q{bar} => q{baz} -> $pair { s/{$pair.key}/{$pair.value}/ }; $_ }; say a('foo') 14:25
p6eval rakudo ac4d97: OUTPUT«bazbarfoo␤»
flussence huh.
14:25 PacoLinux left 14:26 PacoLinux joined
jnthn flussence: {$pair.key} is a closure 14:27
It just has to return "true" to be considered a successful match.
14:27 lumi__ left
jnthn And it does 14:27
So the regex matches immediately at the start of the string :)
TimToady actually, doesn't matter what it returns 14:28
jnthn Oh, yeah
14:28 lumi__ joined
TimToady you're thinkin' o' <?{...}> 14:28
jnthn It'd neeed to be <?{ ... }> for that.
*nod*
std: /{ 42 }/ 14:29
flussence rakudo: sub a(Str $_ is copy) { for q{foo} => q{bar}, q{bar} => q{baz} -> $pair { s/<?{$pair.key}>/{$pair.value}/ }; $_ }; say a('foo') # like this?
p6eval std bb4f150: OUTPUT«ok 00:01 119m␤»
rakudo ac4d97: OUTPUT«bazbarfoo␤»
jnthn flussence: Well, you want to match the contents of the variable.
You can do $var in a regex to do that, not sure if it likes $var.method() 14:30
flussence (alternatively, all I want to do is simple string substitution in nom if anyone can suggest a better way to write that...)
14:30 ab5tract left
jnthn But there's always ... -> (:$key, :$value) { s/$key/$value/ } ... or some such 14:30
flussence: Well, you can always call .subst
Which isn't in place 14:31
moritz .subst($key, $value)
jnthn And thus saves you the is copy and setting up $_ too
moritz should work without explicitly creating a regex
jnthn yes, it'll be faster.
flussence k, I'll stick with that 14:32
14:32 ab5tract joined, uasi left
moritz funn that after all these months of nom devolpment 'make test' doesn't pass 14:37
*funny 14:38
jnthn Clearly nom has been an epic failure. 14:39
"Doesn't even pass make test!"
moritz: Last I checked it only failed two
dalek kudo/nom: 46e7cc8 | jonathan++ | src/Perl6/Metamodel/ (7 files):
Big refactor of role type checking. Includes an initial implementation of role introspection (.^roles), supporting :local in classes (don't show me my parent's roles) and :transitive (show me the roles that my roles do too).
14:40
jnthn moritz: One of them being a Q:PIR one that simply isn't going to work any more.
moritz: Because it needs an explicit boxing operation adding or something.
moritz jnthn: one, if you pull
jnthn nice :)
moritz that one was easy to fix
14:40 _itz joined
dalek kudo/nom: ca870df | moritz++ | t/00-parrot/09-pir.t:
update 09-pir.t to current Q:PIR policy
14:40
jnthn moritz: S12-introspection/roles.t can be updated/fudged/run if you have tuits :)
Otherwise I'll catch it later on. 14:41
moritz maybe I'll get to it soonish
tadzik jnthn: is that a potential Pies fix in the first one?
jnthn tadzik: No, that's orthogonal. 14:42
tadzik okay
14:42 lumi__ left
jnthn tadzik: It's actually a symbol handling issue rather than a roles one. 14:42
tadzik okay. It was just keywords in the commit message that matched my thinking
14:43 lumi__ joined
moritz ./perl6 --setting=NULL --target=pir --output=src/gen/CORE.setting.pir src/gen/CORE.setting 14:45
14:45 SHODAN left
moritz Method 'role_typecheck_list' not found for invocant of class 'NQPConcreteRoleHOW' 14:45
jnthn: see above, YOU BORKED THE BUILD :-)
jnthn oh, sorry :(
moritz forgot to bump a nqp dep?
jnthn oh argh 14:46
That and I committed to a floating head in nqp :/
moritz I hate it when that happens to me 14:47
jnthn I normally notice pretty quickly.
dalek p: 7d5eec2 | jonathan++ | src/how/NQPConcreteRoleHOW.pm:
Update NQPConcreteRoleHOW to match new role type checking API.
moritz I usually open a shell with the 'git log', then 'checkout master' and cherry-pick the commits to master
probably a better idea (if there are many commits) is to give the current head a name (checkout -b newname), and then git checkout master; git rebaise newname 14:48
and then git branch -D newname # when you're confident that the rebase worked
jnthn oh, that's a good way to do it
git gui, write commit to file, git checkout master, git apply file 14:49
moritz (note that I haven't tried it that way, but it *should* work
dalek kudo/nom: 133508e | jonathan++ | tools/build/NQP_REVISION:
Bump NQP_REVISION.
jnthn Yeah, it sounds like it would.
I don't tend to use git gui for much
Normally when I hit the "OK, this is faster than looking up the command" point ;)
Above should fix the build.
moritz tries 14:50
14:51 ab5tract left 14:54 lumi__ left, lumi__ joined 14:58 domidumont joined 15:00 agentzh left 15:03 sftp left 15:04 ab5tract joined 15:05 _itz left, lumi__ left 15:06 lumi__ joined, sftp joined 15:11 itz is now known as itz_
jnthn nom: say $*VM<config><exe> 15:11
p6eval nom 133508: OUTPUT«␤»
jnthn nom: say $*VM<config><bindir> 15:12
p6eval nom 133508: OUTPUT«/home/p6eval/nom-inst1/bin␤»
15:12 daxim left
jnthn nom: say $*VM<config><slash> 15:12
p6eval nom 133508: OUTPUT«/␤»
moritz jnthn: fwiw it fixed the build
jnthn moritz: Good. :)
moritz ah, .^roles(:tree) seems to be NYI 15:13
15:13 itz joined
dalek ast: a45c33c | moritz++ | S12-introspection/roles.t:
fudge role introspection test for rakudo
15:14
jnthn moritz: Yeah...I didn't put back any of the :tree forms but .^parents
moritz: It doesn't seem very useful on attributes and methods, as masak++ pointed out
Maybe there's a use case for roles though
15:15 agentzh joined, masonkramer joined 15:16 mj41 left
jnthn Question is, what's in the tree? 15:16
That is, do we build the inheritance tree, and put the roles in it? 15:17
What if those roles do other roles and we passed :transitive and :tree?
Gets a bit..."fun" :)
15:18 alvis_ left 15:19 lumi__ left, lumi__ joined
dalek kudo/nom: ce13be6 | moritz++ | t/spectest.data:
run role introspection tests
15:21
moritz it also seems to me that roles don't form a tree 15:22
jnthn Yeah, that's why :transitive just gives you back a flat list. 15:23
PerlJam where are .^roles(:tree) and :transitive specced? 15:24
jnthn S12, if anywhere.
Pretty sure .^roles is spec'd.
PerlJam sure, .^roles is specced, but no mention of :tree for it 15:25
and no mention of :transitive that I can find
.^roles(:tree) doesn't make enough sense to me for what moritz said. 15:26
jnthn Yeah, the spec doesn't say it should be there
I'm +1 to toss thsoe tests
:transitive I think is useful
(show me also the roles that the roles that were explicitly done also pulled in)
...wow, that was a hard to parse sentence :) 15:27
PerlJam well, that's what I think .^roles should do anyway
jnthn Maybe 15:28
It already goes through parents, which you specify with :local
e
gah
It goes through all the roles done by the parents, which you suppress (just the current class) with :local
The transitive thing is kind of another dimension. 15:29
I can see an argument for it being the defaut, but then we need a nice name for the other thing.
15:29 lumi__ left
jnthn (:intransitive is probably bad as we tend to not like negative names) 15:29
15:29 lumi__ joined
jnthn :declared maybe 15:30
:immediate
nah
:shallow
15:30 agentzh left
PerlJam I don't get why someone would ask that question or need to distinguish between "first level roles" and all of the roles 15:31
jnthn Well, we let them distinguish between "first level parents" and "all of the parents"
I can see it mattering to somebody building some kind of exploration tool or something. 15:32
I may want to be able to show poeple "you have this role as a consequence of doing this other role"
15:32 itz left 15:33 alvis_ joined
PerlJam so ... .^roles(:tree) would show the "composition tree"? 15:35
jnthn It could, but there's a confusion there.
Because .^roles also walks the inheritance tree, which you'd also expect to contribute to the structure of the result.
15:39 mikemol left, itz joined 15:40 mikemol joined 15:42 ab5tract left 15:43 itz left, lumi__ left
[Coke] rakudo has a smolder semi-instance on the parrot server. do you find it useful aside from the smolder server issues? 15:44
15:44 lumi__ joined, masonkramer left 15:47 mj41 joined 15:49 sili left
im2ee rakudo: say "Doesn't work?"; 15:53
p6eval rakudo 133508: OUTPUT«Doesn't work?␤»
15:53 im2ee left, im2ee joined 15:55 mj41 left, lumi__ left, lumi__ joined
tadzik does work :) 15:56
16:02 wooden left
JimmyZ rakudo: say "Doesn't work?"{0..4}; 16:02
p6eval rakudo ce13be: OUTPUT«Method 'at_key' not found for invocant of class 'Str'␤ in method postcircumfix:<{ }> at src/gen/CORE.setting:960␤ in method reify at src/gen/CORE.setting:3634␤ in method reify at src/gen/CORE.setting:3539␤ in method gimme at src/gen/CORE.setting:3876␤ in metho…
16:03 JimmyZ left, itz joined, JimmyZ joined, itz left
JimmyZ rakudo: say "Doesn't work?"{0..4}; 16:03
p6eval rakudo ce13be: OUTPUT«Method 'at_key' not found for invocant of class 'Str'␤ in method postcircumfix:<{ }> at src/gen/CORE.setting:960␤ in method reify at src/gen/CORE.setting:3634␤ in method reify at src/gen/CORE.setting:3539␤ in method gimme at src/gen/CORE.setting:3876␤ in metho…
TimToady wonders in moritz's direction why the ir clog translates no-break space to normal space 16:05
16:07 lumi__ left, ab5tract joined 16:08 lumi__ joined, wtw left 16:10 itz joined 16:12 pyrimidine left
masak I would've called :transitive :implicit 16:18
16:19 daniel-s left
PerlJam masak: except that it would include explicit roles too 16:19
(unless I'm mistaken) 16:20
masak oh, good point.
16:20 JimmyZ left
TimToady I think we would be more efficient with mutability containers than immutability containers, since most access is reading 16:21
some kind of capabilities approach, not prohibition approach
PerlJam TimToady: and the default? 16:22
TimToady the default is readonly unless you have authorization, in that world 16:24
16:24 lumi__ left, lumi__ joined
TimToady doing it the other way is madness from an FP point of view 16:26
masak the FP point of view disallows madness. unless it takes place inside a monad. 16:27
:P
TimToady doing it the other way is madness from *my* point of view 16:32
it's just the wrong default; the onus should be on those few parameters that are rw to do the checking 16:33
16:33 daniel-s joined 16:35 lateau_ joined 16:36 lateau_ left, lateau_ joined 16:38 lumi__ left 16:39 lumi__ joined 16:41 ab5tract left 16:49 pmurias left, wallberg joined
masak indeed. readonly is a nice default for attributes. 16:50
then people who don't care will have fewer dependencies on their API.
er, I mean something like a less exposed API. 16:51
16:52 MayDaniel left
bbkr_ I built nom from github (after it was set as the main branch), and --version shows still april - "2011.04-1869-gce13be6". is that correct or GitHub serves me the wrong code? 16:52
16:52 lumi__ left
flussence that's 2011.04 + 1869 commits. 16:52
16:52 lumi__ joined
bbkr_ ok, so it's correct. thanks 16:53
jnthn That's quite some commits :) 16:54
16:54 lateau_ left
masak not enough! ;) 16:54
jnthn You can have a few more when my spectest run is done :P 16:55
masak \o/
16:59 birdwindupbird left 17:00 masak left 17:01 Chillance joined, masak joined 17:02 shortcircuit joined, mikemol left 17:05 lumi__ left
pmichaud I agree with "mutability containers", fwiw 17:06
17:06 lumi__ joined
pmichaud I was just trying to get the general idea across 17:06
dalek kudo/nom: 36d06e1 | jonathan++ | src/Perl6/Metamodel/CurriedRoleHOW.pm:
Add first cut of curried role type check handling. Works for some cases, but not all yet.
17:07
kudo/nom: 3e24ff0 | jonathan++ | src/Perl6/Metamodel/C (2 files):
Make sure we don't lose imformation about how we arrived at a given concrete role; we need it in the type check list.
kudo/nom: d89d8c9 | jonathan++ | t/spectest.data:
We now pass S14-roles/instantiation.t.
kudo/nom: 5d26134 | jonathan++ | NOMMAP.markdown:
Update nommap.
ingy tadzik: ping
tadzik ingy: pingy
diakopter !!
ingy tadzik: Mo has has default now
tadzik ingy: noticed, thanks 17:08
even commented on the commit
ingy dams++
tadzik I still have some doubts about it though, let me recheck them
ingy oh
I gave you a tadzik++ in the lightning talk just now
tadzik oh? What talk? 17:09
ingy: doubts: gist.github.com/1206761
17:10 molaf joined
tadzik moose doesn't behave that way 17:10
ingy tadzik: I already released a comment that it is lazy 17:11
to cpan 17:12
tadzik it's not about laziness
ingy you made a comment that it should be documented 17:13
17:14 ab5tract joined
tadzik yes, but now I have a different doubts :) 17:14
I'll open an issue
masak tadzik: what'd your expected behaviour in this case?
tadzik masak: I'd expect the second say to print nothing
ingy yeah, that looks like what I would expect
tadzik that's what Moose does
17:15 bbkr left
ingy that seems broken 17:15
or not
masak tadzik: ah, the "set" property.
17:15 bbkr joined
masak tadzik: that problem shows up in Perl 6, too ;) 17:15
ingy anyway, it's not really a big deal
imho
tadzik not sure
I have a feeling that golfing went to far :)
ingy well patch it then 17:16
masak it's also a bit like the difference between exists and defined for hash keys. :)
tadzik: look, do you want Mo or do you want... Moo? :P
tadzik :) 17:17
17:17 lumi__ left
masak (I think I agree with tadzik, btw. the distinction is probably useful enough to trump the minimalism.) 17:17
well, actually it depends how important the minimalism is.
17:17 lumi__ joined
ingy I actually have a test for this 17:18
I thought that setting to undef to rebuild is useful
tadzik hmm, mebbe
I filed an issue anyway
as I said, not sure if bug, or just confusing
ingy well the best thing to do next is to at least document it 17:19
tadzik ingy: so, what lightning talk was that? 17:21
ingy the Mo lt 17:22
at IPW
how would you implement not calling default again, btw? 17:23
sorear good * #perl6 17:24
masak good * sorear
tadzik I guess I'll just put all the defaults together and fire them up before BUILD
sorear: hello
sorear wonders if #perl6 knows why I wasn't here yesterday
jnthn sorear: Power outage? 17:25
colomon o/
tadzik or maybe...
colomon first day of classs?
*classes
sorear jnthn: news travels fast
tadzik ingy: you could even put them all in the {@_} in bless
ingy: the ones that are passed to new will overwrite the old ones anyway, as it's a hash
masak power outage in California? well, I never!
jnthn sorear: It was quite a big one, so it made it quite high up in the news :)
masak: multi-country power cut! 17:26
masak jnthn: someone pulled the wrong plug?
17:26 ab5tract left
ingy bbl 17:26
jnthn masak: Something like... :)
tadzik people of big cities seem to be quite excited about power outages :0 17:27
masak there are worse things.
jnthn tadzik: Well, sure, it's the only time you can see the stars again :P
masak oil shortages, for example.
tadzik internet shortage :)
masak o.O
jnthn beer shortage :O
masak tadzik: right... the power goes out... and then you can't charge your smartphone... oh dear... :/ 17:28
tadzik and the kindle becomes useless!
masak that would mean no IRC, no programming...
17:28 lumi__ left
tadzik no bookreading! 17:29
how cruel is that
17:29 lumi__ joined, shortcircuit is now known as mikemol 17:30 lateau_ joined
masak it's like we have some sort of electricity dependency 17:31
flussence ha, that's why I've got a solar-powered battery charger! 17:36
bbkr_ pmichaud: I found so far following tickets that works correctly in NOM branch after switch - 63642, 64184, 65022, 65404, 65224, 66892, 66948(std changed).
flussence (now if only I had access to sunlight...)
masak flussence: if only the humans hadn't scorched the skies to keep the machines from getting solar energy! ;) 17:37
bbkr_++ 17:38
17:41 ab5tract joined 17:44 lumi__ left, lumi__ joined
tadzik or, you know what just came to my mind? 17:45
The Grammar::Debugger could have a feature to print the entire matched text, with different colours for different matched rules
17:46 pernatiy left
pmichaud bbkr_: as long as we have tests for them, the tickets can be closed. If we don't have tests, then tag the tickets with "testneeded" 17:50
17:51 _twitch joined
jnthn tadzik: Sounds nice ;) 17:51
tadzik it would a bit tricky for heavily overlapping matches, but you could maybe narrowize the colouring 17:52
bbkr_ pmichaud: how can I tag a ticket? I don't see such option. 17:53
colomon just got The State of the Art in Numerical Analysis 1987 book in the mail (with the article on branch cuts of elementary complex functions). Very surprised to learn the state of the art did not include using TeX for math articles. What an ugly book! 17:54
17:54 jevin left
pmichaud bbkr_: do you have bugadmin privs? 17:54
sorear colomon: ow
colomon: also, hi
pmichaud it's normally under the "Basics" menu
masak colomon: I would like to discuss branch cuts with you at some point. 17:55
17:55 jevin joined
masak colomon: not necessarily because I have something new to contribute; I just happen to like them and would like to wrap my brain around the situation :) 17:55
colomon++ # "complex issues" blog post 17:56
bbkr_ pmichaud: i have privs and found tagging.
colomon sorear: I've got sin/asin and cos/acos working locally. Taking a pause because when I started working on tan, I started to think that it might make more sense to move all the complex math into the C# Complex class, making the actual trig functions very simple. 17:57
sorear: I need to talk more about it with you soon, but have to blitz through some $work coding at the moment.
masak: thanks. ;)
17:58 lumi__ left, lumi__ joined
pmichaud > .say for 1, 2, 6 ... 33.4 17:58
1
2
6
unable to deduce sequence
spectesting now
tadzik nom: .say for 1, 2, 6 ... 33.4 17:59
p6eval nom 5d2613: OUTPUT«Attempt to return from exhausted Routine␤ in sub EXHAUST at src/gen/CORE.setting:456␤ in sub coro at src/gen/CORE.setting:3765␤ in method reify at src/gen/CORE.setting:3735␤ in method reify at src/gen/CORE.setting:3539␤ in method reify at src/gen/CORE.setting:353…
17:59 ab5tract left
masak poor Routine 17:59
jnthn Poor routine.
wtf
tadzik definitely an improvement
masak jnthn: dude, don't do that :P
jnthn masak: Stop thinking the same thing as me :P
masak steps away from the keyboard, slowly 18:00
tadzik quick, make the /quit joke :P
dalek kudo/nom: f9d94fe | pmichaud++ | src/core/operators.pm:
Fix failure when unable to determine a sequence (RT #98678).
masak .oO( "brain meld not yet complete. experiment shows jnthn used full stop at ze end of ze sentece and masak didn't before ze link was broken" ) 18:01
also, capitalization differs somewhat. 18:02
pmichaud also there's a caps mismatch.
d'oh!
masak wtf
18:02 kst joined
masak .oO( "hee hee hee" ) 18:02
tadzik stop it!
sorear niecza: say 1, 2, 6 ... 33.4 18:03
p6eval niecza v9-11-g0f286c3: OUTPUT«Unhandled exception: Unable to figure out pattern of series␤ at /home/p6eval/niecza/lib/CORE.setting line 742 (CORE die @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1778 (CORE get-next-closure @ 24) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1…
pmichaud masak: you've been on #perl6 too long... you're channeling other folks.
flussence niecza: say 1, 2, 6, 15 ... 33.4
masak oh, so now it's my fault, is it? :)
p6eval niecza v9-11-g0f286c3: OUTPUT«Unhandled exception: Unable to figure out pattern of series␤ at /home/p6eval/niecza/lib/CORE.setting line 742 (CORE die @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1778 (CORE get-next-closure @ 24) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1…
pmichaud masak: I do notice a commonality. 18:04
masak pmichaud: you'll note that I was first both times, at least in my frame of reference. :P
pmichaud mine too, but only bit a split second in each case
s/bit/by/
sorear the technical term for this is "groupthink"
18:04 bbkr_ left
pmichaud the technical term for this is now "masakthink" 18:04
flussence niecza: say 1, 2, 6, -> $a, $b { (($b - $a).sqrt + 1) ** 2 } ... 33.4
sorear although it has acquired a bit of a pejorative flavor in the past years
p6eval niecza v9-11-g0f286c3: OUTPUT«(timeout)» 18:05
flussence whoops.
sorear flussence: note, .sqrt returns a Num, which is unlikely to compare equal to 33.4
flussence hm
niecza: say 1, 2, 6, -> $a, $b { (($b - $a).sqrt + 1) ** 2 } ... * <= 33.4
masak pmichaud: my pary are with the ones who think like masak.
p6eval niecza v9-11-g0f286c3: OUTPUT«1␤»
flussence niecza: say 1, 2, 6, -> $a, $b { (($b - $a).sqrt + 1) ** 2 } ... * > 33.4
p6eval niecza v9-11-g0f286c3: OUTPUT«1 2 6 9 7.46410161513775 -0.535898384862245+2.47862734985495i -6.13376997932347+8.20141988922952i -2.40354521423811+10.9387828231834i 8.8185187537763+4.07648528744702i 19.2043261990253-8.82793483456432i 18.7275375504929-16.419782287884i 4.29945707500593-11.… 18:06
flussence fails at math
niecza: say 1, 2, 6, -> $a, $b { $b + (($b - $a).sqrt + 1) ** 2 } ... * > 33.4
p6eval niecza v9-11-g0f286c3: OUTPUT«1 2 6 15 31 56␤»
18:06 _twitch left
TimToady someone should write .sqrat :) 18:07
tadzik no wonder it didn't figure out that pattern :)
sorear what pattern?
flussence niecza: say 1, 2, -> $a, $b { $b + (($b - $a).sqrt + 1) ** 2 } ...^ * > 33.4
p6eval niecza v9-11-g0f286c3: OUTPUT«1 2 6 15 31␤»
flussence I just figured it as "add next square number Int"
TimToady that is neither arithmetic nor geometric
pmichaud fwiw, rakudo.org/rt/testneeded is a list of tickets that can be closed if we have tests for them
TimToady no, it's multiple by 2, then multipy by 3, then by 4 18:08
*ply
so the next number should be 24, not 15 18:09
:P 18:10
TimToady wonders how many oeis's start with 1, 2, 6 ...
18:11 lumi__ left, lumi__ joined
TimToady ooh, product of first n primes, 1, 2, 6, 30 18:12
18:12 Limbic_Region joined 18:16 risou is now known as risou_awy
sorear any sequence of N integers can be extended infinitely many ways as a degree-N integer-valued polynomial 18:17
it's not well defined, unless you define it using a sequence of minimum Kolmogorov complexity 18:18
pmichaud afk, lunch 18:21
masak sorear: somehow I knew someone would point that out :P
cotto_work sorear: so it's easy! 18:23
;)
18:23 lumi__ left 18:24 lumi__ joined 18:26 lateau_ left
TimToady b: say ~map *.denominator, [\+] 1 X/ 1..100 18:27
p6eval b 1b7dd1: OUTPUT«Method 'denominator' not found for invocant of class 'Num'␤ in <anon> at line 22:/tmp/U4GFapooQG␤ in 'Any::join' at line 1:src/metamodel/RoleToInstanceApplier.nqp␤ in 'List::Str' at line 2838:src/gen/core.pm␤ in main program body at line 1:src/gen/core.pm␤»
masak b: say (1 X/ 1..100)[0].WHAT 18:28
p6eval b 1b7dd1: OUTPUT«Rat()␤»
sorear wtf, Num?
TimToady b: .say for map *.denominator, [\+] 1 X/ 1..100
p6eval b 1b7dd1: OUTPUT«1␤2␤6␤12␤60␤20␤140␤280␤2520␤2520␤27720␤27720␤360360␤360360␤360360␤720720␤12252240␤4084080␤77597520␤15519504␤5173168␤5173168␤118982864␤356948592␤Method 'denominator' not found for invocant of class 'Num'␤ in <anon> at line 22:/tmp/MZOYXoDP5i␤ in main program body at li…
TimToady there's another 1,2,6...
masak b: say ([\+] 1 X/ 1..100)[0].WHAT
p6eval b 1b7dd1: OUTPUT«Rat()␤»
masak b: say ([\+] 1 X/ 1..100)[1].WHAT
p6eval b 1b7dd1: OUTPUT«Rat()␤»
masak b: say ([\+] 1 X/ 1..100)[100].WHAT 18:29
p6eval b 1b7dd1: OUTPUT«Any()␤»
masak b: say ([\+] 1 X/ 1..100)[90].WHAT
p6eval b 1b7dd1: OUTPUT«Num()␤»
18:29 envi left
TimToady you get about 24 Rats 18:29
see above
sorear niecza: say map *.denominator, [\+] FatRat.new(1,1) X/ 1..100
p6eval niecza v9-11-g0f286c3: OUTPUT«1 2 6 12 60 20 140 280 2520 2520 27720 27720 360360 360360 360360 720720 12252240 4084080 77597520 15519504 5173168 5173168 118982864 356948592 8923714800 8923714800 80313433200 80313433200 2329089562800 2329089562800 72201776446800 144403552893600 13127595…
18:30 mberends joined
sorear otoh I'm in a great mood today 18:31
colomon so about that FatRat.new(1,1) -- I've been thinking there ought to be a shorter way of saying that. ;)
sorear o/ mberends
mberends o/ sorear, great moods are great :) 18:32
mberends will dive back into documenting Niecza guts this weekend :) 18:33
sorear \o/
sorear makes up for lost time
18:34 lumi__ left 18:35 lumi__ joined
TimToady niecza: say map *.denominator, [\+] Rat.new(1,1) X/ 1..100 18:35
p6eval niecza v9-11-g0f286c3: OUTPUT«Unhandled exception: Unable to resolve method denominator in class Num␤ at /tmp/H4pdCv9WBk line 1 (MAIN C1_ANON @ 1) ␤ at line 0 (KERNEL map @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1262 (CORE GatherIterator.reify @ 5) ␤ at line 0 (ExitRunl…
TimToady niecza: .say for map *.denominator, [\+] Rat.new(1,1) X/ 1..100 18:36
p6eval niecza v9-11-g0f286c3: OUTPUT«1␤2␤6␤12␤60␤20␤140␤280␤2520␤2520␤27720␤27720␤360360␤360360␤360360␤720720␤12252240␤4084080␤77597520␤15519504␤5173168␤5173168␤118982864␤356948592␤8923714800␤8923714800␤80313433200␤80313433200␤2329089562800␤2329089562800␤72201776446800␤144403552893600␤13127595…
TimToady FatRat not necessary for that much of it...
18:37 alester joined
TimToady niecza: .say for map *.denominator, [\+] 1/1 X/ 1..100 18:37
p6eval niecza v9-11-g0f286c3: OUTPUT«1␤2␤6␤12␤60␤20␤140␤280␤2520␤2520␤27720␤27720␤360360␤360360␤360360␤720720␤12252240␤4084080␤77597520␤15519504␤5173168␤5173168␤118982864␤356948592␤8923714800␤8923714800␤80313433200␤80313433200␤2329089562800␤2329089562800␤72201776446800␤144403552893600␤13127595…
TimToady niecza: .say for map *.denominator, [\+] 1 X/ 1..100
p6eval niecza v9-11-g0f286c3: OUTPUT«1␤2␤6␤12␤60␤20␤140␤280␤2520␤2520␤27720␤27720␤360360␤360360␤360360␤720720␤12252240␤4084080␤77597520␤15519504␤5173168␤5173168␤118982864␤356948592␤8923714800␤8923714800␤80313433200␤80313433200␤2329089562800␤2329089562800␤72201776446800␤144403552893600␤13127595…
18:39 cognominal left
TimToady niecza: constant FatRat F1 = 1/1; .say for map *.denominator, [\+] F1 X/ 1..100 18:39
p6eval niecza v9-11-g0f286c3: OUTPUT«===SORRY!===␤␤Malformed constant at /tmp/k73ZFoayYu line 1:␤------> constant FatRat ⏏F1 = 1/1; .say for map *.denominator, [\␤␤Parse failed␤␤»
TimToady niecza: constant F1 of FatRat = 1/1; .say for map *.denominator, [\+] F1 X/ 1..100
p6eval niecza v9-11-g0f286c3: OUTPUT«1␤2␤6␤12␤60␤20␤140␤280␤2520␤2520␤27720␤27720␤360360␤360360␤360360␤720720␤12252240␤4084080␤77597520␤15519504␤5173168␤5173168␤118982864␤356948592␤8923714800␤8923714800␤80313433200␤80313433200␤2329089562800␤2329089562800␤72201776446800␤144403552893600␤13127595…
TimToady \o/ 18:40
colomon: ^^
colomon TimToady++
18:41 tdignan left
TimToady niecza: constant F1 of FatRat = 1/1; say (F1 * 2).WHAT 18:41
p6eval niecza v9-11-g0f286c3: OUTPUT«Rat()␤»
TimToady hmm
colomon was thinking of 1F, with postfix:<F>(Int $x) { FatRat.new($x, 1) }
TimToady niecza: constant F1 of FatRat = 1/1; say F1.WHAT
p6eval niecza v9-11-g0f286c3: OUTPUT«Rat()␤»
18:41 cognominal joined
TimToady heh 18:41
niecza: constant F1 of FatRat = FatRat(1,1); say F1.WHAT
p6eval niecza v9-11-g0f286c3: OUTPUT«Unhandled exception: Unable to resolve method postcircumfix:<( )> in class FatRat␤ at /tmp/qiXwRG_Oy8 line 1 (MAIN F1 init @ 1) ␤ at line 0 (ExitRunloop @ 0) ␤ at line 0 (boot-MAIN @ 0) ␤ at line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/boot/lib…
TimToady niecza: constant F1 of FatRat = FatRat.new(1,1); say F1.WHAT 18:42
p6eval niecza v9-11-g0f286c3: OUTPUT«FatRat()␤»
TimToady niecza: constant F1 of FatRat = FatRat.new(1,1); say (2 * F1).WHAT
p6eval niecza v9-11-g0f286c3: OUTPUT«FatRat()␤»
TimToady niecza: constant F1 of FatRat = FatRat.new(1,1); .say for map *.denominator.chars, [\+] F1 X/ 1..1000 18:43
p6eval niecza v9-11-g0f286c3: OUTPUT«1␤1␤1␤2␤2␤2␤3␤3␤4␤4␤5␤5␤6␤6␤6␤6␤8␤7␤8␤8␤7␤7␤9␤9␤10␤10␤11␤11␤13␤13␤14␤15␤14␤14␤14␤14␤15␤15␤15␤15␤17␤16␤18␤19␤19␤19␤20␤20␤22␤22␤22␤22␤24␤23␤23␤23␤23␤23␤25␤25␤27␤27␤26␤27␤27␤26␤28␤28␤28␤28␤30␤31␤33␤33␤33␤33␤32␤32␤33␤33␤34␤34␤36␤36␤3
18:46 jevin left, lumi__ left
cotto_work what would it take to teach p6eval how to do irc colors? 18:46
18:46 lumi__ joined
cotto_work or is my client just misconfigured 18:47
[Coke] as opposed to?
18:47 cognominal_ joined
[Coke] it's working for me on IRSSI (at least sometimes, I get well formatted color.) 18:47
on the "Sorry's" from niecza.
masak cotto_work: p6eval did do IRC colors for a while. it was dreadful. 18:48
cotto_work: on the other hand, the IRC logs do color in things a bit afterwards.
18:49 cognominal left, ab5tract joined
TimToady p6eval does color fine in irssi 18:50
sorear cotto_work: irssi parses ECMA-48 color codes. this feature is not universal
18:50 jevin joined
sorear masak: please elaborate on "dreadful". I am curious. 18:50
interestingly Wikipedia thinks that "ANSI colors" is plain wrong 18:51
ECMA-48 was created in 1976. ANSI adopted ECMA-48 as ANSI X3.64 in 1981, then dropped it in 1997
TimToady dropped it because the Swedes thought it was dreadful? :P 18:53
sorear why would the American National Standards Institute care what the Swedes think? 18:54
the Swedes ought to have more influence on the European Computer Manufacturers Association, which did *not* drop it
masak they should!
sorear: basically, the reason was that the ANSI escape codes showed up as ANSI escape codes in my client, and it drove me bananas. 18:56
18:56 mj41 joined
TimToady just think of it as a foreign language/orthography you haven't learned yet 18:57
18:58 ab5tract left
sorear masak: p6eval generates ANSI escape codes right now 18:58
TimToady eventually you'll be able to translate the codes in your head, and visualize the colors :)
or maybe Google Translate could fix 'em :)
masak sorear: I'm not sure exactly what bothered me. I haven't found the backlog yet, although it seems to have been sometime back in 2009. 18:59
I've found me swearing about it a couple of times later that year.
sorear masak: are you maybe thinking of "hilight"? 19:00
19:00 lumi__ left
sorear there was, in ~2009, a p6eval "implementation" that fed code through STD_syntax_highlight 19:00
19:00 lumi__ joined 19:01 jevin left
masak that could be it. 19:01
19:03 Tene joined, Tene left, Tene joined
TimToady there's no point in holding grudges forever if you don't remember *what* you have a grudge against... 19:03
19:03 jevin joined 19:04 REPLeffect joined
[Coke] has a request - can folks save him some .tar.gz files that get sent to smolder and leave them on feather for me somewhere? 19:06
TimToady: I don't even see the codes anymore, I just see, parsefail, exception, line numbers. (?) 19:07
masak TimToady: :)
pmichaud back from lunch
[Coke] pmichaud: LUNCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCH. what an excellent idea that would have been. 19:08
masak is going through what he said in 2009 and notices how much masak-in-2009 kept talking about submitting RT tickets
[Coke]: I'm not lunch with that many "C"s in it is healthy.
TimToady RT == delegating grudges :) 19:09
masak: CC señor! 19:10
lunCCh &
masak oh mberends, u so silly -- irclog.perlgeek.de/perl6/2009-01-15#i_833214 :P
pmichaud since I basically skipped lunch most days this week it felt good to actually have lunch.
nom: .say for 1, 2, 6 ... 31 19:11
p6eval nom f9d94f: OUTPUT«1␤2␤6␤unable to deduce sequence␤ in sub <anon> at src/gen/CORE.setting:7000␤ in sub coro at src/gen/CORE.setting:3765␤ in method reify at src/gen/CORE.setting:3734␤ in method reify at src/gen/CORE.setting:3538␤ in method reify at src/gen/CORE.setting:3538␤ in me…
pmichaud much better.
19:11 lumi__ left
cotto_work nice 19:11
pmichaud++
19:12 ab5tract joined 19:13 lumi__ joined
flussence [Coke]: ~ $ ls .local/tmp/*.tar.gz | wc -l␤650 19:13
that enough for you?
19:14 avinash joined
flussence (the closest place I can leave them on is feather3...) 19:14
masak ooh! ovid hung out in #perl6 in early 2009. I wonder why he stopped. 19:15
19:16 avinash left 19:18 fridim_ joined, pmurias joined
moritz \o 19:18
sorear o/ pmurias 19:19
pmurias sorear: how can i print out nam for a perl6 file?
sorear: hi
sorear run the compiler, then look in obj/ 19:20
pmurias what's the recommended way to printy-print the resulting JSON? 19:24
sorear head -n1 obj/MAIN.nam | json_xs | less
tail -n1 obj/MAIN.nam | json_xs | less
the file contains two JSON documents, one per line
19:24 lumi__ left 19:25 lateau_ joined
sorear #1 contains metadata #2 is mostly executable code 19:25
19:25 lumi__ joined
sorear I'm far less than 100% happy with the design of this part of the system 19:25
pmurias did that change from the common lisp backend times? 19:26
sorear only a little bit
I think in the clisp backend times there was only one document 19:27
pmurias i think so
sorear I split them to speed up "use" statement processing - it reduces the amount of data that needs to be loaded
other than that there have been no large-scale changes to the nam subsystem
obviously new ops have been added; I may have rearranged a few records 19:28
pmurias Unhandled exception: Unable to resolve method shift in class Str
for "use Bar"
sorear you probably have a Bar.nam from a previous compiler version lying around 19:29
I want to add versioning information but I'm not totally sure how it should look
oh, I know: I could make the files 3 lines with the first line a version number 19:30
pmurias yes, that's the case
sorear then versioning wouldn't keep us tied to JSON
pmurias seems sensible
the other choice is if you want to have the git revision of the compiler or a version of the nam format 19:31
sorear a version of the nam format 19:32
partly because I don't want constant recompilation, partly because we can't portably get the git revision 19:33
19:34 Yappoko___ left 19:35 lumi__ left, Yappoko___ joined, lumi__ joined
pmurias sorear: i can't imagine anything better 19:40
besides possibly saving a couple of bytes with a binary format, but i'm not sure it's worth that 19:41
s/not sure it's worth that/doesn't seem sensible 19:42
19:44 ab5tract left
masak rakudo: .say for (1 ... 10) Z (10 ... 1) 19:46
p6eval rakudo f9d94f: OUTPUT«(timeout)»
pmurias sorear: where in obj/ is the .nam file supposed to be?
masak niecza: .say for (1 ... 10) Z (10 ... 1)
p6eval niecza v9-11-g0f286c3: OUTPUT«1␤10␤2␤9␤3␤8␤4␤7␤5␤6␤6␤5␤7␤4␤8␤3␤9␤2␤10␤1␤»
masak submits rakudobug 19:47
niecza: .say for (1 ... 10), (10 ... 1) 19:49
p6eval niecza v9-11-g0f286c3: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤10␤9␤8␤7␤6␤5␤4␤3␤2␤1␤»
masak rakudo: .say for (1 ... 10), (10 ... 1)
p6eval rakudo f9d94f: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤ in sub generate at src/gen/CORE.setting:6933␤ in sub coro at src/gen/CORE.setting:3765␤ in method reify at src/gen/CORE.setting:3735␤ in method reify at src/gen/CORE.setting:3539␤ in method reify a…
19:49 lumi__ left
masak at the rate I'm stumbling over bugs just by *trying stuff randomly*... 19:49
...I think nom has some ways left to go before it replaces b. 19:50
19:50 lumi__ joined
TimToady if that's your random mode I'd hate to see your malice aforethought mode... :) 19:54
masak I have nothing to add to that. 19:57
TimToady my only ray of light is that, if you really do have a malice aforethought mode, I probably won't ever see it coming, since I'm probably #1 on the list of people to be Dealt With... 19:59
masak hugs TimToady :) 20:02
20:02 ab5tract joined 20:07 lumi__ left, [Coke] left
TimToady perl6: say "møøse".utf8.bytes; 20:07
p6eval niecza v9-11-g0f286c3: OUTPUT«Unhandled exception: Unable to resolve method utf8 in class Str␤ at /tmp/_a4tY7zPxV line 1 (MAIN mainline @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2046 (CORE C956_ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2047 (CORE module-CORE …
..rakudo f9d94f: OUTPUT«Method 'utf8' not found for invocant of class 'Str'␤ in <anon> at /tmp/jGdOiiHCbE:1␤ in <anon> at /tmp/jGdOiiHCbE:1␤␤»
..pugs: OUTPUT«decodeUTF8': bad data: '\248'␤decodeUTF8': bad data: '\248'␤*** No such method in class Str: "&utf8"␤ at /tmp/MnghRQ3eN4 line 1, column 5-23␤»
TimToady wowee!
20:08 lumi__ joined
pmichaud b: say "møøse".utf8.bytes; 20:08
p6eval b 1b7dd1: OUTPUT«Method 'utf8' not found for invocant of class 'Str'␤ in main program body at line 22:/tmp/4ixnEGP_ml␤»
pmichaud Looks like we all suck.
20:09 bluescreen10 left
moritz b: say "møøse".encode.bytes 20:10
p6eval b 1b7dd1: OUTPUT«Method 'bytes' not found for invocant of class ''␤ in main program body at line 22:/tmp/XhEQexSgzD␤»
moritz b: say ~"møøse".encode.^methods
p6eval b 1b7dd1: OUTPUT«new decode unpack perl elems postcircumfix:<[ ]> at_pos of contents can isa does list ACCEPTS Str Numeric Seq all any one none join elems flat map sort rotate first grep reverse end min max minmax pick roll classify reduce uniq kv keys values pairs postcircumfix:<[ ]> a…
flussence oh no, '' was hiding in there all along!
moritz b: say "møøse".encode.elems
p6eval b 1b7dd1: OUTPUT«7␤»
moritz happy? :-)
TimToady well, there's s'posed to be a utf8 buf type... 20:11
rakudo: say "møøse".encode.elems
p6eval rakudo f9d94f: OUTPUT«Method 'encode' not found for invocant of class 'Str'␤ in <anon> at /tmp/dD_5e6qUeK:1␤ in <anon> at /tmp/dD_5e6qUeK:1␤␤»
20:12 pernatiy joined
TimToady b: say "møøse".encode.WHAT 20:12
20:12 lateau_ left
p6eval b 1b7dd1: OUTPUT«Buf()␤» 20:12
TimToady I don't think there's really a Buf type, more of a Buf role 20:13
well, maybe it's a buf role, and Buf is just Array of Int
20:15 Moukeddar joined
Moukeddar hi guys 20:15
20:15 lumi__ left 20:16 Trashlord joined, lumi__ joined
TimToady wonders if class utf8 is buf8 in a Liskovian sense... 20:16
initial reviews are mixed 20:17
in some sense it's more like 'subset utf8 of buf8 where *.valid_utf8' or some such, but you wouldn't want to be revalidating every moment 20:18
sorear perl6: say "mǫǫse".bytes 20:19
p6eval pugs: OUTPUT«decodeUTF8': bad data: '\491'␤decodeUTF8': bad data: '\491'␤7␤»
..rakudo f9d94f: OUTPUT«7␤»
..niecza v9-11-g0f286c3: OUTPUT«10␤»
sorear perl6: say "møȯse".bytes
perl6: say "møøse".bytes
p6eval rakudo f9d94f: OUTPUT«7␤»
..niecza v9-11-g0f286c3: OUTPUT«10␤»
..pugs: OUTPUT«decodeUTF8': bad data: '\248'␤decodeUTF8': bad data: '\559'␤7␤»
pugs: OUTPUT«decodeUTF8': bad data: '\248'␤decodeUTF8': bad data: '\248'␤7␤»
..rakudo f9d94f: OUTPUT«5␤»
..niecza v9-11-g0f286c3: OUTPUT«10␤»
sorear finally got it right...
hello Moukeddar
pmurias: obj/{$class.subst('::','.')}.nam 20:20
TimToady well, but Str isn't really supposed to respond to .bytes, by one rationale of thinking
sorear TimToady: isn't it more like Buf === Array[int8]?
rather than Array[Int]
TimToady not at all 20:21
Buf isn't supposed to care how big its ints are, in the abstract
20:22 bluescreen10 joined
sorear TimToady: what is the purpose of Buf? 20:22
moritz so the only difference between Buf and Str (conceptually) is that Buf doesn't try to interpret its elements as characters? 20:23
TimToady Buf is really a role, but it's true that the spec currently claims it puns to Buf[uint8] by default
sorear moritz: characters are not integers anymore
there's no reasonable way to assign a numeric value to a .chars==1 NFG string like n-umlaut 20:24
TimToady the whole point of NFG is to force that anyway even when it's unreasonable :) 20:25
masak ...by hijacking the negative integers. 20:26
TimToady moritz: a further difference is that Buf allows array ops, while Str doesn't, as currently specced
and a Buf doesn't have to account for weird NFG chars 20:27
20:27 ab5tract left 20:30 lumi__ left
TimToady two graphemes are distinct if they have differing NFG integers, or if they are the same, but are both negative and point to two different NFG tables that contain different codepoint mappings 20:30
20:31 lumi__ joined
TimToady didn't say that quite right 20:31
20:31 ab5tract joined
TimToady two negatives must always compare with the table mappings 20:31
since two different negatives in two different tables might map to the same sequence 20:32
hopefully these are relatively rare, in normal text 20:33
though I foresee for some languages that rely heavily on composition that NFG strings in that language might want to share a translation table for some of the synthetic codepoints 20:34
anyway, such codepoints are rare in CJK and western scripts
generally one or the other of the comparands will be positive, and represent a normal NFC codepoint 20:35
sorear well, a Str needs a grapheme mapping table then; it isn't _just_ a Buf 20:40
TimToady I just said that
sorear in principle we could have a global grapheme map, but I am very nervous about that from a garbage-collection viewpoint 20:41
TimToady that's what I mean at :27
not so much the GC perspective as the DOS perspective, for me
er, DoS
sorear oh, I managed to miss that one line
20:41 ab5tract left
sorear TimToady: if negative codepoints are reclaimed by the GC, we don't have a DoS problem 20:42
TimToady so my guess is that a robust NFG would reserve some amount of global space for the process, then overflow to per-string
sorear: hmm, I guess
20:44 ab5tract joined
TimToady otoh, if one wants to, say, use uint8 or uint16 for some chunks of the "rope", it's good to have numbers that don't exceed -256 or -65536 20:44
er, -128 and -32768
and locality of character sets would tend to make that work better for per-string tables 20:45
or per-rope-segment
20:45 lumi__ left 20:46 lumi__ joined
sorear TimToady: er, "int8" "int16"? 20:47
TimToady nodnod 20:48
TimToady slaps his brane around several times
bbkr pack() disappeared in nom branch?
tadzik Buf NYI
20:48 [Coke] joined
[Coke] . 20:49
masak pack() was never very implemented in b either.
I'd love to collaborate with someone over a serious implementation for nom.
TimToady and if we can easily map both positive and negative graphs to their NFD sequence, it becomes fairly straightforward to do partial matching sans some or all of the marks
well, as straightforward as anything ever is in Unicode 20:50
masak that, and the exciting new features having to do with pack()-like functionality for compact classes.
bbkr i know pack() wasn't seriously implemented. whole spec section is missing for it.
masak bbkr: well, it's right there in S32. but not very ironed out, no.
TimToady there's always been some suspicion that pack was the wrong solution to most serialization problems
masak ISTR a number of questions about it are up in the air.
TimToady: the compact-classes idea sounds intriguing, but no-one knows how it'll look.
sorear pack is more flexible than compact-classes, imo 20:51
masak my guess is that pack/unpack will remain, but some of their niche will be eaten by compact classes.
TimToady I tend to view the pack engine as the underlying mechanism, but its assembly is usually driven by compiling the class down to the "assembly"
and then with appropriate constant folding you can treat the pack format as immutable, and optimize further 20:52
sorear +1 20:53
I can get behind that.
sorear wonders if the pack engine is the same as the sprintf engine
TimToady well, if it's turing complete, sure :) 20:54
I have a bridge for sale made out of turning machines... 20:55
20:55 lumi__ left
TimToady *turing, gah 20:55
bbkr is restoring pack/unpack support expected before first release from nom branch?
TimToady dubitable
masak not necessarily. 20:56
TimToady however, if you want to champion it... :)
20:56 lumi__ joined
masak since there wasn't much there before. 20:56
tadzik you may want to tackle nom-buf branch
masak I think I promised pmichaud to reimplement pack/unpack...
sorear wonders if a universal turning machine is like a universal touring machine 20:59
masak: how are macros? I saw them discussed when I searched the logs for ?sorear? 21:00
TimToady does a universal touring machine come with an infinite road?
pmichaud masak: I think I mainly asking for help reimplementing pack/unpack :)
I still want to rework b's buf implementation
(don't know when I'll do that atm, though)
masak sorear: my grant application got published: news.perlfoundation.org/2011/09/hag...mplem.html 21:01
pmichaud yes, everyone please comment on masak++'s grant app
masak sorear: I have a local branch which I wrote, with jnthn's help, in Tallinn.
tadzik I did, and it didn't appear yet
TimToady everyone here has N things they have to do before they do anything else, where N is not normally 1. :)
masak sorear: plan to get it ready for pushing this weekend.
TimToady: we need more of us. 21:02
TimToady no, we need more of those folks whose N is 0
masak hah! suckers. 21:03
bbkr pack template needs serious redesign. many P5 tokens doesn't make sense in P6.
TimToady there are already too many of us whose N ⋙ 1
masak bbkr: that's what I found.
sorear TimToady: I have 0 things to do before I finish doing CLR interop, 1 thing to do before I change Complex for colomon, 2 things to do before I try to implement NFG... 21:04
masak bbkr: it was slow going to implement, because there were ASCII assumptions, or Buf/Str confusions, in a lot of places.
TimToady how...linear...
21:04 im2ee left
pmichaud it's at least inductive to some extent :) 21:04
TimToady yes, assembly languages tend to allow massive type violations :)
21:05 im2ee joined
masak I like the analogy. 21:05
sorear types exist only in my head anyway.
TimToady is analogy retentive...
sorear reads the hague application
masak but the square peg of pack/unpack doesn't always fit extremely well into the round hole of Perl 6 Str/Buf philosophy...
TimToady well, Str has almost nothing to do with it, since pack is almost certainly going to produce a Buf of some sort 21:06
21:06 lumi__ left
sorear straw man proposal: pack is sprintf for Buf and vice versa 21:07
pack uses a format string to convert whatever to bytes
TimToady huffs and puffs
sorear sprintf uses a format string to convert whatever to chars
21:07 lumi__ joined
TimToady please don't mention scanf, or I shall be ill... 21:08
oops
21:08 Moukeddar left 21:09 ab5tract left
masak I'm sure it made a lot of sense at the time. 21:09
TimToady um
not really :)
21:11 dukeleto left
sorear unpack is like sscanf then. 21:12
bbkr i think that the nice idea for pack would be to introduce captures in template. for example a lot of serializations mention how many objects of given type will follow and then pass the objects. so template for "5abcde" may look like this: (V)A*$0
21:13 dukeleto joined
sorear I don't much hate scanf per se, but anyone caught using it on ttys should be scolded 21:13
bbkr: that's unpack, not pack
bbkr sorear: right 21:14
flussence
.oO( maybe we should have a version of grammars for binary data... )
21:15
21:15 bbkr left, bbkr joined
sorear flussence: we already do, in the "wishful thinking" section of S05 21:15
flussence oh.
TimToady the other problem is accounting for the difference between types whose size is absolute vs those whose size is determined by C
sorear we should have varying degrees of mandatoryness 21:16
it doesn't make a whole lot of sense to have C pack types in a CLR Perl6
bbkr what are those "compact classes"? 21:18
sorear wonders if ey should comment on masak's grant proposal
bbkr: classes with only native-type fields are considered to implicitly define a pack/unpack template
21:18 mj41 left 21:19 lumi__ left 21:20 lumi__ joined
TimToady bbkr: see also perlcabal.org/syn/S09.html#Compact_structs 21:20
and perlcabal.org/syn/S09.html#Compact_arrays 21:21
bbkr likes this idea 21:22
21:23 SHODAN joined 21:24 fhelmberger_ joined, fhelmberger_ left 21:25 fhelmberger_ joined
flussence I've got a pretty solid idea of how to implement a compact struct role using pack/unpack - the main thing stopping me is finding a perl6 with pack and native types at the same time... 21:25
21:25 y3llow left, pothos left 21:27 y3llow joined, pothos_ joined 21:28 pothos_ is now known as pothos, fhelmberger_ left 21:29 y3llow left, y3llow joined
bbkr has to rewrite whole BSON module :( 21:30
21:30 lumi__ left, pothos left, lumi__ joined, pothos_ joined
TimToady wonders what BavaScript is... 21:31
21:31 pothos_ is now known as pothos 21:32 ggoebel left, ggoebel joined
pmichaud [Coke]: I didn't forget "IsRakudoFastYet" -- just been distracted by other stuff. 21:33
sorear no, no, it's "BS object notion". pejorative name, you see
pmichaud (other non-p6 stuff :-| )
TimToady ponders BF object notation 21:34
pmichaud: your N is always > 1 :)
decomputing & 21:36
21:36 HarryS left
masak 's N is surreal 21:42
21:42 bbkr left 21:44 SHODAN left
masak isn't it odd how, just like complex analysis, surreal numbers actually make it much *easier* to talk about infinities and infinitesimals. with our ordinary real number line and real analysis, we always have to approach things by limits. 21:44
with surreal numbers and the Riemann sphere, infinities are actual values. 21:45
21:48 lumi__ left 21:52 bluescreen10 left
pmichaud hmmm. the problem with "say (1...10), (10...1)" looks like a lexical scoping or closure problem. 21:52
jnthn Oh? 21:53
pmichaud yeah. I have a lexical that is changing at a distance
or an outer that isn't being managed properly
jnthn :(
Location? 21:54
21:54 lumi__ joined
pmichaud in SEQUENCE() (src/core/operators.pm) 21:54
21:54 pmurias left
pmichaud the "generate" nested sub isn't seeing the proper $tail 21:54
when there are two active calls in the same statement
let's see if I can golf it down 21:55
jnthn my sub generate($code) { # my is the default :)
pmichaud doesn't hurt to be explicit :)
I kind of like seeing the "my" there, to make it clear that this is really local.
jnthn Yes, true. Emphasis can be nice :)
masak huh. 21:56
never had such a desire :)
am I just being haughty if I think "people should know that subs are 'my'"? :)
jnthn masak: Not really
masak: It's like you can write has $x; but most people instead write has $!x;
masak I mean, if I took into account all the things I *could* make explicit... 21:57
jnthn masak: Just that in that case the community at large seems to have called it the other way :)
masak jnthn: yeah, but in that case 'has $x' is actually the derived form.
it's not that the '!' doesn't add anything... it was there all the time :P 21:58
the 'my' wasn't, because it didn't have to be.
jnthn masak: I guess you could think of it that way, but the compiler will generate the same thing for you either way :)
masak I know, I know. :)
I'm just trying to explain why I felt it was a not-quite-right comparison.
pmichaud comments don't have to be there either :)
masak I tend to write comments only when the programming language itself can't explain what I want. 21:59
jnthn masak: For the record, I actually quite like the "generally we don't write my, and generally we do write $!x" that folks seem to have settled on. :)
masak lately I've been having a grand time weaving comments into the code in various ways.
things like '# just in case'
jnthn // Initializes the object 22:00
...constructor follows...
masak augh
jnthn: t-t-t-t-t-t-telephon.
e*
jnthn augh
masak ;)
no, I meant something quite the opposite of that. 22:01
im2ee Umm, hard day. :)
masak more like the comments being a 'commentator track' to the code, saying things that don't quite fit in there but that might merit saying.
sorear masak: I work with people who don't want to learn the relative precedence of || and && and insist that I parenthetize logic expressions
pmichaud yeah, something weird is happening here. gist coming up 22:02
gist.github.com/1207447
jnthn pmichaud: fwiw, the outer looks right in PIR
masak sorear: yeah, I hate having to do that! but sometimes I yield.
22:02 im2ee left
jnthn sorear: A while ago, somebody "fixed" my code by adding parens in such a case where I thought it was too obvious to need them. 22:02
22:03 im2ee joined
jnthn sorear: They put them in the wrong place and broke it. 22:03
:S
pmichaud jnthn: so, you thought it was obvious (it wasn't to them), and they thought they knew what the code was doing (they didn't).
in which it might've been better for you to put them there in the first place :-P
masak sorear: unfortunately, when it comes to precedence, the following are well-known and assumed well-known: the five mathematical operations. assignment. everything else is a potential target fro parenthesization.
pmichaud in p6, assignment isn't well known yet :) 22:04
jnthn pmichaud: Yeah, it woulda been in hindsight :)
pmichaud people still get confused by my $list = 1,2,3;
jnthn pmichaud: ooc, can you produce a case not involving GATHER?
pmichaud jnthn: I'm thinking it has something to do with the lazy evaluation, though.
im2ee Hard day, so its time for me. Have a nice night or day. Bye! :)
masak std: my $list = 1, 2, 3;
p6eval std bb4f150: OUTPUT«ok 00:01 122m␤»
jnthn night, im2ee 22:05
masak im2ee: 白白
pmichaud I might be able to do something with map.
jnthn masak: I thought, "what"...then realized how those chars sound :)
22:05 im2ee left
sorear hears shiro-shiro 22:06
masak jnthn: that's how they spell it :)
22:06 lumi__ left
masak phenny: zh en "白白"? 22:07
phenny masak: "In vain" (zh to en, translate.google.com)
masak er.
sorear mm, Ybai2
masak sorear: right.
sorear bye-bye
masak despite what phenny says :)
sorear my Japanese dictionary has a Mandarin/Pinyin field for no obvious reason
22:07 lumi__ joined
pmichaud jnthn: it fails with .map, too 22:07
let me clean up the code a bit and I'll gist it 22:08
jnthn pmichaud: Looking at your last one. The closure passed to GATHER is cloned. So it's not that.
22:08 bluescreen10 joined
jnthn pmichaud: oh, but the generate sub is not... 22:09
nom: sub foo($x) { sub bar() { say $x } return { bar() } }; my $a = foo(1); my $b = foo(2); $a(); $b(); 22:10
p6eval nom f9d94f: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 1␤»
jnthn nom: sub foo($x) { sub bar() { say $x }; return { bar() } }; my $a = foo(1); my $b = foo(2); $a(); $b();
p6eval nom f9d94f: OUTPUT«2␤2␤»
jnthn pmichaud: ^^ could be at the root of this.
sorear wtf
seriously?
jnthn b: sub foo($x) { sub bar() { say $x }; return { bar() } }; my $a = foo(1); my $b = foo(2); $a(); $b();
p6eval b 1b7dd1: OUTPUT«1␤2␤»
sorear closures don't work in nom?
pmichaud I suggest trying it without the 'return', to avoid that variable. 22:11
22:11 ranguard joined
jnthn b: sub foo($x) { sub bar() { say $x }; { bar() } }; my $a = foo(1); my $b = foo(2); $a(); $b(); 22:11
p6eval b 1b7dd1: OUTPUT«1␤2␤invoke() not implemented in class 'Boolean'␤ in main program body at line 22:/tmp/Hy87sSsyeI␤»
pmichaud pointy
jnthn er
pmichaud -> { bar() }
jnthn b: sub foo($x) { sub bar() { say $x }; -> { bar() } }; my $a = foo(1); my $b = foo(2); $a(); $b();
p6eval b 1b7dd1: OUTPUT«1␤2␤»
jnthn nom: sub foo($x) { sub bar() { say $x }; -> { bar() } }; my $a = foo(1); my $b = foo(2); $a(); $b();
p6eval nom f9d94f: OUTPUT«2␤2␤»
pmichaud ....that looks like a problem. 22:12
jnthn pmichaud: The PIR makes it clear what's oging on.
pmichaud: The closure gets cloned. bar does not.
pmichaud there's supposed to be a capture_lex on bar, though.
jnthn pmichaud: There is 22:13
pmichaud: That's not enough though.
pmichaud the &bar lexical needs to be bound to a newclosure/clone
jnthn Right, that's what's missing.
pmichaud that's what ng does, iirc
jnthn pmichaud: Yeah. Unlike sorear, I don't get everything right.
Will fix. 22:14
pmichaud I'm a little surprised this hadn't bitten us somewhere already :-S
jnthn Me too
I mean, a bunch of other cases do the right thing, but still, it's a surprising one not to have run into. 22:15
22:15 wamba left
pmichaud I can also rewrite the SEQUENCE code to not use a generate sub 22:15
it's only called from one place, so inlining it might make more sense anyway.
(but we still need to fix the lexical bug, obviously :) 22:16
jnthn pmichaud: Feel free, but I'm still gonna fix the bug. :)
pmichaud I'm sad it's a lexical bug, I'm *really* glad the problem wasn't with GATHER. :-)
jnthn Yes, that was my fear. 22:17
I'm relieved it's silly and easily golfed.
diakopter I wonder how man_or_boy worked
jnthn diakopter: Yeah, that was my "did I get closures right" test. :) 22:18
Maybe it doesn't rely on nested subs.
(It's the installation of declarational things that's at issue.)
sorear jnthn: sorry; my actual feelings are closer to pmichaud's 22:19
jnthn: I'm amazed you hadn't been bitten somewhere else
jnthn sorear: Sorry, I was a bit snappy there. I've kinda had a week of being bitten... :) 22:20
sorear pmichaud: could do my $generate = sub () {...
sorear offers hugs
jnthn :)
22:20 lumi__ left 22:21 lumi__ joined 22:23 plobsing joined
masak blog post! strangelyconsistent.org/blog/dash-n...part-three 22:28
sorear yay! 22:30
sahadev perl6: my @a = 1 .. 10; my @p = 2, 3, 5, 7; sub mapper { my @keys; @keys.push($^a % 2 ?? "odd" !! "even"); @keys.push("prime") if $^a ~~ @p.any; @keys } my %h = classify(&mapper, @a) 22:32
p6eval rakudo f9d94f: OUTPUT«===SORRY!===␤Confused at line 1, near "sub mapper"␤»
..pugs: OUTPUT«*** No such subroutine: "&classify"␤ at /tmp/15wlR_88oU line 1, column 155 - line 2, column 1␤»
..niecza v9-11-g0f286c3: OUTPUT«===SORRY!===␤␤Strange text after block (missing comma, semicolon, comment marker?) at /tmp/TUUoFQMTSX line 1:␤------> .push("prime") if $^a ~~ @p.any; @keys }⏏ my %h = classify(&mapper, @a)␤␤Parse failed␤␤»…
22:32 lumi__ left
sorear sahadev: you need a ; after the } 22:33
sahadev sorear: thanks
masak Perl 6 is a bit stricter than Perl 5 on that front.
sahadev perl6: my @a = 1 .. 10; my @p = 2, 3, 5, 7; sub mapper { my @keys; @keys.push($^a % 2 ?? "odd" !! "even"); @keys.push("prime") if $^a ~~ @p.any; @keys }; my %h = classify(&mapper, @a)
p6eval pugs: OUTPUT«*** No such subroutine: "&classify"␤ at /tmp/bWYKWhHMrh line 1, column 156 - line 2, column 1␤»
..niecza v9-11-g0f286c3: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'classify' used at line 1␤␤Potential difficulties:␤ %h is declared but not used at /tmp/21LPgXcPBH line 1:␤------> ("prime") if $^a ~~ @p.any; @keys }; my ⏏%h = classify(&mapper, @a)␤␤…
..rakudo f9d94f: OUTPUT«Method 'push' not found for invocant of class 'Parcel'␤ in method reify at src/gen/CORE.setting:3634␤ in method reify at src/gen/CORE.setting:3539␤ in method reify at src/gen/CORE.setting:3539␤ in method gimme at src/gen/CORE.setting:3876␤ in method eager at s…
22:33 lumi__ joined 22:41 alester left 22:46 odoacre left, odoacre joined 22:47 HarryS joined 22:48 Trashlord left
sorear masak: nitpick 22:49
masak sure. go ahead.
sorear masak: Haskell's Prelude is not a prelude in the sense of the term you use
22:49 wolfman2000 joined
masak oh! 22:49
well, live and learn.
sorear masak: Haskell's "prelude" is the single line, "use Prelude" 22:50
masak huh.
sorear masak: Haskell's Prelude is an ordinary module governed by the import/export rules
masak I think I see the distinction.
would it work if I just lower-cased the word?
dalek kudo/nom: 569deeb | pmichaud++ | src/core/operators.pm:
Fix problem with two sequence operators being active at the same time (RT #98790).

This commit doesn't fix the actual underlying problem, which is that lexically nested subs aren't being cloned properly. jnthn++ is working on that issue. Instead, this patch simply inlines the nested sub instead of calling it separately.
22:51
flussence
.oO( -p = -np )
22:51 lumi__ left
sorear Haskell'98 has the ad-hoc rule that if you explitly import the Prelude, there's no prepending
I think the Perl 6 outer scope way is much more elegant 22:52
masak aye.
22:52 lumi__ joined
masak especially since we got it to be an outer lexical scope, not just surrounding code. 22:52
dalek ast: ff21ee5 | pmichaud++ | S03-sequence/basic.t:
Unfudge passing tests for RT #98790, RT #75768.
22:53
jnthn > say (1...5), (5...1) 22:54
1 2 3 4 55 4 3 2 1
\o/
(that's without pmichaud++'s patch, and teh underlying issue fixed)
masak \o/ 22:55
pmichaud \o/ 22:56
lots of fixes today :)
sorear jnthn++
diakopter jnthn: does man_or_boy still work? :) 22:59
jnthn diakopter: Well, spectesting, so will know soon :) 23:00
diakopter: yes \o/ 23:03
23:05 lumi__ left
diakopter ]o[ 23:05
23:05 lumi__ joined 23:08 wallberg left
sjohnson /o\ 23:09
pmichaud \o/ 23:10
sjohnson heheh
sorear runs
sjohnson looks like a cheerleading move
masak "who's the King? U.R.! who's the King? U.R.! A.R.T.H.U.R.!' 23:11
s/'/"/
23:12 donri left
masak 'night, channel 23:13
23:13 masak left
dalek kudo/nom: efe1f21 | jonathan++ | src/Perl6/Metamodel/ParametricRoleHOW.pm:
Tiny refactor in preparation for implementing multiple roles with the same shortname.
23:13
kudo/nom: 00a1159 | jonathan++ | src/Perl6/ (2 files):
Fix closure handling bug with nested subs; should fix it for my-scoped methods/regexes too.
jnthn oh, a bonus patch I forgot I'd done... :) 23:14
23:17 lumi__ left 23:18 lumi__ joined 23:50 molaf_ joined 23:51 molaf left 23:56 lumi__ left 23:57 lumi__ joined