»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:00 Araq joined 00:02 dedis0 left 00:03 kurahaupo left 00:07 Araq left 00:18 grondilu left
lue r: my %h = 1=>(2,3); for %h.keys -> $g {say "$g" for %h{$_};}; # bad warning message? 00:23
p6eval rakudo bf472b: OUTPUT«use of uninitialized variable $key of type Any in string context in block at /tmp/TPsjKo5l6M:1␤␤1␤» 00:24
00:25 huf joined
lue (really tripped me up considering $g was originally named $keys in my code and I couldn't figure out why rakudo seemed to be dropping the s) 00:26
00:27 larks left 00:31 larks joined 00:32 fgomez joined, thou left 00:36 Vlavv_ joined 00:39 fgomez left 00:57 whiteknight joined 01:00 fgomez joined
TimToady lue: um, what do you think is setting $_ anywhere? But yes, it seems to be a suboptimal leakage of implementation details into the error message 01:02
01:02 anuby joined
lue TimToady: The use of %h{$_} was an error on my part and I know that. I was complaining about the warning I got from it. 01:03
lue & 01:06
01:11 hypolin joined 01:22 stanley joined 01:48 grondilu joined
grondilu rn: say <1/3>.WHAT 01:48
p6eval niecza v22-36-g19fa03a: OUTPUT«Rat()␤»
..rakudo bf472b: OUTPUT«Str()␤» 01:49
grondilu ? Rakudo used to deal with Rat literals better than that.
rn: sub f(Rat $) {}; f <1/3>; 01:50
p6eval rakudo bf472b: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'f' will never work with argument types (str) (line 1)␤ Expected: :(Rat )␤»
..niecza v22-36-g19fa03a: ( no output )
02:13 larks left, larks joined 02:26 marloshouse_ joined 02:33 ifim left 02:36 kurahaupo joined 02:38 cognominal left 02:44 grondilu left 02:45 cognominal joined 02:56 gootle joined 02:57 whiteknight left 03:04 perigrin left, perigrin joined 03:24 cognominal left 03:29 PacoAir left 03:32 cognominal joined 03:40 cognominal_ joined 03:41 cognominal left, atrodo left 03:47 grondilu joined
grondilu why does parrot does not upgrade to 4.10.0 when I run 'perl Configure.pl --gen-parrot' ? 03:48
I'd like the new version because of '+ Fixed record separator bug on io handles' and I happen to have noticed this bug recently on this very channel 03:50
[Coke] because NQP is still pointing at 4.4 03:51
(see nqp's tools/build/PARROT_REVISION)
grondilu ok 03:54
[Coke] (so, if you bump that in your local copy of nqp, that'll let you test out the new version 04:00
grondilu yeah I did that. It's compiling right now 04:05
grondilu likes to have the very latest version of software 04:06
04:22 aindilis left 04:28 popl left
xenoterracide are there any convention for interface (e.g. like java interface) naming? 04:32
yet? 04:33
sorear Callable, Numeric, Positional, Associative, Stringy 04:34
they're all capitalized adjectives
04:35 cognominal__ joined
xenoterracide hmm 04:36
04:37 cognominal_ left
xenoterracide but what will happen for things outside of core I wonder 04:37
xenoterracide thinking about the Digest Interface
also I've decided I'm not fond of Top level naming outside of core 04:38
too much namespace pollution
I wonder if it would be bad to start a convetion of prefix Interface:: 04:39
04:39 HarryS joined
benabik I don't see a reason to separate them from their normal namespaces. 04:40
04:40 cognominal__ left, cognominal__ joined
xenoterracide well one reason would be so that interface would be separate from implementations 04:42
I don't know that it should be in /core/ but outside of core perhaps
xenoterracide shrugs 04:44
thinking outloud for opinions
also thinking of the context of what if p6 someday has as many modules as CPAN has now
I'd almost like to have top level namespace registry that things not core can't add to. so nobody ends up creating just Facebook.pm it'd have to be like WWW::Facebook 04:47
04:49 breinbaas joined
xenoterracide also is Digest.pm even needed in p6? all it is, is a factory 04:54
seems like supplying the Digest:: namespace interface is more important 04:55
lue xenoterracide: I'm not sure I see much of a threat in naming conflict by modules using top-level namespaces. Several CPAN modules do such a thing as well, notably CGI.pm . 04:57
04:57 perigrin left 04:58 perigrin joined
xenoterracide oh I'm not sure it's so much of a threat... as I do enjoy when there's a few top level namepsaces making things easy to find 04:58
04:59 kurahaupo left
TimToady I vote for "Fred" as a top-level namespace 04:59
lue thinks there are some modules that would only fit under NotCore::
xenoterracide: when you said: "I wonder if it would be bad to start a convetion of prefix Interface::", is "Interface" a literal or a placeholder? ("Interface" or $Interface ?) 05:00
xenoterracide lue: literal 05:01
grondilu yeah using parrot 4.10.0 did indeed fix the record separator issue while opening text files 05:02
05:03 hypolin left
xenoterracide TimToady: actually I had considered that perhaps usernames should also be tld, so XENO::Exception (is perhaps better than the Class::Exception Exception::Class Exception Exception::Base Throwable, etc that some area's of cpan have devolved to, esp for the uninformed consumer 05:04
TimToady username can already come into the identity via "auth"
benabik Rather than tying the developer's hands like that, didn't p6 extend use... right, auth.
lue Of course. One of about two things perl6 implementations still don't (really) handle yet concerning the use statment. (IIRC, the other is importing certain things from a module. "Arglist case of use NYI" or something like that) 05:06
benabik In S11, under Versioning
xenoterracide goes back to doing something that's productive 05:07
05:09 aindilis joined 05:11 hypolin joined 05:16 perigrin left 05:17 perigrin joined 05:24 perigrin left, perigrin joined 05:25 telex joined
diakopter xenoterracide: ouch? 05:28
05:28 kaleem joined 05:29 birdwindupbird joined 05:36 telex left 05:57 telex joined, GlitchMr joined 06:04 fgomez left 06:16 skids left 06:21 kurahaupo joined 06:23 fgomez joined 06:36 rurban_ joined 06:38 Tabrenus joined 06:54 araujo joined
xenoterracide diakopter: ouch? 06:58
07:10 Tabrenus left
xenoterracide how would I put in the method signature, requires a function be passed? 07:13
lue r: sub needsub(&code) { say "OK!"}; needsub(&say); needsub(&open); needsub(25); 07:19
p6eval rakudo bf472b: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'needsub' will never work with argument types (int) (line 1)␤ Expected: :(&code)␤»
lue r: sub needsub(&code) { say "OK!"}; needsub(&say); needsub(&open);
p6eval rakudo bf472b: OUTPUT«OK!␤OK!␤»
07:20 rurban_ left
lue xenoterracide: does that work? 07:24
07:27 cibs joined 07:48 Kharec joined, FROGGS joined
FROGGS good yawnin' 07:52
moritz \o 07:56
FROGGS: has anybody given you commit access to the rakudo repo?
FROGGS moritz: no, masak said I should submit the contributor license first, which I signed yesterday but need to send 07:57
moritz FROGGS: but without it, it'll be hard to make a release :-)
FROGGS moritz: no commit bit to nqp either
moritz I'll try to organize a commit bit for you 07:58
oh, nqp commit bit is easy to do
FROGGS k, I'll try to figure out the mail address to send the thingeny as a scan
moritz FROGGS: you now have nqp commit bit 07:59
*a
FROGGS or I just put it in real hardware mail when I go to work
cool, thanks
moritz pmichaud: ping 08:01
Su-Shee good morning everyone. 08:02
tadzik good morning
moritz \o Su-Shee, tadzik 08:03
FROGGS morning Su-Shee, tadzik 08:04
xenoterracide lue: possibly testing 08:07
08:09 domidumont joined 08:10 GlitchMr left
xenoterracide I have to use Role; before I can do does role? seems like something that does should imply 08:13
well I suppose use is loading the file
tadzik what happens if you try? :)
xenoterracide it complains
Unable to parse $*PKGDECL definition at line 6, near "does Diges" 08:14
moritz 'does' can't load the role for you
'does' is just a normal trait
and it works on the object it receives, not on some name 08:15
08:15 brrt joined
moritz but if the role isn't loaded, the name doesn't map to any object, so the trait can't work on it 08:16
xenoterracide right... 08:17
too much typing 08:18
too much typing of the same thing
although it honestly isn't exactly the same thing, in practice it's common class/role/module maps to file right now 08:19
would seem like it could try load from the file
moritz I just explained that it can't 08:20
xenoterracide well I suppose that I'll end up writing does ( require 'Role' ) or some suchness a lot 08:22
08:26 domidumont left 08:27 domidumont joined
xenoterracide multi method add( $data ) { ... } # so this is how I'd write for a required interface right? 08:33
sorear you don't need "multi"
moritz you'd write it without the multi
xenoterracide I did because I had 2 different signatures for that
sorear ok 08:34
in general, avoid multi if you only have one signature, because you're asking the runtime to do more work
xenoterracide but it doesn't throw any exceptions if the interface isn't iplemented
sorear: doesn't not using multi prevent extension?
sorear no 08:35
you can still override a non-multi method in subclasses
xenoterracide can I add another method as multi in a runtime applied role? or a subclass (as opposed to overriding) 08:36
sorear xenoterracide: can you paste an example of the code that fails to check for required methods?
xenoterracide also providing these doesn't cause any kind of exception if an actual implementation isn't provided
sorear xenoterracide: there should be a compile time erorr if an implementation isn't provided. *please* paste example code so we can find the bug 08:37
08:38 domidumont left
xenoterracide privatepaste.com/09eaa29e38 08:38
08:39 domidumont joined, am0c is now known as wake, wake is now known as am0c
sorear oh... I see what's going on 08:39
{ ... } allows you to require a *name*
trying to require multis isn't going to fly
you're treating multis as if they were the same as Java/C# method overloads 08:40
xenoterracide seems like the right idea? and the obvious thing?
sorear they're not.
xenoterracide why? 08:41
sorear because dynamic typing
xenoterracide this is a good thing? 08:42
p6 seems a little less dynamic
sorear some people like it, some don't, and some don't care
p6 is a little less dynamic, but mostly with subs
xenoterracide it seems that since everything is an object that the types are more or less some kind of static. 08:43
sorear with methods, the reality of subclassing makes it impossible for the compiler to resolve method calls at compile time
xenoterracide though I am probably an idiot
wait so why would it work if they weren't multi 08:44
sorear rakudo and niecza track requiredness at the granularity of "Digester requires 'digest' and 'add'"
multi signatures... because of constraints, they can't be compared in general 08:45
so we aren't sure what it would mean to require one
xenoterracide compare the 2 signatures? 08:46
sorear if you had "multi method foo(Int $x where * > 0) { ... }", would "multi method foo(Int $y where * >= 1) { }" match it?
xenoterracide or perhaps even if ... just literally translate to add or digest
I'd say no
they are not exactly equivalent 08:47
sorear what if the spacing or paretheses are different?
where do you draw the line?
xenoterracide at some point does it get normalized? 08:48
like when it hits bytecode
FROGGS moritz: going to mail office now...
see ya'all at work
xenoterracide I would think if they compile to the same bytecode they are the same 08:49
sorear multis tend to work exactly as if you made a single giant method that looked at its argument types and decided which block of code to run
08:49 FROGGS left
arnsholt xenoterracide: The where constraints are essentially small programs. Thus, deciding which of two constraints is more specific is an undecidable problem in the general case 08:49
xenoterracide hmm 08:50
sorear xenoterracide: I'm fearful of introducing anything that would depend on compiler fine details, e.g. constant folding changing 2+2 into 4
arnsholt Which means that it's a good idea to not try to be too clever, since it's bound to break horribly
sorear because then it's too easy to write unportable code
and when we change the file details we might break stuff
xenoterracide hmm... well like I said I'm probably an idiot
but at some point it seems like your going to have unobvious behavior 08:51
sorear we're all idiots here...
I'm sure there's an obvious and easy solution that I'm just too stupid to find :D 08:52
xenoterracide is the where clause the biggest problem? or are there a bunch of other things in the signature?
only asking because if it were me I'd simply compare the std parts of the arguments, types and variables 08:53
ignore any where's and document that 08:54
sorear could work. still makes me uneasy because of liskov 08:55
xenoterracide explain
I'm probably missing something
sorear if an implementation has more constraints than the role, it doesn't really implement the requirements
moritz crippling a tool to prevent possible unobvious behavior isn't a good idea 08:56
sorear o/ moritz
also, xenoterracide, nitpick on terminolgy 08:57
we use "argument" to mean the actual runtime value
the thing inside the signature is called a "parameter"
xenoterracide I'm not sure the current isn't crippled in some way? if you can't enforce the method signature then you aren't really enforcing an interface, just because 2 objects do 'add' doesn't mean it'll work, you can end up with an implementation that has only a similar interface 08:58
ok, I'll try to remember that
sorear yes, I agree the current way is bad 08:59
I don't want to change it to another bad way, because people will confuse change for progress and think it works
xenoterracide hmm 09:00
09:00 kresike joined
kresike hello all you happy perl6 people 09:01
xenoterracide how do multi methods know between 2 different where's now?
how does it figure that out?
sorear they don't 09:02
09:02 wamba joined
sorear there is nothing in current perl 6 which relies on detecting if two signatures are the same 09:02
lue blog post (and a picturesque one too)! rdstar.wordpress.com/2012/11/22/th...partially/ 09:03
lue --sleep & 09:04
xenoterracide sorear: so... if you have 2 signatures with the only difference being the where clause it chooses at random?
sorear xenoterracide: no, it tries all of them and if more than one succeeds, it picks the first 09:05
for cases other than where clauses, multiple success is an error
it keeps a list of all definitions 09:06
no attempt is made to detect duplicates in the list
xenoterracide this where clause is almost starting to sound like a badish idea for being part of the signature
I'm just saying it sounds slow, and like it may cause unexpected behavior 09:07
09:08 xinming joined
xenoterracide I think if it were me I'd consider taking the where clause out of the signature and make it illegal to have 2 multi methods that differ only in where's 09:08
sorear xenoterracide: you seem to be under the impression that methods are stored in a hash indexed by name+signature 09:09
xenoterracide not necessarily under that impression but sound efficient 09:10
sounds*
sorear that's not how it works.
xenoterracide how's it work? if you don't mind my asking
I don't want to take up too much time
sorear when you have multi methods, a "dispatcher" method is created to wrap them 09:11
the method dispatch table is hashed only on name. for normal methods it goes directly to your code, for multis it goes to the dispatcher
the dispatcher keeps a list of all the registered candidates
when called, it (abstractly) tries them all and invokes the first that works 09:12
brrt sorear...
sorear when where-clauses aren't used, this system can be optimized to use tables in the second pass
brrt could we make a hash of type signatures?
i.e, signature types
sorear brrt: suppose the runtime value is 5. do you look under (Int), (Real), (Any), (Numeric), (Mu), or (Cool) ? 09:13
diakopter well, it wouldn't catch inherited
xenoterracide hmm 09:15
09:17 orafu joined
brrt sorear, so, no :-) 09:17
sorear C++, C#, Java, and P6 use essentially the same algorithm for this... 09:18
09:18 fhelmberger joined
sorear except that one of those does it using runtime types in the dispatcher, while the other three do it in the compiler using declared types 09:18
maybe there is room for using gradual types in p6 to compile-time-resolve method lookups; that's something I want to explore 09:19
xenoterracide sorear: ok so lets say that we still have to do runtime try its... is there any reason though that we couldn't disallow the situation of the signature only differing in where's and compile time check signatures on that. 09:21
that would allow compiletime muli method signature checks
also wouldn't the runtime check for an exact type first? meaning it 5 is an Int then it'll match Int 09:22
sorear xenoterracide: because having computational dispatch is occasionally useful 09:23
xenoterracide I'm worried about the often idiot
09:23 FROGGS joined
xenoterracide this seems like something that the not yet invented Perl6::Critic is going to complain aobut 09:24
I like powerful things 09:25
which is why I like multimethods
sorear subtypes and constants both generate constraints internally
xenoterracide but it seems like if I had to trade the occasionally powerful for the strict interfaces
the interfaces would win... the are more useful... though of course it's possible this is simply not a possibility. 09:27
sorear: thanks for explaining it all to me though
brrt i think you can do compile-time multi signature checking
not sure about niecza, but it should be (relatively) doable in NQP 09:28
the 'problem' or difficulty is mostly about the cases when you can't
i.e. runtime-construction of parcel, sent to a multi 09:29
or, 'unknown object passed in', that is also a popular one
and i'm not sure whether compile-time-type-tracing is very realistic 09:30
sorear brrt: we have no ability to trace types negatively.
brrt run time type tracing is, however; going the v8 route
sorear, why not?
sorear given 'my Int $x', $x might actually contain an object which multiply inherits from Array and Int 09:31
so we cannot statically rule out the possibility that $x could match an Array parameter
brrt you know based on assignment what types it will take
unless, well, you don't 09:32
sorear you don't know that until CHECK time
and eval screws with everything
brrt yes, eval does
so runtime tracing and speculative optimisation is the only way to go? 09:33
moritz you can know if you close the Array and Int classes
sorear moritz: not legal until CHECK time
brrt wait, good point, how is augment implemented anyway?
09:33 cognominal__ left
sorear brrt: Evil. 09:34
brrt thought p6 classes were closed
sorear p6 classes are open during parse and closed at CHECK time *if* there is a use oo :closed; declaration in the main program
if there is no such declaration, they stay open forever 09:35
brrt well, what about doing it the other way arround
sorear also this is only the main program. modules, including the setting, are not allowed to close classes under any circumstance
brrt what, why not?
xenoterracide close classes?
sorear because S12 says so.
and I don't want to step on the toes of whoever wrote that into S12 09:36
I bet it was Larry
brrt well, this is a language in design isn't it
sorear not really
the spec has been quasi-frozen for about a year 09:37
brrt hmm
sorear nothing changes these days without a *huge* fight
moritz well, discussing it doesn't imply stepping onto any toes
sorear: I can't quite agree
brrt there is a way arround this
moritz sorear: we've had major changes to S16 without much fights
brrt instead of 'opening the class' and making it all writable and stuff
we can also - in the scope of those that implement it - replace the symbol to a class with a derived one 09:38
augment Foo { } would then mean, 'create a class extending Foo, and place it as a lexical called Foo' 09:39
09:39 PacoAir joined
xenoterracide oh this is nice 09:39
sorear brrt: you can already do 'my class Foo is OUTER::Foo { ... }'
xenoterracide so if you do method foo { ... } it'll require
but of course multi method foo { ... } can't satisfy
brrt sorear, that is quite enough for augmenting, isn't it? 09:40
sorear brrt: your proposed change would be useless for everything I currently use augment for
brrt ok, where do you use augment for?
sorear augment class Any { method to_json() { ... } }; say 5.to_json
that kind of thing
09:40 kaleem left
xenoterracide basically like moose p6 compile time method checking is useless 09:41
brrt i don't think it does
xenoterracide because the only way to do it is with single methods and then if the implementer chooses to want multimethods they can't 09:42
moritz doesn't quite understand that argument
sorear xenoterracide: multimethods are not part of the public API of a class
brrt because i have just installed a new Any lexically
sorear xenoterracide: the user of a class does not know whether it is implemented using multimethods or regular methods
brrt 5 -> Int -> … -> My Lexical Any -> Real Any -> … -> Mu
moritz augmenting isn't lexical
09:42 cosimo joined
brrt it should be 09:42
:-) 09:43
moritz if you want something lexical, just use a sub
sorear it would be useless if it were. reread what I wrote
moritz if you want code available in a lexical scope, a subroutine is exactly the right tool for the job
09:43 kaleem joined
xenoterracide privatepaste.com/928e3e83a6 09:44
brrt hmm
xenoterracide that throws an exception 09:45
09:45 sqirrel joined
xenoterracide Method 'add' must be implemented by Digest::Test because it is required by a role 09:45
brrt i guess you are right in a way
moritz xenoterracide: in the implementing class, write proto method add(|) {*} and then your multi candidate(s) 09:46
FROGGS does somebody get these fails too? smolder.parrot.org/app/projects/rep...ails/32410
t/spec/S32-io/IO-Socket-INET.t
moritz FROGGS: yes 09:47
FROGGS hmm, I dont
dalek rlito: 589722e | (Flavio S. Glock)++ | / (6 files):
Perlito5 - js2 - fix context in method calls
moritz I don't get them with newest parrot
FROGGS: comment out the file in t/spectest.data for the release
FROGGS k
xenoterracide moritz:
Cannot call 'add'; none of these signatures match:
FROGGS IMO I still use parrot 4.4.0
xenoterracide oh wait 09:48
right because the signatures doesn't include any
FROGGS: why is it your opinion? 09:50
FROGGS because I wasnt sure, now (after looking) I am ;o)
ohh, maybe I dont get this error because my parrot wasnt compiled against libISU 09:52
ICU
xenoterracide so the spec is functionally frozen until ... what? a working implementation? just in general
moritz it's not functionally frozen
FROGGS I believe a spec is never frozen 09:53
diakopter never frozen *for you*. other people perceive frozen specs all the time
xenoterracide specs should freeze at some point, but then unfreeze later 09:54
anyways, privatepaste.com/928e3e83a6 back to this, does this seem like a sane preliminary interface for Digest? just wondering if I'm on the right-ish track, if anyone has feedback 09:57
09:58 dakkar joined
diakopter I don't know about the API, but I like the loading/instantiating thing. /me learned something new 09:59
^ literally means "don't know", as in "no thoughts/opinion" :) 10:00
xenoterracide well I'm mostly stealing the API from the current digest, but I was trying to implement a strict interface module in digester for digest implementers 10:01
10:02 cosimo left
xenoterracide diakopter: I aim impatiently awaiting the ( require $module ).new syntax that should be coming 10:02
diakopter does it work if you make it say my Digester $impl 10:03
xenoterracide probably not, can you use role's that way? 10:04
diakopter I thought you could
xenoterracide maybe it does? idk still experimenting
10:06 telex left
xenoterracide diakopter: I guess in theory that should work ultimately, I need to do a role check in the constructor 10:07
10:08 telex joined, hypolin left 10:17 anuby left
xenoterracide diakopter: yeah it works 10:17
now where was that doc on specifying a return type in the method sig 10:21
sorear has Int method foo() { } 10:25
method foo(--> Int) { }
these are identical
don't let the placement of parens mislead you
moritz method foo() returns Int { } 10:27
10:27 rindolf joined
xenoterracide hmm... tried that last, let me guess, no bueno multi? 10:28
sorear no return type overloading if that's what you mean...
diakopter r: class A { has Int method foo(--> Int) { } }
p6eval rakudo bf472b: ( no output )
10:29 PacoAir left
xenoterracide I just meant syntax, it's been complaining for me 10:29
sorear how are you trying?
diakopter r: class A { has Str method foo(--> Int) { } }
p6eval rakudo bf472b: ( no output )
xenoterracide sorear: oh nvm I figured it out, I was forgetting to use the role in the class 10:30
diakopter r: class A { has Str method foo(--> Int) { return "hi" } }; say A.foo 10:31
p6eval rakudo bf472b: OUTPUT«Type check failed for return value; expected 'Int' but got 'Str'␤ in method foo at /tmp/XV4UgBdCA9:1␤ in block at /tmp/XV4UgBdCA9:1␤␤»
diakopter r: class A { has Int method foo() { return "hi" } }; say A.foo
p6eval rakudo bf472b: OUTPUT«hi␤»
10:32 PacoAir joined
diakopter phenny: ask masak see VBBHREUVND in the blockag. bug? has Int method 10:33
phenny diakopter: I'll pass that on when masak is around.
xenoterracide I <3 .method and then constantly type ->method, wishing for error to say... no this is not perl5 10:35
which it basically does
diakopter std: Int->foo
p6eval std d38bbd0: OUTPUT«===SORRY!===␤Unsupported use of -> as postfix; in Perl 6 please use either . to call a method, or whitespace to delimit a pointy block at /tmp/fTk7_Mcwr1 line 1:␤------> Int->⏏foo␤Parse failed␤FAILED 00:00 41m␤»
xenoterracide r: die "{ &?ROUTINE.name } unimplemented" 10:37
p6eval rakudo bf472b: OUTPUT«No such method 'name' for invocant of type 'Nil'␤ in block at /tmp/6fnuwT1JUi:1␤␤»
xenoterracide aww
lol
moritz you're not inside a routine there
xenoterracide yeah guess not, 10:38
anyways, love that bit
not having to hardcode the name ftw 10:40
moritz aye, that's quite neat 10:43
xenoterracide die "{ self.WHAT }.{ &?ROUTINE.name } unimplemented"; 10:44
use of uninitialized value of type Digest::Test in string context in method digest at lib/Digester.pm6:12 10:45
weird
seems to be failing on the call to WHAT
arnsholt xenoterracide: self.WHAT will be the type object, which is the typed undef of the class
xenoterracide oh 10:46
moritz try self.^name instead
xenoterracide ok
10:47 colomon joined
xenoterracide yeah that's better, thanks 10:47
10:49 colomon_ joined, colomon left, colomon_ is now known as colomon
xenoterracide ok, next silly question of the day.. why is it &?ROUTINE what's the ? and why is it all caps? trying to figure out if there's a rhyme or reason to when I can expect instrospection things to be caps and not 11:04
FROGGS its all caps because it is some magic constant like __PACKAGE__ was
sorear and the ? is called a twigil 11:05
FROGGS perl6.wikia.com/wiki/Twigil
sorear wikia? seriously?
FROGGS dunno, first hit
11:05 Su-Shee_ joined
FROGGS perlcabal.org/syn/Differences.html#...e_a_twigil <--- better? 11:06
$?foo compiler hint variable
$*foo dynamically overridable global variable
...
its interesting what you learn about p5 when reading p6 spec 11:07
"Unlike in Perl 5, you may no longer put whitespace between a sigil and its following name or construct."
I didnt know that
xenoterracide speaking of hits... they seem to be hit or miss... is there a good way to search for things in p6 that anyone is aware of? 11:08
sorear FROGGS: did you know that the first character of a variable name in perl 5 can be literally any non-whitespace?
xenoterracide or am I just needing to learn my way around the spec better
sorear eval: $ 11:09
buubot_backup sorear: linux
FROGGS sorear: ya, thats why/how they added all these magic vars
so if "they" can, you can too ;o)
but I prefer varnames that match \w
okay, that t/spec/S32-io/IO-Socket-INET.t fail wasnt about libICU... 11:10
11:11 cosimo joined
xenoterracide thinks I would actually prefer &?SUB to &?ROUTINE. has anyone ever talked about changing the name to more closely translate to what 5.16 picked up? 11:13
moritz a method is a not a sub, but appears in &?ROUTINE 11:14
11:15 cognominal joined
FROGGS thats what I thought too, so &?SUB would lead you in the wrong direction 11:16
11:16 wamba left
xenoterracide sub is short for subroutine? a function is not a subroutine? not sure I really see a distinction 11:16
in this context anyways 11:17
sorear p6: say Method ~~ Sub
p6eval rakudo bf472b, niecza v22-36-g19fa03a: OUTPUT«False␤»
sorear it's a very technical nitpicky point 11:18
but the name "Sub" is already taken in perl 6
moritz xenoterracide: doc.perl6.org/images/type-graph-Routine.svg
sorear the common superclass of Sub and Method is Routine
moritz rn: say Submethod ~~ Method 11:19
p6eval rakudo bf472b, niecza v22-36-g19fa03a: OUTPUT«False␤»
xenoterracide also wonders why pretty diagrams are not UML but that's really a strawman
ok, I surrender on the routine bit 11:20
11:21 cognominal left
brrt any polish people here? 11:22
what is the polish word for polish
11:22 cread joined
sorear polski 11:23
FROGGS is
brrt thanks
should've known
FROGGS what?
bbkr brrt: I'm from Poland too 11:24
FROGGS sorear: I'm not, Woody is, and tadzik afaict
11:24 cread left
moritz tadzik and glitchmr, iirc 11:24
brrt what polish was in polish :-)
nice, good community
tipdbmp or translate.google.com? =)
brrt is not always reliable
tipdbmp works for polish
moritz phenny: en pl "Polish"?
phenny moritz: "polski" (en to pl, translate.google.com)
moritz yes, it does
FROGGS phenny: de en "Rabenmutter" 11:26
moritz phenny: de en "Rabenmutter"?
phenny moritz: "Rabenmutter" (de to en, translate.google.com)
FROGGS O.o
tipdbmp Bad mother?
FROGGS right 11:27
german invention
moritz though ravens have a reputation of being good at parenting
tipdbmp A friend has a bot that does this as well.
moritz why do most cache modules in perl have that stupid get/set interface? 11:29
11:29 cognominal joined
moritz for me, the most intuitive interface would be $cache->get($key, $coderef) 11:29
sorear tipdbmp: google translate is especially unreliable with proper names of languages and cities
tipdbmp =) 11:30
sorear tipdbmp: because it works by correlating the contents of documents, and names of languages and cities tend to be in mismatched metadata
jnthn tells once of Google Translate "translating" Bratislava into Prague
moritz right; most translation services have that problem, because most rely on machine learning
sorear anyhoo 11:31
sleep&
moritz godd sleep&, sorear
xenoterracide moritz: CHI has the compute thing 11:33
although not sure why you might want a different coderef each time
moritz is it important if it's a different coderef or not? 11:34
xenoterracide I suppose not, just that the interface you propose makes most sense if you wanted to change it on the fly instead of setting it once somewhere
11:36 wamba joined
diakopter eval: $* 11:36
buubot_backup diakopter: No output.
diakopter eval: $**
buubot_backup diakopter: ERROR: syntax error at (eval 20) line 2, at EOF
11:37 brrt left
moritz eval: my $x = 3; "$ x" 11:37
buubot_backup moritz: 3
moritz that's still one of my favorite p5 misfeatures 11:38
FROGGS ya, nobody should put whitespaces there
unreadable++
xenoterracide Now: $self.$method() # hard ref Now: $self."$method"() # symbolic ref 11:39
what's the difference?
moritz the quotes
kresike :)
xenoterracide but what do the quotes do 11:40
in this context
moritz they tell you that $method contains a method *name*
without the quotes, the compiler will assume that $method contains a code object
xenoterracide oh 11:41
ok
dalek ast: 3c2dc0e | (Tobias Leich)++ | S32-io/IO-Socket-INET.t:
RT #115862, skipping multibyte tests for release

