»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
00:02 mcmillhj left 00:11 mcmillhj joined 00:16 mcmillhj left 00:29 tushar joined
tushar just curious, how can i define type for array of arrays? 00:30
00:30 mcmillhj joined
tushar in other words I would like to make my own type for array of array data structure. How can I do that? 00:30
MasterDuke tushar: my Array[Array] @a 00:34
00:34 Pierre_ joined 00:35 itaipu left
tushar @MasterDuke -- thanks. 00:35
00:35 mcmillhj left, itaipu joined
tushar can i do "has Array|Array[Array] @.data is rw"? 00:36
MasterDuke i don't know enough to say yes or no 00:37
tushar no problem.. Does anybody else have any idea about that? 00:38
AlexDaniel tushar: what should it mean? 00:44
tushar I would like to have either array or array of arrays as type of an attribute. Does that make sense? 00:45
00:46 mcmillhj joined
AlexDaniel but array of arrays is array and array of arrays at the same time, so why? 00:47
00:49 leego joined
AlexDaniel MasterDuke: oh wow (re #129279) 00:50
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129279
AlexDaniel MasterDuke: I've never thought one could expect $١ to work
tushar wow.. I didn't know that.. Thanks.. Just to be clarify (for myself - lay man) Array type represents array and array of arrays both.
AlexDaniel m: my $١ = 42; say $١
camelia rakudo-moar ad5336: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Cannot declare a numeric variable␤at <tmp>:1␤------> 3my $١7⏏5 = 42; say $١␤»
MasterDuke the $1, $2, etc are just sugar for $/[1], $/[2], etc 00:51
so they only work to retrieve matches
00:52 mcmillhj left
AlexDaniel wait, isn't 「my Array @something」 already an array of arrays? And Array[Array] @d is array of arrays of arrays? 00:52
AlexDaniel confused
MasterDuke so it gets the above right, but fails when trying to get a match (until my PR is merged, then it will work)
AlexDaniel MasterDuke: after all my $١ is not allowed, so it perfectly makes sense 00:53
MasterDuke: I am amazed that I've never thought about it
MasterDuke++
MasterDuke there could be more things that don't work, but i fixed the ones i found on my first search 00:54
AlexDaniel m: my Array @data = 42, 50; say @data 00:55
camelia rakudo-moar ad5336: OUTPUT«Type check failed in assignment to @data; expected Array but got Int (42)␤ in block <unit> at <tmp> line 1␤␤»
AlexDaniel m: my Array @data = [42, 50]; say @data
camelia rakudo-moar ad5336: OUTPUT«Type check failed in assignment to @data; expected Array but got Int (42)␤ in block <unit> at <tmp> line 1␤␤»
AlexDaniel m: my Array @data = [[42, 50]]; say @data 00:56
camelia rakudo-moar ad5336: OUTPUT«Type check failed in assignment to @data; expected Array but got Int (42)␤ in block <unit> at <tmp> line 1␤␤»
AlexDaniel m: my Array @data = [[42, 50],]; say @data
camelia rakudo-moar ad5336: OUTPUT«[[42 50]]␤»
AlexDaniel right…
m: my Array[Array] @data = [[[42,], [50,]],]; say @data
camelia rakudo-moar ad5336: OUTPUT«Type check failed in assignment to @data; expected Array[Array] but got Array ($[[42], [50]])␤ in block <unit> at <tmp> line 1␤␤»
MasterDuke AlexDaniel++ you're right, my Array[Array] answer was one Array too many
AlexDaniel m: my Array[Array] @data = [[[42,], [50],],]; say @data
camelia rakudo-moar ad5336: OUTPUT«Type check failed in assignment to @data; expected Array[Array] but got Array ($[[42], [50]])␤ in block <unit> at <tmp> line 1␤␤»
tushar @AlexDaniel -- yes, I just check it on REPL and it gave me the same error. So you are absolutely, right that my Array @data is expecting array of arrays 00:57
> @a = [1,2,3]; Type check failed in assignment to @a; expected Array but got Int (1) in block <unit> at <unknown file> line 1
@a = [[1,2,3],[4,5,6]]; [[1 2 3] [4 5 6]]
AlexDaniel well my @… is already an array, so it kinda makes sense :) 00:58
00:58 mcmillhj joined
tushar yes that makes perfect sense now.. 00:58
AlexDaniel MasterDuke: I can't get my Array[Array] to work with any data, do you have any idea?
tushar what if I am expecting array or array of arrays? How can I handle that
AlexDaniel tushar: are you sure that you don't want a multidimensional array in this case? 01:00
MasterDuke m: my Array @data = [[42, 50],]; my Array[Array] @b; @b.push: @data; dd @b
camelia rakudo-moar ad5336: OUTPUT«Array[Array[Array]] @b = Array[Array[Array]].new(Array[Array].new($[42, 50]))␤»
AlexDaniel MasterDuke: what about without pushing?
MasterDuke m: my Array @data = [[42, 50],]; my Array[Array] @b; @b[0] = @data; dd @b 01:01
camelia rakudo-moar ad5336: OUTPUT«Array[Array[Array]] @b = Array[Array[Array]].new(Array[Array].new($[42, 50]))␤»
AlexDaniel tushar: like, you know ↓
m: my @data[2;2;2]; say @data
camelia rakudo-moar ad5336: OUTPUT«[[[(Any) (Any)] [(Any) (Any)]] [[(Any) (Any)] [(Any) (Any)]]]␤»
01:01 user9 left
AlexDaniel MasterDuke: cheater… 01:01
01:02 mcmillhj left 01:04 itaipu left, itaipu joined
tushar @AlexDeniel -- no I don't want multidimensional array.. 01:07
01:08 newbie1 left 01:09 AlexDaniel left
tushar @MasterDuke and @AlexDaniel -- Thanks guys for your input 01:10
01:11 mcmillhj joined 01:13 _slade_ left
tushar I got another question about type assignment. How can I assign multiple type constraints on an array? I have tried so far this -- my Str|Int @h; But got compiling error. Do I have to make my own type to accommodate two types? 01:14
01:16 mcmillhj left, _slade_ joined
BenGoldberg m: my @IntStr @h; 01:16
camelia rakudo-moar ad5336: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Two terms in a row␤at <tmp>:1␤------> 3my @IntStr7⏏5 @h;␤ expecting any of:␤ infix␤ infix stopper␤ statement end␤ statement modifier␤ statement mod…»
BenGoldberg m: my IntStr @h; 01:17
camelia ( no output )
BenGoldberg m: my IntStr @h = (1, 2, "abc"); push @h, {};
camelia rakudo-moar ad5336: OUTPUT«Type check failed in assignment to @h; expected IntStr but got Int (1)␤ in block <unit> at <tmp> line 1␤␤»
BenGoldberg m: my (IntStr) @h = (1, 2, "abc"); push @h, {};
camelia rakudo-moar ad5336: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Two terms in a row␤at <tmp>:1␤------> 3my (IntStr)7⏏5 @h = (1, 2, "abc"); push @h, {};␤ expecting any of:␤ infix␤ infix stopper␤ statement end␤ statement mo…»
BenGoldberg m: my IntStr() @h = (1, 2, "abc"); push @h, {};
camelia rakudo-moar ad5336: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Coercion IntStr(Any) is insufficiently type-like to qualify a variable␤at <tmp>:1␤------> 3my IntStr() @h7⏏5 = (1, 2, "abc"); push @h, {};␤ expecting any of:␤ constraint␤»
01:20 labster left
BenGoldberg m: subset int-or-str of Int|Str; 01:21
camelia rakudo-moar ad5336: OUTPUT«WARNINGS for <tmp>:␤Useless use of "|" in expression "subset int-or-str of Int|Str" in sink context (line 1)␤»
BenGoldberg m: subset int-or-str of Int|Str; my int-or-str @h = (1, "2");
camelia rakudo-moar ad5336: OUTPUT«WARNINGS for <tmp>:␤Useless use of "|" in expression "subset int-or-str of Int|Str" in sink context (line 1)␤Type check failed in assignment to @h; expected int-or-str but got Str ("2")␤ in block <unit> at <tmp> line 1␤␤»
01:22 mcmillhj joined
BenGoldberg m: subset int-or-str of Cool where Int|Str; my int-or-str @h = (1, "2"); 01:23
camelia ( no output )
BenGoldberg m: subset int-or-str of Cool where Int|Str; my int-or-str @h = (1, "2", {});
camelia rakudo-moar ad5336: OUTPUT«Type check failed in assignment to @h; expected int-or-str but got Hash (${})␤ in block <unit> at <tmp> line 1␤␤»
MasterDuke m: subset int-or-str where Int|Str; my int-or-str @h = (1, "2");
camelia ( no output )
MasterDuke m: subset int-or-str where Int|Str; my int-or-str @h = (1, "2"); dd @h
camelia rakudo-moar ad5336: OUTPUT«Array[int-or-str] @h = Array[int-or-str].new(1, "2")␤»
BenGoldberg tushar, What do you think of the above?
m: subset int-or-str of Cool where Int|Str; my int-or-str @h = (1, "2"); push @h, 1.4;
camelia rakudo-moar ad5336: OUTPUT«Type check failed in assignment to @h; expected int-or-str but got Rat (1.4)␤ in block <unit> at <tmp> line 1␤␤»
BenGoldberg m: subset int-or-str of Cool where Int|Str; my int-or-str @h = (1, "2"); push @h, 23, "skidoo"; 01:24
camelia ( no output )
BenGoldberg m: subset int-or-str of Cool where Int|Str; my int-or-str @h = (1, "2"); push @h, Mu.new; say @h
camelia rakudo-moar ad5336: OUTPUT«X::TypeCheck::Assignment exception produced no message␤ in block <unit> at <tmp> line 1␤␤»
tushar @Ben -- Thanks bud for your examples.. Still digesting them 01:25
BenGoldberg m: subset int-or-str of Cool where Int|Str; my int-or-str @h = (1, "2"); push @h, Any.new; say @h
camelia rakudo-moar ad5336: OUTPUT«Type check failed in assignment to @h; expected int-or-str but got Any (Any.new)␤ in block <unit> at <tmp> line 1␤␤»
Juerd m: my $x where Str|Int = 4.2; 01:26
camelia rakudo-moar ad5336: OUTPUT«Type check failed in assignment to $x; expected <anon> but got Rat (4.2)␤ in block <unit> at <tmp> line 1␤␤»
Juerd I've thought about trying to get a more descriptive thing instead of <anon> but it was *hard*.
01:26 mcmillhj left
Juerd Is there anything like deparse yet? :) 01:27
tushar @Ben -- it seems like I have to create new type 'int-or-str' as you did.
BenGoldberg m: { subset foo of Cool }; my foo @h;
camelia ( no output )
BenGoldberg m: { my subset foo of Cool }; my foo @h; 01:29
camelia rakudo-moar ad5336: OUTPUT«5===SORRY!5===␤Type 'foo' is not declared␤at <tmp>:1␤------> 3{ my subset foo of Cool }; my foo7⏏5 @h;␤Malformed my␤at <tmp>:1␤------> 3{ my subset foo of Cool }; my7⏏5 foo @h;␤␤»
BenGoldberg m: { our subset foo of Cool }; my foo @h;
camelia ( no output )
BenGoldberg tushar, If you use 'my', you can limit the scope of where the new type is visible. 01:30
01:30 poohman joined
tushar Ben, yes it will have the lexical scope. 01:30
Ben, thanks a lot for your time and efforts. 01:31
01:32 zacts joined 01:33 poohman_ left, mcmillhj joined 01:38 mcmillhj left 01:41 Actualeyes joined 01:45 mcmillhj joined 01:50 mcmillhj left
TimToady note that [[1,2,3],[4,5,6]] is not, in fact Array[Array], but merely an Array[Any] that happens to contain arrays 01:51
you can't expect structural typing to magically turn into nominal typing 01:52
not in Perl, anyway
tushar TimToday, thanks for your explanation. 01:56
TimToady m: constant AoA = Array[Array]; say AoA([[1,2,3],[4,5,6]]).WHAT
camelia rakudo-moar ad5336: OUTPUT«(Array[Array])␤»
TimToady you can, however, apparently cast to the nominal type
m: say Array[Array]([[1,2,3],[4,5,6]]) 01:57
camelia rakudo-moar ad5336: OUTPUT«[[1 2 3] [4 5 6]]␤»
TimToady m: say Array[Array]([[1,2,3],[4,5,6],42])
camelia rakudo-moar ad5336: OUTPUT«Type check failed in assignment to ; expected Array but got Int (42)␤ in block <unit> at <tmp> line 1␤␤»
tushar TimToday, thanks. 01:59
TimToady m: say Array[Array]([[1,2,3],[4,5,6],(7,8,9)])
camelia rakudo-moar ad5336: OUTPUT«Type check failed in assignment to ; expected Array but got List ($(7, 8, 9))␤ in block <unit> at <tmp> line 1␤␤»
TimToady m: say Array[Array()]([[1,2,3],[4,5,6],(7,8,9)])
camelia rakudo-moar ad5336: OUTPUT«Type check failed in assignment to ; expected Array(Any) but got Array ($[1, 2, 3])␤ in block <unit> at <tmp> line 1␤␤»
TimToady ah well
m: say Array[Array]([[1,2,3],[4,5,6],(7,8,9).Array]) 02:00
camelia rakudo-moar ad5336: OUTPUT«[[1 2 3] [4 5 6] [7 8 9]]␤»
TimToady eventually we'll get more of those coercion types working
02:01 mcmillhj joined
BenGoldberg m: my Array @a = [1..3], [4..6]; say @a.WHAT; 02:03
camelia rakudo-moar ad5336: OUTPUT«(Array[Array])␤»
02:03 labster joined 02:06 mcmillhj left, woolfy left 02:07 rgrinberg left, woolfy joined 02:12 tushar left
TimToady note, however, that array assignment works item by item, so it can do one level for free like that; binding, not so much 02:21
m: my Array @a := [1..3], [4..6];
camelia rakudo-moar 78393d: OUTPUT«Type check failed in binding; expected Positional[Array] but got List ($([1, 2, 3], [4, 5, 6]))␤ in block <unit> at <tmp> line 1␤␤»
TimToady m: my Array @a := Array[Array]( [ [1..3], [4..6] ] ); 02:22
camelia ( no output )
02:22 noganex_ joined
TimToady m: my Array @a := Array[Array]( [1..3], [4..6] ); 02:22
camelia ( no output )
02:23 eliasr left 02:25 noganex left 02:33 rgrinberg joined, sjn left, sjn joined, shantanu left 02:35 _slade_ left 02:36 _slade_ joined, wamba joined 02:37 mcmillhj joined 02:38 cpage_ left 02:42 mcmillhj left 02:44 rgrinberg left, rgrinberg joined 02:56 isBEKaml left
SmokeMachine____ MasterDuke: Do you think this way is better? github.com/FCO/Heap/commit/45541db...42dfb1bbea 03:00
03:09 mcmillhj joined 03:14 mcmillhj left 03:15 poohman left 03:19 stanrifkin joined
MasterDuke SmokeMachine____: it's a little late to be thinking clearly, but nothing jumps out at me 03:24
SmokeMachine____ MasterDuke: :) thanks
03:26 poohman joined
dalek osystem: e190a7c | (Fernando Correa de Oliveira)++ | META.list:
Adding Heap module
03:26
osystem: a076169 | MasterDuke17++ | META.list:
Merge pull request #249 from FCO/patch-2

