»ö« 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.
dalek ast: 6e20c59 | coke++ | S02-types/hash_ref.t:
fudge for jvm (more self-referential issues)
ast: 2e255c0 | coke++ | S03-metaops/cross.t:
more JVM/GLR fudges
00:01 firstdayonthejob left 00:08 pmurias left 00:12 bjz left
ugexe for a role that is composed into a class, is there any difference between `self.my-classes-method($arg)` and `$.my-classes-method($arg)` ? I ran into strange behavior where the former stopped worked when threads were involved and the later fixed it, but im not sure if it was just moving a thread bug or if there was an actual difference 00:15
ShimmerFairy ugexe: unless I'm mistaken $.meth is short for $(self.meth) -- maybe try itemizing the self version and see what happens ? 00:18
00:21 vendethiel left
ugexe i will have to try that. im just worried when im changing that stuff that im changing the execution/memory enough to move the problem 00:22
00:23 spider-mario left
[Coke] r: [[2, 3], [4, [5, 6]]]».squish.gist.say 00:39
camelia rakudo-moar d98dc8: OUTPUT«((2 3) (4 [5 6]))␤»
..rakudo-jvm d98dc8: OUTPUT«((2 3 Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new…»
[Coke] r: [[2, 3], [4, [5, 6]]]».squish.say 00:41
camelia rakudo-jvm d98dc8: OUTPUT«((2 3 Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new Mu.new…»
..rakudo-moar d98dc8: OUTPUT«((2 3) (4 [5 6]))␤»
00:45 kjs_ joined 00:50 softmoth joined
dalek ast: da1ab4f | coke++ | S03-metaops/hyper.t:
fudge for JVM, new tickets
ugexe r: my Blob $a = "a".encode; my Blob $b = "b".encode; $a ~= $b; say $a.perl; # has socket bust on jvm github.com/rakudo/rakudo/blob/nom/...ket.pm#L16
camelia rakudo-moar d98dc8: OUTPUT«utf8.new(97, 98)␤»
..rakudo-jvm d98dc8: OUTPUT«java.lang.RuntimeException: This type does not support positional operations␤ in block <unit> at /tmp/tmpfile:1␤␤»
mr_ron m: gist.github.com/ronaldxs/8e62394e7edcd407caf5 00:53
camelia rakudo-moar d98dc8: OUTPUT«3 bottles of beer on the wall, 3 bottles of beer. Take one down and pass it around, 2 bottles of beer on the wall.␤␤2 bottles of beer on the wall, 2 bottles of beer. Take one down and pass it around, 1 bottle of beer on the wall.␤␤1 bottle of bee…»
mr_ron fixed part of it anyway ...
dalek ast: a152f36 | coke++ | S03-metaops/zip.t:
fudge for rakudo.jvm
01:03 rarara_ left
ugexe looks like jvm may be trying to call the stringy infix ~ instead of the Buf infix ~ 01:06
hmm thats not it 01:09
01:11 yqt left
mr_ron m: gist.github.com/ronaldxs/9eebbf721b93bc127aac 01:12
camelia rakudo-moar d98dc8: OUTPUT«3 bottles of beer on the wall, 3 bottles of beer. Take one down and pass it around, 2 bottles of beer on the wall.␤␤2 bottles of beer on the wall, 2 bottles of beer. Take one down and pass it around, 1 bottle of beer on the wall.␤␤1 bottle of bee…»
mr_ron suggestions for improvements on fix welcome ... 01:13
01:25 tokuhirom_h joined, tokuhirom_h left, tokuhirom_h joined
zengargoyle am i alone in finding the Search box on doc.per6.org plain annoying becuse it's automatically selected so when you hit <space> expecting to page down you instead get a pause and then a dropdown. 01:33
01:34 mr_ron left 01:39 lolisa joined 01:44 raiph left, cygx left 01:45 tokuhirom joined 01:48 raiph joined 01:50 tokuhirom left
leont op 01:57
02:14 leont left
Ben_Goldberg r: my Num $x = 5; 02:19
camelia rakudo-{moar,jvm} d98dc8: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Can't assign a Int literal (5) to a Num variable. You can try 5e0 instead or use Real␤at /tmp/tmpfile:1␤------> 3my Num $x = 7⏏055;␤»
Ben_Goldberg r: my Int $x = 5e0; 02:20
camelia rakudo-{moar,jvm} d98dc8: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Can't assign a Num literal (5) to a Int variable. You can try 5.floor instead or use Real␤at /tmp/tmpfile:1␤------> 3my Int $x = 7⏏055e0;␤»
Ben_Goldberg "a Num literal (5)" ?
02:21 raiph left
Ben_Goldberg timotimo++, timotimo-- 02:21
masak antenoon, #perl6 02:26
also, "or use Real" feels not so precise. my first thought was `5e0.Real`, which doesn't help at all :)
02:27 tokuhirom joined
mst masak: maybe you were just imagining it would 02:30
japhb masak: Antenoon? What TZ are you in today?
mst I assume 'antenoon' is meant ala 'moin' to be a tz independent greeting 02:31
masak japhb: .cn
mst: no, it's that thing between 10:00 and 12:00 that's not really morning anymore
02:32 tokuhirom left
masak japhb: I guess the real answer is UTC+08:00 02:33
mst masak: that's the only bit of 'morning' I normally see.
masak I suspected you'd say something like that :P 02:34
japhb mst: That's the only bit of 'morning' that I generally *want* to see ... unfortunately, I almost always see a lot more of it.
02:36 uruwi left 02:53 Oatmeal left 02:54 kjs_ left
dalek c: 8361465 | (Tokuhiro Matsuno)++ | doc/Type/Array.pod:
Added missing semicolon
02:59 Oatmeal joined 03:05 softmoth left
dalek kudo-star-daily: f12d49a | coke++ | log/ (8 files):
today (automated commit)
masak GNU Hurd 0.7 released. www.gnu.org/software/hurd/news/201...eases.html 03:30
I find I'm in the same situation with GNU Hurd as I imagine many are with Perl 6.
namely, sure, OK, I see releases being made. nice. but how realistic would it be to use this for something that I already use (say) Linux Mint for? 03:31
dalek ast: c3e1c83 | coke++ | S03-operators/buf.t:
fudge for jvm, new ticket
masak all I as an outsider see as evidence one way or another is that most people have not switched to GNU Hurd yet :) despite it being "0.7", whatever that means.
AlexDaniel .u ⦿
yoleaux U+29BF CIRCLED BULLET [Sm] (⦿)
masak .u ⦾ 03:34
yoleaux U+29BE CIRCLED WHITE BULLET [Sm] (⦾)
dalek ast: 0a6592c | coke++ | S03-operators/increment.t:
fudge for jvm, new ticket
AlexDaniel .u ⍿ 03:48
AlexDaniel I wish every unicode symbol also had a short explanation why it was added… 🞡🞢🞣🞤🞥🞦🞧🞨🞩🞪🞫🞬🞭🞮 04:00
04:01 vendethiel joined
.oO("This symbol was added because VERTICAL DOT WITH MIDDLE LINE makes no sense.")
.oO( BOLD GREEK CROSS was added because since it is commonly used in handwriting; VERY BOLD GREEK CR…… )
oops 04:12
masak .u ⽏⾇⾥⿁
yoleaux U+2F4F KANGXI RADICAL DO NOT [So] (⽏)
masak .u ⿁
yoleaux U+2FC1 KANGXI RADICAL GHOST [So] (⿁)
masak grins
dalek ast: ac74e3b | coke++ | S05-mass/properties-general.t:
refudge for jvm
ast: e708736 | coke++ | S05-substitution/subst.t:
fudge for jvm
masak this has been on my mind lately: do we have an example in Perl 6, 'sides quasi blocks and unquotes, of the OUTER:: chain being messed with? as in, it's set to something other than the surrounding block? 04:18
04:19 dayangkun joined
AlexDaniel .u 🆕 04:23
yoleaux U+1F195 SQUARED NEW [So] (🆕)
AlexDaniel no squared OLD though!
[Coke] RT: 1046; tests 11: JVM: 37; Moar: 17; LTA: 86; WEIRD: 10; XMAS: 67; GLR: 7; nom: 8 04:24
AlexDaniel .u 🆒
yoleaux U+1F192 SQUARED COOL [So] (🆒)
04:26 finanalyst joined 04:28 tokuhirom joined, khw left
ugexe heh i beat you rt126530 with rt126529 04:31
04:33 tokuhirom left
AlexDaniel .u 🗊🗐 04:35
yoleaux No characters found
AlexDaniel .u 🗊
yoleaux No characters found
04:40 softmoth joined 04:41 lolisa left 04:44 Taller1 left, softmoth left 04:56 dayangkun left 04:57 vendethiel left 05:00 bpmedley joined 05:04 mattp_ joined 05:05 mattp__ left 05:11 integral left, smash joined 05:12 Jonis left 05:17 integral joined, integral left, integral joined 05:18 Jonis joined 05:19 jnthn joined
dalek p/backlog: 261e50c | (Jimmy Zhuo)++ | src/vm/jvm/ (6 files):
expose the backlog arg for listen
05:32 kaare_ joined 05:36 weihan joined
Sgeo vaguely wonders how autovivification compares/contrasts with Rust's Entry APIs for maps 05:44
yoleaux 17 Aug 2015 13:46Z <Ven> Sgeo: wrt irclog.perlgeek.de/perl6/2015-08-17#i_11067252 - I like clojure's namespaced dynamics, what do you think?
Sgeo Oops wow it's been a while since I talked here I guess
examples.perl6.org/categories/best-...ctory.html 05:48
This page seems broken
TimToady a lot of the RC entries have been updated, so you might compare with what's on RC these days 05:51
05:51 _28_ria joined
TimToady though that one hasn't been update, and doesn't appear to need an update 05:52
Sgeo The example itself only says "use v6;" 05:53
05:54 xyf left
Sgeo At least as displayed on that page 05:54
05:54 dwarring left 05:57 telex left 05:58 telex joined
masak TimToady: I've been thinking of a way to allow quasi blocks to set the parser mode. so `quasi @ Q::Trait { ... }` would mean "parse what comes inside the block as a trait" (syntax isn't set in stone; the idea's what's important) 06:05
TimToady: and the default `quasi { ... }` means `quasi @ Q::Expr { ... }`, because macros expand into expression tree fragments by default.
Ben_Goldberg m: github.com/perl6/perl6-examples/bl...factory.pl 06:06
camelia ( no output )
masak TimToady: thinking of it this way, I find it weird and inconsistent that we even allow semicolons inside a quasi block -- if it's an expression only. would it make sense to forbid that by default, and train people to write `quasi @ Q::StatementList { ... }` in that case? 06:07
06:08 AlexDaniel left
ShimmerFairy masak: I'd find it weird to _disallow_ semicolons, honestly. It feels like we'd be adding a third interpretation of { } . (Besides, isn't do { foo; bar; } considered an expression, and doesn't it also have semicolons? ☺) 06:10
06:13 Ben_Goldberg left
masak m: my $foo = do { say("OH HAI"); 42 }; say $foo 06:23
camelia rakudo-moar d98dc8: OUTPUT«OH HAI␤42␤»
masak TimToady: an exception could be make for the usual `quasi { ... }` doing what ShimmerFairy just suggested. it'd then lead to the "extract value from last statement" semantics of github.com/masak/007/issues/7#issu...t-69327526 06:24
and if someone wanted the stricter semicolon-less variant, they could explicitly say `quasi @ Q::Expr { ... }`
ShimmerFairy masak: @a[1;2;3] is another example of an expression with semicolons, so the semicolon detector in your suggestion would have to be more careful (and even then, ideally not fail if someone just liked ending their one expression with a semicolon)
masak that one is not a concern; I don't really mean "semicolons", I mean "a statement list". :) 06:25
06:28 softmoth joined
ShimmerFairy masak: Ah, that's what I brought up do { } for, though treating quasi { } as a kind of do { } might be the way to go anyway :) 06:28
masak s/make/made/
06:32 softmoth left 06:47 uruwi joined 07:11 quester joined
dalek kudo/nom: 6089b25 | TimToady++ | src/core/Exception.pm:
Better message on literal assignment type mismatch
kudo/nom: eea721d | TimToady++ | src/Perl6/Optimizer.nqp:
also catch assignment of Rat to Int/Num/Complex
kudo/nom: 86aad9d | TimToady++ | src/core/Exception.pm:
protect the conjectural coercion with a try
kudo/nom: 38f4869 | TimToady++ | src/Perl6/Optimizer.nqp:
catch assign of complex values to non-complex too
ast: 66377ae | TimToady++ | S02-types/type.t:
all combos of Int/Num/Rat/Complex literal assign
07:24 xfix joined
quester p6: sub accum2 ($n is copy) { $n += * }; $a = accum2( 17 ); say $a( .3 ); say $a( 5i ) 07:27
camelia rakudo-moar d98dc8: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Variable '$a' is not declared␤at /tmp/tmpfile:1␤------> 3sub accum2 ($n is copy) { $n += * }; 7⏏5$a = accum2( 17 ); say $a( .3 ); say $a(␤»
quester p6: sub accum2 ($n is copy) { $n += * }; my $a = accum2( 17 ); say $a( .3 ); say $a( 5i )
camelia rakudo-moar d98dc8: OUTPUT«17.3␤17.3+5i␤»
masak m: sub accum2($n is copy) { return -> $m { $n += $m }; my $a = accum2( 17 ); say $a( .3 ); say $a( 5i ) 07:28
camelia rakudo-moar d98dc8: OUTPUT«5===SORRY!5=== Error while compiling /tmp/3yGzp6lMR0␤Missing block␤at /tmp/3yGzp6lMR0:1␤------> 3accum2( 17 ); say $a( .3 ); say $a( 5i )7⏏5<EOL>␤ expecting any of:␤ postfix␤ statement end␤ statement modifier…»
masak m: sub accum2($n is copy) { return -> $m { $n += $m } }; my $a = accum2( 17 ); say $a( .3 ); say $a( 5i ) 07:29
camelia rakudo-moar d98dc8: OUTPUT«17.3␤17.3+5i␤»
masak quester: I'd write it like that. somehow it doesn't feel clear enough to use a WhateverCode for a nested routine.
dalek osystem: 2b3b1b9 | lestrrat++ | META.list:
Add Crust::Middleware::Session
osystem: 94a48b6 | moritz++ | META.list:
Merge pull request #85 from lestrrat/patch-2

Add Crust::Middleware::Session
pan style="color: #395be5">perl6-examples: b559787 | (Ronald Schmidt)++ | categories/other/bottles.pl:
Fix 99 bottles of beer. Dont know if best solution to GLR but at least it works.
pan style="color: #395be5">perl6-examples: b206725 | moritz++ | categories/other/bottles.pl:
Merge pull request #36 from ronaldxs/master

Fix 99 bottles of beer.
quester masak: Yes, now that you mention it, it is kind of obscure. Sometimes golfing your code makes it clearer. This... really isn't one of those times.
p6: say so "first second" ~~ rx/first/; say $/; say [or] <first second> X~~ ( rx/second/, rx/third/ ); say $/; 07:46
camelia rakudo-moar d98dc8: OUTPUT«True␤「first」␤True␤「first」␤»
quester That's odd... the [or] ... X~~ ... can determine that there is a match, but it doesn't set $/ at all. 07:47
I'm actually looking for a way to check if any of several variables match any of several keywords. That part is working, but I would also like to get the keyword that matched. 07:49
07:53 Actualeyes joined 07:57 mj41 joined 07:58 weihan left
masak quester: setting $/ sounds useful in that case. 08:07
quester: I have no sense of whether t'is "reasonable" to want.
I guess implementation-wise, [or] and [||] and the like are implemented as a reduce() routine calling the appropriate operator. there's a real chance $/ is correctly set inside of that reduce() call. 08:08
quester masak: It seems to be the X~~ that doesn't set $/, as far as I can tell. I was just wondering if anyone happened to know offhand if that was intentional or has something to do with the metaop implementation. 08:11
ShimmerFairy m: say <first second> X~~ ( rx/second/, rx/third/ ); say $/; 08:12
camelia rakudo-moar 38f486: OUTPUT«(False False True False)␤Nil␤»
ShimmerFairy yeah, it's the X~~ part, not necessarily the [or] part :)
quester I suppose I'll just write it out as two nested loops and use a simple ~~ for the match. That is working.
08:12 darutoko joined
ShimmerFairy quester: if possible, you can also represent the choices in one regex, e.g. rx/ @foobar / will match against any of the elements of @foobar, IIRC 08:13
quester ShimmerFairy: Oh! Good idea... thanks. Let me try that... 08:14
ShimmerFairy m: my @a = <foo bar baz>; say "bar" ~~ /@a/; say $/;
camelia rakudo-moar 38f486: OUTPUT«「bar」␤「bar」␤»
08:16 softmoth joined
quester p6: my @a=<third fifth seventh>; say so <fourth fifth sixth> ~~ / @a /; say $/ 08:19
camelia rakudo-moar 38f486: OUTPUT«True␤「fifth」␤»
quester ShimmerFairy++ 08:20
08:20 softmoth left 08:21 azawawi joined
azawawi hi 08:21
yoleaux 30 Oct 2015 18:51Z <pippo> azawawi: Thank you! And thank you for this great module. :-))
30 Oct 2015 23:29Z <pippo> azawawi: Found an asymmetric line in WebElement.pm6. In method "selected". Should the "element/$.id/selected" be "element/$($.id)/selected". Did not go through the code. Only asymmetry is bugging me. o/
azawawi ugexe: ping 08:26
08:27 quester left
azawawi .tell ugexe I was able to use zef on windows. Thanks for creating such a great tool. Please do keep up the awesome work. 08:27
yoleaux azawawi: I'll pass your message to ugexe.
azawawi sees many module test failures on windows 7 machine 08:28
we're back to non-file structure in C:\rakudo\share\perl6\site ? 08:29
im seeing 0, ..., n named files
08:29 tokuhirom joined 08:34 tokuhirom left
azawawi so rakudo will use flat module structure from now onwards? 08:35
08:41 firstdayonthejob joined
azawawi .tell pippo thanks. fixed in github.com/azawawi/perl6-selenium-...68fc14f753 :) 08:42
yoleaux azawawi: I'll pass your message to pippo.
09:03 RabidGravy joined 09:04 vendethiel joined
azawawi slow #perl6 traffic today 09:07
RabidGravy it's foggy outside 09:10
azawawi it is sunny here 09:11
masak kind of dusky here
[Tux] test 50000 37.647 37.536
test-t 50000 39.170 39.058
azawawi .tell ugexe what's zef solution for the following code github.com/retupmoca/P6-Compress-Z...r/Build.pm ? 09:12
yoleaux azawawi: I'll pass your message to ugexe.
09:12 aristotle joined
vendethiel m: SEQ(say("hey"); say("masak")); 09:12
camelia rakudo-moar 38f486: OUTPUT«hey␤masak␤»
aristotle jvns.ca/blog/2015/10/31/papers-are-...-with-coz/
azawawi masak: so no lib directories again for modules... flat structure?
09:13 grondilu joined
aristotle this might have steal-worthy ideas for anyone working on profiling Perl 6 code 09:13
azawawi so what's im seeing right now, the windows support is subpar. zef works on it but most native modules refuses to work with zef :) 09:14
and panda refuses to install .bat scripts 09:15
azawawi sighs
masak azawawi: I have no idea. haven't been involved in those changes...
09:16 aristotle left
azawawi masak: profiling/testing threaded applications becomes a real nightmare when you need to control actual external device state. 09:17
masak I see. 09:18
azawawi masak: some devices are by definition 'slow' can slow all threaded and cause bottlnecks of all sorts...
for example, when you take an image snapshot from a camera to be analyzed for face recognition. that's easy 09:19
imagine capturing n image snapshot from n cameras...
09:20 Begi1115 joined
azawawi the 20 ms delay from one camera snapshot can eventually result in a big accumulated delay in a multi-threaded environment 09:22
masak azawawi: does this have any bearing on Perl 6 that I'm missing?
azawawi is just complaining... ignore :)
any interesting upcoming Perl 6 events? 09:24
moritz azawawi: well, I can think of something in December :-) 09:30
azawawi moritz: good morning 09:31
moritz: What about fosdem.org/2016/ ? do we have anything for it?
nine azawawi: Wendy is organizing that 09:32
lizmat good *, #perl6
we have a dev room on Sunday at FOSDEM, I believe
masak good *, lizmat 09:33
lizmat well, we have a dev room for sure, and I believe it to be on Sunday
vendethiel FOSDEM is in february like last year, right?
or, er, end-of-jan
azawawi fosdem.org/2016/schedule/track/perl/ ?
lizmat no, it's the last weekend of Jan this time
RabidGravy in the the S22:META6 does anyone have any objection to my changing "superseded_by" to "superseded-by" on the grounds that I guess it isn't implemented anywhere yet and when it does get implemented it will wind up kebab case anyway 09:35
synbot6 Link: design.perl6.org/S22.html#META6_doe...y_changing
lizmat RabidGravy++
moritz azawawi: also, German Perl Workshop in 2016-03 will have Perl 6 content
RabidGravy whaddafuq 09:36
design.perl6.org/S22.html#META6.json that iis
zengargoyle m: sub r { my @x = 1,2; my $y = 3; return @x, $y }; my (@a,$b) = r; @a.say; $b.say; my ((@c,$d)) = r; @c.say; $d.say; ((@c,$d)) = r; @c.say; $d.say; 09:39
camelia rakudo-moar 38f486: OUTPUT«[[1 2] 3]␤(Any)␤Cannot call method 'say' on a null object␤ in block <unit> at /tmp/IoH7lYUHb3:1␤␤»
lizmat RabidGravy: +1 from me (to be clear)
RabidGravy :)
I'll do it, and apologise later if anyone objects ;-) 09:40
zengargoyle m: sub r { my @x = 1,2; my $y = 3; return @x, $y }; my (@a,$b) = r; @a.say; $b.say; my (@c,$d); ((@c,$d)) = r; @c.say; $d.say;
camelia rakudo-moar 38f486: OUTPUT«[[1 2] 3]␤(Any)␤[[1 2] 3]␤(Any)␤»
zengargoyle m: sub r { my @x = 1,2; my $y = 3; return @x, $y }; my (@a,$b) = r; @a.say; $b.say; my (@c,$d); (@c,$d) = r; @c.say; $d.say; 09:41
camelia rakudo-moar 38f486: OUTPUT«[[1 2] 3]␤(Any)␤[[1 2] 3]␤(Any)␤»
azawawi we do not have the concept of a test suite file like in JUnit and other testing frameworks (in other languages) that is, right?
im trying to map a selenium test suite (a collection of test cases) into perl 6 09:42
09:42 tokuhirom_h left
lizmat ah, and good * to you, masak! :-) 09:42
09:42 TEttinger left
RabidGravy azawawi, something quite like Test::Class (in Perl 5) has yet to emerge afaik 09:44
zengargoyle m: sub r { my @x = 1,2; my $y = 3; return @x, $y }; my (@a,$b) = r; @a.say; $b.say; my (@c,$d); ((@c),$d) = r; @c.say; $d.say; 09:45
camelia rakudo-moar 38f486: OUTPUT«[[1 2] 3]␤(Any)␤[[1 2] 3]␤(Any)␤»
zengargoyle m: sub r { my @x = 1,2; my $y = 3; return @x, $y }; my (@a,$b) = r; @a.say; $b.say; my (@c,$d); (@c),$d = r; @c.say; $d.say;
camelia rakudo-moar 38f486: OUTPUT«WARNINGS:␤Useless use of variable @c in sink context (line 1)␤[[1 2] 3]␤(Any)␤[]␤([1 2] 3)␤»
dalek kudo/curli: 1a5a465 | (Stefan Seifert)++ | src/core/CompUnit (2 files):
Migrate Repository::FileSystem's candidates code into need

