»ö« 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) |
00:00 | |
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 |
00:51 | |
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 |
00:56 | |
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/tmpfileCan't assign a Int literal (5) to a Num variable. You can try 5e0 instead or use Realat /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/tmpfileCan't assign a Num literal (5) to a Int variable. You can try 5.floor instead or use Realat /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:56 | |
02:59
Oatmeal joined
03:05
softmoth left
|
|||
dalek | kudo-star-daily: f12d49a | coke++ | log/ (8 files): today (automated commit) |
03:24 | |
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 |
03:32 | |
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 |
03:40 | |
AlexDaniel | .u ⍿ | 03:48 | |
yoleaux | U+237F VERTICAL LINE WITH MIDDLE DOT [So] (⍿) | ||
AlexDaniel | I wish every unicode symbol also had a short explanation why it was added… 🞡🞢🞣🞤🞥🞦🞧🞨🞩🞪🞫🞬🞭🞮 | 04:00 | |
04:01
vendethiel joined
|
|||
TimToady | .oO("This symbol was added because VERTICAL DOT WITH MIDDLE LINE makes no sense.") |
04:05 | |
AlexDaniel | .oO( BOLD GREEK CROSS was added because since it is commonly used in handwriting; VERY BOLD GREEK CR…… ) |
04:11 | |
oops | 04:12 | ||
masak | .u ⽏⾇⾥⿁ | ||
yoleaux | U+2F4F KANGXI RADICAL DO NOT [So] (⽏) | ||
U+2F87 KANGXI RADICAL OPPOSE [So] (⾇) | |||
U+2FA5 KANGXI RADICAL VILLAGE [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:25 | |
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 HAI42» | ||
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 |
07:22 | |
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 | ||
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/tmpfileVariable '$a' is not declaredat /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.317.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/3yGzp6lMR0Missing blockat /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.317.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 |
07:32 | |
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. |
07:34 | ||
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«heymasak» | ||
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. |
09:46 | |
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 |
10:07 | |
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:17 | |
11:20
Ven_ left
11:23
Ven_ joined
|
|||
RabidGravy | right, off to the farmers market! toodlepip! | 11:24 | |
lizmat | .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 | |
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 | |
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 | |
cygx | .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
|
|||
ShimmerFairy | .oO( sqlext ) |
12:22 | |
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 |
12:35 | |
kudo/curli: 1aaf568 | (Stefan Seifert)++ | src/core/CompUnit/Repository/FileSystem.pm: Bring back CompUnit::Repository::FileSystem::files Apparently it's being used by panda |
12:40 | ||
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 |
12:48 | |
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 | |
brb | |||
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/7exYZNKBkFQuantifier quantifies nothingat /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/2U8vyv7gd6Quantifier quantifies nothingat /tmp/2U8vyv7gd6:1------> 3grammar G { token baz {A **7⏏5 ^4} }; say G.parse('AA', :rule<baz>);» |