|
perl6-projects.org/ | nopaste: sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/ Set by mncharity on 25 March 2009. |
|||
|
00:00
payload2 joined,
payload left
00:01
payload1 left
00:03
DemoPhreak is now known as DemoFreak,
bacek left
00:07
meppl joined
00:16
Entonian joined
|
|||
| jnthn | my word, I can't believe the YAPC::EU schedule is out already. | 00:19 | |
|
00:24
jhuni left
00:34
eternaleye left
|
|||
| meppl | good night | 00:36 | |
|
00:38
meppl left
00:40
DemoFreak left
00:50
dukeleto left
00:52
dukeleto joined
01:04
yary joined
|
|||
| yary | hello all- I was trying to search the rakudo tracker, but I get a 500 server error | 01:04 | |
| is it down, or is it me? | |||
| can't get to rt.perl.org/rt3/Public | |||
|
01:05
dukeleto left
|
|||
| yary | ... a web search turned up the bug I hit so don't need to get to the tracker at the moment, still someone ought to poke it. | 01:12 | |
|
01:16
sri_kraih_ left
01:25
eternaleye joined
|
|||
| pugs_svn | r26610 | lwall++ | [camelia] some smoothing and de-linefication | 01:29 | |
| r26611 | lwall++ | [p6proj] update camelia | 01:36 | ||
|
02:08
hercynium joined
02:11
dukeleto joined
02:12
PhatEddy left
02:17
Kisu left,
Kisu joined
02:23
nihiliad joined
02:27
dukeleto left
02:30
japhb left
02:35
Whiteknight left
02:47
bacek joined
|
|||
| TimToady | /e | 02:49 | |
|
02:49
les_ joined
02:51
les left,
les_ is now known as les
02:53
Limbic_Region left
02:55
M_o_C left
|
|||
| pugs_svn | r26612 | lwall++ | [camelia] add pdf version | 03:03 | |
|
03:07
Casan left
03:08
dukeleto joined
03:12
justatheory left,
dukeleto left
03:18
dukeleto joined
03:19
jhuni joined
03:32
hcchien left,
clkao left,
Entonian_ joined
03:34
Entonian left
|
|||
| diakopter pictures an onion-camel cocooning in a chrysalis | 03:37 | ||
|
03:37
orafu left,
orafu joined
|
|||
| s1n | isn't there a perl social room? i thought it was like #perlsoc or some such | 03:42 | |
|
03:44
japhb joined
03:49
dukeleto left
03:55
clkao joined
04:11
mikehh_ joined
04:17
km2_ left
|
|||
| pugs_svn | r26613 | lwall++ | [p6proj] smaller top wings on camelia | 04:18 | |
|
04:19
yary left
|
|||
| pugs_svn | r26614 | lwall++ | [camelia] squarified to match favicon aspect better and enhance face | 04:20 | |
|
04:27
mikehh left
|
|||
| pugs_svn | r26615 | lwall++ | [t] deduping, \c[1,2,3] tests | 04:33 | |
| r26615 | lwall++ | [p6-proj] make p6-proj link to pdf instead of svg | |||
| r26615 | lwall++ | [STD] improvements to enum parsing/faking | |||
|
04:38
alester joined
04:52
Infinoid joined,
dalek left,
dalek joined
04:56
dukeleto joined
04:59
hercynium left
|
|||
| diakopter | a bipedal insect | 05:01 | |
| skids | some meany pulled off her other legs | ||
| diakopter | ouch | ||
| now that she doesn't have legs on which to land, she'll be forced to fly forever. | 05:02 | ||
|
05:12
mikehh_ is now known as mikehh
05:14
dukeleto left
|
|||
| pugs_svn | r26616 | lwall++ | [p6proj] debug the right margin | 05:16 | |
| TimToady | they're there, but behind the front legs | ||
| you realize this means that Perl 6 can never be fully debugged... | 05:18 | ||
|
05:21
frodwith_ joined
05:23
xinming_ joined
05:30
frodwith left
|
|||
| skids didn't want to be the one to draw that association :-) | 05:31 | ||
|
05:33
Kisu left
|
|||
| TimToady | Perl 6 will be beautiful, but not perfect. :) | 05:33 | |
|
05:33
Kisu joined
05:36
frodwith_ left
05:39
xinming left
|
|||
| Infinoid | thus guaranteeing job security :) | 05:39 | |
|
05:58
jhuni left
|
|||
| skids | median runstats for INITIAL_BUCKETS settings in hash.c (on my system YMMV) | 06:04 | |
| 16 19.21user 0.16system 0:21.25elapsed 91%CPU 28342minor pagefaults (default) | |||
| 8 18.94user 0.16system 0:21.06elapsed 90%CPU 27677minor pagefaults | 06:05 | ||
| 4 18.86user 0.16system 0:20.87elapsed 91%CPU 27285minor pagefaults | |||
| but setting it to 4 exposes a race condition | |||
| (this for a script that does little hashing perl side, so mostly backend hash use) | 06:06 | ||
|
06:25
cbk joined
06:26
nihiliad left
|
|||
| cbk | how can i get user input from the keyboard in perl6? "= =$*IN" doesn't seem to work for me...? | 06:27 | |
|
06:30
skids left
06:32
dukeleto joined
06:37
Entonian_ left
|
|||
| eternaleye | cbk: the '=' prefix operator is dead, use $*IN.get | 06:37 | |
| cbk: Also, there's the 'prompt' function. It takes a string argument, puts it on the console, and returns a line of user input. | 06:38 | ||
| pugs_svn | r26617 | lwall++ | [t] warning suppression | ||
| cbk | @eternaleye Thanks I will try that, In the future, where can I go to look this type of info up on my own? | 06:43 | |
| lambdabot | Unknown command, try @list | ||
| TimToady | it's buried down in perlcabal.org/syn/S32/IO.html, but mentioned elsewhere in the synopses | 06:51 | |
| perlcabal.org/syn is the overview of the specs | |||
| they live in pugs/docs/Perl6/Spec, so if you have the repo, you can grep it | |||
| but this particular thing only changed a couple weeks ago, so is still non-obvious | 06:53 | ||
|
06:53
japhb left
06:54
japhb joined
|
|||
| Matt-W | jnthn++ - hurrah for better enums | 06:54 | |
|
06:55
xinming_ left
06:58
xinming joined
|
|||
| cbk | @TimToday: Thanks for the links. | 06:58 | |
| lambdabot | Unknown command, try @list | ||
| TimToady | don't need the @, it just confuses lambdabot | 07:01 | |
| cbk | ok | ||
| TimToady | and also suppresses irssi hilighting, as it happens | 07:02 | |
| the @ just marks channel ops | |||
|
07:04
alester left
|
|||
| cbk | if prompt is a function, then could I do this (and have it work!) $input.prompt | 07:05 | |
| TimToady | there's no failover from methods to functions, or vice versa | 07:06 | |
| if that's what you're asking... | |||
| wrt prompt, generally there's only one sensible place to prompt anyway... | 07:08 | ||
| I suspect that's why there's only the function | |||
| cbk | well all I want to do is have a user type in there name and assign it to my $input var! the $*IN did not work? | 07:11 | |
| TimToady | my $input = prompt("name: ") | 07:12 | |
| or print 'name: '; my $input = $*IN.get; | 07:14 | ||
| cbk | COOL! thanks TimToday! My faith in Per6 has been restored! | 07:19 | |
| night | |||
| TimToady | good night | ||
|
07:19
cbk left
|
|||
| TimToady | zzz & | 07:23 | |
|
08:16
orafu left,
orafu joined
08:35
DemoFreak joined,
meppl joined
09:06
iblechbot joined
09:10
bacek_ joined
09:12
bacek left
09:29
c9s_ joined
09:30
c9s left
09:36
meteorjay joined
09:39
M_o_C joined
09:43
c9s_ is now known as c9s
09:53
payload joined,
payload2 left
09:58
sri_kraih joined
10:00
cognominal left
10:04
cognominal joined
10:05
payload left,
payload1 joined
10:11
kane_ left
10:12
kane_ joined
10:14
kane_ left
11:00
jan_ left
11:03
jan_ joined
11:25
meppl left
11:37
IRSeekBot joined
11:38
rblasch joined
11:46
kane_ joined
11:59
Whiteknight joined
12:16
masak joined
|
|||
| masak | hi #perl6, you wonderful channel you. | 12:17 | |
| masak is on a bus | |||
|
12:19
payload1 left
|
|||
| sbp | yo masak | 12:19 | |
| masak | sbp: \o | 12:20 | |
| I don't see anything wrong with [perl #65272] submitted by Arne Skjærholt. | |||
| specifically, I'm not sure what a 'static method call' would mean in Perl 6. there might be some confustion as to what the supplied code should do. | 12:21 | ||
|
12:22
payload joined
12:47
M_o_C left
12:48
payload left
|
|||
| masak | rakudo: multi sub foo(Int $n where 1) { say "OH HAI" }; sub foo(Int $n) { say "CHEEZBURGER" }; foo(1) | 12:56 | |
| p6eval | rakudo ec69e2: OUTPUT«CHEEZBURGER» | ||
| masak | something like "Rakudo wrongly allows declaration of a multi and an only sub in the same scope". | ||
| anyone know if that's in RT already? | |||
| jnthn | That should be an error unless there is a proto in scope. | 13:09 | |
| masak | right. | ||
| jnthn | (which in this case there wasn't) | ||
| masak | jnthn: does that mean that the presence of a proto makes 'multi' implicit on all sub declarations in the same scope? | 13:10 | |
| jnthn | masak: Yes. | ||
| masak understands a bit more of the 'proto' semantics | 13:11 | ||
| jnthn | rakudo: proto foo() { }; sub foo(Int $x} { 1 }; sub foo(Str $x) { 2 }; say foo(1); say foo("a"); | ||
| p6eval | rakudo ec69e2: OUTPUT«Unable to parse multisig; couldn't find final ')' at line 1, near "} { 1 }; s"current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)» | ||
| masak | bug? | ||
| jnthn | rakudo: proto foo() { }; sub foo(Int $x) { 1 }; sub foo(Str $x) { 2 }; say foo(1); say foo("a"); | ||
| p6eval | rakudo ec69e2: OUTPUT«12» | 13:12 | |
| jnthn | masak: I typed a } where I shoulda typed a ). | ||
| masak | ah. | ||
| masak sees now | |||
| jnthn | Anyway, it works. | ||
| Yeah, took me a moment too. | |||
| masak | jnthn: aye, but the CHEEZBURGER one shouldn't work. | ||
| jnthn | aye, we should complain loudly about that one. | 13:13 | |
| masak makes a quick trip through RT before submitting | |||
| jnthn | fwiw I don't recall seeing an RT about that. | ||
| masak | kthx. | ||
| 对了, submitting. | 13:14 | ||
| jnthn | ooh, tentative YAPC::Asia dates are out. :-) | 13:16 | |
| masak | Asia++ | ||
| jnthn never went to Japan before, so is pondering taking his chance. | |||
| jnthn confirms his accepted YAPC::EU talk | 13:18 | ||
| The schedule looks pretty good. :-) | |||
|
13:20
nihiliad joined
|
|||
| TimToady | it was not the original intent that a proto allow unmarked subs to default to multi rather than only | 13:20 | |
| though that is more like what proto does on variables, I suppose | 13:21 | ||
| jnthn | TimToady: It seem to recall it said somewhere in the spec that it did cause that... | 13:22 | |
| *I | |||
| TimToady: I think part of the motivation is in role composition too. | |||
| masak | cool, so now Web.pm has a deadline, of sorts. | ||
| apart from the end of the grant, I mean. | |||
| jnthn | Where you resolve the conflict by putting a proto method in which forces multi-ness on the non-multi conflicters. | ||
| TimToady | but that's the other way around, scopewise | 13:23 | |
| jnthn | That bit is certainly in S1[24] | ||
| Other way around in what sense? | |||
| In that the ones from the roles are being brought into that scope? | |||
| TimToady | or more to the point, timewise, causewise, something like that | 13:24 | |
| the two roles are written before the class that integrates them | |||
| masak | rakudo: multi method perl(Object $self where /foo/:) { "OH HAI" }; say "foo".perl | ||
| p6eval | rakudo ec69e2: OUTPUT«"foo"» | ||
| TimToady | whereas the proto is written before, and the calls put later | ||
| jnthn | TimToady: It's right at the top of S06. | ||
| A C<proto> | |||
| also adds an implicit C<multi> to all routines of the same short | |||
| name within its scope, unless they have an explicit modifier. | |||
| TimToady | before temporally, I mean | ||
| well, I probably decided that and forgot :) | 13:25 | ||
| jnthn | :-) | ||
| I do tend to look at the spec and implement whatever it was you forgot. ;-) | |||
| TimToady | one tends to slip back to one's original conceptions | ||
|
13:26
amoc^ joined,
Casan joined
|
|||
| jnthn | OK, if you change your mind, please update the spec, and I'll get Rakudo to follow along. | 13:26 | |
| TimToady | btw, is there really a need to expose a Multi type? | ||
|
13:26
jhorwitz joined
|
|||
| TimToady | there isn't one specced... | 13:26 | |
| jnthn | It's handy for introspection. | ||
| TimToady | but there's a test for it | ||
| jnthn | But also consider | ||
| multi foo($x) { }; multi foo() { }; # what is the type of &foo | 13:27 | ||
| It can't be Sub. | |||
| Because that's the singular. And also we may have others that were exported methods. | |||
| TimToady | ($x)|(), which is a multisig | ||
| jnthn | Or exported SubMethods | 13:28 | |
| TimToady | std: sub foo ($x) | () {...} | ||
| jnthn | A signature is something a sub has, not is. | ||
| p6eval | std 26617: OUTPUT«ok 00:02 36m» | ||
| jnthn | OK, sure you can have that, but it doesn't hold when you have multiple bodies. | 13:29 | |
| TimToady | I don't follow your other arg | ||
| doesn't hold how so? | |||
| jnthn | OK, imagine I had written | 13:30 | |
| TimToady is still in a pre-caffiene state... | |||
| jnthn | multi foo($x) { 1 }; multi foo() { 2 }; | ||
| There are two different implemenations there, not just two different signatures. | |||
| I can see &foo.signature returning a junction of signatures. That's fine. | 13:31 | ||
| But &foo.WHAT I'd seen as handing back some Multi type. | |||
| Which provides, say, &foo.candidates | |||
| For introspective purposes. | |||
| TimToady | why shouldn't any &foo be able to hand back a list of candidates, where only subs have only one candidate? | 13:32 | |
| jnthn | I guess we could try and make it that way, but I'd always seen an only sub as singular. | 13:33 | |
| TimToady | wrapping turns a singuler into a plural in place | ||
| jnthn | And a multi as "a collection of code objects" | ||
| TimToady | if wrapping is going to respond to callnext like other dispatchers | ||
| jnthn | That can happen without confusing single and multiple dispatch. | 13:34 | |
|
13:34
ZuLuuuuuu joined
|
|||
| masak | key codes for slightly special keys, like the up arrow or the function keys, will they be covered by some part of the spec, or is that too platform-dependent? | 13:35 | |
| TimToady | well, wrapped routines have their own subdispatcher in either case, I expect | ||
| since all the candidates present the same interface, presumably | |||
|
13:35
skids joined
|
|||
| TimToady | masak: this seems like something that belongs in the definition of event handling, not the language itself, offhand | 13:37 | |
| masak | TimToady: ok. | ||
| but event handling will be part of the spec, to some degree, no? | |||
| TimToady | except, of course, to the extent that event handling *is* part of the language :) | ||
| masak | right. | ||
| jnthn | TimToady: Yeah, I'd taken in that the wrap mechanism and the next candidate mechanism all want to hang off the same thing. | 13:38 | |
| I think I know how to cleanly implement that. | |||
|
13:39
PhatEddy joined
|
|||
| TimToady | but if you do that, then &foo acquires more than one candidate | 13:39 | |
| when you wrap | |||
| jnthn | But I hadn't seen the distinction between one sub and a bunch of them going away. | ||
| TimToady | so a singular/plural unification seems in order there | ||
| jnthn | We still will need a way of talking about an individual candidate. | ||
| Sub, Method, etc had all to me seemed very much singular. | 13:40 | ||
| TimToady | &foo is just a callable abstraction, and how it handles the call is probably best encapsulated | ||
| like any object, they're singular on the outside, but potentially plural inside | |||
| jnthn | I consider "this is wrapped" and "this is a multi" being different kinds of plurality. | 13:41 | |
| TimToady | that's because you're implementing them, not calling them :) | ||
| jnthn | I still don't see how we can really do away with a Multi type though. | 13:42 | |
| This is one place where smop and Rakudo seem to have gone down the same road, fwiw. | 13:43 | ||
| TimToady | I don't think &foo should change its outside type just because someone implemented differently | ||
| masak | rakudo: my $i = 0; do * until $i++ > 5; say "alive" # I've been missing the 'nothing' keyword, but this is not too bad either. | ||
| p6eval | rakudo ec69e2: OUTPUT«alive» | ||
| jnthn | If you want to do that, you need to specify what that type is. | ||
| masak | rakudo: my $i = 0; do Whatever until $i++ > 5; say "alive" | ||
| p6eval | rakudo ec69e2: OUTPUT«alive» | 13:44 | |
| jnthn | And given you might have multi variants that come from exported methods, and others that are subs, etc, I'm not sure how you can just say "it's a Sub" and so on... | ||
| masak ♥ Perl 6 | |||
| TimToady | &foo is just the name of whatever foo does in the current namespace | 13:45 | |
| jnthn | So what does &foo.WHAT give? | ||
| TimToady | Code, I think | 13:46 | |
| masak | rakudo: * | ||
| p6eval | rakudo ec69e2: ( no output ) | ||
| TimToady | let me think about it some more; maybe I can persuade myself not to care | 13:47 | |
| jnthn | :-) | ||
| TimToady: While you're on it, also ponder whether it's valid to wrap a bunch of multis wholesale or only one of the candidates. :-) | 13:48 | ||
| PhatEddy | naive question - someone was asked to use "my $in = $*IN.get;" to get a line of input yesterday. Why not just "my $in = get;" ? | 13:50 | |
| TimToady | jnthn: it just feels like a leaky abstraction if that matters to the user | ||
| masak | PhatEddy: because there's no sub 'get'...? :) | ||
| PhatEddy | should there be one? | 13:51 | |
| TimToady | yes | ||
| to go with lines() | |||
| masak | PhatEddy: patches welcome. | ||
| jnthn | TimToady: They are different things. | ||
| TimToady | to the implementor | ||
| jnthn | No, to the user too. | ||
| Do I want to wrap the multi as a whole, and the callnext or whatever will do a multi-dispatch. | |||
| Or do I want to find a single candidate that I care about and wrap just that one. | 13:52 | ||
|
13:52
amoc^ left
|
|||
| TimToady | I would think the Perl way would be to allow either, if you can name them | 13:52 | |
| PhatEddy | RT #65120 was going to add lines() and slurp() - maybe I'll add get to it too ... | ||
| TimToady | if I &foo.wrap, it uses the current namespaces idea of &foo | ||
| 's | 13:53 | ||
| masak | PhatEddy: sounds good. | ||
| jnthn | Right, agree. | ||
| I just think that while you should always be able to get at &foo and call it or wrap it and not care, there are times when people will care. | 13:54 | ||
| And want to know if the thingy they have is going to go off and do a single dispatch or a multiple dispatch. | |||
| TimToady | and then they can say &SomeModule::foo:(Int,Str).wrap instead to be more specifi | ||
| why would they want to know that? | |||
| jnthn | Introspection? | 13:55 | |
| TimToady | I would think they want to *not* know that most of the time | ||
| jnthn | I don't see how we can't have both. | ||
| TimToady | and when they do want to know it, they can introspect &foo via some method | ||
| jnthn | &foo() whether it's of type Code or Sub or Multi is going to look just the same if you invoke it, wrap it, unwrap it, and so on. | 13:56 | |
| Anybody who starts asking exactly what sort of thing it is is already at the point of introspection. | 13:57 | ||
| And thus below the "don't have to care" level. | 13:58 | ||
| TimToady | okay, here's the thing that bothers me. I don't mind if &foo does Multi, but the spec test is testing to see if it isa Multi, and I think that's over-orthogonalizing the space in a classish way | ||
| at the end of t//spec/S06-multi/syntax.t | 13:59 | ||
| jnthn | I'm quite open to the idea that .isa is too strong a promise. | ||
| TimToady | I thought you'd be :) | ||
| that's why I mentioned it... | |||
| jnthn | If your mainly wanting to see that test become .does(Multi) | ||
| Or even the hand-wavey &foo ~~ Multi | |||
| That doesn't bother me at all. | |||
| TimToady | though I think the marked case should actually be Only, from an optmization point of view | 14:00 | |
| well, even Only can become plural through wrapping | 14:01 | ||
| jnthn | Sure, but you still know fairly well where the dispatch is going. | ||
| TimToady | maybe the optimizer wants Inlineable instead. :) | ||
| well, I still see wrapping and multiple dispatch as basically the same thing | 14:02 | ||
| and the point of is inline is to disable wrapping, mostly | 14:03 | ||
| masak | .oO( do not wrap ) |
||
| jnthn | I'm not convinced inlining of multis is always impossible. | 14:04 | |
| TimToady | though there's something going on here like closing and finalizing classes, from a pessimization point of view | ||
| jnthn | If we statically know all of the candidates in a given scope and we statically know the types of the parameters, for example... | ||
| On the other hand, inlining of something that can get wrapped probably always is. | 14:05 | ||
| TimToady | sure, just trying to make the possible common, to the extent possible :) | ||
| jnthn | And I guess that's part of why I would rather not see multi dispatch and wraping *so* closely entangled. | ||
| Even if both do operate through the same kind of candidate list-ish mechanism. | |||
| TimToady | well, but making a hard type distinction is another form of entanglement, which is what I'm carping about | 14:06 | |
| but we can let it go for now, if we s/isa/does | 14:07 | ||
| jnthn | Sure, and I agree that .isa is too strong a check. | ||
| Are you thinking of adding a check that .isa is false too, though? I'd rather leave that as a "not the way to check it, implemenation specific" kidna thing if we can. | 14:08 | ||
| rakudo: multi foo() { }; say &foo ~~ Multi; say &foo.does(Multi); | 14:09 | ||
| p6eval | rakudo ec69e2: OUTPUT«11» | ||
| pugs_svn | r26618 | lwall++ | [syntax.t] relax isa Multi to ~~ Multi | 14:10 | |
| jnthn | .oO( phew ) |
||
| pugs_svn | r26619 | lwall++ | [CORE] suppress Multi undef error | 14:13 | |
|
14:30
dalek left,
dalek joined
|
|||
| Matt-W | hurrah | 14:33 | |
| form works again | |||
| although I think I've made a mistake in the semantics | |||
| masak | Matt-W: anything pullable? | ||
| Matt-W | Damian's module counts a field spec of {<} as having width 3, my module counts it as width 1 | ||
| so I think I need to fix that | |||
| masak: yes I just pushed it | |||
| masak: verbatim line and block fields now exist | 14:34 | ||
| masak pulls | |||
| Matt-W | Although I'm having some doubts about whether their behaviour is correct | ||
| I'll have to run a bunch of comparisons against Perl6::Form at some point | |||
| masak | Matt-W: what if I wanted a left-justified field of width 2? | ||
| Matt-W | masak: I don't know | ||
| That's why I just assumed the {} don't count | 14:35 | ||
| masak | Matt-W: you should make Perl6::Form and your module pass the same suite. :) | ||
| Matt-W | although if they do, it's nice for the layout of your picture strings | ||
| TimToady | the whole point of formats was to keep the picture consistent on columns, so {<} is 3 by that reckoning | ||
| Matt-W | but anything less than 3 is a problem | 14:36 | |
| TimToady | wasn't a problem for p5 formats :) | ||
| since we had @ and @< and @> | |||
| masak | Matt-W: what does '*@args is Scalar' do that '*@args' doesn't? | 14:37 | |
| TimToady | if you want your columns to not line up, that's what sprintf is for :) | ||
| Matt-W | masak: I can't remember | ||
| TimToady | I don't think "is Scalar" means anything anymore | 14:38 | |
| Matt-W | masak: probably something to do with passing arrays in | ||
| masak | I've never seen 'is Scalar' in working code before. | ||
| Matt-W | if it doesn't do anything, rakudo probably shouldn't accept it | ||
| TimToady | the idea was to evaluate each argument in scalar context | ||
| masak | Matt-W: I'll run the test suite, remove it, and run it again. | ||
| Matt-W | TimToady: right so you could say form("some string", @data, "Picture"); | 14:39 | |
| Which would be nice | |||
| (and have @data not interpolate into the arguments) | 14:40 | ||
| TimToady | we'll have to think about how that notion fits into the world of Captures | ||
| masak | I thought @data already didn't interpolate into the arguments. | 14:41 | |
| rakudo: sub foo(@data, $bar) { say $bar }; my @data = 1,2,3; foo(@data, 'OH HAI') | 14:42 | ||
| p6eval | rakudo ec69e2: OUTPUT«OH HAI» | ||
| TimToady | it's possible this is simply binding to *@@ these days | ||
| but maybe not | |||
| probably not, or slices will break when you say @x[1, @data, 3] | 14:43 | ||
| masak | Matt-W: removing 'is Scalar' doesn't make any tests fail. | 14:44 | |
| Matt-W | masak: that's because none of them rely on it doing anything | ||
| masak | Matt-W: well, given that 'is Scalar' wasn't needed to make @data not interpolate in the parameter list, why keep it? | 14:45 | |
| Matt-W | because I've not tested it | 14:46 | |
| it's from the original spec for that sub | |||
| masak | ah, ok. | 14:47 | |
| Matt-W | rakudo: sub foo(*@args) { say @args.elems; }; my @d = 1,2,3; foo(@d, 'a'); | ||
| p6eval | rakudo ec69e2: OUTPUT«4» | ||
| Matt-W | see also ^ | ||
| masak | oh. | ||
| right, the splat thing might actually affect matters. | 14:48 | ||
| rakudo: sub foo(*@data, $bar) { say $bar }; my @data = 1,2,3; foo(@data, 'OH HAI') | |||
| p6eval | rakudo ec69e2: OUTPUT«1 2 3» | ||
| masak | huh. | 14:49 | |
| I'd expect the splat to be more greedy than that. | |||
| diakopter | 02:23 <@TimToady> zzz & .... 08:20 <@TimToady> it was ... | 14:51 | |
| TimToady | I'm in two TZ at once :) | 14:52 | |
| std: sub foo(*@data, $bar) { say $bar }; my @data = 1,2,3; foo(@data, 'OH HAI') | |||
| p6eval | std 26619: OUTPUT«##### PARSE FAILED #####Can't put required parameter after variadic parameters at /tmp/spEF6EpDfd line 1:------> sub foo(*@data, $bar) { say $bar }; my @data = 1,2,3; foo(@d expecting any of: parameter post_constraint trait whitespaceFAILED 00:02 | ||
| ..36m» | |||
| TimToady | masak: see ^ | ||
|
14:52
nbrown joined
|
|||
| TimToady | rakudo is being overly accepting here | 14:53 | |
| Matt-W | bug!!! | ||
| masak submits!!! | |||
| Matt-W gone for a bit & | 14:54 | ||
| TimToady | will likely be put off till STD runs on rakudo :) | ||
|
14:57
nbrown_ joined
|
|||
| TimToady | rakudo: say Int.defined; say Int::.defined | 14:57 | |
| p6eval | rakudo ec69e2: OUTPUT«00» | ||
| TimToady | should be 0 1 if :: gets to the package for Int | 14:58 | |
| trying to figure out how to write tests like UNIT::OUTER:: === CORE:: and such | |||
| but I need to know how to get the identity of a lexical symbol table from a typename | 14:59 | ||
| pugs_svn | r26620 | masak++ | [u4x/TODO] added a lot of terms for parameters | 15:04 | |
| r26621 | masak++ | [u4x/TODO] {result -> abstract} object | |||
| pmichaud | good *, #perl6 | 15:09 | |
| TimToady | yo | 15:11 | |
| masak | H H | 15:12 | |
| O AI | |||
| TimToady | お愛 | 15:14 | |
| pmichaud | (reading scrollback) | ||
| TimToady | the mutable/immutable distinction is close to the mystery of time; we can only perceive the immutable scrollback, not the future mutable scrollforward | 15:19 | |
| jnthn | oh hai | ||
| masak | the best way to predict the scrollforward is to create it. | 15:20 | |
| jnthn ponders what to eat/cook for dinner | |||
| TimToady | masak: I knew you were going to say that :P | ||
|
15:21
nbrown left,
nbrown_ is now known as nbrown
|
|||
| masak | :) | 15:21 | |
| rakudo: my @a = <foo bar baz>; .=uc for @a; say @a.perl | 15:22 | ||
| p6eval | rakudo ec69e2: OUTPUT«Syntax error at line 1, near ".=uc for @"current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)» | 15:23 | |
| TimToady | std: my @a = <foo bar baz>; .=uc for @a; say @a.perl | ||
| pmichaud | we still don't support .= flip | ||
| p6eval | std 26621: OUTPUT«ok 00:02 36m» | ||
| pmichaud | er, .=flip | ||
| (as a term) | |||
| (.=uc being analogous here.) | 15:24 | ||
| std: my @a = <foo bar baz>; .= uc for @a; say @a.perl; | |||
| jnthn | rakudo: my @a = <foo bar baz>; .= uc for @a; say @a.perl | ||
| p6eval | std 26621: OUTPUT«##### PARSE FAILED #####Can't understand next input--giving up at /tmp/70EAuNVzdi line 1:------> my @a = <foo bar baz>; .= uc for @a; say @a.perl; expecting dotty method or postfixFAILED 00:02 36m» | ||
| rakudo ec69e2: OUTPUT«Syntax error at line 1, near ".= uc for "current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)» | |||
| TimToady | I don't feel any great need to support that form... | 15:25 | |
| pmichaud | TimToady: but the version without the space is supported? | ||
| std: my @a = <foo bar baz>; .=uc for @a; say @a.perl; | |||
| p6eval | std 26621: OUTPUT«ok 00:02 36m» | ||
| TimToady | already did that one above | ||
| pmichaud | right | ||
| just asking for confirmation | |||
| TimToady | 'yes' xx * | 15:26 | |
| pmichaud | thanks | ||
| jnthn | .oO( why on earth are single flights more expensive than return ones ) |
||
| pmichaud: Do you know anything more about the plans for a Parrot Developer Summit around YAPC::EU? | 15:27 | ||
| pmichaud | jnthn: no details, no. | ||
| jnthn | pmichaud: OK. Am pondering trying to sort out flights/hotel etc soonish... | ||
| pmichaud | maybe a message to last year's attendees | ||
| yes, I will need to do the same. | |||
|
15:28
fridim_ joined
|
|||
| jnthn | I'm happy to see the Perl 6 is a bit more spread out in the schedule this year, rather than all bunched on one day. | 15:28 | |
| pmichaud: Ah, we're speaking one after the other, it appears. | 15:30 | ||
|
15:31
M_o_C joined
|
|||
| jnthn | 40 minutes for the talk you gave in IIRC 90 in Oslo will be interesting. | 15:31 | |
| PhatEddy | I had trouble getting get() working through setting but found it fairly easy in PIR with the following 5 line pir patch: dpaste.com/40312/ . | 15:33 | |
| how badly is it needed in setting? | |||
| jnthn | did multi get() { $*IN.get() } not do it? | 15:34 | |
| PhatEddy | no it didn't | 15:35 | |
| jnthn | Hmm. What went wrong? | ||
| PhatEddy | get iss defined in classes/IO.pir without multi to begin with | ||
| jnthn | Sure, but you're defining a sub that calls the method. shouldn't be a conflict, afaict. | 15:36 | |
| PhatEddy | I think I got: Null PMC access in find_method() | ||
| jnthn | Ugh. OK. | ||
| I'd like to try and track down why we got that. It points to a bug of some kind. | 15:37 | ||
| PhatEddy | the setting code i used was something like 'multi sub get() { return $*IN.get; }' | ||
| jnthn | Yeah, that doesn't look wrong. | 15:38 | |
|
15:38
Kisu left,
xinming left
15:39
xinming joined
|
|||
| PhatEddy | the pir looks easy enough though ... should I file a rakudobug ? | 15:40 | |
| jnthn | PhatEddy: Please file a ticket about that not working; it'd be good to fix the underlying bug rather than ignore it by writing stuff in PIR that we really should be able to write in Perl 6. | ||
|
15:42
payload joined
|
|||
| PhatEddy | ok | 15:43 | |
|
15:43
masak left
15:45
masak joined
|
|||
| jnthn -> shop | 15:45 | ||
| masak | bus wifi a bit flaky. got thrown off the Interwebz. | 15:46 | |
|
15:46
meppl joined
|
|||
| masak | I had a patch going for .=flip at one point; sometime around the post-NPW hackathon. but I must have lost it. | 15:48 | |
| pmichaud | (90 minutes talk in 40 minutes) shouldn't be too much of a problem; it's an accordian talk where there are lots of things that can be added/removed | 15:49 | |
| PhatEddy: did you put the multi sub inside the IO class or outside of it? | 15:50 | ||
| PhatEddy | outside - all the way at the bottom | ||
| pmichaud | hmmm. | ||
| I wonder if there's something else called 'get' somewhere. | 15:51 | ||
| PhatEddy | It's exported from src/classes/IO.pir | ||
| masak | rakudo: sub get() { $*IN.get }; say get; say "alive" | 15:54 | |
| p6eval | rakudo ec69e2: OUTPUT«alive» | ||
| masak | still no Austrian national anthem... :/ | ||
| PhatEddy: it works outside of the setting, it seems. | |||
| pmichaud | perl6: say 'ışığa'.uc; | 15:55 | |
| p6eval | elf 26621, pugs, rakudo ec69e2: OUTPUT«IŞIĞA» | ||
| pmichaud | \o/ | 15:56 | |
| masak | pmichaud: wohoo! what changed? | ||
| pmichaud | I fixed $*IN, $*OUT, $*ERR to use utf8 encoding by default. | ||
| masak | excellent. | ||
|
15:57
Psyche^ joined
|
|||
| PhatEddy | rakudo: multi sub get () { $*IN.get } ; say get; say "alive" | 16:06 | |
| p6eval | rakudo ec69e2: OUTPUT«push_pmc() not implemented in class 'Sub'current instr.: 'parrot;PCT;HLLCompiler;evalpmc' pc 306668 ((unknown file):-1)» | ||
| PhatEddy | should that have worked? | ||
| masak thinks so | |||
| PhatEddy: would you like to submit a rakudobug? | 16:07 | ||
| PhatEddy still working on this ... | |||
| masak submits it, then | 16:08 | ||
| PhatEddy | I just replicated the error message from putting the definition in setting/IO.pm (got the error message wrong) | 16:10 | |
| error message is (still): too few arguments passed (0) - 1 params expected | 16:11 | ||
| it's like it doesn't seem to find it from the setting. | |||
|
16:13
Patterner left,
Psyche^ is now known as Patterner
|
|||
| pmichaud | generally that means it either thinks it's a method instead of a sub, or there's something wrong with the outer contexts. | 16:18 | |
| 22:34 <jnthn> pmichaud: If you know how, or are able to, giving PhatEddy an RT bit could be a good idea. | 16:21 | ||
| I think I offered one previously, but it was declined. | |||
| The offer remains, however. :-) | |||
|
16:30
justatheory joined
|
|||
| diakopter | bouncing faether svn/apache2 | 16:34 | |
|
16:36
masak left,
ejs left
16:42
justatheory left
16:48
ejs joined
16:50
nacho_ left
|
|||
| pugs_svn | r26622 | pmichaud++ | [t/spec]: Standardize a couple of plan declarations. | 16:50 | |
|
16:52
amoc joined
16:53
amoc is now known as amoc^,
amoc^ left
16:54
amoc joined,
amoc is now known as Guest26623
16:55
Guest26623 left,
M_o_C left
17:16
amoc^ joined
17:17
rblasch left
17:20
meteorjay left
17:23
justatheory joined
17:28
finanalyst joined
|
|||
| skids wonders if anyone experiences an occasional spurious segv building rakudo. | 17:31 | ||
| finanalyst | perl6: my %x = %(<a b c d> X []); %x<a>[3]=2;%x.perl.say | 17:32 | |
| lambdabot | finanalyst: You have 1 new message. '/msg lambdabot @messages' to read it. | ||
| p6eval | pugs: OUTPUT«\(\("a", \(undef, undef, undef, 2)),)» | ||
| ..rakudo ec69e2: OUTPUT«{"a" => [undef, undef, undef, 2], "b" => [undef, undef, undef, 2], "c" => [undef, undef, undef, 2], "d" => [undef, undef, undef, 2]}» | |||
| ..elf 26622: OUTPUT«Undefined subroutine &GLOBAL::infix_X called at (eval 129) line 3. at ./elf_h line 5881» | |||
|
17:32
nbrown_ joined
|
|||
| skids | well, that's pretty weird. | 17:34 | |
| finanalyst | can anyone tell me whether the rakudo response is the expected one? I was expecting to get different arrays for each member of the hash | 17:35 | |
| instead one array is allocated and the others are aliases (I think) | |||
|
17:35
justatheory left
|
|||
| finanalyst | more like the pugs output, but pugs leaves out the c & d members | 17:37 | |
| skids | Hrm, [] is an anonymous array, so I think it's correct, because you are assigning the same anon array to each index. | ||
| But it is weird, because IIRC binding to array/hash is currently broken. | |||
|
17:38
c9s_ joined
|
|||
| finanalyst | why should it be the same anonymous array? | 17:38 | |
| or what should be the syntax to generate new arrays? | 17:39 | ||
| TimToady | [] is supposed to generate a new array | ||
| but X doesn't guarantee to re-eval | |||
| finanalyst | so is rakudo wrong? | 17:40 | |
| or how do I get a re-eval? | |||
| skids | my $a; my %x = %(<a b c d> X $a); %x<a>=2;%x.perl.say | 17:41 | |
| rakudo: my $a; my %x = %(<a b c d> X $a); %x<a>=2;%x.perl.say | |||
| X doesn't eval it's rhs multiple times. | |||
| p6eval | rakudo ec69e2: OUTPUT«{"a" => 2, "b" => undef, "c" => undef, "d" => undef}» | ||
| skids | (is why) | ||
| finanalyst | rakudo: my %x=<a b c d> Z ([], [], [], []);%x<b>[2]=3;%x.perl.say | ||
| skids wonders if he just inflooped evalbot | |||
| p6eval | rakudo ec69e2: OUTPUT«Cannot reduce() empty listCannot reduce() empty listCannot reduce() empty list{"a" => [], "b" => [undef, undef, 3], "c" => [], "d" => []}» | ||
| finanalyst | rakudo: my %x=%(<a b c d> Z ([], [], [], []));%x<b>[2]=3;%x.perl.say | 17:42 | |
| p6eval | rakudo ec69e2: OUTPUT«Cannot reduce() empty listCannot reduce() empty listCannot reduce() empty list{"a" => [], "b" => [undef, undef, 3], "c" => [], "d" => []}» | ||
| finanalyst | using Z with a list of [] gets what I want, but suppose I dont know how many items there are in the "key name" array | 17:43 | |
| skids | rakudo: my $a; my %x = %(<a b c d> X [234]); %x<a>=2;%x.perl.say | 17:44 | |
| p6eval | rakudo ec69e2: OUTPUT«{"a" => 2, "b" => [234], "c" => [234], "d" => [234]}» | ||
| TimToady | rakudo: my %x = map { $_, [], }, <a b c d>; %x<a> = 2; %x.perl.say | 17:45 | |
| p6eval | rakudo ec69e2: OUTPUT«Cannot reduce() empty listCannot reduce() empty listCannot reduce() empty list{"a" => 2, "b" => [], "c" => [], "d" => []}» | ||
| skids | seems inconsistent, unless [] is special somehow. | ||
| TimToady | rakudo: my %x = map { $_, [,], }, <a b c d>; %x<a> = 2; %x.perl.say | ||
| p6eval | rakudo ec69e2: OUTPUT«Statement not terminated properly at line 1, near ", [,], }, "current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)» | ||
| TimToady | rakudo: my %x = map { $_, [ ], }, <a b c d>; %x<a> = 2; %x.perl.say | ||
| p6eval | rakudo ec69e2: OUTPUT«Cannot reduce() empty listCannot reduce() empty listCannot reduce() empty list{"a" => 2, "b" => [], "c" => [], "d" => []}» | ||
| TimToady | it should not be parsing that as a reduce | 17:46 | |
| rakudo: my %x = map { $_, [()], }, <a b c d>; %x<a> = 2; %x.perl.say | |||
| p6eval | rakudo ec69e2: OUTPUT«Cannot reduce() empty listCannot reduce() empty listCannot reduce() empty list{"a" => 2, "b" => [], "c" => [], "d" => []}» | ||
| TimToady | rakudo: my %x = map { $_, [ () ], }, <a b c d>; %x<a> = 2; %x.perl.say | ||
| p6eval | rakudo ec69e2: OUTPUT«Cannot reduce() empty listCannot reduce() empty listCannot reduce() empty list{"a" => 2, "b" => [], "c" => [], "d" => []}» | ||
| TimToady | actually, it seems like something in .perl | ||
| jnthn | I struggle to see that it's mistaking it as a reduce, since we parse those as full tokens. | 17:47 | |
| At the moment. | |||
| finanalyst | rakudo: my %x = %(map { $_, [ () ], }, <a b c d>); %x<a> = 2; %x.perl.say | ||
| p6eval | rakudo ec69e2: OUTPUT«Cannot reduce() empty listCannot reduce() empty listCannot reduce() empty list{"a" => 2, "b" => [], "c" => [], "d" => []}» | ||
| TimToady | rakudo: my %x = map { $_, [ () ], }, <a b c d>; %x<a> = 2; %x.say | ||
| skids | The reduce is from trying to say an empty list | ||
| p6eval | rakudo ec69e2: OUTPUT«a 2b c d » | ||
| jnthn | rakudo: my %x = %(map { $_, [ () ], }, <a b c d>); | ||
| p6eval | rakudo ec69e2: ( no output ) | ||
| TimToady | rakudo: my %x = map { $_, [], }, <a b c d>; %x<a> = 2; %x.say | 17:48 | |
| jnthn | Heh, yeah, something in .perl | ||
| p6eval | rakudo ec69e2: OUTPUT«a 2b c d » | ||
| TimToady | rakudo: say [] | 17:49 | |
| p6eval | rakudo ec69e2: OUTPUT«» | ||
| TimToady | rakudo: say [[]] | 17:50 | |
| p6eval | rakudo ec69e2: OUTPUT«» | ||
|
17:50
nbrown left
|
|||
| TimToady | rakudo: say [[]].perl | 17:50 | |
|
17:50
nbrown_ is now known as nbrown
|
|||
| p6eval | rakudo ec69e2: OUTPUT«Cannot reduce() empty list[[]]» | 17:50 | |
| TimToady | there you go | ||
| pmichaud | rakudo: say [].perl; | ||
| p6eval | rakudo ec69e2: OUTPUT«Cannot reduce() empty list[]» | ||
| TimToady | in both cases there's only one empty list | 17:51 | |
| rakudo: say ().perl | |||
| p6eval | rakudo ec69e2: OUTPUT«Cannot reduce() empty list[]» | ||
| jnthn | fail. | ||
| TimToady | rakudo: say Nil.perl | ||
| pmichaud | I can't even find where .perl is defined now. It's been moved :-| | ||
| p6eval | rakudo ec69e2: OUTPUT«Nil» | ||
| jnthn | method perl() { | ||
| return '[' ~ self.map({ .perl }).join(", ") ~ ']'; | |||
| } | |||
| That's the one in List... | 17:52 | ||
| pmichaud | okay, that's it. | ||
| so, .map is complaining about an empty list. | |||
| jnthn | o rly? | ||
| rakudo: [].map(* * 2) | |||
| pmichaud | say ().map({ $_ * 2 }); | ||
| p6eval | rakudo ec69e2: ( no output ) | ||
| pmichaud | rakudo: say ().map({ $_ * 2 }); | ||
| TimToady | rakudo: map {42}, () | ||
| p6eval | rakudo ec69e2: OUTPUT«» | 17:53 | |
| rakudo ec69e2: ( no output ) | |||
| TimToady | rakudo: say map {42}, () | ||
| p6eval | rakudo ec69e2: OUTPUT«» | ||
| jnthn | rakudo: say ().join | ||
| p6eval | rakudo ec69e2: OUTPUT«Cannot reduce() empty list» | ||
| pmichaud | rakudo: say [].map({ .perl }); | ||
|
17:53
c9s left
|
|||
| p6eval | rakudo ec69e2: OUTPUT«» | 17:53 | |
| jnthn | rakudo: say [].join | ||
| p6eval | rakudo ec69e2: OUTPUT«Cannot reduce() empty list» | ||
| jnthn | I think it's join. | ||
|
17:53
lumi left
|
|||
| skids | rakudo: my $a; my %x = %(<a b c d> X [234]); %x<a>[2]=2;%x.perl.say | 17:53 | |
| pmichaud | our Str multi method join(Str $separator = '') { | ||
| @.list.reduce({ $^a ~ $separator ~ $^b }) | |||
| } | |||
| TimToady | say [~]() | ||
| p6eval | rakudo ec69e2: OUTPUT«{"a" => [234, undef, 2], "b" => [234, undef, 2], "c" => [234, undef, 2], "d" => [234, undef, 2]}» | ||
| TimToady | rakudo say [~]() | ||
| skids | my bad, not inconsistent, forgot the second subscript | 17:54 | |
| TimToady | rakudo: say [~]() | ||
| p6eval | rakudo ec69e2: OUTPUT«» | ||
| TimToady | rakudo: say ().reduce(&infix:<~>) | ||
| p6eval | rakudo ec69e2: OUTPUT«Statement not terminated properly at line 1, near "(&infix:<~"current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)» | ||
| pmichaud | growl. There's another one of those constraints on the builtin parameter.... :-( | ||
| TimToady | rakudo: say ().reduce(&[~]) | 17:55 | |
| jnthn | Aye, people are being a tad overzelous with the constraints. :-( | ||
| p6eval | rakudo ec69e2: OUTPUT«Statement not terminated properly at line 1, near "(&[~])"current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)» | ||
| jnthn | TimToady: We don't parse the operator syntax yet. :-( | ||
| pmichaud | anyway, the definition for .join looks wrong to me. | ||
| jnthn | Aye, relying on reduce function is probably a bad idea. | ||
| pmichaud | and I think I might just prefer the PIR version anyway. | ||
| jnthn | Well, given Parrot has a built-in join... | 17:56 | |
| pmichaud | fixing. | ||
| skids | Well, some of the constraint problems are coming from the protos taken from S32 and other docs. | ||
| TimToady | why use reduce when you can use recursive lambdas :) | ||
| jnthn | May as well make use of the thigns Parrot does give us. ;-) | ||
| pmichaud | I should go through and eliminate the constrants from S32 | ||
| fixing join. | |||
| jnthn | TimToady: Because we didn't implement &?ROUTINE yet. ;-) | ||
| erm | |||
| &?BLOCK | |||
| TimToady | well, there's always *named* lambdas... | 17:57 | |
| or even my $x = { ... $x()... } | 17:58 | ||
| jnthn | True. | ||
| skids | so now that everyone who builds frequently is awake, anyone ever notice a spurios segfault during rakudo build steps (parrot invocations?) | ||
| jnthn | I always think "anonymous" when I see "lambda" | ||
| skids | Becuase if so, I know how to agrravate the problem. | ||
| TimToady | you're putting me to sleep ... | ||
| pmichaud | skids: I haven't noticed one, no. | ||
|
17:59
rblasch joined
|
|||
| jnthn | Computer science degree has gotta be good for something. ;-) | 17:59 | |
| TimToady | yeah, I should get me one of those some day... | ||
| jnthn | skids: I didn't notice that...only very occasional things when a realclean was needed or something. | ||
| TimToady | meanwhile, it's off to Fry's & | 18:00 | |
| skids | Well, setting parrot/src/hash.c INITIAL_BUCKETS to 4 exposes a race quite nicely, FWIW. | 18:01 | |
| jnthn | As in race condition? | 18:02 | |
| skids | If I am masochistic enough this weekend I may even manage to track down why. | ||
| Yeah, segfaults on some runs, not others. | |||
| jnthn | Uff. | ||
| skids | Probably just a missing write barrier, there's a couple in there. | ||
| jnthn | Did you think setting it to 4 would get us a small performance win? | 18:03 | |
| skids | Setting to 8 gives a 1% speed gain and seems pretty stable. | ||
| 4 was about 2%. Stats are in the backlog | |||
| Matt-W has not had a build segfault for ages | |||
| skids | But it probably depends highly on your cache. | ||
| might be more for 64bit | 18:04 | ||
| jnthn | We use hashes extensively for named lookup, so profiling/optimizing Parrots hashes (without introducing segfaults ;-)) is perhaps a good place to look for performance improvements. | 18:05 | |
| skids | Yeah I've been looking at that a bit. | ||
| phone | |||
| skids hates cell phone spam, someone needs to arrest those people. | 18:06 | ||
| Parrot code seems to have been optimized by someone who overvalues CPU cycles. | 18:07 | ||
| jnthn | Indeed. | ||
| skids | And doesn't grok the impact of present/future 8 byte pointers. | ||
| Stats on hash accesses by the way, from earlier: | 18:08 | ||
| '1.say' hash number of elements % operations (0 to 8, then 63+) | |||
| reads: 0.28 64.50 13.50 3.51 0.46 0.20 0.19 0.37, 12.72 | 18:09 | ||
| dalek | kudo: cacc976 | pmichaud++ | src/setting/Any-list.pm: Rewrite Any.join() to avoid the "Cannot reduce() empty list" error. |
||
| skids | writes: 14.23 9.03 6.18 4.40 3.58 2.96 2.39 2.18, 29.80 | ||
| So having a very efficient 1 and 2 element hash would be key. | |||
| jnthn | Certainly biased towards the lower end. | ||
| Is that compiling 1.say or just running it? | 18:10 | ||
| skids | Well, except for the const_string hash. | ||
| running it. | |||
| pmichaud | we also end up with a ton of 0-element hashes, because of :named :slurpy | 18:11 | |
| jnthn | Aye. | 18:12 | |
| skids | But we seem to only write them out and then forget about them. | ||
| So I was thinking maybe making hash keep the buckets in its own PMC as a union with the bs/bi and other elements, then autoenlarge to a alloced store after. | 18:14 | ||
| literal | std: &foo | ||
| skids | Also no real reason to use real pointers in the bs, offsets would do and not need relocation. We can afford the math. | ||
| p6eval | std 26622: OUTPUT«ok 00:03 47m» | ||
| jnthn | We'd get better cache locality with that? | 18:15 | |
| skids | With the mini hashes yes, the pointer thing no, but it would cheapen realloc CPU-wise | 18:16 | |
| And if the offsets could be made a smaller datatype for small chunks, yes | |||
| jnthn | Sounds worth exploring/benchmarking. | ||
| skids | But once you get that far might as well consider an entirely different hash structure. | 18:17 | |
| It's the sort of think I like to do, and will if I can clear my head of $REAL_WORLD and $DAYJOB often enough. | |||
|
18:18
lumi joined
|
|||
| skids | But I'm still kinda fuzzy on GC stuff so that leaves me with some unknowns. | 18:18 | |
| Oh, other stats, but may not be from 1.say: inserts: | 18:20 | ||
| 28.01 13.69 4.43 3.36 2.76 2.62 1.84 1.67 | |||
| 6.13% for 63 elements plus | |||
| which is probably all const_string | 18:21 | ||
| dalek | kudo: 06f0ae8 | pmichaud++ | : Merge branch 'master' of [email@hidden.address] |
18:37 | |
| kudo: d4a0b3b | pmichaud++ | docs/spectest-progress.csv: spectest-progress.csv update: 378 files, 10991 passing, 0 failing |
|||
|
18:38
kingdong joined
18:53
kingdong left
18:55
rindolf joined
18:57
payload left
19:32
justatheory joined
19:33
finanalyst left,
rindolf left
|
|||
| PhatEddy | @tell jnthn if I recode the pir get in classes/IO.pir pretty much like pop in classes/Array.pir and export with to_p6_multi the "get" setting problem goes away/works. | 19:35 | |
| lambdabot | Consider it noted. | ||
|
19:41
payload joined
19:46
M_o_C joined
19:48
renormalist joined
|
|||
| s1n | rakudo: sub test($a, %b) { say "oh hai"; }; test('foo', <bar baz>); | 19:56 | |
| p6eval | rakudo d4a0b3: OUTPUT«Parameter type check failed; expected something matching but got something of type List() for %b in call to testcurrent instr.: 'die' pc 16538 (src/builtins/control.pir:225)» | ||
|
19:56
payload left,
payload1 joined
|
|||
| s1n | does <> mean list? i thought i could assign key/value pairs that way | 19:57 | |
|
19:57
dukeleto left
|
|||
| s1n | doh, i think S02 says <a b> is ('a', 'b') and not {'a', 'b'} | 19:58 | |
|
19:59
dukeleto joined,
dukeleto left
20:01
payload joined,
payload1 left
20:03
olaf_ joined
20:04
ZuLuuuuuu left
20:19
meteorjay joined
|
|||
| jnthn | s1n: Maybe you wanted :a<b> | 20:25 | |
| lambdabot | jnthn: You have 1 new message. '/msg lambdabot @messages' to read it. | ||
| jnthn | @tell PhatEddy ah, sounds like a conflict between Parrot multis and Perl 6 multis then... | 20:26 | |
| lambdabot | Consider it noted. | ||
|
20:27
amoc^ left
20:28
amoc joined
|
|||
| PhatEddy | jnthn: should I still do a rakudobug? | 20:29 | |
| lambdabot | PhatEddy: You have 1 new message. '/msg lambdabot @messages' to read it. | ||
|
20:33
ingy left
20:34
ingy joined
20:37
kane_ left,
kane_ joined
20:38
s1n left
|
|||
| meppl | good night | 20:43 | |
|
20:44
meppl left
20:48
Whiteknight left,
Whiteknight joined
21:09
dukeleto joined
21:12
ZuLuuuuuu joined
21:19
PacoLinux left
21:20
PacoLinux joined
21:21
DemoPhreak joined
21:28
payload left,
payload1 joined
21:30
olaf_ left
21:32
dduncan joined
21:34
jhuni joined,
DemoFreak left,
DemoPhreak is now known as DemoFreak
21:52
s1n joined
21:56
payload1 left,
payload joined
22:02
rehall joined
22:04
rehall left
22:07
ingy left
22:09
M_o_C left
22:15
iblechbot left,
Kisu joined
22:16
nbrown_ joined
22:17
ingy joined
22:18
nbrown_ left,
nbrown_ joined,
nbrown left,
nbrown_ is now known as nbrown
22:20
rblasch left
22:28
wormphlegm joined
22:35
justatheory left
|
|||
| spx2 | can I do a negative offset seek on SEEK_END ? | 22:41 | |
|
23:03
renormalist left
23:20
wormphlegm left
23:24
ZuLuuuuuu left,
justatheory joined
23:25
PhatEddy left
23:31
justatheory left
23:32
MariachiElf joined
|
|||
| MariachiElf | rakudo: say 'hi' | 23:33 | |
| p6eval | rakudo d4a0b3: OUTPUT«hi» | ||
|
23:39
Limbic_Region joined
|
|||
| eternaleye | I just had an interesting idea for chaining comparisons on junctions. | 23:40 | |
| Currently, my $a = 1|4|7; my $b = 2|5|8; my $c = 3|6|9; if( a < b < c ) { say ($a, $b, $c).join(' : ') } doesn't dwim. A simple way to make it dwim might be to make the chained comparison autothread like a block, such that $a < $b < c would become 1 < $b < $c, 2 < $b < $c, and 3 < $b < $c. The it would autothread on $b, $c, etc. | 23:44 | ||
| *Then | 23:45 | ||
| Hm, that if should havce sigils, and shouldn't have parens | |||
|
23:46
dukeleto left
|
|||
| eternaleye | Then we could make it so that branches taken based on the chained comparison use the autothreaded value, instead of the full junction | 23:48 | |
|
23:53
amoc left
23:56
dukeleto joined,
cognominal left
|
|||