This allows for us to remove CompUnitRepo::Locally's need method.
ecs: e1da64f | RabidGravy++ | S22-package-format.pod:
Kebab case superseded_by to superseded-by in S22
09:51 spider-mario joined
azawawi RabidGravy: thanks for the info. So basically I have to map each selenium test case into nnn-test-name.t to preserve the run order of the test suite 09:56
RabidGravy looks at the existing testy things 09:58
so it seems, the tests files are definitely run in sorted order 10:00
nine azawawi: why do you need a certain order of your test files?
RabidGravy or make something like Test::Class but using traits rather than special names for the test methods 10:01
nine, in a web application you may not have control of the degree of isolation of the state of the application between tests 10:02
10:03 Ven_ joined 10:04 Actualeyes left
nine Not strictly isolating state between tests was a very wrong decision I've made and one that was very costly to reverse. But if we hadn't reversed it our test suites would run for hours instead of 15 minutes. 10:04
10:04 softmoth joined
dalek kudo/curli: 382ae45 | (Stefan Seifert)++ | src/core/CompUnit/Repository/Installation.pm:
Fix CompUnit::Repository::Installation::can-install

The previous code has never been tested and of course contained a bogus call to Any.any
RabidGravy in my last job we had a test suite that ran for hours, largely because it twatted and rebuilt the database between every fixture for every test
10:09 softmoth left
nine RabidGravy: that's why it would be better to have a random grouping of tests cases where each group gets a clean and separae database. So groups may run in parallel but you don't pay the cost of database setup for every single test case. 10:09
While still finding implicit dependencies between test cases quickly. 10:10
RabidGravy though all this said, I do find that there is a sort of natural order that tests should run in order to make debugging easier (i.e. does it compile -> does it have the expected methods .... etc, etc) 10:12
nine Tests are only useful when they are run. Will you run those basic tests for every single change when it adds an hour to your test runs? Probably not. You will only run the tests for the area you're working in. 10:14
RabidGravy indeed, for myself in a larger system I tend to organise things such that each "thing" that can be altered separately has a test file of its own that has enough coverage to ensure that you don't break stuff making a tiny change 10:16
then let CI pick up any unanticpated fallout 10:19
10:20 Ven_ left 10:22 Ven_ joined 10:23 rindolf joined
azawawi nine: sorry for being away but the short answer is my selenium test cases were written by a junior QA engineer... 10:27
nine azawawi: ok, that explains it very well :) 10:28
azawawi nine: basically in a web application, you have logged in/out states to consider. So i guess we can automate the login behavior and rerun it (at test runtime cost). 10:29
nine: also i asked because im working on translating from selenese commands into Perl 6 code :) 10:30
nine: i.e. QA edit it using selenium firefox IDE extension, and CI converts it into Perl 6 code and runs it on each test case commit 10:31
nine azawawi: just for context: at work we deal only with web applications with one exception. So we've been through a lot of these issues. That's also the reason why I wrote Test::WWW::WebKit, so we could realiably run tests in parallel and much faster then with Selenium.
azawawi takes a look at Test::WWW::WebKit
nine azawawi: it's great for testing your Javascript code, but of course useless for cross browser testing. 10:32
azawawi nine: but i have to consider IE and firefox in my case... and windows platform (my curse lol)
nine: so basically it is phantomjs? 10:33
nine: but faster since there is no JSON HTTP bridge involved, right?
nine Pretty much, yes.
azawawi cool thanks for the info 10:34
nine Phantomjs was not yet usable when I started WWW::WebKit. Also I needed a real drop-in replacement for Test::WWW::Selenium::Catalyst because we already had loads of tests based on that.
10:35 Ven_ left
azawawi so basically i need to make sure my selenium package has a compatibility layer with Test::WWW::Selenium to make it easier to migrate Perl into Perl 6 code 10:35
10:37 Ven_ joined 10:48 ][Sno][ joined 10:49 [Sno] left, Ven_ left 10:51 Ven_ joined 10:54 diana_olhovik joined 10:57 azawawi left 10:58 xfix left 11:01 diana_olhovik left 11:08 bpmedley left 11:09 cygx joined
cygx o/ 11:09
11:11 xfix joined, andreoss joined
dalek kudo/nom: 0d82c9b | lizmat++ | src/core/IO/Handle.pm:
Wean IO::Handle.Supply away from nqp::readfh
11:20 Ven_ left 11:23 Ven_ joined
RabidGravy right, off to the farmers market! toodlepip! 11:24
.oO( fresh farmers!! wheee!! )
11:26 Ven_ left 11:28 RabidGravy left 11:32 diana_olhovik joined 11:34 FROGGS__ joined 11:35 brrt joined
brrt good * 11:37
dalek kudo/curli: d3e60c5 | (Stefan Seifert)++ | / (7 files):
CompUnitRepo::Locally -> CompUnit::Repository::Locally

Even though the module loading code has been migrated to the concrete implementations, the CompUnit::Repository::Locally role is still useful for sharing code between file system based implementations.
11:37 FROGGS_ left
nine I dare say, this concludes phase 1: code restructuring :) 11:39
lizmat nine++ 11:40
nine Now if only I knew how exactly this broke panda. I'd know a couple of changes that could need adjustment in panda, but it simply fails at use Test; But when I run the tests manually, everything is fine. 11:41
moritz nine: compare %*ENV and $*CWD? 11:43
11:44 yqt joined
dalek ast: e968239 | lizmat++ | S16-io/supply.t:
Add tests for IO::Handle.Supply
11:45 leont joined 11:46 yqt left 11:48 azawawi joined
nine moritz: oh, yes, panda's bootstrap.pl sets PERL6LIB 11:49
lizmat It's been a while: All tests successful. 11:50
Files=1069, Tests=49584, 237 wallclock secs (12.44 usr 3.86 sys + 1462.43 cusr 126.93 csys = 1605.66 CPU)
only 416 to go for 50K :-)
nine lizmat: still nice to see :)
azawawi so what is curli? :)
nine Wow, where did those 1000 tests come from?
azawawi: gist.github.com/jnthn/47a42b2e86e7e552b2e2
dalek kudo/nom: f9056c6 | lizmat++ | t/spectest.data:
Run tests for IO::Handle.Supply
11:51 tokuhirom_h joined
lizmat nine: I added 2 tests for each class known, checking validity of handling .gist and .perl on type object 11:51
azawawi reads
lizmat and found 2 problems because of that :) 11:52
nine lizmat++ # nice!
11:52 softmoth joined 11:54 diana_olhovik left 11:57 softmoth left 11:58 mj41 left
azawawi nine: nice. thanks for the info 12:00
nine Oh, the panda breakage is a cute one. CompUnitRepo caches repositories by path and will give you the same repo object for the same path. Since repos are now a linked list, re-using an object from the end of the list, will give you a rather short chain. 12:02
And panda's bootstrap.pl does exactly that: it specifies a repo in PERL6LIB that will be automatically added by rakudo anyway.
lizmat the fact that panda adds repo's, is broken, imho 12:03
it's part of the delay of installing many modules
delay at startup I mean 12:04
nine Well during bootstrap at least it has to add its local lib dir
azawawi panda is broken also on windows for .bat scripts that is... im waiting on curli to land for it be fixed or so i was promised :)
lizmat nine: the way I remember it, panda added an INC entry for each module installed 12:05
nine lizmat: that sounds terrible
lizmat well, please double check, but that's what I remember from looking at it 12:06
azawawi any zef developers here? 12:07
nine ==> Successfully installed panda 12:08
cygx azawawi: ugexe and tony-o have contributed to the repository 12:09
azawawi cygx: thx 12:10
so MANIFEST in my rakudo folder is a json file that shows where are the different installed module version(s), right? 12:11
dalek c: badbf5d | lizmat++ | doc/Type/IO/Handle.pod:
Document IO::Handle.readchars + some cleanup
c: c1abbc8 | lizmat++ | doc/Type/IO/Handle.pod:
Document IO::Handle.Supply
kudo/curli: 3fa2369 | (Stefan Seifert)++ | src/core/Process.pm:
Include every repo only once in the $*REPO chain