Adding Heap module
SmokeMachine____ :)
MasterDuke and with that i'm off... 03:27
03:29 Pierre_ left 03:31 poohman left, poohman joined 03:32 itaipu left 03:33 Pierre_ joined 03:52 skids left 03:54 khw left 03:59 mcmillhj joined 04:00 stanrifkin left 04:02 wamba left 04:03 mcmillhj left 04:04 perigrin left 04:10 Pierre_ left 04:11 Pierre_ joined 04:14 exodist_ is now known as Exodist 04:20 BenGoldberg left 04:27 labster left 04:29 mcmillhj joined 04:34 mcmillhj left, Sgeo left 04:36 cpage_ joined 04:38 perigrin joined, Sgeo joined 04:39 Actualeyes left 04:43 cgfbee joined 04:53 Actualeyes joined 04:55 Cabanossi left 04:57 mcmillhj joined 04:59 Cabanossi joined 05:00 canopus left 05:01 mcmillhj left 05:02 frew left 05:03 hobbs left 05:05 canopus joined 05:08 rgrinberg left 05:09 ufobat joined 05:14 stundenull left 05:16 labster joined 05:53 domidumont joined 05:57 domidumont left, domidumont joined 06:00 bob777 joined 06:02 dylanwh left
Woodi hi today :) 06:06
06:07 mcmillhj joined 06:08 hobbs joined
Woodi nice link :) a) "featureless release"; b) fork needs to be reforked to be secure; c) yet another security category qmail was immune since qmail birthday (90s) :) www.poolp.org/tech/posts/2016/09/1...-released/ 06:08
also: (XML haters)++ few days ago make me thinking about configs and qmail config-dir is very nice format :) just eg. /var/qmail directory have files, one per config option like 'ip', 'allowedhosts' - no parsing, just simple checking required 06:12
06:12 mcmillhj left 06:13 hobbs left 06:16 itaipu joined 06:18 mcmillhj joined 06:23 hobbs joined, hobbs left, hobbs joined, mcmillhj left
nine Woodi: well it is kinda easy to be secure when you have so few features to be practically useless 06:24
06:27 firstdayonthejob joined
Woodi nine: you mean qmail was/is useless or opensmtpd ? 06:29
nine qmail 06:30
Woodi heh
what features mail sending app should additionally have ? :)
06:31 _slade_ left 06:33 firstdayonthejob left
nine It's not so much the sending as the receiving side. Though of course even sending of emails has moved forward with e.g. TLS being state of the art. 06:35
06:39 Actualeyes left
Woodi nine: inoa.net/qmail-tls/ also you just advocating dark side of the "do one thing and do it good". also messing centuries of IT history :) 06:41
nine Oh, you're not talking about qmail then.
You're talking about what everyone actually runs: qmail + some giant patch set which may or may not share the secruity characteristics of qmail. 06:42
Woodi nine: that's is qmail development style :)
nine Patches which have seen far less scrutiny and testing when combined while for example with postfix every single user tests exactly the same code base. 06:43
06:45 Actualeyes joined
Woodi nine: it just literaly contradicts "so few features" part :) also: archive.debian.org/debian/pool/non-...47.diff.gz ; you can grep for TLS patch from 2004 there :) 06:46
nine Talking about qmail's superiority is like claiming that 'int main(void) { }' is the most secure smtp server ever with guaranteed 0 bugs. Of course it's gonna need some patches to be actually useful.
Woodi: if you claim that qmail is so super secure, you'd have to back that claim up for every qmail + random patches combination out there. Otherwise you're talking about qmail itself which is really useless. 06:47
Woodi nine: I dident claim superiority, it's your asumption. I am just amazed by qmail quality :)
nine Like I said: it's easy to produce quality when you don't have to deliver all that much.
Woodi nine: ! you know that qmail started in 1995 or erlier ?? 06:48
nine I do.
Woodi so looks you want djb implemented whitelisting back then :) 06:49
nine No. But you're comparing the quality of code implementing the tiny 1995 feature set with 2016 smtp servers. 06:50
Woodi No. I just compare 2016 feature to 1995 codebase :) 06:52
nine I don't think, I understood that sentence 06:53
Woodi btw. check sendmail from 1995 and compare it to qmail from that year: feature minimalism you dislike was and still is state of art
nine: but I must say that just after posting that first link I realized that qmail just do a lot of forking but I'm not sure it is equivalent to what opensmtpd just implemented :) but I bet 5$ on qmail :) 06:56
nine Compare qmail to postfix. The latter is pretty much as secure but also actually useful 06:57
Woodi nine: it's just developed in standard way and we trust postfix codebase :) do it have bugs now ? we can't now know :) 06:58
nine neither can we with qmail 06:59
Woodi I remember djb stated that qmail have 4 bugs he knows about :) 07:00
07:00 nadim joined
nine So? Unless he's got superhuman powers he cannot know if that's all. 07:00
Woodi nine: yes. but best we can do is have as simple code as we can, without unnecesary features... 07:01
07:01 adrusi left
Woodi like with optimisations: best rule is: do less 07:01
nine The whole point is that qmail doesn't even have the necessary features! 07:02
Woodi nine: disagree on that. you just pointing to vanilla qmail 1.03 07:03
nine Which cannot even do TLS so I could _legally_ not even use it to send mail to our customers.
And if you start with the patches again, then please show how they are just as secure as qmail 1.03. 07:04
Woodi nine: how postfix shows security ? :)
3rd. TLS link: www.qmail.org/netqmail/ :) 07:06
oops, yhis one not work :)
konobi sticks with nullmailer 07:07
nine netqmail is not qmail! qmail is useless, netqmail is not as secure. Please pick which one you're talking about and stick with it 07:08
Woodi nine: netqmail or qmail + selected patches as in debian pkg is the only qmail you should use 07:14
nine And does it have qmail's security guarantee? Nope. 07:15
07:15 wamba joined
nine Also why should I use a Debian package on openSUSE? 07:15
moritz Woodi, nine: I think you're derailing #perl6 a bit here 07:16
not that there is a huge swath of perl 6 discussion that's being derailed though... :-)
07:16 darutoko joined
Woodi moritz: right, EOS 07:17
07:18 mcmillhj joined 07:20 zakharyas joined
zengargoyle darn, i was waiting to see which email thingy i should install :P 07:20
moritz zengargoyle: exim! 07:21
moritz runs away
07:23 mcmillhj left 07:24 rudolfochrist joined
zengargoyle moritz: how often is github.com/moritz/perl6-all-modules.git updated? 07:25
went looking for a module and found it on modules.perl6.org but not in that repo. 07:28
07:30 mcmillhj joined 07:31 itaipu left, rindolf joined 07:32 itaipu joined 07:35 mcmillhj left
moritz zengargoyle: irregularly, but I've already done it this week 07:38
zengargoyle: you can look into _tools/populate.p6 in that repo, which does the updating. Maybe it fails to extract some source URLs from the meta files 07:39
zengargoyle github.com/Altai-man/p6-Texas-To-Uni -- what i remembered from a blog post somewhere and on modules.perl6.org but not in repo fetched today and seemingly up-to-date. 07:40
might poke around it later and try and figure out what's up. 07:41
zengargoyle watching end of Farscape now. :P 07:43
07:44 itaipu left
stmuk postfix! 07:45
sorry :)
07:49 itaipu joined, mcmillhj joined 07:50 brrt joined
brrt .tell jnthn I can still repeat the hanging IO-Socket-Async.t test 07:50
yoleaux brrt: I'll pass your message to jnthn.
brrt this on fresh install
07:54 mcmillhj left 08:00 sftp left, itaipu left 08:01 itaipu joined 08:07 araujo joined, Pierre_ left 08:11 araujo left, araujo joined 08:12 araujo left
arnsholt OpenSSL is super-weird. For example there's a macro X509_name_cmp(a,b) 08:14
It expands to "X509_NAME_cmp((a), (b))", X509_NAME_cmp being a function 08:15
08:15 Pierre_ joined 08:19 Pierre_ left 08:21 Pierre_ joined 08:22 bjz joined
DrForr Given how the code has been exposed to be ... somewhat underwhelming.. this shouldn't come as surprising :) 08:27
arnsholt True that 08:30
I still am though
There's a pretty clever type-checked stack implementation though, the approach is kinda similar to Java's type erasure generics 08:31
08:37 bob777 left, bjz left, bob777 joined 08:43 mcmillhj joined 08:45 poohman left 08:46 poohman joined 08:47 mcmillhj left 08:51 poohman left 08:52 user9 joined 08:54 bjz joined 08:56 poohman joined 09:02 wamba left 09:03 Pierre_ left 09:10 Pierre_ joined 09:13 ka left, user9 left 09:14 Pierre_ left 09:17 wamba joined 09:18 mcmillhj joined 09:24 RabidGravy joined 09:25 mcmillhj left 09:34 bjz left 09:35 bjz_ joined 09:36 bjz_ left 09:37 bjz joined 09:48 araujo joined 09:49 araujo left, araujo joined 09:54 wamba left 09:56 Pierre_ joined, rindolf left 09:58 rudolfochrist left 10:01 Pierre_ left 10:11 ab6tract joined, eliasr joined 10:14 Pierre_ joined 10:19 Pierre_ left 10:23 kaare__ joined 10:24 TestNinja joined, wamba joined
TestNinja Someone messaged me on reddit... in case anyone was dying to make YouTube tutorials and wanted to know what's missing (/me certainly won't have time for any of that) gist.github.com/zoffixznet/7f7f06b...f53e6fa3f1 10:25
10:35 wamba left 10:36 Actualeyes left, Actualeyes1 joined, buggable joined, wamba joined 10:37 huggable joined, NeuralAnomaly joined 10:41 labster left
TestNinja Your regular reminder that we're looking for volunteers to fix bugs: perl6.fail/ 10:42
RT#129275 sounds like it might be easy enough, if you follow along with what it's trying to call that lands it in a loop 10:43
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=129275
10:45 LeCamarade left
TestNinja s: &infix:<==> 10:46
10:46 itaipu left
SourceBaby TestNinja, Sauce is at github.com/rakudo/rakudo/blob/7839...ic.pm#L248 10:46
10:47 itaipu joined
TestNinja s: &infix:<==>, \(Numeric, Numeric) 10:47
SourceBaby TestNinja, Sauce is at github.com/rakudo/rakudo/blob/7839...ic.pm#L250
TestNinja s: &infix:<==>, \(4.4, 4343) 10:50
SourceBaby TestNinja, Sauce is at github.com/rakudo/rakudo/blob/7839...at.pm#L227
timotimo TestNinja: i wonder if we want to have a bot that looks at the body of an RT's OP to see if there's like an irclog with m: code and paste that code into the channel for camelia to execute? 10:51
TestNinja So the fix is very likely to be just adding multi sub infix:<==>(Numeric \a, Numeric \b) { a == b } candidate in github.com/rakudo/rakudo/blob/7839...ic.pm#L250
C'mon... step right up :)
timotimo ¯\_(ツ)_/¯ might be misleading. Consider a ticket with several m: evals in the body, then someone comments and says "oh it should be this, but it's still buggy" and offers several more m: evals. What do you paste in the channel. 10:53
timotimo hm, right.
TestNinja m: "42.5".Numeric.^name.say
camelia rakudo-moar 78393d: OUTPUT«Rat␤»
10:54 jeek left
TestNinja The above fix suggested won't work for class :: does Numeric {} == class :: does Numeric {} 10:54
TestNinja & work :(
ab6tract anyone know if there is an RT already related to whatever underlying issue is causing all the pure perl http libraries to fail at concurrent requests? 10:55
gist.github.com/ab5tract/ce9b7045d...3d2688b479
s/fail/eventually fail/ 10:56
10:57 user9 joined, nadim left
brrt ab5tract: platform? 11:01
ab6tract
11:02 iH2O joined, Possum left
iH2O can one give me an example of something that would have been done differently if the design had not been frozen in December last year 11:03
s/would/could/ 11:04
stmuk you could probaby work that out from seeing what extra tests are in roast over the 6.c version of roast
11:05 bjz_ joined, bjz left
iH2O is the design really frozen, with the possible exception of design bugs 11:06
brrt i think your question answers itself :-) 11:08
iH2O thx for this introdirective answer brrr
brrt hehehe 11:09
if you want the exact nitty-gritty detail, i think there is a document somewhere that explains it
but the short version is:
future rakudo compilers are commited to ship a '6.c' compatible compiler, where 'compatible' is defined as 'passes the 6.c spec test suite'' 11:10
so what's actually frozen is the test suite, and what is promised is that compilers that claim to be perl6 ought to pass that suite 11:11
iH2O how comprehensive/exhaustive is the 6.c spec test suite
brrt github.com/perl6/roast/ see for yourself 11:12
lizmat Files=1138, Tests=52912, 269 wallclock secs (15.09 usr 4.40 sys + 1612.72 cusr 148.52 csys = 1780.73 CPU)
brrt it is fairly large :-)
11:13 ZoffixMobile joined
brrt iirc there are also some promises about deprecation cycles 11:13
ZoffixMobile That's just half of it. The full stresstest is about 129,000 tests 11:14
iH2O omg
11:14 wamba left
iH2O were each of those test hand crafted 11:14
tests 11:15
ZoffixMobile More or less. Some a run via a loop several times or the input values are generated via a loop
11:15 rindolf joined
ZoffixMobile And there's a ton of untested stuff, so it'll grow more 11:15
lizmat no, many tests of numerics are actually generated :-)
even some of the core settings code is generated :-) 11:16
ZoffixMobile Oh
:)
jnthn The stress tests also include a bunch of Unicode conformance tests that were derived from the Unicode test sutie.
yoleaux 07:50Z <brrt> jnthn: I can still repeat the hanging IO-Socket-Async.t test
ZoffixMobile jnthn, should Supplier::Preserving be tested/documented? 11:18
11:18 TEttinger left
jnthn ZoffixMobile: Don't see why not :) 11:21
I think it is tested indirectly since it's used by a few other things
ZoffixMobile Cool. 11:22
11:30 iH2O left 11:36 Possum joined 11:41 user9 left 11:42 user9 joined
ab6tract brrt: OS X 11:43
ugexe was seeing the same issues, not sure which platform he was testing on
lizmat Files=1185, Tests=129306, 386 wallclock secs (26.28 usr 5.27 sys + 2417.33 cusr 157.20 csys = 2606.08 CPU) # stresstest 11:44
timotimo ZoffixMobile: i'd maybe make some youtube introductory videos if i wasn't so prone to starting a thing and not going through with it :(
ab6tract brrt: if it behaves sanely for you, i would be very curious to hear about it
ZoffixMobile timotimo, I don't really understand people's obsession with wanting Perl 6 YouTube videos to learn Perl 6 code. Can't copy paste code. Hard to go back up a bit to make sure you understood right. etc. etc. 11:49
brrt i haven't actually tried yet
for some reason i never get to the 'lets implement something in perl6' stage
timotimo ZoffixMobile: yeah. still, there seems to be demand. and by posting "the slides" or a transscript you can alleviate the issues with video-based formats and still give video-needers what they want
brrt (unfortunately, but that is life)
ab6tract implementation? i've already written the script for you ;P 11:50
ZoffixMobile And I think all of these people who keep saying we don't have beginner tutorials should start writing some code rather than watching YouTube and doing tutorials.Albert Einstein said something along those lines.... about reading books 11:51
brrt true enough
ZoffixMobile: i think a lot of that is 'we don't have beginners tutorials to do $some-web-task'
which is true
mostly
timotimo they mostly come at night 11:52
mostly ...
11:54 dylanwh joined 11:57 ZoffixMobile left, newbie1 joined
bioduds hi guys 12:01
Gonna try to increase min tier aws swap to test perl6 install there
ubuntu 1GB RAM
anyone knows an easy way?
12:04 brrt left, brrt joined
bioduds think i got it lets give it a try 12:05
12:08 andreoss joined
ab6tract could someone on linux give this script a try? gist.github.com/ab5tract/ce9b7045d...3d2688b479 12:09
i'm sorry but i find the fact that the only reliable option for http requests is shelling out to curl to be a highly distressing fact
12:11 andrzejku joined
bioduds its common usage today 12:12
like the installing script
ab6tract bioduds: sorry?
geekosaur bioduds, not that
bioduds i wrote
oh
sorry then
another issue, ok
sorry for the noise
geekosaur bioduds is talking about curl|sh installation, not doing http requests from perl 12:13
ab6tract got it :)
bioduds :)
by the way, testing it now on 1GB 1024 swap ubuntu
geekosaur and, you are running into concurrency bugs as I understand it. many such have been resolved recently but there still remain some and apparently at least one has stuff being routed to the wrong thread?
bioduds script seems fair now that guys have made improvements in it 12:14
geekosaur or to a black hole...
timotimo the combination of "linux", "script", "shelling out", and "curl" led - unsurprisingly - to a mis-identification
m: use NothingThatExists
camelia rakudo-moar 78393d: OUTPUT«===SORRY!===␤Could not find NothingThatExists at line 1 in:␤ /home/camelia/.perl6␤ /home/camelia/rakudo-m-inst-2/share/perl6/site␤ /home/camelia/rakudo-m-inst-2/share/perl6/vendor␤ /home/camelia/rakudo-m-inst-2/share/perl6␤ CompU…»
timotimo ^- a clue why it has a line number but not a filename?
ab6tract geekosaur: black hole is more like what i am seeing 12:15
geekosaur: were you able to give it a try?
geekosaur no, I'm just going by scrollback
ab6tract i'd like to confirm whether it is os x only or a generic issue
timotimo ab6tract: i get a face full of in block at ua-tester.p6 line 48 12:16
0Use of uninitialized value $url of type Any in string context.
ab6tract timotimo: provide a url :P
geekosaur did not sleep and is not really up to much but wanted to point out that concurrency issues are known to exist still and are being actively worked on
ab6tract (sorry, i should have put a default in the sub signature)
timotimo yeah, you should have :)
or made it required
ab6tract timotimo: gist updated :) 12:17
12:17 wamba joined
timotimo what do those numbers mean? 12:17
ab6tract it prints the thread "index" that made the request 12:18
(index meaning which of the 10 threads that were spawned)
timotimo ah
andreoss from where the usage of traits as abstract classes was borrowed? 12:19
bioduds it failed 12:20
12:20 poohman left
andreoss also from where the method/submethod division was borrowed? 12:21
bioduds weird 12:23
timotimo 0000000000000000000... 12:24
ab6tract timotimo: yup. it seems like the first thread becomes the only one running after a short while
timotimo from the very start maybe
12:24 poohman joined
ab6tract timotimo: well, other threads are working here 12:25
12:25 poohman left
ab6tract but the pure perl ones do always seem to end up with only 0 surviving after a while 12:25
timotimo before that i got "0 arrived", but it was just silently erroring out because i didn't have IO::Socket::SSL installed 12:26
ab6tract slightly off-topic: anyone know how to redirect $*ERR to /dev/null ?
bioduds it failed only on the path export
weird, the problem seem to be . ~/rakudo/setpath.sh on .bashrc when I changed to source ~/rakudo/setpath.sh it works 12:28
timotimo it doesn't even get into further start blocks
oh
haha
i turned the amount of fetchers down to 100 12:29
so it only tried to start a single thread
bioduds anyway, it is great cause now i can edit on cloud ides
ab6tract $*ERR = open '/dev/null', :w; # seems to work
timotimo: :D
timotimo right. the other threads all crash and burn. sometimes a segfault happens
andreoss `submethod` does the same as `my method`? 12:31
timotimo i suspect nativecall's setup thingie isn't thread-safe
and that could cause some serious trouble
ab6tract timotimo: most of those options are PP, no?
iiuc, only libcurl (Net::Curl) uses NativeCall
12:32 zakharyas left
timotimo IO::Socket::SSL 12:32
andreoss no
timotimo all the backtraces i get come from the setup method from NativeCall
ab6tract timotimo: but that's because you are testing an https site :)
timotimo ... well. it's an additional problem :) 12:33
ab6tract so that is maybe a second issue
or perhaps related
andreoss: submethods (IIUC) are used to avoid getting called by sub-classes
12:34 bjz_ left
timotimo submethods don't get derived, but you can directly name them by prefixing the method name with the class it's from 12:34
andreoss what `my method` does?
12:35 bjz joined
timotimo i don't think 'my method' makes that much sense 12:35
andreoss m: class Foo { my method m { say "hi" } ; method z { self.m } }; class Bar is Foo {}; Bar.new.z 12:36
camelia rakudo-moar 78393d: OUTPUT«Method 'm' not found for invocant of class 'Bar'␤ in method z at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
andreoss m: class Foo { my method m { say "hi" } ; method z { m(self) } }; class Bar is Foo {}; Bar.new.z
camelia rakudo-moar 78393d: OUTPUT«hi␤»
timotimo ah, cute
andreoss m: class Foo { my method m { say "hi" } ; method z { self.&m } }; class Bar is Foo {}; Bar.new.z 12:37
camelia rakudo-moar 78393d: OUTPUT«hi␤»
timotimo i need an url that doesn't yet have https set up for it :P 12:38
maybe i'll start a server locally
andreoss seems that `my method` is not a method (cannot be called by .)
timotimo okay, that gets me "server returned no data" multiple times
ab6tract timotimo: fys.wtf 12:40
that's my testing url, anyway 12:41
12:42 LeCamarade joined, zakharyas joined
jnthn andreoss: It produces a Method object, but doesn't install it in the method table. 12:43
(The default scope being `has method`)
andreoss m: my method x { 1 }; say &x.perl; 12:45
camelia rakudo-moar 78393d: OUTPUT«method x (Mu $: *%_) { #`(Method|54790464) ... }␤»
12:53 wamba left 12:54 _slade_ joined, prammer joined
bioduds sometimes I'm feeling like I need to re-learn how to program in order to work with Perl6. you have to unlearn what you have learned, said Yoda 12:58
12:59 wamba joined 13:01 brrt left
ab6tract bioduds: its not wrong :) 13:01
*it's 13:02
bioduds it is not :) truth seems is our brains are damaged by twisted programming techniques
going to declarative programming seems like a leap of faith 13:04
13:04 wamba left
bioduds something in the back of my head keeps saying "oh, wait, should I trust this?" 13:04
perlpilot bioduds: you mistrust regex? 13:05
13:06 cdg joined
bioduds :) i didn't dive into new regex in P6 but I may 13:06
DrForr theperlfisher.blogspot.ro/ # has an article series on them from a while back. 13:07
bioduds tx DrForr
perlpilot bioduds: even P5 regex are very declarative. Do you have faith in them? Do you trust P5 regex? :) 13:11
mst how did we suddenrly get to mistrusting regexps? 13:12
13:12 AlexDaniel joined
mst did one sleep with your sister? 13:12
AlexDaniel what
that was a really weird moment to join…
huf well, reginald is a weird name... 13:13
bioduds yes, yes. I do. It's a malicious voice on the back of the head is what I mean. lol. Caused by years of suffering with that line of code you wrote that just didn't predict some crashing scenario. lol. you know what I mean?
perlpilot AlexDaniel: All #perl* are ... "interesting" ;-)
AlexDaniel perlpilot: because of mst? :)
mst AlexDaniel: you're welcome 13:14
perlpilot AlexDaniel: he's one instrument in the #perl orchestra
huf bioduds: as long as you trust psychiatrists, there is help out there.
13:15 user9 left
bioduds genau :) 13:15
13:15 mcmillhj joined
AlexDaniel committable6: releases use Foo 13:17
committable6 AlexDaniel, gist.github.com/9731f91e7237a30076...e0ae62e6f3
bioduds I need an IDE that allows to add symbols like Word 13:19
13:19 rgrinberg joined
bioduds unicode 13:19
DrForr bioduds: XCompose and friemds? 13:20
timotimo vim has a set of digraphs
LeCamarade Yes.
timotimo we do have a document about inputting unicode symbols and stuff
on the docs site
AlexDaniel bisectable6: use MONKEY-SEE-NO-EVAL; try { EVAL "use Foo"; CATCH { default { exit ($_ ~~ ‘at line’ ?? 1 !! 0) } } }
13:20 bisectable6 left
AlexDaniel dammit 13:21
13:21 Pierre__ joined, avar left, avar joined, bisectable6 joined
AlexDaniel bisectable6: use MONKEY-SEE-NO-EVAL; try { EVAL "use Foo"; CATCH { default { exit ($_ ~~ ‘at line’ ?? 1 !! 0) } } } 13:21
bisectable6 AlexDaniel, On both starting points (good=2015.12 bad=b771f1e) the exit code is 0 and the output is identical as well
AlexDaniel, Output on both points:
AlexDaniel bisectable6: use MONKEY-SEE-NO-EVAL; try { EVAL "use Foo"; CATCH { default { exit ($_ ~~ ‘at line’ ?? 1 !! 0) } } } 13:22
bisectable6 AlexDaniel, On both starting points (good=2015.12 bad=b771f1e) the exit code is 0 and the output is identical as well
AlexDaniel, Output on both points:
AlexDaniel bisectable6: use MONKEY-SEE-NO-EVAL; try { EVAL "use Foo"; CATCH { default { exit ($_ ~~ /‘at line’/ ?? 1 !! 0) } } } 13:23
13:23 bisectable6 left 13:24 bisectable6 joined
AlexDaniel bisectable6: use MONKEY-SEE-NO-EVAL; try { EVAL "use Foo"; CATCH { default { exit ($_ ~~ /‘at line’/ ?? 1 !! 0) } } } 13:24
13:24 bisectable6 left
AlexDaniel MasterDuke: :( 13:24
13:24 bisectable6 joined, avar left, avar joined, bisectable6 left 13:25 bisectable6 joined
timotimo :o 13:25
13:25 bisectable6_ joined, bisectable6 left, bisectable6_ left, MetaZoffix joined 13:26 bisectable6 joined, rgrinberg left, rgrinberg joined 13:28 skids joined
jkramer Ahoy 13:30
13:30 telex left
timotimo ohai 13:31
13:31 bisectable6 left 13:32 gfldex joined, bisectable6 joined
jkramer m: my Str %h{Int}; %h{1} = 'foo'; my $i = IntStr.new(1, '1'); %h{$i}.defined.say; 13:32
camelia rakudo-moar 78393d: OUTPUT«False␤»
jkramer Is this a bug or wanted behavior?
13:32 telex joined
timotimo hm. well, you're getting an object hash and its WHICH will probably give a very different value than the int itself ... 13:33
jkramer So the WHICH is used for the keys in hashes? 13:34
13:35 newbie1 left
timotimo in object hashes, at least 13:35
and a hash keyed on Int is an object hash
jkramer Hmm ok
timotimo though in theory we could create something special for that
in general, this is a problematic case :(
13:36 MilkmanDan left
MetaZoffix jkramer: the same issue exists with Sets/Bags/Mixes. You parametarize by Int, of which IntStr is one, but an Int object is not the same as an IntStr object, which is why the key doesn't match 13:36
jkramer Yeah, I would've thought that since the key type is Int and IntStr is an Int, it would do something smart such as using $key.Int as $key or something, no idea :)
MetaZoffix not-a-bug
jkramer Alright
MetaZoffix There's a module for this stuff in eco
Quantum something 13:37
jkramer Just stumbled over it and couldn't figure out why it wouldn't find my int key until I figured out it was an IntStr
MetaZoffix modules.perl6.org/dist/Quantum::Collapse
mst oh, neat 13:39
13:39 MilkmanDan joined 13:40 gfldex left 13:42 gfldex joined
gfldex 13:42
bioduds hey guys, is it already possible to have install.perl6.org pointing to raw.githubusercontent.com/bioduds/...install.sh ? 13:50
would you be so kind as to evaluate it? tx :)
MetaZoffix I don't think it's a good idea to point it to GitHub TBH 13:51
moritz more like, have it clone the repo and serve the file directly 13:52
MetaZoffix Yeah
moritz and maybe fork the repo into the perl6/ org, to give the community a bit more control
MetaZoffix +1 13:53
moritz I'll try to remember doing that tonight
13:53 sftp joined
bioduds great :) 13:53
13:53 MetaZoffix left
jkramer Is there a reason why I can't use the colon syntax for method arguments together with $.method instead of self.method? 13:53
bioduds its a main orientation for perl6 installation
specially for beginners
jkramer Eg self.foo: 123; works, but $.foo: 123 doesn't
bioduds it worked on all 2Gb linux tested so far
timotimo $.method really is a shortcut for when that's just an accessor 13:54
bioduds DrForr did on OpenBSD
and Debian Jessie
MacOX worked too
:)
ubuntu and centos ok
timotimo so it's a tiny bit expected that it doesn't make it sugary to add arguments
but it's still a surprising omission maybe
jkramer Yeah, especially since in the docs it says: Within methods, something like $.origin is the same thing as self.origin. 13:55
13:55 gfldex left 13:56 gfldex joined
moritz I might be a bit braindead right now, but wouldn't that change the semantics of indirect method calls when the argument is such an access? 13:56
13:56 MetaZoffix joined
moritz jkramer: the first step should be to adjust the documentation to make the limitations clearer. Would you please do that? 13:56
13:57 FROGGS joined 13:58 _slade_ left
moritz some of us are hit with the curse of not having the perspective of the unknowing 13:58
timotimo oh, that's a good point, moritz
14:00 MetaZoffix left 14:01 jmark joined 14:02 prammer left 14:04 MilkmanDan left
jkramer moritz: github.com/perl6/doc/pull/909 14:05
14:06 wamba joined, perigrin left 14:07 andrzejku left, prammer joined, andrzejku joined
dalek c: 3965a9c | (Jonas Kramer)++ | doc/Language/objects.pod6:
Clarify that "$.method:" syntax is not supported.
14:08
c: 1b67130 | moritz++ | doc/Language/objects.pod6:
Merge pull request #909 from jkramer/patch-1

