»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
japhb_ Sweet. 00:00
timotimo in^H^H^H^Hindeed it is! 00:01
japhb_ Looking through those graphs, I was going "so where does it differ?" And then I came to postwhile_nil_native ...
diakopter where does it differ from what 00:02
oh, the previous build
japhb_ Holy crap, trim_string got a lot better!
Tight native loops makes sense, but that's a nice improvement on something "larger" 00:03
diakopter I don't see man-or-boy on there
segomos IO::Socket::INET differs for jvm vs parrot?
diakopter oh there's man-or-boy
segomos: I don't see a socket test
segomos diakopter: sorry i didn't mean to type that here, i'm getting .send method not available errors and trying to track down if it's the way that i built rakudo or actually a bug ;) 00:04
diakopter likely a bug.
jnthn segomos: Unless somebody sneaked it in, sockets ain't in place on JVM yet.
segomos jnthn: ahh, okay thanks 00:05
jnthn segomos: I may get to that in the next days...
timotimo japhb_: i have no sensible explanation for for trim_string getting better
u
segomos jnthn: if you point me in the right direction on where to even start i wouldn't mind submitting some stuff
japhb_ timotimo: Improvement in just this line? github.com/rakudo/rakudo/blob/nom/...tr.pm#L767 00:08
timotimo oh. yes, could be. 00:11
grondilu std: use java::lang::System:from<java>; 00:17
camelia std c2215f0: OUTPUT«===SORRY!===␤Cannot locate module java::lang::System at /tmp/Cd5PUUKuR6 line 1:␤------> use java::lang::System:from<java>⏏;␤Check failed␤FAILED 00:00 41m␤»
ruoso hey 00:35
yoleaux 5 Aug 2013 07:37Z <jnthn> ruoso: the next/last handlers for while loop are emitted as part of code generation, that is a QAST::Op while (and until, repeat_while and repeat_until) gets them "for free". MapIter handles them for for loops and contains a Parrot-specific version as well as a generic version of the looping code that JVM uses.
ruoso jnthn: so, from my experiments, it seems that "take" changes something in the state of the control exception such that a "last" after a "take" make the exception to leak to main 00:37
but I have to admit that I haven't still find a proper way to debug this
jnthn ruoso: Well, I guess there is a continuation take/resume between the two 00:39
ruoso yeah... sure... 00:40
but it seems that last behaves strangely only after a take/resume
r: say gather loop { take 1; last }
camelia rakudo df814a: OUTPUT«1␤»
ruoso that simple test breaks in the jvm rakudo 00:41
I if try the take without a last and a last without a take, they work fine 00:42
but what is really blocking me is that I haven't found a productive way of debugging it... 00:45
LlamaRider holla #perl6 00:49
jnthn ruoso: I'm afraid I've not got many hints there...I'm not that familiar with the inner workings of the continuation bits yet
dalek p: c9a07ec | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/BootJavaInterop.java:
Support loading classes from an explicit JAR.
00:51
LlamaRider I am trying to get NQP on JVM going for the first time and sadly my "make test" failed on what seem two easy tests (passing a large bunch of tests beforehand).
where should I seek help? :)
ruoso jnthn: it would probably be easier if there was a way to (maybe as a compile-time-switch) revert to generating the exceptions lazily... 00:52
jnthn LlamaRider: Here; which test file was it?
LlamaRider t/jvm/06-sprintf.t
jnthn Ah...
dalek kudo/use-from-java: 73b6583 | jnthn++ | src/vm/jvm/Perl6/JavaModuleLoader.nqp:
Give :from<java> support for a :jar<...> also.
jnthn I think FROGGS or colomon are most likely to know about that...I highly doubt that it means you'll have problems overall, though. 00:53
LlamaRider one of the failures looks harmless the other however...
LlamaRider gist.github.com/dginev/6161094 00:55
the first error looks troubling
I will brave a make install and expect meeting dragons on Rakudo's make test =) 00:57
jnthn sleep time; 'night 01:06
LlamaRider g'night jnthn! Rakudo's make test just passed, things are looking up :) 01:07
timotimo my laptop likes to freeze and reboot when it experiences shaking :| 02:00
timotimo hopes an interrupted yum update doesn't do damage 02:01
apparently it didn't damagy my system in any obvious way 02:04
LlamaRider You were lucky no kernel updates were being performed 02:10
timotimo er ... actually no.
i do believe i have two kernels to choose from in my grub
LlamaRider what I meant is that the interrupt wasn't in the middle of a kernel upgrade 02:12
then the newer one would've ended up broken
it's nothing lethal in any case, but you would have had to manually clean up after it
timotimo probably would have been enough to just reinstall the kernel 02:18
moritz \o 04:29
yoleaux 5 Aug 2013 21:56Z <lizmat> moritz: please check df814a2, it was needed to fix many spectests, but fear it is not the solution you had in mind
moritz wtf
moritz what makes X::Comp fatal where Exception isn't fatal? 04:33
moritz r: 1 1 05:58
camelia rakudo df814a: OUTPUT«===SORRY!=== Error while compiling /tmp/B1LeJFRLFF␤Two terms in a row␤at /tmp/B1LeJFRLFF:1␤------> 1 ⏏1␤ expecting any of:␤ postfix␤ infix stopper␤ infix or meta-infix␤ statement end␤ statem…
moritz I don't understand how that can still work after lizmat++'s patch 05:59
JimmyZ hi
moritz $r ~= "$red==={$clear}SORRY!$red===$clear Error while compiling $.filename\n";
but $.filename comes from X::Comp 06:00
and this is X::Comp::Group, which no longer does X::Comp
hi JimmyZ
moritz oh, there are two instances that generate the SORRY 06:00
dalek kudo/nom: f5bfa78 | moritz++ | src/core/Exception.pm:
remove one usage of $.filename that now might not work anymore

