»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
00:00
prevost left
|
|||
dalek | rl6-roast-data: dc3fc29 | coke++ | / (4 files): today (automated commit) |
00:10 | |
kudo-star-daily: 3ed1924 | coke++ | log/ (13 files): today (automated commit) |
|||
00:41
BenGoldberg joined
00:58
rurban1 joined
01:01
klapperl joined
01:03
rurban1 left
01:04
klapperl_ left
01:20
jnap1 left
01:35
xenoterracide__ joined
01:41
rindolf joined
01:56
FROGGS_ joined
01:59
rurban1 joined,
klapperl_ joined
02:00
FROGGS left,
lelf left
02:01
lelf joined
02:03
klapperl left,
rurban1 left
02:04
xenoterracide__ left
02:08
fhelmberger joined
02:12
chenryn joined
02:13
fhelmberger left
02:21
jakesyl_ joined
02:22
noganex_ joined
02:25
noganex left
02:28
xenoterracide__ joined
02:30
gfldex joined
02:34
SevenWolf joined
02:39
hoverboard joined
02:40
btyler joined
02:46
firefish joined
03:00
BenGoldberg left,
rurban1 joined
03:04
rurban1 left
03:06
dayangkun joined
03:09
lue left
03:10
xenoterracide__ left
03:16
lue joined,
molaf left
03:20
rindolf left
03:23
xragnar_ joined,
xragnar left,
xragnar_ is now known as xragnar
03:25
rurban1 joined
03:38
lelf` joined
03:41
lelf left
03:46
[Sno] left,
kurahaupo left
03:48
yakudzo left
04:04
kaare_ joined
04:10
erkan left
04:14
chenryn left
04:15
ClarusCogitatio left
04:17
lue left
|
|||
dalek | roast/S26-WHY: 3f19bde | (Rob Hoelz)++ | S26-documentation/why.t: | 04:17 | |
roast/S26-WHY: Use #| instead of #= in why.t | |||
roast/S26-WHY: | |||
roast/S26-WHY: The current version of why.t is actually broken; it is #| that | |||
roast/S26-WHY: is supposed to attach to declarations following it, rather | |||
04:17
dalek left
04:18
dalek joined,
ChanServ sets mode: +v dalek,
ClarusCogitatio joined
04:19
chenryn joined
04:20
lue joined
|
|||
lue | Bah. That's the second time syngen has crashed my computer since I updated to latest everything. Not to mention that when it doesn't, shell() calls that should work return exit statuses of -1 :/ | 04:21 | |
04:34
hoverboard is now known as cholby
04:36
chenryn left
04:39
btyler left
04:40
nhayashi_ left
04:44
chenryn joined
04:51
cholby is now known as moistcherry
04:52
firefish left
04:53
rurban1 left
04:54
mr-foobar left
04:55
nhayashi joined
05:09
kurahaupo joined
05:10
moistcherry is now known as hoverboard
05:25
rurban1 joined
05:29
rurban1 left
05:32
rurban1 joined
05:36
rurban1 left
05:40
hoverboard is now known as hovercraft
05:41
gfldex left
05:49
hovercraft is now known as moistcherry
05:53
colomon left
05:54
colomon_ joined
05:55
moistcherry is now known as cholby
06:00
James-YeJ3TE48lO left
06:05
anaeem1 joined
06:12
darutoko joined
06:13
anaeem1 left
06:14
kjmjlj joined
06:17
kjmjlj left
06:20
cholby is now known as hoverboard
06:21
hoverboard left
06:27
Isp-sec joined
|
|||
sergot | morning o/ | 06:33 | |
06:33
slavik left
06:35
James-YeJ3TE48lO joined
06:38
FROGGS_ left
06:43
erkan joined
06:45
igorsutton joined
06:47
FROGGS_ joined,
FROGGS_ is now known as FROGGS,
djanatyn left
06:49
Tene left
06:50
Tene joined,
Tene left,
Tene joined,
djanatyn joined
06:53
James-YeJ3TE48lO left
06:57
ingy left
06:58
zakharyas joined
06:59
mr-foobar joined
|
|||
moritz | \o | 07:03 | |
FROGGS | o/ | 07:06 | |
07:07
slavik joined
07:11
sqirrel joined
07:20
earlgreyhot joined,
earlgreyhot left,
[Sno] joined
07:30
yakudza joined,
pdcawley joined
07:33
virtualsue joined
07:34
rurban1 joined
07:38
rurban1 left
07:42
ingy joined
07:47
pdcawley left
07:48
pdcawley joined
07:49
dmol joined
07:58
chenryn left,
slavik left
07:59
denis_boyun_ joined
08:04
thou left
08:06
slavik joined,
sqirrel left
08:18
slavik left
08:19
teodozjan joined
|
|||
FROGGS | jnthn: seems like this broke perl6-p (nqp::handle in for loops with labels, probably because of inlining or so) | 08:20 | |
jnthn: f12ff54... Check for poisoned for trying to inline blocks. | |||
jnthn: this is the last that seems to work: e602e68... Avoid messing up nqp::handle in block inlining. | 08:22 | ||
08:26
dakkar joined
|
|||
jnthn | But...what...it makes it inline *less* things... | 08:32 | |
FROGGS: Please try compiling with --optimize=off | |||
FROGGS | k | 08:33 | |
FROGGS is checking out HEAD | |||
jnthn | I'm starting to fear you were relying on an optimization... | ||
FROGGS | probably | 08:34 | |
I just don't see the connection... | |||
well, perhaps I do, not sure | |||
I guess I rely on it inlining several Q:PIR blocks | 08:35 | ||
jnthn | Are they in the same pair of curlies? | ||
FROGGS | no | ||
if $!label { Q:PIR { ... } } else { Q:PIR { ... } } | 08:36 | ||
08:36
rurban1 joined
|
|||
FROGGS | ohh wait, I should have used the 'good' revision to test if it breaks without optimization... | 08:36 | |
08:39
brrt joined
08:40
denis_boyun_ left
08:41
rurban1 left
|
|||
masak | good antenoon, #perl6 | 08:44 | |
FROGGS | hi masak | ||
sjn | \o | ||
FROGGS | hi sjn | ||
masak | ahoj FROGGS, sjn | 08:45 | |
sjn | masak: you wouldn't by any chance still have the slides from that cats & robots talk you did a while back? | ||
FROGGS | jnthn: the 'good' commit also explodes when optimization is turned off.... | 08:51 | |
jnthn: the offending code is in MapIter... | 08:53 | ||
08:53
fhelmberger joined
|
|||
vendethiel | m: class A { method foo { state $ = 5.rand } }; my $a = A.new; say $a.foo; $a.foo; say A.new.foo; | 08:57 | |
camelia | rakudo-moar 77024f: OUTPUT«4.718812561497974.71881256149797» | 08:58 | |
vendethiel | m: class A { method foo { state $ = (1..15).pick } }; my $a = A.new; say $a.foo; say $a.foo; say A.new.foo; | ||
camelia | rakudo-moar 77024f: OUTPUT«444» | ||
vendethiel | well, that's certainly c-like-languages-like ... | ||
m: class A { has $!p; method foo { $!p //= (1..15).pick } }; my $a = A.new; say $a.foo; say $a.foo; say A.new.foo; | 08:59 | ||
camelia | rakudo-moar 77024f: OUTPUT«131314» | ||
09:00
markov joined,
markov left
|
|||
timotimo | o/ | 09:05 | |
vendethiel | o/, timotimo | 09:08 | |
was there a weekly this week ? | 09:09 | ||
timotimo | yas | ||
09:10
chenryn joined
09:24
lelf` left
09:26
brrt left
09:29
kaleem_ joined
09:30
kaleem_ left
|
|||
masak | sjn: I can't find that talk :/ | 09:31 | |
sjn: I save most of them, but I don't know what happened to that one. | |||
09:33
denis_boyun_ joined
09:34
spider-mario joined
09:36
rindolf joined
|
|||
sjn | masak: aw :-( | 09:37 | |
09:37
rurban1 joined
|
|||
masak | indeed; aw :/ | 09:38 | |
09:38
denis_boyun_ left
09:39
denis_boyun joined
|
|||
jnthn | FROGGS: True using ?? !! instead of if { } else { } | 09:40 | |
09:41
rurban1 left
|
|||
FROGGS | jnthn: tried yesterday too and it compiled, but the spectests failed like I WAT | 09:41 | |
doing it again now though | |||
I think the problem about ternary is that Q:PIR has no useful return value, and it explodes then for that reason | 09:42 | ||
09:47
brrt joined
|
|||
FROGGS | jnthn: Error while compiling op if (source text: "??\n Q:PIR {\n .local int argc, count, NEXT, is_sink\n ..."): Cannot infer type from '' | 09:49 | |
09:58
virtualsue left
10:01
kkul joined
10:04
SevenWolf left
10:05
teodozjan left
10:11
pecastro joined
10:22
Isp-sec left
10:24
kurahaupo left
10:27
Celelibi joined
10:29
kaleem_ joined
|
|||
krunen_ | sjn: You know there's video of that talk? www.nuug.no/pub/video/published/goopen2011/ | 10:37 | |
10:37
SamuraiJack joined
10:39
krunen_ is now known as krunen
|
|||
timotimo | o/ krunen :) | 10:42 | |
krunen | \o timotimo | 10:44 | |
timotimo | did the nqp and rakudo internals workshop make you more productive in your day-to-day tasks? :) | ||
krunen | Heh. something like that :/. I have been working on perl6 stuff lately, though :) You'll see more of me in the future, I promise! | 10:48 | |
timotimo | oh, that's way cool :) | 10:49 | |
10:49
chenryn left
|
|||
timotimo | did you follow the latest improvements? | 10:49 | |
i remember back in the nqp and rakudo internals workshop we had a few slides on "moarvm, this new thing we're building which will eventually do cool stuff" and now we have moarvm doing cool stuff | |||
krunen | yeah, It's exciting! | ||
timotimo | hm | 10:57 | |
10:57
SamuraiJack left
|
|||
timotimo | didn't we have a perl6-written irclog bot in here once? moritz? | 10:58 | |
moritz | timotimo: we did have; but iirc it didn't deal gracefully with connection aborts | ||
timotimo | how long ago was that? | 10:59 | |
moritz | maybe a year? dunno | ||
timotimo | do you think current rakudo could do better? | ||
moritz | it might | ||
I didn't have r-m to test back then :-) | |||
timotimo | :3 | ||
timotimo saw masak's cats and robots talk | 11:06 | ||
a nice talk :) | 11:07 | ||
moritz | robocat! | ||
11:29
brrt left
11:31
petercommand left
11:32
carlin joined
11:33
teodozjan joined
11:35
kkul left
|
|||
jnthn | FROGGS: Just end the PIR blob with %r = something_to_return or so, iirc | 11:37 | |
FROGGS | jnthn: that sounds promising! will do! :o) | 11:38 | |
11:39
rurban1 joined
11:44
rurban1 left
|
|||
carlin | the problem with the early (~2010) Perl6 IRC bots was parrot/rakudo leaked memory, so they had to keep being killed and restarted | 11:44 | |
11:46
firefish joined
|
|||
nwc10 | but now we have JVM/Rakudo, so it will all be fine? (Because the JVM would rather fall over than leak if you get your heap size wrong) | 11:46 | |
moritz | now we still need to catch connection timeouts in userland, and reconnect | 11:47 | |
11:55
sftp_ joined
11:57
sftp left,
sftp_ is now known as sftp
11:59
teodozjan left
12:02
James-YeJ3TE48lO joined
12:07
teodozjan joined
12:08
James-YeJ3TE48lO left
|
|||
firefish | How might one interpolate methods like .perl or .WHAT ? I tried my $Str = 'hello'; say " { $Str.WHAT } "; and a few variations. (Notes that less special methods like .elems works as expected) | 12:12 | |
moritz | firefish: .WHAT returns the type object, which stringifies to the empty string plus warning | 12:13 | |
firefish: what say() does is call .gist on its arguments, rather than "normal" stringification | 12:14 | ||
firefish: so you can say " { $Str.WHAT.gist } ", but that's ugly, IMHO | |||
firefish: if you just want the type name, $Str.^name is more direct | |||
firefish | Ahh, Thanks! That helps a lot. | 12:15 | |
moritz | (and .perl returns a normal string, so that's no problem) | ||
masak | .^name is what I use these days. | ||
moritz | another shortcut | ||
m: my $Str = 'hello'; say "Str is $Str.perl()" | |||
camelia | rakudo-moar 77024f: OUTPUT«Str is "hello"» | ||
moritz | if the method call ends in parens, it is interpreted as code | 12:16 | |
inside the double-quoted string | |||
FROGGS | yes, either parens after method calls or put it in {} | ||
I tend to prefer the {}, because it looks mire like an interpolation | |||
more* | |||
12:17
jnap joined
|
|||
jnthn | m: my $a = 42; say "$a is a $a.^name()" | 12:20 | |
camelia | rakudo-moar 77024f: OUTPUT«42 is a Int» | ||
jnthn | Excuse my grammar... :) | ||
firefish | Ah, .^name is defiantly what i needed (removes the parens from the print as well). It seems I was mistaken about .perl. Thanks again! | 12:22 | |
12:22
guru joined
12:23
guru is now known as Guest34799
12:24
amkrankruleuen left,
Guest34799 is now known as ajr_
12:36
colomon_ left
|
|||
masak | m: constant @vowels = <a e i o u>; sub article($word) { ($word ~~ /^@vowels/ ?? "an " !! "a ") ~ $word }; say article("banana"); say article("apple") | 12:36 | |
camelia | rakudo-moar 77024f: OUTPUT«a bananaan apple» | ||
masak | m: constant @vowels = <a e i o u>; sub article($word) { ($word ~~ /^@vowels/ ?? "an " !! "a ") ~ $word }; my $a = 42; say "$a is &article($a.^name)" | ||
camelia | rakudo-moar 77024f: OUTPUT«42 is a Int» | ||
masak | oh, right. | 12:37 | |
m: constant @vowels = <a e i o u>; sub article($word) { ($word ~~ m:i/^@vowels/ ?? "an " !! "a ") ~ $word }; my $a = 42; say "$a is &article($a.^name)" | |||
camelia | rakudo-moar 77024f: OUTPUT«42 is an Int» | ||
masak | jnthn: ftfy ;) | ||
12:37
smls joined
|
|||
smls | lizmat++ # fighting the good fight (against "explicit itemization being ignored for questionable DWIM purposes" craziness) | 12:39 | |
masak | hm, clearly I missed some vital backlog :) | 12:40 | |
lizmat | starting at irclog.perlgeek.de/perl6/2014-07-01#i_8957498 | 12:41 | |
masak reads | |||
12:42
rurban1 joined,
SHODAN left,
amkrankruleuen joined,
amkrankruleuen left,
amkrankruleuen joined
|
|||
masak | for once, I don't have a sense of what's right and what's wrong in that discussion. | 12:44 | |
I just see two smart people (TimToady and lizmat) discussing. | |||
but I do note that there *is* a discontinuity there in the language design, in which the rhs of `my @a = ...` always flattens and the rhs of `my %h = ...` has this extra check for "is it already a hash?" | 12:46 | ||
it makes it slightly trickier to explain to people why `my @a = [1, 2, 3]` gives then an array of *an array* of three items. | |||
(because the corresponding hash assignment gets it right) | |||
12:46
rurban1 left
|
|||
masak | a hobgoblin of foolish consistency would require those two types of assignment to work the same, or at least demand to know the reason they don't. | 12:47 | |
jnthn | m: constant @vowels = <a e i o u>; sub article($word) { ($word ~~ m:i/^@vowels/ ?? "an " !! "a ") ~ $word }; my $a = class User { }; say "$a is &article($a.^name)" | ||
camelia | rakudo-moar 77024f: OUTPUT«use of uninitialized value of type User in string context is an User» | ||
masak | I've never quite found out. | ||
jnthn: might need some tweaking ;) | 12:48 | ||
lizmat | re explaining: irclog.perlgeek.de/perl6/2014-07-01#i_8957778 | ||
masak | lizmat: I'm... 80% sure I agree that's a gotcha and a WAT. | 12:49 | |
lizmat: mainly, I'd like to know who the "detect hash" use case really serves. | |||
it certainly doesn't serve me or my code. | |||
smls | people who don't know that {...} itemizes, I guess | 12:50 | |
lizmat | m: my @a; @a.push:{a=>1}; @a.push:{b=>2}; my %h = @a; say %h.perl # masak: do you expect this result? | ||
camelia | rakudo-moar 77024f: OUTPUT«("b" => 2, "a" => 1).hash» | ||
smls | so they try %hash = { a => 1, b => 2 } but making it an error could easily teach them... :) | 12:51 | |
(error because odd number of items in hash assigment) | |||
12:52
rurban1 joined
|
|||
zengargoyle | my Buf $b; $b ~= pack("N",4); say $b; # hangs instead of throwng some sort of error or working. | 12:53 | |
masak | lizmat: no, certainly not. | ||
lizmat: it feels like Perl 6 is mishandling my containers there. | |||
lizmat: first and foremost, I don't see the logic in it. | 12:54 | ||
moritz thinks that those endless discussions about containers mean that we're doing somethinig wrong | |||
lizmat | the Hash.STORE doesn't see a difference between that and my %h = $%a, $%b | ||
moritz | and I don't mean some details where to treat what as a container, but something more fundamental | ||
smls | moritz: I think this one is a pretty localised problem one, actually | ||
lizmat | which, fwiw, I feel is also mishandling my containers :-) | ||
masak | moritz: I for one greatly prefers Python's container model. | 12:55 | |
12:55
kurahaupo joined
|
|||
masak | moritz: it has a few base types, and it's very clear about what's mutable and what isn't. | 12:55 | |
moritz | smls: I point people at doc.perl6.org/language/containers and they still don't understand if something flattens without trying it out -- I can't blame them | 12:56 | |
12:56
molaf joined
|
|||
moritz | masak: the problem ususally isn't mutability, but flattening | 12:56 | |
and our problem with flattening is that both the verbs and the nouns have a say in what flattens and what doesn't | |||
with two side problems | |||
1) it's often not obvious to what degree an operation flattens | 12:57 | ||
and 2) the specs don't deal with it properly either | |||
sometimes I feel the flatten / non-flatten distiction is so fundamental that it belongs to the same level as type annotations. Or we find a way to greatly simplify them. | 12:58 | ||
smls | moritz: yeah but in this case, the problem isn't the normal flattening rules, but rather that hash assignment subverts them by looking at the type of items and unilaterraly decides to decontainerizing it if its of type Hash | ||
moritz | smls: I agree that that's *a* problem, but that's not the problem I'm talking about right | 12:59 | |
FROGGS | zengargoyle: yes, I seen that too | ||
moritz | smls: just backlog for a month or two, and see how many questions regarding flattening come up here | ||
FROGGS | zengargoyle: happened for me quite a lot when accidently mising up strings and Bufs | ||
moritz | smls: and often we don't have satisfactory/easy answers for why something flattens and something else doesn't | ||
smls | yeah I'm one of the people who complained about the larger problems of P6 flattening before... :) | 13:00 | |
moritz | smls: so, don't complain that I complain about the bigger picture too :-) | 13:02 | |
zengargoyle | FROGGS: i'm just not sure if it's a bug or not. my Buf $b; $b = pack("N",0); $b ~= pack("N",5); ... ; works. | ||
smls | ok :) | ||
FROGGS | zengargoyle: hanging is always a bug | ||
zengargoyle | :) | ||
FROGGS | I guess this works too: my Buf $b.=new; $b ~= pack("N",5); | 13:03 | |
m: say Buf ~ Buf.new(65) | |||
camelia | rakudo-moar 77024f: OUTPUT«(signal )use of uninitialized value of type Buf in string context» | 13:04 | |
FROGGS | m: say Str ~ "a" | ||
camelia | rakudo-moar 77024f: OUTPUT«use of uninitialized value of type Str in string contexta» | ||
zengargoyle | Cannot modify an immutable Buf | ||
FROGGS | I expect the Str behaviour | ||
zengargoyle | my Buf $b=Buf.new; # works | 13:05 | |
13:05
teodozjan left
|
|||
FROGGS | yeah | 13:05 | |
zengargoyle | also had: for @offsets // 0 -> $o {...} not do what i wanted, but not sure if it should or not. | 13:07 | |
smls | moritz: I still feel that the root of the problems of P6 flattening is its dynamic nature, i.e. "flatten or not" is effectively a flag attached to runtime objects and is passed around with them. Whereas in P5, flattening is predictable because it is static: Whether something flattens at any given time, can be decided based on how it appears at the corresponding position in the source code. | 13:08 | |
13:09
ajr_ left
13:10
virtualsue joined
|
|||
zengargoyle | btw, does anybody have any favorite module/code that is non-trivial but non-way-complicated, and quite pretty idiomatic p6. i.e. a good place to pick up and learn things. | 13:11 | |
tadzik | so reasonably advanced thing? | 13:12 | |
moritz | zengargoyle: I like to recommend my JSON::Tiny module, but I'm biased | 13:14 | |
zengargoyle | maybe using Sets or Bags or some other data structures, or objects that postcircumfix [], or Xops and hypers... | 13:18 | |
smls | some Rosetta Code examples maybe? | 13:20 | |
zengargoyle | basically just not something that looks like p5 translated to p6, but something taking full advantage of p6. | 13:21 | |
tadzik | I tried translating a couple of things, but it always made more sense to rewrite it from scratch | 13:22 | |
(File::Find and Text::T9) | |||
actually, the latter might be translated | 13:23 | ||
don't remember | |||
zengargoyle is currently trying to put together a Text::Fortune type module. | 13:26 | ||
which is working but sorta ugly in parts. :) | |||
masak | ship it! | 13:27 | |
zengargoyle | One of the miseries of life is that everybody names things a little bit wrong. —Feynman | 13:28 | |
masak | that's "Richard Feynman", you know. | 13:29 | |
13:29
firefish left
|
|||
masak | sorry, couldn't resist :P | 13:29 | |
moritz | masaktroll! | ||
masak goes back to trolling his source code | 13:30 | ||
moritz wonders if a masaktroll is similar to a moomintroll | |||
tadzik | "One of the miseries of life is that everybody names things a little bit wrong. — Richard Feyneman" | 13:31 | |
deos that qualify as an autopun? | 13:32 | ||
13:35
btyler joined
13:36
telex left,
anaeem1 joined
13:38
anaeem1 left
|
|||
zengargoyle | panda install File::Find; ==> Successfully installed File::Find ; Segmentation fault; panda install Text::T9; Missing or wrong version of dependency 'lib/File/Find.pm'; *DOH* | 13:38 | |
masak | tadzik: yes. | ||
tadzik: though it's easy to miss, methinks. | |||
13:38
telex joined
|
|||
masak | tadzik: my favorite of that pattern: | 13:38 | |
tadzik: "All I'm asking for is that posterity remember who I am -- unknown" | |||
tadzik | :D | 13:39 | |
"Don't believe every quote you found on the internet – George Washington" | 13:40 | ||
13:40
rurban1 left,
hoverboard joined,
bluescreen10 joined
|
|||
moritz | "90% of statistics are actually freely invented" | 13:40 | |
tadzik | and "80% of people believe everything that contains statistical data" | 13:41 | |
moritz | "87.24% of all statistics feign greater accuracy than can be mathematically justified" | ||
masak | and "Accodring to the Institute of Incomplete Statistics, 9 out of every 10" | ||
13:42
Akagi201 joined
|
|||
masak | rd* | 13:43 | |
carlin | 104% of people don't understand percentages | ||
13:43
colomon_ joined
|
|||
krunen | m: my @a=Array.new(a=>1);say @a.perl | 13:43 | |
camelia | rakudo-moar 77024f: OUTPUT«Array.new()» | ||
krunen | m: my @a=Array.new((a=>1));say @a.perl | ||
camelia | rakudo-moar 77024f: OUTPUT«Array.new("a" => 1)» | ||
13:43
igorsutton left
|
|||
krunen | is that a known bug? | 13:45 | |
masak | notabug. | ||
passing named args to anything assumes there's a named param on the other side to match it. | |||
if there isn't, well, too bad. | |||
you need the parens there to turn it from a named param into a Pair. | 13:46 | ||
krunen | m: my @a=(a=>1);say @a.perl | ||
camelia | rakudo-moar 77024f: OUTPUT«Array.new("a" => 1)» | ||
krunen | m: my @a=Array.new("a"=>1);say @a.perl | ||
camelia | rakudo-moar 77024f: OUTPUT«Array.new("a" => 1)» | ||
masak | or quotes. | ||
krunen | ok | ||
13:48
thou joined,
rurban1 joined
|
|||
moritz | m: multi a(:$a!) { 'named' }; multi a($a) { 'positional' }; say a(a => 1); say a("a" => 1); say a((a=>1)); | 13:48 | |
camelia | rakudo-moar 77024f: OUTPUT«namedpositionalpositional» | ||
13:49
rindolf left,
dmol left
|
|||
smls | r: .say for <a b c>.permutations; | 13:50 | |
camelia | rakudo-{parrot,jvm,moar} 77024f: OUTPUT«a b ca c bb a cb c ac a bc b a» | ||
smls | hm, my r-m REPL complains "Cannot call 'postcircumfix:<[ ]>';" | 13:51 | |
should probably update :) | |||
jnthn | I think we fixed that over a month ago... :) | 13:52 | |
masak | keep up! :P | 13:53 | |
13:54
zakharyas1 joined,
FROGGS left
|
|||
smls | when is the next R* planned? | 13:55 | |
13:55
zakharyas left
|
|||
masak | *gasp* -- we don't have a release manager for July! | 13:56 | |
hey, any volunteers for release manager this month? | |||
moritz | or for June, for that matter | ||
(R*, I mean) | |||
masak | oh, I meant R. | 13:57 | |
who wants the *honor* of releasing Rakudo this month? :) it's on the 17th. a Thursday. | |||
I can make a deal with someone who wants to grab either July or September -- I can grab the other one. | |||
13:58
SamuraiJack joined
|
|||
jnthn | Yes, but R* could rather do with release managers too. | 14:00 | |
And the answer to "when do we get one" is "when somebody steps up to do it". | |||
masak | how come that's the bottleneck for R* but almost never for R? | 14:01 | |
is it to do with the fact that we don't have a regular schedule for R* releases? | |||
moritz | masak: R has spectests, which everybody runs | ||
masak: R* has lots of module tests that often fail, and cause problems | |||
masak: and the release manager has to deal with that | |||
masak | :/ | ||
moritz | so it's a lot more hassle/work | ||
14:01
smls_ joined,
teodozjan joined
|
|||
masak | and [Coke]++ and others are helping by monitoring the stuff, but it's not enough? | 14:02 | |
moritz | masak: monitoring alone doesn't fix anything | ||
masak | ah, troo. | ||
is there something we know we could do to make this less of a hassle for a R* release manager? | |||
14:02
smls left
14:03
warlock_ joined
|
|||
masak | I honestly don't know the answer to that question, even if it's obvious. | 14:03 | |
moritz | well, there are fancy automation schemes you could do | ||
like, if some tests fails, try again with the last released rakudo | |||
if they still fail, open a bug report for the module | |||
if not, open a bug report for rakud | |||
o | |||
but *fixing* those things can never be automated, I fear | 14:04 | ||
masak | *nod* | ||
"open a bug report" has some appeal. | |||
I could also envision a (Perl 6) bot flagging things when they break. | |||
nwc10 | that last one is probably the most useful of the "automation" tasks | 14:05 | |
masak | plus providing a daily report so things don't get forgat. | ||
forgut* | |||
I feel like the problem is partly that these failures are too silent, and don't enter "the community" as something visible. | |||
moritz | agreed | 14:06 | |
masak | instead it falls on (and risks burning out) silent heroes in the background. | ||
nwc10 | other than this channel, what community is there? | ||
masak | ...I meant the channel :) | ||
ok, I hereby promise some weekend time to build a bot that does this. seeking a collaborator if someone feels so inclined. I also promise to maintain/admin whatever's the result. | 14:07 | ||
moritz | ++masak | 14:08 | |
nwc10 | ++masak | ||
nwc10 apologises for not being able to volunteer to help | |||
masak | I do this because I love you guys. and I want Perl 6 to do well. and R* releases seem a sore spot right now. | ||
14:09
[Sno] left
14:10
raiph joined
|
|||
raiph | .oO ( imagines #| and #= became #> and #< instead and the end delimiter for #< was either newline or > ) | 14:11 | |
14:12
kkul joined
|
|||
krunen | masak, I was just about to volunteer. Although I'd much rather work together with you. | 14:12 | |
masak | \o/ | ||
krunen: synchronize watches! let's find a time when we sit down and beat out a bunch of TDD tests during an hour or two. | |||
krunen | seems like a nice way to get a better overview | ||
masak | aye. | ||
suggested name: 'overviewbot' :) | 14:13 | ||
moritz | call it smokeextractor | ||
:-) | |||
masak | it should emit messages like: "it seems like Bailador just broke after Rakudo commit 7884a. it now fails 3 tests." | 14:14 | |
14:15
teodozjan left
|
|||
masak | and "hey, just wanted to remind you that Bailador is still busted. :/ might want to check out what it was in Rakudo commit 7884a that broke it." | 14:15 | |
that's for the one-module-broken case. | |||
if there are more modules, it needs to summarize, and probably put up a list of modules and failures somewhere. | 14:16 | ||
krunen | masak: tomorrow or friday evening? sunday? | ||
carlin | I like colomon_++'s module smoke tests page, although it's been down for about the last week :( | ||
moritz | yes, that's another problem; we have a bit of infrastructure, but it's mostly maintained by single individuals, and not linked to from perl6.org | 14:17 | |
so if you don't use it every day, you have trouble finding that stuff | |||
colomon_ | The smoke test hasn't run successfully since June 17th. :( | 14:18 | |
moritz | :( | ||
masak | krunen: Friday evening oughta work. | ||
still wanting a Rakudo release volunteer, people! | |||
moritz | fwiw I'm locally testing a 2014.06 R* | ||
masak | moritz++ | 14:19 | |
moritz | I can push my changes, but that doesn't (yet?) mean I'm committed to actually doing the release | ||
masak | of course. | ||
dalek | ar: 2504edf | moritz++ | tools/star/Makefile: bump some versions to 2014.06 |
||
ar: c430b44 | moritz++ | modules/ (6 files): Update submodules |
|||
ar: 7377a69 | moritz++ | / (2 files): bump more versions |
|||
colomon_ | And the web site is just a port open on my Linux server in the basement, informal enough I haven't set up anything to automatically run it or anything. So right now every time my the window on my laptop closes we lose the smoke test site. | ||
moritz | colomon_: I can give you an account on the box that hosts camelia | 14:20 | |
colomon_: would you be willing to set up a smoker there? | |||
colomon_: I can help maintain it, if there's a wee bit of documentation | |||
masak | ooh, someone++ has upgraded the badges on modules.perl6.org/ | ||
colomon_ | I'd certainly be willing to set up the smoker results site there. | ||
and if it handles p6 okay, setting up the smoker itself there wouldn't be hard either. | 14:21 | ||
moritz | yes, it build rakudo on all backends regularly | ||
timotimo | i wonder how long it'll be until we need to think about someone pwning our infrastructure via the ecosystem | 14:22 | |
colomon_ | biggest issue really is getting emmentaler working (for parrot again, for jvm and moar for the first time) | ||
krunen | masak: I'll be hanging out here on friday. | 14:23 | |
masak | krunen: me too. looking forward to this. | 14:24 | |
timotimo | what "this" are we talking about? | ||
hoelzro | morning #perl6 | ||
masak | timotimo: backlog 12 minutes or so. | ||
timotimo | ah, a bunch of tests for the overviewbot | 14:25 | |
masak | aye. | ||
14:26
btyler left
|
|||
masak | new suggested names: 'singebot', 'smolderbot', 'kindlebot'. | 14:26 | |
carlin | overseerbot | ||
timotimo | emberbot? | ||
masak | ooh. | ||
moritz | emmenbot? | ||
or emmentalerbot | |||
emmabot! | 14:27 | ||
masak | emmabot! | ||
moritz | or just "emma", with a slight pun on emmentaler | ||
hoelzro | raiph: that would probably be more obvious | ||
I think the idea of a CI-like system for P6 modules | |||
masak | with associations to 'ember', 'emmentaler' and strangelyconsistent.org/blog/the-pe...-perl-meme | ||
jnthn | I'm quite sure the nick "emma" will already be taken on freenode :P | ||
masak | ...and I want '-bot' in the name. | 14:28 | |
clkao | q/win 28 | ||
masak hugs clkao, good irssi user | |||
14:28
dayangkun left,
Gothmog_ joined
|
|||
masak | clkao: did you know about Alt+A? I just learned about it the other week. it's awesome. | 14:28 | |
hoelzro looks for Alt-A | 14:29 | ||
timotimo | "next buffer with activity in it" | ||
hoelzro | ha | ||
I wrote my own key binding for that a while ago, being ignorant of Alt-a's existence... | 14:30 | ||
masak | :) | 14:31 | |
14:31
FROGGS joined
|
|||
carlin | (E)valuates (M)any (M)odules (A)utomatically | 14:31 | |
masak | timotimo: not just that, it prefers "red" buffers where you were directly addressed to "white" ones where you weren't. | ||
clkao | masak++ | ||
timotimo | aye | ||
masak | while we're on the topics, check out bash and Ctrl+R. it will *blow your mind*. | 14:32 | |
topic* | |||
timotimo | hah | 14:34 | |
in fish, when you type something and hit the up arrow, it'll do reverse history search and show the matched parts highlighted | 14:35 | ||
masak | krunen: github.com/masak/emmabot | ||
krunen: and you just got access. | 14:36 | ||
...and anyone else who asks will get access, too. though things aren't likely to turn interesting until Friday. | |||
jnthn | aww, dang | 14:37 | |
uh, ww | |||
hoelzro | so I have a bit of a question about extending Rakudo | ||
I'm trying (hopefully not in vain) to implement #= | |||
timotimo | ... don't we have that already? | ||
colomon_ | oh, I missed all the conversation on module borkage reporting. I've always meant to tie something in with the smoke tester.... | 14:38 | |
hoelzro | timotimo: no; actually the existing impl is wrong | ||
well, tbf, roast is wrong | |||
timotimo | oh damn | ||
hoelzro | I updated roast in my S26-WHY branch | ||
that was the easy part =) | |||
krunen | masak: ok, great. | ||
hoelzro | #= currently implements leading directives | ||
it's supposed to be trailing | |||
timotimo | and #| does the opposite of what it should be doing as well? | 14:39 | |
hoelzro | I've changed #= to #| (which *is* leading) | ||
timotimo | can't you just switch them? :) | ||
hoelzro | timotimo: #| doesn't work at all | ||
it's NYI | |||
and outside of my branch, not referenced in roast at all =( | |||
masak | colomon_: not too late! any and all suggestions welcome. | ||
14:40
donaldh joined
|
|||
masak | colomon_: on Friday I think we'll just write the dependency-independent parts. and then we can think of how to tie it to the smoke tester, and where to deploy it. | 14:40 | |
moritz offers host07 for deployment (that's the host that camelia runs on) | |||
colomon_ | masak: moritz++ has me working on getting the smoker up on host07.perl6.org as we speak | 14:41 | |
hoelzro | so I'm looking for suggestions on how to properly implement #= | ||
since the rules seem to make it kind of hard | |||
I was thinking of modifying blockoid to take an optional parameter on whether or not to try parsing such a comment | 14:42 | ||
14:42
cognominal joined,
chenryn joined
|
|||
masak | colomon_: ah, excellent. | 14:43 | |
colomon_: hm, we could either have the bot run there too, or run somewhere else and just ask the smoker for some JSON or sump'n. | |||
moritz | masak: running the bot there too would be fine | 14:44 | |
14:44
kkul left,
teodozjan joined
|
|||
moritz | masak: we're already using a non-personal user account into which you could log in too | 14:44 | |
14:45
vike left
|
|||
FROGGS | moritz: that planeteria thingy does not seem to like my blog :/ | 14:45 | |
14:45
salv0 left,
salv0 joined
|
|||
masak | moritz: \o/ | 14:46 | |
moritz: I was worried about that part. now I can focus on the fun of implementation instead. | |||
moritz++ | |||
I feel I've been relatively absent from #perl6 during the first half of this year. it feels nice to be back. :) | 14:47 | ||
moritz | masak: welcome back :-) | 14:48 | |
14:48
vike joined
|
|||
moritz | so far the R* module tests (on parrot) look clean | 14:49 | |
FROGGS | the moar tests should also be clean | 14:54 | |
14:55
virtualsue left
|
|||
FROGGS | I'm not sure about the correct module versions though | 14:55 | |
moritz | I just did a 'make modules-test', and at the end there was no message that anything failed | ||
I hope that means that everything was OK :-) | |||
FROGGS | hmmm | ||
moritz | if not, we have a tooling problem. | ||
FROGGS | I redirect that usually to a file and then grep for FAIL | ||
moritz | ok, m-spectest was also clean | 14:56 | |
FROGGS | because it will continue on FAIL, and I don't remember seeing a message at the end | ||
moritz | oh come on | ||
that's just... sad. | |||
masak: ^^ another thing that can be improved, and would lift the maintainer's burden | |||
colomon_ | woof, 264 seconds for stage parse | 14:57 | |
nwc10 | which backend? | ||
colomon_ | parrot | ||
moritz | afk | ||
masak | moritz: indeed. | 14:58 | |
FROGGS | mine takes 140s | ||
(moar takes 45s) | |||
colomon_ | uh oh | 14:59 | |
error:imcc:syntax error, unexpected DOT, expecting '(' ('.') | |||
in file 'src/gen/p-CORE.setting.pir' line 147823 | |||
15:00
brrt joined
|
|||
FROGGS | colomon_: we're trying to fix that right now | 15:01 | |
jnthn | decommute & | ||
colomon_ | FROGGS: ah, is parrot build broken everywhere? | 15:02 | |
FROGGS | rakudo HEAD is broken | 15:03 | |
colomon_ | :( | 15:04 | |
15:05
virtualsue joined
15:06
xenowoolfy joined
|
|||
teodozjan | anyway is parrot 6_5_0 ok? i've tried to checkout Gdansk tag and it compiled but gone wild with IMHO total random errors in mu script | 15:07 | |
s/mu/my/ | |||
during runtime | 15:09 | ||
15:11
xenowoolfy left
|
|||
FROGGS | teodozjan: 6_5_0 is okay | 15:13 | |
teodozjan | FROGGS: so I will try again with Gdansk on totally clean sources | 15:16 | |
15:17
sjn_roadie joined
15:19
denis_boyun left
15:23
treehug88 joined
15:28
warlock_ left
15:35
sqirrel joined
|
|||
FROGGS | teodozjan: that really should work | 15:40 | |
teodozjan | froggs: it doesn't :D I will try again without --jobs option that i discovered today | 15:42 | |
psch | hi #perl6 | 15:47 | |
psch apparently forgot to turn his computer off yesterday. | |||
colomon_ | moritz++ | 15:49 | |
15:51
raiph left
|
|||
teodozjan | meanwhile (I'm compiling on laptop) I've tried to switch to moar but there is issue with JSON::RPC that I cannot understand so cannot report. Panda installs it, tests pass but when I use JSON::RPC::Client in my code it fails during compilation: 'cannot invoke null object', I guess it's phasers related and optimization | 15:52 | |
15:52
brrt left
|
|||
FROGGS | ewww | 15:52 | |
I think I've seen that before in JSON::RPC | 15:53 | ||
but I forgot what it was | |||
teodozjan | this one? github.com/bbkr/jsonrpc/pull/11 | ||
FROGGS | no, it was something else, just seen it like two weeks ago | 15:54 | |
15:55
zakharyas1 left,
virtualsue left
|
|||
TimToady | I think I already said that I'm okay with my %hash = { a => 1 } not trying to dwim, but carping instead. | 15:57 | |
(busy helping to run a massive quizzing tournament, so a bit distracted this week) | 15:58 | ||
FROGGS | jnthn: I am sooo stupid I'm trying your suggested Q:PIR fix and i'm using %h instead of %r all the time >.< | ||
hoelzro | I think what I might end up doing is tracking the most recent "first on line" decl, and adding to its WHY when I see #= | ||
does that sound like a feasible approach? | |||
jnthn | FROGGS: It matters that it's a %r I think... r is for result... | 15:59 | |
FROGGS | jnthn: yes, that is also my impression :o) | ||
it is just silly doing that bloody mistake | 16:00 | ||
16:00
fhelmberger left
|
|||
FROGGS | dinner & | 16:00 | |
jnthn | :) | ||
enjoy dinner | |||
teodozjan | FROGGS: In google it apperas more than once irclog.perlgeek.de/perl6/2014-06-03 enjoy your meal | 16:01 | |
16:01
virtualsue joined
16:13
[Sno] joined
|
|||
colomon_ | moritz++ | 16:13 | |
16:20
chenryn left
16:21
PZt left
16:26
Akagi201 left
16:27
Rotwang joined,
Akagi201 joined,
Akagi201 left
|
|||
teodozjan | bye | 16:29 | |
16:29
teodozjan left
|
|||
FROGGS | hmmm | 16:29 | |
16:30
sqirrel left
16:32
kaleem_ left
16:33
virtualsue left
16:43
donaldh left
16:44
SamuraiJack_ joined,
SamuraiJack left
16:49
denis_boyun joined
17:00
dakkar left
17:03
anaeem1_ joined
17:10
SamuraiJack_ left
17:13
rindolf joined
17:17
pecastro left
|
|||
zengargoyle | i think i saw this brought up before... how does one test !private methods/attributes of a class from a .t type test? | 17:31 | |
17:34
dmol joined
|
|||
jnthn | Did the answer go something like "there's no easy way because it's a bad idea"? :) | 17:37 | |
Seriously, though, tests that depend on private stuff are more of an impediment to refactoring than they are a supporter of it. | |||
timotimo | no no, things you'd regularly do with private methods, you should really do with lexical subs inside the class! | 17:38 | |
that way you can't get at them at all! | |||
jnthn | Not at all; subs can't get at the attributes, and factoring stuff out into private methods is really useful | ||
17:38
denis_boyun___ joined
|
|||
zengargoyle | probably, but when building it seems like it would be nice to test Obj.new.private('foo') | 17:39 | |
jnthn | But the point of encapsulation is to retrain freedom to refactor what's on the inside; coupling tests to it is a great way to lose that freedom. | ||
zengargoyle | until you worked out any bugs / errors | ||
17:39
denis_boyun___ left
|
|||
zengargoyle | other than adding a temporary public wrapper i guess. | 17:40 | |
17:40
denis_boyun_ joined,
denis_boyun left
|
|||
jnthn | Well, you can put the temporary public wrapper in an augment in your tests. | 17:40 | |
So it keeps it together with them. | |||
And means it won't accidentally get left behind in the real code. | 17:41 | ||
From experience, though, my tests have been more valuable to me since I started considering them as just another client of the public API, and focused on behavioral testing. | |||
zengargoyle | yeah, i probably will agree once i can perl6 well enough to not blow up so often. | 17:42 | |
timotimo | jnthn: in that case, make the attributes lexical variables! :P | ||
zengargoyle | just looking for something other than leaving public and going back and changing later. | 17:43 | |
jnthn | timotimo: I still want them to be per instance. :) | ||
zengargoyle: OK, then the augment route could well work for you. | |||
timotimo | then you can put the class itself inside the new method | ||
and the lexical values next to it :P | |||
jnthn | timotimo: I think you're describing JavaScript :P | ||
timotimo | JS is so popular, obviously they're doing OOP extremely right | ||
jnthn | And yeah, having your privates just be lexicals is cute in a way. :) | ||
timotimo | i'm not that interested in having text on my ... privates ... | 17:44 | |
that joke was kind of in poor taste :| | |||
jnthn | ...wtf :) | ||
17:45
denis_boyun_ left,
Sqirrel joined
|
|||
jnthn | For that, I'm going to set you the task of trying to teach Moar spesh to turn named lexical lookups that the compiler didn't resolve into index ones :P | 17:45 | |
timotimo | is that related to the new scope you came up with for role attributes? | 17:46 | |
"typevar" scope | |||
jnthn | No, it's just that as I was working on that I realized that we weren't doing the possible name -> index thing. | ||
And that it saves some hash lookups perhaps | 17:47 | ||
otoh it may be rather rare | |||
timotimo | is that for spesh-time-constant lexical names? | ||
jnthn | Yes. | ||
timotimo | so for example when a constant string is passed as an argument | ||
jnthn | Yeah, though actually: | 17:48 | |
getlex_no w(obj) str :pure :deoptonepoint :noinline | |||
It's always a constant string in that op. | |||
timotimo | ah, okay | ||
jnthn | gee, that's quite an adverbed op too :) | ||
17:48
itz_ joined,
itz_ left
|
|||
jnthn | Not sure how common it is, as I said, so don't expect mega wins...but it may get something in some cases. | 17:48 | |
Especially as the JIT likes indexy things | 17:49 | ||
timotimo | how do i produce code like that? the code i just built uses PseudoStash.new("MY", "$foo") | ||
17:49
raiph joined
|
|||
jnthn | hmmm | 17:49 | |
timotimo | that has &INDIRECT_NAME_LOOKUP around it, so maybe that'd be a point to hit | ||
this was with MY::('$foo') | 17:50 | ||
what were you thinking of? | |||
jnthn | tbh I'd disassemble CORE.setting and see where getlex_n* or bindlex_n* show up | ||
And if the answer is "about never" then it may not be worth working on... | 17:51 | ||
The QAST -> MAST nails a lot of the cases. | |||
Certainly, all the variables. | |||
timotimo | getlex loc_10_obj, lex_Frame_1_&EXHAUST_obj - this is the kind that is efficient, correct? | 17:52 | |
what about getlexstatic_o loc_11_obj, loc_10_str and getlexouter loc_15_obj, loc_14_str ? | |||
loc_str seems like it'd be dynamic and *perhaps* spesh-time constant | |||
jnthn | getlexstatic_o is handled by spesh nicely already | 17:53 | |
timotimo | 2287 times getlexouter | 17:54 | |
does spesh do anything with that at all? | |||
or is that already done in ->MAST? | |||
(i suspect it probably could) | |||
17:54
prevost joined
|
|||
jnthn | oooh | 17:54 | |
getlexouter could be worth speshing for sure | 17:55 | ||
as $_ uses that | |||
And it's named | |||
timotimo | a-ha! | ||
jnthn | And easily made non-named | ||
That's actually more wrothwhlie than my initial suggestion. | |||
timotimo | i'm glad i could point something out :) | ||
FROGGS | timotimo: now you have to do it :o) | ||
jnthn | Well, just looking at the bytecdoe on hot paths (which spesh is good at hutning, so spesh_log is a good place to check) is a good way to find these things. | 17:56 | |
timotimo | aye | ||
i don't have an up-to-date spesh log for setting compilation | |||
17:57
zakharyas joined
|
|||
jnthn | In more pressing matters, I don't have any rice or icecream in the appartment... bbiab :) | 17:57 | |
17:59
Sqirrel left
|
|||
dalek | kudo/nom: bf69225 | (Tobias Leich)++ | src/core/MapIter.pm: unbust rakudo@parrot build Q:PIR blocks in the code of MapIter (for loops) relied on an optimization since the label support was added. Since the optimization creteria has changed, the blocks don't get inlined anymore and the build breaks. The build was already broken when optimization was turned off, just nobody noticed. |
18:02 | |
FROGGS | jnthn: there are many spectest fails :( | ||
but I wanted to push this fix, which is an improvement after all | 18:03 | ||
my guess is that tests that contain for loops fail | |||
18:05
gtodd joined
|
|||
FROGGS | this is one of these fails: | 18:06 | |
Element shifted from empty list | |||
in method Numeric at gen/parrot/CORE.setting:12801 | |||
in block at t/spec/S04-statements/for.rakudo.parrot:253 | |||
that is line 12801: method Numeric(Failure:D:) { $!handled ?? 0e0 !! $!exception.throw; } | 18:07 | ||
perl6-p -e 'say [+] 1, 2' | 18:09 | ||
Element shifted from empty list | |||
hmmm, that doesn't seem related to MapIter... | 18:10 | ||
18:14
troydm joined
|
|||
troydm | jnthn: nice presentation on GC! | 18:15 | |
lizmat is back from cycling | 18:20 | ||
masak / colomon_ : you do realize there is something like CPAN Testers ? | |||
and that mst has graciously offered at the PRS to be working on supporting Perl 6 distributions on CPAN Testers ? | 18:21 | ||
colomon_ | that would be good | 18:22 | |
rurban | FROGGS++ yes. thanks | 18:25 | |
FROGGS | rurban: more tweaks are needed though to get the tests clean | ||
will do that in a bit | 18:26 | ||
rurban: thanks for your help btw | |||
rurban | I just wanted to benchmark the new parrot with rakudo :) | ||
FROGGS | rurban: then do not run benchmark that use reduce ops :o) | 18:27 | |
benchmarks* | |||
rurban | GSOC#2 looks like only max 2% win, even if we fixed the horrible method call implementation | ||
timotimo | aaw | 18:28 | |
so most of the bad performance is our fault? | |||
FROGGS | :/ | ||
timotimo | our as in: nqp and rakudo codebase | ||
rurban | no, still parrot from 2.3 to 3.6 | ||
it started getting better with parrot 3.6. moar still 2x faster | 18:29 | ||
colomon_ | just tried rakudobrew build parrot on my home machine, looks like it may have hung testing File::Find (during panda rebootstrap, presumably) | ||
troydm | I still have a 8 sec perl 6 parrot startup time, I can upload strace if anyone interested | 18:30 | |
FROGGS | 8 seconds... wow | 18:31 | |
troydm | I takes 8 seconds for perl 6 to startup on my virt machine | ||
timotimo | wow, holy wat. | ||
FROGGS | troydm: just for 'say 1' ? | ||
rurban | rakudo-j, right? (jvm) | ||
18:31
sjn_roadie left
|
|||
FROGGS | either it is perl6-j or the memory is limited to a 1GB or so | 18:32 | |
troydm: it takes 0.5s here | |||
troydm | lpaste.net/106805 | ||
18:32
sqirrel joined
|
|||
troydm | rurban: no, parrot | 18:32 | |
timotimo | troydm: can you also use the "perf" tool? | 18:33 | |
troydm | FROGGS: memory isn't limited | ||
timotimo: I don't have it installed there | |||
timotimo: I never used it btw | 18:34 | ||
rurban | troydm: parrot? that's insane. Maybe a wrong rlib path? | ||
troydm | timotimo: is it detailed time measurement tool? | ||
rurban: what is rlib? | |||
jnthn | FROGGS: Ugh...wonder where the fails come from. But glad you could fix the build... | ||
rurban | run-time path to look for .so's | ||
timotimo | it's extremely detailed; if you have the kernel debug symbols installed, too, it'll also give you times spent in kernel functions and it does per-assembly-instruction-profiling (only probabilistic profiling, though) | 18:35 | |
rurban | I can only imagine it runs into a loop or network drive to look for shared libs | ||
timotimo | it's also hard to understand the output, IMO :( | ||
troydm | for reference lpaste.net/106806 | ||
that's perl 5 | |||
jnthn | troydm: Glad you enjoyed the GC talk. | 18:36 | |
timotimo | well, if system time is very high, that means some system call stuff is taking up lots of time | ||
rurban | troydm: can you file ticket at parrot with a detailled system description? I can followup there | ||
FROGGS | jnthn: next I am switching back to the first bad revision from before the fix, and check the tests | ||
I hope they pass with that revision any my patch | 18:37 | ||
masak | lizmat: CPAN Testers would, long term, be an even better solution, yes. | 18:38 | |
colomon_ | CPAN testers would be a great short term solution if it was working already. ;) | 18:39 | |
lizmat | masak / colomon_ : well, that's really up to *us* | ||
dalek | kudo-star-daily: 774d855 | coke++ | log/ (13 files): today (automated commit) |
||
rl6-roast-data: 6bbe79b | coke++ | / (4 files): today (automated commit) |
|||
lizmat | FWIW, I don't think we can have a working CPAN Testers setup until we can install from CPAN (which I believe we are on the brink of being able to now) | 18:40 | |
and have S22 implemented (which I'm working on between too much partying) | |||
jnthn | Even if the thing the bot uses as its data source later becomes CPAN testers, it's still useful to have, so we can keep better track of how we stand to ship an R*. | 18:44 | |
18:45
brrt joined
|
|||
lizmat | ok, I just wanted everybody to be on the same page | 18:46 | |
so that we don't get "I wish somebody had told me about CPAN Testers" later :-) | 18:47 | ||
18:47
PZt joined
|
|||
FROGGS | yeah :o) | 18:47 | |
we'd need to spit out metabase compatible reports at some point | |||
jnthn | nom & | 18:48 | |
18:49
bluescreen100 joined
|
|||
[Coke] would love to help with overviewbo | 18:50 | ||
FROGGS | [Coke]: you are on holiday! go away! :P | 18:51 | |
(was just a joke, really) | 18:52 | ||
masak | lizmat: what you're saying is important. doesn't much change the goal for Friday's hacking, though. | ||
rurban | troydm: posted his strace to lpaste.net/2276809923645931520. parrot looks ok, it starts getting slow with perl6. I guess it's too less memory | ||
masak | lizmat: was planning to make the data source injectable anyway :) | ||
lizmat | okidoki, glad to hear that! | 18:53 | |
18:53
bluescreen10 left
|
|||
[Coke] | FROGGS: excelent point! | 18:55 | |
FROGGS | meh | ||
18:55
gfldex joined
|
|||
troydm | rurban: lpaste.net/8624230172146532352 | 18:58 | |
moritz | host07.perl6.com:8080/report first interemediate result of colomon_++'s and my efforts to make the smoker avaiable to the public | ||
troydm | rurban: btw the previous strace.log was from like 6 hours ago prior to our talk | ||
timotimo | nothing in particular takes up way too much time on its own ... | 19:01 | |
19:02
Isp-sec joined
|
|||
rurban | checked the stats, look ok. checked the brk: look ok, similar timings | 19:02 | |
troydm | memory wise Mem: 2061300k total, 1625868k used, 435432k free, 166220k buffers | 19:03 | |
rurban | the initial .so search path is huge, but the timings for that are not that dramatic | 19:05 | |
colomon_ | moritz++ | 19:07 | |
timotimo | oh no build failure! | ||
(perhaps cairo isn't available on that machine?) | |||
colomon_ | now we just need to fgigure out how to get emmentaler working again... | ||
timotimo | (and gtk3 neither?) | ||
19:08
pecastro joined
|
|||
rurban | A big difference is parrot reading a PBC though. I need 0.04 to read Grammar.pbc. he needs 0.4. 10x slower | 19:08 | |
FROGGS | moritz / colomon_: feature request: I'd like to see my stuff at the top / highlighted by host07.perl6.com:8080/report?who=FROGGS | 19:09 | |
troydm: where is the vmdk/vhd of that vm? on your local hard drive? | 19:10 | ||
timotimo | FROGGS: well, when you go to /report/froggs, you get only your stuff | ||
is that good enough? | |||
FROGGS | ohh | ||
\o/ | |||
moritz / colomon_: feature request closed :D | 19:11 | ||
troydm | FROGGS: yeah, local zfs mirror drive (raid 1, twice read speed) | ||
retupmoca | moritz, *: that reminds me - I have 5 or so open PR's that fix module builds + tests that have been open for over a month | 19:12 | |
dalek | osystem: 5b83ecd | (Tobias Leich)++ | META.list: File::Spec is known as IO::Spec and is in core |
||
retupmoca | do we want to point panda to a fork in the perl6 project, a fork in a new modules project, or just let the PR's sit there? | ||
19:15
brrt left
19:16
teodozjan joined
|
|||
teodozjan | hi again | 19:16 | |
i found that someone made something that I was dreaming of for a long time host07.perl6.com:8080/report?who=FROGGS | |||
but I can't see which backend is used | 19:17 | ||
dalek | p: 816b281 | (Tobias Leich)++ | src/vm/parrot/6model/reprs/CPointer.c: allow CPointer math for parrot backend The memory address of a CPointer can now be read and set. |
||
FROGGS | teodozjan: parrot I think | ||
psch | gist.github.com/peschwa/e5aee72dcce9d4b60ec1 # golf'd test failure of compiled URI.pm; where do i go from here...? :) | 19:19 | |
on jvm, as it happens for star-daily | |||
19:20
zakharyas left
|
|||
rurban | nice dancer buttons, very camelia alike | 19:21 | |
teodozjan | one my module is missing PerlStore | 19:22 | |
rurban | /project/ does not work yet | ||
masak | "why is perl 6 taking so long" -- www.billthelizard.com/2014/01/why-i...ge-so.html | 19:23 | |
moritz | masak: yes, I saw that | ||
masak: along with "why is perlmonks so slow", which made me chuckle | |||
masak | :) | ||
teodozjan | i have only 'why perl is used' :) | 19:24 | |
lizmat | I get popular / ugly / bad | ||
moritz | teodozjan: you have to add 'so' | 19:25 | |
teodozjan | moritz: why is perl so popular | ||
i think google knows my atitude to perl | 19:26 | ||
lizmat | with duckduckgo, I get only "popular" | ||
jnthn | hah, I love the Erlang one :) | 19:28 | |
dalek | ast: 6620326 | (Elizabeth Mattijsen)++ | / (12 files): Fix %h = { a => 1 } confusion |
19:29 | |
jnthn | I think Smalltalk comes off best :) | 19:31 | |
19:32
virtualsue joined,
darutoko left
19:34
itz_ joined
|
|||
rjbs | jnthn: I had trouble getting Smalltalk off, but I had to scrub scrub scrub. | 19:38 | |
jnthn | It's hard to scrub with a mop... | 19:40 | |
lizmat | especially if it is attached later | 19:42 | |
19:46
sqirrel left
|
|||
FROGGS | aww, common... I cannot create a NULL pointer on the jvm?? | 19:48 | |
19:49
pecastro_ joined
19:50
pecastro left,
avuserow joined
|
|||
dalek | kudo/nom: 7bd2971 | (Elizabeth Mattijsen)++ | lib/Pod/To/Text.pm: Fix some more %h = { a => 1 } confusion |
19:51 | |
FROGGS | okay, nvm | 19:53 | |
19:56
virtualsue left
|
|||
teodozjan | is rakudo + parrot HEAD usable? | 20:00 | |
no answer, I assume no then :) | 20:03 | ||
jnthn | teodozjan: I think FROGGS++ was looking into the test fails there. | 20:04 | |
FROGGS | teodozjan: it builds again, but reducing a list for example fails | ||
m: say [+] 1, 2 | |||
20:04
anaeem1_ left
|
|||
camelia | rakudo-moar bf6922: OUTPUT«3» | 20:04 | |
FROGGS | p: say [+] 1, 2 | ||
camelia | rakudo-parrot bf6922: OUTPUT«Element shifted from empty list in method Numeric at gen/parrot/CORE.setting:12801 in sub infix:<+> at gen/parrot/CORE.setting:4203 in sub infix:<+> at gen/parrot/CORE.setting:4201 in sub at gen/parrot/CORE.setting:17577 in block at…» | ||
FROGGS | like this | ||
need to hunt that down | |||
teodozjan | FROGGS: file-find.t takes infinite time | 20:05 | |
FROGGS | okay, will look at that too | 20:06 | |
teodozjan | thanks | ||
20:10
brrt joined
|
|||
dalek | p: 61dbd66 | (Tobias Leich)++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/CPointer (2 files): allow CPointer math for jvm backend The memory address of a CPointer can now be read and set. |
20:12 | |
20:19
raiph left
|
|||
dalek | kudo/nom: 7eaf6c2 | (Elizabeth Mattijsen)++ | src/core/Temporal.pm: Fix some more %h = { a => 1 } confusion |
20:28 | |
kudo/nom: 498480c | (Elizabeth Mattijsen)++ | src/core/Hash.pm: my %hash = { a => 1 } is now an odd numbered fail |
|||
FROGGS | lizmat++ | ||
20:34
kaare_ left
20:35
Rotwang left
|
|||
FROGGS | damn | 20:35 | |
dalek | ast: 403d070 | (Elizabeth Mattijsen)++ | S26-documentation/10-doc-cli.t: Undo unneeded fix |
||
ast: e7deb5d | (Elizabeth Mattijsen)++ | S02-types/assigning-refs.t: Unfudge now passing tests |
|||
lizmat | FROGGS: pletterpet ? | ||
FROGGS | my patch that unbusts the parrot build really is just a partial fix | ||
20:37
lue left
|
|||
lizmat | damn! | 20:37 | |
20:44
rindolf left
|
|||
FROGGS | okay, I'm going to build now a rakudo from before labels where implemented, but I turn off optimization | 20:44 | |
jnthn | FROGGS++ # investigating | ||
FROGGS | jnthn: btw, the OpaquePointer.Int stuff is now there on all backends... I add tests and bump nqp revision, and then you can apply NativeCall #44 | 20:46 | |
porting nativecast to the others will be "fun" | |||
:/ | |||
jnthn | FROGGS: OK, just lemme know when it's ready to apply. | 20:48 | |
FROGGS: Or do you want a NativeCall commitbit? | |||
FROGGS | I take the bit *g* | ||
vendethiel | m: multi a(:$a!) { 'named' }; multi a($a) { 'positional' }; say a(a => 1); say a("a" => 1); say a((a=>1)); # insanity-- | ||
camelia | rakudo-moar 7bd297: OUTPUT«namedpositionalpositional» | ||
FROGGS | the one with the quoted name is clearly a bug | 20:49 | |
the others are correct | |||
jnthn | FROGGS: You got it. | 20:50 | |
FROGGS | jnthn: thank you :o) | ||
jnthn | No, quoting the name means it's not a named arg any more. | ||
Has to be a literal there | |||
FROGGS | that is surprising | ||
20:50
lue joined
|
|||
lizmat | to me this feels it predates the invention of :key<value> | 20:51 | |
20:51
treehug88 left
|
|||
FROGGS | but I think I understand now | 20:51 | |
lizmat | I would argue that only :a(1) would be named | ||
and all others would be positional | |||
jnthn | No. | 20:52 | |
lizmat | jnthn: care to elaborate ? | 20:54 | |
TimToady | foo => 42 is actually the named argument syntax from Ada | ||
and it's what P5ers will reach for | |||
lizmat | but "foo" => 42 would not be a named argument ? | 20:55 | |
jnthn | lizmat: foo => ... is a *really* common way to do that, and often reads a lot more nicely. | ||
FROGGS | they already need to let -foo => 42 go :o) | ||
jnthn | lizmat: Also: we're WAY past the point where such things are up for grabs any more. | ||
FROGGS | jnthn++ | ||
TimToady | in real life people don't pass pairs to a function much unless they're gonna pass a bunch of 'em, in which case just put 'em all in one set of parens | 20:56 | |
or use the quotes | 20:57 | ||
the implication that it should not think about whether the key is a valid identifier | |||
20:57
mattp_ joined
|
|||
TimToady | even if it happens to be one inside the quotes | 20:58 | |
20:58
raiph joined,
mattp_ left
20:59
mattp_ joined
|
|||
lizmat | m: multi a(:$a!) { "named" }; multi a($a) { "positional" }; my $a = "a"; say a(a => 1); say a("a" => 1); say a(|($a=>1)) | 21:00 | |
camelia | rakudo-moar 7bd297: OUTPUT«(signal )namedpositional» | ||
lizmat | seems to segfault on the last one, but only if the positional is before it | ||
m: multi a(:$a!) { "named" }; multi a($a) { "positional" }; my $a = "a"; say a(a => 1); say a(|($a=>1)) # doesn't segfault | |||
camelia | rakudo-moar 7bd297: OUTPUT«namednamed» | ||
FROGGS | eww | ||
jnthn | r: multi a(:$a!) { "named" }; multi a($a) { "positional" }; my $a = "a"; say a(a => 1); say a("a" => 1); say a(|($a=>1)) | 21:01 | |
camelia | rakudo-jvm 7bd297: OUTPUT«(timeout)» | ||
..rakudo-{parrot,moar} 7bd297: OUTPUT«(signal )namedpositional» | |||
lizmat | even on parrot, wow | ||
jnthn | At least they're consistent :P | ||
lizmat | I guess I'll rakudobug this... | ||
jnthn | But yeah, wtf. | ||
Plesae do. | |||
*please | |||
lizmat | #122218 | 21:04 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122218 | ||
21:05
beastd joined
21:07
jakesyl_ left
21:08
hoverboard is now known as cholby
|
|||
FROGGS | jnthn: this line in the setting explodes: gist.github.com/FROGGS/ee29fd60421...ng-nqp-L19 | 21:08 | |
jnthn: do you see a connection to MapIter? | 21:09 | ||
21:09
guru joined,
guru is now known as Guest9704
21:10
cholby is now known as hoverboard,
Guest9704 is now known as ajr_
21:11
brrt left
21:19
gfldex left
21:24
itz_ left
21:28
pippo joined
|
|||
pippo | m: %h = {}; | 21:29 | |
camelia | rakudo-moar 7bd297: OUTPUT«===SORRY!=== Error while compiling /tmp/MyV7QGrFjgVariable '%h' is not declaredat /tmp/MyV7QGrFjg:1------> %h⏏ = {}; expecting any of: postfix» | ||
pippo | m: my %h = {}; | ||
camelia | ( no output ) | ||
lizmat | in a few hours, that will fail with Odd Numbered ... | 21:33 | |
pippo | lizmat: I am confused. {}.WHAT still says it is a hash. | 21:35 | |
so why I cannot assign %h to {} ? | 21:36 | ||
lizmat | because {} is itemized | ||
FROGGS | like [] is an itemized list | ||
lizmat | m: say nqp::iscont({}); say nqp::iscont(%()) | ||
FROGGS | so it is one thing and will land in one slot of the array | ||
camelia | rakudo-moar 498480: OUTPUT«10» | ||
lizmat | m: say %().WHAT | 21:37 | |
camelia | rakudo-moar 498480: OUTPUT«(Hash)» | ||
21:38
BenGoldberg joined
|
|||
pippo | Why then I can do my %h := {} ? | 21:40 | |
<== scratching his head... | 21:41 | ||
21:41
prevost left
|
|||
lizmat | because binding gives you a "view" on something else | 21:42 | |
21:43
teodozjan left
|
|||
vendethiel has heard "I actually didn't want to look at it first because of it's a 'Perl', but wow, it's amazing" | 21:43 | ||
21:43
teodozjan joined
|
|||
lizmat | how about this as a deprecation warning: | 21:43 | |
$ 6 'my %bar = {a => 1}; say %bar.perl' | |||
("a" => 1).hash | |||
Saw 1 call to deprecated code during execution. | |||
================================================================================ | |||
%bar = { ... } called at: | |||
-e, line 1 | |||
Please use %bar = ... instead. | |||
-------------------------------------------------------------------------------- | 21:44 | ||
21:45
pdcawley left
|
|||
dalek | kudo/nom: b8a1883 | (Elizabeth Mattijsen)++ | src/core/Hash.pm: Deprecate %h = {...} rather than make it fail |
21:46 | |
lizmat | vendethiel++ | ||
vendethiel | (so it does have that image - hey, that's what I talked about ! - but the language's so good it doesn't matter :-).) | 21:47 | |
vendethiel has converted 4 friends from 2 yesterday o/ | |||
vendethiel also heard "there's not much beginner material" ... and will be busy fixing that :-) | 21:48 | ||
lizmat | again vendethiel++ :-) | ||
psch | vendethiel++ # writing a beginner tutorial | 21:49 | |
FWIW, i blindly went some way from the test-failure reproduction i pasted earlier, and as it turns out the NPE happens in subcallstaticResolve_nao because Ops.getlex somehow returns null | 21:50 | ||
which, as i understand it, means that the symbol can't be found in the current or any outer callframe | 21:51 | ||
jnthn | FROGGS: Well, the @values could hold a MapIter | ||
psch | which *might* mean that bytecode gen somehow messes up? | ||
jnthn | psch: Most likely, the outer chain is somehow broken. | ||
FROGGS | hmmm | 21:52 | |
jnthn | FROGGS: But wasn't it just constants being passed? | ||
Can .DUMP it I guess to find out | |||
FROGGS | what constants do you mean? | ||
the exploding one liner? | |||
jnthn | I mean, wasn't the failing test just [+] 1,2 or so? | 21:53 | |
21:53
teodozjan left
|
|||
jnthn | In whihc case I don't see where a MapIter would be coming from | 21:53 | |
FROGGS | yes, exactly that | ||
21:55
molaf left,
rurban1 left
|
|||
FROGGS | takes more than three minutes to get the .DUMP :( | 21:55 | |
masak | 'night, #perl6 | 21:56 | |
FROGGS | gnight masak | 21:57 | |
21:57
ren1us joined
|
|||
lizmat | night masak | 21:58 | |
ren1us | okay i seriously suck at this. do you have do anything weird to define a stubbed class? | ||
pippo | lizmat: then {} is used for example for: my %h = 'a' => {'b' => 3}? | 21:59 | |
FROGGS | Array<1>( | ||
:$!flattens(True), | |||
:$!items(QRPA<3>(▶2)), | |||
:$!nextiter(▶Mu) | |||
jnthn: no mapiter :/ | |||
lizmat | this is only about assigning {} to a % | ||
pippo: ^^^ | |||
FROGGS | m: class Foo { ... } # ren1us | 22:00 | |
camelia | rakudo-moar 498480: OUTPUT«===SORRY!=== Error while compiling /tmp/pK_T9dqJHeThe following packages were stubbed but not defined: Fooat /tmp/pK_T9dqJHe:1------> class Foo { ... } # ren1us⏏<EOL> expecting any of: …» | ||
FROGGS | m: class Foo { ... }; class Foo { } # ren1us | ||
camelia | ( no output ) | ||
22:01
rurban1 joined,
bluescreen100 left
|
|||
FROGGS | jnthn: @values only contain one thing, but the while loop that contains the .shift is run twice | 22:01 | |
pippo | night #perl6! | ||
jnthn | OK, well, that rules it out... | ||
22:01
pippo left
|
|||
FROGGS | (the inner while) | 22:01 | |
jnthn | FROGGS: Did you manage to figure out the point at which it breaks (as in, what change did it)? | 22:02 | |
ren1us | huh. that's what i'm doing and it's not really working | ||
dalek | ast: da091b0 | (Elizabeth Mattijsen)++ | S02-types/ (2 files): Adapt tests to %h = { ... } now being deprecated |
||
FROGGS | jnthn: merging the labels in | ||
jnthn | oh, wow...but wait, wasn't that before the last Rakudo release? | 22:03 | |
timotimo | i was confused, too | ||
FROGGS | github.com/rakudo/rakudo/commit/196b4ff55e | ||
jnthn: yes | |||
jnthn: but it survived until you fixed the optimizer :o) | 22:04 | ||
jnthn | Oh... | ||
So it wsa another case of "relies on block flattening"? | |||
I'm also wonder what exactly in that block poisons the optimization... | |||
timotimo | aye, that's unfortunate :( | ||
jnthn | As in, I don't see anything that should | ||
timotimo | maybe we ought to put a "run tests unoptimized" mode in and force that to be run for the release, as well | 22:05 | |
FROGGS | jnthn: I'm not sure... I build the commit before labels were introduced with optimization turned off... but it passed | ||
22:05
rurban1 left
|
|||
FROGGS | I did a moar run with the same output, and it looks like as if parrot ignores the condition of the while loop | 22:06 | |
$i gets two on parrot, but only 1 on moar | 22:07 | ||
jnthn | OK. Well, I think any refusal to block-inline based on poisoning there is bogus. | 22:08 | |
So I'd like to look at that. But that still means there's an issue of some sort with the labels branch. | |||
FROGGS | basically that gives two in that bit of the setting as well: | ||
m: my int $i = 0; say $i while ($i = $i + 1) <= 1 | |||
camelia | rakudo-moar 498480: OUTPUT«1» | ||
timotimo | less poisoning would be more better :) | ||
22:09
smls joined,
smls left,
smls_ left
22:10
Isp-sec left
|
|||
FROGGS | should I also look at nqp's code? the code-gen of while loops? | 22:10 | |
dalek | kudo/nom: f8a9336 | (Elizabeth Mattijsen)++ | docs/ChangeLog: Some Changelog entries |
22:11 | |
jnthn | Could do. | ||
ren1us | FROGGS: that's pretty much how I'm doing it (although I may be missing something). it still says it's never defined, though. | ||
jnthn is really tired, so will get some rest | 22:12 | ||
Will look at the optimizer tomorrow | |||
FROGGS | jnthn: me too | ||
lizmat | good night, jnthn | ||
will also do the same | |||
timotimo | all right, good night you three! | ||
FROGGS | ren1us: is the code short enough to no-paste it? | ||
lizmat | early morning again tomorrow, travel to London | ||
psch | g'night you three | ||
ren1us | FROGGS: Nope, but github.com/ren1us/Research/blob/ma.../Frames.pm (lines 27, 79) | 22:13 | |
FROGGS | ren1us: what if you remove line three? | ||
ren1us | Why did that fix it ._. | 22:14 | |
FROGGS | modules act a bit weird sometimes | ||
ren1us | this is true | ||
22:14
dmol left
|
|||
ren1us | feature or freaky? | 22:15 | |
FROGGS | not a feature I guess | ||
22:18
pdcawley joined
22:20
pdcawley left,
pdcawley joined
|
|||
zengargoyle | github.com/zengargoyle/perl6-Text-Fortune | 22:24 | |
it's horribly ugly at this point, nitpicking welcome as i try to polish it up. | 22:25 | ||
22:26
rurban1 joined
22:27
raiph left
22:29
rurban2 joined
22:30
rurban1 left
22:32
spider-mario left
22:36
hoverboard left
|
|||
ren1us | m: class A { method new(@list) { self.bless; }; }; class B is A { method new() { callwith(@(())); }; }; my $b = B.new; | 22:42 | |
camelia | rakudo-moar b8a188: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in method new at /tmp/DE9mLRpUUM:1 in any call_with_args at src/gen/m-Metamodel.nqp:2967 in block at src/gen/m-CORE.setting:618 in method new at /tmp/DE9mLRpUUM:1 in block …» | ||
ren1us | rakudobug or am i just failing? | ||
psch | m: @(()).WHAT.say | 22:43 | |
camelia | rakudo-moar b8a188: OUTPUT«(List)» | ||
psch | m: my @a = a, @(()), b; @a.perl.say | 22:44 | |
camelia | rakudo-moar b8a188: OUTPUT«===SORRY!=== Error while compiling /tmp/7RhTbVsiU0Undeclared routines: a used at line 1 b used at line 1» | ||
psch | m: my @a = 1, @(()), 2; @a.perl.say | ||
camelia | rakudo-moar b8a188: OUTPUT«Array.new(1, 2)» | ||
ren1us | i suspect that the problem is that behind the scenes, callwith takes in all the params as a list, and it flattens the empty list into nothing | 22:45 | |
psch | m: Mu.new.^signature.params.say | ||
ren1us | m: class A { method new(@list) { self.bless; }; }; class B is A { method new() { callwith(@(()).item); }; }; my $b = B.new; | ||
camelia | rakudo-moar b8a188: OUTPUT«No such method 'signature' for invocant of type 'Perl6::Metamodel::ClassHOW' in block at /tmp/qt0gZEoHOf:1» | ||
( no output ) | |||
psch | eh, how was signature of method again... :) | 22:46 | |
timotimo | m: say Str.^can('lc').perl | 22:47 | |
camelia | rakudo-moar b8a188: OUTPUT«(method lc (Cool: *%_) { #`(Method|48338912) ... },)» | ||
timotimo | m: say Str.^can('lc')[0].signature | ||
ren1us | m: Mu.new.signature.params.say | ||
camelia | rakudo-moar b8a188: OUTPUT«:(Cool: *%_)» | ||
rakudo-moar b8a188: OUTPUT«No such method 'signature' for invocant of type 'Mu' in block at /tmp/QeibjVVJLs:1» | |||
timotimo | ren1us: no, that creates a new Mu object and tries to call a "signature" method on it | ||
psch | m: Mu.^can('new')[0].signature.params.say | ||
ren1us | realized that as i hit enter | ||
camelia | rakudo-moar b8a188: OUTPUT«Mu Any |» | ||
timotimo | :) | ||
psch | thanks timotimo++ | ||
timotimo | yw | ||
psch | i don't think that helps though :D | 22:48 | |
ren1us | but yeah, seems that callwith breaks for list params because it attempts to flatten them | ||
timotimo | does ... not? | ||
ren1us | works with .item tho | ||
psch | maybe i don't understand | sufficiently | ||
in signature | 22:49 | ||
timotimo | |@ expands a listy thing into positionals, |% expands a hashy into nameds | 22:50 | |
psch | and the raw | only works in protos? | 22:51 | |
timotimo | oh | ||
you mean | inside signatures %) | |||
that gives you a snapshot of the "capture" at the point where it sits | |||
m: sub do_it($a, |one, $b, |two) { say one.perl; say two.perl; }; do_it(1, 2); | 22:52 | ||
camelia | rakudo-moar b8a188: OUTPUT«===SORRY!=== Error while compiling /tmp/NXdLvt6yljCannot put required parameter $b after variadic parametersat /tmp/NXdLvt6ylj:1------> sub do_it($a, |one, $b⏏, |two) { say one.perl; say two.perl; }; ex…» | ||
timotimo | oh, right. | ||
m: sub do_it($a, $b, |one) { say one.perl; }; do_it(1, 2); | |||
camelia | rakudo-moar b8a188: OUTPUT«Capture.new()» | ||
jdv79 | if find it odd that recursive regex by capture is not implemented - is that correct? | ||
something like <~~0> | 22:53 | ||
timotimo | m: sub do_it(|c ($a, $b)) { say one.perl; }; do_it(1, 2); | ||
camelia | rakudo-moar b8a188: OUTPUT«one()» | ||
timotimo | m) | ||
m: sub do_it(|c ($a, $b)) { say c.perl; }; do_it(1, 2); | |||
camelia | rakudo-moar b8a188: OUTPUT«Capture.new(list => (1, 2,))» | ||
timotimo | m: sub do_it(|c, $a, $b) { say c.perl; }; do_it(1, 2); | ||
camelia | rakudo-moar b8a188: OUTPUT«===SORRY!=== Error while compiling /tmp/a5HssPJKEUCannot put required parameter $a after variadic parametersat /tmp/a5HssPJKEU:1------> sub do_it(|c, $a⏏, $b) { say c.perl; }; do_it(1, 2); expecting any…» | ||
timotimo | right. | ||
psch | not sure if that makes sense to me right now :) | 22:55 | |
cognominal | I am curious to know how Perl6 internal deals with these expansions and contractions. In many places a call is an expansion that result into a contraction due to a slurpy in the called. And these sometimes happen on many levels (even if I don't have a specific example in mind). | ||
timotimo | |foo noms the capture at that point and is regarded as a variadic | 22:56 | |
psch | cognominal: an example is Mu.new($, *@), fwiw | ||
timotimo | so you can't put requireds after it | ||
but if you put a sub signature into it (what i did with |c ($a, $b) there), you can have a second match process | |||
psch | (half an example at best i reckon) | 22:57 | |
timotimo | if you have a proto foobar(|), that just means anything whatsoever can be passed and if it's onlystar, it'll be passed on, too | ||
it could as well work with callsame/nextsame without an onlystar proto, too | |||
not sure | |||
psch | oh | 22:58 | |
so e.g. multi a ($a, |b) { nextwith b }; multi a(*@b) { ... } | |||
timotimo | oh | 22:59 | |
psch | err, probably with a subsignature behind |b that's already a slurpy array | ||
timotimo | i think it'd be nextwith |b | ||
cognominal | psch, this one throws an error. | ||
timotimo | i'm not sure you'll ever get the second multi candidate with more than one argument in the array | 23:00 | |
oh, wait, it's "next"with, not samewith | |||
psch | cognominal: the bit i wrote? probably; i'm rather sure i don't quite understand what exactly it does, anyway :) | ||
23:01
adu joined
|
|||
cognominal | psch: github.com/rakudo/rakudo/blob/nom/.../Mu.pm#L54 | 23:01 | |
psch | m: multi a($a, |b) { say "1. a"; nextwith |b }; mutli a(*@b) { say "2. a"; say @b }; a(1, "a", "b", "c"); a(1, 2) | ||
camelia | rakudo-moar b8a188: OUTPUT«===SORRY!=== Error while compiling /tmp/Yi89is4PRcUnable to parse expression in argument list; couldn't find final ')' at /tmp/Yi89is4PRc:1------> ) { say "1. a"; nextwith |b }; mutli a(*⏏@b) { say "2. a"; say @b…» | ||
timotimo | i'm ... not sure why that's a problem there? | 23:02 | |
23:02
kaiserpathos joined
|
|||
psch | mutli... :) | 23:02 | |
timotimo | ooooh | ||
psch | m: multi a($a, |b) { say "1. a"; nextwith |b }; multi a(*@b) { say "2. a"; say @b }; a(1, "a", "b", "c"); a(1, 2) | ||
camelia | rakudo-moar b8a188: OUTPUT«Ambiguous call to 'a'; these signatures all match::(Any $a, Any |b):(*@b) in sub a at /tmp/cCx8NJ37aZ:1 in block at /tmp/cCx8NJ37aZ:1» | ||
psch | m: multi a($a, |b) { say "1. a"; nextwith |b }; multi a(*@b where @b.elems > 2) { say "2. a"; say @b }; a(1, "a", "b", "c"); a(1, 2) | ||
camelia | rakudo-moar b8a188: OUTPUT«Ambiguous call to 'a'; these signatures all match::(Any $a, Any |b):(*@b where { ... }) in sub a at /tmp/UIDZmwco4k:1 in block at /tmp/UIDZmwco4k:1» | ||
ren1us | such confusion. what's this error mean? | ||
Cannot invoke this object (REPR: Null, cs = 0) in method new at /home/Phoenix/workspace/Research/PokeEnv/lib/SimNet/Frames.pm:32 | |||
psch | m: multi a($a, |b) { say "1. a"; nextwith |b }; multi a(*@b where @b.elems < 3) { say "2. a"; say @b }; a(1, "a", "b", "c"); a(1, 2) | ||
camelia | rakudo-moar b8a188: OUTPUT«Ambiguous call to 'a'; these signatures all match::(Any $a, Any |b):(*@b where { ... }) in sub a at /tmp/fg56DB4M2v:1 in block at /tmp/fg56DB4M2v:1» | 23:03 | |
psch | m: multi a($a, |b) { say "1. a"; nextwith |b }; multi a(*@b where @b.elems < 3) { say "2. a"; say @b }; a(1, "a", "b", "c") | ||
camelia | rakudo-moar b8a188: OUTPUT«Ambiguous call to 'a'; these signatures all match::(Any $a, Any |b):(*@b where { ... }) in sub a at /tmp/4Bjfq2Mk4K:1 in block at /tmp/4Bjfq2Mk4K:1» | ||
ren1us | (that line's just a self.bless) | ||
psch | cognominal: right, the default constructor doesn't do positional arguments | ||
cognominal: i don't really know how the internals deal with though | 23:04 | ||
23:05
rurban2 left,
kaiserpathos left
|
|||
cognominal | Yes. So it is not a good example of a sequence of calls doing expansion/contraction which was the point I was curious about. But you may have wanted to carry some other point. | 23:05 | |
psch | cognominal: no, sorry, i think i just spouted half-informed tidbits | 23:07 | |
cognominal | psch: well, I once run on that particular error. so that was interesting to see what multi throwed it. so psch++ | 23:08 | |
Can't sleep. Will go outside to enjoy the nice weather. An iPad is nice to read in the dark. | |||
ren1us | i think it just got mixed in with camelia's stuff, so i'll ask again: anyone know what this error's going on about? | 23:09 | |
Cannot invoke this object (REPR: Null, cs = 0) | |||
timotimo | m: my Mu $this := nqp::null(); $this(); | ||
camelia | rakudo-moar b8a188: OUTPUT«Cannot invoke this object (REPR: Null, cs = 0) in block at /tmp/nM1BCDCrMz:1» | ||
23:10
jnap1 joined,
jnap left
|
|||
ren1us | yeah that looks way, way more complicated than what i'm doing | 23:11 | |
timotimo | somewhere internally something like that happens | ||
ren1us | what would cause that? | 23:12 | |
psch | or something else doesn't happen even though it should | ||
timotimo | well, something returns a null instead of something invocable and something tries to invoke it later | ||
can you get a better error with --ll-error? | |||
psch | --ll-exception | ||
timotimo | er, yes | ||
i'm getting mighty tired | 23:13 | ||
i'll go to bed i think | |||
gnite and good luck! | |||
23:13
Ben_Goldberg joined,
BenGoldberg left,
Ben_Goldberg is now known as BenGoldberg
|
|||
psch | g'nite timotimo | 23:13 | |
23:13
cognominal left,
cognominal joined
|
|||
ren1us | 'night timotimo | 23:14 | |
and uh... it's certainly a longer error | |||
pastebin.com/y4nSfk5Q | |||
psch | ren1us: can you push to your github? your local copy seems to be ahead | 23:16 | |
ren1us | done. i assume you already have a link somehow | 23:17 | |
psch | ren1us: in the end, what timotimo said applies, you're doing something somewhere that should get you *something* but you get an empty Mu | 23:18 | |
ren1us | i dunno, i just checked where the FrameInstance.new is called, and everything there seems to be clean. the params i pass in are properly set, etc etc | 23:21 | |
i think what's setting it off is just the 'self' in self.bless | 23:22 | ||
unless it could be getting caused by something totally unrelated | 23:23 | ||
psch | m: class Bar { has $.foo; method new(:$foo) { my $x = self.bless(:$foo) } }; my $b = Bar.new(:foo(1)); | ||
camelia | ( no output ) | ||
psch | probably golfed the cause away there... :) | ||
ren1us | that looks like exactly what i'm doing, other than having the new() params as named arguments | 23:25 | |
the very fact that self.WHICH is pitching a fit makes me think it's somewhere else entirely | 23:27 | ||
Cannot invoke this object (REPR: Null, cs = 0) in method message at src/gen/m-CORE.setting:12555 in method WHICH at /home/Phoenix/workspace/Research/PokeEnv/lib/SimNet/Frames.pm:144 | 23:28 | ||
23:28
Khisanth left
|
|||
psch | m: class A::B {...}; class A::C is A::B { method WHICH { say "which" } }; class A::B { method inst { return A::C.new } }; my $a = A::B.inst; $a.WHICH | 23:29 | |
camelia | rakudo-moar b8a188: OUTPUT«Cannot invoke this object (REPR: Null, cs = 0) in method inst at /tmp/tOJLKN8zrC:1 in block at /tmp/tOJLKN8zrC:1» | ||
psch | that's it | ||
the WHICH is actually also not doing anything there | 23:30 | ||
r: class A::B {...}; class A::C is A::B { }; class A::B { method inst { return A::C.new } }; my $a = A::B.inst; $a.WHICH | |||
camelia | rakudo-jvm b8a188: OUTPUT«(timeout)» | ||
..rakudo-parrot b8a188: OUTPUT«No such method 'new' for invocant of type 'A::C' in method inst at /tmp/tmpfile:1 in block at /tmp/tmpfile:1» | |||
..rakudo-moar b8a188: OUTPUT«Cannot invoke this object (REPR: Null, cs = 0) in method inst at /tmp/tmpfile:1 in block at /tmp/tmpfile:1» | |||
BenGoldberg | std: class A::B {...}; class A::C is A::B { }; class A::B { method inst { return A::C.new } }; my $a = A::B.inst; $a.WHICH | 23:31 | |
camelia | std 0f2049c: OUTPUT«ok 00:01 126m» | ||
BenGoldberg | n: class A::B {...}; class A::C is A::B { }; class A::B { method inst { return A::C.new } }; my $a = A::B.inst; $a.WHICH | ||
camelia | niecza v24-109-g48a8de3: OUTPUT«===SORRY!===Two definitions found for symbol ::GLOBAL::A::B first at /tmp/2EXdgwIiRt line 1 second at /tmp/2EXdgwIiRt line 1 at /tmp/2EXdgwIiRt line 1:------> ..}; class A::C is A::B { }; class A::B ⏏…» | ||
psch | so what happens there? .new doesn't end up in A::B for some reason? | 23:32 | |
ren1us: i'm rather sure by now that it's a bug; .new from Mu should definitely end up in A::B and also in A::C, but even if you write it yourself self somehow breaks... | 23:34 | ||
unless i'm lacking some knowledge wrt how OO works in Perl 6, which is definitely not impossible... | 23:35 | ||
ren1us | is it just that it's not being inherited down after a certain number of levels, or is it getting tripped by something weirder you think? | 23:36 | |
psch | m: class A::B { method inst { return A::C.new } }; class A::C is A::B { }; my $a = A::B.inst; | 23:37 | |
camelia | rakudo-moar f8a933: OUTPUT«Could not find symbol '&C' in method <anon> at src/gen/m-CORE.setting:12879 in any find_method_fallback at src/gen/m-Metamodel.nqp:2604 in any find_method at src/gen/m-Metamodel.nqp:934 in method inst at /tmp/U7fAWu3RnR:1 in block at /…» | ||
psch | ren1us: i'm not sure i know at all what's going on :) | 23:38 | |
ren1us | well shit | ||
psch | m: class B { method inst { return C.new } }; class C is B { }; my $a = B.inst; | ||
camelia | rakudo-moar f8a933: OUTPUT«===SORRY!=== Error while compiling /tmp/lnK_v0DET6Illegally post-declared type: C used at line 1» | ||
ren1us | i feel like the stubbing has something to do with it | ||
just a hunch | |||
psch | m: class C { }; class B { method inst { return C.new } }; class C is B { }; my $a = B.inst; | ||
camelia | rakudo-moar f8a933: OUTPUT«===SORRY!=== Error while compiling /tmp/KCuw_5TfexRedeclaration of symbol Cat /tmp/KCuw_5Tfex:1------> d inst { return C.new } }; class C is B ⏏{ }; my $a = B.inst; expecting any of: method ar…» | ||
psch | m: class C { ... }; class B { method inst { return C.new } }; class C is B { }; my $a = B.inst; | 23:39 | |
camelia | ( no output ) | ||
23:39
Khisanth joined
|
|||
psch | ren1us: i guess you have to shuffle your code around a bit | 23:39 | |
apparently stubbing the class that gets instantiated works | |||
ren1us | ._. | ||
you know what | |||
i'm not going to question it | |||
i'm not even going to complain about it | |||
i'm just going to accept | 23:40 | ||
psch | you should | ||
ren1us | it* | ||
psch | file a rakudobug | ||
it should work both ways, i'm pretty sure | |||
(and if not it'll get mentioned in the ticket) | |||
ren1us | i think i'll do that | ||
and i was going to file this one, too, but just to make sure, this looks broken to you, right? | 23:41 | ||
m: class A { method new(@arr) { self.bless(); }; }; class B is A { method new() { callwith(@(())); }; }; my $b = B.new; | 23:42 | ||
camelia | rakudo-moar f8a933: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in method new at /tmp/0y0znic1hh:1 in any call_with_args at src/gen/m-Metamodel.nqp:2967 in block at src/gen/m-CORE.setting:618 in method new at /tmp/0y0znic1hh:1 in block …» | ||
psch | that's just () flattening; working as i would expect it to | ||
m: say 1, @(()), 2 | |||
camelia | rakudo-moar f8a933: OUTPUT«12» | ||
psch | m: say "1 @(()) 2" | ||
camelia | rakudo-moar f8a933: OUTPUT«1 @(()) 2» | ||
psch | m: say "1 {@(())} 2" | ||
camelia | rakudo-moar f8a933: OUTPUT«1 2» | ||
ren1us | i feel like there should be an implied call to .item or something | 23:43 | |
psch | the empty list in array context is nothing | ||
i dimly remember something about () flattening to Nil and Nil disappearing in item context or somesuch, but that was a few months ago | |||
ren1us | it makes sense why it's doing it, i just feel like it shouldn't be flattening in the first place lol | ||
psch | i don't have an opinion about what should flatten when and how tbh, there's smarter people than me here to worry about that :) | 23:44 | |
ren1us | i'm all about having opinions on things i'm not smart enough to worry about :) | 23:45 | |
psch | but yeah, i think @(()) turning to nothing is what's supposed to happen | 23:46 | |
you can, as you said, use .item or an empty array | |||
23:47
adu left
|
|||
ren1us | i usually treat it as "list with 0 elements" | 23:47 | |
which may or may not be blasphemous. there's no way of knowing. | |||
23:48
beastd left
|
|||
psch | S02: '[...] () is defined and means "there are 0 arguments here if you're counting that low".' | 23:49 | |
about 1/8 down the site, below the header "Nil" | |||
23:50
SevenWolf joined
|
|||
psch | so the behavior above is perfectly fine; you're passing 0 arguments into a method call and rakudo complains about 1 instead of 2 arguments | 23:50 | |
m: say @(()) ?? 1 !! 0, ' args'; | 23:51 | ||
camelia | rakudo-moar f8a933: OUTPUT«0 args» | ||
psch | m: say () ?? 1 !! 0, ' args'; | ||
camelia | rakudo-moar f8a933: OUTPUT«0 args» | ||
psch | ...but "defined" isn't neccessarily True. |