Clarify that "$.method:" syntax is not supported.
timotimo cool, github rolled out some sort of reviewing process stuff
14:08 perigrin joined, perigrin left 14:09 _slade_ joined
moritz jkramer: thanks! 14:09
jkramer np :) 14:10
14:10 perigrin joined, perlawhirl joined
perlawhirl ahoy hoy 14:11
14:12 rgrinberg left
timotimo heyo 14:12
14:12 MilkmanDan joined
perlawhirl bioduds: While I am one of those who wouldn't 'curl | sh', I was looking at your install script last week and... well, a cleanup turned into a rewrite. 14:14
gist.github.com/0racle/3d157c4ff77...4dcdcee130
14:14 user9 joined
perlawhirl I've only tested it on ubuntu thus far, but it makes less assumptions about what shell you're running 14:14
and it usese pretty colours! So, umm... steal from it if you wish... or not.
14:17 rgrinberg joined 14:25 araujo_ joined, canopus left 14:26 perlawhirl left 14:27 perlawhirl joined, araujo_ left
Woodi perlawhirl: Oh noes! "command not found: curl", can it be switched to wget ? btw. I'm big fan of wget... ;) perlawhirl++ 14:27
14:27 canopus joined
perlawhirl It's already on my brain 14:27
14:27 araujo_ joined
perlawhirl I am ammending it to failover to wget if curl is unavailble 14:28
really it should probably check for the existence of either command before commencing
14:28 khw joined 14:29 araujo left
Woodi do using ~/.profile make it needs relog ? anyway *not adding* things into login would be better. user always can source ~/rakudo/setpath.sh himself 14:32
perlawhirl Woodi: yes, you would need to re-login to run .profile, but on the positive, it's shell agnostic, and only runs once (ie, not every time a new session is created) 14:34
El_Che Woodi: fan of wget? you're old like me :) 14:36
perlawhirl additionally... if i recall, bioduds was advocating for the one liner to be 'curl foo | sh ; . ~/rakudo/setpath.sh
so the export would happen at install... and path would only get set once per login session from then on
14:36 Upasaka left 14:37 Upasaka joined
perlawhirl yah, if it's a straight file download i tend to reach for wget out of habit. 14:39
but curl is what the kids are using these days
14:39 rgrinberg left
perlawhirl i'm not really old school, i just sound old :D only started using linux ~5 years ago 14:41
El_Che :) 14:49
14:53 rindolf left 14:55 _slade_ left
Woodi so, kid install rakudo into ~/rakudo; what kid should do next ? :) 14:55
14:56 rindolf joined
perlpilot Woodi: play 15:01
ugexe ab6tract: interestingly using pure perl6 (creating, writing, and reading the socket inside a single thread) makes all 1000 requests gist.github.com/ugexe/364c3cf3e588...16b4591fb5 15:02
Woodi perlpilot: so MS is only allowed to have education path ? and also you could graduate into Novell Network Sprcialist :)
in 90s ;) 15:03
15:04 Pierre__ left 15:06 pmurias joined 15:11 ufobat left 15:16 zakharyas left 15:17 rgrinberg joined
perlpilot El_Che: The difference in age between curl and wget is less than 2 years, so I'm not sure how being a fan of one or the other equates to "being old" :) 15:17
15:18 zakharyas joined
timotimo i heard curl is better than wget 15:18
perlawhirl yeah... i feel like it's the more actively developed one
timotimo also it has libcurl, i'm not sure wget has something like that? 15:19
gfldex curl was able to talk ssl when wget doesn't. That's where the curl-is-better-then-wget-myth comes from.
perlawhirl anyways...
Woodi: script has been updated now
will check for the existence of curl or wget and use whichever is available
or die with a error 15:20
perlpilot gfldex: curl also understands a butt load more protocols than wget
perlawhirl I'm sure it was probably mst who said it, but since we require perl 5.10.1 to build, the install script may as well be in perl. 15:21
takes care of a whole host of gotcha's you gotta look out for writing shell scripts 15:22
LeCamarade Yes. 15:24
15:24 domidumont left
LeCamarade I almost can't understand Perl things, especially Perl 6 things, looking any lower down the spectrum than Perl 5. 15:26
harmil_wk TimToady: Thanks for the input, I updated the exception info on Rosetta Code 15:28
15:29 lostinfog joined
perlpilot LeCamarade: Perl things are like other programming language things, but not all from the same language. :-) 15:29
LeCamarade I am about to re-write a Perl 6 app (the first re-write on this scale in the language), mostly to clean out earlier OOP naiveties. I am not yet over the initial excitement about all this. I waited ten years.
15:30 grondilu left
LeCamarade perlpilot Well, before there was a proper and well-done break with, say, bash-syntax, you could justify writing your Perl in bash. But if it is Perl 6 ... 15:31
harmil_wk Generally speaking things meant to install cleanly on Unix/Linux systems take advantage of the portability that comes from tools like install, autoconf, etc.
LeCamarade Oh, I forget you are Perl 6 _developers_. 15:32
As in, the guys making Perl 6 available. Okay ... maybe.
15:32 grondilu joined
Woodi wget (probably) always was point&download tool but curl was library first so wasn't a first choice when you just wanted to get thing into disk. wget is also spider :) 15:32
LeCamarade Still, I only script in Perl 6 now. I only code in two languages now, the other one being Haskell, which I discovered from the time of the Pugs implementation. 15:33
timotimo i tried to mirror the SDL2 wiki for reference on the train ... i got thrown out of the website relatively soon, but not after i mirrored the main page in like 20 different languages i can't read ...
perlawhirl LeCamarade: This is a general perl6 channel... for developer and users alike. 15:34
perlpilot LeCamarade: those 2 languages are quite the pair. Add a little C and you can do anything.
harmil_wk perlawhirl: wait, we let *developers* in here? When did we lower our standards?! ;)
perlawhirl HA! 15:35
LeCamarade perlpilot Exactly. The way I work, I need a "100-year language".
15:36 ka joined
ab6tract ugexe: :O 15:37
15:37 jmark left
ab6tract can't tell if that makes me feel better.. or worse 15:37
ugexe i think that just makes it some extension of the 'cant read a handle that was created in another thread', although the fact there is no error output says otherwise 15:38
timotimo don't we throw an exception when we notice something is trying to use a foreign-thread socket? 15:39
ugexe yep
but there is no error output period even though the threads quickly die off. so its possible its getting swallowed up somewhere 15:40
LeCamarade perlpilot I hope for a Perl 6 implementation that is not written in C. If it comes to it, I will resurrect Pugs. I do not want C included in the list, although it is how I earn bread these days ...
timotimo ugexe: did you put a CATCH inside the start to .say the exception? rather than just letting the thread end silently? 15:41
mst LeCamarade: well, you'd only need ro replace MoarVM
perlpilot LeCamarade: That is an odd thing to want IMHO, but a P6 implementation in Haskell would be quite awesome.
LeCamarade So, my ideal world has Perl 6 for lower-register work, which is most work, and Haskell for either what we want to prove things about or what we extract from provers.
timotimo is there a JVM that's not written in C? well, i suspect the oracle jvm is written in cpp perhaps?
perlawhirl .tell bioduds a cleanup of your script turned into a rewrite. Feel free to steal any ideas from here: gist.github.com/0racle/3d157c4ff77...4dcdcee130 15:42
yoleaux perlawhirl: I'll pass your message to bioduds.
ugexe timotimo: ah there we go!
http useragent instantly dies with segmentation fault now (no requests are sent either)
ab6tract ugexe: ... yay? ;) 15:43
ugexe net-http sends a few requests before barfing up subbuf out of range errors
ab6tract ugexe: did you see my floppy one liner for crashing net-http last night?
s/floppy/flappy/
timotimo i expect those modules have some over-sharing going on that shouldn't be happening 15:44
and thus their data structures change from under their feet and they get confused
ab6tract well
i don't know if this extends into library code
LeCamarade But I would also probably structure the processor differently in that ideal World; I would probably run on something like the GreenArrays chips and generate Forth, which would be a tolerable alternative to having any C "down there."
ugexe ab6tract: yeah, ive hit that before but never figured it out
ab6tract but even constructing a hash inside of threads can cause segfaults
timotimo some ways to segfault moarvm with concurrent access is 1) to grow a list from multiple threads or one thread and access from another (due for a fix maybe before next month's release)
and 2) to write to hashes, causing resizes 15:45
those are probably the simplest way to make your code explode
ab6tract but my script goes to lengths to make sure that there is a unique agent per thread
and each agent should be doing one operation per iteration 15:46
timotimo yeah
so there must be over-sharing happening that's not supposed to be there
LeCamarade mst I am honestly tired of the whole computing backlog we have right now. I want to take the Perl 6 clean-break all the way even to the processor. Second System Done Right. Seriously. 15:47
ugexe `From argument to subbuf out of range. Is: { ... }` # this is what net::http eventually dies with (`last if $buf.subbuf(*-$CRLF-BYTES) eq $CRLF;`)
15:48 rindolf left
LeCamarade mst, So I just want the Perl 6 spec, and I really want to leave everything else behind. Spec and tests. Good thing is, I acn use MoarVM now to start building pieces of that ideal World, and I am currently rewriting one such piece. 15:48
ab6tract ugexe++
mst LeCamarade: why leave behind rakudo and nqp? 15:49
LeCamarade: NQP is designed to have alternative implementations
15:50 rindolf joined, newbie1 joined
LeCamarade mst, Okay, but I may be programming this computer in Forth from the beginning. Can I still use more than just the spec? 15:50
www.greenarraychips.com/home/docume...html#GA144
15:50 prammer left
perlpilot
.oO( I want to build on the shoulders of giants ... after I've cut the legs out from under them and installed some new ones )
15:51
mst LeCamarade: yes
LeCamarade I am no pro in the implementation we have now, which I am using. I just know the language is perfect. Now to fix everything else. Mostly in Perl 6.,
mst LeCamarade: and yet your first proposed step is to throw away lots of perl6 code 15:52
LeCamarade: which is why I'm confused by your ideas
LeCamarade: I see no reason you couldn't write a forth implementation of NQP
LeCamarade Oh, you mean the Perl 6 bits. I get to keep those, thank you.
And even the C parts, until I have to leave them, or can leave them. 15:53
mst LeCamarade: my point is that rakudo mostly is perl6 and nqp code, and then nqp abstracts stuff like MoarVM/JVM/etc.
so starting with 'just the spec' implies throwing away rakudo
rather than just writing a new nqp backend
15:54 domidumont joined, melezhik_ joined, andrzejku left
pmurias a new QAST backend 15:54
nqp is used to refer both to the NQP language itself and the QAST + runtime 15:55
15:55 zakharyas left
LeCamarade Okay, so I would compile Rakudo with something like --gen-ga144vm-backend? 15:56
Hmm.
pmurias LeCamarade: Rakudo compiles Perl 6 to an AST called QAST 15:57
perlpilot LeCamarade: Do you know about github.com/edumentab/rakudo-and-nq...als-course ?
LeCamarade mst, Okay the other problem now is that I intend to kick out Unix, for sure.
mst LeCamarade: perl6 expects surprisingly little unix
LeCamarade: it doesn't even have fork()
15:58 rgrinberg left
LeCamarade perlpilot No, I hadn't. Thanks; good to have this one. 15:58
16:01 AlexDaniel left, andrzejku joined 16:03 ab6tract left
LeCamarade mst, What I mean is: how much of Rakudo can I use if the "kernel" is ... a Forth machine? 16:03
16:03 mcmillhj left
japhb LeCamarade: That depends on how big your Forth's memory space is. You won't fit it in a 16-bit Forth. 16:04
At the moment, you couldn't even fit Rakudo in something with a 24-bit address space. (I dunno about NQP, that might fit.) 16:05
pmurias LeCamarade: you want to compile and write programs on a Forth machine or just run then on it? 16:06
LeCamarade japhb So you see my problem now? However, I know that I will not stop writing Perl 6 code, and the computer may change from the Intel X1000 I am trying to compile Rakudo to, to that GA144.
16:08 cibs left 16:09 mcmillhj joined, cibs joined
LeCamarade pmurias Good question. Here is the background: I expect three levels of "DevOps" (for lack of a better term) maintenance of these computers. The important consideration now, or here, there is the language, on each of these levels. 16:09
japhb LeCamarade: The problem is that Perl 6 *itself* is large enough, I don't know that there's any encoding of it that would fit into an 18-bit address space.
I suppose if you designed your own virtual memory and paged it ... 16:10
LeCamarade japhb Well, Chuck Moore has a lousy "solution" that he demo'd in one of his fireside chats, but I was not moved. It is a problem with that chip's design. But consider an alternative Forth machine. 16:11
mst LeCamarade: given a sufficiently powerful forth machine, I would presume ... quite a bit? 16:12
16:12 rgrinberg joined
japhb LeCamarade: If you had a 32-bit Forth, you could do it no problem, I suspect -- and then it would be exactly the right thing to create an nqp-forth backend. The biggest issue I think is just that Perl 6 is a large language, so if you start going small, you start having to invent pretty nifty methods of packing it all in and not completely losing every last bit of performance. 16:13
mst are you trying to use this example to scare people because it's not x86? because I am aware things that aren't x86 exist without that :)
LeCamarade So, Forth machine, with virtual memory if necessary, scripted in Perl 6, and everything else (in this case, if I am justified, including the Perl 6 compiler, or bits of it) in Haskell.
japhb So Perl 6 on (possibly NQP on) Haskell on Forth?
LeCamarade Yes. 16:14
16:14 mcmillhj left, Xliff left
japhb Woah. That is ... going to stretch your time commitments. 16:14
16:15 domidumont left
LeCamarade Or my wallet? :-D But seriously, thank God I have Perl 6, eh? More-seriously, that is why I have started writing some of the Perl 6 stuff. I have no time. 16:15
... to waste. :-D
ugexe m: say Buf.new(1,2,3,4,5).subbuf(0..10) 16:16
camelia rakudo-moar 4a954d: OUTPUT«Buf:0x<01 02 03 04 05 00 00 00 00 00 00>␤»
ugexe m: say Buf.new(1,2,3,4,5).subbuf(*-10)
camelia rakudo-moar 4a954d: OUTPUT«From argument to subbuf out of range. Is: { ... }, should be in 0..5; use *-5 if you want to index relative to the end␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
japhb I see a lot of Forths written on Haskell, but Google isn't showing me much of the converse
ugexe should be in 0..5, yet the previous example is 0..10
16:16 prammer joined
japhb Ooh, though I did find a reference to a Haskell written in Lisp: plus.google.com/+JosieAltzman/posts/hnnhraDx212 16:17
16:18 Xliff joined 16:20 prammer left
Woodi tinkering++ :) 16:20
16:20 MetaZoffix joined
LeCamarade japhb One alternative has been to do ForthOS on this X1000 and start there. But I still think Chuck Moore may deliver a final exegesis to his disciples, of whom I am one, as indeed TimToady did with Perl 6. So I am not yet decided on the computer itself. 16:21
pmurias LeCamarade: what would be the point of developing on a machine that's not even 32bit? 16:24
16:24 mcmillhj joined
pmurias LeCamarade: or is it meant to be a self imposed challenge? 16:25
japhb pmurias: Chuck Moore disciple. It is a powerful muse.
*He's a
16:27 rgrinberg left
Woodi v6 on Forth is probably fastest way to have Perl6 in space :) 16:27
16:27 rgrinberg joined, Actualeyes1 left
pmurias Making Rakudo compile Perl 6 to forth by adding a backends seems like a feasible project 16:28
reimplementing Rakudo on a 18bit machine much less so
DrForr It gives you a chance to use UTF-9 :) 16:29
16:29 mcmillhj left, TimToady left
LeCamarade pmurias Well, I am convinced that the chips that willbe strategic victors in the turbulent times coming ahead, especially once EMP weapons really come of age, will be like these chips. 16:30
pmurias LeCamarade: for developer workstations? 16:31
16:31 TimToady joined, melezhik_ left
LeCamarade japhb Hey! :-D I also have class (Haskell) and religion (Perl 6). But I just think Chuck Moore's approaches are the "survivors" in the future, so I have sat at his feet. 16:31
Woodi LeCamarade: Forth is stack based ? 16:32
LeCamarade pmurias Portable e-Bibles. Home computers.
Xliff m: Buf.^methods.say
camelia rakudo-moar 915470: OUTPUT«(reallocate)␤»
LeCamarade Woodi, Yes, it is.
Xliff m: Buf.new.^methods.say
camelia rakudo-moar 915470: OUTPUT«(COMPARE unpack allocate of join Int encoding subbuf Numeric reverse chars bytes contents SAME decode reallocate WHICH Method+{<anon|74835536>}.new Method+{<anon|74835536>}.new Method+{<anon|74835536>}.new pop shift splice Method+{<anon|74835536>}.new Meth…» 16:33
Xliff That took a long time. 16:34
LeCamarade pmurias Then later, if it is interesting, desktop computers. And then "computers" as we have understood them since the 1990s. 16:35
16:36 mcmillhj joined 16:39 pmurias left 16:40 buggable left, mcmillhj left, buggable joined
LeCamarade Even the calendar is changing on this system. Au revoir, Gregoire. So, as it happens, an implementation of this calendar is, for the second time, the "first" thing I write in Perl 6: 16:41
www.wikiwand.com/en/Hanke-Henry_Pe...t_Calendar
16:43 prammer joined 16:48 domidumont joined 16:50 mcmillhj joined 16:54 committable6 left 17:00 araujo__ joined
moritz .u ١ 17:00
yoleaux U+0661 ARABIC-INDIC DIGIT ONE [Nd] (١)
17:02 araujo__ left
mst LeCamarade: also Swatch Beat Time, or a 2^N based variant 17:02
17:02 canopus left, araujo__ joined 17:03 araujo_ left
LeCamarade mst, Very interesting. I had no idea about this one. 17:04
17:05 araujo__ left, araujo__ joined 17:07 araujo__ left
mst 65536 ticks per day might work out nicely, that makes them ~1.3s 17:07
17:07 canopus joined 17:08 araujo__ joined
mst and then a kilotick becomes ~22m 17:08
and a megatick 15.25 days etc. 17:09
17:17 MetaZoffix left
ugexe ab5tract_: I've sorta narrowed it down to `$sock.recv` not always returning any data. for Net::HTTP I changed the recv for byte 1 inside a loop that only ends once it gives a true value for $data.?bytes. I'm getting 950-1000 requests through this way 17:18
those other 50ish requests die from a strange error `Method 'has-phasers' not found for invocant of class 'Buf[uint8]'` 17:19
see: gist.github.com/ugexe/c7a14c1e78b1...220fa225e6
17:20 itaipu left, itaipu joined
ugexe if I run it enough times I occasionally get this: 17:32
*** Error in `/home/nickl/.rakudobrew/moar-blead-nom/install/bin/moar': double free or corruption (fasttop): 0x000000000cf388b0 ***
17:33 ab6tract joined 17:34 wamba left 17:36 andreoss left 17:42 rindolf left
gfldex ugexe: do you got more then 1 thread? 17:42
ugexe yes
gfldex ugexe: i get the same (and segfaults) with more then 1 thread 17:44
ugexe with the change in the gist its able to keep 9/10 threads running until the end sending 950 http requests. without the change all the threads die before hitting 150 17:47
17:50 zakharyas joined
ab6tract ugexe: thanks again for your pure perl 6 version! 17:50
it's about 3 seconds faster than shelling out
which was some good news, at least 17:51
ugexe ab6tract: well its also not parsing the request. its just getting the first `line` which may or may not even be valid
timotimo ugexe, cant look necause phone, what changes did that for you?
ab6tract ugexe: fair enough :) 17:52
timotimo oh
ugexe timotimo: $buf = $sock.recv(1) to $buf = { loop until $sock.recv(1) actually gives a byte }
timotimo well tjose errors you pasted do hint at memory corruption that can come fromconxurrent access to some things that dont support it 17:53
El_Che Fresh rakudo rpm's/debs for rakudo users: github.com/nxadm/rakudo-pkg/releases/ 17:54
ab6tract i wonder if $sock.recv should be returning a promise ..
moritz on IO::Socket::INET or on the async socket stuff? 17:56
ab6tract ugexe: actually the pp6 version seems to have the same output as the shell out
moritz: ah, right. i forgot about IO::Socket::Async
ugexe ab6tract: the difference is a single character when it happens 17:57
that throws off subbuf for net-http, http-useragent, etc 17:58
ab6tract moritz: my first thought was actually that maybe the higher level agent libraries should be returning promises
ugexe: ouch :(
17:59 ka left
ab6tract ugexe: and that's what is breaking out of the threads early? 18:00
*breaking them out
ugexe ab6tract: it seems that way. there are still segfaults but they happen way less 18:01
18:03 rgrinberg left, rgrinberg joined
ugexe fwiw net-http uses a mix of promises and supply, but because of accessing data from handles outside the originating thread it still ends up needing to block 18:03
18:06 rindolf joined
ugexe i can't figure out where this "Method 'has-phasers' not found for invocant of class 'Buf[uint8]'" is coming from 18:07
ab6tract maybe it's coming from a scope that has suddenly gone missing? 18:10
s: method has-phasers
SourceBaby ab6tract, Something's wrong: ␤ERR: ===SORRY!=== Error while compiling -e␤Missing block␤at -e:6␤------> put sourcery( method has-phasers ⏏)[1];␤
ab6tract (my first time trying that)
geekosaur s: Buf, "has-phasers", \() 18:12
SourceBaby geekosaur, Something's wrong: ␤ERR: Too many positionals passed; expected 2 arguments but got 3␤ in sub sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 25␤ in block <unit> at -e line 6␤␤
geekosaur whoops 18:13
ab6tract s: Block, "has-phasers"
SourceBaby ab6tract, Sauce is at github.com/rakudo/rakudo/blob/e406...ock.pm#L36
ab6tract pretty darn neat. Zoffix++ ++ ++ 18:14
18:15 trnh joined
ab6tract s: Any, "has-phasers" 18:17
SourceBaby ab6tract, Something's wrong: ␤ERR: Type check failed in binding to &code; expected Callable but got Nil (Nil)␤ in sub do-sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 42␤ in sub sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 33␤ in block <unit> at -e line 6␤␤
ab6tract s: Any-iterable, "has-phasers"
SourceBaby ab6tract, Something's wrong: ␤ERR: ===SORRY!=== Error while compiling -e␤Undeclared name:␤ Any-iterable used at line 6␤␤
ab6tract nope, they seem to only be on the block 18:18
so it seems like there is a bug somewhere that causes a buf to be put in a container where a block should be (according to core, presumably?) 18:19
18:20 itaipu left, itaipu joined, firstdayonthejob joined 18:23 labster joined 18:26 ft left 18:27 zakharyas left, MetaZoffix joined
ab6tract there are two calls to has-phasers Any-iterable-methods.pm, one is guarded by Callable:D in the signature and the other by nqp::istype(&block, Block) 18:28
*in Any-iterable-methods.pm
18:29 rgrinberg left
ab6tract so yeah, that is pretty darn mysterious, ugexe :S 18:29
lizmat this smells more like memory corruption 18:31
ab6tract lizmat: indeed
lizmat and the type of error I get when running "HARNESS_TYPE=6 make spectest"
about 50% of the time, it stops somewhere with having a method called on something it cannot handle 18:32
lizmat starts a few runs
18:33 cdg left
ab6tract "mysterious" here being an operative word for "beyond my scope of capability and understanding with regard tp addressing the issue" :) 18:34
18:34 lostinfog left
ab6tract it's not that the Buf is in the wrong container, but rather that the wrong container has shown up in the wrong place 18:34
and sometimes not a full container, which explains some of the more low level crashing i have seen 18:35
18:37 prammer left
lizmat typical error message with TEST_HARNESS=6: Method 'end-entries' not found for invocant of class 'Match' 18:37
another one: Method 'made' not found for invocant of class 'TAP::Runner::State' 18:40
so yes, this type of error is more common :-(
ab6tract :(
lizmat and one shudders at the thought for the cases it *does* find the method, but simply does the wrong thing... 18:41
18:47 ka joined
ab6tract well, i *am* heartened that i've so far had a 100% success rate with the IO::Socket::INET version of the http stress test 18:47
18:47 darutoko left 18:50 itaipu left 18:51 itaipu joined
avar What's the inverse of $num.base($x) 18:53
i.e. I have a string in base $x and want $num
MetaZoffix I don't think there is one, other than the nqp op
m: :16('FF').say # but you can't use the variable for base 18:54
camelia rakudo-moar d63f98: OUTPUT«255␤»
MetaZoffix m: use MONKEY-GUTS; my $radix = 16; my $n = "FF"; say nqp::radix($radix, $n, 0, 0)[0] 18:55
camelia rakudo-moar d63f98: OUTPUT«255␤»
avar yay, thanks :)
18:56 firstdayonthejob left 18:58 melezhik_ joined
melezhik_ Hi Perl6 gurus! 18:58
MetaZoffix \o
18:59 prammer joined
melezhik_ sorry if repeat my question , probably I asked before, but not sure if remember the answer ... 18:59
MetaZoffix The captures again? :)
melezhik_ how to create a regexp expression from given string?
MetaZoffix m: my $re = '\d' ~ '\d+'; say 'Bond 007' ~~ /<$re>/ 19:00
19:00 rgrinberg joined
camelia rakudo-moar d63f98: OUTPUT«「007」␤» 19:00
melezhik_ Zoffix, Hi! captures are fine now, it was usefull discussion and your paper about comb, I have read it, it's cool, I guess I am going to use comb to handle captures ...
Thanks, Zoffix! 19:01
my $pattern = '(\w+)'; my @foo = 'foo=bar foo=bar foo=baz'.comb(/<$pattern>/,:match)>>.Slip.>>.Str; say @foo.join('|'); 19:03
the result is empty, though ...
MetaZoffix m: my $pattern = '(\w+)'; my @foo = 'foo=bar foo=bar foo=baz'.comb(/<$pattern>/,:match)>>.Slip.>>.Str; say @foo.join('|');
19:03 prammer left
camelia rakudo-moar d63f98: OUTPUT«␤» 19:03
MetaZoffix s: 'x', 'comb', \(/^/, :match) 19:04
SourceBaby MetaZoffix, Sauce is at github.com/rakudo/rakudo/blob/e406...tr.pm#L396
melezhik_ compared to:
my @foo = 'foo=bar foo=bar foo=baz'.comb(/(\w+)/,:match)>>.Slip.>>.Str; say @foo.join('|');
foo|bar|foo|bar|foo|baz 19:05
probably something I did wrong?
MetaZoffix m: my $pattern = '(\w+)'; my @foo = 'foo=bar foo=bar foo=baz'.comb(/<$pattern>/,:match).join('|').say 19:06
camelia rakudo-moar d63f98: OUTPUT«foo|bar|foo|bar|foo|baz␤»
MetaZoffix m: my $pattern = '(\w+)'; my @foo = 'foo=bar foo=bar foo=baz'.comb(/<$pattern>/,:match); @foo.join('|').say
camelia rakudo-moar d63f98: OUTPUT«foo|bar|foo|bar|foo|baz␤»
19:07 mcmillhj left
melezhik_ so, Zoffix:, no need to have a >>.Slip.>>.Str ? 19:07
MetaZoffix melezhik_: not in this case. /<$pattern>/ is non-capturing and you get the full match. /(\w+)/ is capturing. So when you .Slip you get the captures, which are present in the latter but not in the former 19:08
melezhik_: eventhough you have '(\w+)' in your string, that capture doesn't get captured in the regex itself
m: my $pattern = '\w+'; 'foo=bar foo=bar foo=baz'.comb(/<$pattern>/).join('|').say 19:09
camelia rakudo-moar d63f98: OUTPUT«foo|bar|foo|bar|foo|baz␤»
19:10 prammer joined
melezhik_ can't still get the difference, b/w w+ and (\w+) 19:10
MetaZoffix What's "b/w"?
19:11 mcmillhj joined
MetaZoffix m: my $pattern = '\w+'; 'foo=bar foo=bar foo=baz'.split(/<!$pattern>+/).join('|').say; # weeeeeeeeeeeeeeeeeeeeeeeeee 19:11
melezhik_ between
camelia rakudo-moar d63f98: OUTPUT«(timeout)»
19:12 firstdayonthejob joined
MetaZoffix melezhik_: "w+" is 1 or more letters 'w'. \w+ is one or more "letters". \w doesn't capture anything. (\w) creates a capture. When you do a regex match, you get the Match object. One of its attributes is what it matched. Another one also provides all of the captures it has. If you want ALL of the text your regex matches, you don't need to capture it, you can just use the attribute that gives you what matched 19:13
m: say 'foo=bar' ~~ /(\w+) '=' (\w+)/
harmil_wk Oooh, I'd not thought of using named parameters with defaults in a for loop before, but I sort of accidentally jumped into it.
camelia rakudo-moar d63f98: OUTPUT«「foo=bar」␤ 0 => 「foo」␤ 1 => 「bar」␤»
harmil_wk m: for ^10 -> $i, :$j=$i.base(3) { say "$i, $j" }
camelia rakudo-moar d63f98: OUTPUT«0, 0␤1, 1␤2, 2␤3, 10␤4, 11␤5, 12␤6, 20␤7, 21␤8, 22␤9, 100␤»
MetaZoffix melezhik_: ^ above, the first output is what matched, followed by the two captures
m: say 'foo=bar' ~~ /\w+ '=' \w+/ 19:14
camelia rakudo-moar d63f98: OUTPUT«「foo=bar」␤»
ab6tract harmil_wk: nice one :D
MetaZoffix And now the captures are not there, but you still get the string containing what matched
harmil_wk++ neat :)
melezhik_ Zoffix, sorry, let me think abit on all your recent words, I am abit confused though ...
harmil_wk It works because it doesn't change the arity from 1. If you use a positional it gets overwritten. 19:15
19:15 mcmillhj left 19:16 domidumont left
ab6tract harmil_wk: yeah, that's an awesome trick! hadn't thought of that before 19:16
harmil_wk I may never use .map in trivial cases like "for (^10).map: */2 -> $i ..." again
MetaZoffix melezhik_: if you want to grab some apples and your friend asked you to get them 10 apples too. You put 10 in a bag (capture) for your friend, then toss the bag and another 20 apples into the box (matched string). If you dump (print) your box, you get all the apples (match) and you can also get a separate bag (capture) of 10 apples. But if all you're taking is 10 apples, you may forgo putting them in a bag (capture) first, since tha 19:18
n
moritz harmil_wk: for (1..10) >>/>> -> $i { ... } 19:19
harmil_wk: or even for 1..10 X/ 2 -> $i { ... }
for (1..10) >>/>> 2 -> $i { ... }
harmil_wk moritz: yeah, if there's an operator for it that's actually cleaner
Also counting lists: 19:20
m: for <a b c> -> $i, :$j = (state $n = 0)++ { say "$i, $j" }
camelia rakudo-moar d63f98: OUTPUT«a, 0␤b, 1␤c, 2␤»
MetaZoffix m: for <a b c>.kv -> $j, $i { say "$i, $j" }
camelia rakudo-moar d63f98: OUTPUT«a, 0␤b, 1␤c, 2␤»
harmil_wk MetaZoffix: does that always work, or is it just a property of the arrays? Can i do that on an iterator or whatever? 19:21
melezhik_ Ok, Zoffix, let me reshape my question, reading your post on comb I thought that I need to have a >>.Slip>>.Str at then end of comb construction, like you have there - my %things = 'moo=meow ping=pong'.comb(/(\w+) '=' (\w+)/, :match)».Slip».Str;
now I see that sometimes it works, like in your example, and sometimes it does not work like in mine 19:22
MetaZoffix melezhik_: right, but look at the regex. It has captures. Yours doesn't
adding () into the string you're trying to use doesn't count, because in the regex itself there's nothing capturing the Match that would provide it
m: <a b c>, 'kv', \() 19:23
camelia rakudo-moar d63f98: OUTPUT«WARNINGS for <tmp>:␤Useless use of constant string "kv" in sink context (lines 1, 1)␤Useless use of constant value a b c in sink context (lines 1, 1, 1, 1, 1, 1)␤»
MetaZoffix s: <a b c>, 'kv', \()
SourceBaby MetaZoffix, Sauce is at github.com/rakudo/rakudo/blob/d63f...st.pm#L811
MetaZoffix harmil_wk: ^ seems to be provided by List
oh
melezhik_ Zoffix, ok, let me recal my example to be accurate, maybe we are talking about different things ...
mine example is ...
harmil_wk MetaZoffix: I tried it on a lazy gather and it worked. Good enough for me. 19:24
MetaZoffix harmil_wk: well... it's a method that produces those results on lists. I'm unsure what you mean by "always work".
ab6tract this is an important distinction of regexes in perl 6, iiuc
MetaZoffix On hashes it gives keys/values
ab6tract interpreted strings do not get to be treated as regexes
*interpolated
melezhik_ so mine example is:
my $pattern = '(\w+)'; my @foo = 'foo=bar foo=bar foo=baz'.comb(/<$pattern>/,:match)».Slip».Str; say @foo.join('|');
harmil_wk MetaZoffix: yeah, that would be a problem I guess... generally not my problem right now.
MetaZoffix ab6tract: we're talking about those that do
harmil_wk Nifty 19:25
ab6tract gotcha
melezhik_ it does have a captures?
MetaZoffix melezhik_: no.
melezhik_ does not it?
MetaZoffix melezhik_: well.. it does if you use (\w+) directly in the regex
melezhik_ is my $pattern = '(\w+)' not a captures>;
?
but this is well, "comipiled" regexp
becase later on I have a .comb(/<$pattern>/ ... 19:26
so is it different?
MetaZoffix Yeah
melezhik_ sorry for typo, I meant compiled 19:27
MetaZoffix Because <...> is non-capturing
1 sec. Lemme find a ticket where I first thought this was a bug
melezhik_ ahh, ok I see now!
now it makes a sence ...
MetaZoffix melezhik_: here's pmichaud++'s explanation: rt.perl.org/Ticket/Display.html?id...xn-1423368 19:28
ab6tract this is what i meant about interpolated strings not "speaking regex"
perlpilot eh?
MetaZoffix But they are "treated like regexes"
m: my $re = '\w+'; say 'foo' ~~ /<$re>/
camelia rakudo-moar d63f98: OUTPUT«「foo」␤»
ab6tract yeah
19:29 bioduds left
perlpilot <...> only captures if the first character is alphabetic IIRC 19:29
MetaZoffix ah
perlpilot For <$str> the first char is $, so no capture
melezhik_ ahh, ok, so what do you suggest ?
19:30 mcmillhj joined
perlpilot <foo=$bar> usually does the trick 19:30
moritz <name=$str>
MetaZoffix m: my $re = '(\w+) (\w+)'; say 'foobar' ~~ /<foo=$re>/
camelia rakudo-moar d63f98: OUTPUT«「foobar」␤ foo => 「foobar」␤ 0 => 「fooba」␤ 1 => 「r」␤»
TimToady m: my Str %h{Int()}; %h{1} = 'foo'; my $i = IntStr.new(1, '1'); %h{$i}.defined.say; # this will work someday
camelia rakudo-moar d63f98: OUTPUT«Type check failed in binding to key; expected Int(Any) but got Int (1)␤ in block <unit> at <tmp> line 1␤␤»
ab6tract i was wrong about that part, i hadn't thought about it being a constraint of the interpolation "operator" (so to speak.. not sure what the angle brackets are called in regex-land)
TimToady jkramer: ^^^
19:31 adrusi joined, adrusi left
melezhik_ I have an input sting, with a "capture" blocks '(' ')' and I want to compile a regexp upon this string and I want to access to captured data, and this one is a not named captures ... 19:31
MetaZoffix m: my $pattern = '(\w+)'; my @foo = 'foo=bar foo=bar foo=baz'.comb(/<mymatch=$pattern>/,:match)».<mymatch>».Slip.».Str; say @foo.join('|'); 19:32
camelia rakudo-moar d63f98: OUTPUT«foo|bar|foo|bar|foo|baz␤»
MetaZoffix mabby something like that
19:33 adrusi joined, hankache joined
MetaZoffix m: my $pattern = '(\w+"="\w+)'; my @foo = 'foo=bar foo=bar foo=baz'.comb(/<mymatch=$pattern>/,:match)».<mymatch>».Slip.».Str; say @foo.join('|'); 19:33
camelia rakudo-moar d63f98: OUTPUT«foo=bar|foo=bar|foo=baz␤»
MetaZoffix m: my $pattern = '(\w+"=")(\w+)'; my @foo = 'foo=bar foo=bar foo=baz'.comb(/<mymatch=$pattern>/,:match)».<mymatch>».Slip.».Str; say @foo.join('|');
camelia rakudo-moar d63f98: OUTPUT«foo=|bar|foo=|bar|foo=|baz␤»
hankache evening #perl6 19:34
MetaZoffix \o
ab6tract can't you do /(<$my-matcher>)/ ?
melezhik_ Zoffix: this works, thanks
MetaZoffix It seems to just capture that one capture:
m: my $re = '(\w+) (\w+)'; say 'foo' ~~ /(<$re>)/
camelia rakudo-moar d63f98: OUTPUT«「foo」␤ 0 => 「foo」␤»
MetaZoffix m: my $re = '(\w) (\w+)'; say 'foo' ~~ /(<$re>)/ 19:35
camelia rakudo-moar d63f98: OUTPUT«「foo」␤ 0 => 「foo」␤»
19:35 mcmillhj left
TimToady .tell andreoss traits are from Smalltalk, but we renamed them roles because we also use them for interfaces and for generics; otoh if by 'traits' you mean 'is foo()' and such, we borrowed those mostly from English 19:35
yoleaux TimToady: I'll pass your message to andreoss.
vcv m: my $pattern = '(\w+)'; my @foo = 'foo=bar foo=bar foo=baz'.comb(/<$pattern>/,:match)>>.Str; @foo.join('|').say; 19:36
camelia rakudo-moar d63f98: OUTPUT«foo|bar|foo|bar|foo|baz␤»
MetaZoffix "we borrowed those mostly from English" :D Awesome
vcv: that doesn't work
m: my $pattern = '(\w+"=")(\w+)'; my @foo = 'foo=bar foo=bar foo=baz'.comb(/<$pattern>/,:match)>>.Str; @foo.join('|').say;
camelia rakudo-moar d63f98: OUTPUT«foo=bar|foo=bar|foo=baz␤»
MetaZoffix ^ it uses the entire match, rather than captures 19:37
vcv ah
TimToady .tell andreoss as for method/submethod, we just made that up ourselves because we wanted to be able to isolate the initialization work for each part of an object, class by class, so we needed methods that aren't inherited
yoleaux TimToady: I'll pass your message to andreoss.
ab6tract m: my $go = 'gogogogogo'; my $match = '\w.'; my $r = ($go ~~ / (<$match>)* /); dd $r
camelia rakudo-moar d63f98: OUTPUT«Match $r = Match.new(ast => Any, list => ([Match.new(ast => Any, list => (), hash => Map.new(()), orig => "gogogogogo", to => 2, from => 0), Match.new(ast => Any, list => (), hash => Map.new(()), orig => "gogogogogo", to => 4, from => 2), Match.new(ast => …»
melezhik_ yeah, look like a final "comb" variant is >>.Str , not >>.Slip>>.Str ? 19:38
19:38 itaipu left, labster left
ab6tract but i really should stay quiet on the topic, i haven't done enough regexes and might end up confusing more than helping 19:38
melezhik_ and it works with captures?
MetaZoffix melezhik_: >>.Slip>>.Str gives you Match-object captures from a match and coerces all of them to Str... >>.Str coerses the match to Str 19:39
19:39 itaipu joined
ab6tract m: my $go = 'gogogogogo'; my $match = '\w.'; my $r = ($go ~~ / (<$match>)* /); say $r>>.Slip>>.Str 19:39
MetaZoffix If you don't have any captures, >>.Slip will give you empty
camelia rakudo-moar d63f98: OUTPUT«(go go go go go)␤»
TimToady m: my $re = '(\w) (\w+)'; say 'foo' ~~ /(<re=$re>)/
camelia rakudo-moar d63f98: OUTPUT«「foo」␤ 0 => 「foo」␤ re => 「foo」␤ 0 => 「f」␤ 1 => 「oo」␤»
MetaZoffix m: my $re = '(\w) (\w+)'; say 'foo' ~~ /<re=$re>/
camelia rakudo-moar d63f98: OUTPUT«「foo」␤ re => 「foo」␤ 0 => 「f」␤ 1 => 「oo」␤»
19:40 MetaZoffix left, mcmillhj joined
melezhik_ Zoffix: sure, looks like >>.Str coerses the captures to Str? (If we have any ... ) 19:41
my $pattern = '(\d+)'; my @foo = 'one for 1 two for 2'.comb(/<$pattern>/,:match)>>.Str; @foo.join('|').say; 19:43
1|2
ahh, I was wrong 19:44
it does coerses matches, not captures
my $pattern = 'for\s(\d+)'; my @foo = 'one for 1 two for 2'.comb(/<$pattern>/,:match)>>.Str; @foo.join('|').say;
for 1|for 2 19:45
yeah, not it's clear for me ...
19:45 mcmillhj left
melezhik_ now it's clear for me 19:45
19:49 labster joined
melezhik_ so as far as I got the only way is to use named cpatures ? 19:50
or iterate over match objects and extract caprured parts from them ... 19:55
ah, but it does not help me beacause of mentioned - rt.perl.org/Ticket/Display.html?id...xn-1423368 ): 19:56
as captures are not preserved during interpolation ... 19:57
19:57 mcmillhj joined 19:59 trnh left 20:00 prammer left 20:02 mcmillhj left 20:03 mcmillhj joined
perlpilot Is there some idiom for reading in paragraph mode other than $fh.nl-in = "\n\n"? 20:03
20:04 melezhik_ left
perlpilot I kinda want something like for line(:paragraph) -> $p { ... } 20:04
s/line/lines/
20:05 rindolf left 20:06 melezhik_ joined 20:10 vike joined 20:11 rgrinberg left 20:12 espadrine joined 20:15 sena_kun joined, riatre left 20:17 sena_kun left 20:18 riatre joined
vcv s: 'foo', 'match' 20:18
SourceBaby vcv, Sauce is at github.com/rakudo/rakudo/blob/d63f...tr.pm#L420
20:20 sivoais left 20:22 sivoais joined, committable6 joined
harmil_wk perlpilot: we'll call that linens... 20:23
melezhik_ Ok, Zoffix: thanks alot. I guess named capture for interpolated regexp string works for me:
m: my $pattern = '\W(\w+)'; my @foo = 'foo=bar foo=bar foo=baz'.comb(/<mymatch=$pattern>/,:match)>>.<mymatch>».Slip.».Str; say @foo.join('|');
camelia rakudo-moar ab68f8: OUTPUT«bar|foo|bar|foo|baz␤»
melezhik_ should carefully test it anyway on my side and in case issues let you know, thanks again! 20:25
20:28 espadrine left
avar $ perl6 -MMONKEY-SEE-NO-EVAL -e 'say EVAL ":{@*ARGS[0]}(qq[{@*ARGS[1]}])"' 36 D18 20:32
16892
shortest way to find out what D18 in base36 is, with dynamic base?
Quite annoying that it needs that MONKEY-SEE-NO-EVAL for a oneliner 20:33
MasterDuke m: use nqp; my $b = 36; say nqp::radix($b, 'D18', 0, 0)[0]
camelia rakudo-moar ab68f8: OUTPUT«16892␤»
20:33 samcv joined 20:37 melezhik_ left 20:39 ka left 20:41 ab6tract left 20:44 AlexDaniel joined
hoelzro m: say :36('D18') 20:46
camelia rakudo-moar ab68f8: OUTPUT«16892␤»
hoelzro oh, *dynamic* base
moritz m: say UNBASE 36, 'D18' 20:47
camelia rakudo-moar ab68f8: OUTPUT«16892␤»
moritz ok, I cheated
we could just expose this as a public library method on Str
vcv s: UNBASE 20:50
SourceBaby vcv, Something's wrong: ␤ERR: ===SORRY!=== Error while compiling -e␤Calling UNBASE() will never work with any of these multi signatures:␤ (Int:D $base, Any:D $num) ␤ (Int:D $base, Str:D $str)␤at -e:6␤------> put sourcery( ⏏UNBASE )[1];␤
20:50 mcmillhj left
vcv s: 'UNBASE' 20:50
SourceBaby vcv, Something's wrong: ␤ERR: Cannot resolve caller sourcery(Str); none of these signatures match:␤ ($thing, Str:D $method, Capture $c)␤ ($thing, Str:D $method)␤ (&code)␤ (&code, Capture $c)␤ in block <unit> at -e line 6␤␤
TestNinja SourceBaby, help 20:51
SourceBaby TestNinja, Use s: trigger with args to give to sourcery sub. e.g. s: Int, 'base'. See modules.perl6.org/dist/CoreHackers::Sourcery
TestNinja vcv, ^
s: &UNBASE
SourceBaby TestNinja, Sauce is at github.com/rakudo/rakudo/blob/ab68...r.pm#L2213
20:52 TestNinja left, mcmillhj joined
skids What nobody liked "debase"? :-) 20:53
20:54 ka joined 20:56 itaipu left 20:57 itaipu joined, mcmillhj left, ptolemarch left 21:01 cyphase left
geekosaur base-ist... 21:03
21:03 mcmillhj joined, eliasr left 21:04 kaare__ left 21:07 cyphase joined, skids left 21:08 bisectable6 left, mcmillhj left, bisectable6 joined, committable6 left 21:10 bisectable6 left, bisectable6 joined, bisectable6 left 21:11 hankache left, trnh joined
raydiak probably slow, but fwiw... 21:12
m: my ($val, $base) = "D18", 36; say +val ":$base\<$val>"
camelia rakudo-moar ab68f8: OUTPUT«16892␤»
21:13 sjoshi joined
raydiak also, g'day #perl6 o/ 21:13
21:14 committable6 joined 21:15 mcmillhj joined 21:16 trnh left 21:17 TeamBlast left, TEttinger joined 21:20 sivoais left, mcmillhj left 21:21 NeuralAnomaly left, TeamBlast joined 21:25 ft joined 21:27 Ven_ joined 21:32 mcmillhj joined, sivoais joined 21:33 frew joined 21:34 eythian left, benchable6 left, committable6 left, committable6 joined 21:35 benchable6 joined, bisectable6 joined 21:36 eythian joined 21:37 mcmillhj left
avar raydiak: cool 21:41
samcv so i'm thinking about learning perl 6, already know C, shell scripting and perl 5, what is the best guide to learning it, considering my background? 21:43
21:44 mcmillhj joined 21:46 TestNinja joined
avuserow samcv, maybe start with learnxinyminutes.com/docs/perl6/ and then move onto doc.perl6.org and especially docs.perl6.org/language/5to6-nutshell as needed? 21:47
TestNinja samcv, forget everything. Then, maybe try starting with learnxinyminutes.com/docs/perl6/ (more on perl6.org/documentation/ ; in particular the "For New Comers")
samcv forget everything you say :P
gfldex perl6intro.com/ 21:48
TestNinja samcv, from personal experience, I advise you to forget about how you did things in Perl 5. I found that a major roadblock in my learning. Especially when it came to working with lists and passing args to thinmgs
gfldex there are quite a few videos with introductions under www.youtube.com/playlist?list=PLRu...FwobZHdXdK
21:49 mcmillhj left
TestNinja m: my $list = (1, 2, 3); say $list; # case in point 21:49
camelia rakudo-moar ab68f8: OUTPUT«(1 2 3)␤»
TestNinja :)
samcv yeah. perl is the most recent language i've been using, but like. i really like it. but feel it could be so much better
so i'm thinking about looking into perl6
TestNinja Yeah, Perl 6 is definitely better.
The learnxinyminutes.com/docs/perl6/ is pretty good if you already know programming 21:50
b2gills m: say ( 0, 1, &[+] ... * )[^100] # first 100 elements of the Fibonacci sequence 21:51
camelia rakudo-moar ab68f8: OUTPUT«(0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 70140…»
samcv i am a list comprehension 21:52
TestNinja samcv, out of curiosity, how did you hear about Perl 6 and what made you think to try it out?
samcv uhm
idk i don't know where i heard about it, but i knew of it. and recently needed text processing capabilities and such so starting using perl, because shell scripting and C wasn't going to cut it there 21:53
TestNinja Ah
samcv so have written many perl scripts for getting software versions and a irc bot in perl, though perl is nice, i felt it could be a lot nicer
and perl 6 is a thing so thought i'd check it out
TestNinja Cool.
Well, welcome! Hope you enjoy your stay :) 21:54
samcv also the camel and onion logos are ugly :P
21:54 rgrinberg joined, Ven_ left
TestNinja There's an article for a Perl 6 IRC module, if it strikes your fancy: perl6.party/post/IRC-Client-Perl-6-...IRC-Module 21:55
TestNinja waves
21:55 TestNinja left
b2gills samcv: An example of what is possible with Perl 6's grammars: github.com/moritz/json/blob/master...Grammar.pm 21:55
21:57 Ven_ joined, sjoshi left 21:58 mcmillhj joined 22:03 mcmillhj left 22:06 wamba joined 22:09 Ven_ left
raydiak is there a runtime performance penalty for MONKEY-TYPING? or can anyone suggest a less "strongly discouraged" way to group rules and actions by term instead of having the full definiton of each term split up in the source between the grammar and the action class (and the tree node class instantiated by the action)? 22:12
gfldex raydiak: right now there should not be any runtime penalty for monkey-typing. That may change in the future. 22:14
22:15 Ven_ joined 22:18 andrzejku left 22:19 telex left
jnthn raydiak: Write the various pieces in roles and then compose those in the final grammar/action class, perhaps? 22:19
22:20 ab6tract joined
raydiak oh, hm... 22:20
so 2 roles per term? that sounds fairly reasonable 22:21
thank you gfldex++ and jnthn++
jnthn If you're breaking it up that way you might also consider writing the actions in line with the rules 22:22
(Just as a code block in the rule that does "make")
22:23 Ven_ left
raydiak something about that feels...less than sanitary, but maybe just because it's not my usual style. any actual drawbacks to it? 22:24
22:24 itaipu left, skids joined
raydiak I would like to avoid having to maintain a list of all those roles in the grammar and actions declarations, which that would solve 22:25
22:29 Ven_ joined, RabidGravy left, benchable6 left 22:30 firstdayonthejob left, benchable6 joined 22:32 mcmillhj joined 22:37 mcmillhj left 22:40 Ven_ left, _slade_ joined 22:41 Ven_ joined 22:49 telex joined 22:50 mcmillhj joined
raydiak btw, just curious, if augment is a compile-time declaration, why might it see a runtime penalty in the future? 22:50
22:52 Ven_ left
gfldex what should happen when you stick the augment into an EVAL? 22:53
22:53 Ven_ joined 22:54 ab6tract left
gfldex also, we may at some point have precompiled modules with pre-JITed stuff 22:54
22:54 mcmillhj left
gfldex or cached JIT output of sorts 22:54
compiled does not mean static 22:55
22:56 MilkmanDan left
raydiak ah ha. I'd want something like a "too late to redefine this class" error (unless the EVAL is in a BEGIN), at least in this case, but I see what you mean 22:56
22:56 bjz left
raydiak on the JIT point, I don't really know much about how that works tbh 22:56
also does the discouragement in the docs even apply to this case? seems like modifying the global state is precisely what I'm trying to do. in fact is what any our-scoped declaration does. not sure I even 100% understand the stated objection to this pattern, except for modifying stock/built-in classes 22:59
23:01 MilkmanDan joined 23:05 ka left 23:07 mcmillhj joined
raydiak I mean, you could say the same about many things like "what happens if you EVAL a normal class definition," couldn't you? not arguing, just trying to understand more thoroughly 23:08
timotimo you don't need to go through eval to declare classes
i.m late to this discussion 23:09
i was meant to head to bed :S
raydiak you don't need to eval an augment, either...that's what we're talking about :)
but hi timo! :)
timotimo ah 23:10
23:12 mcmillhj left 23:15 Pierre_ joined 23:17 bjz joined 23:18 Pierre_ left
raydiak timotimo: if your fatigued brain has enough remaining capacity (and inclination) to backlog and respond, I'm interested in your feedback as well 23:21
23:21 mcmillhj joined 23:22 Pierre_ joined 23:23 MilkmanDan left, ka joined, Ven_ left 23:25 Pierre_ left 23:26 MilkmanDan joined 23:27 mcmillhj left, Ven_ joined, Pierre_ joined 23:31 nadim joined 23:35 mcmillhj joined, bjz left 23:40 mcmillhj left 23:45 BenGoldberg joined 23:46 committable6 left 23:49 mcmillhj joined 23:54 mcmillhj left 23:59 wamba left