After release with parrot 4.4.0 and upgrade to newer parrot these tests should work fine.
  rt.perl.org/rt3/Ticket/Display.html?id=115862
11:43
11:43 gootle left 11:44 daniel-s joined 11:51 sisar joined 11:54 Su-Shee_ is now known as Su-Shee 12:04 brrt joined 12:17 geekosaur left, geekosaur joined 12:18 mikemol joined 12:23 rindolf left 12:24 cognominal left, sftp joined 12:25 replore joined 12:28 cognominal joined 12:29 rindolf joined 12:34 jaldhar joined 12:35 cognominal left 12:36 Psyche^ joined 12:38 GlitchMr joined, immortal joined, immortal left, immortal joined
tipdbmp No more v80.101.114.108.32.53 (v-strings)? 12:38
12:39 Psyche^ is now known as Patterner, erkan left
moritz r: say v1.0.1 12:40
p6eval rakudo bf472b: OUTPUT«v1.0.1␤»
moritz tipdbmp: we have version literals, but not v-strings
12:42 cognominal joined
tipdbmp Okay. 12:42
12:46 jaldhar left
moritz eval: v0.1.2 12:48
buubot_backup moritz: \0
12:50 jaldhar joined 13:02 cognominal left 13:11 spider-mario joined 13:21 cedrvint joined
cedrvint hello #perl6 13:21
r: gist.github.com/4131134
p6eval rakudo bf472b: OUTPUT«===SORRY!===␤Confused␤at /tmp/w1LVJl2Njc:1␤»
cedrvint r: class Class { has $.attr; method attr() { !!! } }; Class.new(:attr(1)); 13:22
p6eval rakudo bf472b: ( no output )
cedrvint the !!! stub isn't called. Is it expected? (note: it is called in the REPL) 13:23
13:25 SamuraiJack joined
moritz cedrvint: yes, it's expected 13:27
cedrvint: it's called in the REPL because the REPL tries to print the object, and thus accesses the attribute accessor
cedrvint: but construction binds the attributes directly, and doesn't call the accessor 13:28
doc.perl6.org/language/objects#Obje...nstruction 13:29
13:32 kaleem left 13:37 rvchangue joined
cedrvint moritz: thanks! 13:37
13:38 dayangkun joined, dayangkun left 13:39 Kharec left 13:48 Kharec joined 14:01 gv joined 14:14 fgomez left, kaleem joined, gv left 14:15 gv joined, kaleem left 14:17 benabik left 14:23 fgomez joined 14:31 benabik joined 14:39 dakkar left 14:41 FROGGS left
dalek rlito: b371c5d | (Flavio S. Glock)++ | / (10 files):
Perlito5 - js - AUTOLOAD finished; add tests; workaround for broken bootstrap in 589722e
14:42
14:51 benabik left 14:53 rurban_ joined 15:08 birdwindupbird left 15:10 gv left
masak quick question: does C support closures in any form? 15:11
phenny masak: 10:33Z <diakopter> ask masak see VBBHREUVND in the blockag. bug? has Int method
hoelzro masak: standard C, no; I think that some compilers support nested functions, however
geekosaur actually I think the very latest C standard does have something 15:13
hoelzro geekosaur: the latest? as in C 99?
hoelzro isn't aware of a newer one
15:13 replore left
hoelzro holy crap, there's a C11 15:14
did not know that.
I don't see anything about it in C99 or C11, though 15:15
geekosaur oh, I see, it's only in c++11, not c11 15:16
15:19 replore joined 15:20 rindolf left
masak my general impression from searching ze veb is that it's not possible. 15:22
15:22 rindolf joined
masak there's some lua documentation that says it is, but I think it's them faking it somehow. 15:22
hoelzro masak: which Lua documentation? 15:23
15:23 colomon left
masak pgl.yoyo.org/luai/i/3.4+C+Closures 15:23
hoelzro oh, that's because those are C functions encapsulated in a Lua object
you can take a C function and associate a context with it, so with Lua calls it as a function, it may access that context 15:24
it's a Lua construct rather than a C one
cedrvint masak: "nested functions" is a GCC extension (for instance LLVM doesn't support it) 15:26
15:27 Chillance joined
masak aha. 15:28
15:30 am0c left
cedrvint masak: an example of nested function: github.com/cedric-vincent/PRoot/bl...elf.c#L357 15:31
spider-mario I believe LLVM has its own nested functions, does it not? 15:34
or maybe not 15:35
15:35 FROGGS_ joined
cedrvint at least the CLang front-end doesn't support it: clang.llvm.org/docs/UsersManual.htm...unimpl_gcc 15:36
hoelzro wouldn't that be up to clang rather than LLVM?
FROGGS_ moritz: hi, any news from pmichaud?
masak cedrvint: thank you. 15:37
15:37 kurahaupo1 joined 15:39 kurahaupo left 15:45 cognominal joined 15:46 daxim joined 15:47 cedrvint left 15:59 skids joined 16:03 pmurias joined 16:07 kurahaupo1 left 16:20 bowtie joined
kresike bye folks 16:21
16:21 kresike left
pmurias hi 16:25
16:26 kurahaupo joined 16:28 brrt left 16:32 kaare_ joined 16:49 rindolf left 16:54 domidumont left, colomon joined 16:56 cognominal left
moritz FROGGS_: no :( 16:57
FROGGS_: I'm afraid you have to do the release in a branch, and I'll merge the stuff over and do the upload for you
16:59 cognominal joined 17:02 cread joined, fhelmberger left
FROGGS_ moritz: in a fork you mean 17:12
moritz: do tags play with pull requests? 17:13
moritz FROGGS_: yes, fork 17:21
FROGGS_: I have no idea (re tags)
FROGGS_: you can just give me the commands to copy&paste
FROGGS_ k, we'll see and learn 17:22
k
17:25 mikemol left 17:27 MayDaniel joined
pmurias nqp: for <abc> {print("[$_]");} 17:45
p6eval nqp: OUTPUT«[a][b][c]»
pmurias jnthn: ^^ is this a bug?
moritz nqp: for 'abc' { say($_) } 17:48
p6eval nqp: OUTPUT«a␤b␤c␤»
moritz pmurias: it seems that iterating a string simply iterates over characters in parrot 17:49
pmurias rakudo: for 'abc' { say($_) } 17:50
p6eval rakudo bf472b: OUTPUT«abc␤»
pmurias rakudo: for <abc> { say($_) }
p6eval rakudo bf472b: OUTPUT«abc␤»
pmurias moritz: the thing that looks like a bug is that <abc> return 'abc' not a list 17:51
moritz nr: say <abc>.WHAT
p6eval rakudo bf472b, niecza v22-36-g19fa03a: OUTPUT«Str()␤»
moritz pmurias: no, it's a feature 17:52
sergot hi o/ !
moritz \o sergot
17:53 fgomez left 17:54 cognominal left 17:56 domidumont joined, cognominal joined 17:58 gv joined
pmurias moritz: I need to learn more Perl6 instead of implementing parts of it ;) 17:58
moritz pmurias: :-) 17:59
17:59 jerome joined, Shozan is now known as SHODAN 18:02 kurahaupo left
__sri wonders what parrot supporting threads will mean for rakudo 18:02
if i read this correctly 4.11 will be a very important release :) www.xray.mpe.mpg.de/mailing-lists/p...00814.html 18:03
18:10 replore left
grondilu r: say %*SIG.perl 18:11
p6eval rakudo bf472b: OUTPUT«Failure.new(exception => X::AdHoc.new(payload => "Dynamic variable \%*SIG not found"))␤»
GlitchMr perl6: try { fail 'abc' ; CATCH { print 'lol' } } 18:12
p6eval rakudo bf472b: ( no output )
..niecza v22-36-g19fa03a: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'fail' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1437 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37) ␤ at /hom…
18:22 thou joined 18:23 FROGGS joined
FROGGS FROGGS_: go away 18:24
18:24 FROGGS_ left 18:32 Kharec left 18:38 gv left 18:44 leont joined
masak good morning, #perl6 ;) 18:52
18:53 cognominal left
skids o/ 18:55
diakopter masak: ahoy
japhb Hi, all! 18:56
19:03 pmurias left 19:12 immortal left
masak lue++ # rdstar.files.wordpress.com/2012/11/core_fdp.png 19:12
19:12 erkan joined, erkan left, erkan joined
masak this diagram made me realize that Rakudo's CORE is mostly made of exception types. :P 19:12
19:17 SmokeMachine joined
masak [backlog] I also can't quite agree about "the spec has been quasi-frozen for about a year" 19:17
some parts of the spec have been essentially frozen for far longer than that.
other parts are liquid, and even if they haven't changed recently, we expect them to. 19:18
there's a pending threads/events flurry coming up at some point, for instance.
and S19 needs to be aligned with actual reality. 19:19
19:20 spider-mario left
masak there's been 241 commits to the spec in 2012. 19:21
many, many of these changes are minor fixes, yes. some are not.
FROGGS thats I meant to say, things that need tweaks or things that are broken by design(tm) need to be fixed, other things are better untouched (aka frozen) 19:23
masak r: class A { has Str method foo(--> Int) { return "hi" } }; say A.foo 19:24
p6eval rakudo bf472b: OUTPUT«Type check failed for return value; expected 'Int' but got 'Str'␤ in method foo at /tmp/i3D9GBxEy9:1␤ in block at /tmp/i3D9GBxEy9:1␤␤»
masak r: class A { has Int method foo() { return "hi" } }; say A.foo
p6eval rakudo bf472b: OUTPUT«hi␤»
masak diakopter: yes, I think that's a bug.
let me check with spec.
looks like. 19:25
masak submits rakudobug
TimToady I can quasi-agree that the spec is quasi-frozen. :) 19:26
masak quasi-heh. :) 19:28
diakopter -modo 19:29
masak r: sub foo(--> Int) { return "hi" }; say foo 19:30
p6eval rakudo bf472b: OUTPUT«Type check failed for return value; expected 'Int' but got 'Str'␤ in sub foo at /tmp/nd3689ED29:1␤ in block at /tmp/nd3689ED29:1␤␤»
masak r: my Int sub foo { return "hi" }; say foo 19:31
p6eval rakudo bf472b: OUTPUT«Type check failed for return value; expected 'Int' but got 'Str'␤ in sub foo at /tmp/R5jvMWiMIR:1␤ in block at /tmp/R5jvMWiMIR:1␤␤»
19:31 Targen joined 19:33 Targen left
diakopter masak++ 19:35
masak**=masak
masak .oO( but what if I'm 0... ) :P 19:36
colomon masak: he ++'d you first, so unless you started negative... 19:37
TimToady make that 242
dalek ecs: 6d862fd | larry++ | S12-objects.pod:
oo final/closed pragma can also be deduced
diakopter can monkey patching in a string eval affect things in outer scopes? 19:38
TimToady depends on what you mean by "outer"
eval cannot change lexical scopes
buubot_backup TimToady: ERROR: Can't locate object method "lexical" via package "scopes" (perhaps you forgot to load "scopes"?) at (eval 20) line 1.
TimToady er, right 19:39
monkey typing is about changing classes
but recall that we keep a quasi-strict separation between lexical dispatch and object dispatch
diakopter ok, I meant can it change classes existing before the eval 19:40
TimToady sure
it wouldn't be monkey-typing if you weren't monkeying with things that were already there
diakopter does monkey have to be enabled before the eval?
masak r: class C {}; eval 'use MONKEY_TYPING; augment class C { method foo { say "OH HAI" } }'; C.new.foo 19:41
p6eval rakudo bf472b: OUTPUT«OH HAI␤»
rurban_ __sri: parrot 4.11 is not important. It is important that npq will be fixed to become thread-safe and thread-aware, so that parrot can finally release threads.
masak diakopter: nope.
TimToady there must be a 'use MONKEY_TYPING' somewhere in the lexical outer scope, or in the eval
but the eval doesn't have to do it if it's already declared
diakopter I guess use MONKEY_TYPING would make use oo :closed :final; not very useful 19:42
TimToady eval is supposed to run in the currently defined language at the spot of the eval, not revert to some other language
buubot_backup TimToady: ERROR: syntax error at (eval 20) line 1, near "currently defined"
grondilu wow: "All tests successful."
TimToady it makes it less useful on the class you actually monkey with
but merely deriving from a class makes it non-final 19:43
don't need monkeytyping for that
the derivation does need to be done at compile time, though, or the optimizer is allowed to assume :final in the absence of a explicit request to the contrary 19:44
so any given class is more likely to be closed than finalized, I think 19:45
in the population of leaf-node classes, the likelihood is going to be closer than that, I suspect, with most of them closed/finalized at application CHECK time 19:46
actually, it's pretty easy to determine when we're at application CHECK time, since the application's CHECK is what fires off all the other CHECKs, if we follow the Perl 5 model of CHECK 19:48
eval UNIT
buubot_backup TimToady: UNIT
TimToady eval UNITCHECK { print "here\n" }
buubot_backup TimToady: here
TimToady which is why p5 has that
so if we work our linking right, CHECK time can almost always assume 'use oo :closed, :final;' 19:50
sorear: ^^ and the spec clarification above 19:51
19:53 cread left 19:57 SamuraiJack left
sorear o/ 20:07
masak sorear! \o/
tadzik hello sorear 20:08
sorear o/ masak, tadzik 20:09
masak tadzik! \o/
tadzik yay, me :)
20:10 xenoterracide joined
xenoterracide yawn 20:11
tadzik yawn, me
masak .oO( the tadzik hype cycle is short this evening ) 20:12
tadzik I feel dead these dyas 20:13
getting back home, it's 18, and I feel like sleeping
masak sir, I assure you, being dead is worse than this.
moritz masak: you speak from personal experience? :-)
masak moritz: for most of the Universe's existence, I wasn't even remotely alive. 20:14
tadzik the clones may know something about this
masak moritz: it was horrible.
moritz tadzik: I know that feeling very well. Add to that a daughter that doesn't let you sleep through the night... :-)
tadzik haha 20:15
masak wow, gotta try this parenting thing. sounds like a blast! :P
tadzik yeah
20:15 domidumont left
moritz speaking of which, I need to tell you a short parenting story 20:15
masak do tell.
moritz my wife was reading some book to Ronja
and Ronja got bored after a while 20:16
and said
"blah blah blah"
tadzik ahaha
moritz we were very nearly rolling on the floor laughing
tadzik to which Ronja replied "hah hah hah" :D
masak ironic child is ironic. 20:17
moritz she didn't quite understand our amusement :-)
masak "hey, I just gave you scathing reviews, that's no laughing matter!" 20:18
"this is no time to completely lose it. read from the top, and better this time!"
tadzik huh, I completely missed feather.perl6.nl/~sergot/modules/mo...otion.html in our ecosystem 20:19
masak .oO( "I hate Mondays, hurrah!" ) 20:20
also, "emobot" conjures up very funny mental images. 20:21
20:21 gv joined
tadzik hehe, it does 20:21
dalek rl6-bench: eb1c2d7 | (Geoffrey Broadwell)++ | timeall:
Untabify timeall
rl6-bench: 82d7b0f | (Geoffrey Broadwell)++ | timeall:
- Skip timing of undefined (untranslatable) tests

  - Add a couple new tests based on harbud3's comments on reddit:
   www.reddit.com/r/perl/comments/12vt..._i/c716bke