but the usual code path seems to go through X::Comp.sorry_heading anyway
06:17
lizmat github down ? 07:46
oh, eh, good *, #perl6!
indeed: status.github.com 07:47
jnthn morning o/ 08:32
JimmyZ morning, jnthn 08:33
dalek rlito: 21f1282 | (Flavio S. Glock)++ | t5/01-perlito/ (80 files):
Perlito5 - renumber tests
08:48
dalek kudo-js: 1c4c59d | (Pawel Murias)++ | / (3 files):
Handle QAST::BVal properly by always making it emit a reference.

Create all the cuids as empty code refs before deserializing objects. Fill them in with static versions and update when possible.
09:05
mathw morning #perl6 09:10
masak antenoon, #perl6
frettled Github claims to be in working order now. 09:11
jnthn antomorn, masak
frettled good $timeofday everyone :)
mathw wonders how long before the cleverness in greetings gets completely out of hand and destroys the universe 09:14
FROGGS hi all 09:15
mathw FROGGS++ # saved the universe
FROGGS :o)
frettled mathw: given that cleverness in greetings on #perl6 is at the same level as in 2007 or so, I think we don't need to worry for a long, long time :) 09:17
mathw yeah maybe, I tend to be over-dramatic when I'm hungry 09:20
masak frettled: well, that's the deviousness of exponentially worsening cleverness.
frettled masak: it's becoming clever so fast that it seems ordinary! 09:21
masak frettled: eventually we'll hit a hard-takeoff greeting cleverness singularity, and... foom.
frettled any sufficiently advanced cleverness is indistinguishable from stupidity
nwc10 has anyone made greeting obfuscations and fed them to the evalbot? 09:22
FROGGS jnthn: how do you implement it, use ... :from<java> or .... :from<Java> ?
jnthn FROGGS: use java::lang::System:from<java> 09:23
FROGGS jnthn: I'm asking because I'd prefer :from<Perl5> instead of the lc version, and I'd prefer :from<PHP> over :from<php>
because this is more about that language rather than the interpreter-binary
jnthn hmm 09:24
Does the spec have an opinion? :)
jnthn somehow prefers it in lowercase...
FROGGS lemme check
hmmm, S11 has :from<perl5> but :from<C>
jnthn bah 09:25
We could just make it case insensitive :S
*:D
FROGGS >.<
*shudder* 09:26
jnthn
.oO( my hands know better than my head on that idea, apparently :P )
FROGGS hehe
(jnthn's-hands)++
masak .oO( you case insensitive clod! ) 09:28
mathw case-insensitivity makes me unhappy 09:29
moritz read "case insensitive cloud"
mathw too many bad memories of dealing with the filesystem on Windows
jnthn mathw: I think case-insensitivity is the last of its problems :P
*least 09:30
FROGGS meh, somewhere in the spec was an example ov eval() where one could pass the language... can't find it now
mathw jnthn: that was the one that always annoyed me though, largely due to what happens when string comparison inside your code meets user expectations of case-insensitivity 09:31
FROGGS just this: S29-functions.pod: multi eval ( Str|Buf $code, Grammar :$lang = CALLER::<$?PARSER>)
jnthn mathw: ah :)
masak FROGGS: interesting how it always supplies a Grammar, and thinks that that's the whole language. 09:39
FROGGS true
masak (you'd need at least an Actions and a World to parse Perl 6)
FROGGS same goes for setting $~LANG (or was it $~MAIN?), which refers to a grammar and hoping that is it... 09:40
that is why I am proposing setting %*LANG{ $name } and %*ACTIONS{ $name }, and set $*MAIN to your slang in your slang module 09:41
the other thing is, do other slangs want to just nibble to their statementlist too when switching to it? 09:42
FROGGS otherwise we should invent a Slang class, which has an action- and grammar-attribute 09:44
(for the first issue)
sorry, my thoughts are stored in a hash
lunch & 09:45
pmurias jnthn: case insensitivity seems like a bad idea 09:46
celesta ahoi #perl6
pmurias hello 09:47
mathw who invented ORMs? 09:59
And is there a better way?
jnthn mathw: The better way probably involves not having a rdbms be The Only Option for persisting stuff, but picking something that fits the domain :) 10:02
mathw See that's odd, because often I find the rdbms fits the domain very nicely but the ORM then prevents me from using it properly. 10:03
jnthn Well, I guess the Obvious Alternative is to keep any DB-related logic out of the code and do everything through SPs, table-value functions, etc. 10:06
mathw yeah
jnthn ORMs are a weird thing anyway.
The point of a relational database is that you know the fields and write queries over them 10:07
mathw I don't think there are any truly good answers, and I may be more annoyed with ORMs than usual due to having to compromise my schema for NHibernate's sake
jnthn The point of an object is you encapsulate the fields and expose behavior
dalek rlito: 17fd35a | (Flavio S. Glock)++ | t5-bug/410-ampersand.t:
Perlito5 - tests
jnthn So they're not really *object* relational mappers at all, but DTO relational mappers...
Or struct relational mappers. Or whatever. :)
mathw yeah 10:08
masak yes, it's a misnomer.
Fowler points this out as well.
the challenge isn't mapping objects, the challenge is mapping *things in memory*.
mathw well, it's nto really because it turns them into objects, they're just not very good ones :)
jnthn Yeah, the thing is that in many systems, the fact that these ORM-centric objects look this way tends to lead to all objects in the system looking that way. Most business systems I see are procedural code in OO disguise. 10:10
"Why do the OO textbooks say dog.bark(), but all our code is dogController.bark(dog)?" # real question I got recently at $dayjob client 10:11
mathw It does tend to contaminate things. One of my colleagues is very big on domain-driven design done in a way that attempts to alleviate the problem
Personally I just end up hating OOP
jnthn The irony is that languages various primarily OO languages, like Java and, to a lesser degree, C#, force an OO perspective on *everything*, which as a result devalues OOP. 10:13
s:1st/languages//
mathw everything has to be inside a class 10:14
that is one thing that really, really bugs me 10:15
daxim HEY USER, I HAVE AN AXE TO GRIND WITH YOU. GRIND GRIND. USE OOP. OR ELSE. 10:15
why is that not acceptable in the real world, but when a language designer does it, he's like buddha on the mountain? 10:16
masak yeah; one is a sin of commission (making everything OOP), the other a sin of omission (eschewing OOP because the ORM sits on it).
daxim: because none of us have much of an idea of what we're doing.
mathw this is all too new still
masak daxim: and people with axes to grind often sound really convinced, which tends to attract followers.
mathw quite exciting, we really still have no idea how to write software
masak almost not clue at all
daxim I'm gonna quote you on that. 10:17
mathw one of my colleagues now informs me that NHibernate can in fact do what I want 10:18
ruoso on the topic of ORM, I think DBIx::Class offers an interesting perspective by not trying to make the simplistic "table is class, row is object" approach, and making it a much more open-ended "we have result sources, result sets and rows. some result sources have predefined types"
mathw ruoso: I've not used it extensively, but I've been very interested in what I have seen. 10:19
moritz ruoso: aye, DBIx::Class seem to have found a sweet spot
ruoso Yeah, I would personally just port DBIx::Class pretty much as-is to Perl6 (maybe adding a custom grammar for the result source declaration)... It already heavily uses roles and traits and stuff... 10:22
FROGGS .tell TimToady should the name of a slang be lowercase in general? like in use A:from<perl5>, use B:from<java>, eval( "\t\s\n", :lang<bf> ) ? I think the name of the slang is about the language, not the interpreter/binary, and should there be like Perl5, Java, C, ... 10:25
yoleaux FROGGS: I'll pass your message to TimToady.
preflex yoleaux: you have 1 new message. '/msg preflex messages' to read it.
FROGGS preflex: you are weird
jnthn oh no...did somebody use one message bot to message another? :P 10:26
masak bots are bad at checking their messages. 10:27
mathw $me.laugh;
masak .tell yoleaux I'd sure like to get my hands on IRC bot technology clever enough to read its messages. 10:46
yoleaux masak: Thanks for the message.
masak heh.
oh, the '.tell' command goes to yoleaux. 10:47
preflex: help?
preflex: help
preflex try 'help help' or see 'list' for available commands
masak preflex: list
preflex Botsnack: [botsnack]; Cdecl: [cdecl]; 8ball: [8ball]; excuses: [excuse]; Factoid: [+, -, ., ?, delete, get, store]; Help: [help, list]; Karma: [++, --, karma, karmabot, karmatop]; Nickometer: [nickometer]; Nickr: [nickr]; PlokiRE: [re]; Seen: [seen]; Sixst: [6st, ordinal]; Tell: [ask, clear-messages, messages, tell]; Rot13: [rot13]; Quote: [be, quote, remember]; WCalc: [calc, wcalc]; Version:
[version]; XSeen: [xseen]; ZCode: [zdec, zenc]
masak preflex: tell yoleaux you have another message!
preflex Consider it noted.
masak yoleaux: now check your inbox. 10:48
lizmat .tell masak yoleaux will tell you now
yoleaux lizmat: I'll pass your message to masak.
FROGGS preflex: karmatop 10:50
O.o
preflex c: 200815; g: 9840; ##c: 7841; c/c: 7011; whiteknight: 4931; moritz: 4875; bacek: 4624; notepad: 4280; jnthn: 4095; #c: 3762 10:51
FROGGS thank you sir 10:52
lizmat a QAST question: looking at gist.github.com/lizmat/6163530 10:53
I understand that it creates an if on a state variable that only runs once
and that it stores the result of the block execution in that variable
the final line returns the value of that variable, right ? 10:54
masak wow, that c/c thing is more popular than whiteknight :)
yoleaux 10:48Z <lizmat> masak: yoleaux will tell you now
FROGGS lizmat: I'm not sure if QAST::Ops do that, but QAST::Stmts certainly do
hmm, I think that QAST::Var gets passed to the op rather than returned from it 10:55
jnthn lizmat: if takes cond/then/else
FROGGS so the line 9 is the else
jnthn lizmat: The else branch (third kid) just returns the thing in the variable, yes
Right.
FROGGS yeah, of course
jnthn it's-our-first-time ?? $secret-var = blorst() !! $secret-var 10:56
lizmat well, then why doesn't this work:
r: for ^2 { say once { say "hello"; 42 } } 10:57
camelia rakudo f5bfa7: OUTPUT«hello␤Nil␤Nil␤»
lizmat it *is* executed once, but the value of the block is never returned
FROGGS lizmat: that QAST::Var $sym is declared somewhere?
lizmat $*W.install_lexical_container($pad, $sym, %info, $descriptor, :scope('state'));
FROGGS hmmm, I would do: make QAST::Stmts.new( QAST::Var.new( :name($sym), :scope('lexical'), :decl('var') ), <--- op goes here ---> ) 10:58
lizmat It's in Actions, line 1245 and following
method statement_prefix:sym<once>($/) {
FROGGS instead of the lexical, but jnthn can tell if I am wrong :o)
lizmat: in nom?
lizmat in nom indeed
FROGGS so I can play with it
k 10:59
lizmat r: for ^2 { say once { say "hello"; 42 } } # should say hello,42,42 according to spec
camelia rakudo f5bfa7: OUTPUT«hello␤Nil␤Nil␤»
FROGGS lizmat: what about line 1247? 11:00
ahh, no, you're not using $past 11:01
lizmat dead code indeed... 11:02
removing the dead code fixed it 11:07
FROGGS!
FROGGS does it?
FROGGS ahh well, it binds to $past... 11:07
tadzik a link to the $past 11:08
dalek kudo/nom: fe939be | (Elizabeth Mattijsen)++ | src/Perl6/Actions.nqp:
Make "once" block *really* work, FROGGS++ for extra pair of eyes!
FROGGS #perl6, where time machines happened
remember the days when stage parse took <80s? ó.ò 11:09
FROGGS 's machine takes 133s now
tadzik yeah, early nom :)
when the setting was 8x shorter
dalek ast: 970bc4b | (Elizabeth Mattijsen)++ | S04-statements/once.t:
Unfudge now passing once block tests
FROGGS so it is about 5min all in all
tadzik: well, last year in october or so
FROGGS lurks at #moarvm :P 11:11
lizmat
.oO( wasn't it the Dobby den ? )
11:22
masak ww? 11:27
lizmat hehe, indeed… :-) 11:28
dalek kudo/nom: 6a65441 | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Reduce core setting size by simplifying (classify|categorize)-list

