»ö« 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?
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
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)
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.
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
jnthn Not Yet *Fully* Implemented :P 00:21
masak O RLY? 00:21
I'm sure we all read it that way... :P 00:22
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…
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
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
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
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?
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
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
Tene Yeah, I get NYFI 1 if I try to use attributes not named $!foo 01:55
Tene Oh, no, nevermind. It works fine; I just didn't change it in one place. 02:02
takadonet1 pyrimidine: ping 02:06
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.
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.
dalek ecs: f5a9d2d | diakopter++ | S32-setting-library/Str.pod:
fix omission in grammar Str::SprintfFormat
03:56
masak --> to airport with tadzik++ 04:03
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
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␤ .)␤»
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.
sorear out 07:45
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
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
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.
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
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
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
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
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
tadzik now where did HollandHackathon guys go? 11:06
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
[Coke] Oh, look, snopocolypse 2001.345 11:59
2011, even!
dalek ecza: d426c3d | pmurias++ | cl-backend/backend.lisp:
[cl-backend] rename preinit to *preinit*
12:39
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.
takadonet morning all 13:10
masak takadonet: \o 13:26
jnthn ohhai 13:27
moritz_ loljnthnisawake! 13:30
masak: how are those p5 timings coming along? 13:31
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.
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.
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.
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?
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
colomon afk but !!!!!!!!!!!!!!! 14:01
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!
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.
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
masak wallberg! \o/ 14:30
[Coke] marky mark? 14:31
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.
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.
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
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.
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
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.
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
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
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
frettled passes mux a virtual bottle of Chateau Tour St. Pierre 1998 instead. 15:07
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
donri you're right this fanfiction is awesome 15:20
at least with chrome.google.com/webstore/detail/...mnklbhadhc :D 15:21
masak ooh 15:22
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.
masak LHF for anyone who's interested: rt.perl.org/rt3/Ticket/Display.html?id=85602 15:31
sorear good * #perl6 15:32
diakopte1 e 15:37
sorear TimToady: Does 'my class A::B { }' mean anything? 16:03
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
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
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)
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
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
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
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
sorear TimToady: I'm also wondering if it makes sense to have STD loosely coupled to a "symbol tables" component 17:19
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?
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
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.
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
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
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
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"
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?
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
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
sorear I was trying to prove that STD's package model was SUBTLY broken 17:54
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␤»
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
sorear well I need to know _how_ it works 18:05
in order to support things like "Yapsi::Runtime"
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
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
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
sorear ok. y'all have convinced me. 18:37
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 ?
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 ;)
masak Su-Shee: gd'evening! 19:00
jnthn o/ Su-Shee 19:02
sorear hello Su-Shee 19:03
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
tadzik o/ 19:27
masak \o
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.
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
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␤»
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
isBEKaml moritz_: I see things have grown compartcompoundomentally. :) 19:40
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
[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
sorear flussence: irony. 19:50
moritz_ oh, the optimized version is never called
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␤»
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
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
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
[Coke] I imagine rakudo could end up with project under both orgs this year. 20:23
isBEKaml www.reddit.com/r/perl/comments/fxbb...at/c1jfygb 20:29
lol, hug HIBOU.
isBEKaml I feel sorry for that fella. 20:33
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
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
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
flussence oh, that rakudo oneliner finally finished 21:37
6161.64user 1.86system 1:46:12elapsed 96%CPU (0avgtext+0avgdata 4096992maxresident)k 21:38
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
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.
lichtkind cheers 22:01
lichtkind ouch 22:01
masak cheers/ouch, lichtkind. 22:03
lichtkind masak :) the ouch was only because my conversation with the nickserver :) 22:04
masak lichtkind: is the nickserver being sarcastic again? 22:04
mberends
.oO( ouch is lichtkindś password? )
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/
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
masak tadzik: yes. the implementation mostly consisted of a bunch of magpie copy-pasting from other places :) 22:10
masak and just a tiny bit actual understanding. 22:10
tadzik that opens a room for lotsa LHF 22:11
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!
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
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.
masak jnthn++ 22:36
masak goes to bed
'night, zebras.
jnthn yes, sleep sounds like a good idea :) 22:39
sorear hi #perl6 22:45
sjohnson hello 22:49
lichtkind gnight masak | jnthn 23:17
or better gnight masak & jnthn 23:18
sorear hello lichtkind 23:23