rl6-bench: d5fed63 | (Geoffrey Broadwell)++ | timeall:
Handle starting CWD as a compiler path; use this for rakudo
rl6-bench: 4a9017c | (Geoffrey Broadwell)++ | / (2 files):
Add tests for three of the performance-related Rakudo commits
tadzik in Polish, when a program runs slowly and glitches, you say that it "cuts itself"
emobot cutting itself would be a bit ironic :>
FROGGS ;o) 20:22
20:23 PacoAir left
japhb Rakudo progressing from 2011.10 to 2012.10: gist.github.com/4132800 20:24
sergot feather.perl6.nl/~sergot/modules/ updated :)
20:24 fgomez joined
tadzik both cool! :) 20:25
TimToady japhb: cool, but kinda hard to read with the s and x intermixed like that 20:29
moritz seems it stayed mostly constant, no? 20:30
FROGGS I'd say it is about 10% faster than 2012.06 20:31
20:35 kurahaupo joined 20:36 PacoAir joined
tadzik ergh, help needed 20:43
'not ok 1 - aaa # TODO' -- does this count as a passed test, or a failed one? 20:44
philosophically :)
moritz yes.
:-)
xenoterracide mu
tadzik ah :) 20:45
FROGGS if you dont misuse TODO this test isnt a fail, but TODO ;o)
otherwise it might be a fail
tadzik :F 20:46
20:46 ifim joined
tadzik my Test::Harness is a bit stupid 20:46
moritz well, it should count it as a passing test 20:47
at least that's what p5 does
xenoterracide or more or less it should not cause the test suite to fail
the suite passes regardless of whether todo's pass or fail 20:48
FROGGS right, it just count them as todo (failed but ok), and todo (unexpectedly succeeded) 20:49
tadzik yeah. It's just that I have problems defining success
right now I define it as $!tests-ran <= ($!tests-passed + $!todos), which is a bit dumb :)
I think instead of shamanism I should just maintain a list of Successes and Failures, disregarding whether it was a todo, a skip or whatnot 20:50
FROGGS well, tests-ran is passed+todo+failed
tadzik I think it's also broken now
FROGGS success is when nothing fails
tadzik well, here we go
not ok 1 # TODO
did it fail? it did 20:51
FROGGS but if shoudlnt
tadzik is the test suite successful? It is
japhb TimToady, I've got to run so I'll have to make this quick (and backlog later), but the original is colored so that it is easy to see the difference between the s and x
FROGGS ahh
the testsuite is fine, but the test counts as todo/failed
japhb wonders if there is any way to colorize a gist
back later &
tadzik bah, life's hard :)
programming is hard 20:52
FROGGS there are basically five states per test, pass, fail, skip, todo+pass, todo+fail
tadzik yeah 20:53
FROGGS ppl sometimes add tests to see how thing went on different platforms
like a trial or probe 20:54
20:54 sqirrel left, fgomez left
FROGGS it's a misuse of todo basically but hey, thats life ;o) 20:54
tadzik hrm
I ponder counting not ok # TODO as a passing test
this allows for an easy definition of success :) 20:55
FROGGS k
20:55 rurban_ left
FROGGS as long as the author can see what happened ;o) 20:55
20:59 GlitchMr left
tadzik okay. Now p6prove should be sufficient for panda to switch to it 21:00
yep, works :)
colomon wait, p6prove? 21:02
tadzik yep
somewhat works :)
colomon \o/
21:03 Tene joined
tadzik now panda may be able to tell like "your tests failed, but only one of them, cheer up" 21:04
and similar info available in emmentaler and stuff
mebbe :)
FROGGS git question: if I'm in a 'detached HEAD' state, and I wanna add commits and a tag to that state, can I push afterwards to a branch that already has later commits? 21:06
moritz I don't think you can push from a detached HEAD state 21:07
FROGGS damnit
moritz the commits for the release should end up in master
FROGGS so I have to use nqp master and run the testsuite and cross my fingers than nothing breakes?
moritz don't fear; the new commits only added methods that are never called from nqp or rakudo by default 21:09
(only by --target=past)
so, nothing will break
FROGGS k, will try now
moritz (just for the record, if you want to recover from such a state anyway, you just create a new branch, 'git checkout -b release-2012.11', and then use that for pushing) 21:10
FROGGS right
21:11 leont left 21:14 thou left
lue Hello o/ 21:15
masak lue! \o/ 21:16
tadzik ufo ignores %*CUSTOM_LIB, doesn't it? :) 21:17
moritz it does, yes :( 21:18
needs to be updated, I guess
tadzik that bites sometimes, if you mix up panda and ufo's 'make install'
masak pull requests welcome. 21:19
lue That reminds me. Should the panda bootstrap create symlinks from ~/.perl6/version-specific/(bin|lib) to ~/.perl6/(bin|lib) ? I did so manually after the last update I ran. 21:20
tadzik that'd be cool
apart from the fact that we can't create symlinks in a cross-platform way :) 21:21
lue There *has* to be a Windows equivalent. I'd be honestly shocked if there wasn't.
masak never runs on that "cross" platform everyone keeps caring about anyway :P
Windows has had symlinks for ages, I think. it just doesn't expose them very much. 21:22
TimToady wants to know what made it cross in the first place
dalek nda/p6prove: e968a09 | tadzik++ | / (2 files):
Try to use p6prove instead of prove
tadzik Something for adventurers like you
lue thinks P6's ExtUtils should come with a ln command. 21:24
moritz masak: well, only on NTFS 21:25
masak: fat32 doesn't support symlinks
lue I wonder how Windows systems deal with version-specific libraries and such when they can't symlink library_v0.1 to library /me guesses they don't. 21:27
FROGGS moritz: I need to patch nqp, rurban has added an enum_class_Proxy wich isnt defined in 4.4.0, and the switch PARROT_HAS_THREADS that could disable it when undef is defined already
so I revert his patch for now I'd say
github.com/perl6/nqp/commit/6d8b63...c54ec73775 21:28
TimToady nrp: multi foo ($a where { .say.so }) { say "A" }; multi foo ($a where { .say.so }) { say "B" }; foo(42)
p6eval pugs: OUTPUT«*** ␤ Unexpected "where"␤ expecting "?", "!", trait, "=", default value, "-->" or ")"␤ at /tmp/lKlR49fJdg line 1, column 15␤»
..rakudo bf472b: OUTPUT«42␤42␤A␤»
..niecza v22-36-g19fa03a: OUTPUT«Potential difficulties:␤ $a is declared but not used at /tmp/aYpa2eynSj line 1:␤------> multi foo (⏏$a where { .say.so }) { say "A" }; multi␤␤42␤42␤A␤»
diakopter lue: in Windows libraries aren't installed system-wide unless they're kernel drivers
TimToady 42 42 is incorrect
it is *not* supposed to evaluate all the constraints ahead of time 21:29
diakopter what's the order
FROGGS moritz: or I better do: #ifdef enum_class_Proxy instead of #ifdef PARROT_HAS_THREADS
skids defined order.
diakopter lue: lemme rephrase. 21:30
libraries aren't installed systemwide to be accessible by filename. if a program wants to load a library by filename, it has to be on the path or directory housing the executable. libraries *are* registered in the registry, to make them available computer-wide 21:32
(.. or know the exact path of the library)
masak TimToady: I believe that bug is already RT'd. 21:33
lue Ah. I'm getting the feeling Windows is different enough in its library handling that panda will eventually need an entirely separate process for installing modules on Windows. 21:34
diakopter well, the site_lib system seems to work for activeperl and strawberry
lue tried foolishly to run STD.pm6 in rakudo, and is currently stuck on line 96. 21:35
diakopter: I guess what to do then is /versionspecific/libs and then a variable in some config file saying "use this directory" that's automatically updated when panda is.
dalek p: 6806339 | (Tobias Leich)++ | src/pmc/nqplexpad.pmc:
checking for enum_class_Proxy instead of PARROT_HAS_THREADS

In parrot 4.4.0 enum_class_Proxy isnt defined but PARROT_HAS_THREADS is. So enum_class_Proxy would be added to the condition.
21:36
diakopter lue: I don't understand your goals
moritz FROGGS: sorry; when I said that none of the commits broke nqp I was looking at my local checkout, which was stale :/ 21:37
TimToady masak: I am more responding to sorear's remark at irclog.perlgeek.de/perl6/2012-11-22#i_6175924
FROGGS moritz: np
as long I can fix...
sorear I'm not paying attention 21:38
Should I be?
TimToady it does not try all the candidates in that case, except abstractly
lue I'm just thinking of the windows equivalent of ln -sT ~/.perl6/version-specific/(bin|lib) ~/.perl6/(bin|lib)
TimToady well, I don't know if you meant what you said :)
diakopter lue: what does -T do
lue makes the first argument the target, the second being the symlink's name. I can't be bothered to remember the order without it :) 21:39
TimToady sorear: the 42 42 example was to demonstrate that both rakudo and niecza are evaluating constraints unnecessisarily compared to what the spec requires
and your remark at irclog.perlgeek.de/perl6/2012-11-22#i_6175924 can be construed as justifying the extra work, read one way 21:40
*unnecessarily
sorear nrp: multi foo ($a where { .say.so }) { say "A" }; foo(42) 21:41
p6eval rakudo bf472b: OUTPUT«42␤42␤A␤»
..niecza v22-36-g19fa03a: OUTPUT«Potential difficulties:␤ $a is declared but not used at /tmp/gYI9c3rm8V line 1:␤------> multi foo (⏏$a where { .say.so }) { say "A" }; foo(4␤␤42␤42␤A␤»
..pugs: OUTPUT«*** ␤ Unexpected "where"␤ expecting "?", "!", trait, "=", default value, "-->" or ")"␤ at /tmp/cvzsmPTWFr line 1, column 15␤»
sorear TimToady: that's not quite what's going on I think
TimToady innersting
but still duplicate effort
diakopter "does it match" then "make it match"?
sorear I think that after it commits to a candidate, it restarts the binding
TimToady I think the binding should determine the commitment, not vice versa 21:42
why run the code twice?
TimToady feels like he's been arguing the primacy of binding for a number of years now, though mostly in reference to partial binding of map closures 21:44
so it's controlled by the binding, not by introspection
diakopter how does the thing that launched the binding know it succeeded? 21:45
(unless they're chained recursively..) 21:46
(dumb question?) 21:54
sorear maybe not a dumb question but a non-issue for niecza
niecza does the "check" by a binding operation 21:55
masak I don't think it's a dumb question. I'd need to prototype this in working code before I'd dare enter into the discussion... :)
jnthn evening
FROGGS hi jnthn
sorear but throws away the result because it *might* need to check extra signatures, in cases where detecting ambiguityis important
TimToady spec says it doesn't need to worry about that for constraints 21:56
sorear would be pretty straightforward to optimize niecza to eliminate the redundant check
TimToady but my viewpoint here is that binding is part of function application, not a separate imperative step 21:57
jnthn TimToady: I suspect the repeated checks are there because I did the simplest patch that could possible work to switch it over to "picks first" semantics. 21:58
*possibly
And probably didn't change much beyond that... 21:59
TimToady I was just a bit surprised that it still duplicated that work
when getting rid of the extra work was part of the motivation for the earlier ruling...
jnthn TimToady: Well, optimization after semantics...
TimToady: Also, the plan is to move the candidate sorter and much of that dispatchy stuff into NQP code. 22:00
So that'd be the opportune time to optimize this.
TimToady nodnod
jnthn (The cache will stay low level, meaning that the vast majority of things will be at least as fast, and the existing slower paths may well break even due to avoiding some nested runloops...) 22:01
TimToady though it still feels vaguely wrong to me to call it an optimiztion
dalek p: d0f9fec | (Tobias Leich)++ | VERSION:
bump VERSION to 2012.11
22:02
jnthn Well, it only shows up in the semantic sense if you write a where clause with side-effects, and iirc we don't promise much related to those. 22:03
Anyways, 'twill be fixed. :) 22:04
But not now, 'cus I'm exhausted... 22:05
TimToady well, slower is a side effect too :)
so is exhausted :)
nap & 22:06
jnthn masak: 113904 is a dupe iirc 22:07
masak jnthn: it felt familiar. 22:08
diakopter must now go traditionally overeat 22:10
masak felicitous turkey. 22:11
22:17 larks left 22:20 larks joined 22:25 larks left 22:27 larks joined 22:29 fgomez joined 22:33 kaare_ left 22:41 rurban_ joined 22:42 Tabrenus joined
masak 'night, #perl6 22:42
FROGGS gnight masak 22:43
jnthn also rests... 22:47
&
FROGGS well then, good night
FROGGS is making the last checks prior to release 22:48
22:53 rurban_ left
FROGGS k, last time I need to run the stresstest 22:57
23:00 PacoAir left 23:03 Tabrenus left 23:04 fgomez left
FROGGS moritz, sorear: sombody there to merge my release-pull request in? 23:07
github.com/rakudo/rakudo/pull/88
sorear FROGGS: I do not have a rakudo commit bit 23:08
FROGGS k
dalek kudo/nom: c65b52b | (Tobias Leich)++ | docs/announce/2012.11:
[release] announcement for 2012.11
23:09
kudo/nom: 6254734 | (Tobias Leich)++ | docs/ChangeLog:
[release] logges last missing changes
kudo/nom: 77fdf4a | (Tobias Leich)++ | docs/announce/2012.11:
9790c6c | (Tobias Leich)++ | docs/announce/2012.11:
colomon o/
FROGGS thanks!
colomon no prob 23:10
FROGGS can you upload that tarball too please?
colomon where does it need to go?
23:10 dalek joined, ChanServ sets mode: +v dalek
colomon has been out of the rakudo release loop for quite a while now.... 23:10
FROGGS there is a downloads button at the right 23:11
github.com/rakudo/rakudo/downloads
and the tags where not included in the pull request, you have to do it manually:
git tag -a -m"tag release #58" 2012.11 23:12
git tag -a -m"tag release #58" "Walnut"
git push --tags
the tarball is here btw: froggs.de/perl6/rakudo-2012.11.tar.gz 23:13
sorear o/ colomon
colomon \o sorear 23:14
FROGGS: I think I uploaded the tarball correctly, and pushed the tags. Can you doublecheck, please? 23:15
FROGGS seen already!
aloha already! was last seen in 15666 days 23 hours ago .
colomon I'm trying to monitor a 4yo here at the moment too, things are a bit hectic.
FROGGS thank you sir ;o)
colomon: I've got an almost 3yo and a 1.5yo 23:16
but they are sleeping
23:18 Khisanth joined
FROGGS colomon: if you got a second, I made a typo in the announcement, here is another pull request: github.com/rakudo/rakudo/pull/89 23:21
then I'm done
23:32 rurban_ joined
lue r: say "aaaa" ~~ /a**{2..*}/ 23:40
p6eval rakudo bf472b: OUTPUT«===SORRY!===␤Quantifier quantifies nothing at line 2, near "{2..*}/"␤»
lue r: say "aaaa" ~~ /a**2..*/
p6eval rakudo bf472b: OUTPUT«「aaaa」␤␤»
lue Methinks it's a bug. Does anyone know if it's been reported already?
FROGGS hmmm, didnt seen it 23:41
and I've looked at almost all reports this week
r: say "aaaa" ~~ /a**(2..*)/ 23:42
p6eval rakudo bf472b: OUTPUT«===SORRY!===␤Quantifier quantifies nothing at line 2, near "(2..*)/"␤»
FROGGS hmmm
but well, gtg to bed
gnight
lue will report bug once his computer stops being slow on account of Perl 5 (and modules) upgrade 23:44
good knight FROGGS o/
23:47 MayDaniel left
kudo/nom: 50be5d2 | colomon++ | docs/announce/2012.11:
Merge pull request #89 from FROGGS/patch-1

typo in codename
colomon FROGGS: sorry for the delay, I had to put him to bed. 23:50
23:50 fgomez joined
colomon Had to read him and his slightly older cousin "Return of the Jedi". 23:51
lue submits rakudobug
23:55 kurahaupo left
colomon hmmm, latest rakudo not building for me? 23:57
NQP has been built and installed. 23:59
===SORRY!===
NQP revision 2012.11 required (currently 2011.12).