»ö« 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.
Tene jnthn: you around? 00:02
jnthn Tene: yes
And not about to sleep!
;)
masak bah, sleep! 00:03
Tene jnthn: have time to work on 6model with me today?
00:03 flatwhatson joined
jnthn Tene: Sure - got the link to the thing you were running into trouble with? 00:03
Tene Sure; gist.github.com/838498
that's where I ended up; let me read through it and try to swap it back in 00:04
00:05 Guest87704 joined
Tene I can't seem to work out where I left my local copy; good thing I posted it there. :) 00:06
jnthn It was failing with Null PMC access in get_string()? 00:07
Tene Yeah. 00:08
jnthn OK, got that.
Looking.
dalek psi: ed8d0a6 | masak++ | doc/ (2 files):
[doc/ChangeLog] [doc/ROADMAP] updated

One could argue that I should have done this before the release. One would be right. Oh well. Better late than never, I guess.
jnthn OK, it's that in: 00:09
my $speak := method ($self:) { say(pir::getattribute__ppps($self, Cow, '$!noise')); }
that attribute comes back empty 00:10
(e.g. null)
00:10 colomon joined
jnthn and trying to say it gives the NPMCA 00:10
Trying to work out why.
Tene: oh, I see it 00:11
I think
Tene: Yes, build_magic has the issue. 00:13
One is that it doesn't strip the $! off before looking for the attribute name. Note that calling them $! isn't needed - I guess Ruby doesn't put a ! in attribute names? Or does it? :)
Anyway, stripping the $! off when looking in the attributes hash helps.
00:14 jferrero left
Tene It doesn't, but I saw some code in p6opaque I think that looked at that, and changing it to $! fixed some other bug I was seeing. 00:14
masak jnthn: does that mean that you can't have both $!foo and @!foo in a class?
Tene and, no, usually ruby attribute names are just 'foo', but that's easy to hide behind whatever. 00:15
jnthn masak: You can
masak: Note we're talking about Ruby semantics here... :)
masak oh, ok. 00:16
jnthn Tene: Yes, I'm guessing you were trying to get rid of "P6opaque attributes NYFI 4"
Tene That sounds right.
jnthn Oh!
I see what's wrong
if pir::defined($!parent) { 00:17
Note that type objects are always going to come back as undefined
Unless you do something to make that not be the case.
Tene Ah.
jnthn So defined checks on those will cause issues
That in turn means that .parents gives back bad results 00:18
Which in turn means P6opaque doesn't allocate space for attributes properly - which leads to the weird error.
Tene Ahh, interesting.
diakopter bwahaha at "NYFI" 00:20
00:21 coldhead joined
jnthn Not Yet *Fully* Implemented :P 00:21
00:21 colomon left
masak O RLY? 00:21
I'm sure we all read it that way... :P 00:22
00:22 colomon joined
jnthn No, I...shoulda thought that one through more :P 00:23
masak you should have Fully thought it through :P 00:24
Tene I was using $!parent because ruby doesn't have MI, but @parent should work fine for this. 00:26
Hmm... making that change leads to NYFI 1 00:31
jnthn C:\Consulting\nqp>nqp ruby.p6
mooooooo
\o/
Tene: gist.github.com/857906
Tene yeah, I like that better. 00:32
jnthn And it seems to work :)
diakopter niecza: say [].WHAT 00:33
p6eval niecza v3-48-gcbe9ac1: OUTPUT«Unhandled exception: System.NullReferenceException: Object reference not set to an instance of an object␤ at Niecza.CtxListIterator.Get (Niecza.Variable obj) [0x00000] in <filename unknown>:0 ␤ at Niecza.Kernel.IterHasFlat (Niecza.VarDeque iter, Boolean flat)
..[0x00000] in <filena…
masak niecza: say {}.WHAT 00:35
p6eval niecza v3-48-gcbe9ac1: OUTPUT«Hash()␤»
masak niecza: say ().WHAT
p6eval niecza v3-48-gcbe9ac1: OUTPUT«Unhandled exception: System.InvalidCastException: Cannot cast from source type to destination type.␤ at Niecza.CtxParcelList.Get (Niecza.Variable obj) [0x00000] in <filename unknown>:0 ␤ at CORE.C234_Parcel_2EStr (Niecza.Frame ) [0x00000] in <filename unknown>:0 ␤
..at Niecza.Kern…
00:36 [particle]1 is now known as [particle]
Tene jnthn: Great; thank you. 00:37
Let's see how much more I can get working today... 00:39
sorear diakopter: uh... There isn't actually any automated procedure for that yet 00:45
diakopter oh :( 00:48
well it's not that bad... like 1-2 minutes
sorear cp run/* boot/run; cp obj/* boot/obj should work 00:53
diakopter cool; thanks 00:56
sorear colomon: how do we interpret the squiggles on your latest blog post? 01:00
01:03 Chillance joined 01:04 pmurias left
Tene jnthn: just checking to make sure I haven't missed anything; there isn't a way in nqp to indicate that an nqp class declaration should use a specific knowhow, is there? 01:05
jnthn Tene: No 01:06
Tene: Generally, it's good to write the meta-objects, then use them from the language you're working on
Tene: We maybe should add a way though... 01:07
Tene It would be convenient to me for bootstrapping purposes, at least. 01:08
Looks like it should be fairly straightforward.
jnthn Should be
Tene might be better to support adding a package_declarator rather than changing the default for class 01:10
jnthn Yes, certainly
That is essentially a langauge tweak
But we're missing some of the other bits to do those yet 01:11
Tene seeing repeated multi rules with nearly-identical bodies rather irks me. That should be what the body of the proto is for. I don't remember if TimToady ever worked that out, though. 01:12
proto token package_declarator { <sym> :my $*PACKAGE-SETUP := PASt::Stmts.new(); :my $*PKGDECL := $<sym>; <package_def> }; 01:13
masak spec it and they will come.
Tene That's a bit besides the point, though. 01:14
masak maybe.
sorear wonders in jnthn's direction whether niecza/parrot should use nqp's 6model (with niecza-optimizations added) or a custom thing based on niecza.net's metamodel 01:16
jnthn Worrying about one Perl 6 implementation targetting Parrot is kinda enough for my brane... :) 01:18
01:19 rdesfo left
jnthn You probably could target 6model but... 01:19
I guess not also using other bits of PCT that work with it may mean re-inventing more wheels.
A bunch of stuff is changing in that area at the moment. 01:20
01:22 rdesfo joined 01:27 lopaway is now known as lopnor
sorear jnthn: How similar do you forsee 6model.net and Parrot's 6model/M1 being in the asymptotic future? 01:32
Tene Hmm... p6opaque might not buy me that much, considering the default case in ruby for attributes is adding them to individual objects at runtime. 01:33
jnthn sorear: No, P6opaque doesn't sound suitable for that.
sorear Tene: I recommend against using P6opaque then 01:34
jnthn gah,
s/sorear/Tene/ :)
Tene Bleh. I'll need to write my own repr then, I guess. :(
jnthn sorear: Probably conceptually similar, though I suspect the details of how they interact with the VM will be pretty different. 01:35
6model's .Net implementation has some way to go yet.
Tene Will p6opaque not support that at all, or will it just be pessimized?
sorear A lot of language will be able to use a "P6dynamic" repr, Tene
jnthn Tene: It's certainly sub-optimal 01:36
Tene: Are attributes very dynamic?
Tene: And are they "flat"?
Tene "flat"?
sorear Tene: P6opaque needs to support $obj does anon role { has $.foo }
jnthn What is the relationship between an attribute foo in a parent class and an attribute foo in a subclass?
01:37 porter235 joined
jnthn Can that even happen? 01:37
Tene jnthn: none whatsoever; attributes are entirely per-object.
so, yes, flat
sorear Tene: er
jnthn is confused :)
masak it seems that almost no Fiver takes to the sequence operator infix:<...> immediately. I wonder why that is.
flatwhatson needs to change his higlighting rules D:
jnthn Tene: Per object or per class? 01:38
Tene jnthn: the only relationship between classes and attributes is what attributes an objects classes happen to set. Anyone can take any object and shove extra attributes into it at any time, basically.
sorear Tene: class A { has $!x; method foo { $!x++ } }; class B is A { has $!x; method bar { $!x++ } }; my $c = B.net; say $c.foo; say $c.bar
Tene in ruby, that would say 0\n1\n 01:39
sorear Tene: in the Perl 6 spec and 6model, that prints "0\n0\n". In Rakudo and Niecza, that would say 0\n1\n
OK
jnthn OK, so that $!x is the "same thing"? 01:40
Tene Yes.
jnthn So essentially, an object's attributes could just be considered like a hash table?
Tene Yes.
jnthn Ah
Tene That's exactly what ruby does, in fact.
jnthn That's a very easy REPR to write then :)
Tene: I'm happy to write it, if you'd prefer that. 01:41
Can do it tomorrow.
Tene jnthn: That would be convenient for me. 01:42
jnthn OK. 01:43
hackathon++ :)
Tene Now, I certainly could analyze classes and produce a list of attributes they happen to mention, to optimize for common cases. 01:44
So, if there's going to be a repr that can have optimized storage for some attributes, but still support arbitrary other attributes, that would be better. 01:45
01:46 woosley joined
Tene I'd certainly like to provide type-constrained attribute declarations if people opt-in to using cardinal-specific features. 01:46
jnthn *nod*
Tene: I suggest let's make it work first, then do opts. :) 01:47
Tene: But it'd be fun to do a bunch of those too :)
Tene I *could* just limit it to support for attributes used in class methods for now, but a flat hash-based repr would be better for now, and certainly might be useful for others in the future too. 01:49
01:51 porter235 left 01:55 Guest87704 left
Tene Yeah, I get NYFI 1 if I try to use attributes not named $!foo 01:55
02:00 Guest87704 joined 02:01 noganex_ joined
Tene Oh, no, nevermind. It works fine; I just didn't change it in one place. 02:02
02:04 noganex left
takadonet1 pyrimidine: ping 02:06
02:08 am0c joined 02:19 whiteknight left 02:27 lopnor is now known as lopaway
takadonet1 rakudo: role me{ subset Test of Int where { $_ == any(-1,0,1) }; has Test $.beer }; my $x= me.new( beer=>33); 02:31
p6eval rakudo bd134e: ( no output )
masak takadonet1: attribute type checking is not switched on. 02:32
takadonet1 masak: what do you mean 'not switched on'? 02:33
masak I mean you can type your attributes all you won't, but it's not checked at either compile- or runtime.
s/won't/want/
takadonet1 how do i turn it on then? :) 02:34
masak good question :)
the answer contains the phrase "Rakudo source code".
takadonet1 nuts 02:35
masak and bolts.
takadonet1 and WD-40
masak :)
dalek p/slp: 2e788f6 | jonathan++ | src/ (7 files):
Move NQP into a HLL of its own. This is a pre-req for being able to HLL-map things for NQP's use, but will also go a long way to resolving NQP/NQP-rx symbol conflicts.
02:39
nqp/slp: eb5f068 | jonathan++ | src/NQP/ (2 files):
nqp/slp: Register NQP as just NQP, not NQP-rx.
02:39 dalek left 02:40 dalek joined, ChanServ sets mode: +v dalek
masak sorear: ping 02:48
Tene jnthn: I just got per-object singleton classes working. :)
dalek p: d3f4b23 | jonathan++ | / (15 files):
Merge branch 'master' into slp
02:49
p: a630c2b | jonathan++ | src/pmc/nqplexinfo.pmc:
Don't need to visit various a few things we'll only set up from the serialization context deserializer; clear up useless freeze/thaw that just called SUPER; add get_iter.
p: e08aaf1 | jonathan++ | src/pmc/nqplex (2 files):
Fix some marking issues.
p: 5ad5467 | jonathan++ | src/ (2 files):
Ensure we end up with runtime lexpads being NQPLexPad.
p: 35ee39a | jonathan++ | src/stage0/ (2 files):
Fiddle with the bootstrap code so things build with the new lexpad classes.
p: a694c40 | jonathan++ | src/NQP/Actions.pm:
Make sure lexpads are created of the correct type in compiled code.
p: dd13f30 | jonathan++ | src/pmc/nqplex (2 files):
Ensure that NQPLexPad can cope with a Parrot LexInfo as well as an NQPLexInfo.
p: bb9ccfe | jonathan++ | src/stage0/ (4 files):
Re-bootstrap with the static lexpad support.
jnthn Tene++
masak sorear: just wanted to say that niecza is working, and I can basically pick up markdown-p6 where I left off in early January. 02:50
and it's delightfully fast.
02:59 colomon_ joined 03:00 colomon left, colomon_ is now known as colomon 03:11 colomon_ joined, colomon left, colomon_ is now known as colomon 03:21 colomon left 03:22 takadonet1 left 03:23 colomon joined 03:24 rdesfo left 03:47 porter235 joined 03:51 porter235 left 03:54 hudnix left
dalek ecs: f5a9d2d | diakopter++ | S32-setting-library/Str.pod:
fix omission in grammar Str::SprintfFormat
03:56
masak --> to airport with tadzik++ 04:03
04:03 masak left 04:11 jasonmay_ is now known as jasonmay 04:13 ymasory left
sorear um, HOW old is yapsi? this looks like a PGE grammare. 04:17
anyways, Niecza's goal for March is to run Yapsi 04:21
04:25 drbean left 04:26 drbean joined, ribasushi_ is now known as ribasushi 04:28 colomon left 04:29 colomon joined 04:30 drbean left 04:32 drbean joined 04:36 satyavvd joined 04:37 drbean left 04:38 tyatpi_ joined 04:46 drbean joined 04:51 drbean left 04:53 drbean joined 04:57 drbean left 04:59 cjk101010 left, orafu left, drbean joined, orafu joined 05:04 drbean left, zac314159 joined, zac314159 left 05:05 drbean joined 05:08 fith left 05:10 fith joined 05:11 kaare_ joined 05:13 drbean left 05:14 drbean joined 05:19 drbean left 05:20 drbean joined
sorear yapsi: if 0 { 1-- } 05:21
p6eval yapsi: OUTPUT«===SORRY!===␤Unable to find module 'Yapsi' in the @*INC directories.␤(@*INC contains:␤ lib␤ /home/p6eval/.perl6/lib␤ /home/p6eval//p2/lib/parrot/3.1.0-devel/languages/perl6/lib␤ .)␤»
05:24 drbean left 05:27 drbean joined 05:31 orafu left, drbean left 05:32 orafu joined, drbean joined 05:36 drbean left 05:38 drbean joined 05:40 colomon left, colomon joined 05:43 drbean left
sorear phenny: tell masak I think there is a bug in line 814 of Yapsi.pm. 05:45
phenny sorear: I'll pass that on when masak is around.
05:48 porter235 joined 05:49 drbean joined 05:50 colomon left, colomon joined 05:52 porter235 left 05:58 satyavvd left 06:02 takesako joined 06:08 satyavvd joined 06:12 cjk101010 joined 06:19 eternaleye__ is now known as eternaleye_, eternaleye_ left, eternaleye_ joined 06:24 PerlJam joined, wolverian joined 06:38 GinoMan joined 06:50 __rnddim__ joined 06:51 __sri joined, barika_ joined, jaldhar left 06:52 og01 joined, mathw_ joined, betterworld joined, pmichaud_ joined, xinming joined, avuserow_ joined, szabgab_ joined, VX64Z joined, jaldhar joined 06:53 diakopte1 joined 06:54 Jim112 joined, eviltwin_b joined, c0tt0 joined, domidumont joined 06:55 Guest87704 left, flatwhatson left, cottoo left, domidumont1 left, xinming_ left, _sri left, avuserow left, Helios` left, lue left, flatwhatson joined, eviltwin_b is now known as allbery_b, Helios` joined 07:04 wtw joined, wtw left, wtw joined 07:06 noganex_ is now known as noganex 07:08 niooins joined 07:16 justatheory left 07:17 daxim joined 07:20 jql joined 07:43 lopaway is now known as lopnor
sorear out 07:45
07:45 _twitch joined 07:46 colomon left, colomon joined 07:48 porter235 joined 07:52 porter235 left 08:10 niooins left 08:11 nymacro joined 08:32 GinoMan left 08:36 colomon left, colomon_ joined 08:39 shi joined 08:45 silug_ joined 08:46 Axius joined 08:56 mathw_ is now known as mathw 09:02 lopnor is now known as lopaway 09:12 Mowah joined 09:16 Mowah left 09:22 tzhs joined 09:34 Axius left, Jim112 left 09:44 dakkar joined 09:48 porter235 joined 09:53 porter235 left 10:00 Layla_91 joined
Layla_91 yaw people! B) 10:00
daxim hello 10:01
Layla_91 daxim: nobody home I guess =) 10:02
moritz_ \o
Layla_91 moritz_: since you are the sysadmin ;) a quick question: Someone keeps telling me that we can do url re-writing via DNS.. I always thought that this is a thing done via apache or ngnix or what ever webserver you use.. can we really do a url rewrite via DNS?
daxim that someone is confused 10:03
Layla_91 daxim: the problem is that he is 10 years older than me and I can not argue with him :\ 10:04
daxim: I wish I was older :\
BinGOs DNS can only affect the host part of a url. ie. myhost.com resolves to IP address 10.20.30.40 10:05
daxim you can. go up to him and say: dns is about hostnames. it does not care about the HTTProtocol.
BinGOs you can perhaps ( if you control the DNS servers that people are using for resolution ) redirect all host lookups somewhere else, so www.google.com goes to www.yahoo.com 10:07
10:07 woosley left
moritz_ Layla_91: just tell him "yes, it's possible, but it requires a proprietary business server solution that costs at least half a million USD per year" :-) 10:07
BinGOs "The Internet says you are talking shit" should be statement enough. 10:08
Layla_91 moritz_: looool :D 10:10
moritz_: I started learning git by the way :$ It is not so friendly.. but I am learning it for the sake of becoming a part of perl6 =) 10:11
moritz_ yay 10:13
Layla_91 BinGOs: then you will have to find me a new job :P and I am still a college student :D
moritz_ (btw I'm not really a sysadmin, I just sometimes act that way) 10:14
Layla_91 moritz_: well if you know how to setup a unix server, configure a simple clustered website then you are considered a sys admin ;) 10:15
moritz_ Layla_91: my websites are usually cluttered, not clustered :-)
BinGOs Age is not an arbiter of merit. 10:16
10:17 arnsholt joined
BinGOs *is* a sysadm 10:17
Layla_91 BinGOs: I started as a sysadmin but I think it is not nice for a girl :S
moritz_: you are a sysadmin too ;) like Mr.TimToady B-) 10:19
BinGOs gender shouldn't make a difference. merit is merit.
10:20 renormalist joined
Layla_91 BinGOs: anyway I switched to programming after few months of experience as a sysadmin.. so I have some experience.. which is not bad :) 10:22
10:23 lopaway is now known as lopnor
BinGOs ah okay >:) 10:24
Layla_91 BinGOs: By the way, I had a question before switching, I have setup few centos based HA clusters.. then wanted to migrate to freebsd, do they have HA cluster suite for freebsd? I could not find a complete suite.. only sepeate elements for checking heart beats, etc... 10:30
BinGOs Not something I have done with either linux or FreeBSD
Layla_91 BinGOs: ok, we are p6 people now =) 10:32
BinGOs I'm more of a perl5 person, I just lurk here. 10:33
Layla_91 BinGOs: I am currently a php person, and I knew little perl5 and perl6.. but I decided to learn them because of the community and the promissed zebra's guide =) 10:34
mux Layla_91: there are a lot of different software you could use for HA clusters, depending on the applications they run; take a look at CARP for FreeBSD if you want something like VRRP 10:35
BinGOs there is freevrrpd in FreeBSD ports 10:36
Layla_91 mux: I understand, but what I meant is that they are organized in centos/rhel in a clustering group, in freebsd it makes you feel that you are hacking the system to become a cluster.. you look for separate packages and hack a way to make the failover of services happen.. or that is what I felt.. 10:37
10:38 donri joined
mux oh, I think I see; you're looking for something that is like already integrated etc 10:39
I don't know of any software like this for FreeBSD
Layla_91 mmm.. lunch break is coming.. thinking of something bad for health :P Burger King! :| bye all! =) 10:40
mux BinGOs: under FreeBSD, you're much better off using CARP 10:41
10:43 Layla_91 left 10:59 colomon_ left 11:01 lopnor is now known as lopaway
tadzik o/ 11:03
moritz_ \o tadzik 11:04
tadzik: seems you wanted to ask me something around midnight... what can I do you for? 11:05
11:05 Maddingu1 is now known as Maddingue
tadzik I... don't think I remember :) 11:05
I'll see if I can figure this out from the context
moritz_ no worries
tadzik nah, I don't remember what was that :) Probably not important then 11:06
11:06 colomon joined
tadzik now where did HollandHackathon guys go? 11:06
11:16 agentzh joined, colomon left 11:17 colomon joined 11:19 satyavvd left, satyavvd joined 11:23 satyavvd left 11:24 mberends joined
moritz_ outer-inside.blogspot.com/2011/03/p...-6_06.html # woah, somebody translating my 5-to-6 articles to Japanese! 11:26
mberends \o/
phenny mberends: 06 Mar 12:59Z <masak> tell mberends lwn.net/Articles/328438/
moritz_ \o mberends 11:27
mberends :-D hackathons are fun 11:28
moritz_ is this one already over?
mberends no! we hacked through to about 4am, had a hour of snooze and then drove tadzik to the airport. jnthn and masak are now still sleeping, we three shall carry on hacking until tomorrow evening 11:30
11:30 ingyfoo is now known as ingy 11:35 satyavvd joined 11:37 colomon_ joined, colomon left, colomon_ is now known as colomon 11:41 pmurias joined 11:49 porter235 joined 11:53 porter235 left 11:56 satyavvd left, awoodland joined
[Coke] Oh, look, snopocolypse 2001.345 11:59
2011, even!
12:02 colomon_ joined, colomon left, colomon_ is now known as colomon 12:08 am0c left 12:25 agentzh left 12:35 fisted_ left 12:36 pmurias left
dalek ecza: d426c3d | pmurias++ | cl-backend/backend.lisp:
[cl-backend] rename preinit to *preinit*
12:39
12:39 nymacro left 12:49 masonkramer joined 12:52 awoodland left 12:53 awwaiid joined 12:59 rdesfo joined 13:04 masak joined
masak good day, zebras 13:04
phenny masak: 05:45Z <sorear> tell masak I think there is a bug in line 814 of Yapsi.pm.
masak sorear: will look at it. I don't see what/why yet, but it would explain a problem I had with recursion.
13:05 masonkramer left 13:07 coldhead left
takadonet morning all 13:10
13:10 colomon left 13:11 colomon joined 13:13 Patterner left, kaare_ left 13:15 meraxes joined 13:18 rdesfo left 13:22 fisted joined
masak takadonet: \o 13:26
jnthn ohhai 13:27
moritz_ loljnthnisawake! 13:30
masak: how are those p5 timings coming along? 13:31
13:31 mtk joined
masak moritz_: they are coming along. 13:31
staying awake all night, that was basically the mindless task I set myself to.
moritz_ masak: when you started the contest, did you expect the review to take so much time/work? 13:32
masak no, I didn't.
I expected to read through things once and be done with it. 13:33
basically announcing the winner after the close of the contest.
13:33 tyatpi_ left
masak on the bright side, I think I have a grasp on p5 now. the statistics actually helped. 13:33
moritz_ hasn't actually benchmarked his own submission 13:34
it might be doing things in O(bad**n), and I wouldn't have noticed :/
masak the timings I made are here: gist.github.com/853570 13:35
I'm not going to collect more statistics than that. it takes so much time.
moritz_ wow, matthias' solution seems to be quite impressive 13:36
does it get the correct results?
masak yes.
jnthn 320 - segmentation fault 13:38
Wow!
We win a stress test. :)
masak it's awful how much memory these solutions gobble up. 13:39
it's not *that* complex a problem.
13:39 hudnix joined
moritz_ masak: time your own solution :-) 13:39
masak heh :)
jnthn masak: It's as likely a Rakudo issue as anything. 13:40
masak yes, I'm aware of that.
I'm not blaming the contestants -- their solutions are fine, from a memory perspective.
I'm blaming Rakudo/Parrot.
I thought about timing a Perl 5 solution, and observing its memory consumption.
13:47 awoodland joined 13:49 porter235 joined
masak but yeah, it's a bit unfair. 13:52
in a sense, everyone failed p5, because running the code on long strings is crap no matter whose solution you choose. 13:53
but on the other hand, the contestants did what they could on top of Rakudo.
moritz_ huh?
13:53 porter235 left
masak moritz_: oh. with the possible exception of matthias. 13:54
moritz_ if the solution works as long as you're not hitting a platform limit, you've solved the problem, no?
masak oh, sure.
moritz_ the question is when it's OK to hit a platform limit
masak but look at the problem specification.
it's going "long strings, long strings, long strings".
moritz_ so, what's a "long string"?
more than a line of 80 columns? 13:55
10GB of genome data?
masak yes.
more like 10B
more like 10GB than 80B.
and that's... impossible in Rakudo today.
I don't even need to try it to know that.
so maybe the problem as stated was unsolvable. 13:56
colomon so.... to win p5 we needed to massively optimize Rakudo?
masak OTOH, the solutions are quite nice for shorter strings.
moritz_ he, I should have used nqp :-)
masak :P
colomon: from my perspective, just looking at the statistics, it's clear who "won" p5. 13:57
I think you'll agree.
moritz_ agrees
colomon but you're not going to tell us yet?
masak colomon: look at the statistics :)
gist.github.com/853570
colomon (are the statistics posted? I've been offline)
moritz_ masak: at least if you set performance as the primary evaluation factor 13:58
masak right.
colomon !!!!!!!!
masak I value performance quite high, but it's not the only factor, of course.
moritz_ so, what did matthias do right? different algorithm?
masak you'll love it.
I'm not going to spoil it.
moritz_ or "just" implemented it more correctly? regexes?
takadonet !!!
masak but the truth is so blatantly unfair that you'll probably facepalm seeing it. :) 13:59
moritz_ lemme guess... there's a PIR dynop for LCS
masak actually, I didn't expect this at all to happen in the p5 task.
moritz_ and he loads that
masak nope.
but interesting guess.
moritz_ or a binding to a C library/API call
masak nothing like that. it's pure Perl 6.
matthias did hack Rakudo before submitting his solution, though. 14:00
if you recall.
his was the only solution that I couldn't compile when getting it.
moritz_ doesn't recall
masak because it required such a new Rakudo.
I'll stop spilling clues. read the post, later today :P 14:01
14:01 cjk101010 left
colomon afk but !!!!!!!!!!!!!!! 14:01
14:02 am0c joined 14:08 frodwith left, _twitch left
tadzik masak: is Rakudo NP-complete alredy? 14:09
masak tadzik: no, but jnthn and I will have a look at it later today. 14:10
moritz_ tadzik: it's even Touring complete, if you neglect memory limitations
masak does "Touring complete" means "big and unwieldy like a touring bus"? :P 14:11
moritz_ s/o// :-)
but yes, that's about it
if you consider that most programming languages only allow memory usage by a fix width integer address, they are all DFAs, technically 14:12
jnthn oh gah
looks like we don't differentiate sink and eager context in Rakudo.
masak o.O
this... explains a lot...
jnthn for @massive_thing { }; 1; # the for keeps all it's f**king results 14:13
masak weeps
jnthn Only to throw that huge list away
No wonder people find large iterations slow!
masak RakuD'OH
donri This is good right, means there's room for optimisations?
masak *lol*
jnthn Well, more room to not be stupid at least...
moritz_ pmichaud_++ has been wanting to implement sink context detection at codegen level for ages 14:14
takadonet well lately I noticed a big difference in speed already . Cannot wait for more optimisations!
14:15 mberends left
jnthn I hadn't realized we didn't even do it *there*. 14:15
moritz_ jnthn: I think it's done, but not exposed to anything that the compiler writer could use 14:16
TimToady "Sink me!" --The Scarlet Pimpernel 14:17
masak sounds like a quote out of Masochistic Battleship. 14:18
or perhaps Misere Battleship :P
mathw Hmm, well at least it's something to improve 14:19
jnthn BTW, the special case of .comb that takes no arguments can probably be made a bunch faster.
(e.g. the one that just returns the chars) 14:20
masak \o/
moritz_ using pir::substr?
jnthn That could work, yeah
At the moment we match /./ loads of times
moritz_ oh f*ck
jnthn Like, once for every char in the string. :)
moritz_ maybe I can make my p5 submission faster retroactively by fixing up rakudo :-) 14:21
masak hehe :)
moritz_ masak: does that count? :-)
masak moritz_: yes and no.
jnthn The patch will make me happy :)
If that counts ;) 14:22
masak moritz_: you won't get credit for the Rakudo work. but your solution will fare better.
moritz_: it still probably won't beat mattias's, though.
moritz_ likely.
14:23 mberends joined
tadzik oh hi! 14:23
masak tadzik! \o/
jnthn o/
mberends hi tadzik
masak tadzik: flight back go fine? 14:24
jnthn tadzik: Hope your journey back was fine :)
tadzik yeah, it was not bad. I get a feeling that the pilot was playing around a bit just before the landing :)
How's the hackathon?
jnthn We slept and now we're awake and hacking
masak it's like yesterday, only one day later.
jnthn I got apple syrup everywhere
moritz_ sounds like win 14:25
(for limited values of "everywhere" :-)
(not on the keyboard, for example)
jnthn No, thankfully not there.
mberends tadzik: you left some unopened packages of nom here. we are confiscating them to compensate for the sleep deprivation caused by your early departure ;) 14:26
TimToady the BDFL rules this to be valid
mberends and he gets to keep the colon! 14:27
moritz_ where BDFL = BuDderFLy?
masak *lol*
TimToady moritz seems to be winging it... 14:28
mathw Oh dear
How bad these things look from the other side of an IRC window 14:29
tadzik mberends: the plums?
mathw But it does look like a lot more fun than work
mberends tadzik: aye, they look nomlicious
tadzik mberends: yeah, carry on, they're for you!
masak I think the "D" stands for "Dumbledore". TimToady and the Dumbledore of MoR share a bit of common behavior :P
mberends thx
14:30 wallberg joined
masak wallberg! \o/ 14:30
[Coke] marky mark? 14:31
14:31 kaare_ joined
moritz_ masak: you mean TimToady makes us carry around big rocks for no apparent reason? 14:31
masak moritz_: no, the part about the rocks in MoR mostly confuses me. 14:32
moritz_: it seemed to be making a point about theories that don't have rational basis.
like "we don't know if this works, but it couldn't hurt" being a bad argument for a theory. 14:33
moritz_ hm, maybe
or the very deep gut feeling that very experienced people sometime have, but can't really give reasons for them
masak Harry makes the point that there are very, very many theories of which that argument could be made, all of them equally untested.
right. Dumbledore is definitely running on very deep gut feeling. 14:34
moritz_ but also much deeper planning than he's willing to reveal 14:35
masak in Hex, what usually happens is that deep gut feeling partly replaces deep planning. 14:36
adhering to known-stable patterns seem to guarantee that you end up on a sane path.
essentially, encapsulating parts of the game-tree search into a better scoring function. 14:37
Dumbledore seems to be doing a bit of that, with his archetypes "hero", "wise old wizard", etc.
moritz_ which kinda confuses me, because the "original" dumbledor seems to avoid those terms 14:39
donri gut feeling is just intuition which is unconcious reasoning based on experience
masak no argument there.
14:40 dukeleto joined
donri (i know this because of a gut feeling) 14:40
masak moritz_: the original Dumbledore was definitely a deep planner, but he was a lot less of a comic relief :) 14:41
TimToady that seems...incomplete...
moritz_ masak: aye
TimToady I think gut feeling also includes some degree of creative imagination that cannot always be lumped under "reasoning", but perhaps you're using the term more generally than I generally do... 14:42
masak moritz_: making Dumbledore so frivolous is kinda funny though, because he's the pillar of seriousness and authority in the canon.
14:43 colomon left
donri what is 'MoR'? 14:43
masak the gut feeling/creative imagination is what I call "science" in strangelyconsistent.org/blog/im-doi...till-alive
moritz_ donri: "Methods of Rationality"
masak donri: oh, you're in for a treat!
moritz_ donri: www.fanfiction.net/s/5782108/1/Harr...ationality 14:44
moritz_ cackles evily
masak my brain kicks into "science mode" when code I run doesn't do what I expected.
masak hopes donri has a few days of spare time
moritz_ just don't read it if you haven't read Rowling's Harry Potter, and plan to 14:45
donri why what now
moritz_ it's full of spoilers of some sort
donri i mean the spare time :) 14:46
moritz_ donri: just in case you start reading
masak donri: it's long and very, very good.
donri i suck at reading :( 14:47
tried to read the metamorphosis the other day and managed a few paragraphs
masak the Kafka one? 14:48
moritz_ donri: they didn't resonate with me, and I finished quite early too
14:49 colomon joined
TimToady realizes that English allows not just - and ' in identifiers, but also * 14:53
masak oh f*ck... :P 14:54
frettled cr&p :) 14:55
masak sh!t
frettled But what does "cretp" mean?
masak sounds like a Lisp predicate to me.
TimToady it's a kind of French pancake
frettled Looks like it was written by someone overly fond of 'p'-suffixes for pointer variables.
14:56 fisted left
frettled blamep :D 14:56
masak "Have another crêtp, hot from the pan..."
mux it's a cr􏿽xEApe
masak mux: O RLY? :P
14:56 colomon left, colomon joined
mux GOD DAMNIT LEARN HOW TO SPEAK FRENCH PROPERLY /cheese_eating_surrender_monkey_nazi> 14:56
TimToady Sink me! 14:57
masak mux: <whoosh>
(sound of joke going over your head)
mux heh
calling it a kind of pancake is however a grave offense. 14:58
TimToady possibly intended :)
masak perhaps even a "greve" offense.
frettled It's a kind of Dutch pancake, isn't it? *g,d&r*
mux heheh
frettled masak: offence grave?
mux I give up.
dukeleto dreams of offenses dripping with gravy
mux goes back to doing nothing at work while eating snails and drinking red wine 14:59
frettled mux: don't forget your baguette and garlic!
moritz_ mux: aren't you missing white bread and garlic butter... oh, flussence is faster :-)
mux nods
frettled and where's your hat?
masak beret.
14:59 fisted joined
TimToady I'm allergic to the baguette, but the rest sounds okay 14:59
masak I think a striped shirt is called for, as well.
frettled Yes, quite possibly.
moritz_ TimToady: even to spelt based baguette? 15:00
frettled and the tricolored badge
mux I'm not fond of snails, but we do have wonderful food and alcohols here
frettled mux: *sigh*, yes :)
TimToady moritz_: I've had trouble with spelt too
too closely related, I guess
moritz_ mux: and in contrast to many Germans you *appreciate* food
frettled TimToady: even if it's spelt right? ;)
mux I'm kinda taken aback everytime I leave France and I try to buy some decent red wine. 1) There is none; 2) It's horribly expensive 15:01
15:01 awoodland left
moritz_ TimToady: does rye work better? or still too close? 15:01
mux moritz_: oh yeah!
TimToady most rye bread is made out of wheat, at least in these parts
but pure rye is fine
frettled mux: I'm happy almost every time I leave Norway and buy decent wine in restaurant, it's always cheap. :D
15:01 plainhao joined
frettled TimToady: I guess you need to look for German immigrant shops. IIRC, German rye bread does not have other kinds of grain. 15:02
TimToady mux: perhaps you should leave France for California some time :)
masak I'm trying to cut down on wheat simply for health reasons, but it's hard because wheat is everywhere.
frettled hoho :D
moritz_ mux: I just appreciate meeting with friends for a decent (often self-made) dinner, and dining and talking for hours. Here people often just throw stuff on the table, and expect you to finish in 20 minutes
mux frettled: I remember that red wine bottle we bought with friends at London for about 45 euros; the very same bottle was worth ~10 euros in France, and it wasn't even great wine.
moritz_ ok, sometimes I do too
mux TimToady: yeah, it's true there are good wines there
TimToady mux: though that might not remain true with global warming... :/ 15:03
frettled mux: that's quite a nasty increase in price, yes.
There's plenty of good wine from South Africa, too.
…and I must admit that I'm rather fond of some Italian wines as well. 15:04
mux I'm really picky about wine, so you know :-P
frettled good!
mux otherwise it'd be no fun being french
frettled passes mux a virtual bottle of Chateau de Pommard 2006 (goes well with canard à l'orange) 15:05
mux heh, Pommard is okay
but I prefer Bordeaux wines 15:06
donri read the first chapter
15:07 shi left
frettled passes mux a virtual bottle of Chateau Tour St. Pierre 1998 instead. 15:07
15:12 am0c left
donri has the same sleep disorder as harry in this fanfiction 15:14
melatonin works wonders for it though, no magic there 15:15
masak donri: tell me more.
donri .wik non-24 15:16
phenny "Non-24-hour sleep-wake syndrome (Non-24) is a chronic circadian rhythm sleep disorder, classified within Chapter VI, Diseases of the Nervous System, in the ICD-10." - en.wikipedia.org/wiki/Non-24
masak ooh
15:17 benabik joined 15:18 wtw left
donri you're right this fanfiction is awesome 15:20
at least with chrome.google.com/webstore/detail/...mnklbhadhc :D 15:21
15:21 Psyche^ joined, Psyche^ is now known as Patterner
masak ooh 15:22
15:23 tyatpi_ joined
masak we have an LHF here on the hackathon. someone want it right away, or do I submit it to RT? 15:24
dukeleto which hackathon?
dukeleto has been under a rock
daxim netherlands? 15:25
masak aye.
post-NLPW.
daxim masak == everywhere
you're becoming a second jnthn
masak mberends, jnthn, tadzik (up until yesterday), and me.
jnthn He's got some catching up to do on the punning though :P 15:27
masak decidedly.
I'm kilopuns behind.
donri "That is the most Ravenclaw thing I have ever heard." <3 15:28
masak right. the Houses are much more pronounced in MoR than in canon, IMO.
15:30 Holy_Cow joined
masak LHF for anyone who's interested: rt.perl.org/rt3/Ticket/Display.html?id=85602 15:31
sorear good * #perl6 15:32
15:36 mberends left
diakopte1 e 15:37
15:38 masak left 15:39 benabik left 15:41 benabik joined 15:44 hercynium joined 15:50 porter235 joined 15:52 diakopte1 is now known as diakopter 15:54 porter235 left 15:56 Rotwang joined
sorear TimToady: Does 'my class A::B { }' mean anything? 16:03
16:03 justatheory joined
TimToady I would take it to mean that A is a lexically scoped package that contains B 16:06
diakopter std: my class A { }; my class A::B { }; class ::A { } 16:08
p6eval std 4608239: OUTPUT«ok 00:01 118m␤»
TimToady as for tailored graphemes, I would be inclined to process them under the NFG mechanism, but the NFG conversion is diverted by the subtype of the string to a different grapheme recognizer (/me waves hands here) 16:09
shower & 16:10
16:17 Patterner left 16:18 Psyche^ joined, Psyche^ is now known as Patterner 16:25 Holy_Cow left, colomon left 16:28 tyatpi_ left, risou joined 16:30 masak joined 16:32 mberends joined 16:40 tzhs left 16:42 jaldhar left 16:43 jaldhar joined 16:44 M_o_C joined 16:48 gfldex joined, dakkar left
sorear TimToady: How authoritative do you consider STD's add_name, is_known et al to be for defining name handling? 16:54
masak: hi. Niecza has a goal for March.
masak I saw.
\o/ 16:55
Yapsi has been getting past a bit of a bottleneck with the functions, by the way. things are seriously low-hanging-fruity now.
TimToady sorear: the rough outline is more authoritative than the details 17:03
the details could certainly use a heavy refactor or two or three, but the locations of particular actions ("at CHECK time") are more or less correct 17:04
17:05 avuserow_ is now known as avuserow
TimToady and I think the subpackage processing is ~90% correct 17:05
give or take 50% :)
PerlJam Just the first 90% is correct ;) 17:06
sorear TimToady: I'd be interested to hear more about what refactors you want.
TimToady correct as in hangs it on the right parent, not as is doesn't need a refactor
sorear (canonicalize_name gives me the chills)
17:06 _buno_ joined, M_o_C left 17:07 _buno_ left
TimToady it probably needs to be refactored by a different set of eyes than mine, given my eyes factored it in the first place 17:07
17:07 _buno_ joined
TimToady there's a reason they told me at the beginning of p6 that I wasn't supposed to do the implementation 17:07
sorear I'll take that as an invitation then 17:08
there are a few odd corner cases with STD as is
should I try to saneize them myself, or replicate existing behavior? 17:09
TimToady well, a little of both :) 17:10
17:10 rdesfo joined
sorear stuff like "my class GLOBAL::Foo" isn't well tested 17:10
and what STD currently does is...odd
TimToady I suspect it would currently produce a subpackage named GLOBAL, but that's probably...untoward... 17:11
masak "untoward" looks a bit like an anagram of "do not want" :P 17:12
17:12 dorlamm joined
TimToady we can certainly carp about reserved top-level names being misused under 'my' and such 17:12
daxim What is "Backstroke of the West", Mälex?
sorear The precise semantics of packages aren't well documented outside heads. I'm wondering how well they are in yours 17:13
TimToady um, we're both in the U.S., so I can plead the 5th :)
masak :P
TimToady the semantics are perfectly clear--they should do what I want, if and when I ever figure out what that is... 17:14
where the first "I" is more of generic "Everyone" 17:15
sorear puts on his royal we
17:18 rgrau left
sorear TimToady: I'm also wondering if it makes sense to have STD loosely coupled to a "symbol tables" component 17:19
17:19 pmurias joined
pmurias sorear: hi 17:19
sorear right now with niecza there's the STD builtin symbol table, and the Niecza symbol table, and things get confusing when they differ 17:20
pmurias sorear: i'm having trouble mapping niecza's lexical model to the lisp one
can a sub be created from outside the sub it's outer pointer points to? 17:21
besides the YOU_ARE_HERE setting case?
sorear that, and static lexpads, are the only cases I know of 17:22
masak so basically, a sub that's injected into another outer scope?
pmurias when a sub doesn't have RUN_ONCE set every time we look it up we get a clone copy? 17:23
sorear: what are static lexpads?
sorear niecza: sub foo() { sub bar() { say "Hello, world" }; INIT { bar } } 17:24
p6eval niecza v3-49-gd426c3d: OUTPUT«Hello, world␤»
sorear foo() was never called, but a frame for foo has to exist in order for bar to have an outer
that invented frame is the static lexpad
StaticSub.protopad in the CLR emitter 17:25
masak right. same thing with loop blocks that were never iterated.
pmurias what does setting a variable there do?
sorear loop blocks that are never iterated ARE subs that are never called. S04:86 # perl6++ 17:26
pmurias: nothing very useful. (In the current implementation, the static lexpad has its own set of variables, unshared with anything) 17:27
pmurias is there anything in the spec which mentions that case?
17:28 risou_ joined
sorear I think there is some stuff but it's very handwavey 17:28
pmurias shouldn't that set the default value?
like i vaguely remember BEGIN did in kp6? 17:29
TimToady --> dentist & # back in an hour or so
sorear That's what I used to think, but it turned out to be 1. not very useful 2. a MAJOR pain to implement
pmurias sorear: does accessing simple vars defined in the setting work? 17:30
17:30 risou left
sorear Yes 17:30
RUN_ONCE subs like the setting's mainline do not have a distinct static pad 17:31
niecza: my $x; say $x; INIT $x = 42;
p6eval niecza v3-49-gd426c3d: OUTPUT«42␤»
sorear That works because there is really only one $x
It's not like $x is being set as a default and then copied 17:32
niecza: sub foo() { my $x; say $x; INIT $x = 42; }; foo # in particular, this doesn't work
p6eval niecza v3-49-gd426c3d: OUTPUT«Any()␤»
pmurias i understand how that works, but that seems very crazy
masak same here.
I'd want that to work, I think. 17:33
but maybe I don't understand INIT.
jnthn I think it should work, though Rakudo currently gets it rong.
17:34 noganex_ joined 17:35 noganex left
pmurias sorear: if i have sub foo {my $counter=0;sub {say ++$counter}} 17:35
when in NAM terms is the inner sub cloned? 17:36
sorear pmurias: at the beginning of foo, before nam ops are run, all variables are initialized 17:38
17:38 risou joined
sorear anon_0 is a 'sub' var, so to initialize it, it gets a cloned sub 17:38
masak how does a sub look in Niecza? what does it have apart from a signature and a block? 17:39
dalek psi: 4264822 | masak++ | lib/Yapsi.pm:
[Yapsi] fix binding var detection

In generating the SIC for a binding statement, detecting whether the rhs was a variable used to be tricky business. With FUTURE it's dead simple. This accidentally makes nested subroutine declarations work.
sorear masak: a Hash of lexicals, a name, an outer pointer, a bunch of ad-hoc flags 17:41
17:41 risou_ left
sorear for generous values of "flags" 17:41
for instance, there's $!augment_hack 17:42
when you have augment class Foo { ... }, the augment block is a sub; $!augment_hack holds a list of the new methods to be added, and the class to add them to
masak sorear: oh, so a sub is its own lexpad, in some sense? 17:43
17:43 _buno_ left
sorear masak: more of a ... template 17:43
masak ok.
tadzik masak: what was that Czajkowski you played after Overture 1812?
masak tadzik: I think it was Dvorak's 9th. 17:44
sorear masak: StaticSub.lexicals holds names and type information
masak tadzik: "New World"
17:44 silug_ left
masak sorear: is there a distinction between blocks and subs? 17:44
tadzik oh, alright 17:45
pmurias sorear: do we need all that flags?
sorear masak: the only distinction between {...} and sub {...} in niecza right now is the "handles &return" bit 17:46
masak I'm considering having a 'relinquish' opcode in SIC, that ends a normal program, but keeps the runtime context around for the REPL, allowing a new block to be injected in the lexical scope of the last line.
sorear: that makes sense. am asking because I'm about to implement just that.
pmurias bjj& 17:47
masak so a sub is a block with a "handles &return" bit?
17:47 pmurias left
sorear yes 17:47
eventually, I need to also have class="Sub" 17:48
rakudo: say ({1}).WHAT; say (sub {1}).WHAT
p6eval rakudo bd134e: OUTPUT«Block()␤Sub()␤»
sorear this is specced behavior
niecza: say ({1}).WHAT; say (sub {1}).WHAT
p6eval niecza v3-49-gd426c3d: OUTPUT«Sub()␤Sub()␤» 17:49
masak but mostly for type reasons, right? the current model seems quite adequate apart from that.
sorear this is not :/
yes
right now niecza has only two code-object classes
Sub and Regex
they have very different implementations of ACCEPTS
17:50 porter235 joined
sorear std: package A {}; { my package A::B { sub foo {} } }; A::B::foo; 17:52
p6eval std 4608239: OUTPUT«===SORRY!===␤Undeclared name:␤ 'A::B::foo' used at line 1␤Check failed␤FAILED 00:01 119m␤» 17:53
sorear std: package A {}; { package A::B { sub foo {} } }; A::B::foo;
p6eval std 4608239: OUTPUT«===SORRY!===␤Undeclared name:␤ 'A::B::foo' used at line 1␤Check failed␤FAILED 00:01 118m␤»
sorear wtf
masak o.O
17:53 benabik left
sorear I was trying to prove that STD's package model was SUBTLY broken 17:54
17:54 cdarroch joined, cdarroch left, cdarroch joined, porter235 left
sorear oh, I see. 17:54
std: package A { sub foo {} }; { A::foo } 17:55
p6eval std 4608239: OUTPUT«===SORRY!===␤Undeclared name:␤ 'A::foo' used at line 1␤Check failed␤FAILED 00:01 118m␤»
sorear std: package A { sub foo {} }; A::foo 17:56
p6eval std 4608239: OUTPUT«===SORRY!===␤Undeclared name:␤ 'A::foo' used at line 1␤Check failed␤FAILED 00:01 118m␤»
sorear ... or not.
OH
jnthn our sub foo :)
sorear std: package A {}; { my package A::B { our sub foo {} } }; A::B::foo;
p6eval std 4608239: OUTPUT«===SORRY!===␤Undeclared name:␤ 'A::B::foo' used at line 1␤Check failed␤FAILED 00:01 119m␤»
sorear std: package A {}; { package A::B { our sub foo {} } }; A::B::foo;
p6eval std 4608239: OUTPUT«ok 00:01 119m␤»
masak that's fine.
package is 'our' by default. 17:57
sorear std: package A { sub foo {} }; { A::foo }
p6eval std 4608239: OUTPUT«===SORRY!===␤Undeclared name:␤ 'A::foo' used at line 1␤Check failed␤FAILED 00:01 118m␤»
sorear std: package A { our sub foo {} }; { A::foo }
p6eval std 4608239: OUTPUT«ok 00:01 119m␤»
sorear std: package A { our sub foo {} }; { my package A::B { }; A::foo }
p6eval std 4608239: OUTPUT«ok 00:01 119m␤»
17:57 c9s joined, c9s left 17:58 dorlamm left
sorear I don't get how that one works. 17:58
masak the last one?
sorear yes
masak seems to just be a variant on the second-last one.
what do you consider odd about it? 17:59
sorear masak: STD.pm6 interprets my package A::B {} as my package A {...}; package A::B {}
the interpretation should be shadowing A
masak evidence seems to go against the claim that it interprets it that way. are you sure? 18:00
sorear yes, I'm looking at the source
masak I'm looking at the output :P
it seems to be doing the right thing, as opposed to what you said. 18:01
18:02 justatheory left 18:05 jaldhar left
sorear well I need to know _how_ it works 18:05
in order to support things like "Yapsi::Runtime"
18:06 jaldhar joined
sorear std: package A { our sub foo {} }; { my package A::B { }; BEGIN { A::foo } } 18:08
p6eval std 4608239: OUTPUT«===SORRY!===␤Undeclared name:␤ 'A::foo' used at line 1␤Check failed␤FAILED 00:01 120m␤»
moritz_ std: package A { our sub foo {} }; { my package A::B { }; A::foo
p6eval std 4608239: OUTPUT«===SORRY!===␤Unable to parse block at /tmp/xbFvCkyHXg line 1:␤------> package A { our sub foo {} }; ⏏{ my package A::B { }; A::foo␤Couldn't find final '}'; gave up at /tmp/xbFvCkyHXg line 1 (EOF):␤------> foo {} }; { my package A::B {
..}; A…
moritz_ std: package A { our sub foo {} }; { my package A::B { } }; A::foo 18:09
p6eval std 4608239: OUTPUT«ok 00:01 119m␤»
sorear My earlier version worked entirely by accident - A::foo is allowed to be postdeclared, y'see, so the check was deferred until the end of the program, at which point the inner block was closed and the top-level A:: was visible again
Adding BEGIN makes the check immediate
masak nod. 18:10
18:14 justatheory joined 18:15 ruoso joined
rdesfo is try.rakudo.org/ is being maintained? 18:17
moritz_ rdesfo: ocasionally 18:18
rdesfo moritz_: chapter (3 .. 14) don't work 18:19
moritz_ rdesfo: I've seen the github issue, thanks
rdesfo moritz_:ok, thanks 18:20
18:20 ruoso left, ruoso joined 18:22 plobsing left
dalek Heuristic branch merge: pushed 42 commits to nqp/ctmo by jnthn 18:23
sorear masak: I don't beleive that my class A::B {} fundamentally makes sense.
masak sorear: please go on.
moritz_ neither
'my' means "lexical" 18:24
PerlJam sorear: I agree too
moritz_ and "A::B" means "store stuff in the A:: namespace
sorear moritz_ is explaining it better than the stuff in my minibuffer
masak :) 18:25
well, it could mean "store the B package in the A:: namespace, such that it can't be seen from the outside", no? 18:26
PerlJam masak: I don't understand that.
masak I mean, that would still be an action. not a sensible action, perhaps, but it's logically possible to do.
PerlJam It could mean "make a lexical B and a dynamic B that lives in the A:: namespace"
masak oh wait. yes, I see it now.
A:: is an 'our' namespace, so to speak. 18:27
so saying 'my' is at odds with that.
PerlJam right
masak I'm in phase now.
PerlJam And if it meant what I just said, that's confusing.
masak what's a "dynamic B"? 18:28
PerlJam masak: sorry, that's more perl-5-speak than anything. A B that lives in a package. "our B" 18:29
masak ah, p5:dynamic means 'our'. :)
to me, 'dynamic' means something very much like 'contextual'.
store & 18:30
PerlJam This is one of those areas where we can afford to be conservative and disallow the combination "my" + "::" initially, until we figure out something sane for it to mean (or just decide that it's always insane) 18:32
IMHO anyway
18:32 risou left
sorear ok. y'all have convinced me. 18:37
18:39 alester joined, shi joined 18:44 ymasory joined
PerlJam sorear: of what have we convinced you? :) 18:45
sorear PerlJam: "we can afford to be conservative" 18:47
PerlJam sorear: are you going to patch STD ?
18:47 Su-Shee joined
Su-Shee good evening all. 18:47
PerlJam Su-Shee: no UML here! 18:48
sorear PerlJam: not now.
PerlJam :-)
Su-Shee PerlJam: I've just realized that I've forgotten to join ;)
18:57 plobsing joined
masak Su-Shee: gd'evening! 19:00
jnthn o/ Su-Shee 19:02
sorear hello Su-Shee 19:03
19:07 GinoMan joined 19:08 silug joined
masak ah, Tchaikovsky, old friend. you write very pleasant hacking music. 19:12
dalek ecza: 8f6f087 | sorear++ | / (3 files):
Allow class declarations with :: in the name
19:13
sorear whee.
masak sorear++ 19:14
19:15 spq joined, bacek joined 19:21 fhelmberger left 19:25 fhelmberger joined, fhelmberger left
tadzik o/ 19:27
masak \o
19:27 plobsing left
sorear /o 19:27
dalek p/ctmo: 1516bd2 | jonathan++ | / (2 files):
Add a Serialization Context PMC. Just bare bones for now.
19:28
p/ctmo: 89c34b4 | jonathan++ | src/ (6 files):
Bring the work on compile time meta-object support so far in line with my latest thinking on how stuff will work. Quite a few little changes.
p/ctmo: 10e90bd | jonathan++ | src/ (2 files):
Put in place code to do fixup or deserialization. No actions to actually do yet, but that's the infrastructure. Back out setting up the meta-objects in the deserialization just yet - not quite ready for it.
moritz_ masak: I've tried an optimized version for .comb 19:30
8.10s for my benchmark, instead of 8.26
masak huh. 19:31
jnthn :S
That's...just plain odd.
masak maybe just reject the RT ticket, then?
moritz_ maybe my multi wasn't called
masak or investigate more?
moritz_ tries something elese
jnthn Yeah, check it was called...
Or maybe gather/take is horribly costly or something... 19:32
masak wouldn't surprise me.
19:32 isBEKaml joined
sorear niecza: my $s = "a"; $s ~= $s for ^20; say $s.chars; say $s.comb.elems; 19:33
moritz_ I've done it with map
p6eval niecza v3-49-gd426c3d: OUTPUT«(timeout)»
sorear niecza: my $s = "a"; $s ~= $s for ^15; say $s.chars; say $s.comb.elems;
p6eval niecza v3-49-gd426c3d: OUTPUT«32768␤32768␤»
moritz_ and compared to a plain (1..$count).map: { $_ * $_ }
that took about 1.3s 19:34
masak odd.
sorear moritz_: Tene suggested getting rid of the p6eval linguistic sandbox and relying on SELinux stuff isntead
masak lots of string allocations, 'phaps?
sorear niecza: my $s = "a"; $s ~= $s for ^18; say $s.chars; say $s.comb.elems;
moritz_ hm.
$ time ./perl6 -e 'my $s = ("abcefg" x 400); for ^(6*400) { pir::substr($s, $_, 1) }'
p6eval niecza v3-49-gd426c3d: OUTPUT«262144␤262144␤»
moritz_ real 0m1.725s
so, should be doable in ~2s
sorear niecza: my $s = "a"; $s ~= $s for ^20; say $s.chars; say $s.comb.elems; 19:35
19:35 plobsing joined
p6eval niecza v3-49-gd426c3d: OUTPUT«(timeout)» 19:35
sorear niecza: my $s = "a"; $s ~= $s for ^19; say $s.chars; say $s.comb.elems;
p6eval niecza v3-49-gd426c3d: OUTPUT«(timeout)»
flussence rakudo: say [+] 1..19
p6eval rakudo bd134e: OUTPUT«190␤»
19:35 noganex_ left
flussence niecza: my $s = "a"; $s ~= $s for ^2; say $s.chars # ? 19:36
p6eval niecza v3-49-gd426c3d: OUTPUT«4␤»
flussence huh.
rakudo: my $s = "a"; $s ~= $s for ^200; say $s.chars 19:37
p6eval rakudo bd134e: OUTPUT«Failed allocation of 536870976 bytes␤Parrot VM: PANIC: Out of mem!␤C file src/gc/alloc_memory.c, line 87␤Parrot file (not available), line (not available)␤␤We highly suggest you notify the Parrot team if you have not been working on␤Parrot. Use parrotbug (located in parrot's
..root …
flussence whoops, didn't mean to type 00
sorear flussence: p6eval doesn't have 2^200 bytes of RAM
isBEKaml since when did parrot get that nice OOM error message? (sorry, been out so long. :/) 19:38
flussence rakudo: my $s = "a"; $s ~= $s for ^20; say $s.chars 19:39
p6eval rakudo bd134e: OUTPUT«1048576␤»
moritz_ isBEKaml: it's been quite a while
19:39 noganex joined
isBEKaml moritz_: I see things have grown compartcompoundomentally. :) 19:40
19:40 plobsing left, plobsing joined 19:41 ruoso left, ruoso joined
isBEKaml rakudo: my $s="s"; $s.chars.say; 19:41
p6eval rakudo bd134e: OUTPUT«1␤»
sorear woah, 29 seconds to compile NieczaActions... I wodner what I did 19:42
19:43 colomon joined
[Coke] is that high or low? 19:44
sorear rather low 19:45
colomon: hi!
colomon \o
isBEKaml rakudo: my $s = "s"; $s ~= $s for ^2; $s.chars.say;
p6eval rakudo bd134e: OUTPUT«4␤»
sorear colomon: I have two suggestions for your benchmarking 19:46
flussence running that ^20 line (with the comb part) locally... niecza did it in 24 seconds but took 1.5GB RAM, rakudo's still running but is stable at ~170MB
sorear 1. It would be helpful to use the same vertical scale for all of the graphs, so I can see at a glance which have changed a lot and which have changed a little 19:47
2. A logarithmic vertical scale would make excursions near 0 look niecer
nicer
flussence (hm, rakudo's up to 220MB RAM now...) 19:49
19:50 benabik joined, colomon left
sorear flussence: irony. 19:50
moritz_ oh, the optimized version is never called
19:50 porter235 joined
moritz_ rakudo: class A { method f($) { say 1 }; method f() { say 2 } }; A.new.f() 19:51
p6eval rakudo bd134e: OUTPUT«2␤»
moritz_ rakudo: class A { method f($?) { say 1 }; method f() { say 2 } }; A.new.f()
p6eval rakudo bd134e: OUTPUT«===SORRY!===␤In signature parameter, '$?', it is illegal to use '?' twigil at line 22, near ") { say 1 "␤»
moritz_ rakudo: class A { method f($a?) { say 1 }; method f() { say 2 } }; A.new.f()
p6eval rakudo bd134e: OUTPUT«2␤»
moritz_ rakudo: class A { method f($a = 2, $b = 5) { say 1 }; method f() { say 2 } }; A.new.f() 19:52
p6eval rakudo bd134e: OUTPUT«2␤»
moritz_ rakudo: class A { method f(Int $a = 2, $b = 5) { say 1 }; method f() { say 2 } }; A.new.f() 19:53
flussence stranger still is that rakudo seems to only be using ~85% CPU...
p6eval rakudo bd134e: OUTPUT«2␤»
19:53 literal_ joined
sorear hey, tadzik noticed that sorting a list of 1000 numbers that are already sorted is slwo 19:53
sorear points at Parrot's naive quicksort and sniggers 19:54
masak sorear: why?
isBEKaml that's sort of expected, isn't it - well, depending on the algorithm actually used. :?
moritz_ if it uses mergesort, the runtime will be nearly independet of the input ordering
19:54 impious joined
moritz_ isBEKaml: *sort* of :-) 19:55
sorear masak: it... doesn't
moritz_:
isBEKaml good * sort! :-)
masak "quicksort: it doesn't"
it doesn't sort, or it doesn't sort quick? I'm guessing the latter.
sorear (I can't think of any legitimate reason to use quicksort in the 21st century, except maybe as a case study of cargo cult programming) 19:56
masak because the former would be really catastrophic.
moritz_ sorear: it's cache friendlier than mergesort, people say
isBEKaml masak: he says that it's sorting an _already_ sorted list. that's slow.
sorear masak: several well-known C libraries have quick sort routines that segfault if the comparison callback fails to be transitive
isBEKaml masak: and, hi! :)
moritz_ (but I don't think it's a *good* reason)
masak isBEKaml! \o/ 19:57
sorear: serves them right, I say :P
plobsing sorear: just because qsort() is implemented poorly on some platforms doesn't mean one should not use the algorithm it implements.
isBEKaml sorear: cargo cult programming! *snickers* blame it all on Tony! xD 19:59
masak: things how goes? =)
masak isBEKaml: things wonderfully go. :) 20:00
isBEKaml: Yapsi has named subs!
isBEKaml: we're doing a hackathon!
isBEKaml: we participated NLPW!
dalek ecza: ade14b1 | sorear++ | / (4 files):
Fix A::B installing B alias, setting breakage
isBEKaml masak: We, we moar got?
masak mberends, jnthn
tadzik was here during the weekend. 20:01
isBEKaml mberends, ah. shoulda guessed from NL. :)
tadzik sorear: that might be just the fact that even a .sort call is slow :)
sorear isBEKaml: niecza's march goal is to run yapsi
tadzik and fwiw actually jnthn++ found that
isBEKaml hugme: hug everyone!
hugme hugs everyone!
moritz_ says multi dispatch wtf 20:02
if I add a multi method comb() to class Cool, it's not called
isBEKaml sorear: that's wonderful. are you actually going to run sic bytecode ? I'd love to see that against CLR. :)
moritz_ if I add it to class Str, it hides other multis 20:03
20:04 rdesfo left
sorear isBEKaml: no, I was planning to run Yapsi.pm 20:04
jnthn moritz_: The second isn't surprising.
moritz_: But the first is...but it may be that the higher arity existing candidate wins or something...
isBEKaml sorear: nice. looking forward to it!
moritz_ the other is 20:05
multi method comb(Regex $matcher = /./, $limit = *, :$match)
sorear isBEKaml: eventually I'd like to make it 100% masak-compatible 20:06
moritz_ rakudo: class A { multi method comb(Regex $matcher = /./, $limit = *, :$match) { 1 }; multi method comb() { 2 } }; say A.new.comb
p6eval rakudo bd134e: OUTPUT«1␤»
isBEKaml sorear++ (masakking everything!)
moritz_ is that... expected?
sorear moritz_: If you have a separate multi to handle to no-arg case, making $matcher optional-with-default is probably part of the problem
jnthn I'm guessing the higher arity one sorts higher.
masak what? why?
jnthn Probably because you asked for it to when it suited that way around :P 20:07
isBEKaml masak: march plan of attack? (I don't know, I might disappear off to the woods again. :/ )
masak jnthn: hey! :P
moritz_ sorear: if I don't provide the default, I make the case where a :limit is supplied impossible, no?
jnthn The whole area is weird...
masak jnthn: I remember asking for another thing.
sorear masak: what? november, druid, yapsi, ...
masak jnthn: it was the presence/absence of a slurpy array.
jnthn moritz_: Note the :limit will apply to the second one too...
masak jnthn: that one should prefer the smaller-arity one.
jnthn Since there's a default *% 20:08
isBEKaml thinks things are getting weird here about rapidly losing context. is it just me? :)
sorear IMHO Rakudo should be giving an ambiguous dispatch error
jnthn sorear: Doubt it.
masak sorear: november is getting a bit old, but all those are fine.
sorear "the wiki engine with more grey hair" 20:09
tadzik mberends: has anything new happen about the Sekritt Project?
masak tadzik: I'm doing the last bits on NP now.
tadzik: as it turns out P=NP, actually :P
jnthn oh, turns out it doesn't seem to care much for arity in these cases...
dukeleto i just submitted The Perl Foundation's app to participate in Google Summer of Code 2011. Anybody have project ideas?
moritz_ dukeleto: is it a joint application of TPF and PaFo? 20:10
dukeleto moritz_: nope, Parrot Foundation and TPF are seperate orgs this year
tadzik masak: oh I so want to see that patch :)
jnthn masak: The slurpy bit is there, though...
masak jnthn: yes, but it should *prefer* the shorter one, no? 20:11
dukeleto moritz_: it became too crazy to have two umbrella organizations under the same roof
isBEKaml "The wrinkled wiki" :P
jnthn masak: Perhaps so.
masak: We could try it and see what tests break...
:)
masak \o/
mberends tadzik: tuit fail, but tuit recovery expected tonight/tomorrow :)
dukeleto moritz_: Rakudo is kind of on the boundary layer. I guess it can choose to be part of whichever org it wants :)
isBEKaml wait, should that be "wrinkli" ? :D
masak I distinctly remember the discussion during YAPC::EU 2009. 20:12
"The lack of an argument could be considered narrower than a slurpy array." -- Damian
dukeleto moritz_: i assume it will be TPF
moritz_: but that is up to Rakudo-folk to decide
jnthn hm
dukeleto has to head to the airport in a few
moritz_ dukeleto: I'll think about project ideas, thanks
dukeleto moritz_: awesome!
This page is sorely in need of updating and a project ideas should be added to the bottom: www.socialtext.net/perl5/gsoc 20:13
20:15 GinoMan left 20:18 porter235 left
[Coke] I imagine rakudo could end up with project under both orgs this year. 20:23
20:24 stkowski joined
isBEKaml www.reddit.com/r/perl/comments/fxbb...at/c1jfygb 20:29
lol, hug HIBOU.
20:33 fisted left
isBEKaml I feel sorry for that fella. 20:33
20:34 Holy_Cow joined 20:38 ponbiki joined 20:46 isBEKaml left 20:50 plobsing left, tyatpi_ joined 20:53 benabik left 20:55 fisted joined 21:00 plobsing joined 21:03 am0c joined 21:05 tyatpi_ left 21:10 dual left 21:13 plainhao left 21:14 dual joined 21:15 gdey_ joined, gdey_ left, gdey_ joined 21:18 tyatpi_ joined
Tene jnthn: I ended up having a lot of trouble getting the class hierarchy organized properly; I need to take a look at that again today after work. 21:20
Trying to get classes to be instances of RubyClass, and RubyClass to be an instance of RubyObject, I kept ending up with circular inheritance. There's something I'm doing wrong there. 21:21
21:22 metaxy joined
Tene I also wasn't getting things organized properly to have class methods be separate from instance methods; I suspect those are related. 21:22
21:23 gdey_ left 21:24 TheMartianGeek joined
jnthn Tene: May need to have two separate meta-methods, an add_method and add_class_method or some such. 21:27
Tene Maybe.
I think I'm just not clear on what repr_type_object_for does exactly; I need to read through the code around that. 21:28
Ruby doesn't use prototype OO, so instances of a class aren't the same type as the class itself.
so classes need to be instances of class, but not inherit from class. 21:29
I don't have a specific question here, as I'm not working on it right now, but I thought you might be interested in hearing the difficulties I ran into while trying to use it, yes? 21:30
21:33 ruoso left 21:34 ruoso joined
flussence oh, that rakudo oneliner finally finished 21:37
6161.64user 1.86system 1:46:12elapsed 96%CPU (0avgtext+0avgdata 4096992maxresident)k 21:38
21:39 f00li5h joined 21:43 cjk101010 joined
masak moritz_: when I do 'perl6 -h' what is it that includes ll-backtrace among the options listed? 21:45
tadzik a-ha, I see what you did there? 21:46
:)
masak :)
tadzik: it's working locally, just refactoring a bit and making sure the docs/help system follow along nicely. 21:47
oh. seems the answer is "it's in compilers/pct/src/PCT/HLLCompiler.pir" 21:49
21:50 ruoso left 21:51 TheMartianGeek left 21:52 lichtkind joined
moritz_ masak: right 21:53
masak: don't invest much work on it, the command line parsing works differently in the new nqp
masak *nod*
I'll just submit a rakudobug so we don't forget.
21:55 spq left 22:00 metaxy left
lichtkind cheers 22:01
22:01 drakej joined, drakej left
lichtkind ouch 22:01
masak cheers/ouch, lichtkind. 22:03
lichtkind masak :) the ouch was only because my conversation with the nickserver :) 22:04
22:04 kaare_ left, cjk101010 left
masak lichtkind: is the nickserver being sarcastic again? 22:04
mberends
.oO( ouch is lichtkindś password? )
22:05 Holy_Cow left
lichtkind masak: he just a faithfull servant the real ouch was because i could not remember my password the first 2 times 22:06
dalek kudo: 7fb6341 | masak++ | / (3 files):
added -n and -p options

The -n option pretends that instead of $code, your program is really
  "for lines() { $code }". The -p option pretends "for lines() { $code;
say $_ }". The substitutions in question are done at the PAST level in Perl6::Actions.
masak lichtkind: that's because you don't come and visit us at #perl6 enough :)
mberends masak++ # making Rakudo -n and -p complete 22:08
masak \o/
22:08 gdey_ joined
masak interesting post about "core Perl 5": blogs.perl.org/users/brian_d_foy/20...l-516.html 22:08
jnthn masak: Was it -n -p hard?
masak jnthn: the hardest part was waiting for Rakudo to compile. :) 22:09
tadzik yay :)
masak after the FUTURE, I feel very confident with handling the PAST.
lichtkind cheers jnthn
tadzik wow, that was actually quite easy
or rather: simple 22:10
jnthn ahoj, lichtkind
22:10 gdey_ left, allbery_b left, simcop2387 left, bhwu left, f00li5h left
masak tadzik: yes. the implementation mostly consisted of a bunch of magpie copy-pasting from other places :) 22:10
22:10 silug left, saaki left, silug joined, allbery_b joined
masak and just a tiny bit actual understanding. 22:10
tadzik that opens a room for lotsa LHF 22:11
22:11 gdey_ joined
masak oh? 22:11
lichtkind masak: true but i guess im coming back a bit 22:12
tadzik masak: like autosplit 22:13
or -MDevel::Trace or so!
22:13 coldhead joined, porter235 joined, simcop2387 joined 22:15 shi left 22:18 porter235 left
masak maybe in the new nqp, we can also fix the fact that ^D in the REPL doesn't print a final newline before exiting :) 22:22
jnthn If anybody knows what fixing that involves probably, yes :) 22:23
tadzik oh, it just needs a "say;" somewhere :)
masak std: say; 22:24
p6eval std 4608239: OUTPUT«Potential difficulties:␤ Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/qa1hjPxRwh line 1:␤------> say⏏;␤ok 00:01 117m␤»
masak std: say '';
p6eval std 4608239: OUTPUT«ok 00:01 118m␤»
masak tadzik: modulo that, yes.
tadzik oh, I thought I use say; in panda 22:25
masak please avoid using 'say;'
tadzik which, by the way, deserves a blag toast
masak it works in Rakudo currently, but it shouldn't.
oh definitely; do blog about Panda. 22:26
masak goes to retire pun
22:26 f00li5h joined
tadzik oh, and we still didn't talk about the differences between Panda and Pls 22:26
masak right. 22:27
tadzik so maybe I'll just hilight them in the toast, so you could respond to that 22:28
masak do what makes sense/feels right for now. 22:29
tadzik I feel like sleeping :)
masak we can discuss Panda and Pls whenever it's convenient.
me too :)
tadzik and I have to wake up at 6 tomorrow to attend a Java lecture :( 22:30
jnthn Ouch 22:31
sjohnson doh 22:32
tadzik yeah. But it's still probably the most interesting classes I have 22:34
maybe besides Table Tennis
masak what sadist teaches Java at 6 in the morning? :P
sjohnson: \o
sjohnson masak.pal()
tadzik at 8 :) But I have to wake up like 6.20 to get there
oh, that reminds me that it's actually 8.30 22:35
sjohnson is doing a lot of perl5 coding today
dalek p/ctmo: 06a391d | jonathan++ | / (6 files):
Get setting loading working from pre-compiled code. This was a tad twisted to do, but should work nicely now.
22:36 f00li5h left
masak jnthn++ 22:36
masak goes to bed
'night, zebras.
22:36 masak left 22:38 natureboy joined
jnthn yes, sleep sounds like a good idea :) 22:39
22:41 fisted left 22:44 f00li5h joined
sorear hi #perl6 22:45
22:47 natureboy left, am0c left 22:49 fisted joined
sjohnson hello 22:49
22:50 risou joined 22:53 f00li5h left 22:57 cognominal left 23:01 hercynium left 23:05 f00li5h joined 23:08 ymasory left 23:12 Guest87704 joined
lichtkind gnight masak | jnthn 23:17
or better gnight masak & jnthn 23:18
23:18 Rotwang left 23:19 plobsing left 23:20 takadonet1 joined
sorear hello lichtkind 23:23
23:35 colomon joined 23:36 f00li5h left 23:40 Guest87704 left 23:42 f00li5h joined 23:43 gdey_ left, gdey_ joined 23:47 rgrau joined 23:51 f00li5h left 23:52 f00li5h joined 23:56 fisted_ joined 23:59 fisted left