»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by masak on 12 May 2015. |
|||
ShimmerFairy | japhb: IIRC they're sitting in specs/ . I think discussion on that simply died down | 00:00 | |
japhb | OK, gotcha. | 00:04 | |
00:09
xinming_ left
|
|||
psch | m: my $x = :{1 => 4}; say $x.perl | 00:11 | |
camelia | rakudo-moar c6a50f: OUTPUT«:{1 => 4}» | ||
00:12
xinming joined
|
|||
psch | ShimmerFairy: i'm similarly suprised | 00:12 | |
949d82cd4850e5f4d2f0911d136312d3650272b6 is "make :{} mean object hash" | 00:13 | ||
...except it doesn't | |||
...except it doesn't, if there's no % sigil | |||
s:2nd/doesn't/does/ | |||
00:14
n0tjack joined
|
|||
psch | m: my %h = :{1 => 4}; %h{2} => 5; say %h.perl | 00:18 | |
camelia | rakudo-moar c6a50f: OUTPUT«{"1" => 4}» | ||
psch | m: my %h = :{1 => 4}; %h{2} = 5; say %h.perl | ||
camelia | rakudo-moar c6a50f: OUTPUT«{"1" => 4, "2" => 5}» | ||
00:19
n0tjack left
|
|||
skids | m: my %h := :{1 => 4}; %h{2} = 5; say %h.perl | 00:20 | |
camelia | rakudo-moar c6a50f: OUTPUT«:{1 => 4, 2 => 5}» | ||
skids | The default hash is not an object hash. | 00:21 | |
00:21
laouji joined
|
|||
ShimmerFairy | which seems like a bug to me | 00:21 | |
skids | No it's by design. | 00:23 | |
psch | m: my %h{Any} = 1 => 2; say %h.perl | ||
camelia | rakudo-moar c6a50f: OUTPUT«(my Any %{Any} = 1 => 2)» | ||
psch | ehh, there was some non-binding things iirc | 00:24 | |
i might be mistaken, i've been awake a bit :) | |||
skids | That... may be a bug. I thought I remembered that working. | ||
psch | s/things/syntax/ | ||
m: my %h := :{1 => 4}; %h{2} = 5; say %h.perl | 00:25 | ||
camelia | rakudo-moar c6a50f: OUTPUT«:{1 => 4, 2 => 5}» | ||
ShimmerFairy | skids: as far as I'm concerned, it's a design bug if the methods I tried don't produce an object hash like I expect. | ||
psch | imo assigning an :{} should turn it into a Hash where the key can be Any | ||
and i'm pretty sure that's intended with the commit i mentioned above | |||
i mean, otherwise the syntax is nigh-useless | 00:26 | ||
or rather, useless in the obvious way | |||
(s/in/for/ maybe?) | |||
star: my %h = :{ 1 => 2 }; say %h.perl | 00:27 | ||
camelia | star-m 2015.03: OUTPUT«("1" => 2).hash» | ||
psch shrugs | |||
00:27
cognominal left
|
|||
psch | star: my %h{Any} = { 1 => 2 }; say %h.perl | 00:27 | |
camelia | star-m 2015.03: OUTPUT«Hash[Any,Any].new("1" => 2)» | ||
psch | *that* is extra-weird | ||
but eh :P | |||
skids | m: my @a = array[int].new(1,2,3); @a.perl.say; array[int].new(1,2,3).perl.say; # would you epect that to do similarly? | ||
camelia | rakudo-moar c6a50f: OUTPUT«[1, 2, 3]array[int].new(1, 2, 3)» | ||
psch | i actually would, i think | 00:28 | |
ShimmerFairy | yes. If I'm assigning a Positional or Associative to a @ or % declaration, I'd expect the variable to adapt, not the assigned thing | ||
psch | skids: the thing i'm wondering is, if that's not how i'm supposed to achieve that, how *am* i supposed to achieve it? | 00:29 | |
skids | But, type constraints are tied to the variable. | ||
psch | skids: mind, binding is a "only if you really know what you're doing" thing | ||
(which isn't to say that binding correctly solves it, but i'm wondering how to declare the var, for % specifically) | 00:30 | ||
skids | Oh I would not say that about binding. Only about sigilless variables :-). | ||
Yeah I would have expected %h{Any} to have worked. | |||
I mean Any,Any. Oh that was why. | 00:31 | ||
ShimmerFairy | I would not think of a %h{Any} declaration as the way to get an object hash. That feels really wrong to me as the only way. | ||
00:38
laouji left,
laouji joined
|
|||
ShimmerFairy | At least for hashes, I'd expect assigning an object hash in a declaration to be sufficient. And if not that, then at least my %h; %h{1} = 2 should _definitely_ not stringify the key I gave :) | 00:41 | |
psch | design.perl6.org/S03.html#Term_precedence | 00:42 | |
00:42
laouji left,
laouji joined
|
|||
psch | about 3/4th of a page (on my screen) down | 00:42 | |
"By default a hash forces all its keys to be strings. To compose a hash that allows arbitrary objects (such as numbers) as keys, add a colon on front:" | 00:43 | ||
which means we have a bug | |||
00:43
z448 joined
|
|||
psch | 'cause %h = :{1 => 2} should give an object hash | 00:43 | |
i'm not awake enough anymore to think about "what if the first key we use when assigning a value isn't a string?" | 00:44 | ||
00:44
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
psch | which is to say i'm not giving an opinion on "my %h; %h{1} = 2 should _definitely_ not stringify the key I gave" | 00:44 | |
ShimmerFairy | If I didn't give a stringy key, the last thing I expect is for it to be treated like a stringy key :) | 00:45 | |
00:47
n0tjack joined
|
|||
skids | I think that part is a bug. design.perl6.org/S02.html#Hash_subs..._bare_keys | 00:49 | |
dalek | kudo-star-daily: 46e96c4 | coke++ | log/ (8 files): today (automated commit) |
||
skids | Unless someone decided the default key type is "Str(Any)" | 00:50 | |
psch | m: my %h = :{ 1, 2 }; say %h.perl | 00:51 | |
camelia | rakudo-moar c6a50f: OUTPUT«Odd number of elements found where hash initializer expected in block <unit> at /tmp/1qQPkP2oSB:1» | ||
00:51
n0tjack left
|
|||
psch | m: my %h = :{ Pair.new(:key(1), :value(2) }; say %h.perl | 00:52 | |
camelia | rakudo-moar c6a50f: OUTPUT«5===SORRY!5=== Error while compiling /tmp/UQvjls8CSIUnable to parse expression in argument list; couldn't find final ')' at /tmp/UQvjls8CSI:1------> 3my %h = :{ Pair.new(:key(1), :value(2) 7⏏5}; say %h.perl» | ||
psch | m: my %h = :{ Pair.new(:key(1), :value(2)) }; say %h.perl | ||
camelia | rakudo-moar c6a50f: OUTPUT«Odd number of elements found where hash initializer expected in block <unit> at /tmp/BQuXNMZ3H6:1» | ||
psch | yeah uhhm | ||
psch slowly steps away from the keyboard | |||
ShimmerFairy | I think the base issue might possibly be that the default Associative type has such a specific constraint (Str), where no other sigil type has as specific a default :) | 00:54 | |
(And fwiw I'm not about to suggest not making Str keys the default, since I can predict a lot of things would break for that) | |||
skids | It's an expectation born of a host of predecessr languages. | 00:55 | |
ShimmerFairy | good thing P6 has a habit of breaking expectations :P | ||
skids | I think that not having string keys by default would be a hard pill for a lot of casual PHP/shell coders to swallow. | 00:58 | |
(on top of the several other paradigm shifts) | |||
ShimmerFairy | skids: I think Str keys by default does a lot of good in most cases, it just makes wanting object keys harder. It certainly seems tricky on the surface. | 01:00 | |
"It" being the question of how to make it easier, that is :) | 01:01 | ||
skids | I don't have warm fuzzies for that new .perl syntax for %h{Any} yet, I don't understand why it's necessary. | 01:02 | |
ShimmerFairy | skids: it's so that using :{} will produce the same kind of output for .perl (and if you didn't use :{}, it tells you about a neat new syntax you can use instead!) | 01:04 | |
skids | (Isn't the only reason to use %h{Any} that you want type safety on things bound to %h s nobody binds a Hash[Str,Any] or whatnot to it?) | 01:05 | |
I mean, use it as opposed to %h := :{}; | 01:07 | ||
ShimmerFairy | skids: if you ask for keys of type 'Any', then you can bind anything that ultimately is Any. What syntax you use (%h{Any} or :{}) shouldn't make a difference. | 01:08 | |
01:08
z448 left
|
|||
ShimmerFairy | Hm, where did $file.open(:w); $file.say() go? I could swear that used to exist | 01:08 | |
skids | ShimmerFairy: of course it matters. One is a type constraint on a variable name, the other is a roperty of the object itself. | 01:11 | |
m: my %h := :{}; %h{1} = 2; %h.perl.say; my %b{Any} = :{}; %b{1} = 2; %b.perl.say; %h := { foo => "bar" }; %h.perl.say; %b := { foo => "bar" } | |||
camelia | rakudo-moar c6a50f: OUTPUT«:{1 => 2}(my Any %{Any} = 1 => 2){:foo("bar")}Type check failed in binding; expected 'Associative[Any,Any]' but got 'Hash' in block <unit> at /tmp/g_ttEHGn13:1» | ||
ShimmerFairy | o_o but... a Str hash should match an Associative[Any, Any] constraint, since Str ~~ Any | 01:12 | |
skids | No, I don't think paramterized types recurse typechecks into parameters. | 01:13 | |
ShimmerFairy | m: say Hash ~~ Associative[Any, Any] | ||
camelia | rakudo-moar c6a50f: OUTPUT«False» | ||
ShimmerFairy | o_o | 01:14 | |
psch | m: my %h; %h{1} = 2; say %h.perl # this i'd also expect to type check fail, fwiw | ||
camelia | rakudo-moar c6a50f: OUTPUT«{"1" => 2}» | ||
psch | 'cause it's a literal Int... | ||
vOv | |||
Cool not withstanding | |||
or maybe it does :/ | |||
skids | psch: The last spec link I posted would seem to agree. | ||
psch | skids: yeah, i think that's what brought me there | 01:15 | |
anyay, i need some rest o/ | |||
01:16
Akagi201_ joined
01:18
Akagi201_ left
01:19
n0tjack joined
01:20
Akagi201 left
01:23
n0tjack left
01:38
n0tjack joined
01:43
n0tjack left
|
|||
ShimmerFairy | $ perl6 -e 'say ?run("false")' | 01:49 | |
False | |||
$ perl6 -e 'say ?run("false", :out)' | |||
True | |||
That's... not good. | |||
01:51
kaare_ joined
01:52
n0tjack joined
|
|||
ShimmerFairy | a closer look says that the exitcode itself is getting set wrongly. Huh. | 01:54 | |
01:56
n0tjack left
|
|||
skids | Ahah. design.perl6.org/S09.html#line_1182 (and it has been that way for a long while.) | 01:58 | |
ShimmerFairy rakudobugs the exitcode thing | 02:00 | ||
02:08
dayangkun joined
02:09
z448 joined
02:13
z448 left
02:24
AlexDaniel left,
n0tjack joined
02:29
n0tjack left
|
|||
ShimmerFairy | m: class Foo { has $.bar is rw }; my @a = Foo.new(bar => 1); say @a; @a.push(@a[*-1]); @a[*-1].bar = 42; say @a | 02:36 | |
camelia | rakudo-moar c6a50f: OUTPUT«[Foo.new(bar => 1)][Foo.new(bar => 42) Foo.new(bar => 42)]» | ||
02:36
Juerd left
|
|||
ShimmerFairy | known bug? | 02:36 | |
m: my @a = 1; say @a; @a.push(@a[*-1]); @a[*-1] = 42; say @a # for comparison | 02:37 | ||
camelia | rakudo-moar c6a50f: OUTPUT«[1][1 42]» | ||
ShimmerFairy | m: class Foo { has $.bar is rw }; my @a = Foo.new(bar => 1); say @a; @a.push(@a[*-1].clone); @a[*-1].bar = 42; say @a # workaround, fixed with adding .clone | ||
camelia | rakudo-moar c6a50f: OUTPUT«[Foo.new(bar => 1)][Foo.new(bar => 1) Foo.new(bar => 42)]» | ||
02:55
Juerd joined
|
|||
zostay | is there a doc somewhere that tells me how to translate my pre-glr stuff to glr? i've got bugs everywhere, mostly because flattening is different than before | 02:56 | |
yoleaux | 1 Sep 2015 07:17Z <cdc> zostay: I think you can replace "Supply.on-demand(-> $a { ... })" construction with a supply block. gist.github.com/jnthn/a56fd4a22e7c...onstructs. I find this latter construction more readable. | ||
10 Sep 2015 15:34Z <timotimo> zostay: paul evans on twitter was complaining that p6sgi is "as disappointing as the perl5 one" and lacks support for streaming of input data and response backpressure and "..." | |||
02:57
n0tjack joined
|
|||
zostay | thx for the feedback timotimo and cdc :) | 02:57 | |
02:57
BenGoldberg left
|
|||
zostay | lemme go dust off my twitter account | 02:57 | |
02:58
noganex joined
03:01
noganex_ left
03:02
n0tjack left
|
|||
ugexe | perl6 -e 'say ?run("false", :out).exitcode' | 03:07 | |
False | |||
perl6 -e 'say run("false", :out).out.close.exitcode' | 03:09 | ||
1 | |||
ShimmerFairy | just noting that ?(run().exitcode) will return False on a successful exitcode :) | 03:10 | |
ugexe | you have to close .out first | 03:11 | |
not that that isnt a bug of course | 03:12 | ||
ShimmerFairy | ugexe: I still cry foul on Proc.exitcode being wrong once you've opened streams. The equivalent bash redirects don't screw with the exit code, and I wouldn't expect redirects to mess with it in the first place. | 03:14 | |
03:22
n0tjack joined
|
|||
colomon | doh. what is cwd now? | 03:23 | |
ugexe | $*CWD ? | 03:24 | |
colomon | ugexe++ | 03:25 | |
03:27
n0tjack left
03:29
n0tjack joined
03:31
khw left
03:34
n0tjack left
03:36
khw joined
03:46
laouji left
03:47
aborazmeh left
04:02
n0tjack joined
04:06
n0tjack left
|
|||
dalek | c: a47ed84 | skids++ | lib/Language/subscripts.pod: Explain convenience behaviors in associative subscripting section (could use some links, but too tired) Also, provide an example of off-end access of a native array. |
04:09 | |
04:16
aborazmeh joined,
aborazmeh left,
aborazmeh joined
04:25
rmgk is now known as Guest85186,
rmgk_ joined,
rmgk_ is now known as rmgk
04:29
Guest85186 left
04:34
n0tjack joined
04:35
khw left
|
|||
skids | Hrm was hoping docs would update the HTML before I konked out. Apologies for any markup errors, have to sleep. | 04:36 | |
04:38
n0tjack left
04:42
skids left
04:44
laouji joined
04:49
zhanggong joined,
zhanggong left,
X230-XXZX joined
04:50
X230-XXZX left
04:53
aborazmeh left
|
|||
zostay | anyone want to go on a wild goose chase for me? gist.github.com/zostay/13a073e62520b1041ecb | 04:56 | |
04:56
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
awwaiid | hahainternet, psch: Thanks again for the reference earlier. I ended up with github.com/awwaiid/pinpoint-code-c...code-color (used 'shell', which works also but isn't mentioned in Proc) | 05:01 | |
05:06
n0tjack joined
05:10
nightfrog left,
n0tjack left
05:11
baest_ is now known as baest
|
|||
ugexe | doc.perl6.org/routine/shell | 05:12 | |
05:23
nightfrog joined
05:34
nightfrog left
05:36
nightfrog joined
05:38
xfix joined,
n0tjack joined
05:43
n0tjack left
05:49
domidumont joined
05:50
domidumont left
05:51
domidumont joined
|
|||
JimmyZ | zostay: how about put 'dd $_' inside for $node.nodes { | 05:56 | |
06:10
n0tjack joined
06:14
n0tjack left
|
|||
[Tux] | test 50000 40.466 40.386 | 06:16 | |
test-t 50000 39.359 39.278 | |||
gooooood morning perl6! | 06:17 | ||
so it looks like GLR is now consistently faster than nom was just before the merge | |||
06:19
aborazmeh left
06:22
mohij joined
06:28
abraxxa joined
|
|||
grondilu | I don't see improvement on rakudo compile time, though. | 06:31 | |
TimToady | compiler doesn't use lists much | 06:32 | |
JimmyZ | compiler is nqp ... | 06:33 | |
06:33
abraxxa left
|
|||
grondilu | yeah good points | 06:33 | |
06:37
espadrine joined
|
|||
masak | good morning, #perl6 | 06:37 | |
masak will be busy with $teaching for the rest of the day, but just wanted to say hi | 06:38 | ||
ShimmerFairy | masak: $teaching.WHAT :P | 06:40 | |
06:43
n0tjack joined
06:47
abraxxa joined,
n0tjack left
|
|||
TimToady | jnthn: on shaped list assignment, we should probably require the input to be strucured; flat input can always be reshaped based on the arrays's shape, or using nested .rotor calls | 06:53 | |
map should try to produce something of the same shape as the input, even if map returns some number of arguments that is not 1, I suspect | 06:54 | ||
.keys should likely produce tuples that can be used as .[||tuple] to retrieve an individual leaf | 06:57 | ||
(you can get the top-level keys with .[*]:k anyway, so we don't have to put that behavior into .keys) | |||
rotate and reverse make some sense on slices, but probably not on the whole array, unless we want some APLish trick of treating a shaped array as flat when convenient | 07:00 | ||
but offhand I think we probably want to something explicit to open up a flat view, either for reading or writing | 07:01 | ||
*to require | |||
by and large, my bias is to treat the shaped array as a complete object, rather than trying to pretend it's an array of arrays | 07:03 | ||
hence a preference for iterators to visit leaves, not just the top level | |||
the shape being a convenient barrier to say what should be considered the leaves | 07:04 | ||
07:06
FROGGS left,
rurban joined
07:08
thou left
07:11
kjs_ joined
07:15
n0tjack joined
07:18
Ven joined,
mohij left
07:19
FROGGS joined
07:20
lizmat joined,
n0tjack left
|
|||
timotimo | TimToady: do you have a comment about "my %foo = :{ 1 => 1 }" giving you a non-object-hash? a justification for asking the user to use := instead of = | 07:21 | |
07:22
gfldex joined
|
|||
FROGGS | m: my Int %foo = :{ 1 => 1 }; say %foo.keys[0].WHAT # hmmm... | 07:23 | |
camelia | rakudo-moar c6a50f: OUTPUT«Type check failed in binding key; expected 'Str' but got 'Int' in block <unit> at /tmp/e7UF2oH5Ww:1» | ||
TimToady | I think we could issue a "Useless use of :{}" there | 07:24 | |
likewise even without the : | 07:25 | ||
timotimo | yes, we used to give a deprecation notice about "itemized hash assigned to hash variable" | 07:26 | |
07:27
zakharyas joined
|
|||
TimToady | that seems saner than making hashes an exception to one-arg or iteration | 07:27 | |
timotimo | i think so, too | ||
TimToady | but nothing seems quite sane when I'm up this late... | ||
07:28
darutoko joined
|
|||
TimToady | been hacking a version of rakudo that separates .cache from a (non-caching) .list, and almost have it working | 07:28 | |
we have a heck of a lot of places that call .list just to get a list currently, that accidentally also cache, so I think this is a good thing to clarify | 07:29 | ||
still have a couple three bugs in the test suite, though, so probably can't finish tonight | 07:30 | ||
timotimo | are you going to push the WIP branch? | ||
branches* | |||
TimToady | I suppose I could, if someone's interested in playing with it | 07:32 | |
timotimo | i'm not guaranteeing it | 07:36 | |
07:38
Ven left
|
|||
dalek | kudo/list-v-cache: b410729 | TimToady++ | src/ (13 files): early hackage to distinguish .cache from .list |
07:38 | |
07:40
kjs_ left
|
|||
dalek | kudo/list-v-cache: 8911bc9 | jnthn++ | src/core/List.pm: No, .infinite did not survive the GLR. |
07:42 | |
rakudo/list-v-cache: 2af8cb4 | jnthn++ | src/Perl6/Optimizer.nqp: | |||
rakudo/list-v-cache: Make optimizer aware of types of nqp:: ops. | |||
07:42
dalek left
07:43
dalek joined,
ChanServ sets mode: +v dalek,
FROGGS left
|
|||
moritz | TimToady: thanks; the .list vs. .List distinction in Seq seemed a bit dubious to me :-) | 07:44 | |
TimToady | oh, that's a bit of a fossil, could just use .list now | ||
not related, but there seems to be one failing test due to eqv calling .perl on something with no .perl method, so we'll have to address that somehow | 07:45 | ||
TimToady is going to bed now, however... | 07:46 | ||
ShimmerFairy | Don't most things have a .perl? O_o | ||
♞ TimToady o/ | |||
07:46
FROGGS joined
07:48
n0tjack joined
|
|||
timotimo | some things just say "NameOfClass<$!WHICH>" | 07:49 | |
ShimmerFairy | I could've sworn .perl was something defined on Mu, and thus quite hard to make disappear :) | 07:50 | |
timotimo | yeah | ||
m: Mu.perl | |||
camelia | ( no output ) | ||
07:53
n0tjack left,
kjs_ joined
|
|||
TimToady | m: say $~MAIN.perl | 07:53 | |
camelia | rakudo-moar c6a50f: OUTPUT«Method 'perl' not found for invocant of class 'Perl6::Grammar' in block <unit> at /tmp/UVxqWLSUXb:1» | ||
TimToady | rafk & | 07:54 | |
08:00
lizmat left
08:01
mohij joined
|
|||
ShimmerFairy | oh yeah, NQP objects are how you make things like .perl disappear :P | 08:02 | |
08:03
kjs_ left
08:04
thou joined
08:08
thou left
08:09
cognominal joined
08:12
duncan_dmg joined
08:19
rhr joined
08:20
n0tjack joined
08:24
YouthEnter2 left,
n0tjack left,
rindolf joined
08:33
espadrine left
|
|||
moritz | fall back to === semantics for NQP objects? | 08:33 | |
ShimmerFairy | I've run into problems of this nature with NQP objects before, so I think the better long-term solution would be to either replace NQP objects that can be exposed with P6 versions, or to make the appropriate NQP objects more P6-like (I'm thinking of things like .gist and so on) | 08:38 | |
08:38
kjs_ joined
|
|||
timotimo | we can just give the nqp objects the methods, that'd be enough i believe | 08:39 | |
hllize will take care of the rest | |||
08:39
mohij left
|
|||
ShimmerFairy | m: say Cursor.^attributes # would that fix stuff like this too? | 08:41 | |
camelia | rakudo-moar c6a50f: OUTPUT«Method 'gist' not found for invocant of class 'NQPAttribute' in block <unit> at /tmp/y3xo3Vqmgt:1» | ||
08:41
dakkar joined
|
|||
timotimo | probably | 08:42 | |
ShimmerFairy | timotimo: I don't suppose we could redeclare bootstrapped private attributes in src/core, could we? For the bug I just gave, that would seem to be an alternate solution if it were possible :) | 08:44 | |
timotimo | oof. | 08:45 | |
perhaps we can do monkey typing? | |||
timotimo is ankle deep in JIT right now :) | |||
ShimmerFairy | Of course, letting NQPAttribute and the like behave more P6-y would make it a bit nicer, even if we'd like to not have NQP-level types like BOOTSTRAPATTR exposed :P | 08:46 | |
that Cursor example wasn't the best, come to think of it, because it's inheriting from an NQP class. The bootstrap issue will whine about BOOTSTRAPATTR instead :) | 08:47 | ||
08:48
laouji left
08:49
laouji joined
08:50
leont joined
08:51
mohij joined
08:52
n0tjack joined
|
|||
jnthn | morning, #perl6 | 08:52 | |
yoleaux | 10 Sep 2015 21:45Z <FROGGS> jnthn: here is the current state of perl6-j, if you are curious: gist.github.com/FROGGS/3598992b921b34a1c6d5 | ||
jnthn | .oO( In the "what happens if I snort powdered naga jolokia" sense of curious maybe... ) |
08:55 | |
08:56
n0tjack left
|
|||
FROGGS | O.o | 08:57 | |
jnthn | .ask FROGGS Don't suppose a $self := nqp::decont($self); at the start of that method helps? Dunno why it'd only be needed in some cases and not others though... | ||
yoleaux | jnthn: I'll pass your message to FROGGS. | ||
FROGGS | jnthn: I tried a nqp::decont($attr) in the bindattr_s call that fails | 08:58 | |
yoleaux | 08:57Z <jnthn> FROGGS: Don't suppose a $self := nqp::decont($self); at the start of that method helps? Dunno why it'd only be needed in some cases and not others though... | ||
FROGGS | jnthn: (without luck) | ||
jnthn | Or rather, why only on moar but not JVM | ||
Ah, OK :( | |||
What's really werid is that the first bind works o.O | 08:59 | ||
First bindattr, I mean | |||
FROGGS | it doesnt | ||
jnthn | Oh wait | ||
Yeah, the first debug line is over the create | |||
FROGGS | aye | ||
create works, bind doesnt | |||
though funnily the bind does work while building the setting | 09:00 | ||
it just fails afterwards, in user code or when precompiling nativecall | |||
jnthn | What the heck... | ||
FROGGS | I tell ya | ||
09:01
FROGGS[mobile] joined
|
|||
FROGGS[mobile] | jnthn: sorry, have to eat cake now :/ | 09:01 | |
09:02
FROGGS[mobile]2 joined,
lizmat joined
|
|||
jnthn | Best excuse ever :) | 09:03 | |
Enjoye! | |||
09:03
domidumont left
|
|||
jnthn | [Tux]: Nice the performance is going in the right direction :) | 09:04 | |
[Tux] | indeed \o/ | ||
and all tests still pass | |||
jnthn | :) | 09:05 | |
09:05
domidumont joined
09:06
FROGGS[mobile] left
09:07
andreoss joined
|
|||
andreoss | can I use NQP as Perl6 slang? | 09:08 | |
use Slang::NQP or something like that | |||
moritz | don't think so. | 09:09 | |
dalek | kudo/nom: 524a763 | lizmat++ | src/core/traits.pm: "cached" is one of the possible Routine traits |
09:11 | |
lizmat | m: class cached {}; sub a($a) is cached {} # weird | 09:13 | |
camelia | rakudo-moar c6a50f: OUTPUT«5===SORRY!5=== Error while compiling /tmp/bFwHl1eyqJCan't use unknown trait 'is ' in a sub declaration.at /tmp/bFwHl1eyqJ:1 expecting any of: rw parcel hidden-from-backtrace hidden-from-USAGE pure default DEPRECATED inli…» | ||
jnthn | lizmat: If you name a type in a trait, its type object is passed, not a named arg | ||
lizmat | maybe we should use an "isa" trait to mark inheritance? | ||
jnthn | For the 100000000th time... | 09:14 | |
...no. | |||
lizmat | okokok | ||
must have missed the discussion :-( | |||
jnthn | Sorry, I just saw it too many times | ||
lizmat | I forgot why not, or never knew it | ||
is it performance of the grammar ? | 09:15 | ||
jnthn | Even if we do that, you'd *still* have this situation. | ||
Well, it's more that it doesn't especially fix anything, and would come at the cost of breaking a huge amount. | |||
timotimo | yikes, so many failures | ||
lizmat | if we use "isa" only for type objects, and "is" for all the other traits, how would we *still* have this situation? | 09:16 | |
sorry if I'm asking for the obvious, but I'm really in the dark here wrt that | |||
jnthn | Because you'd still want "is" to pass the role when there is one | ||
09:17
mohij left
|
|||
lizmat | ?? | 09:17 | |
09:17
espadrine joined
|
|||
jnthn | role foo { }; sub bar is foo { } | 09:17 | |
lizmat | roles are set with "does" ? | ||
ah, punned roles | |||
09:17
ab5tract_ joined
|
|||
jnthn | no no, it's on a sub | 09:17 | |
That's actually going to call trait_mod:<is>(&bar, foo) | |||
While if you just say | 09:18 | ||
sub bar is notatype { } | |||
You get | |||
trait_mod:<is>(&bar, :notatype) | |||
The named arg syntax is convenient and OK in the small | |||
But we really should encourage the type-based approach for userland modules | |||
As it's a good bit more robust | 09:19 | ||
Probably especially in the face of having multiple versions of modules loading. | |||
lizmat | ah, so you're saying that things like "is cached" where cached is *not* a type, is really the problem? | ||
moritz didn't even know about the type-based approach | 09:20 | ||
jnthn | :) | ||
ab5tract_ | We have types now? ;) | ||
moritz idly roasts ab5tract_ | |||
jnthn | lizmat: I'm saying it's useful to have and probably OK for some uses, but we probably want to guide module authors towards the type-based approach. | 09:21 | |
lizmat: Or not, and just see if it emerges as a best practice anyway ;) | |||
jnthn has a fix for the S17-lowlevel/threads.t regression he caused | 09:23 | ||
lizmat | jnthn++ | ||
09:24
n0tjack joined
|
|||
lizmat | so suppose I have code that has an "is foo" trait on a sub | 09:25 | |
later, the system adds a "foo" class | |||
all of a sudden my code will be broken after that update | |||
jnthn | Aye, though given (except native types) class names culturally start uppercase, it's not likely | 09:27 | |
The convention hinted at in S14 is that lowercase role names are typically for use as traits | |||
lizmat | ok, well... I need to hit the road again to make it in time to Lyon | 09:29 | |
moritz | .oO( into the Lyon's den ) |
||
09:29
n0tjack left
|
|||
jnthn | lizmat: Safe travels | 09:29 | |
lizmat | thank you | 09:30 | |
I'll get back to this... :-) | |||
jnthn | :) | ||
lizmat | commute& | ||
09:30
lizmat left
|
|||
jnthn wonders how on earth S15-nfg/many-threads.t got busted | 09:31 | ||
It's a reliable SEGV here | |||
Wow, MVM_CROSS_THREAD_WRITE_LOG is pretty loud on this one. | 09:35 | ||
And all inside of HYPER, matching the analysis in the backlog. :) | 09:36 | ||
09:40
zakharyas left
09:42
brrt joined
09:43
zakharyas joined
09:46
FROGGS[mobile]2 left,
laouji left,
laouji joined
|
|||
timotimo | there's some "todo passed" in the spec tests, but also a whole bunch of failing tests :\ | 09:48 | |
jnthn | "whole bunch"? | 09:49 | |
timotimo | a screenful | 09:50 | |
the previous results have disappeared into the scroll buffer, but i'm running a new set right now | |||
gather.t seems to fail, for example | |||
jnthn | Odd...no sign of that here | 09:51 | |
timotimo | how about t/spec/S02-literals/adverbs.rakudo.moar ....................... Dubious, test returned 255 (wstat 65280, 0xff00) | ||
t/spec/S02-literals/numeric.t ................................. Dubious, test returned 4 (wstat 1024, 0x400) | |||
t/spec/S02-types/WHICH.t ...................................... Dubious, test returned 1 (wstat 256, 0x100) | |||
jnthn | Only the first of those, which looks like an NQP object leaking into Perl 6 space | 09:52 | |
09:52
thou joined
|
|||
timotimo | pairs-as-lvalues? | 09:52 | |
failed 2 of 5 | |||
jnthn | No | ||
timotimo | weird! | 09:53 | |
i'll double-check for unclean checkouts | |||
oh | |||
am i supposed to be on the master branch of glr? | |||
most probably >_> | |||
moritz | "master branch of glr"? | 09:54 | |
timotimo | er | ||
nine | adverbs has been failing here for a day or two | ||
timotimo | the master branch of roast | ||
nine | yes | ||
FROGGS | timotimo: also keep in mind that a "screenful" differs in meaning here :o) | 09:55 | |
timotimo | :) | 09:56 | |
09:56
n0tjack joined,
thou left
|
|||
timotimo | i meant to give a rough estimate | 09:56 | |
nine | A screenful here would be 100 files ;) | 09:57 | |
FROGGS | files? | ||
timotimo | wow | ||
nine | lines | ||
timotimo | ah | ||
FROGGS | I have about 64 lines | 09:58 | |
timotimo | one error gets reported over like 3 or 4 lines | ||
FROGGS | is jnthn still at 80x25? :P | ||
timotimo | one failing file, more correctly | ||
nine | FROGGS: AFAIK even the windows terminal can do more lines, just not more columns ;) | ||
psch | FROGGS: the "bind_attribute_native" call that dies in your gist works if it gets a hint for the correct field... | ||
FROGGS: i have no idea if that's actually useful to know, though :) | 09:59 | ||
FROGGS: mind, that's also in jdb, not with any kind of patch that figures out the right hint... | |||
FROGGS | psch: I think it very much is | ||
psch: still I dont know how to debug bind_attribute_native with st.NO_HINT :/ | 10:00 | ||
I like to add debugging statements or some such, but that's problematic how bind_attribute_native is implemented | |||
10:01
n0tjack left
|
|||
FROGGS | psch: that it works with a hint explains why the decont hack does not work out which jnthn++ mentioned | 10:01 | |
psch | FROGGS: what i've done is 1) uncomment the bytecode dumping, 2) extend RuntimeException with SpecialRuntimeException in P6OpaqueBaseInstance, 3) throw that instead of RuntimeException in resolveAttribute, 4) breakpoint on that exception type, 5) read __P6Opaque__68.class bytecode | 10:02 | |
s/i\'ve done/i'm doing/ | |||
FROGGS | hmm | ||
I should probably learn how to jdb | |||
psch | FROGGS: i suppose compiling nqp with -g to javac allows jdb to read that source | ||
FROGGS: 'cause it keeps telling me to do that when i want to "list" generated bytecode... | 10:03 | ||
FROGGS: although we'd have to inject that into the classfilewriter from ASM... | |||
(fsvo "inject") | |||
FROGGS | >.< | ||
timotimo | only three failing test files now | 10:10 | |
psch | eh, actually that's bogus anyway | ||
timotimo | adverbs, many-threads and i had to kill start | ||
psch | i mean, "javac -g" adds debugging annotations that come from the code that's compiled | 10:11 | |
FROGGS | timotimo: that sounds about correct | ||
psch | ...but we don't actually have code that's compiled except what's in P6Opaque{...}.java | ||
FROGGS | hmmm | ||
psch | and that code's not particularly useful 'cause it's mostly throwing exceptions :P | ||
10:12
TEttinger left
10:13
domidumont left
|
|||
psch | hmm, apparently we can use visitLabel and visitLineNumber to attach line numbers to bytecode segments... | 10:14 | |
FROGGS listens carefully | 10:19 | ||
psch | FROGGS: mail-archive.ow2.org/asm/2012-02/msg00003.html is what made me think that | 10:21 | |
FROGGS: i'm not sure how useful it is for us, because we still don't actually have source... and some things you're allowed to do in jvm-bytecode don't map to java code either | |||
FROGGS nods | 10:22 | ||
psch | huh | 10:24 | |
gist.github.com/peschwa/9072d94296c74114aa7c | |||
that's the first few lines of __P6Opaque_68.bind_attribute_native | |||
__P6Opaque__68 is Attribute | 10:25 | ||
FROGGS | psch: what's the 'huh'? I don't spot it | ||
psch | FROGGS: the "huh" is in jdb, actually... | ||
FROGGS | bah! :P | ||
psch | sorry :s | ||
FROGGS | *g* | ||
psch | revision 2 of the gist has the jdb bit i'm looking at | 10:26 | |
(i wanted to add a file but UI confusion...) | |||
basically, .delegate (which is .field_10) is null | 10:27 | ||
and we pass STable.NO_HINT | |||
which is -1 | |||
so we aren't actually looking for the attribute "$!name", we already know we can't find it | 10:28 | ||
because we get bad info, somehow | |||
10:28
laouji left
|
|||
psch | i'm thinking .delegate probably shouldn't be null... | 10:28 | |
oh, one error in there | 10:29 | ||
.field_10 isn't .delegate | |||
10:29
n0tjack joined,
laouji joined
|
|||
Ulti | m: say $*IN.get; | 10:29 | |
camelia | rakudo-moar 524a76: OUTPUT«Céad slán ag sléibhte maorga Chontae Dhún na nGall» | ||
psch | .delegate just is the 10th field in __P6Opaque__68 | 10:30 | |
FROGGS | psch: none of the 15 fields are .delegate, right? | ||
psch | FROGGS: right, the field_* thingies are P6-level attributes | ||
FROGGS | aye | ||
psch | (or nqp-and-higher rather) | ||
FROGGS | from BOOTSTRAP.nqp line 107 to 121 | ||
they are: str int int int int Mu Mu Mu Mu Mu int int int int Mu | 10:31 | ||
fits very well the null/0 | |||
psch | FROGGS: yeah, it should :) | ||
FROGGS: cause that's what defines those fields | |||
10:32
laouji left
|
|||
andreoss | moritz: would it be a sane idea to have something like Slang::NQP or Inline::NQP or I'm missing something here? | 10:32 | |
10:32
laouji joined
|
|||
FROGGS | andreoss: what do you need t for? | 10:32 | |
it* | |||
andreoss | If I have NQP code that runs much faster than Perl6's one | ||
FROGGS | hmmm | ||
10:33
n0tjack left
|
|||
FROGGS | I guess a Slang::NQP should be doable with some hackory | 10:33 | |
psch | but i'd only be faster if you pass it to NQP::Compiler instead of Perl6::Compiler, no? | 10:34 | |
andreoss | or maybe i have a chunk of code that operates only on natives and I don't want unnecessary object wrapping to occur | ||
FROGGS | psch: so we want to find out why .delegate is null if it is null? | ||
10:34
brrt left
|
|||
psch | FROGGS: yeah, i'm pretty sure .delegate being null there is why we don't get anything useful out of bind_attribute_native | 10:34 | |
FROGGS | k | ||
10:34
pat_js joined
|
|||
psch | FROGGS: i suspect something somewhere in the nqp::create() call... | 10:34 | |
FROGGS | psch: the create call just allocates the object | 10:36 | |
Ulti | do you not get $*IN when you do perl6 -e '' ? | ||
and if not why not | |||
FROGGS | Ulti: you probably need to pass it a filehandle | 10:37 | |
psch | oh, right, the "huh" | 10:38 | |
Ulti notices the double quotes in his one liner ;___; BASH mad $* an empty string and Rakudo complained about IN | |||
timotimo | andreoss: we're supposed to let you work with natives sufficiently well so that the perl6 code reaches the speed of the nqp code ... at least somewhat | ||
10:38
telex left
|
|||
psch | FROGGS: the "huh" was: "hints are for fast field access" but the decompiled bytecode says "check the delegate, if that's null check the hint" | 10:38 | |
Ulti | might be a good place for a more awesome error message though | ||
psch | FROGGS: i assume the object should be allocated with a delegate in place, or we need hints | ||
jnthn | iirc, the delegate is used for mixin related bits and maybe for deserialized objects, but not for other cases | 10:39 | |
10:39
mprelude joined
|
|||
FROGGS | P6opaque.change_type looks interesting | 10:40 | |
10:40
telex joined
|
|||
psch | jnthn: yeah, that's what the comments say as well, which means the codegen is probably wrong | 10:42 | |
jnthn | psch: It should be something like "if there's a delegate then use it, otherwise use the hint, and if there's not one then fall back to the name-based lookup" | 10:43 | |
psch | jnthn: oh, of course... which means i'll have to pull apart the name based lookup in the byte code :s | 10:44 | |
jnthn | psch: I think the name-based lookup is implemented in the P6opaque instance base class | ||
Rather than code-gen'd | |||
psch | jnthn: yeah, it's resolveAttribute... which is what throws | ||
ohh | 10:45 | ||
the nameToHintMap is wrong | 10:46 | ||
FROGGS | how so? | ||
psch | hold on | 10:47 | |
i had the contents a bit ago, but i forgot how :P | |||
hm, no, it has "$!name", must've missed that last time | 10:49 | ||
10:50
Ven joined
|
|||
psch | hm | 10:50 | |
we have on classHandle in the REPRData | 10:51 | ||
with an ST with the same ID as the classHandle we're looking for | |||
but they have different SCs | |||
FROGGS | O.O | 10:52 | |
psch | s/on/one/ | ||
gist.github.com/peschwa/9072d94296c74114aa7c | |||
plus this: | 10:53 | ||
main[1] print rd.classHandles[0].st == classHandle.st rd.classHandles[0].st == classHandle.st = true | |||
missing a \n between "ndle.st" and "rd.class"... | |||
wonky paste :s | |||
FROGGS | I can read it anyway :o) | 10:54 | |
psch | and that's why we don't find nameToHintMap | ||
which is why we don't find the attribute | |||
10:55
kjs_ left
|
|||
psch | i guess i'll blindly try only comparing the STables | 10:56 | |
because i don't really have a grasp on what serialization contexts do... :) | |||
FROGGS | this is scary | ||
10:57
AlexDaniel joined
|
|||
FROGGS | dont several classHandles share a STable? | 10:57 | |
AlexDaniel | not sure why this RT was not deleted for 12 hours… | 10:58 | |
FROGGS | AlexDaniel: hi, what RT are talking about? | ||
timotimo | STable combines a type object and a REPR, dunnit? | ||
AlexDaniel | FROGGS: rt.perl.org/Public/Bug/Display.html?id=126035 | ||
psch | FROGGS: uh, i'm not sure. i was assuming what timotimo says is true, which means every ST is unique to one combination | 10:59 | |
timotimo | oh | ||
one per HOW + REPR pairing | |||
FROGGS | psch: yes, but if you have several object of a kind, they share an STable | ||
AlexDaniel | :) | ||
timotimo | yeah, HOW instance | ||
FROGGS | objects* | 11:00 | |
timotimo | which means it'd be per class | ||
FROGGS | hmmm | ||
psch | FROGGS: well, they also need the same hints then | ||
FROGGS | should that be good enough here? | ||
AlexDaniel: I marked it as spam... | |||
AlexDaniel | FROGGS: yeah, I see :) | 11:01 | |
psch | FROGGS: i think it should be, we're only looking for "how can we access the value", not "what is the value" | ||
AlexDaniel | thanks | ||
11:01
n0tjack joined
|
|||
psch | still curious how this suddenly come up... | 11:01 | |
the code in questions is almost 2.5 years old :S | 11:02 | ||
FROGGS | psch: yeah, I cannot imagine how the Attribute belongs to another SC after building the setting | ||
timotimo | AlexDaniel: she says she still believes in signs. does that mean she's fond of languages with sigils? | ||
FROGGS | timotimo: or signs as in prefix ops? | 11:03 | |
timotimo | could be | ||
AlexDaniel | timotimo: yeah, we can probably send some Larry's pics | ||
timotimo | www.expeditedssl.com/aws-in-plain-english - this is partially amusing | 11:04 | |
FROGGS | I mean, it is good that we can lexically scope here belief :o) | ||
timotimo | especially the description of Direct Connect | ||
11:05
n0tjack left
|
|||
psch | building setting with the patch now | 11:06 | |
11:07
itz joined
11:08
domidumont joined
|
|||
psch | well, it builds NativeCall at least :) | 11:10 | |
actually it even finished the build! | |||
FROGGS | psch: please run 'make j-test' | ||
AlexDaniel | It's like: Stacking cash on the sidewalk and lighting it on fire – haha | 11:11 | |
FROGGS | psch: do you still have a modified 'for flat nqp::hllize' in there? | ||
11:11
domidumont left
|
|||
psch | FROGGS: yeah | 11:12 | |
11:12
domidumont joined
|
|||
psch | FROGGS: also, NativeCall builds but apparently fails literally every test | 11:12 | |
oh, wait | |||
t/04-nativecall/16-rt125729.t ........ ok | |||
every other fail is all fails, all with "Bad plan" | 11:13 | ||
FROGGS | that tests typed CArrays IIRC | ||
psch | (Wstat: 0 Tests: 0 Failed: 0) | ||
11:13
ibo2perl6 joined
|
|||
timotimo | o_O | 11:13 | |
how'd that happen | |||
psch | oh | ||
FROGGS: actually, the traits.pm bit looks as before | 11:14 | ||
FROGGS | psch: can you commit or gist your patch? | ||
psch | FROGGS: yeah, let me clean up a bit first | 11:15 | |
ibo2perl6 | m: my $bh = «a a a b b c».BagHash; $bh.perl.say; for $bh.kv -> $k, $v { say "$k => $v" } # this breaks one of my scripts | ||
camelia | rakudo-moar 524a76: OUTPUT«("a"=>3,"c"=>1,"b"=>2).BagHasha 3 => c 1Too few positionals passed; expected 2 arguments but got 1 in block <unit> at /tmp/UQsMFDWol9:1» | ||
FROGGS | psch: I'd like to try that then on the rakudo cu_load branch | 11:16 | |
psch: because then loading the setting and other stuff does not happen through CompUnitRepo anymore | |||
ibo2perl6 | m: my $bh = «a a a b c».BagHash;for $bh.kv -> $k, $v { say "$k => $v" } | 11:17 | |
camelia | rakudo-moar 524a76: OUTPUT«a 3 => c 1Too few positionals passed; expected 2 arguments but got 1 in block <unit> at /tmp/5WqW0URw5O:1» | ||
FROGGS | psch: low level stuff is loaded via Perl6/ModuleLoader.nqp, and perl 6 modules a loaded via CompUnit(Repo) | ||
dalek | p: 52e409e | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/P6OpaqueBaseInstance.java: Only compare STables when looking for the nameToHintMap. For some reason the SC of a class apparently changes, which makes us unable to find the type hint needed to access attributes. This patch hacks around that. |
||
FROGGS | m: my $bh = «a a a b c».BagHash;for $bh.kv -> $k, $v? { say "$k => $v" } | ||
camelia | rakudo-moar 524a76: OUTPUT«a 3 => c 1Use of uninitialized value $v of type Mu in string context in block at /tmp/JYUrweds3T:1b 1 => » | ||
FROGGS | m: my $bh = «a a a b c».BagHash;for $bh.kv -> $k, $v? { say "$k => $v".perl } | 11:18 | |
camelia | rakudo-moar 524a76: OUTPUT«"a 3 => c 1"Use of uninitialized value $v of type Mu in string context in block at /tmp/p0XdQrtjxm:1"b 1 => "» | ||
FROGGS | m: my $bh = «a a a b c».BagHash;for flat $bh.kv -> $k, $v { say "$k => $v".perl } | ||
camelia | rakudo-moar 524a76: OUTPUT«"a => 3""c => 1""b => 1"» | ||
FROGGS | ibo2perl6: ^^ | ||
ibo2perl6 | does that mean I should now flat it myself? | ||
FROGGS | ibo2perl6: aye | 11:19 | |
ibo2perl6 | FROGGS++ | ||
FROGGS | ibo2perl6: now less stuff gets flattened surpi^Wautomatically | ||
11:19
amaliapomian_ joined
|
|||
ibo2perl6 | :D | 11:20 | |
psch | FROGGS: patch is only in nqp, as dalek mentions | ||
i'm afk for a bit o/ | |||
11:23
AlexDaniel left
|
|||
FROGGS | psch++ | 11:23 | |
tadzik | does anyone run rakudobrew on windows? | 11:26 | |
FROGGS | never tried | 11:27 | |
timotimo | never tired | ||
tadzik | I've been told it works :) | 11:29 | |
timotimo | that's good :) | ||
11:29
Psyche^_ joined
|
|||
[Tux] | m: [[^2]].perl.say | 11:30 | |
camelia | rakudo-moar 524a76: OUTPUT«5===SORRY!5=== Error while compiling /tmp/WasS9DTD5QUnable to parse expression in bracketed infix; couldn't find final ']' at /tmp/WasS9DTD5Q:1------> 3[[^7⏏052]].perl.say» | ||
[Tux] | is that intended? | ||
m: [[^2],[^2]].perl.say | |||
camelia | rakudo-moar 524a76: OUTPUT«5===SORRY!5=== Error while compiling /tmp/60QNUllJJBUnable to parse expression in bracketed infix; couldn't find final ']' at /tmp/60QNUllJJB:1------> 3[[^7⏏052],[^2]].perl.say» | ||
[Tux] | m: [[1,2]].perl.say | 11:31 | |
camelia | rakudo-moar 524a76: OUTPUT«[1, 2]» | ||
FROGGS | [Tux]: seems to be an LTM fail | ||
11:31
Ven left
|
|||
FROGGS | m: say [[^]] | 11:31 | |
camelia | rakudo-moar 524a76: OUTPUT«one()» | ||
[Tux] | I have to leave in a sec. feel free to RT that yourself :P | 11:33 | |
11:33
Psyche^ left,
n0tjack joined
11:34
kaare_ left
11:35
kaare_ joined
11:36
ilmari joined
|
|||
ilmari | trying to install panda with rakudobrew failed in t/tester.t | 11:37 | |
yoleaux | 25 Sep 2014 20:07Z <nwc10> ilmari: lunch | ||
ilmari | hahahaaaa | ||
yes, I have had lunch since then | |||
11:38
n0tjack left
|
|||
[Tux] | panda pased this morning still | 11:38 | |
ilmari | freshly brewed moar rakudo | ||
oh, it passed on the second go | 11:39 | ||
[Tux] | I'm off. bbl | ||
ilmari | is here a preferred pastebot? | 11:40 | |
s/bot/bin/ | |||
11:40
thou joined
|
|||
ilmari | fpaste.scsys.co.uk/498559 | 11:40 | |
tadzik | :D | 11:41 | |
ilmari: we usually use github gist | |||
ilmari: tester is a funny one since it simulates failing tests inside it, but doesn't surpress console output | |||
(because back in the days there wasn't a way to do that, and it's quite possible that it still isn't :)) | 11:42 | ||
so it always looks confusing | |||
but now it seems like it failed for real | |||
ilmari | but it definitely failed in that run (no panda installed) | ||
tadzik | very interesting | 11:43 | |
but the second try worked? | |||
I blame sunrays | |||
ilmari | yes | ||
itz | did it fail at the reverse dependency building step? | ||
ilmari | itz: see the paste | ||
itz | no | 11:44 | |
ilmari | no? | ||
tadzik | revdeps are ded | ||
and thankfully | |||
11:45
thou left
|
|||
itz | oh thats good news | 11:45 | |
tadzik | I thought it'd be a controversial decision but everyone seems to like it | ||
weird :) | |||
does anyone remember what IRC nickname github:patzim uses? | 11:47 | ||
I remember it starting with miz... I think | |||
ilmari: well, please let me know if you see it happen again, especially if reproducible | |||
11:49
tadzik joined
|
|||
ilmari | tadzik: got it fail once more running prove -e perl6 -lv t/tester.t | 11:51 | |
tadzik | oh, interesting | ||
I get a full pass | 11:52 | ||
on freshly built rakudo and panda | |||
ilmari | it only fails very occasionally | ||
tadzik | planned two tests but ran one, like it crashed midway between lives-ok() and dies-ok() | 11:53 | |
very weird | |||
moritz | that's why test plans are still useful | 11:54 | |
tadzik | indeed | ||
ilmari | done_testing() and the non-zero exit would have caught that too | ||
11:54
kjs_ joined
|
|||
ilmari | gist.github.com/ilmari/b6c28f43569f5d6d8a98 | 11:54 | |
tadzik | aha! | 11:55 | |
moritz | what it does not catch is some refactoring not running all of your tests (but still exiting cleanly) | ||
tadzik | ilmari: are you using some new-ish prove perchance? | 11:56 | |
ilmari | I'm not saying test plans are never useful, but it wouldn't make any difference in this case | ||
TAP::Harness v3.35 and Perl v5.22.0 | |||
tadzik | it looks like prove sees the result that the inner-prove produced and thinks it's the outer one | ||
it's quite nasty all in all | |||
ilmari | tadzik: but only sometimes? | ||
tadzik | ilmari: ...apparently | ||
I'm on 3.30 | 11:57 | ||
let me update and see if it happens to me then, sometimes | |||
11:58
dayangkun left
|
|||
tadzik | nope, runs like a charm | 11:58 | |
ilmari | it's only failed twice for me so far, out of tens of runs | ||
running it in a loop now | |||
failed again just now | 12:00 | ||
while prove -e perl6 -lrv t/tester.t ; do :; done | 12:01 | ||
tadzik | it consistently never fails for me :/ | ||
nine | ibo2perl6: for $bh.kv -> ($k, $v) { say "$k => $v".perl } is nicer I think | 12:02 | |
ilmari | is there a readline-enabled repl for perl6? | 12:04 | |
nine | ilmari: install Linenoise | 12:05 | |
ilmari | ah, _obviously_ | 12:06 | |
12:06
n0tjack joined
|
|||
ilmari searched for readline on modules.perl6.org and installed Readline, but that didn't help | 12:06 | ||
tadzik | heh | 12:07 | |
oh, I was to write m-b for linenoise | |||
timotimo afk for ~4 hours | 12:08 | ||
awwaiid is pleased with their first non-toy perl6 grammar, github.com/awwaiid/pinpoint-code-c...code-color | 12:09 | ||
ilmari | nine: wow, that makes the repl take a _lot_ longer to start up | 12:10 | |
from .2s to 2.2s | |||
12:10
n0tjack left
|
|||
tadzik | :o | 12:11 | |
ilmari | and I thought Devel::REPL was bad | ||
12:11
n0tjack joined
|
|||
tadzik | module loading is very constly :/ | 12:11 | |
costly, even | |||
jnthn | Well, it is if you don't pre-compile... | 12:12 | |
tadzik | yep | ||
ilmari | panda install doesn't? | ||
tadzik | I guess we should do something about it... | ||
ilmari: it used to, but doesn't anymore | |||
let me point you to the reason why | |||
ilmari: www.nntp.perl.org/group/perl.perl6....g2216.html | 12:13 | ||
ilmari | tadzik: I see | 12:14 | |
12:14
rurban left
12:17
Mhoram joined,
Mhoram left,
n0tjack left
|
|||
FROGGS | tadzik: please wait for the cu_load branch to land before doing any precomp work... | 12:18 | |
tadzik | okay | ||
12:22
skids joined
12:24
skids left
12:27
ibo2perl6 left
12:31
garryBarlowsLeft left
|
|||
[Coke] | (80x25) of course jnthn would be. I also am, but i'm an old fart at this point. "I remember using a physical terminal to access the MTS at college..." | 12:31 | |
12:33
rurban joined
|
|||
[Coke] | (126035) it's spam. to deal with spam, don't delete, click the big red S in the menu, upper right hand side. | 12:33 | |
jnthn | My eyes aren't (haven't ever been, won't ever be) good enough to do much more than 80x25 :) | 12:34 | |
[Coke] | (well, it's red after you click on it) | 12:35 | |
12:35
brrt joined,
Alina-malina left
|
|||
FROGGS | jnthn: there might come a time where you plug in cameras into your left ear, and attach them to your forehead :D | 12:35 | |
dalek | Heuristic branch merge: pushed 24 commits to rakudo/cu_load by FROGGS | 12:37 | |
jnthn is a little curious if google glass might be interesting for him | |||
12:38
n0tjack joined
|
|||
jnthn | "Show me a zoom on that bit of the real world" :) | 12:38 | |
FROGGS | I've not yet seen one | ||
[Coke] | maybe we can get Perl 6 added to www.fileformat.info/'s "how to print" | ||
FROGGS | [Coke]: we can ask them | ||
jdv79 | what is cu_load for? | 12:39 | |
[Coke] | m: say "\x[1f595]" | ||
camelia | rakudo-moar 524a76: OUTPUT«🖕» | ||
FROGGS | jdv79: separating Perl 6 level module loading from nqp level | ||
jdv79 | o | ||
12:41
laouji left
12:42
n0tjack left
|
|||
TimToady | jnthn: see irclog.perlgeek.de/perl6/2015-09-11#i_11201188 for my nsa musings | 12:46 | |
jnthn | TimToady: I saw them, thanks. :) I need to ponder them a bit, but a nasty Moar race condition stole my attention this morning. | 12:47 | |
TimToady | yeah, and I'm .caching madly enough that I only slept 3 hours | 12:48 | |
psch | FROGGS: are you looking at cu_load currently? | 12:49 | |
FROGGS | psch: I was hoping it helps loading the setting more cleanly, but the opposite effect happened | ||
jnthn | TimToady: That is...not much sleep | 12:50 | |
[Coke] | spw hasn't forgotten about the youtube video of the q&a, roman is working on it. | 12:51 | |
psch | FROGGS: hmm, yeah i'm seeing another SOE, with similar code path to what we had with the nom jvm build... | ||
FROGGS | :/ | 12:52 | |
timotimo | looking forward to that recording | ||
12:53
sufrostico joined
|
|||
TimToady | jnthn: it's just jetlag, mostly, and I can take naps when I need 'em now that I'm home | 12:54 | |
jnthn | ah, jetlag... | ||
jnthn still feels like he's recovering from his last batch of travel | 12:55 | ||
12:58
abaugher joined,
Woodi left
13:00
Woodi joined
|
|||
itz | has anyone integrated rakudobrew with PS1 to display which version is in use? | 13:00 | |
[Coke] | does panda not work when using a relatively-path'd perl6 to bootstrap? | 13:03 | |
tadzik | hmm | ||
yes | |||
moritz | [Coke]: did you 'make install'? | ||
[Coke] | ... yup, that seems to be a problem. (or maybe a perl6 not in your path) | ||
moritz: yup. | |||
trying to run the inline::perl5 tests, it's kind of a pain with a local dev copy. | 13:04 | ||
ARGLEBARGLE. also, panda still not working with http proxy. | 13:05 | ||
I think that's a Christmas blocker. | 13:06 | ||
tadzik | it is | ||
if you have HTTP::UserAgent installed | |||
[Coke] | adding it to the list. :) | ||
tadzik | I think I even documented that :) | ||
FROGGS | WRTFM? | ||
[Coke] | gist.github.com/coke/38a589cec239409a4212 | 13:07 | |
tadzik: how can I install HTTP::UserAgent ? | |||
... with panda? | |||
tadzik | :} | ||
jdv79 | is Digest GLR'ed yet? | ||
[Coke] | right. I think that needs to be bundled, then. | ||
jdv79 | that blocked me from using IO::Socket::SSL recently | ||
dakkar | surprise of the day: @().elems == 1 | 13:08 | |
jdv79 | which is what H::UA uses | ||
tadzik | [Coke]: to my defense, you can tell panda to use http all the time if it's git being blocked you're after | ||
jdv79 | looks like not | ||
[Coke] | tadzik: still needs a proxy. | ||
moritz | m: say @().perl | ||
camelia | rakudo-moar 524a76: OUTPUT«(Nil)» | ||
dakkar | moritz: is that expected? | 13:09 | |
[Coke] | is camelia updated past glr yet? checking... | ||
looks like. | 13:10 | ||
dakkar: what version of perl6 do you have? | |||
13:10
n0tjack joined
|
|||
dakkar | [Coke]: 5746d | 13:10 | |
built a few days ago | |||
jdv79 | carving 6.0 out of roast sounds like a lot of work | 13:11 | |
[Coke] | perl6 -version might be easier to figure out... | ||
jdv79: yup | |||
jdv79 | that only a select few can even do | ||
dakkar | This is perl6 version 2015.07.1-776-g5746df2 built on MoarVM version 2015.07-108-g7e9f29e | ||
[Coke]: but yes, past glr | |||
[Coke] | RT: 1,041 tickets, 14 [GLR], 11 testneeded | 13:13 | |
13:15
n0tjack left
|
|||
[Coke] | trying to see if I can find anything on RT#77644. this segfaults: ./perl6-valgrind-m -e 'EVAL q[] while 1' | 13:16 | |
(whereas ./perl6 just chews memory) | 13:17 | ||
TimToady | NB: after we merge list-v-cache, some subset of the GLRization will have to be revisited--anywhere we added a .list, that will need to change to .cache (unless it's before a .elems, which will .cache now, so .list.elems can just be .elems) | 13:20 | |
13:24
khw joined
13:26
pmurias joined
|
|||
jnthn | TimToady: I assume you updated the binder to use .cache instead of .list? | 13:28 | |
13:28
thou joined
|
|||
TimToady | yes, I even updated the jvm binder :) | 13:29 | |
(without testing it) | |||
jnthn | Nice | 13:30 | |
TimToady | down to 1 test failure (that is my fault :) | ||
well, I guess the .perl one is also my fault :) | |||
13:32
aborazmeh joined,
aborazmeh left,
aborazmeh joined
13:33
thou left,
hernanGOA joined
|
|||
itz | did the old [1, 2]<> have a name? | 13:35 | |
jdv79 | isn't that the zen slice | 13:36 | |
moritz | it is | 13:37 | |
TimToady | it's one form of it | 13:38 | |
13:38
thou joined
|
|||
TimToady | .[] and .{} are also Zen slices | 13:38 | |
itz | perl6advent.wordpress.com/2014/12/...zen-slice/ has {} as well | ||
13:39
n0tjack joined
13:41
amaliapomian_ left
13:48
n0tjack left
|
|||
dalek | kudo/nom: 8dd779a | hoelzro++ | src/core/ (2 files): Remove initialization of removed dynamic vars |
14:03 | |
kudo/nom: 13fda77 | hoelzro++ | src/core/Exception.pm: Fix recommendation for $^X |
|||
kudo/nom: 8004846 | hoelzro++ | src/Perl6/Grammar.nqp: Error out if we see semicolon form without unit |
|||
14:06
lichtkind joined
|
|||
colomon | *** Error in `/home/colomon/.rakudobrew/moar-nom/install/bin/moar': double free or corruption (!prev): 0x00007fce30089ae0 *** | 14:06 | |
generated during the smoke test, but I don’t know by what. :( | |||
14:07
n0tjack joined
|
|||
daxim | in p6 string model, do I still have the distinction between lax "UTF8" (possibly 72 bits) and strict "UTF-8"? it was occasionally useful to use unassigned codepoints beyond 1ffff. | 14:07 | |
14:07
brrt left
|
|||
TimToady | no, we don't use utf-8 internally anymore, and graphemes are (by default) stored in 32-bit ints | 14:09 | |
utf-8 is just an encoding now | 14:10 | ||
jnthn | The utf-8 decoder in MoarVM follows Unicode Corrigendum 9 | ||
14:11
echo`division joined
|
|||
moritz | m: say chr(0x1ffff + 1) | 14:11 | |
camelia | rakudo-moar 800484: OUTPUT«𠀀» | ||
14:12
n0tjack left
14:13
kjs_ left
|
|||
TimToady | .oO(non corrigendum illegitimi) |
14:14 | |
daxim | I didn't know about that text: www.unicode.org/versions/corrigendum9.html I'm relieved that I can pass around non-characters for interchange | ||
colomon | X::AdHoc.new(payload => "Could not submit test report: Unexpected named parameter 'pretty' passed") | 14:15 | |
tadzik: ??? | |||
14:15
steffi joined
|
|||
TimToady | m: say (^100000000).EXISTS-POS(10000000) | 14:15 | |
camelia | rakudo-moar 800484: OUTPUT«True» | 14:16 | |
tadzik | :S | ||
TimToady | m: say (^100000000).EXISTS-POS(100000000) | ||
tadzik | colomon: oh hm | ||
camelia | rakudo-moar 800484: OUTPUT«(timeout)» | ||
TimToady | I have a fix for that too | ||
tadzik | colomon: update JSON::Fast | ||
colomon tries panda reboostrap | 14:17 | ||
jnthn | TimToady: At least it can reify 10 million elements before timing out :) | ||
colomon | … which doesn’t exist | ||
even when spelled correctly | 14:18 | ||
moritz | colomon: when you need a rebootstrap, you usually can't call panda anymore; which is why rebootstrap.p6 is a separate script (in the panda source dir) | ||
colomon | just asked rakudobrew to build panda again, looked like it brought in a bunch of changs for JSON::Fast | ||
tadzik | yeah | 14:20 | |
FROGGS | jdv79: I just fixed Digest | 14:23 | |
grondilu: ^^ | 14:25 | ||
14:28
aborazmeh left
|
|||
colomon | tadzik: that doesn’t seem to have cleared things up. :\ | 14:29 | |
tadzik | :/ | ||
is smoker using JSON::Fast? | |||
or ::TIny | |||
14:30
n0tjack joined
14:31
cognominal left
|
|||
colomon | tadzik: neither | 14:31 | |
grondilu | FROGGS++ | ||
dalek | rl6-roast-data: 22e34e6 | coke++ | / (9 files): today (automated commit) |
||
colomon | I think I’ve got emmentaler just using Rakudo’s built-in JSON | ||
tadzik | :o | ||
colomon | though of course it calls panda, | ||
and uses whatever panda uses | |||
there | |||
colomon ponders completely blowing away his rakudo/panda setup and starting from scratch | 14:32 | ||
dalek | kudo/list-v-cache: 524a763 | lizmat++ | src/core/traits.pm: "cached" is one of the possible Routine traits |
14:33 | |
kudo/list-v-cache: 8bc2c40 | TimToady++ | src/core/traits.pm: Merge branch 'nom' into list-v-cache |
|||
rakudo/list-v-cache: d46a494 | TimToady++ | src/core/Seq.pm: | |||
14:33
dalek left
|
|||
grondilu | so many C<flat> :/ Will be always have to use this that often or is it just temporary? | 14:34 | |
14:34
dalek joined,
ChanServ sets mode: +v dalek
|
|||
grondilu | *we | 14:34 | |
FROGGS | grondilu: I think most of them will stay... | 14:35 | |
grondilu | :/ | ||
[Coke] | Only use it if you need to be flat. :) | ||
14:35
n0tjack left
|
|||
FROGGS | grondilu: for example when you use meta ops (X, Z), they produce lists of lists | 14:35 | |
moritz had to add surprisingly few flat() calls in his modules | 14:36 | ||
FROGGS | grondilu: and when you subscript, it retains the requested structure... so you want to flat that out | ||
grondilu | ok | ||
FROGGS | m: my @a = ^10; say @a[^5,5..9] | ||
camelia | rakudo-moar 800484: OUTPUT«((0 1 2 3 4) (5 6 7 8 9))» | ||
14:36
n0tjack joined
|
|||
FROGGS | stuff like that | 14:37 | |
colomon ’s biggest GLR issue so far has been Set.list no longer being the same as Set.keys | 14:38 | ||
14:39
muraiki joined
|
|||
TimToady | yeah, I can argue that one both ways, but something to be said for consistency with bags and mixes | 14:40 | |
muraiki | if I want to specify a type such as a Set of Str in a sub's signature, what's the correct syntax to do so? | ||
colomon | TimToady: I don’t mind the change, but I used Set.list a lot where today it needs to be Set.keys | 14:41 | |
14:41
n0tjack left
|
|||
colomon | the resulting failure states are pretty amusing. :) | 14:41 | |
14:41
n0tjack joined
|
|||
TimToady | jnthn: list-v-cache is ready to merge, no failures except known ones in adverb.t and litvar.t | 14:43 | |
shall we just bite the bullet, since it's likely to have some performance improvement? | |||
plust the failure mode of using .list instead of .cache is fairly obvious | 14:44 | ||
[Coke] | sooner the better if we want it in the september release. | 14:45 | |
jnthn | TimToady: litvar.t? | ||
Odd | |||
adverb.t isn't yours, I don't think | |||
TimToady: Anyway, we can merge | |||
TimToady | well, except it was caused by my .perl change to eqv | ||
jnthn | Oh | 14:46 | |
:) | |||
TimToady | but that's independent | ||
the litvar might possibly be my problem, but I think we can proceed anyway | |||
jnthn | The S15-nfg/many-threads.t one is because better code-gen made a certain race much more likely | ||
14:46
n0tjack left
|
|||
jnthn | Yeah, I'd go for it | 14:46 | |
moritz | jnthn: that's one of the best reasons for a regression I've heard of :-) | 14:47 | |
dalek | kudo/nom: b410729 | TimToady++ | src/ (13 files): early hackage to distinguish .cache from .list |
||
rakudo/nom: 834c805 | TimToady++ | / (8 files): | |||
rakudo/nom: Merge branch 'nom' into list-v-cache | |||
14:47
dalek left
|
|||
TimToady | killed dalek :) | 14:48 | |
14:48
dalek joined,
ChanServ sets mode: +v dalek
|
|||
moritz | in #perl6, you kill dalek :-) | 14:48 | |
TimToady | anyway, it's merged | ||
moritz | TimToady++ | ||
TimToady: so the implication is that if you write function that's supposed to receive the iterator, you don't use a @-sigiled parameter anymore | 14:49 | ||
right? | |||
TimToady | yes, that was already in GLR | 14:50 | |
jdv79 | FROGGS: thanks | ||
TimToady | it just now calls .cache internally rather than .list | ||
pmurias | hoelzro: once I get @array.push working anything else will be stopping the merge? | 14:52 | |
vendethiel | moritz: you mean you exterminate it ;-) | 14:53 | |
moritz | vendethiel: I guess I do :-) | 14:59 | |
ugexe | the new nom merge appears to break something for me but only on windows | 15:00 | |
hoelzro | pmurias: I would like to see if I can get around the optimization removal in the MAST compiler; if I can't get it in the next few days, let's just merge, perhaps on Sunday? | ||
15:02
n0tjack joined
15:04
domidumont left
|
|||
pmurias | hoelzro: it's currently only diabled when we are cross compiling | 15:04 | |
* disabled | |||
dalek | p/js-merge-wip: a7d006d | (Pawel Murias)++ | src/vm/js/QAST/Compiler.nqp: Minor cleanup. |
15:05 | |
hoelzro | I know; I just would rather remove that "if cross compiling" check | ||
call me particular =) | |||
TimToady | litvar.t passes after the merge, somehow, and jvm compiles \o/ | 15:07 | |
pmurias | hoelzro: copy & paste would avoid that, but I would rather avoid that | ||
15:07
n0tjack left
|
|||
itz | is there a version of dd which returns the type like this "dd $a" -> Str $a = "A" | 15:09 | |
15:09
dalek left
15:10
dalek joined,
ChanServ sets mode: +v dalek
15:11
rurban left
15:12
laouji joined
|
|||
FROGGS | TimToady: jvm compiles? | 15:13 | |
TimToady: also NativeCall.pm? | |||
but it will surely fail the tests from t/04-nativecall | 15:14 | ||
[Coke] | t/spec/S17-procasync/no-runaway-file-limit.t is running away | 15:16 | |
FROGGS | O.o | 15:17 | |
ahh, is that the one where jnthn said the proper fix will be interesting? | |||
15:17
captain-adequate joined
|
|||
[Coke] | gist.github.com/coke/4be19f57f3845d3713f0 - roast failures. | 15:18 | |
jnthn | t/spec/S17-lowlevel/thread.t is fixed in MoarVM, but didn't bump yet | 15:20 | |
ugexe | rakudobrew is broke on travis and windows now :( | 15:22 | |
15:24
TEttinger joined
|
|||
[Coke] | t/spec/S17-procasync/no-runaway-file-limit.t in make spectest hung. running by hand, get: | 15:24 | |
moar(85050,0x11812b000) malloc: *** error for object 0x7fa1eeecbdc0: pointer being freed was not allocated | |||
15:28
FROGGS left,
araujo left
15:29
cognominal joined
15:34
n0tjack joined
15:38
n0tjack left
|
|||
dalek | kudo/gmr: 278a719 | (Stefan Seifert)++ | src/Perl6/ (2 files): Fix return 1, :a(2) Though return is implemented as a function call, we may not promote pairs to named arguments, because we cannot demote them afterwards. Fixes RT #75118 |
15:45 | |
nine | The gmr branch is now free of regressions and actually fixes two RT tickets :) | 15:46 | |
jnthn | nine++ | ||
TimToady | ugexe: if it's reporting a Seq error, then probably you need to change .list to .cache somewhere | ||
15:46
echo`division left
15:48
steffi left
15:49
domidumont joined,
abraxxa left
|
|||
ugexe | TimToady: the program just abruptly stops with no error or anything. after running it more its not always, but random, although its always at the same spot, at something like: sub work(&code) { await start { &code } }; my $foo := work { gather for 1..3 { <some work here> } }; for $foo.list ... | 15:50 | |
TimToady | well, could be threads, or it could be .cache; try changing the .list there to .cache maybe? | 15:53 | |
15:54
skids joined
15:57
kjs__ joined
16:03
zakharyas left
16:06
n0tjack joined
|
|||
dalek | p/js-merge-wip: 1b3369e | (Pawel Murias)++ | / (5 files): Support calling methods on arrays. Do this by wrapping them in special objects for method calls. |
16:07 | |
16:07
mprelude left
16:10
n0tjack left
|
|||
hoelzro | pmurias: I'll see if I can fix the underlying issue; I'll take the condition check over copy/paste | 16:19 | |
itz | m: [[1,]] | 16:20 | |
camelia | ( no output ) | ||
itz | m: dd [[1,]] | 16:21 | |
camelia | rakudo-moar 0c79be: OUTPUT«[1]» | ||
itz | m: dd [[1],] | ||
camelia | rakudo-moar 0c79be: OUTPUT«[[1],]» | ||
itz | is that the single arg rule? | ||
jnthn | itz: yes | 16:22 | |
16:23
n0tjack joined
16:24
tokuhiro_ left
16:25
laouji left
16:27
n0tjack left
16:31
ab5tract_ left
|
|||
pmurias | hoelzro: keep in mind that serialize_sc must be also overridable, as we use that to avoid serializing twice while cross compiling | 16:34 | |
hoelzro | pmurias: yes, that's fine | 16:35 | |
pmurias | just returning an ast fragment instead of a null would remove the if | 16:36 | |
wouldn't be more elegant :( | 16:38 | ||
16:39
n0tjack joined,
andreoss left
16:43
n0tjack left
|
|||
itz | stevemynott.blogspot.co.uk/2015/09/...actor.html | 16:44 | |
moritz | "LIST NOW IMMUTABLE" the example is a bad one, since pre-GLR died the same way | 16:51 | |
it's just that push, pop, shift, unshift are gone from List | 16:52 | ||
itz | ok I'll change that .. probably later since I'll batch up changes | 16:53 | |
ilmari | Linenoise gets confused about the cursor position with multibyte utf8 characters | ||
16:53
tadzik left
16:54
tadzik joined
|
|||
ilmari | it uses bytes when calculating the cursor position | 16:54 | |
not just the cursor position. it seems to operate entirely on bytes | 16:55 | ||
16:55
dakkar left
|
|||
ilmari | if I type å backspace, it deletes the second byte of the character | 16:57 | |
and if I then hit enter, perl6 dies with ===SORRY!=== Malformed termination of UTF-8 string | 16:58 | ||
ah: github.com/antirez/linenoise/issues/25 | |||
17:04
itz left
|
|||
jnthn | dinner & | 17:05 | |
[Coke] | jnthn: I am planning a 20 mile hike tomorrow ending in a curry. Thought you might appreciate that. | 17:08 | |
17:10
kjs__ left
17:11
n0tjack joined,
anaeem1_ joined
17:12
rurban joined,
anaeem1_ left
|
|||
flussence | p6doc is blowing up in a test at lib/Perl6/TypeGraph.pm:89... I can get the failing test to pass via s:g/\./»./, but I don't know if that's the right way to go about it. | 17:14 | |
17:15
n0tjack left
|
|||
moritz | flussence: uhm, what kind of method calls need the >> now? | 17:16 | |
ilmari | Method 'super' not found for invocant of class 'Array' | ||
17:17
duncan_dmg left
|
|||
moritz | ilmari: callwith, callsame etc. to the rescue | 17:17 | |
ilmari | (that's the error from lib/Perl6/TypeGraph.pm:89) | ||
moritz | huh | 17:18 | |
I thought it's a p5ism | |||
17:24
n0tjack joined
17:25
tokuhiro_ joined
17:29
n0tjack left,
tokuhiro_ left,
brrt joined
|
|||
nine | _itz: you might want to mention, that a Slip slips into a list ;) my @a = 1, (2, 3).Slip, 4; # @a is now [1, 2, 3, 4] | 17:29 | |
brrt | hmm | 17:30 | |
m: my @list = 1, (2, 3), 4; dd @list.flat.list; | |||
camelia | rakudo-moar 0c79be: OUTPUT«(1, $(2, 3), 4)» | ||
brrt | m: my @list := 1, (2, 3), 4; say @list.flat.list; | 17:31 | |
camelia | rakudo-moar 0c79be: OUTPUT«(1 2 3 4)» | ||
brrt | why? | ||
nine | brrt: Array itemizes its contents | ||
brrt | is there any way to unitemize it | 17:32 | |
nine | brrt: and itemization prevents flattening | ||
brrt | hmm | ||
nine | m: my @a = 1, (2, 3), 4; say @a.perl; my @b = @a.List.flat; say @b.perl; say @a.map(*.list).flat.list.perl; | 17:33 | |
camelia | rakudo-moar 0c79be: OUTPUT«[1, (2, 3), 4][1, 2, 3, 4](1, 2, 3, 4)» | ||
brrt | ok | 17:34 | |
so .List makes it a list again, and it can flatten | |||
.list also does this | |||
nine | m: my @a = 1, (2, 3), 4; say @a.perl; my @b = @a.list.flat; | 17:35 | |
camelia | rakudo-moar 0c79be: OUTPUT«[1, (2, 3), 4]» | ||
nine | brrt: no, there's a difference between .list and .List ^^^ | ||
brrt | yeah, but not in this aspect | ||
m: my @a = 1, (2, 3), 4; say @a.list.flat.list; | 17:36 | ||
camelia | rakudo-moar 0c79be: OUTPUT«(1 (2 3) 4)» | ||
brrt | NO | ||
thats not fair | |||
17:36
telex left
|
|||
nine | brrt: .list on an Array really doesn't do anything. It just returns self, since Arrays are also Lists | 17:36 | |
brrt: .List gives you a real, pristine List | |||
brrt | perl6 has an unmatched ability to make sane programmers go crazy | 17:37 | |
17:37
n0tjack joined
17:38
telex joined
|
|||
brrt | in a good way? | 17:39 | |
nine | Granted this .list vs. .List distinction is not by design. I just added .List because I got tired of writing the same code again and again and I really think, internals should return Lists as far as possible. That their implementation uses an Array to gather the results should be a detail that's best hidden. | 17:42 | |
brrt | yeah, that's probably best | 17:43 | |
_itz | nine: thanks I'll add that | 17:44 | |
17:44
n0tjack left
17:46
mprelude joined
|
|||
brrt | actually, it works out pretty well | 17:46 | |
17:56
brrt left
17:57
Alina-malina joined
17:58
brrt joined
18:00
espadrine left
18:05
n0tjack joined
18:09
n0tjack left
|
|||
skids | flussence: I had slready got past that and started on working on the next problem -- if you want I can commit the fixes so far. | 18:11 | |
flussence | ahh, carry on. I can read the pod just fine for now :) | ||
dalek | c: e232576 | skids++ | lib/Perl6/TypeGraph (2 files): Partway fix doc build after a GLR-related something or other |
18:13 | |
18:22
FROGGS joined
18:26
tokuhiro_ joined
|
|||
FROGGS | o/ | 18:27 | |
muraiki | \o | ||
FROGGS | what do I do now? I don't want to work on the jvm today :S | 18:28 | |
muraiki | the lisp machine port | 18:29 | |
FROGGS | O.o | ||
muraiki | I have used a bunch of languages on the jvm, but never actually learned java | 18:30 | |
I feel like I should learn it as the lingua franca of most business development, but it's so rarely used in the type of stuff I do (non-enterprise web apps) that I haven't really felt the need to | |||
18:30
tokuhiro_ left
|
|||
muraiki | but I look forward to being able to use java libraries from p6 instead of from scala (too much time converting types around) or clojure (depending on how enterprisey the java code is, can be a nightmare) | 18:31 | |
psch | FROGGS: you could try figuring out why my portaudio bindings segfault when trying to use jackd as audio driver, but don't when using alsa :P | 18:32 | |
FROGGS: although last i tried was about a week or two ago, so maybe something changed already | |||
FROGGS | psch: where is the code? | ||
japhb | FROGGS: I vote for the rakudo/cpp3 merge. ;-) | 18:33 | |
psch | FROGGS: github.com/peschwa/Audio-PortAudio | ||
FROGGS | japhb: that's why I was working on the jvm... | ||
japhb | DANGIT. | ||
FROGGS | japhb: I need to port stuff to jvm, and thus need a working perl6-j | ||
japhb: exactly | |||
psch: do I get a commit bit? | 18:34 | ||
psch | FROGGS: sure, hold on | ||
japhb is now considerably more annoyed at the JVM | |||
psch | FROGGS: done | 18:35 | |
FROGGS | psch: how do I select the jackd backend? | 18:36 | |
psch | FROGGS: you need to have jackd running, which might need some alsa configuration as well | ||
FROGGS | ohh | ||
flussence | doesn't jackd have some handwavey-autostart-magic feature like pulseaudio these days? | 18:37 | |
18:37
n0tjack joined
|
|||
psch | FROGGS: but in general it's "$ /usr/bin/jackd -R -P89 -dalsa -dhw:0 -r48000 -p256 -n3" | 18:37 | |
where -r -p and -dhw depend on your soundcard | |||
wiki.archlinux.org/index.php/Pro_Audio#JACK | 18:38 | ||
that heading should be enough to get it to a working-enough-for-trying-if-it-works state | |||
or rather the paragraph i guess | |||
flussence: i'm not aware of any such future | 18:39 | ||
flussence | oh, maybe the programs I was using did it internally... | ||
18:39
Alina-malina left
|
|||
psch | flussence: might also be a distribution-thing... | 18:40 | |
18:41
darutoko left
18:43
yqt joined
|
|||
FROGGS | $ perl6 -Ilib test.pl | 18:43 | |
init: Host error. | |||
Cannot locate symbol 'Pa_GetDefaultOutputDevice' in native library 'libportaudio.so' | |||
18:43
yqt left
18:44
yqt joined
|
|||
psch | 19_20140130-1 is the portaudio version i was running against | 18:44 | |
18:45
Fleurety joined,
n0tjack left,
araujo joined,
araujo left,
araujo joined
|
|||
FROGGS | portaudio.h,v 1.5 2002/03/26 18:04:22 | 18:46 | |
18:47
yqt left
|
|||
FROGGS | ohh, hold on | 18:48 | |
timotimo | 2002? %-) | 18:49 | |
FROGGS | I've also got a libportaudio.so.2 | ||
which is libportaudio2 19+svn20140130-1 | 18:50 | ||
psch | .so{.\d+,} jungle :/ | ||
well, it's not quite a dll-hell, is it vOv | 18:51 | ||
FROGGS | *g* | ||
18:51
sufrostico left
|
|||
FROGGS | psch: how can I tell that it is using jackd? gist.github.com/FROGGS/9f182b90d616e936a349 | 18:52 | |
psch | FROGGS: looks to me like it can't get any device | 18:53 | |
FROGGS: you might have to "pulseaudio -k" in case that's running | |||
(and possibly disable to restarting daemon...) | 18:54 | ||
FROGGS: i'd advice trying first without jackd whether it does anything then | |||
FROGGS: you should then hear occassional crackles, because of lots of underruns... | |||
skids | Yes jackd put in autostart I think in a kneejerk reaction to "hey why won't anyone come over here and work on our code" when pulseaudio strated gaining steam. | 18:56 | |
Then they let the systwide daemon bitrot | |||
Then pulseaudio turned around and said, hey, we really need a systemwide daemon for this. | |||
And the sage never ends | 18:57 | ||
*saga | |||
pyrimidine | we used to have sage in our backyard growing like crazy, so you could say our sage never ended | 19:00 | |
psch | FROGGS: i've also made the experience that jackd when running doesn't appear as the default device to portaudio | 19:01 | |
19:01
yqt joined
|
|||
psch | FROGGS: which is why you'll probably have check with enum-devices.pl which device id the jackd client sits on | 19:01 | |
skids | These days I uninstall everything and just use alsa dmix; my needs are not complicated and my patience is limited. | 19:02 | |
psch | FROGGS: and replace :device(Pa_GetDefaultOutputDevice) with :device($id-you-found) in line 33 | ||
FROGGS | psch: I think we need to fix that one too: gist.github.com/FROGGS/9f182b90d61...e1-txt-L17 | ||
psch | FROGGS: right, iirc that's line 70 in test.pl | 19:03 | |
FROGGS: the assignment works via an intermediate variable, but not directly | |||
FROGGS | weird, but true | 19:04 | |
19:05
sufrostico joined
19:06
sufrostico left
|
|||
FROGGS | it seems to have connected to jackd now | 19:06 | |
but jackd gives: JackAudioDriver::ProcessGraphAsyncMaster: Process error | |||
I don't hear cracks though or anything else | 19:07 | ||
psch | curious | 19:13 | |
it always either dump its core or segfaulted for me | |||
[Coke] wonders again why we need str, gist, perl, dd (and now ddt) | 19:14 | ||
psch | do you have continuous output in the terminal? | ||
i'm still expecting underruns, fwiw | |||
oh but process error | |||
FROGGS | yeah, no idea what that means | 19:15 | |
_itz | ddt is for debugging :P | 19:16 | |
psch | FROGGS: did you adjust the constants to what you gave jackd? | ||
SAMPLE_RATE and FRAMES_PER_BUFFER that is | |||
FROGGS | ummm | ||
19:17
n0tjack joined
|
|||
FROGGS | now I did, but still get the process error | 19:18 | |
[Coke] | _itz: maybe it should be part of the debugger, than. | 19:19 | |
*then. | |||
psch | FROGGS: did you check the device id and give that to Pa_StreamParameters? | 19:20 | |
_itz | that was a jokey reference to the banned 1950s DDT .. dd is in core | ||
psch | FROGGS: aside from that i'd say "check with another jack-capable program", but "process error" sounds like it's our fault... | 19:21 | |
FROGGS | psch: why do I have to do such much manually? | ||
jercos | audio is hard, let's go shopping? | ||
psch | FROGGS: because the bindings are 1/4th finished and i wanted to have a working base first :/ | 19:22 | |
FROGGS | *g* | ||
moritz doesn't like shopping | |||
19:22
n0tjack left
|
|||
psch | also what jercos++ says | 19:22 | |
timotimo doesn't like shooping either | |||
moritz | in fact, I mostly prefer compiler hacking over shopping | 19:23 | |
psch | FROGGS: thing is, from the list of available device the user has to chose one if the default isn't the right one | ||
FROGGS | psch: what device do I chose? default, pulse, system, hdmi or intel? | ||
psch | FROGGS: and with jack it never seems to be the right one... vOv | ||
moritz | (except when it's in an electronic or hardware store, and I have unlimited budget :-) | ||
psch | FROGGS: that depends on which device jackd says it has, but if you have pulse that might muck it up anyway... :/ | ||
19:24
n0tjack joined
|
|||
FROGGS | psch: jackd prints 'Acquire audio card Audio0', so, device 0? | 19:24 | |
psch: now I get a lot of output underflow and then it exits gracefully | 19:25 | ||
psch | FROGGS: but jackd says it got a connection? | 19:26 | |
FROGGS | no, doesnt say anything | ||
skids | jackd never says anything useful except when you poke it with specially designed cattle prods (included). | 19:27 | |
FROGGS | device=4 hangs, and when I ctrl+c, it prints something | 19:28 | |
ohh! | |||
device=6 makes some peeping noise, and then segfaults :D | |||
psch | \o/ | ||
FROGGS | and jackd prints process error :o) | 19:29 | |
19:29
n0tjack left
|
|||
psch | i have no idea how to reliably figure out the right device, fwiw | 19:29 | |
i've been guessing locally and got something similar :P | |||
anyway, i'm pretty sure the program talking to jackd shouldnt be driven to segfault if it continuously underruns | 19:30 | ||
moritz | panda help; # resolve stage failed for help: Project help not found in the ecosystem | ||
panda # without args: no output at all | 19:31 | ||
19:31
espadrine joined
|
|||
tadzik | --help is there | 19:31 | |
that's what MAIN does by default | |||
FROGGS | psch: do you insist on pulseaudio? or do you just want to get sound running? | ||
moritz not intellligent enough | |||
tadzik | the move to install being the default action is kind of like that :/ | ||
moritz: I think both of those cases should do help, and can be done to do so | |||
psch | FROGGS: portaudio. because low-latency and portable, and yes, i need the low latency at least | ||
FROGGS | adding a positional 'help' candidate won't hurt | 19:32 | |
19:32
n0tjack joined
|
|||
FROGGS | psch: have you played with libSDL_audio? | 19:32 | |
psch | FROGGS: i haven't tried using it for what i wanted to use the portaudio bindings for, no | 19:34 | |
dalek | c: ceed374 | moritz++ | lib/Pod/Convenience.pm6: Fix flattening in pod-with-title |
19:35 | |
moritz | has anybody tried htmlify.p6 in perl6/doc post-glr? | ||
19:36
n0tjack left
|
|||
FROGGS | psch: I think one problem is that moar tries to manage the mem of the output buffer in the callback | 19:41 | |
timotimo | so it ends up calling free() on it? | ||
19:41
n0tjack joined
|
|||
FROGGS | seems so | 19:42 | |
and before I changed the param to a CArray directly (used to be a Pointer we casted to CArray), it realloced the CArray I think | |||
timotimo | ugh | 19:43 | |
FROGGS | I know we mark strings in callbacks, but I dunno yet if we mark other stuff as well | 19:44 | |
19:44
espadrine left
|
|||
FROGGS | now it segfaults during a GC run | 19:45 | |
19:45
domidumont left
19:46
n0tjack left
19:51
n0tjack joined
|
|||
moritz | m: Pod::Heading.new(:level(1), :contents['a', 'b']) | 19:54 | |
camelia | ( no output ) | ||
moritz | m: Pod::Heading.new(:level(1), :contents['a', 'b']).contents.^name.say | ||
camelia | rakudo-moar 0c79be: OUTPUT«Array» | ||
19:56
n0tjack left
19:57
ggoebel joined
20:02
n0tjack joined
|
|||
moritz | m: say 'a b c'.subst(:g, /\s+/, '_') | 20:05 | |
camelia | rakudo-moar 0c79be: OUTPUT«a_b_c» | ||
20:07
n0tjack left
|
|||
moritz | I have a very weird thing here while debugging htmlify.p6 | 20:07 | |
it dies with "Type check failed in binding <anon>; expected 'Positional' but got 'Str'" | |||
the line it points it $someString.subst(:g, /\s+/, '_') | 20:08 | ||
*it points to is | |||
and before this I've added lines with warn(), say() and die() calls | 20:09 | ||
and none of them seem to have any effect, except that they change the line number of the error | |||
but it's clearly a run-time error, since other run-time statements before it are also executed | |||
skids was beating his head on that earlier, too. | 20:11 | ||
You have to carefully watch the line number, since there are probably multiple problem points in the code. | 20:12 | ||
I found any kind of .map or such where the .subst is causes the issue. | |||
Delete that .subst, and the error goes to another pat of the code. | 20:13 | ||
moritz | that is... decidedly ungood | ||
skids | Split the params of the subst up on different lines, and it ends up on the matcher/1st arg. | ||
moritz | plus ungood, even | ||
skids | And --ll-backtrace just tells you it happenned in bind, which we already knew. | 20:14 | |
What I can't figure out is how the error can sometimes report on the "once {" above which would seem to bear no resemblance at all. | 20:17 | ||
moritz | skids: do you get the same phenomenon that debug output before the error location doesn't seem to work? | 20:18 | |
20:19
nightfrog left
|
|||
skids | Yeah well, I threw a "say" in the concat and it did nothing. | 20:21 | |
20:22
nightfrog joined
20:23
n0tjack joined
|
|||
moritz | skids: it seems the error message points us to a totally wrong line | 20:25 | |
for @definitions -> [$sk, $name] { | |||
@definitions.perl says ["Reference", "creation"] | 20:26 | ||
so there's a level of nesting missing | |||
skids | Huh, I get mine on htmlify line 424ish | ||
moritz | skids: that's what the error message says, but that's not where the error occurs | 20:27 | |
20:28
n0tjack left,
tokuhiro_ joined
|
|||
jdv79 | is there really a dd and ddt? | 20:28 | |
moritz | m: dd [1, 2] | ||
camelia | rakudo-moar 0c79be: OUTPUT«[1, 2]» | ||
moritz | m: ddt [1, 2] | ||
camelia | rakudo-moar 0c79be: OUTPUT«5===SORRY!5=== Error while compiling /tmp/TNqaPHGd66Undeclared routine: ddt used at line 1. Did you mean 'dd'?» | ||
moritz | seems there's a dd, no ddt | ||
jdv79 | ok | ||
[Coke]: what are you talking about then? | 20:29 | ||
brrt | larry wall yapc::eu keynote: youtu.be/RvCkvXvqi3U | 20:31 | |
skids | moritz: indeed, fixing the single-arg issue there lets it run much further. | ||
psch | github.com/rakudo/rakudo/pull/529 has ddt | ||
20:32
tokuhiro_ left,
brrt left
20:33
xfix left
|
|||
dalek | c/htmlify-glr: d1363d6 | moritz++ | htmlify.p6: Fix fallout from the single-arg rule |
20:36 | |
skids | moritz: that push made a new branch... intentionally? | 20:44 | |
20:44
dha joined
|
|||
moritz | skids: yes; I'm afraid it (or the next commit) will break the build under pre-glr | 20:44 | |
skids | OK, just checking | ||
moritz | m: my @a = Pod::FormattingCode.new(type => "X", meta => [["declarator", "sub"],], config => {}, contents => ["Subroutines"]).meta[0]; say @d.perl | 20:45 | |
camelia | rakudo-moar 0c79be: OUTPUT«5===SORRY!5=== Error while compiling /tmp/95e0BmUaYsVariable '@d' is not declaredat /tmp/95e0BmUaYs:1------> 3ntents => ["Subroutines"]).meta[0]; say 7⏏5@d.perl» | ||
moritz | m: my @a = Pod::FormattingCode.new(type => "X", meta => [["declarator", "sub"],], config => {}, contents => ["Subroutines"]).meta[0]; say @a.perl | ||
camelia | rakudo-moar 0c79be: OUTPUT«[["declarator", "sub"],]» | ||
moritz | why? | 20:46 | |
m: say Pod::FormattingCode.new(type => "X", meta => [["declarator", "sub"],], config => {}, contents => ["Subroutines"]).meta[0].perl | |||
camelia | rakudo-moar 0c79be: OUTPUT«["declarator", "sub"]» | ||
moritz | why doesn't the single-arg rule flatten that out when assigning it to an array? | 20:47 | |
moritz notices he still doesn't have a reliable mental of post-glr (non-)flattening | |||
skids | Is .meta a scalar maybe? | 20:48 | |
moritz | if it makes a difference, .perl should inform me about it, no? | 20:49 | |
skids | m: my $a = [1,2]; my @b = $a; $a.perl.say; @b.perl.say; | 20:50 | |
camelia | rakudo-moar 0c79be: OUTPUT«[1, 2][[1, 2],]» | ||
skids | m: my $a := [1,2]; my @b = $a; $a.perl.say; @b.perl.say; | ||
camelia | rakudo-moar 0c79be: OUTPUT«[1, 2][1, 2]» | ||
skids | The first $a.perl could perhaps be $[] | 20:51 | |
The breaking of the transparency of Scalar was a necessary consequence of GLRR, I don;t now how far we want to let that bleed though. | 20:52 | ||
dalek | c/htmlify-glr: 6770eb8 | moritz++ | htmlify.p6: Another GLR fix |
20:53 | |
moritz | enough hacking for tonight | 20:54 | |
good * everybody& | |||
FROGGS | gnight moritz | 20:55 | |
skids | And for that matter, even as a scalar it should have let the .[] through to what it contained. | ||
o/ | |||
20:55
n0tjack joined
|
|||
skids | m: class A { has @.a is rw }; my $f = A.new(a => [[1,2],]); $f.a[0].say; $f.a[0].WHAT.say; $f.a[0].VAR.WHAT.say; my @b = $f.a[0]; @b.perl.say; | 20:59 | |
camelia | rakudo-moar 0c79be: OUTPUT«[1 2](Array)(Scalar)[[1, 2],]» | ||
21:00
n0tjack left,
n0tjack joined
21:01
rindolf left,
skids left
21:05
n0tjack left
21:06
n0tjack joined
21:07
cognominal left
21:11
n0tjack left
21:15
kinslayer left,
n0tjack joined
21:19
n0tjack left
21:20
dha left
21:21
AlexDaniel joined
|
|||
dalek | kudo-star-daily: 9715a26 | coke++ | log/ (9 files): today (automated commit) |
21:26 | |
21:27
dha joined
21:28
n0tjack joined
21:33
n0tjack left
|
|||
dha | Would it be wrong to say that one can think of state variables in this way: They are lexically scoped in terms of access, but the contents of the variable are maintained between calls as they would be if the variable had been declared globally? | 21:38 | |
I understand that saying that initialization occurs only once is probably the more accurate way to put it, but I find that could be confusing, depending on what one thinks "initialization" is. | 21:40 | ||
jercos | I would say that's correct in so far as my understanding of their relation to C static variables. | 21:43 | |
It may not be a technically accuracte description of their function, but I don't see a way in which that understanding would cause unintended behavior. | 21:44 | ||
japhb | dha: You need to be clear about the interaction of state variables and closure clones. Talking about global declarations gives people a different sense of how sharing works (or doesn't). | 21:59 | |
21:59
yqt left
|
|||
[Coke] | ddt - there was a pull request | 22:00 | |
22:00
n0tjack joined
22:03
Lou_ joined
22:04
Lou_ left
22:05
n0tjack left
22:07
muraiki left
|
|||
dha | Ok, what do I need to know about closure clones? | 22:09 | |
And, just to be clear, that was a "you can think of it in these terms, but it's not necessarily accurate" | 22:10 | ||
22:17
rurban left
22:23
pmurias left,
tokuhiro_ joined
22:24
justcheckingin joined
22:25
justcheckingin left
22:27
tokuhiro_ left
22:28
atweiden joined
22:33
n0tjack joined
22:35
leont left
22:37
n0tjack left
22:38
hernanGOA left
22:49
dha left
22:53
sufrostico joined
23:04
krakan joined
|
|||
Timbus | m: if my $things := (1,2,3,4).grep(*>2) { say $things>>.Str; } | 23:05 | |
camelia | rakudo-moar 0c79be: OUTPUT«This Seq has already been iterated, and its values consumed in block <unit> at /tmp/X1g5zFXR6z:1» | ||
Timbus | m: my $things := (1,2,3,4).grep(*>2); say $things>>.Str; | ||
camelia | rakudo-moar 0c79be: OUTPUT«(3 4)» | ||
23:05
stux|RC-only joined,
n0tjack joined
|
|||
Timbus | whyfor :/ | 23:06 | |
psch | m: with (1,2,3,4).grep( * > 2 ) -> $things { $things.say } | ||
camelia | rakudo-moar 0c79be: OUTPUT«(3 4)» | ||
psch | m: if (1,2,3,4).grep( * > 2 ) -> $things { $things.say } # although if works here as well | ||
camelia | rakudo-moar 0c79be: OUTPUT«(3 4)» | ||
Timbus | where the heck did 'with' come from | 23:07 | |
thats cool | |||
psch | m: if (^3).grep( * < 1 ) -> $things { $things.say } # doesn't here | ||
camelia | rakudo-moar 0c79be: OUTPUT«(0)» | ||
psch | oh | ||
list with one elem | |||
nvm | |||
m: if 0 -> $f { say "huh" }; with 0 -> $f { say "hah!" } | |||
camelia | rakudo-moar 0c79be: OUTPUT«hah!» | ||
psch | that's the difference | ||
23:08
atweiden left
|
|||
Timbus | duuude, thats way better than makling all our stuff return 0 but True | 23:08 | |
psch | Timbus: i think that's probably pretty close to the reason why it got implemented :) | ||
Timbus | that's cool. but that's still odd re: list reiteration | 23:10 | |
23:10
n0tjack left
23:11
isacloud joined
23:12
lizmat joined
|
|||
psch | Timbus: yeah, the error is LTA | 23:13 | |
Timbus: but afaiu this kind of construct (i.e. "if <assignment or binding> { }") is somewhere in the area of DIHWIDT | 23:14 | ||
23:14
skids joined
|
|||
lizmat | computer, messages ? | 23:16 | |
guess not | |||
23:16
mprelude left
|
|||
lizmat waves from Lyon | 23:16 | ||
psch | hi lizmat o/ | ||
lizmat | psch o/ | ||
Timbus | well, it's fairly common to assign in an if, though.. | 23:17 | |
at least, the perl5 code at my work is littered with it. some of which I put there. | 23:18 | ||
psch | m: if my $x = 5 { }; say $x | ||
camelia | rakudo-moar 0c79be: OUTPUT«5» | ||
Timbus | aaaa | 23:19 | |
aaah no | |||
psch | Timbus: P5 special-cases it so that that doesn't happen :) | ||
Timbus | so thats a thing, huh | ||
psch | ...maybe not really special-casing, i guess | ||
lizmat | dd my $i = 42 | ||
psch | P6 scoping is a bit different, i'm confident in that statement | ||
lizmat | m: dd my $i = 42 | 23:20 | |
camelia | rakudo-moar 0c79be: OUTPUT«$i = 42» | ||
Timbus | well, to be fair i use -> instead of assignment, but its the same idea | ||
23:20
sufrostico left
|
|||
psch | m: if 5 -> $x { }; say $x | 23:20 | |
camelia | rakudo-moar 0c79be: OUTPUT«5===SORRY!5=== Error while compiling /tmp/73l27rh5ooVariable '$x' is not declaredat /tmp/73l27rh5oo:1------> 3if 5 -> $x { }; say 7⏏5$x» | ||
Timbus | yeah. so that's ok | 23:21 | |
23:21
vendethiel left
|
|||
psch | in contrast: | 23:22 | |
perl -E'if( my $x = 5 ) { }; say $x, "or else"' | |||
or else | |||
Timbus | yeah, the scoping is different, that's fine. my initial example only used := instead of -> to make it more clear the 'if' block is doing something special. the arrow makes it less clear. | 23:24 | |
psch | m: say (^5).grep(*>2).WHAT | 23:25 | |
camelia | rakudo-moar 0c79be: OUTPUT«(Seq)» | ||
psch | m: my $x := (^5).grep(*>2); say $x>>.Str; say $x>>.Str | ||
camelia | rakudo-moar 0c79be: OUTPUT«(3 4)This Seq has already been iterated, and its values consumed in block <unit> at /tmp/y9PZ6pcQrm:1» | ||
psch | Timbus: the if block isn't doing anything special | 23:26 | |
Timbus | oh.. | ||
psch | Timbus: Seq is an ephemeral class, after evaluation it returns something Associative (i think..?) and breaks | ||
Timbus: but you bound the Seq to a variable | 23:27 | ||
and it's already broken | |||
which is why i'm saying the error is somewhat LTA :) | 23:28 | ||
23:28
telex left
|
|||
Timbus | what makes it broken straight away? oh, the evaluation of its truthiness? | 23:28 | |
psch | yeah | 23:29 | |
Timbus | mmh. either way, will use 'with' and probably switch to @'s, cheers | ||
psch | Timbus: the sigil isn't the problem, the binding is | ||
...i thought, but that's apparently wrong | 23:30 | ||
it is the sigil | |||
23:30
telex joined
|
|||
Timbus | :) | 23:30 | |
psch | those post-glr semantics... | ||
i really should get around to reading what changed :/ | 23:31 | ||
23:32
n0tjack joined
|
|||
Timbus | feels a little magical atm.. i guess it must just be sufficiently advanced | 23:32 | |
psch | i *think* the rule in general is "don't secretly flatten" | ||
but that rule has consequences that seem unintuitive... | 23:33 | ||
m: say [[1,]]; say [[1],] | |||
camelia | rakudo-moar 0c79be: OUTPUT«[1][[1]]» | ||
dalek | kudo/nom: 49e9745 | lizmat++ | src/core/Any.pm: Usurp PR #529 into dd, itz++ No point keeping a separate dd and ddt in my view. |
||
lizmat | in about 7 hours there's the patch -p3 hackathon: patch.pm | 23:37 | |
better get some sleep& | |||
dalek | kudo/cu_load: b410729 | TimToady++ | src/ (13 files): early hackage to distinguish .cache from .list |
23:39 | |
rakudo/cu_load: 834c805 | TimToady++ | / (8 files): | |||
rakudo/cu_load: Merge branch 'nom' into list-v-cache | |||
23:39
dalek left,
dalek joined,
ChanServ sets mode: +v dalek
23:43
raiph joined
23:48
n0tjack left
|
|||
psch | Timbus: the alternative to assigning a Seq to an @-sigilled variable is calling .cache on the Seq, fyi | 23:52 | |
m: my $x = (^5).grep(*>2); say $x>>.Str; say $x.cache>>.Str; | |||
camelia | rakudo-moar 49e974: OUTPUT«(3 4)This Seq has already been iterated, and its values consumed in block <unit> at /tmp/D1imEvAmwu:1» | ||
psch | m: my $x = (^5).grep(*>2); say $x.cache>>.Str; say $x.cache>>.Str; | ||
camelia | rakudo-moar 49e974: OUTPUT«(3 4)(3 4)» | ||
Timbus | i see. kinda | 23:53 | |
psch | ...i'm still not 100% sure on the meaning of some of those things, though :) | ||
m: my $x = (^5).grep(*>2).cache; say $x>>.Str; say $x>>.Str; | 23:54 | ||
camelia | rakudo-moar 49e974: OUTPUT«(3 4)(3 4)» | ||
23:56
n0tjack joined
|