CompUnitRepo caches repositories by path and will give you the same repo object for the same path. Since repos are now a linked list, re-using an object from the end of the list, will give you a rather short chain.
Having a path represented by only a single object is still a good idea. And there should be no reason to have a path in multiple places of the repo chain, so avoid the breakage by making sure we include every repo only once.
cygx should get around to documenting IO::Handle.open and adding some tests, for that matter... 12:12
bartolin m: use Test; for ^150 -> $n { is $n + 0, 42 }
camelia rakudo-moar 0d82c9: OUTPUT«(signal SEGV)not ok 1 - ␤␤# Failed test at /tmp/bamd8cvbpB line 1␤# expected: '42'␤# got: '0'␤not ok 2 - ␤␤# Failed test at /tmp/bamd8cvbpB line 1␤# expected: '42'␤# got: '1'␤not ok 3 - ␤␤# Failed test at /tmp/bamd8cvbpB l…»
bartolin ^^ that segfault goes away with MVM_SPESH_DISABLE. Seems to happen in src/core/Cool.pm (method ends-with) while looking up the calling file. 12:14
.oO( what do you mean, undocumented? the commit message couldn't be clearer )
bartolin should I report it as an MoarVM issue or as a rakudobug?
12:14 tokuhirom joined
azawawi MANIFEST json is now 375 lines with only zef installed... what happens when we install hundreds of modules? parsing time? 12:15
nine azawawi: that's been a hot topic for months.
azawawi hotfixes his win32 panda installation for it to work 12:17
nine I'd say let's but the data into CSV files and have [Tux]++ optimize the loader till it runs in negative time ;)
ShimmerFairy Honestly, for something performance-sensitive I'd personally gravitate towards a binary format :) 12:19
cygx personally, I think the grammar engine as a whole is in need of a major speedup
nine ShimmerFairy: yes, sqlite
cygx have a couple hundred lines of code, and startup-time is a goner
12:19 tokuhirom left, RabidGravy joined 12:20 vendethiel left 12:21 SHODAN left
flussence thinks the filesystem is a pretty decent database format... 12:21
ShimmerFairy too bad the program can't choose the filesystem :P 12:22
nine flussence: until you need to find a module with version 2.1 or greater
12:22 Actualeyes joined
.oO( sqlext )
azawawi Lots of tests failures on windows 7... time to work :) 12:24
12:28 tokuhirom joined
RabidGravy returns with a haul of locally brewed beer, strange vegetables and cheese 12:31
12:32 tokuhirom left
dalek kudo/nom: 48570b3 | lizmat++ | src/core/Any-iterable-methods.pm:
Use ternary, remove superstitious if/else
kudo/curli: 1aaf568 | (Stefan Seifert)++ | src/core/CompUnit/Repository/FileSystem.pm:
Bring back CompUnit::Repository::FileSystem::files

