»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
muthuraj ?? 04:46
dalek ast: a2c4cc6 | (David Warring [email@hidden.address] | integration/advent2011-day24.t:
tweak a couple of tests
06:31
sergot o/ 06:48
moritz FROGGS_: pull request merged, thank you. 07:10
FROGGS_ moritz: the Bailador PR? 07:11
ahh, I see the mail...
moritz: thanks :o)
moritz FROGGS_: you're welcome 07:15
FROGGS jnthn: ping 07:18
lizmat: ping 07:19
woolfy lizmat is asleep (me and her are in Portland now, Oregon) 07:26
FROGGS woolfy: thanks... I can talk to her when she is awake :o) 07:28
it is not urgent, I just want to talk about a online hackathon
woolfy OK. I will tell her. 07:30
dalek ast: a045e08 | (Tobias Leich)++ | S02-magicals/PERL.t:
fudge $*PERL.compiler.perl tests - RT #122324

The tests abort in spectests for some not yet known reason.
07:32
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122324
FROGGS thank you
dalek ast: 19d3472 | (Tobias Leich)++ | S04-exceptions/control_across_runloop.t:
RT #122325 fudged for parrot, probably a binder bug
07:48
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122325
sergot FROGGS: would you update this: en.wikipedia.org/wiki/Rakudo_Perl_6 ? 07:49
the release
FROGGS sergot: yes, that is step 16 of the release guide, I'm at step 11 07:51
sergot FROGGS: okok :) 07:56
masak good antenoon, #perl6 07:58
FROGGS hi masak
masak ah; release still ongoing, I see. 07:59
keep up the good work!
FROGGS I'm building it for the last time and then do the last spectest (hopefully) 08:00
sergot masaku! o/ 08:04
masak FROGGS++ # #78 Sofia 08:59
sergot yeah 09:01
FROGGS++
FROGGS masak: when is your next P6 day? 09:15
masak an interesting example of a (non-Lisp) language using macros to generate code from code: nimrod-by-example.github.io/oop_macro/
FROGGS: 'tis today.
FROGGS ahh
:o)
I'd like to do a Bugfixathon
and I'd prefer to not be the only participant 09:16
masak allow me to offer my assistance.
FROGGS \o/
nice
so since release and $dayjob stuff is done, I'll pick some RT tickets that I'd like to fix 09:17
masak sounds good.
I remember looking at rt.perl.org/Ticket/Display.html?id=118223 yesterday and wishing it fix'd. 09:21
m: my %l = foo => 1, bar => 2; my %r = bar => 3, baz => 4; say %l >>+<< %r
camelia rakudo-moar 0aaba7: OUTPUT«use of uninitialized value of type Any in numeric context␤use of uninitialized value of type Any in numeric context␤("bar" => 5, "baz" => 4, "foo" => 1).hash␤»
FROGGS n: my %l = foo => 1, bar => 2; my %r = bar => 3, baz => 4; say %l >>+<< %r 09:22
camelia niecza v24-109-g48a8de3: OUTPUT«Use of uninitialized value in numeric context␤ at /home/p6eval/niecza/lib/CORE.setting line 1389 (warn @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 301 (Any.Numeric @ 8) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niec…»
masak I think I looked into it around the time I filed it, and saw that the code *looked* like it should work (and not generate those warnings)
FROGGS you know what I think what sucks?
that these warning do not show a line number 09:23
masak to be clear, the spec has explicit wording about >>+<< on hashes, saying it should use the union of the keys, and suppress warnings.
m: my $l; my $r = 5; say $l + $r
camelia rakudo-moar 0aaba7: OUTPUT«use of uninitialized value of type Any in numeric context␤5␤»
masak that warning is fine, it should be there. but not the hash ones. 09:24
FROGGS yeah
masak m: my $x; $x++; say $x
camelia rakudo-moar 0aaba7: OUTPUT«1␤»
FROGGS still, a line number would be nice
masak a bit like there's no warning for that one.
FROGGS: oh, I agree about line numbers.
moritz the lack of a line number might just need a little tweak in the backtrace pretty-printer 09:25
FROGGS m: warn 42 09:27
camelia rakudo-moar 0aaba7: OUTPUT«42␤»
FROGGS m: die 42
camelia rakudo-moar 0aaba7: OUTPUT«42␤ in block at /tmp/3D9jMqeN5c:1␤␤»
masak m: macro assert($fact) { quasi { die "FAILED: ", $fact.Str unless {{{$fact}}} } }; assert 2 + 2 == 4 09:34
camelia ( no output )
masak m: macro assert($fact) { quasi { die "FAILED: ", $fact.Str unless {{{$fact}}} } }; assert 2 + 2 == 5
camelia rakudo-moar 0aaba7: OUTPUT«FAILED: AST<140244620039592>␤ in any at /tmp/RQrQTA21Jc:1␤ in block at /tmp/RQrQTA21Jc:1␤␤»
masak suggested/requested: a way for that AST to yield the original *code snippet*, so I can use it as debugging output as above. 09:35
I don't know if $ast.Str is the way to go; it just seems like the most obvious (and not obviously incorrect) to me right now.
FROGGS masak: you could pass the $/ to AST.BUILD, a little bit like it is done for labels 09:37
masak anyhoo, see gist.github.com/masak/0c4496b90e2aebf98062 for an update to yesterday's Fun Math Experiment, now with a Real-World macro (which would really benefit from such AST stringification).
FROGGS: yes, something like that is what I need. 09:38
masak looks into it
masak given a QAST::Node, how can I get the underlying source string it was parsed from? 09:54
is that at all possible? 09:55
masak at the point of the macro *call*, we still see the callsite expression going into the macro, so we should have a fair bit of freedom. 09:55
masak but we see it at a point where we already have the things as a QAST tree. and in this case I'm interested in the underlying text. 09:56
moritz masak: should be ~$qast.node 09:57
FROGGS masak: you are in Perl6::Actions right now?
masak aye.
masak treis ~$qast.node
moritz masak: though not all qasts have a .node
masak :/
masak what determines whether they do? 09:58
moritz basically if the generator passed a :node($/) or not
FROGGS yeah
moritz we try to do that most of the time, because otherwise we get error messages without line numbers
but
moritz we have some helper functions that generate QAST trees for certain tasks 09:59
and those don't always add a :node
masak *nod*
ooh, I gots me a result.
it's the wrong one, but it's a piece of stringified code :) 10:00
moritz :-)
masak so, what I *wanted* was `2 + 2 == 5`
what I *got* was `==`
moritz oh
masak it's easy to see what happened here.
FROGGS masak: can't you just use $<args>.Str in line 4258 or so?
masak looks
moritz masak: we have code to expand that
masak \o/
moritz masak: the constant folder uses it
masak: search for 'sub widen' in src/Perl6/Optimizer.nqp 10:01
FROGGS and perhaps pass this as a named to add_macro_arguments and then bindattr it to the to be created AST object
moritz masak: basically the root node just matches ==, but the children match the surrounding text 10:03
that's because the OPP matches the infix separately, not together with its children
masak *nod*
ok, trying everything.
masak \o/ 10:08
apart from some trimming that needs to be done, it *works*!
FROGGS nice!
masak I'm pushing this; refinements (and tests) can come later. 10:09
dalek kudo/nom: 9b8e9c5 | masak++ | src/ (2 files):
allow ASTs to be stringified

