»ö« 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:11» | 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->⏏fooParse failedFAILED 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!===Confusedat /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«abc» | ||
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 1Unhandled 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«4242A» | |||
..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" }; multi4242A» | |||
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«4242A» | ||
..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(44242A» | |||
..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). |