Apparently it's being used by panda
cygx anyone up for adding a more helpful 404 error page to doc.perl6.org? 12:41
already ticketed, I see ( github.com/perl6/doc/issues/129 ) 12:43
nine lizmat: do you think it's worth the time to try to reduce Perl6::ModuleLoader to the absolutely needed minimum? Loading Perl 6 modules should always go through CompUnitRepo AFAICT.
lizmat yes, it would always need to go through one place, especially to take care of async issues and sentinelity :-) 12:44
in fact, I could argue we only need Perl6::ModuleLoader for nqp modules 12:45
12:46 ^elyse^ joined
nine lizmat: yes, it seems to load Perl6::BOOTSTRAP and occasionally NQPHLL from NQP 12:46
lizmat: I guess we don't need much "locate an appropriate file" functionality for that 12:47
lizmat indeed :-)
dalek kudo/nom: ac0d1d4 | lizmat++ | src/core/Any-iterable-methods.pm:
Convert as-iterable/as-iterator

Since all calls to it where followed by .iterator anyway
lizmat brb 12:49
12:50 brrt left
RabidGravy so my first stupid question of the day: if I have something like "module Foo { multi sub doit(Int $t) { ... }; multi sub doit(Str $t) { ... }; sub process($t) { doit($t) } }" is it possible to inject a new multi doit() into there at runtime? 12:52
my initial research suggests not but I may be missing something 12:53
cognominal m: say $( 'a' ~~ /a/ )
camelia rakudo-moar f9056c: OUTPUT«「a」␤»
cognominal m: .say for $( 'a' ~~ /a/ )
camelia ( no output )
cognominal strange
nine lizmat: seems like I'll have to separate loading the BOOTSTRAP a bit more from normal module loading 12:56
lizmat looks good to me :-) 12:58
nine Right now it loads Perl6::BOOTSTRAP as if it was a Perl 6 module. It just works because it's already precompiled to a .moarvm file 12:59
lizmat yeah, didn't I already separate that ?
(or maybe tried to and failed :-) 13:00
nine If you already separated it a bit, I don't even want to know how tangled that was before :)
lizmat well, I removed the need for the "use bootstrap" at the beginning of the setting :-) 13:01
psch m: proto f(|c) { }; multi f (Int $) { }; &f.dispatchees.say; &f.add_dispatchee(my sub (Str $) { "Str" }); &f.dispatchees.say; say f("foo"); 13:06
camelia rakudo-moar 48570b: OUTPUT«(sub f (Int $) { #`(Sub|67822152) ... })␤(sub f (Int $) { #`(Sub|67822152) ... } sub (Str $) { #`(Sub|67822456) ... })␤Nil␤»
psch RabidGravy: ^^^ it... almost works..?
RabidGravy: i suspect i'm missing something .^compose like, i.e. refreshing a cache or somesuch
mrf m: grammar G { token foo {A**^4}}; G.parse('AA', :rule<foo>)
camelia rakudo-moar 48570b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/7exYZNKBkF␤Quantifier quantifies nothing␤at /tmp/7exYZNKBkF:1␤------> 3grammar G { token foo {A**7⏏5^4}}; G.parse('AA', :rule<foo>)␤»
mrf m: grammar G { token foo {A**0..4}}; G.parse('AA', :rule<foo>) 13:07
camelia ( no output )
13:08 grondilu left
mrf m: say ^10 13:08
camelia rakudo-moar 48570b: OUTPUT«0..^10␤»
mrf whats the correct syntax to use the ^10 range form rather than 0..10 in a token? 13:09
or am I inventing syntax again 13:10
timotimo o/
RabidGravy psch, hmm - the problem here is I want to do this to a module that I may or may not have control of
13:10 loren joined
mrf \o timotimo 13:10
timotimo TimToady++ # did everything i wanted to do to my error detection code from yesterday; and a bit more!
loren Evening, #perl6
colomon o/
flussence m: grammar G { token foo {A**0..4}; token bar {A**{^4}}}; say G.parse('AA', :rule<foo>); say G.parse('AA', :rule<bar>); 13:11
camelia rakudo-moar 48570b: OUTPUT«「AA」␤「AA」␤»
RabidGravy I think that approach would require a co-operating module to expose a sub or a method
flussence m: grammar G { token baz {A ** ^4} }; say G.parse('AA', :rule<baz>);
camelia rakudo-moar 48570b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/2U8vyv7gd6␤Quantifier quantifies nothing␤at /tmp/2U8vyv7gd6:1␤------> 3grammar G { token baz {A **7⏏5 ^4} }; say G.parse('AA', :rule<baz>);␤»