Too bad that nextwith() doesn't work, or I don't know how to use it.
11:31
lizmat afk 11:33
jnthn Given it has a bunch of passing tests... :P 11:36
JimmyZ good evening 11:41
FROGGS hi JimmyZ
JimmyZ hello FROGGS 11:42
lizmat jnthn: if I replace self.classify-list() with nextwith() in 6a65441, I always only get Nil as the result 12:12
will add that case as a test, and see where it will take us :-) 12:13
jnthn ok :)
masak is surprised at how much Guido keeps referring to Perl 6 in www.youtube.com/watch?v=UIDdgeISLUI 12:24
(it's a Python 3000 talk from July 2006)
dalek rlito: 64cca22 | (Flavio S. Glock)++ | / (5 files):
Perlito5 - more special variables
12:26
FROGGS masak: is it worth watching for somebody that has prejudices about python? 12:27
masak FROGGS: possibly. it gives some insight in the py3k process, which is a nice contrast to the p6 process. 12:29
FROGGS k
masak FROGGS: you'll also be watching it with 7 years of hindsight.
nwc10 from both projects
masak as in, py3k hasn't taken over the world yet.
FROGGS btw, I have no knowledge of python whatsoever
masak FROGGS: the past week-or-so of studying it closely has convinced me that the Perl-Python differences are more in the slogans, syntax, and other surface details, than in pragmatics, community dynamics, etc 12:31
FROGGS I think I care about the syntax mostly when looking at new languages 12:32
pmurias masak: does it refer to Perl 6 other than as a thing to avoid py3k ending up as?
FROGGS "... and Perl 6" ['laughter from audience'] 12:35
lizmat jnthn: failing tests gist.github.com/lizmat/6164076 12:37
dalek ast: f3f049b | (Elizabeth Mattijsen)++ | S12-methods/defer-next.t:
Added extra "nextwith()" tests, that are failing for now
12:39
masak pmurias: I think he's mentioned Perl 6 three times. but it's always in that context, as something to avoid. 12:40
masak pmurias: the third time he says (paraphrasing) "really though, Perl 6 is fine. it's just [extremely ambitious and] taking very long." 12:41
"...and the Perl 5 people are for the most part ignoring it" which was true in 2006 because people weren't talking about Perl 7 then :P 12:42
dalek ast: 12cad1a | (Elizabeth Mattijsen)++ | S12-methods/defer-next.t:
Fudge failing tests for now
lizmat jnthn: so am I expecting the wrong thing from nextwith() ?
FROGGS and he says he doesnt want open discussions about al parts of the new languages, since this eats up time as we see 12:43
jnthn lizmat: Your expectations are off
masak FROGGS: right. everything is *not* up for discussion.
jnthn lizmat: You're iterating over a *predetermined* candiate list.
lizmat: Which contains a single item. 12:44
masak FROGGS: in my view, we've also progressed away from the total free-for-all we had on p6l at some point.
FROGGS: as in, at this point, there is some "inviolable" part of Perl 6.
lizmat jnthn: but should that fail silently?
FROGGS masak: absolutely
masak FROGGS: and the only one that goes changing those bits (very occasionally) is TimToady.
(which always makes me nervous) :)
jnthn lizmat: nextwith is spec'd to return Nil if there's nowhere to go, iirc
lizmat: Though there's been tests that wanted it the other way... 12:45
lizmat so there is no alternative but to repeat the name of the candidate as in self.foo()
jnthn Right, if you want to dispatch over again, that's what you need to do.
masak FROGGS: interestingly, the community even overruled TimToady's OKness proposal, partly because of technical concerns, but to a great extent for backwards-compat reasons. 12:46
FROGGS: you will still hear TimToady mumble sometimes that "OKness would have fixed this..."
FROGGS OKness?
lizmat so there is no easy way to do this without explicitely calling the same method name ?
jnthn lizmat: no 12:47
jnthn lizmat: You can write &?ROUTINE.dispatcher(...) I guess. 12:47
lizmat: I'm not sure I'd consider that easier :)
lizmat seems to me then something would need to be specced, as this is a pattern that I have used a lot in the past 12:48
jnthn um, that'd need to be 12:48
masak FROGGS: gist.github.com/TimToady/1828667
jnthn &?ROUTINE.dispatcher()(...)
dalek kudo/nom: 07a57ba | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Remove derogatory comments
12:52
FROGGS masak: thanks
mathw mumbles something about monads 12:53
jnthn
.oO( kick in the monads )
12:54
mathw One thing I'm really enjoying in Haskell is mucking about with the fact that Maybe is an instance of Monad, as is Either. 12:57
dalek ast: 7bf6bb8 | (Elizabeth Mattijsen)++ | S12-methods/defer-next.t:
Put jnthn's trick instead: this works, but I feel this needs syntactic sugar
13:02
masak at this point in my spiritual development, I just automatically went "well of course Maybe is a monad, just look at it!"
:)
lizmat on our way to the Amsterdam.pm meeting&
masak rn: my $x = 0 but True; if $x { say "T" } else { say "F" } 13:08
camelia rakudo 6a6544, niecza v24-88-g1f87209: OUTPUT«T␤»
masak ok, so that bit of gist.github.com/TimToady/1828667 isn't an issue anymore, for some reason
FROGGS masak: and a failed Match is Nil now, no? 13:09
masak think so. 13:11
mathw doesn't bool-ness override everything else in if's checks or something? #outoftouch 13:15
masak rn: my $b = True but False; if $b { say "T" } else { say "F" } 13:16
camelia rakudo 07a57b, niecza v24-88-g1f87209: OUTPUT«F␤» 13:17
masak mathw: seems the role always wins, yes.
dalek p: b4a38bb | (Pawel Murias)++ | t/nqp/75-curcode.t:
Add test for nqp::curcode();
13:27
FROGGS okay, looks like I don't need to switch over to Python :o) 13:34
mathw no, you don't 13:39
FROGGS Python 3000 from that presentation feels more like Perl 5.10 than Perl 6
tadzik that's correct 13:47
masak yes, and it was never meant to be anything else. 13:53
masak Guido just wants to fix up some very early mistakes once and for all, because doing so down the road would be more difficult. 13:53
FROGGS masak: sure, I understand that, and I think that this is needed to ship it within less than a decade 13:55
pmurias jnthn: what does usecapture, savecapture do? 13:56
jnthn pmurias: Gets hold of the argument capture passed to the current block. save commits to doing enough copying that the list is valid any amount of time, while use doesn't promise that. 14:00
(a future usecapture may invalidate it)
It's valid to implement them exactly the same way if there's no performance benefit to be had in a split.
The multi-dispatcher makes use of these. 14:01
masak FROGGS: probably. 14:02
FROGGS: I guess the big difference between supporters and detractors isn't "is it taking a long time?" -- which it is, objectively -- but "is it worth it?" 14:03
FROGGS I think Perl 6 is worth its time fwiw
jnthn The fact you're contributing does suggest so ;) 14:04
FROGGS :o) 14:07
well, I started to contribute in october last year, but I still think Perl 6 needs to take the years and years it took before 14:08
dalek p: ae34e49 | (Pawel Murias)++ | docs/opcodes.markdown:
Start documenting opcodes. Explanations taken from an irc explanation by jnthn++.

