»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by lichtkind on 5 March 2010.
TimToady of course, *I* never make broad statements... :P 00:00
lue I'm sorry? I was compiling, and I don't understand what's going on anymore :) 00:01
jnthn Discussion got boring, so we moved to meta-discussion. ;-)
TimToady just keep compiling, it's a good excuse.
now we're on meta xx *
diakopter tries to type the next one, but can't quite .... 00:02
TimToady we would aleph at you :) 00:03
lue aleph-1? Because aleph-naught is relatively boring.
diakopter I see a couple of questions from 120m ago that are still open in my brain - masak's (and my) question about my ($a, $b --> Int) and <@sorear> diakopter: is my &:(Int --> Int) &foo = * + 1; legal? 00:04
lue has the sudden urge to set up the ability to type Hebrew
jnthn Talking of which, it's late, and I has work tomorrow, so it's time aleph-t for sleep.
TimToady wonders if ** is still aleph-0
jnthn o/
lue s/Hebrew/math symbols/
jnthn: night
TimToady \o
lue AUG! Blender (unstable) has been giving me a lot of grief during compilation involving Python, and it's use in C (or C++, I can't tell) 00:06
I really want them to switch to Perl for extensions right now :) 00:07
00:09 yinyin joined 00:10 {shade} left
lue ponders the implications of naming any program in perl6 (in /usr/bin) to ./perl6 00:10
rm "any program" 00:11
00:12 {shade} joined 00:15 ashleydev joined
lue I guess jnthn takes the voiceboxes of many as he sleeps :) 00:19
How can I force perl to explore subdirectories with this code (yes, it's P5; if a P6 version exists, I'd love it.): 00:24
/usr/bin/perl -p -i -e "s/#include <Python.h>/#include <python2.6\/Python.h>/g" source/blender/python/intern/*
00:25 ashleydev left
TimToady <@sorear> TimToady: [viv] Why did you choose to make the default emit_p5 behavior for leaf nodes unaltered passthrough instead of carping? 00:28
well, laziness, I suppose, since much of P5 and P6 are the same
and xact is sort for 'transaction' 00:30
specifically, backtracking states, really
it's probably abusing the term, but there are notions of commit and rollback flying about 00:31
[Coke] rakudo: subset Quad of Any;
p6eval rakudo 87e0e1: ( no output )
diakopter rakudo: subset Quad of Quad
p6eval rakudo 87e0e1: ( no output )
[Coke] wonders why masaks's Quad is failing in his poker example. :P 00:33
TimToady std: subset Foo of Foo; 00:34
diakopter std: subset Quad of Quad
p6eval std 30664: OUTPUT«ok 00:01 110m␤»
TimToady hmm
sort of like a self-signed certificate :)
diakopter std: subset subset of subset
p6eval std 30664: OUTPUT«ok 00:01 110m␤»
TimToady std: subset Foo of Bar; 00:35
p6eval std 30664: OUTPUT«===SORRY!===␤Confused at /tmp/cKY2o0xHxX line 1:␤------> subset Foo of ⏏Bar;␤ expecting typename␤Parse failed␤FAILED 00:01 111m␤»
TimToady std: subset Foo;
p6eval std 30664: OUTPUT«ok 00:01 110m␤»
TimToady std: subset Foo of Foo of Foo of Foo of Foo; 00:36
p6eval std 30664: OUTPUT«ok 00:01 110m␤»
TimToady hmm
[Coke] TimToady: nifty! 00:37
std: subset Foo of Bar of Foo of Bar;
p6eval std 30664: OUTPUT«===SORRY!===␤Confused at /tmp/DYUnTlKZpQ line 1:␤------> subset Foo of ⏏Bar of Foo of Bar;␤ expecting typename␤Parse failed␤FAILED 00:01 111m␤»
diakopter std: role Boo[Boo];
p6eval std 30664: OUTPUT«ok 00:01 112m␤»
TimToady "You have just swallowed your tail. Have a pleasant day, what's left of it." 00:39
.oO(Diet of Worm)
00:40
diakopter std: role role[role]
p6eval std 30664: OUTPUT«===SORRY!===␤Unable to parse role definition at /tmp/MuHtBWxcsH line 1 (EOF):␤------> role role[role]⏏<EOL>␤Parse failed␤FAILED 00:01 112m␤»
diakopter std: role role[role];
p6eval std 30664: OUTPUT«ok 00:01 112m␤»
TimToady std: 42 ~~ undef 00:50
p6eval std 30664: OUTPUT«===SORRY!===␤Unsupported use of undef as a value; in Perl 6 please use something more specific:␤ Mu (the "most undefined" type object),␤ an undefined type object such as Int,␤ Nil as an empty list,␤ :!defined as a matcher,␤ Any:U as a type
..constraint␤ or fail() as…
TimToady if something P5ish is missing from P6, the fastest way to find out what it is will generally be to try to use it anyway. :) 00:51
s/it/the new way/
s:2nd/it/the old way/ 00:52
lue rakudo: say $_ ~~ Mu #curious 00:54
p6eval rakudo 87e0e1: OUTPUT«1␤»
lue .rnd( It's annoying when _nothing_ is going on. :| ) 01:00
01:04 TiMBuS joined 01:05 snarkyboojum left
[Coke] seen masak? 01:18
[Coke] needs a bot primer for this discussion.
pugssvn r30665 | lwall++ | [S03] make more explicit that doctrine that ~~ topicalizes, and
r30665 | remove smartmatch table fossils that automatically fall out from it
[Coke] phenny: tell masak that I have a working example now of his poker code. 01:19
phenny [Coke]: I'll pass that on when masak is around.
[Coke] phenny: tell masak it's just the same code he posted earlier, though. (need some .value()s)
phenny [Coke]: I'll pass that on when masak is around.
01:19 snarkyboojum joined 01:28 xomas_ left 01:30 am0c left
quietfanatic lue: (re: question at 17:24) replace source/blender/python/intern/* with `find source/blender/python/intern` 01:31
01:34 [mark] joined 01:40 snarkyboojum left 01:45 am0c joined 01:48 Chillance left 01:49 pjcj left 01:50 pjcj joined
[Coke] are enums in rakudo mostly functional? (trying to convert some stuff that uses masak's DIY::Enum class, getting an unexpected error.) 01:50
colomon they are vaguely functional. 01:51
01:51 mariano left
colomon moritz_ and I were messing around trying to get them to work in the setting this morning. 01:52
I think they work at least a bit in user code.
not sure how fancy you can get, however.
what are you trying to do?
rakudo: enum Order (Increase => -1, Same => 0, Decrease => 1); say +Order::Increase 01:53
p6eval rakudo 87e0e1: OUTPUT«-1␤»
colomon rakudo: enum Order (Increase => -1, Same => 0, Decrease => 1); say +Increase 01:56
p6eval rakudo 87e0e1: OUTPUT«-1␤»
colomon rakudo: enum Order (Increase => -1, Same => 0, Decrease => 1); say Increase.perl
p6eval rakudo 87e0e1: OUTPUT«-1␤»
[Coke] trying to narrow down what exactly is causing the error.
ah. if I have an emum, how do you iterate over it ? Name.pick(*).eager doesn't seem to do it. 02:02
02:02 JimmyZ joined
eternaleye (re special casing ~~ .meth) I don't see why the special case was ever needed, when we have *.meth/!*.meth, as well as :meth/:!meth 02:03
02:04 pjcj left 02:06 pjcj joined
colomon rakudo: enum Order (Increase => -1, Same => 0, Decrease => 1); say Order 02:08
p6eval rakudo 87e0e1: OUTPUT«Decrease 1␤Increase -1␤Same 0␤␤»
colomon rakudo: enum Order (Increase => -1, Same => 0, Decrease => 1); for Order.keys -> $k { say $k } 02:09
p6eval rakudo 87e0e1: OUTPUT«Decrease␤Increase␤Same␤»
colomon rakudo: enum Order (Increase => -1, Same => 0, Decrease => 1); for Order -> $k, $v { say $k }
p6eval rakudo 87e0e1: OUTPUT«StopIteration␤current instr.: '_block25' pc 29 (EVAL_2:0)␤»
colomon huh.
I need to go to bed, but those evals seem like they might both have a bug and a clue for a workaround. :) 02:10
[Coke] rakudo: enum FOO <A B>; say FOO.enums.perl
p6eval rakudo 87e0e1: OUTPUT«Method 'enums' not found for invocant of class 'EnumMap'␤current instr.: '_block18' pc 29 (EVAL_2:0)␤»
colomon rakudo: enum Order (Increase => -1, Same => 0, Decrease => 1); say Order.perl
p6eval rakudo 87e0e1: OUTPUT«{"Decrease" => 1, "Increase" => -1, "Same" => 0}␤»
02:19 colomon left 02:21 alester joined 02:42 quietfanatic left 02:53 am0c left
[Coke] rakudo: my @a = <1 2 3> ; my @b =<a b c>; say @a X @b; 02:59
p6eval rakudo 87e0e1: OUTPUT«1 a1 b1 c2 a2 b2 c3 a3 b3 c␤»
03:00 masonkramer left, masonkramer joined
[Coke] rakudo: my @a = <1 2 3> ; my @b =<a b c>; say (@a X @b); 03:01
p6eval rakudo 87e0e1: OUTPUT«1 a1 b1 c2 a2 b2 c3 a3 b3 c␤»
sorear odd spacing. 03:02
[Coke] rakudo: my @a = <1 2 3> ; my @b =<a b c>; say (@a X @b).perl; 03:04
p6eval rakudo 87e0e1: OUTPUT«("1", "a", "1", "b", "1", "c", "2", "a", "2", "b", "2", "c", "3", "a", "3", "b", "3", "c")␤»
[Coke] how to get that as a list of 2-at-a-time?
03:05 pjcj left
sorear I think it's supposed to be 2-at-a-time 03:05
slicels are weird in rakudo now
rakudo: say <a b c d e f>.map({ $^a => $^b }).perl
p6eval rakudo 87e0e1: OUTPUT«Lexical '$a' not found␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
sorear rakudo: say <a b c d e f>.map(-> $a, $b { $a => $b }).perl 03:06
p6eval rakudo 87e0e1: OUTPUT«("a" => "b", "c" => "d", "e" => "f")␤»
sorear that might do
is the first one a bug?
[Coke] rakudo: my @a = <1 2 3> ; my @b =<a b c>; say (@a X @b).map(-> $a, $b { $a => $b}).perl 03:08
p6eval rakudo 87e0e1: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤current instr.: '_block62' pc 462 (EVAL_1:1782836685)␤»
[Coke] rakudo: my @a = <1 2 3> ; my @b =<a b c>; say (@a X @b).perl.map(-> $a, $b { $a => $b}).perl
p6eval rakudo 87e0e1: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤current instr.: '_block64' pc 474 (EVAL_1:25378415)␤» 03:09
sorear .perl produces a string
[Coke] rakudo: my @a = <1 2 3> ; my @b =<a b c>; (@a X @b).map(-> $a, $b { $a => $b }).say 03:10
p6eval rakudo 87e0e1: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤current instr.: '_block62' pc 451 (EVAL_1:25374860)␤»
[Coke] rakudo: my @a = <1 2 3> ; my @b =<a b c>; say (@a X @b).map(-> $a, $b { $a => $b }) 03:11
p6eval rakudo 87e0e1: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤current instr.: '_block62' pc 450 (EVAL_1:26665595)␤»
[Coke] ARGh. 03:24
03:26 buffalo2010 joined 03:31 molaf joined 03:34 quietfanatic joined
quietfanatic rakudo: subset IntStr where Int | Str; proto x (IntStr $x) {say 'a'}; multi x (Int $x) {say 'b'}; multi x (Str $x) {say 'c'}; x(4); 03:35
p6eval rakudo 87e0e1: OUTPUT«b␤»
quietfanatic rakudo: subset IntStr where Int | Str; proto x (IntStr $x) {say 'a'}; multi x (Int $x) {say 'b'}; multi x (Str $x) {say 'c'}; x("a");
p6eval rakudo 87e0e1: OUTPUT«c␤»
03:44 ashleydev joined 03:47 ashleydev left
eternaleye [Coke]: The spacing is because say takes a list argument, stringifies each element, and prints the stringifications with no separator. Thus, each element in the top level list is a two element list itself. The stringification of the two element list includes a space, so the spacing you observed is the result. 03:48
Also, this is simpler than the map: 03:49
quietfanatic rakudo: multi x (Int $x) {...}; (multi x (Str $x) {...}).candidates>>.signature>>.perl>>.say
p6eval rakudo 87e0e1: OUTPUT«:(Int $x)␤:(Str $x)␤»
eternaleye rakudo: my @a = <1 2 3> ; my @b =<a b c>; say (@a X=> @b).perl
p6eval rakudo 87e0e1: OUTPUT«("1" => "a", "1" => "b", "1" => "c", "2" => "a", "2" => "b", "2" => "c", "3" => "a", "3" => "b", "3" => "c")␤»
eternaleye [Coke]: X is not only an op, it's also a metaop
quietfanatic Why is the return of the second multi declaration the whole multisub, rather than the individual one? 03:50
eternaleye quietfanatic: Not sure, but >>.say doesn't do what you think it does. While the return values of a hyper will be in order, the _execution_ order is undefined, possibly random, and potentially parallel. So it may say each element in anyt order, not the list's order 03:51
quietfanatic No, I mean the return value of (multi x (...) {...}) 03:52
eternaleye quietfanatic: Hence the 'not sure, but...'
quietfanatic should be only the one candidate, rather than all of the candidates.
I have the >>. ops okay.
Oh, and yeah
eternaleye And I think the return value is a Perl6MultiSub, which contains all of the candidates 03:53
quietfanatic I realize it's supposed to be hyper. I don't need it to be ordered.
[Coke] X=> ahh.
eternaleye rakudo: multi x (Int $x) {...}; (multi x (Str $x) {...}).WHAT
p6eval rakudo 87e0e1: ( no output )
eternaleye rakudo: multi x (Int $x) {...}; say (multi x (Str $x) {...}).WHAT
p6eval rakudo 87e0e1: OUTPUT«Multi()␤»
quietfanatic The return value /ought/ to be just the one sub.
eternaleye rakudo: multi x (Int $x) {...}; say (multi x (Str $x) {...}).PARROT
p6eval rakudo 87e0e1: OUTPUT«Perl6MultiSub␤»
quietfanatic or so says TimToady, who I've asked.
I'll submit this as a bug then. 03:54
eternaleye rakudo: my @a = <1 2 3> ; my @b =<a b c>; say (@a X @b).slice.perl
p6eval rakudo 87e0e1: OUTPUT«Method 'slice' not found for invocant of class 'GatherIterator'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
eternaleye rakudo: my @a = <1 2 3> ; my @b =<a b c>; say (@a X @b).slicel.perl
p6eval rakudo 87e0e1: OUTPUT«Method 'slicel' not found for invocant of class 'GatherIterator'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
eternaleye rakudo: my @a = <1 2 3> ; my @b =<a b c>; say (@@(@a X @b)).perl
p6eval rakudo 87e0e1: OUTPUT«Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 11␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1696 (ext/nqp-rx/src/stage0/Regex-s0.pir:932)␤»
eternaleye rakudo: my @a = <1 2 3> ; my @b =<a b c>; say (||(@a X @b)).perl 03:55
p6eval rakudo 87e0e1: OUTPUT«Capture.new()␤»
eternaleye 0.o
quietfanatic I think prefix:<|> is supposed to coerce to a capture, so that's right
except of course that .perl ought to introspect it.
eternaleye quietfanatic: Yes, but not an _empty_ capture
03:56 justatheory left
quietfanatic rakudo: my @a = <1 2 3> ; my @b =<a b c>; say (||(@a X @b))[0] 03:56
p6eval rakudo 87e0e1: OUTPUT«Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
quietfanatic rakudo: my @a = <1 2 3> ; my @b =<a b c>; say (|(@a X @b))[0]
p6eval rakudo 87e0e1: OUTPUT«Null PMC access in type()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
eternaleye phenny: tell masak: is irclog.perlgeek.de/perl6/2010-05-17#i_2337529 and subsequent a bug? 03:57
phenny eternaleye: I'll pass that on when masak is around.
quietfanatic rakudo: my @a = <1 2 3> ; my @b =<a b c>; (-> (*@x) {say @_}).(|(@a X @b))
p6eval rakudo 87e0e1: OUTPUT«Placeholder variable cannot override existing signature at line 11, near ").(|(@a X "␤current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)␤»
quietfanatic rakudo: my @a = <1 2 3> ; my @b =<a b c>; (-> (*@x) {say @x}).(|(@a X @b))
p6eval rakudo 87e0e1: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤current instr.: '_block58' pc 467 (EVAL_1:33647942)␤»
quietfanatic rakudo: my @a = <1 2 3> ; my @b =<a b c>; (-> *@x {say @x}).(|(@a X @b))
p6eval rakudo 87e0e1: OUTPUT«␤»
quietfanatic I see, the capture is empty.
eternaleye quietfanatic: Also, while |(...) flattens, ||(...) slice-ifies 03:58
quietfanatic rakudo: my @a = <1 2 3> ; my @b =<a b c>; (-> *@x {say @x}).(||(@a X @b))
p6eval rakudo 87e0e1: OUTPUT«␤»
quietfanatic Ah. I was not up to date then.
03:59 agentzh joined
eternaleye quietfanatic: Also, like |@foo in calls matches *@foo in signatures, ||@foo matches **foo in signatures 04:00
erm, **@foo
quietfanatic Ah, I didn't even know there was a **@foo now
04:01 Targhan left
eternaleye Yep, for slurpy slicels. It changed from @@foo 04:01
Erm, *@@foo
I need caffeine
[Coke] rakudo: enum Foo <a b c>; enum Bar <1 2 3> ; say (Foo.keys X=> Bar.keys).perl
p6eval rakudo 87e0e1: OUTPUT«()␤»
04:02 kulp left
[Coke] rakudo: my $Foo = <a b c>; my $Bar = <1 2 3> ; say (Foo X=> Bar).perl 04:07
p6eval rakudo 87e0e1: OUTPUT«Could not find sub &Bar␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
[Coke] rakudo: my $Foo = <a b c>; my $Bar = <1 2 3> ; say ($Foo X=> $Bar).perl
p6eval rakudo 87e0e1: OUTPUT«("a" => "1", "a" => "2", "a" => "3", "b" => "1", "b" => "2", "b" => "3", "c" => "1", "c" => "2", "c" => "3")␤»
[Coke] Should the enum case also work? 04:09
eternaleye Probably, but I don't think they're fully implemented yet 04:10
rakudo: my constant Foo = <a b c>; my constant Bar = <1 2 3>; say (Foo X=> Bar).perl 04:11
p6eval rakudo 87e0e1: OUTPUT«Malformed my at line 11, near "constant F"␤current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)␤»
eternaleye rakudo: constant Foo = <a b c>; constant Bar = <1 2 3>; say (Foo X=> Bar).perl
p6eval rakudo 87e0e1: OUTPUT«Could not find sub &Foo␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
[Coke] gives up an falls back on masak's DIY::Enum class. 04:12
lue Is there some cool perl way to search for files that don't have string 'xyz' and then put 'xyz' in there? [searching] 04:20
sorear where would you put it?
lue in each file w/o that string (inplace editing) 04:21
jql you mean something like for i in `find . -type f | xargs grep -l xyz`; do echo xyz >> $i; done ? 04:22
lue I can search for a string in a directory of files, and then do a substitution.
I don't know how to get a list of files *without* a certain term.
( some "person" forgot to put needed #include lines in a bunch of c files :( ) 04:23
jql perhaps xargs grep -L xyz ?
lue that's a good start! 04:24
lue goes googling for "files without match" one liners 04:25
hopefully I get out of this hole soon, or I'll have to write a whole perl script file to make it easier on myself! Thank you everyone! 04:27
04:38 molaf left 04:49 snarkyboojum joined 04:54 kaare joined, kaare is now known as Guest21702 04:57 pencilk joined 05:03 pencilk left 05:04 xinming_ joined 05:07 [Coke] left, xinming left 05:14 [Coke] joined, mberends joined 05:16 alester left 05:20 pencilk joined 05:23 quietfanatic left 05:31 snarkyboojum left 05:52 pencilk left 05:59 finanalyst joined 06:05 spinclad left
finanalyst rakudo: my @x=10,NaN,8,18; say @x.comb(/\d+/).min; say @x.comb(/\d+/).max 06:07
p6eval rakudo 87e0e1: OUTPUT«10␤8␤»
finanalyst Can anyone tell me how to get min and max in above to compare numified matches?
moritz_ ».Numeric.max 06:08
alpha: rakudo: my @x=10,NaN,8,18; say @x.comb(/\d+/)».Num.min 06:09
p6eval alpha 30e0ed: OUTPUT«Confused at line 10, near ": my @x=10"␤in Main (file <unknown>, line <unknown>)␤»
moritz_ alpha: my @x=10,NaN,8,18; say @x.comb(/\d+/)».Num.min
p6eval alpha 30e0ed: OUTPUT«Method 'Num' not found for invocant of class 'Str'␤in Main (file src/gen_setting.pm, line 324)␤»
moritz_ rakudo: my @x=10,NaN,8,18; say @x.comb(/\d+/).map({+$_}).min 06:10
p6eval rakudo 87e0e1: OUTPUT«8␤»
moritz_ rakudo: my @x=10,NaN,8,18; say @x.comb(/\d+/).min({$^a <=> $^b}) 06:11
p6eval rakudo 87e0e1: OUTPUT«8␤»
finanalyst oh good. hypotheticals are working
i think $^ == hypotheticals 06:12
moritz_: good morning. Are $^a etc working in all contexts? 06:13
moritz_ not hypothetical 06:14
formal parameters
06:15 uniejo joined
finanalyst it seems formal parameters are now working again. 06:16
rakudo: my @x=1,2,3,4,5,6,7,8; my %h= map {1; $^y => $^x },@x; say %h.perl
06:16 spinclad joined
p6eval rakudo 87e0e1: OUTPUT«{"2" => 1, "4" => 3, "6" => 5, "8" => 7}␤» 06:16
06:25 Su-Shee joined 06:35 mantovani left 06:36 mantovani joined 06:37 iblechbot joined
moritz_ does anybody else get passing TODOs in inifinity.t and nan.t? 06:38
06:46 Grrrr left 07:00 Grrrr joined 07:05 am0c joined 07:08 BrowserUk joined 07:12 lest_away is now known as lestrrat 07:33 finanalyst left 07:34 kaare joined, Guest21702 left, uniejo left 07:35 kaare is now known as Guest98590 07:44 constant left 07:45 plobsing left 07:47 buffalo2010 left 07:48 uniejo joined 07:49 constant joined, constant left, constant joined 08:01 meppl joined 08:25 am0c left, am0c joined 08:37 envi^home joined 08:45 lestrrat is now known as lest_away 08:53 mj41 left 09:03 Trashlord joined 09:12 viklund joined 09:25 snarkyboojum joined
jnthn morning 09:39
moritz_ o/ 09:40
09:42 yinyin left
mberends o/ jnthn 09:48
jnthn mberends: o/ 09:49
10:10 TiMBuS left 10:15 am0c left 10:21 colomon joined 10:39 JimmyZ left 10:40 agentzh left 10:41 lest_away is now known as lestrrat 10:42 am0c joined 10:50 mj41 joined 10:52 am0c left 10:53 k23z__ joined 10:55 mj41 left, viklund left, Su-Shee left, meteorjay left, eternaleye left, PerlJam left, arnsholt left, hejki left, jotr^outtahere left 10:56 arnsholt joined, mj41 joined 10:58 eternaleye joined, hejki joined, PerlJam joined 10:59 viklund joined, Su-Shee joined, meteorjay joined, jotr^outtahere joined 11:07 finanalyst joined 11:19 proller left
colomon moritz_: ping? 11:24
11:31 proller joined
moritz_ colomon: pong 11:31
(back from nom) 11:32
11:38 ruoso joined, JimmyZ joined
moritz_
.oO( ping timeout >)
11:43
colomon moritz_: I suggested adding subst functionality as a possible newcomer project. 11:58
Thoughts? I think we just ought to go ahead and implement it ourselves if we don't make it a challenge this week or maybe next.
moritz_ colomon: which subst functionality are you thinking of? 11:59
I like the idea
colomon I don't remember where I found it in the spec now.
but I think there is :nth 12:00
and :c
moritz_ S05
colomon Ah, I was there, but I did a search for sdubst
:)
moritz_ perlcabal.org/syn/S05.html#Modifiers 12:01
colomon actually, as far as I know, it doesn't support :i or :a yet either.
moritz_ :i is tricky 12:02
because you have to modify the regex after it was compiled
but :nth would be a good idea
rakudo: say 'abcdef'.subst(/./, 'O', :x(3))
p6eval rakudo 87e0e1: OUTPUT«OOOdef␤»
moritz_ colomon: could you write up the proposal? 12:03
colomon think I can find time here.
moritz_ great 12:04
12:04 TiMBuS joined
colomon Now trying to figure out how much of this stuff is practical. 12:05
moritz_ just one, I'd say 12:06
having it interact with :x() is already sufficiently complicated
colomon just :nth? 12:07
moritz_ just :nth
colomon okay, I'll take a look at your previous ones in a minute and see what I can come up with.
moritz_ (maybe plus tests, if there aren't any good ones yet) 12:13
12:13 orafu left
moritz_ rakudo: say 'abc'.subst(/./, 'O', :x(3)) 12:13
p6eval rakudo 87e0e1: OUTPUT«OOO␤»
12:13 orafu joined
moritz_ that's wrong, according to the specs 12:13
colomon how so/ 12:14
moritz_ but I don't really know if the current spec makes sense and is practical
colomon ?
moritz_ "except that the string is unchanged unless all four matches are found"
colomon
.oO(must admit I find this section of the specs a bit wonky)
but you did three
rakudo: say 'abc'.subst(/./, 'O', :x(4))
p6eval rakudo 87e0e1: OUTPUT«abc␤» 12:15
moritz_ oh
moritz_ can't count
colomon still seems like an amazing amount of magic is being packed into .subst
rakudo: say 'abc'.subst(/./, 'O', :x(2..5)) 12:16
p6eval rakudo 87e0e1: OUTPUT«abc␤»
colomon that's wrong, for sure.
pmichaud in general, .subst wants to be written in terms of .match 12:18
phenny pmichaud: 16 May 23:07Z <bkeeler> tell pmichaud if you're in a reviewing mood, there's now a 'regex-interpolation' branch in nqp-rx
moritz_ this is going to be such a pain
pmichaud good morning, #perl6
colomon o/
moritz_ pmichaud: then .match should be extended to allow string patterns (and not regexes) 12:19
otherwise it's going to be a PITA to implement
because .subst allows both
pmichaud I wouldn't have an issue with that. 12:20
colomon other problem here is that subst is implemented in terms of .split (which is implemented in terms of .match)
pmichaud ...why is .subst implemented in terms of split? that seems very wrongish
moritz_ pmichaud: is there a simplish way to compile a regex that does a literal match?
colomon pmichaud: you split on all the matches, keeping the matches, then change the matches and rejoin. 12:21
moritz_ pmichaud: because .split() does a bit of pre-work that early versions of .subst need
pmichaud does split take :x, and :n, and the like?
colomon it's a very natural way of implementing it.
moritz_ including matching constant substrings
colomon pmichaud: don't think so, .subst seems to implement :x directly. 12:22
moritz_ but I agree that .subst should use .match more directly
colomon and there is no :nth yet.
pmichaud .match takes :x, :n, etc.
which is why it's more natural to use it
also, .match takes :g, like split
sorry, like subst
it's _very_ natural to write .subst in terms of .match
moritz_ so 12:23
the best way forward would be implement .match with literal strings
and then .subst in terms of .match 12:24
colomon and forget about :nth as a challenge.
pmichaud :nth isn't really that hard either. alpha did it.
(iirc)
moritz_ colomon: or do that change today, and make :nth a challenge tomorrow
colomon pmichaud: challenge in the sense of one of moritz_'s newcomer challenges 12:25
pmichaud at any rate, .split in terms of .match is the way that nqp-setting works
12:25 moritz_ sets mode: +o colomon
colomon ie something easy enough a newbie can do it. 12:25
pmichaud and you can see that it's really pretty straightforward
basically, call match, then replace each of the returned match objects with the replacement
colomon for what it's worth, match doesn't appear to support :x or :n (:nth?) yet
moritz_ nqp: say(join(';', split('ab', 'cabcabd'))) 12:26
p6eval nqp: OUTPUT«Could not find sub split␤current instr.: '_block11' pc 0 (EVAL_1:4)␤»
12:26 [mark] left
colomon afk # diaper 12:26
pmichaud sorry, .subst is implemented in terms of .match
(I typoed above)
also note that nqp-setting isn't loaded automatically
we need to change the name, because people seem to assume that it is
moritz_ stdlib 12:27
pmichaud colomon: S05:3726 mentions that repeated matches can have the :x flag 12:28
colomon pmichaud: I'm not talking theory, I'm talking code.... 12:34
significant work is required on .match before it can do what .subst already does. 12:35
unless there's something I'm missing here....
mberends hmm, when PERL6LIB is used to define new module search directories, they are appended behind the predefined ones. During module development, it would be useful to have the local directories before the predefined ones, otherwise the installed modules get used instead of the local ones. Is it ok if I change the order? 12:37
moritz_ +1 from me 12:38
mberends thanks, just hoping this does not ignore some other conceptual idea 12:39
12:43 szabgab left
pmichaud colomon: we'll have to have significant work on .match anyway, then 12:43
colomon pmichaud: sure enough.
Su-Shee so using Roles properly.. Would my Member class do Creation (Role to create a new Member) and do Change and do Deletion? 12:46
moritz_ I'd consider Creation basic enough not put it in a role, but in class itself... unless you're doing something very fancy in there 12:47
Su-Shee hm. same with Deletion and Change? 12:49
colomon moritz_: perhaps the challenge for this week should be to do better tests for .match? I don't see any sign that :x or :nth are tested there yet... 12:50
pmichaud :x, :nth, :g are the major ones
hugme hugs pmichaud, good vi(m) user!
pmichaud also :overlap, ;exhaustive 12:51
moritz_ colomon: +1
colomon I'm not quite sure where the tests should go -- just that we don't implement the features yet, and don't appear to have nearly enough skips in S05-match to account for them! 12:52
pmichaud has anyone tried building Rakudo on parrot trunk lately? We should probably do that since Parrot release is tomorrow 12:56
jnthn pmichaud: I'm working on $dayjob atm, but can set off a build / test run on latest Parrot trunk in the background.
jnthn does so
pmichaud and colomon++ is our most esteemed Release Manager this month. \o/ 12:57
colomon and starting to get nervous about it. :)
moritz_ pmichaud: did so yesterday, worked just fine...
pmichaud nothing to be nervous about UNLESS YOU SCREW IT UP. :-P :-P 12:58
moritz_ pmichaud: apart from the occasional non-zero exist status, and the occasional segfault that I've already reported to the parrot people
pmichaud moritz_: excellent, glad you're keeping us up-to-date
colomon: picked a release name yet? 12:59
colomon woah, we basically have no tests for .match at all! just 5 total.
pmichaud: no, and that's probably the hard part, isn't it? ;)
pmichaud colomon: it often is, yes.
moritz_ colomon: that's easy, you can name Erlangen.pm
colomon: after my home .pm group where I held a Perl 6 talk this month
colomon sounds good to me. any objections? 13:00
pmichaud wfm
here in Dallas we have a Perl 6 meeting every month
although it's not actually held in Dallas :-P
moritz_ did we alrady have a Dallas.pm release? 13:01
13:02 jhuni left, patrickas joined
pmichaud no, not yet 13:02
but the Dallas folks haven't felt like they're ready for a Dallas.pm release :-) 13:03
in fact, there's not really an official Dallas.pm yet -- it's DFW.pm
and there hasn't been a meeting of DFW.pm in a very very long time
13:04 Guest98590 left 13:09 plobsing joined, hatseflats joined, pnu left 13:10 JimmyZ left, hatseflats left, hatseflats joined 13:11 pnu joined
colomon wow. S05-modifier has ~24 test files. 13:15
spectest.data only lists five of them.
and all five are commented out.
Am I correct in thinking we should be testing .match as well as m// ? 13:18
moritz_ yeas
s/a//
[Coke] thinks parrot actually has a bunch of match-like tests that PGE used, fwiw. 13:19
13:20 molaf joined
colomon we've also got hundreds (thousands?) of m// tests, many of them very turned off. 13:20
rakudo: "hello world" ~~ m:x(3)/o/ 13:21
p6eval rakudo 87e0e1: OUTPUT«Confused at line 11, near "\"hello wor"␤current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)␤»
moritz_ quoting adverbs are NYI
my naive attempts to implement them have failed while trying to parse the setting
13:25 XaeroOne joined 13:30 hirschnase joined 13:32 viklund left
lisppaste3 colomon pasted "draft of this week's contribution to perl 6" at paste.lisp.org/display/99336 13:40
moritz_ colomon: it's nice, but it's too abstract 13:42
"create tests for"
what kind of tests?
more concrete would be
tests @these modifiers 13:43
with a simple string and regex
and have for each (combination of) modifier(s) at least one test for matching, and one for non-matching
colomon I was thinking more in terms of translating the exist tests to the new form. 13:44
13:44 uniejo left
colomon though I meant to include an example, I admit. 13:44
moritz_ ok
then be specific about the file names, for example
(don't worry about HTML escaping code snippets, my blog has a shortcut for that) 13:45
colomon crap, this section of the spectest is a horrible mess.
we don't really have any :g tests as far as I can see, which is a shame, as that is a simple example.
Su-Shee I hereby petition for the removal of Roles. they're confusing me. ;) 13:46
moritz_ petition rejected. 13:47
wow, that was fast :-)
13:47 rv2733 joined
colomon rakudo: "hello world".match(/o/); say $/ 13:47
p6eval rakudo 87e0e1: OUTPUT«Any()␤»
colomon rakudo: say "hello world".match(/o/); 13:48
p6eval rakudo 87e0e1: OUTPUT«o␤»
13:49 isBEKaml joined
isBEKaml hello, #perl6! 13:50
colomon \o
isBEKaml what's news? (yeah, I'm looking at backlogs. :) ) 13:51
13:51 XaeroOne left
colomon moritz_: I think the tests may be so badly broken that this is a bad challenge. :( 13:52
moritz_ :(
colomon the :x tests (in S05-modifier/counted.t) for instance, appear to be all wrong to me. 13:53
isBEKaml colomon: challenge? Is there ever one? :)
13:53 Trashlord left
colomon isBEKaml: we're talking about moritz_'s "This Week's Contribution to Perl 6" series. 13:54
I proposed one and wrote it up, but I'm now thinking it's too nebulous and hard.
isBEKaml colomon: hmm, I don't see it on moritz_'s blog...
colomon paste.lisp.org/display/99336 13:55
we hadn't gotten to the stage of actually blogging it yet.
13:55 Trashlord joined
isBEKaml last week, it was just one. This week it evolved into a lot! 13:56
I was actually thinking I could, maybe, try to port some already ported module just for kicks (+ learnings) 13:57
I find it hard to sit around with the synopses. 13:58
colomon isBEKaml: me too. 13:59
too much detail unless you're actively looking for that detail.
jnthn Same. They take up the WHOLE sofa after I print them out.
;-)
isBEKaml jnthn: wasting the ink needlessly.. ;) 14:00
14:00 SmokeMachine joined
isBEKaml colomon: match is too much functionality for a single challenge. And, you're right, it's nebulous. 14:01
colomon: It's not just about running the same set of tests as in ~~m, right? 14:02
colomon well, it is, sort of.
but they need to be rewritten to work as match tests.
the bigger problem is that almost none of these tests work at the moment. 14:03
isBEKaml wow, you got trouble enough not to trouble the newbie challenge warrior. ;)
colomon I wouldn't be surprised if getting m// and match working fully with a reasonably full test suite will get us another thousand working tests.
moritz_ both can take huge numbers of combinations of modifiers 14:04
colomon moritz_: is there some reason I'm not seeing, or is getting match to work on Str as simple as wrapping the Str in //
I don't even think we're close to having tests for the combinations yet! 14:05
isBEKaml moritz_: that was what I was thinking when I said too much functionality for a single challenge.
moritz_ colomon: you're right - I forgot that variable interpolation was working in regexes
colomon isBEKaml: I was anticipating that multiple people might tackle it, and tackle different aspects of the problem.
rakudo: my $a = "o"; say "hello world".match(/$a/) 14:06
p6eval rakudo 87e0e1: OUTPUT«␤»
colomon or does it?
that can't be the syntax, can it? 14:07
rakudo: my $a = "o"; say "hello world".match(/{$a}/)
p6eval rakudo 87e0e1: OUTPUT«␤»
colomon rakudo: my $a = "o"; say "hello world".match(rx/{$a}/) 14:08
p6eval rakudo 87e0e1: OUTPUT«␤»
moritz_ rakudo: my $x = 'o'; say 'hello' ~~ /$x/
p6eval rakudo 87e0e1: OUTPUT«␤»
moritz_ not working
14:08 PacoLinux joined
colomon wait, interpolation wouldn't work anyway, would it? 14:09
special characters have to be escaped, etc.
moritz_ that's part of the new (non-)interpolation
it's not first interpolated and then compiled, but rather handed as a variable to the regex engine
which takes a non-regex variable as a literal 14:10
isBEKaml what does this mean ~~ ?
14:10 rgrau joined
isBEKaml rakudo: my $a = 'o'; my $match = "hello world"; say $match ~~ $a; 14:11
p6eval rakudo 87e0e1: OUTPUT«0␤»
isBEKaml rakudo: my $a = 'o'; my $match = "hello world"; say $match ~~ /$a/;
p6eval rakudo 87e0e1: OUTPUT«␤»
isBEKaml :(
colomon isBEKaml: smartmatch with a string is just string equality, I think.
isBEKaml rakudo: my $a = 'o'; my $match = "hello world"; say $match ~~ /$match/; 14:12
p6eval rakudo 87e0e1: OUTPUT«␤»
isBEKaml rakudo: my $a = 'o'; my $match = "hello world"; say $match ~~ $match;
p6eval rakudo 87e0e1: OUTPUT«1␤»
isBEKaml colomon: sounds like you're right. Don't they take regexes in // ?
14:13 iblechbot left
isBEKaml btw, what equivalent do we have for $str =~ /$pattern/ as in p5? 14:13
14:14 jaffa4 joined
isBEKaml rakudo: my $pattern="o"; my $str="hello world"; say $str =~ /$pattern/; 14:14
p6eval rakudo 87e0e1: OUTPUT«Unsupported use of =~ to do pattern matching; in Perl 6 please use ~~ at line 11, near " /$pattern"␤current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)␤»
isBEKaml rakudo: my $pattern="o"; my $str="hello world"; say $str.match('o'); 14:17
p6eval rakudo 87e0e1: OUTPUT«No applicable candidates found to dispatch to for 'match'. Available candidates are:␤:(Mu : Regex $pat, Any :c($c) = { ... }, Any :g($g);; *%_)␤␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
isBEKaml rakudo: my $pattern="o"; my $str="hello world"; say $str.match(/o/);
p6eval rakudo 87e0e1: OUTPUT«o␤»
isBEKaml variable interpolation doesn't work in // ?
colomon isBEKaml: that's what moritz_ and I were trying to figure out.
isBEKaml oh.. 14:18
jnthn bkeeler++ recently sent in an updated patch to get it working, iirc. It's just waiting on review from pmichaud++ now. :-)
moritz_ speaking of review... 14:19
isBEKaml Ah, I see it now.. nqp-rx's regex interpolation branch..
moritz_ jnthn: do you have a chance to look at the mob4 branch? 14:20
14:20 patspam joined
jnthn moritz_: No, not yet. I had some tuits yesterday, but spent them reviewing/doing some bits on book instead. 14:20
moritz_ ok
jnthn moritz_: Should have more tuits this evening though. :-)
moritz_ jnthn: ok
14:20 TiMBuS left
moritz_ the last commit adds cheating methods in the vtables - trying to have those actually call .'postcircumfix:<{ }>' is what leads to infinite loops 14:23
isBEKaml moritz_: the style changes I made for u4x docs would work only on firefox(especially those rounded borders). Feel free to spruce them up for other browsers. I can't do them here since I don't have anything other than firefox. :( 14:27
gack... s/work (only)/look nice $1/ 14:28
moritz_ that's ok; others will chime in if their favourite browser doesn't produce nice output
isBEKaml no problem on text only browsers, though. ;) 14:29
colomon moritz_: just started a simple test file for match(//, :g) 14:36
it miserably fails my first simple test.
I think it may be borked.
rakudo: "hello world".match(/.o/, :g).perl.say
p6eval rakudo 87e0e1: OUTPUT«Method 'perl' not found for invocant of class 'Regex;Match'␤current instr.: 'perl6;Iterator;_block16114' pc 471375 (src/gen/core.pir:64441)␤»
colomon rakudo: ("hello world".match(/.o/, :g)>>.Str).say 14:37
p6eval rakudo 87e0e1: OUTPUT«wo␤»
colomon rakudo: "hello world".match(/.o/, :g).elems
p6eval rakudo 87e0e1: ( no output )
colomon rakudo: +("hello world".match(/.o/, :g))
p6eval rakudo 87e0e1: ( no output )
colomon rakudo: "hello world".match(/.o/, :g).elems.say
p6eval rakudo 87e0e1: OUTPUT«2␤»
moritz_ so the first match disappears? 14:38
colomon take issue
I'm testing a fix now.
isBEKaml colomon: gatheriterators are fixed? I mean, their fragile behaviour of outputting next iteration on their single call?
moritz_ take my $m = ...;
isBEKaml: don't think so
isBEKaml colomon: that is, GatherIterator.perl puts out the first element and say doesn't find any.. 14:39
colomon key point here is it probably never worked post-alpha.
serious testing failure.
14:40 XaeroOne joined
colomon isBEKaml: gather iterators are still the same, but that's okay, perl should consume them and leave a string for say. 14:40
(test passes, check-ins soon.)
well, post spec test.
isBEKaml colomon: ok
pugssvn r30666 | colomon++ | [t/spec] First simple tests for match's :g functionality. 14:43
14:45 ashleydev joined
jnthn Rakudo on latest Parrot appears to have some new test failures. 14:46
Worth somebody else checking.
Oh ouch 14:47
And it hangs during the integration tests.
moritz_ trying now
colomon building on linux box...
jnthn Fails in pick.t, Date.t, and 99-problems is the source of some fails + the hangs (two of them hang, it seems). 14:48
colomon pick.t? that seems like an odd one to fail... 14:49
moritz_ so is Date.t
jnthn series-arity0.t also seems to have some
t\spec\S03-operators\series-arity0.t
Failed: 4)
Failed tests: 5, 7-8, 10
colomon :\
14:50 ashleydev left
moritz_ jnthn: please email the test results to parrot-dev (asks whitenight, the release manager for tomorrow) 14:51
14:52 ash_ joined
colomon jnthn: on my 64-bit linux box, series-arity0.t works fine. 14:56
pick.t seems fine as well.
parrot revision 46739? 14:57
jnthn I had 46737 14:58
colomon worth trying the update, maybe? 14:59
colomon decides it might be time to pay himself this month...
15:00 masonkramer left
jnthn colomon: Will try; will also nuke my Parrot tree 15:00
15:00 masonkramer joined 15:01 plobsing left
moritz_ Date.t passed here 15:01
15:01 hirschnase left
jnthn Oddness 15:01
Hopefully a clean Parrot at the later revision does it. 15:02
colomon hope++ 15:04
15:04 molaf left
jnthn change++ 15:05
oh, wait, the election campaign is over
:-)
colomon change is scary.
Su-Shee fuckshit, roles are cool. :)
mberends Su-Shee.flip()
ash_ do you guys need another person to try these tests?
isBEKaml change is the only constant :) 15:06
colomon jnthn: any chance you could hook up the modifiers to m// and s// if "we" got them working in .match and .subst?
Su-Shee mberends: I'm short before hysteria and wrote like 6 versions in one day :) (in 5 _and_ 6 :)
colomon ash_: we've got three people on it already, so probably not.
jnthn colomon: I can't certainly try.
moritz_ Result: PASS 15:07
jnthn 64?
moritz_ parrot r46738 on 64bit linux
isBEKaml guys, I got 32 bit linux, can I help? 15:08
jnthn heh, I'm the 32-bitter amongst us. :-)
isBEKaml: Don't worry just yet.
If I get another pile of fail, then could be interesting for someone else on 32-bit to try though.
isBEKaml jnthn: Ah, cool. I can wait.
jnthn needs a break from his locking/timing/threading debugging 15:09
walk, bbiab
15:11 k23z__ left 15:12 molaf joined 15:13 molaf left, pmurias joined
colomon my 64-bit linux spectest run on latest parrot actually comes back PASS with two todo's passing. 15:15
15:16 molaf joined
dalek kudo: 96fbd6f | (Solomon Foster)++ | t/spectest.data:
Turn on the new S05-modifier/global.t.
15:19
kudo: ec37acc | (Solomon Foster)++ | src/core/Cool-str.pm:
In .match's global path, copy the match variable, then call "take" with the
15:23 am0c joined 15:24 pencilk joined
[Coke] wishes we had a CABBAGE_PATCH. 15:28
15:31 finanalyst left
pmurias diakopter: hi 15:33
15:33 ashleydev joined 15:34 pencilk left 15:39 elmex left
jnthn grr 15:39
No, fails here again :-(
colomon that's with the even more updated parrot?
jnthn Same two integration tests hung too. Up to 650 MB a piece before I just killed them. 15:40
Yeah
moritz_ always thought "no fails" were good
[Coke] jnthn: standard "did you realclean" ?
jnthn [Coke]: I nuked my Parrot tree and got a clean check out just in case.
colomon want me to take a stab at it on one of my 32-bit machines, to see if I can duplicate?
jnthn Could be worthwhile.
colomon I'll use the 32-bit linux server, it does ... er, no git. 15:41
jnthn oh hmm, I had a local patch
That removed some debug code.
jnthn gets rid of that Just In Case.
colomon ack, just realized that I have the same problem with linux installs as I do with bassoon reeds -- so long between times I forget what distribution / reed-maker was involved. 15:42
[Coke] jnthn: *shakes fist*
(hopefully that was it)
colomon okay, the 32-bit guy does seem to have apt-get, I'll take that as a sign.
moritz_ apt-get++ 15:43
cat /etc/debian_version
colomon moritz_: 5.0.3 15:44
bother. going to wait for jnthn to make progress before trying to get this all sorted out on this machine. :(
moritz_ hey, that's non-ancient :-)
isBEKaml I thought so too. I always seen Debian servers going one down below the latest, but updating all security patches. ;) 15:45
colomon headless linux boxes should be better at indicating what distribution you are using.
isBEKaml all linux boxen are better at indicating their versions in subtle ways. ;) 15:46
15:46 [mark] joined
isBEKaml jnthn: I'm still building the latest Rakudo, so will have to wait until I get them up. 15:46
jnthn: Ok, I'm done. run make spectests? 15:47
jnthn [Coke]: I hoped so too. Sadly, the first extra fail I had, t\spec\S03-operators\series-arity0.t, still fails with my Rakudo tree clean bar the version bump
isBEKaml: Yes, please. 15:48
15:48 alester joined
isBEKaml jnthn: ok, running it. 15:49
15:49 ash__ joined 15:50 gbacon_ joined 15:52 ash_ left, ash__ is now known as ash_
isBEKaml infinity succeeded. 1/13 unexpectedly succeeded. do you see this? 15:53
nan too. 1/7
15:54 cdarroch joined, cdarroch left, cdarroch joined
moritz_ saw the same 15:54
colomon isBEKaml: I got those as well.
15:56 justatheory joined
isBEKaml S02 pid failed. 16:00
16:01 pencilk joined
isBEKaml It's not fail first. It's still going on ahead with the rest? 16:01
??
colomon rakudo: ~($string.match(/.a/))
p6eval rakudo 87e0e1: OUTPUT«Symbol '$string' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)␤» 16:02
colomon rakudo: ~("1a2a3a".match(/.a/))
p6eval rakudo 87e0e1: ( no output )
colomon rakudo: ~("1a2a3a".match(/.a/)).say
p6eval rakudo 87e0e1: OUTPUT«Method 'say' not found for invocant of class 'Regex;Match'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
colomon rakudo: say ~("1a2a3a".match(/.a/))
p6eval rakudo 87e0e1: OUTPUT«1a␤»
colomon rakudo: say ~("1a2a3a".match(/.a/, :c))
p6eval rakudo 87e0e1: OUTPUT«2a␤»
16:02 pencilk left
colomon question for the wise: 16:03
16:03 pencilk joined
colomon m:c// is supposed to pick up starting from $/.to 16:03
should .match(:c) also do so? 16:04
16:04 jotr^outtahere is now known as jotr
pugssvn r30667 | lwall++ | [S05] Disrequire retroactive semantics on :ii and :aa 16:08
TimToady the question is whether that's also retroactive semantics, like we just undid on :ii and :aa 16:11
it doesn't seem as though the regex must be compiled differently, so maybe it's okay 16:12
assuming that the implied .*? is on the outside of it
certainly setting the start position can be done externally
so :p is always fine
thing is, though, that with the method form, you probably have to pass :p($/.to) explicitly 16:13
pmichaud TimToady++ # r30667 YAY!
TimToady or :p has to have a param like :$p = CALLER::<$/>.to 16:14
hmm, that doesn't work 16:15
at all
:p returns True
so I think we have to require an arg on :p in the method form 16:16
and, by extension, :c
colomon: ^^
isBEKaml jnthn: series-arity0 seems to pass here... 16:17
jnthn OK
I got fail again, and the hangs on the integration tests.
Maybe it's Win32-specific or something.
Or my-box specific... :-/
isBEKaml could be worth checking on another win32 box.. 16:18
jnthn aye
will do a run on my laptop later
16:18 _jaldhar left
isBEKaml one difference, though. I got r46740 of parrot. 16:19
colomon TimToady: that came out as a crazy series of smileys on my machine. :) 16:22
:c and :p require args in method form, is that the upshot? no implicit $/ ? 16:23
\o/
pugssvn r30668 | lwall++ | [S05] typo
colomon rakudo: sub foo(:$a) { say $a.WHAT; say $a.perl; }; foo(:a) 16:27
p6eval rakudo 87e0e1: OUTPUT«Bool()␤Bool::True␤»
colomon rakudo: sub foo(:$a) { say $a.WHAT; say $a.perl; }; foo(:a(4)) 16:29
p6eval rakudo 87e0e1: OUTPUT«Int()␤4␤»
16:35 [mark] left
TimToady I suppose it would be *possible* to distinguish a Bool::True from a 1 16:37
16:39 iblechbot joined
colomon TimToady: sure, that's not a problem. 16:39
not just possible, but easy
rakudo: sub foo(:$a) { say $a.WHAT; say $a.perl; }; foo() 16:40
p6eval rakudo 87e0e1: OUTPUT«Any()␤Any␤»
Juerd I'm considering terminating feather0 16:44
moritz_ uh
Juerd I would move feather1..3 to one of the TNX physical machines. 16:45
moritz_ why? maintenance nightmare? 16:46
Juerd Energy efficiency 16:48
moritz_ ok
Juerd We're running into cooling problems. One of the easiest way to deal with this, is to get rid of some of the heaters :)
It's less costly to buy nice new machines and migrate a few existing boxes over, than to upgrade cooling. 16:49
moritz_ ah, and new == more efficient 16:50
Juerd A great side effect is that everything becomes faster for everyone.
jnthn warms to the idea
Juerd jnthn: Not too much I hope 16:51
isBEKaml cools to the idea. ;)
Juerd jnthn: It's pretty hot where feather lives, already
jnthn Juerd: It's OK, I'm warming up many kilometers away from your data center. :-)
Juerd I'm not sure if IRC is such a good insulator
isBEKaml uh, didn't I modulate the temperature? 16:52
16:52 pyrimidine joined
Juerd Modulate temperature? 16:52
Signalling with flames? 16:53
isBEKaml erm, ice?
16:55 envi^home left
moritz_ flames and ice? iceland? volcanos? 16:56
jnthn Shhh. :P 16:57
.oO( at least I don't have any more flights for a few weeks )
16:58
17:01 pmurias left
pugssvn r30669 | moritz++ | [t/spec] truncate() now properly handles NaN in Rakudo 17:05
isBEKaml jnthn: which ones are the integration tests? I don't find them on spectest.data ?
moritz_ grep integration t/spectest.data 17:06
isBEKaml Right now, I'm on S-32 array bool
moritz_: aw, I didn't search the file. I thought they came in order and went on to the end of doc. :D 17:07
moritz_ they come in order, but "order" depends on the system 17:08
rakudo: say 'S' lt 'i'
p6eval rakudo 96fbd6: OUTPUT«1␤»
[Coke] masak's subset FullHouse of Any where OnePair & ThreeOfAKind;
in his poker example seems to trigger even on the pair. 17:09
moritz_ try
where { ($_ ~~ OnePair) && ($_ ~~ ThreeOfAKind) }
there's a known, reported bug wrt smartmatching &-junctions
(iirc) 17:10
Juerd I could buy one new shiny box, merge the virtual machines from feather0 and two other machines onto it, and the entire operation would pay for itself in just two years
[Coke] yah, that's my workaround. danke.
Juerd The last feather upgrade was 2 years ago, and that was after it had been online for 2 years 17:11
That's a nice steady pace :)
17:14 ash_ left
moritz_ std: class A { multi a($.uri) } 17:18
p6eval std 30668: OUTPUT«===SORRY!===␤Malformed block at /tmp/G6eiT7OovV line 1:␤------> class A { multi a($.uri) ⏏}␤ expecting any of:␤ routine_def␤ trait␤Parse failed␤FAILED 00:01 115m␤»
moritz_ std: class A { multi a($.uri) { } }
p6eval std 30668: OUTPUT«ok 00:01 112m␤»
[Coke] ugh. these DIY enums make it very difficult to write this poker example cleanly. (beats having non-functional enums, but still, pita.) 17:34
17:37 rurban joined 17:38 rurban left
[Coke] ok. if I have an array of FOO, where foo has $.key and $.value, how can I get a list of all the unique $.key's in the array? 17:39
17:40 patrickas left, pencilk left
[Coke] er, sorry. An array of BAR, which contains FOO, which (as above.) =-) 17:40
@bars>>.foo <step 2> .uniq # profit!
moritz_ @bar».foo».key».uniq ? 17:41
colomon (@bars>>.for>>.key).uniq
moritz_ erm, right
colomon s/for/foo 17:42
[Coke] moritz_: grumble. I had tried that but got an error ...
... somewhere else. :P
pugssvn r30670 | colomon++ | [t/spec] Fudge m:c// tests and add .match(:c) versions instead.
17:47 k23z__ joined 17:56 ashleydev left
[Coke] someone should gently poke tom at the SYN instead of the EXE; though I have no idea if that addresses his issues at all. 18:03
moritz_ somebody who is immune to wordy answers :-) 18:04
I might be that
[X] sent 18:08
[Coke] moritz++ 18:09
phenny: tell masak that I forked his gist at gist.github.com/244255 and that my version adds royalflush and actually seems to work under rakudo-latest. 18:10
phenny [Coke]: I'll pass that on when masak is around.
[Coke] (of course, it doesn't do the thing I was trying to do there.)
moritz_ rakudo: say 'abc'.match(/./, :c(2)) 18:11
p6eval rakudo 96fbd6: OUTPUT«c␤»
k23z__ moritz_, remember when you played with SVG ?
moritz_ k23z__: sure
rakudo: 'abc' ~~ /b/; say 'abc'.match(/./, :c) 18:12
p6eval rakudo 96fbd6: OUTPUT«b␤»
k23z__ moritz_, i.imgur.com/cSDCt.png
moritz_, in Perl .. 5
moritz_, construction of regular pentagon with ruler and compass :)
moritz_, rendered with GD::SVG 18:13
moritz_, did you actually port GD::SVG to Rakudo or started from scratch ?
moritz_ k23z__: masak did the XML output module... I started a plotting module on top of it, from scratch 18:14
18:15 dolmen joined
k23z__ moritz_, do you have already implemented circles and line segments ? 18:15
18:16 SmokeMachine left 18:17 bubaflub joined
moritz_ k23z__: my module is a chart plotter; circles or so are outside its scope 18:18
18:19 XaeroOne left
mberends k23z__: here's another (bitrotted) SVG::Tiny.pm that worked on alpha github.com/perl6/perl6-examples/tre...r/lib/SVG/ 18:20
k23z__ bitrott = old ?
mberends yes, untested on master :-( 18:21
moritz_ nope
worked on master last I tried
oh wait no
wrong one
github.com/masak/svg/ this one works
it's really just an XML emitter 18:22
colomon how do :c and /^whatever/ interact? 18:31
moritz_ will fail for :c != 0 18:32
I have a small patch that allows :continue as an alias to :c
[Coke] is there a 'seen' bot in here? 18:33
moritz_ buubot: seen colomon
buubot moritz_: I last saw colomon saying "colomon" at Fri May 14 19:29:42 2010 Z.
colomon moritz_: for match, I should have already committed that.
[Coke] buubot: seen masak
buubot [Coke]: I last saw masak saying "TimToady " at Wed May 5 13:56:09 2010 Z.
moritz_ colomon: ooh
colomon: but it's wrong :( 18:34
colomon: bare :c is allowed
colomon: and defaults to $/.to of the preceeding match
colomon moritz_: not per TimToady earlier today.
moritz_ so, spec changed? 18:35
dalek kudo: a797463 | (Solomon Foster)++ | src/core/Cool-str.pm:
Allow :global as well as :g for match method.
kudo: 816a4fc | (Solomon Foster)++ | (2 files):
Better support for :c / :continue in match, and turn on S05-modifier/continue.t.
colomon TimToady: so I think we have to require an arg on in the method form 18:36
[12:16pm] TimToady: and, by extension,
whoops, lost the modifiers in there.
moritz_ mis-remembered 18:37
colomon++
colomon easy enough to implement in a pinch.
if we change our minds. 18:38
using $/ would be kind of funky with match, since it's not set by match...
I'm trying to figure out how to implement :pos, any ideas? 18:39
moritz_ maybe nqp-rx supports :p? 18:40
18:40 SmokeMachine joined
pugssvn r30671 | lwall++ | [S05] don't use 'accent' to mean 'mark' as pointed out by tchrist++ 18:42
r30671 | rename :a and :aa to :m and :mm
r30671 | regularize mm// to ms// to avoid confusion with new :m ignoremark option
moritz_ so - everything is different now? :-)
18:44 perlygatekeeper joined
colomon happens every time #perl6 gets to talking... ;) 18:45
moritz_ TimToady: so sameaccent in S32/Str should probably also be samemark? 18:46
TimToady yes 18:47
colomon moritz_: is Regex::Cursor.parse in nqp-rx?
moritz_ fixes
colomon: yes
pugssvn r30672 | moritz++ | [S32/Str] update "sameaccent" fossile 18:48
TimToady I just figgered it wasn't fair to ask Tom for a patch when it really required redesign
moritz_ then maybe my mail was a bit harsh :(
colomon: seems it does accept :p
colomon \o/ 18:49
moritz_ tries
pugssvn r30673 | coke++ | fix typo 18:50
PerlJam What's the difference between an "accent" and a "mark"? Is that like an umlaut isn't an accent, but it is a mark? 18:51
moritz_ yes
colomon moritz_: I'll see if I can get some test cases ready...
moritz_ but there are others where it's more obvious
cotto_work I'm not seeing any of the failures jnthn mentioned on parrot-dev when using Parrot r46743 and the latest (updated within the last hour) rakudo. 18:52
18:52 moritz_ sets mode: +o PerlJam
cognominal rakudo: say ( method => 'toto' ) # easy to work around by may-be confusing old-timer perl5 programmers :) 18:52
p6eval rakudo 816a4f: OUTPUT«Malformed method at line 11, near "=> 'toto' "␤current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)␤»
moritz_ cotto_work: I couldn't reproduce it on amd64/linux either
jnthn cognominal: Platform? 18:53
gha
cotto_work: platform?
bkeeler Hi-diddly-ho perl6erinos! 18:56
18:56 dalek left
jnthn hi bkeeler! 18:56
moritz_ huh 18:58
doesn'T seem to work
colomon moritz_: :pos you mean?
18:58 ShaneC joined
moritz_ colomon: aye 18:58
colomon bother 18:59
18:59 ShaneC left
moritz_ looking at the implementation... it seems that :p is ignored if :c is present 18:59
colomon moritz_: ah. so we just need to get smart about that...
moritz_ aye, I hope so 19:00
colomon hmmm, what happens to .match if you use them both? 19:01
moritz_ then :c is preferred
colomon I'd have thought the other way around, :p is stricter. 19:02
19:03 dalek joined
moritz_ $ ./perl6 -e 'say "adabc".match(/a.*/, :p(2))' 19:03
abc
$ ./perl6 -e 'say "adabc".match(/a.*/, :p(1))'
(empty line
except that I broke other stuff :( 19:04
PerlJam :pos anchors the match at a particular character position? 19:05
cognominal hum, it seems that the semantic of the state qualifier has changed from alpha to current rakudo. Is there a new keyword. error message I get "Symbol '%message' not predeclared in send_error"?
moritz_ $ ./perl6 -e 'say so "abcde" ~~ /bc/'
0
cognominal: not yet implemented
cognominal ok, no problem. easy to work around 19:06
thx
except I like the compiler to be honest with me :) 19:07
moritz_ like, uhm, I broke normal regex matches
colomon moritz_++
moritz_ cognominal: it is, for some value of honest
cognominal: it parses state() as a subroutine call
cognominal :) 19:08
moritz_ cognominal: and comlains at compile time that the variable you're trying to call is not yet declared
*complains
jnthn alpha's implementation of state was pretty spec compliant and stable. I wonder how easy it'd be to port it over.
19:09 gbacon_ left
TimToady maybe we should just go with :p($pos) and :p($pos..*) 1/2 :) 19:10
cognominal I should use --target=parse more often instead of whining here
moritz_ TimToady: I kinda like :c, because it's quite often used
TimToady to me, :p and :c are mutually exclusive
moritz_ aye 19:11
colomon: seems like I have a fix 19:12
TimToady another approach, :c never takes an argument; if you want a different start pos than $/.to, set it with :p
cotto_work jnthn, Ubuntu 10.04 x84
PerlJam TimToady: for some reason I like that better than mutual exclusivity 19:13
cotto_work *x64
moritz_ would like it the other way round
jnthn cotto_work: OK; I need to try it on my other Win32 box.
TimToady so :p(42):c ==> start at 42 and continue
moritz_ :c($pos) sets a position
and :p actually anchors it there
colomon moritz_: \o/
jnthn cotto_work: So I can fathom if something is odd on just this machine or on Win32 generally.
PerlJam moritz_: then :p seems a bit of misnomer
TimToady and :c :)
moritz_ colomon: I'm through S02 with the spectests, no fallout so far 19:14
:start-at, :anchored
PerlJam moritz_: the one-letter mnemonics are gone then :)
TimToady but internally, anchored is the default, really
adding in .*? is really the non-default 19:15
I think set-position-and-scan is more complicated than set-position 19:16
we will have a hard enough time persuading people that regex don't always scan as it is 19:17
biasing the switches that way seems like a step backwards to me
PerlJam I don't know ... there's bunches of people who write regexes like this: / .* foo / :) 19:18
TimToady and then wonder why it finds the last one instead of the first one. :)
anyway, for some reason I'm prejudiced towards the parsing view :) 19:20
and it's almost the case that :c should be outlawed when parsing, and force people to put .*? where they mean it 19:21
I think the upshot of this is that we keep both :c and :p the way they are. :)
and maybe force exclusion, if we feel like it 19:22
PerlJam exclusion is less confusing initially at least.
colomon \o/ 19:23
colomon will get back to working on tests for :p
PerlJam is so used to seeing emoticons at the end of lines that he was waiting for colomon to finish his sentence. 19:24
:-)
TimToady moritz_: do you actually have any use cases for :c or is it just a feeling that it's "quite often used"?
19:25 jhuni joined
colomon TimToady: it's essential for multiple matches 19:25
moritz_ TimToady: split()
comb()
hm, it seems that the standard perl 5 usage is actually covered by comb and split 19:26
TimToady and that behavior might just be hardwired there
colomon :c is needed to implement split....
TimToady .*? being easy to emulate externally
moritz_ well, it could also be a de-huffmanized attribute 19:27
TimToady :c($p) is equiv to :p($_) for $p..*
so it's a bit of sugar
well, with the stop on match too 19:28
not really arguing against keeping :c, but I would resist defining it as more basic than :p 19:29
k23z__ I'm bored
any cure for that ?
TimToady good, bored people find interesting things to do and do them :)
PerlJam k23z__: code something using rakudo
TimToady also, I really dislike calling what :p does "anchoring", because people immediately think of ^ or ^^, and both of those are wrongish semantics for :p 19:33
colomon rakudo: say "hello".match(/z/).perl 19:34
moritz_ there are many more anchors than ^ and ^^
p6eval rakudo 816a4f: OUTPUT«Method 'perl' not found for invocant of class 'Regex;Match'␤current instr.: '_block14' pc 29 (EVAL_1:0)␤» 19:35
colomon rakudo: say "hello".match(/z/).Bool 19:36
TimToady but that's what people think of
p6eval rakudo 816a4f: OUTPUT«0␤»
colomon rakudo: say "hello".match(/o/).Bool 19:37
p6eval rakudo 816a4f: OUTPUT«1␤»
colomon oooo
TimToady moritz_: I fight "undifferentiated regex thoughts" all the time at my company of hardware geeks... :) 19:38
moritz_ TimToady: my condolences :0)
TimToady "unicode? what's that?"
moritz_ have them produce unicode-aware hardware :-) 19:39
19:40 swestres left
TimToady bbl & 19:40
Tene "undifferentiated regex thoughts"? 19:41
PerlJam I confess that when I first read "anchor" I immediately think of ^ and $
moritz_ colomon: all tests pass... except t/spec/S05-modifier/global.t, which loops infinitely :(
colomon oh noez!
I just added that one today...
moritz_: you're not always starting from :c(0) if no :c is specified? 19:42
moritz_ colomon: I am... because otherwise non-anchored matches don't work anymore 19:43
19:43 bluescreen joined
colomon can you post your code? 19:43
paste
19:44 bluescreen is now known as Guest71827
lisppaste3 moritz_ pasted ":pos implementation" at paste.lisp.org/display/99362 19:44
19:45 cotto_work left
colomon moritz_: you're not using $cont in the parse call in the loop. 19:46
errr...
moritz_ I am, in %opts<c>
colomon that's only the first time through.
moritz_ ooooh
I wanted to write %opts<c> 19:47
and wrote %opts<p>
colomon yeah
not sure why that loops instead of just failing, though.
19:47 Lorn left
moritz_ colomon++ # handy to have around for debugging :-) 19:47
colomon moritz_++ # handy to have around to do the implementing. ;) 19:48
19:48 mantovani left
jnthn enjoys watching the colomoritz bot at work 19:49
pmichaud seems to me that .match should always do some form of gather/take, and not have a special loop for :global
i.e., I'd use the same loop for :global, :nth, and :x
19:49 ruoso left 19:50 mantovani joined, Lorn joined
pmichaud I don't remember if we decided that :nth and :x were mutually exclusive, though. 19:50
moritz_ and treat :global as :x(1..*) ?
I don't think they are
pmichaud or as "True"
colomon pmichaud: normal single match is supposed to return a match object and not a list of match objects, isn't it?
pmichaud colomon: well, it would return a parcel in either case 19:51
but yes, there could be a difference there
moritz_ :nth(1|3|4), :x(2) does make sense
colomon there are tests for :x and :nth together....
moritz_ exactly two matches, but not the second
pmichaud okay, that makes sense-ish
moritz_ colomon: and they are wrong, most likely :-)
pmichaud just feels like :global, :nth, and :x should share a common loop 19:52
moritz_ I know that because I wrote them :/
colomon pmichaud: agreed
19:52 mantovani left
colomon the :x tests I found were definitely wrong. 19:53
19:53 mantovani joined, stephenlb joined
pugssvn r30674 | pmichaud++ | [S05]: Typo fix TimToady++'s typo fix in r30668. :-) 19:53
moritz_ if only the test write had had a clue about Perl 6 back then... 19:54
pugssvn r30675 | colomon++ | [t/spec] Basic tests for :p argument to match method. 19:58
moritz_ spectest run looks good so far
[Coke] 15:56 <+nopaste> "coke" at 192.168.1.3 pasted "rakudo spec test failures with recent parrot/rakudo" (8 lines) at nopaste.snit.ch/20577 19:59
20:01 molaf_ joined
moritz_ colomon: somehow fudge generates a file from pos.t that's not valid Perl 6 20:02
STD says
(Possible runaway string from line 74)
Two terms in a row at /home/moritz/rakudo/t/spec/S05-modifier/pos.t line 75:
------> nok $str.match(/abc/, :p(4)).Bool, "⏏No match anchored to 4";
20:03 molaf left
colomon it's the line before. 20:03
last " is missing
line 79 as well. 20:04
moritz_ ah, thanks
moritz_ too tired for serious debugging
colomon couldn't test it without your patch, sorry.
moritz_ no problem
pugssvn r30676 | moritz++ | [t/spec] fix syntax errors, colomon++
moritz_ spectest run finished, rakudo changes pushed 20:05
colomon moritz_++ 20:06
moritz_ rakudo: say samecase('aBc', 'XYz')
p6eval rakudo 816a4f: OUTPUT«ABc␤»
moritz_ rakudo: say 3.samecase(5) 20:08
p6eval rakudo 816a4f: OUTPUT«3␤» 20:09
moritz_ rakudo: say 'abc'.match('b') 20:10
p6eval rakudo 816a4f: OUTPUT«No applicable candidates found to dispatch to for 'match'. Available candidates are:␤:(Mu : Regex $pat, Any :continue(:c($continue)), Any :global(:g($global));; *%_)␤␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
dalek kudo: 2d0fc2b | moritz++ | (2 files):
implement :p/:pos in Regex.match
20:11 szabgab joined 20:12 molaf_ left, gbacon_ joined 20:15 rv2733 left
pugssvn r30677 | colomon++ | [t/spec] Test :pos as well as :p. 20:18
20:19 Guest71827 left, molaf joined, _buno_ joined 20:22 SmokeMachine left, Guest71827 joined 20:26 elmex joined 20:29 am0c left 20:32 perlygatekeeper left
moritz_ + ok $match.Bool, "Match anchored to 6"; 20:32
ok $match, "..."; would be enough 20:33
20:38 Guest71827 left 20:44 _buno_ left
colomon I wasn't sure how ok worked internally. :) 20:45
20:45 Su-Shee left 20:48 bubaflub left 20:57 k23z__ left 21:00 wknight8111 joined, gbacon_ left
jnthn Curious. The Rakudo build and spectest went find on my laptop 21:00
jnthn is kinda confused
[Coke] jnthn: SHIP IT! 21:03
someone on #parrot suggested icu versions?
jnthn [Coke]: I don't build with ICU on this machine, so it's likely not that.
[Coke]: I do have I think different versions of MS VC++ 21:04
I'll try a clean clone on this machine later on.
21:06 jaffa4 left 21:21 molaf_ joined, hercynium joined, pyrimidine left 21:24 molaf left 21:29 k23z__ joined 21:44 clintongormley left 21:49 iblechbot left 21:52 ruoso joined 21:56 Targhan joined 22:04 dju left 22:07 jhuni left 22:31 pjcj joined 22:35 am0c joined 22:40 alester left 22:47 meppl left 22:54 lestrrat is now known as lest_away 22:58 Psyche^ joined 23:00 am0c left 23:02 Patterner left, Psyche^ is now known as Patterner
pugssvn r30678 | lwall++ | [pos.t] remove 'my' that causes "Useless redeclaration of variable $_" 23:07
23:16 ruoso left 23:18 isBEKaml left 23:32 cdarroch left 23:42 BrowserUk left