Still not sure .Str is the best way to expose this functionality, but it's the current only suggestion, and there's nothing obviously wrong with it.
10:10
masak runs spectests just to be sure 10:10
spectests pass. 10:18
well, I have two test failures, but they seem unrelated:
t/spec/S17-lowlevel/lock.rakudo.moar (failed test: 7)
t/spec/S32-io/IO-Socket-Async.rakudo.moar (failed test: 5)
FROGGS yeah, I think I've seen them a few days ago already 10:19
masak experiments with different values of TEST_JOBS to figure out how quickly he can get the spectests to run 10:20
FROGGS cpu cores -1 might be a good choice
colomon somehow lost ten passig modules overnight? :( host07.perl6.com:8080/report 10:22
FROGGS colomon: Dependency XML::Writer is not present in the module ecosystem 10:23
that is why SVG failed
colomon yeah
Benchmark::Plot, too
masak colomon: I think you can remove Yarn from that table -- it's no longer on modules.perl6.org 10:24
colomon masak: it will go away automatically once it's been two weeks since it was removed
masak ah.
FROGGS colomon: I don't see why XML::Writer is "missing", because it is not 10:26
masak decides to spend parts of his day going through modules of his listed on host07.perl6.com:8080/report -- finding out what's wrong with them
colomon masak: you know about host07.perl6.com:8080/report/masak, right?
masak I do *now* :P 10:29
colomon FROGGS: XML::Writer may still be listed in the ecosystem, but panda doesn't think it's there anymore. 10:30
hmmm… did an update and now its back. 10:31
*it's
FROGGS weird
colomon launching smoke_test again... 10:32
jnthn FROGGS: How's the release looking? So far so god? 10:41
FROGGS jnthn: its done 10:44
it's*
jnthn FROGGS: yay :)
FROGGS :o)
jnthn: join our bugfixathon :o) 10:45
jnthn What're we trying to fix? :)
FROGGS RT tickets 10:46
moritz rakudo
FROGGS yeah, that :P
dalek kudo/nom: 48fe6dd | (Tobias Leich)++ | / (2 files):
print file/line annotations for warnings also on moar and jvm
10:56
FROGGS I'll fix now this LHF: RT #121947 10:59
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121947
FROGGS m: my &with = -> $x, $y { $x + $y }; say [[&with]] 1..5 11:11
camelia rakudo-moar 0aaba7: OUTPUT«===SORRY!=== Error while compiling /tmp/4BQ4RfnRIM␤Unable to parse expression in bracketed infix; couldn't find final ']' ␤at /tmp/4BQ4RfnRIM:1␤------> y &with = -> $x, $y { $x + $y }; say [[&⏏with]] 1..5␤»
masak wonders what happened to Druid on the 10th 11:17
Ven druid ? 11:20
masak github.com/masak/druid 11:21
Ven That looks complicated 11:31
masak I had a long not-really-concluded love affair with Hex, one of the purest connection games. 11:33
moritz masak: does your wife know? :-) 11:34
masak only vaguely, I think.
in designing connection games, the big challenge is to design the game such that "deadlocks" (both players unable to get past the other) don't occur.
Hex solves it by making the topology hexagonal, eliminating deadlocks completely. 11:35
Druid solves it by allowing the players to build upwards, into the third dimension. it's more exhilirating, but I've seen Druid games deadlock sometimes.
dalek kudo/nom: c63233a | (Tobias Leich)++ | / (2 files):
fixed infixed function syntax [[&foo]] (RT #121692)
11:42
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121692
FROGGS n: use Test; sub foo { $^a ~ $^b }; is ([[&foo]] <a b c d e>), 'abcde', "can we use sub as an op between[]"; 11:43
camelia niecza v24-109-g48a8de3: OUTPUT«ok 1 - can we use sub as an op between[]␤»
FROGGS n: use Test; sub foo { $^a ~ $^b }; is [[&foo]] <a b c d e>, 'abcde', "can we use sub as an op between[]";
camelia niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: No value for parameter 'expected' in 'is'␤ at /home/p6eval/niecza/lib/Test.pm6 line 0 (is @ 1) ␤ at /tmp/32Z32DqGYZ line 1 (mainline @ 6) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4595 (ANON @ 3) ␤ at /home/p6eval…»
FROGGS std: use Test; sub foo { $^a ~ $^b }; is [[&foo]] <a b c d e>, 'abcde', "can we use sub as an op between[]"; 11:44
camelia std 0f2049c: OUTPUT«Compiled lib/Test.pm6␤ok 00:01 133m␤»
FROGGS so... how many args should is() get here?
dalek ast: f3fe7c2 | (Tobias Leich)++ | S13-overloading/metaoperators.t:
unskip RT #121692 for rakudo
11:45
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121692
Ven FROGGS: N - foo.arity ? 11:46
(that seems pretty terrible to me :P)
FROGGS nah
I just don't know if [[&foo]] should only see the list after it or more 11:47
maybe viv can tell me
FROGGS also viv shows that the reduce gobbles all arguments 11:48
so the test seems to be fine now 11:49
m: y/lr/rl/ 11:51
camelia rakudo-moar 48fe6d: OUTPUT«===SORRY!=== Error while compiling /tmp/BCh9yW0nBi␤Bogus statement␤at /tmp/BCh9yW0nBi:1␤------> y/lr/rl/⏏<EOL>␤ expecting any of:␤ argument list␤ postfix␤ infix stopper␤ …»
FROGGS n: y/lr/rl/ 11:51
camelia niecza v24-109-g48a8de3: OUTPUT«===SORRY!===␤␤Unsupported use of y///; in Perl 6 please use tr/// at /tmp/PH6Irx8uR4 line 1:␤------> y⏏/lr/rl/␤␤Parse failed␤␤»
FROGGS m: qr() 11:52
camelia rakudo-moar 48fe6d: OUTPUT«===SORRY!=== Error while compiling /tmp/um8VEFr_Kd␤Undeclared routine:␤ qr used at line 1␤␤»
FROGGS std: qr() 11:58
camelia std 0f2049c: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'qr' used at line 1␤ (in Perl 6 please use rx instead)␤Check failed␤FAILED 00:00 121m␤»
colomon much better results now: host07.perl6.com:8080/report
FROGGS yeah 12:00
dalek kudo/nom: 27f20b0 | (Tobias Leich)++ | src/ (2 files):
RT #121266 show hints about obsolete y///, qr() and others
12:19
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121266
FROGGS r: $_ = 'herro eilo'; tr/rl/lr/; .say 12:21
camelia rakudo-jvm 48fe6d: OUTPUT«(timeout)» 12:21
..rakudo-{parrot,moar} 48fe6d: OUTPUT«hello eiro␤»
FROGGS j: $_ = 'herro eilo'; tr/rl/lr/; .say
camelia rakudo-jvm 48fe6d: OUTPUT«(timeout)»
[Coke]_ belatedly welcomes woolfy & lizmat back to the US. 12:30
dalek p: 6d4ea16 | (Tobias Leich)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
just return an already created SC instead of bailing out
12:45
kudo/nom: eda14ab | (Tobias Leich)++ | tools/build/NQP_REVISION:
bump nqp/jvm revision for RT #121253 fix
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121253
dalek ast: 6a63037 | (Tobias Leich)++ | / (2 files):
RT #121253 - use Bar and Baz which both use Foo
12:54
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=121253
FROGGS m: say $*ARGFILES.slurp 13:00
camelia rakudo-moar c63233: OUTPUT«Céad slán ag sléibhte maorga Chontae Dhún na nGall␤Agus dhá chéad slán ag an Eireagal ard ina stua os cionn caor is coll;␤Nuair a ghluais mise thart le Loch Dhún Lúich’ go ciúin sa ghleann ina luí␤I mo dhiaidh bhí gleanntáin ghlas’ G…»
[Coke] FROGGS++ 13:02
(release)
cognominal__ Ven++ 13:03
cognominal__ ... for pointing me to github.com/natefaubion 13:03
PerlJam FROGGS++ 13:04
FROGGS m: say '(foo' ~~ / '(' ~ ')' [foo] / 13:06
camelia rakudo-moar c63233: OUTPUT«Unable to parse expression in ; couldn't find final ')' ␤ in any FAILGOAL at gen/moar/stage2/QRegex.nqp:1146␤ in method ACCEPTS at src/gen/m-CORE.setting:13239␤ in block at /tmp/ywkUpCvDBH:1␤␤»
FROGGS m: say ('(foo' ~~ / '(' ~ ')' [foo] /).WHAT
camelia rakudo-moar c63233: OUTPUT«Unable to parse expression in ; couldn't find final ')' ␤ in any FAILGOAL at gen/moar/stage2/QRegex.nqp:1146␤ in method ACCEPTS at src/gen/m-CORE.setting:13239␤ in block at /tmp/Vhh9PaCLZb:1␤␤»
masak finds adverbs hard to use in practice 13:14
some things are merely a matter of "getting the hang of it".
not so adverbs, I find.
FROGGS nod
masak I know the *theory* of it -- the adverb finds the "topmost" op in the preceding expression, and attaches to it. 13:15
cognominal__ masak, specific examples?
masak but the practice of it keeps surprising me.
specific example coming up.
dalek ast/S26-WHY: 4322b78 | (Rob Hoelz)++ | S26-TODO:
Notes notes ntoes
masak m: my %h = foo => 42; if %h<foo> :exists { say "yay!" }
camelia rakudo-moar c63233: OUTPUT«yay!␤»
masak m: my %h = foo => 42; if !%h<bar> :exists { say "yay!" } 13:16
camelia rakudo-moar c63233: OUTPUT«Unexpected named parameter 'exists' passed␤ in sub prefix:<!> at src/gen/m-CORE.setting:3930␤ in block at /tmp/EP1rK0d2ON:1␤␤»
masak my intuition tells me I should be able to add a '!' in front of an expression without breaking it.
PerlJam masak++ that's a very cogent example.
masak but that's not true with adverbs.
masak this stands out, because as a rule, Perl 6 is *very* nice with these small, refactor-like changes. 13:16
PerlJam: that's one that just bit me as I tried to fix Druid. 13:17
flussence m: my %h = foo => 42; unless %h<bar> :exists { say "yay!" } 13:17
camelia rakudo-moar c63233: OUTPUT«yay!␤»
masak flussence: I ended up using :!exists 13:18
cognominal__ I once advocated that spacing should override operator precedence. Probably that should apply to adverbs as well. I have no clue how to implementit. I am talking from the user persprective.
flussence ooh, didn't know that was a thing :)
masak lizmat++ # :!exists
flussence (sorta looks sql-ish too...)
masak you can even fill $exists with a Bool and do :$exists 13:19
's verra cool.
colomon woolfy & lizmat are back in the States?
cognominal__ $exits : I read that as sexist :)
masak .oO( Back in the USS... A )
PerlJam Though I wonder if there are some adverbs for which :!adverb doesn't make sense.
masak PerlJam: adverbs being an open set, surely yes :) 13:20
flussence m: my %h = foo => 42; say %h<bar> exists => False # just wondering, I don't expect this to work :)
camelia rakudo-moar c63233: OUTPUT«===SORRY!=== Error while compiling /tmp/HSASC33Mhd␤Two terms in a row␤at /tmp/HSASC33Mhd:1␤------> my %h = foo => 42; say %h<bar> ⏏exists => False # just wondering, I don'␤ expecting any of:␤ postf…»
PerlJam I mean, we don't want to establish a pattern of using :!adverb for the "common" adverbs, but then for some adverbs it breaks. Then we've got the same problem.
Ven the code for :exists and stuff is kinda complicated ... 13:21
flussence m: my %h = foo => 42; say %h<foo> :!delete; say %h; # here's some nonsense 13:22
camelia rakudo-moar c63233: OUTPUT«42␤("foo" => 42).hash␤»
Ven well, not really nonsense
flussence: that's for %h<foo>:delete($confirm) or something, I think
PerlJam masak: actually, your complaint about adverbs is the same problem as "memorizing the precedence table" (because you must do that to know how adding/removing an op will affect your use of adverbs)
flussence oh, gotcha.
PerlJam (I don't know if that helps in finding a way forward, but I thought I'd mention it anyway) 13:23
Ven should adverbs actually *stick* ?
flussence (though I maintain that using literal :!delete is probably nonsense :)
masak PerlJam: to me it feels like it's exposing knowledge of ASTs where previously the programmer could live in blissful ignorance of ASTs.
PerlJam flussence++ :)
Ven why do adverbs use the topmost one ? 13:24
masak because in `2 + 2 :carefully`, we want the adverb to stick to the infix:<+> 13:26
PerlJam masak: did you read/write S02:2528 ? 13:27
synopsebot Link: perlcabal.org/syn/S02.html#line_2528
Ven then should SPC adverb and NOSPC adverb act differently ? 13:28
masak PerlJam: yes -- I was involved in the discussions around that.
Ven or force the spacing.
masak PerlJam: to give some more background: the code was already `if !%h.exists(...)` when I got to it.
PerlJam: I did the smallest possible change, to `if !%h{...} :exists`, thinking nothing of it. 13:29
PerlJam gotcha.
makes perfect sense. I would have done the same.
PerlJam adverbs are a little action-at-a-distancey, just the distances are usually small 13:30
masak that's something like a third of my complaint, yes. 13:31
another third is that normally we don't force compiler administrivia on users, but with adverbs we kinda do. 13:32
and the last third is that, even though I *like* them, I still find them uncomfortable to use. they require a bit more care and feeding than I would prefer. 13:33
Ven !foo():exists sticking on ! is definitely not DWIMmy 13:33
but what are the options ?
masak got Druid passing all the tests again 13:34
one of these days I'm gonna kill off Test::Ix, too. 13:35
what was I thinking :)
PerlJam Ven: an option would be to change adverbs to attach to the lexically closest op rather than the topmost
Ven PerlJam: yes, definitely. That means (2 || 3):loose would be way to write it. 13:36
PerlJam Ven: another would be force some kind of syntactic tax on using adverbs (ick!) like always requiring parens or something.
Ven are we okay with that ? should we allow (:loose 2 || 3 ) ?
(regexp-modifier-like syntax)
Ven (it looks cute, but is probably unparseable) 13:37
PerlJam Ven: NST
Ven nst ?
PerlJam No Such Thing (as unparsable :)
Actually for predictable results, adverbs currently do "require" parens. 13:39
Ven yeah
masak not if you know enough about precedence rules. 13:39
but the point is that it's expected of you to know, and in places where you don't expect it to matter. 13:40
I think "last seen op" aligns much more with my expectations -- but TimToady will probably have an excellent reason for not doing it that way.
PerlJam right, but if you want to make your code more future-proof, you put the parens so that the precedence doesn't become an issue. 13:41
moritz finds the whole idea of operator adverbs really scary
Ven code relying on knowing by heart the precedence rule is usually bad :)
masak PerlJam: (a) I don't have that habit at all; (b) notice how it wouldn't have helped in my case, since deprecation had me refactor an existing expression *into* an adverb. 13:42
PerlJam moritz: scary ... like exhilarating? or more fear-for-my-sanity? :)
masak: ah, an excellent point.
moritz PerlJam: fear-for-nearly-everbody's-sanity 13:43
PerlJam masak: but if you'd developed the habit of always using parens with adverbs, then it *would* have helped because you would have also added the parens.
masak moritz: could it have something to do with the fact that adverbs seem to hang off of the knowledge of ASTs? 13:43
moritz: putting them on the level of macros is expected developer savvy.
and yet they look so innocent...
PerlJam: yes. 13:44
moritz masak: it's more that it's <EXPR1> <OP> <EXPR2> <ADVERB>, and <EXPR2> can be big
masak PerlJam: I am *soooo* close to drawing the "Stockholm syndrome" card on you. :)
PerlJam :-)
masak ...but I don't like that, so I won't.
moritz masak: and then it's easy to lose track of track of connection between <OP> and <ADVERB>
masak *nod* 13:45
PerlJam sounds like another tick against "action at a distance" 13:46
masak moritz: also the fact that depending on which precedence level the things in EXPR2 have, they may or may not "steal" what constitutes <OP> 13:47
PerlJam yeah, that's your original problem writ larger. Refactoring an expression could change where the adverb attaches. It seems like there's a lesson here that we already learned at least once :) 13:48
masak adverbs, besides what they're designed to do, act as an inhibitor of small, quick refactors of an expression. 13:49
that just isn't how they roll.
masak I'd also like to point out that, back to the early years of Perl 6, adverbs were the answer to *everything*. 13:50
PerlJam
.oO( and people wonder why it's taken more than a decade to design Perl 6 )
masak they do :exists and :delete very well, I grant you that. it's a better solution than Perl 5's.
but they're very limited in their application. a bit like junctions.
I can't recall ever having defined an adverb in code.
moritz let me be more specific: adverbs on infix and prefix operators scare me 13:51
adverbs on circumfix, postcircumfix and postfix ops aren't as bad
PerlJam heh .. "aren't *as* bad" 13:52
masak :)
moritz oh, and wait for the day that somebody defines infix:<,>(*@values, :name)
masak shudders
moritz and then people wonder why Person.new(..., :name<masak>) fails, but Person.new(..., name => masak) works 13:53
moritz does the very evil grin
Ven wow, that's terrible eval 13:54
erm, I mean, evil :)
moritz let's rename that to EVIL :-) 13:55
colomon :) 13:55
dalek kudo-star-daily: 3750e12 | coke++ | log/ (14 files):
today (automated commit)
14:13
[Coke] test failures on R* for both JVM & parrot. looks like moarvm is clean, no more deprecations. 14:14
[Coke] today's rak.parrot run is clean; moar has 2 failures. 14:17
[6~[6~S17-promise/allof.t 10 - got the right order
S32-list/uniq.t aborted 26 test(s)
masak cannot reach rt.perl.org 15:03
FROGGS yeah, me too :/ 15:06
wanted to look at RT #72816 [BUG] Cannot assign to an undeclared dynamic variable in Rakudo
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=72816
PerlJam masak, FROGGS: log.perl.org/2014/07/7182014-schedu...g-day.html 15:20
ajr_ Re: the discussion around 09:55; that sounds rather like SQL injection.
FROGGS ahh 15:21
masak PerlJam: ah.
FROGGS thanks PerlJam
masak ajr_: is that an IRC log timestamp?
ajr_ Yes. 15:22
(I suppose a sufficiently naive use of eval in P5 would also qualify.) 15:23
masak I fail to make the connection between stringifying AST nodes and SQL injection. 15:24
please explain :)
thundergnat: fixing a bug in Text::CSV in code that you contributed. ping me for details ;) 15:29
masak m: my @p = <a b c d e>; (@p[2], @p[3]) = @p[3], @p[2]; say @p 15:44
camelia rakudo-moar eda14a: OUTPUT«a b d c e␤»
masak m: my @p = <a b c d e>; @p[2], @p[3] = @p[3], @p[2]; say @p
camelia rakudo-moar eda14a: OUTPUT«(signal )WARNINGS:␤Useless use of "," in expression "[2], @p[3] =" in sink context (line 1)␤»
masak it's a mistake to leave out the parentheses. it doesn't do what I meant.
but why does it loop forever?
m: my @p = <a b c d e>; @p[3] = @p[3]; say @p 15:45
camelia rakudo-moar eda14a: OUTPUT«a b c d e␤»
masak that doesn't.
and, as far as I can see, the program with the omitted parens should mean the same.
FROGGS : my @p = <a b c d e>; @p[3] = @p[3], @p[2]; say @p 15:46
m: my @p = <a b c d e>; @p[3] = @p[3], @p[2]; say @p
camelia rakudo-moar eda14a: OUTPUT«(signal )» 15:47
FROGGS that is what it means
masak oh! the useless bit is the initial `@p[2]`. I see. 15:48
FROGGS++
oh right, because it's still a list assignment, so it's looser than comma.
yeah, that's what I missed.
ok, I've cleaned up a bit among my modules.
Data::Pretty, Text::CSV, Druid, and Perl6::Literate should all pass now. 15:49
guess we'll see tomorrow.
FROGGS and it loops somewhere around
0x00007ffff79ba99d in scan_registers (frame=0x92d8f98, worklist=0x594a0a0, tc=0x6035e0) at src/gc/roots.c:353
353 if (frame->spesh_cand && frame->spesh_cand->local_types) {
masak Yapsi (and its dep Tardis) have deeper, more insidious failures somehow relating to parsing. I'll deal with them some other time, when I'm smarter. 15:50
haven't looked at GGE, but those errors are probably insidious too.
(and almost certainly related to parsing!)
PerlJam masak: my personal history tells me that I was smarter in the past, not the future. You might want to confirm that for yourself as well :)
masak oh, there's definitely a long-term decline. 15:51
I was referring to smaller-scale fluctuations. 15:52
FROGGS m: my @p = <a b c d e>; @p[3] = ~@p[3], @p[2]; say @p
camelia rakudo-moar eda14a: OUTPUT«a b c d c e␤»
FROGGS hah!
masak FROGGS++ :) 15:53
ajr_ @masak: the ability to slip changes or unpredictable behaviour in the meaning of code with data.
masak yeah, that was a first attempt. 15:54
I eventually ended up doing it the other way, which is cleaner and a lot more satisfactory.
somehow I'm very pleased with the result.
masak this feels like the first non-contrived, really *useful* use of a macro in "real" code. 15:54
Perl 6 code, I should say.
I didn't originally write it like that, but when I came back to the code and started listing the things that felt vaguely wrong with it, I realized a macro was what I wanted. 15:55
ajr_: in some sense, that's what macros do: 'slip [...] behavior in [...] code' 15:56
colomon masak: link to code, pretty please?
chenryn Saw only 2014.04.tar.gz on download page? 15:57
masak colomon: gist.github.com/masak/0c4496b90e2aebf98062
colomon: the latest version has the macro; the one before has three identical subs.
colomon: earlier today I landed a small Rakudo patch which makes line 9 actually print the source code :D 15:58
colomon masak++ 15:58
masak it's especially satisfying, for some reason, because the source code contains custom operators.
colomon first for macro, second for Rakudo patch. ;)
masak :) :)
ajr_ masak: true, but macros are usually visible in the code. I might be misunderstanding the exchange at 09:55, but it looked as though the change came from data. 15:59
colomon masak: I take it this code is not in the ecosystem yet? 16:00
masak colomon: it is not -- and I'd prefer if it wasn't...
colomon masak: why not? 16:00
masak colomon: it's a very slow, naive way to handle groups. it was written mostly as a thought experiment.
colomon: basically, it brute-forces everything, where it instead should use well-known relationships. 16:01
colomon masak: you'd better make it a blog post, then. ;)
masak aye. :)
ajr_: not knowing more, it's hard for me to know if you understood things correctly or not ;)
dalek rl6-roast-data: 880c6c8 | coke++ | / (5 files):
today (automated commit)
16:03
ajr_ Sorry, I had the time wrong: 09:52:31-09:53:12 16:04
[Coke] lots of flap on JVM. 16:05
masak ajr_: irclog.perlgeek.de/perl6/2014-07-18#i_9045395 ?
masak colomon: new version uploaded, which cleans up Group::Laws a whole lot, removing the repeated definitions of infix:<∘>: gist.github.com/masak/0c4496b90e2aebf98062 16:08
ajr_ Sorry, masak, it's 13:52 your time 16:10
masak ah! that's why I asked about irclog time ;) 16:11
if it was 13:53 *my* time, then it was 11:53 IRC-log time. 16:12
ajr_ My IRC client's giving me local, rather than Z time
masak so is mine. 16:13
but my connection is a bit wonky right now, so rather than scroll up a lot, I just go to the irclogs.
I still have no idea what conversation you are referring to, though.
I checked all the likely timestamps. 16:14
PerlJam
.oO( <ajr_> oh, the conversation was actually yesterday )
[Coke] if you want to refer to an old event, go to the weblogs and paste the link here.
PerlJam ;-)
masak PerlJam: .oO( <masak> do you, in fact, have any cheese at all? ) 16:15
[Coke] It's very clean, sir.
ajr_ define infix<,>(*@values, :name) 16:16
masak oh!
yes, that's definitely not very clean, sir.
masak ...but it's *allowed*, and we're going to keep fighting for your right to define it! 16:23
masak nomz & 16:32
lizmat is awake, sort of, and backlogging 17:34
colomon masak: nice! 17:40
FROGGS damn 17:58
a bugfixathon without RT sucks
[Coke]: at least this is an ex-parrot, err, an ex-fail: S32-exceptions/misc.rakudo.jvm 227 - did we throws_like X::TypeCheck::Binding? 18:00
[Coke]: because I fixed that right before the release
dalek ecs: 66c75f4 | (Elizabeth Mattijsen)++ | S99-glossary.pod:
Add lemma for NST
18:03
FROGGS ahh, good that google cached the RT ticket pages :o)
lizmat there appears to be maintenance work on all perl.org servers today 18:03
FROGGS correct: log.perl.org/2014/07/7182014-schedu...g-day.html 18:04
dalek ast: 87f2ed3 | (Tobias Leich)++ | S05-match/make.t:
RT #76276 - $() is meant to be $/.ast // $/.Str
18:14
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=76276
vendethiel uuh 18:17
I often find $/ sugar to be confusing 18:18
[Coke] FROGGS++ saw that fix, thanks. 18:20
FROGGS I guess this will be challenging to fix: 18:21
m: role Foo { our $pi = 3 }; say $Foo::pi
camelia rakudo-moar eda14a: OUTPUT«(Any)␤»
vendethiel thinks it's kinda weird that only :: hasn't received sigil invariance 18:29
dalek ast: 0cbc65b | (Tobias Leich)++ | / (2 files):
add test file to test precompilation in general
18:41
rindolf Hi all. Is TimToady feeling better? 18:42
dalek kudo/nom: 8668171 | (Tobias Leich)++ | t/spectest.data:
RT #76456 - run precomp test file
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=76456
[Coke] we only know what's in the review, but yes, he was online in the past day or so.
FROGGS m: say 42.*WHAT 18:46
camelia rakudo-moar eda14a: OUTPUT«===SORRY!=== Error while compiling /tmp/sCC_5Y0vBB␤Cannot use .* on a non-identifier method call␤at /tmp/sCC_5Y0vBB:1␤------> say 42.*WHAT⏏<EOL>␤ expecting any of:␤ method arguments␤»
FROGGS m: say 42.+WHAT
camelia rakudo-moar eda14a: OUTPUT«===SORRY!=== Error while compiling /tmp/2Sa6cDUCvZ␤Cannot use .+ on a non-identifier method call␤at /tmp/2Sa6cDUCvZ:1␤------> say 42.+WHAT⏏<EOL>␤ expecting any of:␤ method arguments␤»
FROGGS std: say 42.+WHAT 18:47
camelia std 0f2049c: OUTPUT«ok 00:01 122m␤»
FROGGS std: say 42.*WHAT
camelia std 0f2049c: OUTPUT«ok 00:01 122m␤»
FROGGS what is that even?
lizmat FROGGS: variations on 42.?WHAT ? 18:52
FROGGS but how so? 18:53
FROGGS 42.?WHAT makes sense because it like a 'try to call that method' 18:53
lizmat m: say 42.?Num say 42.?Foo
camelia rakudo-moar eda14a: OUTPUT«===SORRY!=== Error while compiling /tmp/7MzRJvvjhv␤Two terms in a row␤at /tmp/7MzRJvvjhv:1␤------> say 42.?Num ⏏say 42.?Foo␤ expecting any of:␤ method arguments␤ postfix␤ infix st…»
lizmat m: say 42.?Num; say 42.?Foo
camelia rakudo-moar eda14a: OUTPUT«42␤Nil␤»
FROGGS but how does that work for +?
lizmat call the first of possible methods? 18:54
lizmat * being call all possible methods ? 18:54
FROGGS the first...
FROGGS hmmm 18:54
I have to read the spec
lizmat desperately needs to do some sightseeing
so afk& 18:55
FROGGS :o)
$object.?meth(@args) # calls method if there is one, otherwise Nil 18:56
$object.*meth(@args) # calls all methods (0 or more, () if none)
$object.+meth(@args) # calls all methods (1 or more, die if none)
indeed
that's strange
[Coke] m: say 42.*42 18:58
camelia rakudo-moar eda14a: OUTPUT«===SORRY!=== Error while compiling /tmp/uIO1mBlvgp␤Confused␤at /tmp/uIO1mBlvgp:1␤------> say 42.*⏏42␤ expecting any of:␤ dotty method or postfix␤»
FROGGS m: Failure == 0 18:59
camelia rakudo-moar eda14a: OUTPUT«Invocant requires an instance, but a type object was passed␤ in method Numeric at src/gen/m-CORE.setting:12865␤ in sub infix:<==> at src/gen/m-CORE.setting:4232␤ in block at /tmp/ZdhfQwrMtp:1␤␤»
vendethiel FROGGS: oh, I thought you meant "why does .+ work with WHAT", not what .+ is :p 19:03
FROGGS I guess I just did not see n 19:04
FROGGS -n 19:04
the need to call all methods on an object
FROGGS m: / <[\x10000..\xEFFFF]> /; say "alive" 19:09
camelia rakudo-moar eda14a: OUTPUT«(signal )» 19:10
carlin eats memory until it gets oomkilled 19:15
FROGGS yeah, from knowing how cclasses work it must be 19:31
carlin I just discovered whatcanidoformozilla.org 20:27
a perl6 equivalent could be interesting
vendethiel oooh, that's graet ! 20:28
hehe, there's a perl one :P 20:29
itz__ debian unstable has a "how-can-i-help" command with suggestions 21:07
timotimo oooh 21:09
that's pretty neat
carlin makes sense for Mozilla to have a website and Debian to have a command 21:15
timotimo %)
carlin maybe we should have a How::Can:I::Help module :p
timotimo "use My::Assistance" 21:16
itz__ Create::The::Future
dalek p: f95efac | (Tobias Leich)++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp:
implement charrange on moarvm
21:21
zengargoyle ddumont.wordpress.com/2014/07/18/lo...or-debian/ 21:55
heh, 'surge of popularity': qa.debian.org/popcon.php?package=rakudo 21:56
carlin woah, what happened there 21:57
timotimo no clue o_O 21:59
zengargoyle was that about the time moar was announced? 22:00
FROGGS no, but the time moar was actually usable and started to show its strengths 22:01
geekosaur would be tempted to check unrelated stuff for similar bumps, in case it's something in popcon
FROGGS qa.debian.org/popcon.php?package=libsdl2
FROGGS time perl6-m -e 'say "\x2fa1d" ~~ /:i <[\x0..\x2fa1d]> /' # 「􏿽xF0􏿽xAF􏿽xA8􏿽x9D􏿽xEF􏿽xBD􏿽xA3 22:05
real0m0.363s
dalek p: 5b83983 | (Tobias Leich)++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp:
make charrange aware of ignorecase on moar
22:08
FROGGS uhh 22:09
there might be regressions :/
FROGGS m: say nqp::lc("2") 22:21
camelia rakudo-moar 866817: OUTPUT«2␤»
FROGGS m: say nqp::uc("2")
camelia rakudo-moar 866817: OUTPUT«2␤»
FROGGS okay, regressions probably resolved 22:29
dalek p: 4793047 | (Tobias Leich)++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp:
need an extra register in charrange
22:38
p: 5c191ee | (Tobias Leich)++ | src/QRegex/P6Regex/Actions.nqp:
use charrange for all case sensitive ranges

Case insensitive charrange is implemented on moar only atm, and fails the following spectests: t/spec/S05-grammar/protoregex.rakudo.moar t/spec/S05-mass/properties-block.t t/spec/S05-mass/rx.rakudo.moar t/spec/integration/advent2013-day18.t
Ven "The sequence operator is one of Perl 6's powerfulest feature" -> 'powerfulest' really seems a bit weird. 23:14
Ven lacks of vocabulary quite a bit 23:16
(I thought of "best", but that's a pretty bad word ...)
carlin ... most powerful features 23:20
Ven Oh, featureS ?
oh, obviously. Sorry. 23:21