Could use some editing but it's better than nothing.
14:09
pmurias jnthn: ^^
timotimo hm, "opcodes"?
pmurias should be ops ;)
jnthn ^∵^ .oO( meow ) 14:10
pmurias as I mentioned in the commit log it could use some editing 14:10
jnthn I'm pretty sure the e shouldn't be after the . :P
dalek p: 05296fe | (Pawel Murias)++ | docs/op (2 files):
Rename the "operations" docs.
14:13
[Coke] pmurias++ # getting that doc started! 14:29
pmurias jnthn: pastie.org/8211657 - this test fails on nqp-parrot and passes on nqp-jvm 14:34
masak "When Python 3 finally gets released..." -- "Python 3 has already been released." -- stackoverflow.com/questions/170921/...m-python-3 14:37
so nice to see that problem occur in another community too! :)
mathw There's not really any questiona bout the releasedness of Python 3 I would have said 14:39
pmurias masak: the "Perl 6 has already been released multiple times" argument while technically correct seems a bit misleading 14:39
[Coke] scotsman - that's not a REAL release. 14:40
tadzik 'fcours not. 'tis just a person
[Coke] which, while normally a fallacy, still seems allowable in this context. 14:40
tadzik: (I was referring to the "true scotsman" logical fallacy) 14:41
tadzik I see 14:42
masak pmurias: yes. if someone seems intent on talking about "released" or "ready", the focus should instead be on what level of stability/polish that person associates with those concepts. 14:44
timotimo indeed, there isn't a "true scotsman" because what defines a scotsman is different for everybody in this case and nobody should assert global scotsman/nonscotsmanship 14:46
of course people will say "it's ready when it's good enough for everyone" and then someone will complain about the kitchen sink missing
jnthn Good job we did spec KitchenSink... 14:47
daxim my $ORK[-1] computer was named notruescotsman
[Coke] daxim++ 14:50
pmurias jnthn: have you seen my tests which find a bug in nqp::savecapture() on parrot?
pmurias jnthn: the bug illustrated pastie.org/8211737 14:54
masak today's autopun spotting: twitter.com/peterritchie/status/36...4353617920 14:55
daxim for the hackathon at yapc, I want to package rakudo-jvm and nqp-jvm, the bug I filed yesterday is one prereq github.com/perl6/nqp/issues/110 14:58
installations must work from system install targets, /usr/share/java and the like 14:59
jnthn pmurias: I'm confused, what is that void use of nqp::savecapture() doing? 15:02
pmurias: That is, I'm not sure it makes sense... 15:06
pmurias jnthn: if you comment the call to inner the bug remains 15:14
jnthn: what I wanted to illustrate is the nqp::savecapture saves the capture but only while the sub it was taken in is on the call stack 15:15
moritz r: constant a = 42; say (:a).perl; 15:16
camelia rakudo 07a57b: OUTPUT«"a" => Bool::True␤»
pmurias jnthn: the empty nqp::savecapture was meant to fetch a new capture
jnthn pmurias: OK,, that's...odd.
pmurias: Though, given we use it for multi-dispatch, perhaps not the end of the world... 15:17
pmurias hmm, it seems that something bad happens to the CallContext on parrot 15:19
FROGGS .oO( not the end of the $*W? )
pmurias jnthn: it could be reused somewhere, intentionally crippled to reduce memory use or we have a garbadge collector bug 15:26
jnthn: hopefully it's not the last things ;)
pmurias jnthn: the other suspicious thing is the comment in our op claims that CallContext is immutable, but it has a .clone method 15:27
jnthn: I could check if inserting a clone there fixes the bug 15:32
dalek p: c4d04bb | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/B (2 files):
Fix class loader visibility issue in JAR loading.
15:47
jnthn It ain't pretty but I just got a hello world SWT thing working: 6e5b82c4b70fd6592841 15:49
oops
gist.github.com/jnthn/6e5b82c4b70fd6592841
pmurias: Could, but...do we need to fix this?
pmurias we could skip the test on parrot 15:50
masak jnthn++ 15:51
jnthn It opens a GUI thingy :) 15:52
masak jnthn: it feels a bit redundant that SWTJAR has to be passed every time. also, it's the first time I see the :jar parameter.
pmurias jnthn: how should I determine if we are running on parrot in the nqp code?
jnthn pmurias: nqp::getcomp('nqp').backend.name maybe 15:53
masak: The colonpairs just get passed down to the module loader to interpret 15:54
jnthn masak: And just liek the Perl 6 one knows how to interpret (in theory) auth and ver, so the java one knows how to interpret :jar :) 15:54
masak: It's a bit redundant, but I don't immediately know what to do about it. Of course, you could find a way to include the thing in the default class path and then not need it. 15:55
timotimo jnthn: maybe something like "use lib" for jars? 15:56
"use jar 'D:\...'"
it's kind of the same principle, seems to me.
diakopter masak: segomos and ugexe showed me their new p6 package manager tool yesterday 15:57
timotimo why can you sometimes write just Text.new and sometimes you have to take the long way with the string? is that when there's exactly one candidate? 15:58
jnthn timotimo: Yeah
timotimo all right
jnthn timotimo: It's on my todo list to get something smart in place there.
masak diakopter: oh? those names are new to me, and I didn't know someone was working on a p6 package manager tool. 16:03
diakopter ditto, and me too
diakopter masak: oh, it's still a private repo 16:07
it has a server component too (rakudo-parrot, currently, but worse-than-dog slow, of course) 16:08
masak ok.
diakopter it's running at zef.pm
diakopter sorta 16:09
masak that page doesn't tell me much. 16:11
grondilu Is hash(%h.keys Z=> %h.values) guaranted to be the same as %h? 16:50
I mean does .values uses the same order as .keys?
jnthn Doesn't feel wise to rely on that. 16:51
grondilu ok
jnthn %h.pairs may be useful
masak I think the spec has some wording that guarantees it, yes. 16:59
as long as you don't mutate the hash in-between the calls, successive .keys and .values calls will yield the same order.
jnthn suspects it does work out on all implementations today, but would still be a little wary of writing it :) 17:01
Not least 'cus it creates two hash iterators going over the same thing :)
masak yes, that latter reason would make me suspect there's a better way to do it. 17:03
in the above case, %h.clone, for example.
grondilu to tell you everything, I was reading rosettacode.org/wiki/Probabilistic_...ce#Perl_6, and I thought about writing: %ps.keys Z=> [\+] %ps.values 17:13
that would be quite an elegant way to compute the cumulated probabilitie
s
grondilu rn: my %h = 'a'..'e' Z=> ^5; say .perl given hash %h.keys Z=> [\+] %h.values 17:15
camelia niecza v24-88-g1f87209: OUTPUT«{"a" => 0, "b" => 1, "c" => 3, "d" => 6, "e" => 10}.hash␤»
..rakudo 07a57b: OUTPUT«("a" => 0, "b" => 1, "c" => 3, "d" => 6, "e" => 10).hash␤»
dalek rlito: d02186c | (Flavio S. Glock)++ | / (5 files):
Perlito5 - js - '&subroutine' tests pass
17:23
grondilu rn: say .perl given map {$^w => $^n}, (^2 Z <foo bar>); 17:25
camelia rakudo 07a57b, niecza v24-88-g1f87209: OUTPUT«("foo" => 0, "bar" => 1).list␤»
grondilu expected this to fail: shouldn't number be on the right side of the zip? 17:26
timotimo n comes before w 17:27
rn: say .perl given map {$^a_w => $^b_n}, (^2 Z <foo bar>);
camelia rakudo 07a57b, niecza v24-88-g1f87209: OUTPUT«(0 => "foo", 1 => "bar").list␤»
grondilu oh I did not know alphabetic order matters
timotimo that's "the neat feature" for implicit signatures :) 17:28
grondilu can be useful indeed
timotimo for simple cases, R is always there for you as well 17:30
dalek rlito: bba555b | (Flavio S. Glock)++ | / (3 files):
Perlito5 - parser - error message
17:45
slava zwut00: how big is uc davis? 17:54
diakopter o_O 17:56
zwut00 slava: it takes about 20 minutes to walk from one side of campus to the other 17:57
masak sure, but it could still be very long and narrow. 17:57
zwut00 its about 7300 acres 17:58
Chat9593 Dao 17:59
Noæ
dalek rl6-roast-data: d36dba3 | coke++ | / (5 files):
today (automated commit)
kudo-star-daily: 7d2dd11 | coke++ | log/ (5 files):
today (automated commit)
Chat9593 2222212-55
diakopter Chat9593: bye bye
flussence yay it's keyboard cat!
masak hi keyboard cat! 18:01
masak oh, gone already. 18:02
geekosaur that showed up in #haskell yesterday. I'm wondering if there's a botnet c&c sleeper in these channels 18:04
never says anything, just listens for commands phrased as that noise from random ephemeral accounts
flussence no, it's just some stupid "free chat" phone app that apparently displays a list of channels from IRC networks sorted by user count 18:05
timotimo this channel has only .. oh wow, 210 isn't even that small 18:07
dalek kudo/use-from-java: 3ffc247 | jnthn++ | src/ (5 files):
Prepare for Rakudo-specific tweaks to JVM interop.
18:39
timotimo jnthn: i'm not sure why the data structure for poison information should be "like the current @!BLOCKS, but with a pointer to each block's parent"; when do we need to know a block's parent, but not have it readily available on the BLOCK stack? 19:02
jnthn timotimo: Just thinking if some transformations are going to happen once we decide they are safe, and at that point we may have poppoed the block off the stack... 19:04
timotimo hm, but when are we in a different block from the one we're trying to do the transformation on? at least for the "this container never gets poisoned by a bind" case that was my first use case for this it looks like it could just go through its children and afterwards have all the info it needs on hand 19:05
as in: the poison information is local to the block that has the poisoned lexical, not the block that poisons the lexical
jnthn Yes, but the assignments to tweak are all over the place. 19:06
timotimo i think the simplest thing i can start with is annotate each lexical with a flag that tells how far down the block stack it gets referred to
jnthn Which in *this* case doesn't matter.
But in other cases may
timotimo mhm, that makes sense
okay, need to go catch a tram now :) 19:08
dalek rlito: 174d943 | (Flavio S. Glock)++ | / (5 files):
Perlito5 - parser - declaration attributes
19:09
diakopter is it a tramedy or tramesty 19:11
timotimo a tramway car 19:21
geekosaur just trameling? 19:24
diakopter tramping about 19:25
lizmat allee, da's veel trammelant! 19:28
(flemish for: well, that's a lot of noise)
masak .oO( I think you're all just trolleying )
jnthn *groan* :P
diakopter do kmart and walmart use tramlaws and tramks? 19:29
jnthn r: module Foo { }; say Foo ~~ Foo 19:32
camelia rakudo 07a57b: OUTPUT«True␤»
dalek kudo-star-daily: 92bbc11 | coke++ | log/ (5 files):
today (automated commit)
19:35
[Coke] jnthn: ^^ are you aware of the zavolaj failure?
I think arnsholt was looking at it.
jnthn [Coke]: Hm, I thought the last one arnsholt++ was looking into got fixed? 19:36
dalek kudo/use-from-java: 381e7e6 | jnthn++ | / (4 files):
Give objects from Java a JavaHOW REPR.

This will enable us to get them to behave a bit 6ier.
19:37
kudo/use-from-java: b4c8f67 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
Objects from Java pretend to be Any and Mu.
rlito: c2716c0 | (Flavio S. Glock)++ | / (6 files):
Perlito5 - parser - subroutine attributes
19:39
[Coke] this one has been failing for a while.
diakopter 6ier.
timotimo jnthn: so i was thinking on the tram - as my internet connection died - that there may be trouble keeping the poison-information-blocks around if they only have parent-links and no child-lists 19:40
timotimo but if our transformations do things like inline blocks, these child infos could get out of sync, so i suppose it all should happen on several steps, globally 19:41
dalek p: b6257b3 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/BootJavaInterop.java:
Enable HOW computation to be overridden.
19:58
p: 9d33bb1 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/BootJavaInterop.java:
Decontainerize on marshal out of objects.

Means that we can use assignment as well as binding when using Java objects in Perl 6.
rlito: c2c07f3 | (Flavio S. Glock)++ | TODO-perlito5:
Perlito5 - TODO update
20:05
pmurias jnthn,masak: re keys and values order it's guaranteed by the spec 20:17
lizmat fwiw, there are several spectests depending on that behaviour as well, afaik
jnthn fairy nuff :) 20:22
timotimo how much improvement can be expected at all by turning lexicals into locals? 20:23
jnthn Potentially a lot
timotimo oh really? wow 20:24
jnthn However, it may not be completely trivial
timotimo my thoughts were: if there's only usages of the lexical from within the block it's declared in, it should be safe
jnthn Remember that lexicals can be declared to initialize the slot in a certain way, and locals don't support that yet.
timotimo oh, that was news to me 20:25
jnthn Yeah
That in theory doesn't affect doing it to native types, though, so you could just start there
timotimo "native type" means "i want this to be fast!" anyway, so that's a good starting point :P 20:26
since they are restricted in many ways already
pmurias jnthn: what I would like to have when I get round to optimising rakudo-js is to have dynamic variables marked in the AST 20:28
lexicals and locals don't make much difference for targeting js, as v8 handles lexical scopes 20:29
and one related TODO we should s/contextual/dynamic in QAST 20:31
timotimo can you tell me what "contvar" means? 20:31
as in: what's the difference between :decl<contvar> and :decl<var>?
pmurias I haven't encontered that yet 20:33
I would guess it's container var
timotimo i could also imagine that i can remove $_ and $/ in many pieces of code? 20:34
jnthn timotimo: cont is for container
timotimo: It means that we need to initialize a container in that slot
timotimo ah. that also means if it's decl(var) it's safe to turn into a local (given it's not used in any blocks further down the line) 20:36
slava moritz: will the next rakudo star use parrot 5.5?
lizmat travelling back home& 20:36
masak slava: yes, looks like. 20:38
slava: the NQP that Rakudo currently depends on already uses Parrot 5.5
pmurias timotimo: looking at the code the lexical declared as a contvar get's assigned a cloned copy of a value 20:39
timotimo: as opposed to a static which get's just a value
timotimo: re turning decl(var) into a local how do you determine if something is a dynamic variable? 20:40
pmurias timotimo: $_ and $/ are dynamic variables, so if there is a call to a unknown sub you can't remove them 20:42
timotimo: as the mysterious sub could be putting something into them using CALLER
dalek : 98becd8 | (Tobias Leich)++ | / (4 files):
add an implicit `is copy`-trait

This is needed when iterating over `keys %hash` for example. Honestly, I have no idea how on earth this was working before.
20:43
slava masak: ty
masak phz 20:44
timotimo oh, didn't see them defined as dynamic
pmurias in QAST everything is defined as dynamic 20:45
slava I assume threads in rakudo-parrot are still a bit off?
pmurias timotimo: but $_ and $/ are defined as dynamic in the spec 20:46
FROGGS slava: needs to be properly implemented, yes
slava: I played with parrot-threads the last week
timotimo ... everything is defined as dynamic? huh? 20:47
slava FROGGS: cool, I am definitely looking forward to threads :) 20:48
I am wondering what would happen if there were calls to pthreads the C library using NativeCall
FROGGS slava: we need to find out :o) 20:49
benabik You'd probably corrupt memory rather rapidly.
FROGGS I'm unable to predict anything when threads are involved, that is something I have learned several times 20:50
jnthn slava: If you want to play with threads in Rakudo, Rakudo on JVM is a better bet 20:55
timotimo oh wow. i see now that that's true 20:57
pmurias timotimo: well, nothing is defined as dynamic so we have to assume everything is ;) 20:59
jnthn It's not really a property of QAST itself, though 21:00
arnsholt slava: Terrible, terrible things, most likely
jnthn It's for the language optimizer to know what it can simplify
arnsholt Since the threads would trample each other's (Parrot) interpreter state
pmurias jnthn: the QAST represents 'my $foo is dynamic' and 'my $foo' the same 21:03
benabik is dynamic?
pmurias things like my $*foo 21:04
jnthn pmurias: yes, though "is dynamic" hasn't really been implemented yet :)
pmurias if a var doesn't have 'is dynamic' the compiler can hide it from CALLER
jnthn: we have $*foo 21:05
jnthn pmurias: Yes, I think those may end up marked as contextual in the QAST tree already 21:06
timotimo the more i try to move around, the more often i have to struggle against the constraints of NYI that rakudo puts on me :| 21:08
pmurias jnthn: how are those marked? 21:09
slava jnthn: tbh, I am not a giant proponent of the jvm. I spent 3 years support java webapps ... it is horrible 21:10
jnthn pmurias: contextual scope
pmurias jnthn: it's marked on access only 21:12
jnthn: we could look at the twigil but that sucks 21:13
timotimo if you, in theory, have to mark variables "is dynamic" to make them available to CALLER, it should be okay if the optimizer sometimes turns those variables unreachable, because you're relying on undefined behavior
[Coke] slava: one of the goals is to be able to implement perl6 web apps on the JVM>
timotimo or, rather, wrong behavior
[Coke] then you can support perl6 instead. :)
jnthn pmurias: Ah... I'm pretty sure the QAST emitter knows what the decl of a contextual is, so we could do it that way.
timotimo: It's a little stronger than that. In fact, we should not expose anything not dynamic through caller 21:14
timotimo: Which makes me suspect this info may want to be a flag in the container descriptor.
slava [Coke]: I am definitely looking forward to that
pmurias we *can* but do not *have* to expose anything not dynamic
[Coke] I would love to be able to rewrite some of my work projects in perl. especially the text munging ones. 21:15
slava [Coke]: I was thinking of having a perl container of sorts
pmurias hmm, I'm not so sure of that 21:16
jnthn: declaring them as 'contextual' in the decl node instead of 'lexical' would work 21:18
jnthn: what would be even better if we declared them as 'dynamic' ;)
sleep& 21:20
timotimo i guess i could look for how CALLER:: is handled and see if i can whip something very simple up for the time being 21:33
timotimo when a key isn't in a PseudoStash, it should give a message like "$key is not in pseudoers. This incident will be reported" 21:54
celesta good night #perl6 21:56
masak 'night, #perl6 22:11
FROGGS jnthn: how do I get the RPMCA of an array? I was hoping nqp::getattr($op[0], List, '$!items') does the trick when $op[0] is an array :/ 22:33
jnthn FROGGS: What if the array has lazy/unevaluated bits? 22:36
FROGGS boom? 22:37
say it has no such things, how would i get the RPMCA efficiently?
jnthn Well, the FLATTENABLE_ARRAY method will do it, iirc 22:38
FROGGS awesome, thanks 22:40
dalek kudo/nom: 572c45d | jnthn++ | src/vm/jvm/core/Threading.pm:
Generalize Promise a little.

They can still be about a piece of code, but it's now also possible to create an empty promise, which can either be kept or broken from the outside. Needs some extra error handling/safety work, but seems to do about the right thing.
22:51
kudo/nom: 6b386a7 | jnthn++ | src/vm/jvm/core/Threading.pm:
Fix off-by-one in threadpool growth handling.