»ö« 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.
brrt .tell timotimo that the extend_i32 etc ops are not homogenous on a machine level; sign-extension to 64 bits require cqo which uses only rax, sign-extension to 32 bits (or 16 bits) uses movsx which can use any register 00:03
yoleaux brrt: I'll pass your message to timotimo.
brrt .tell timotimo tomorrow just ask me about it i can probably have them finished in $short-time
yoleaux brrt: I'll pass your message to timotimo.
00:04 firstdayonthejob left, brrt left 00:05 adrusi_ left, adrusi joined
timotimo Hotkeys: were you able to figure out anything from a --profile yet? 00:24
yoleaux 00:03Z <brrt> timotimo: that the extend_i32 etc ops are not homogenous on a machine level; sign-extension to 64 bits require cqo which uses only rax, sign-extension to 32 bits (or 16 bits) uses movsx which can use any register
00:03Z <brrt> timotimo: tomorrow just ask me about it i can probably have them finished in $short-time
00:28 patrickz left
Hotkeys timotimo: no I'm not really experienced with optimizing yet 00:31
haven't even tried --profile
I was just going off of some stuff suggested in the original paper for the algo
timotimo yeah, though you may run into some opposite-of-good spots in rakudo performance if you're not aware of those pitfalls 00:38
Hotkeys I'm not really sure how to use the profiler data 00:46
00:49 kid51 joined
timotimo what i always do first is open the "routines" tab and sort by "exclusive" 00:52
that'll put the routine where most time is spent at the top and you can see if that makes sense
in the allocations tab you can see if some kind of "underlying" object gets allocated way too often
in the GC tab, usually you'll have almost completely green bars. if you don't then something may be not-so-good 00:53
Hotkeys alright 00:55
fewer deoptimizations is good right?
llfourn m: { my module Rat::Exterminator { } }; say Rat::Exterminator; # lexical packages aren't lexical if the name exists outside the lexical scope 00:58
camelia rakudo-moar e93a06: OUTPUT«(Exterminator)␤»
yoleaux 18 Feb 2016 20:11Z <sortiz> llfourn: That the loader doesn't create unneeded package stubs looks good to me, so appending to those provided by settings can't be a problem, unless we want "reserved" namespaces.
llfourn the above worries me a bit
timotimo deoptimizations aren't usually terribly bad 01:00
sortiz llfourn, Yes, but that is an orthogonal problem. 01:01
llfourn sortiz: which problem is it orthogonal to? 01:02
sortiz That the loader don't create unneeded stubs. 01:03
llfourn in the context of require?
sortiz Yes.
llfourn what's the unneeded stub in this case? 01:05
sortiz None in this case (Rat::...)
llfourn you mean require CompUnit::Util doesn't create a CompUnit package that is UNIT scoped
like in the UNIT's globalish 01:06
01:06 raiph left
llfourn to me they are no orthogonal problems they are caused by the same thing. Scoped packaged declarations leak into the .WHO of SETTING:: stuff 01:07
whether it's our scoped in a compunit or lexical scoped in a block they are both ending up in the SETTING packages 01:08
Hotkeys does anyone know if there is any performance difference between doing type constraints with 'where' inline vs making a subset?
llfourn Hotkeys: pretty sure it's the same
Hotkeys alright
sortiz In the IO::Socket::SSL case IO::Socket can't be "created", they already exists. So, after require IO::Socket::SSL, what can I expect to be in the lexical scope? 01:09
llfourn sortiz: you can create lexical versions of packages 01:10
m: my class IO::Socket { }
camelia ( no output )
sortiz When I want to shadow some other package, yes. 01:11
m: my class IO::Socket { method a { say IO::.keys } } IO::Socket.a 01:12
camelia rakudo-moar e93a06: OUTPUT«5===SORRY!5=== Error while compiling /tmp/DnATs7EIei␤Strange text after block (missing semicolon or comma?)␤at /tmp/DnATs7EIei:1␤------> 3O::Socket { method a { say IO::.keys } }7⏏5 IO::Socket.a␤ expecting any of:␤ infix␤ …»
sortiz m: my class IO::Socket { method a { say IO::.keys } }; IO::Socket.a.say
camelia rakudo-moar e93a06: OUTPUT«(Handle Dir File Pathy Notification Path ArgFiles Pipe Socket Special Local Spec)␤True␤»
sortiz Buy I don't want that setting IO disappears. 01:14
01:14 Actualeyes joined
llfourn sortiz: right. you could have a special lexical package that delegates to the SETTING:: package when it can't find it in its own 01:14
AlexDaniel how can I smartmatch without writing $_ ~~ ? 01:15
llfourn AlexDaniel: when
AlexDaniel right
thanks
sortiz llfourn, yes, but seems that that "special lexical package" don't exists yet. :) 01:16
AlexDaniel whan about negated when?
llfourn AlexDaniel: I have said that I wanted a negated when b4 but didn't get much enthusiasm :P 01:17
AlexDaniel :/
llfourn sortiz: I think the way forward is for me to RT and we can discuss further :)
AlexDaniel: I made some kind on incomprehsible gist here: gist.github.com/LLFourn/9e08d3a94b08af9d5c38 01:18
sortiz llfourn, Totally agree.
llfourn AlexDaniel: I suggested ¬, which would create a negated subset of the thing it's in front of 01:19
Hotkeys we could call negated when "nguyen" 01:30
(nwhen)
llfourn: AlexDaniel:
AlexDaniel nguyen ???
01:31 parisba_ is now known as parisba
skids "never" 01:32
Hotkeys It's a popular vietnamese last name
sounds more or less like "nwen" out loud
AlexDaniel oh wow! It takes forever for JSON::Tiny to spurt a json with a simple array of size 6000
Hotkeys what about with JSON::Fast 01:33
llfourn Hotkeys: I think there should be a general way to negate something in terms of ACCEPTS. I think I'll make a module eventually. 01:34
AlexDaniel Hotkeys: if only there was JSON::Fast::Pretty 01:35
Hotkeys Make it :D
wait JSON::Fast has a pretty option
AlexDaniel oooooooooooooooooooohhh reeeaallly?
Hotkeys according to the readme
AlexDaniel interesting
Hotkeys it defaults to true
AlexDaniel hmmmmmm 01:36
01:36 apiw joined
AlexDaniel Hotkeys: thanks, that actually works 01:37
much much faster, like 20 times faster
Hotkeys :D
AlexDaniel interesting
yeah, it's great. Thanks 01:38
Hotkeys also mfw github.com/xfix/Acme-DSON
this module is ridiculous (and that's okay)
01:39 addison_ left, cdg left
Hotkeys or rather I guess DSON is ridiculous 01:39
that isn't the module's fault
01:39 zpmorgan joined 01:43 apiw left
timotimo AlexDaniel: yeah, some certain person has put to-json from JSON::Faster into JSON::Fast 01:47
AlexDaniel JSON::Faster????
timotimo yeah, used to be just a faster to-json 01:49
i petitioned for merging it into JSON::Fast
AlexDaniel timotimo: thank you very much 01:53
01:53 dfcarpenterak left, dfcarpenterak joined 01:57 perlawhirl left 02:03 kid51 left 02:04 dfcarpenterak left
AlexDaniel m: say <a b c>.map: { Any } 02:05
camelia rakudo-moar e93a06: OUTPUT«((Any) (Any) (Any))␤»
AlexDaniel is it possible to skip some values in map? 02:06
geekosaur that does not sound like a map to me... 02:07
AlexDaniel m: say <a b c>.map({ if m/b/ { ‘hi’ } else { Any } }).grep: *.defined
camelia rakudo-moar e93a06: OUTPUT«(hi)␤»
orbus in p5 I'd usually grep first then map the results of the grep
I assume that applies here as well 02:08
AlexDaniel mmm, okay
lucs m: say <a b c>.map: { $_ eq 'b' ?? Empty !! $_ }
camelia rakudo-moar e93a06: OUTPUT«(a c)␤»
AlexDaniel oh there we go! 02:09
what is Empty? :)
lucs m: say <a b c>.map: { $_ eq 'b' ?? |() !! $_ }
camelia rakudo-moar e93a06: OUTPUT«(a c)␤»
AlexDaniel oh, and that's how you slip it! Right! 02:10
lucs: thank you very much!
lucs Sure thing
orbus m: my %x=(1=>"a",2=>"b",3=>"c"); my @y=(1,2,3); put @y.grep({next if $_ == 1; $_}).map({%x{$_}}) 02:13
camelia rakudo-moar e93a06: OUTPUT«b c␤»
orbus oh, I guess that works too
02:15 addison_ joined 02:19 molaf_ joined
Hotkeys when should I use := over =? 02:20
skids When you do not want a container. 02:21
orbus is still trying to wrap his head around containers 02:22
the current documentation could probably be improved
skids docs.perl6.org/type/Scalar is a good place to start.
02:23 molaf left
orbus yeah, I more or less understand the simple case 02:26
02:27 stmuk_ joined
orbus $a = 1; $b := $a; $b=2; now $a is 2 as well 02:27
but not sure I really understand what's actually going on under the hood
the Scalar docs explain it, but could maybe be a little clearer 02:28
skids m: my $a = 1; my $b := $a; $a.VAR.WHICH.say; $b.VAR.WHICH.say; # Maybe that makes it clearer? 02:29
camelia rakudo-moar e93a06: OUTPUT«Scalar|50521688␤Scalar|50521688␤»
Hotkeys well 02:33
I wasn't able to optimize my algo
but I managed to optimize the test by a few seconds
so that's something
sortiz m: my $Foo::a = 1; $Foo::b = 1; say GLOBAL::Foo::.WHAT; say GLOBAL::Foo::.keys; say MY::.keys; # Given that, why I can't say Foo::<$b>? 02:37
camelia rakudo-moar e93a06: OUTPUT«(Stash)␤($b $a)␤($=pod !UNIT_MARKER EXPORT $_ $! $Foo::a ::?PACKAGE GLOBALish $¢ $=finish $/ $?PACKAGE)␤»
Juerd orbus: Think of a container as a place in memory where a value can be stored.
orbus right, well in that case it seems more accurate to say that := makes a variable point to an already existing container 02:38
Juerd That's right. 02:39
llfourn sortiz: rt.perl.org/Public/Bug/Display.html?id=127569
skids Well, if the riht hand side is a container.
orbus true 02:40
Juerd Unlike actual pointers to memory, though, binding gives you a new variable, which can have extra information attached to it, like 'access to the container is read only'.
orbus yeah
like I said, I more or less understand the simple case
Juerd Subroutine parameters use the same thing as :=
orbus but not sure I fully understand all the implications 02:41
Juerd There aren't a lot of implications, except the lack of a copy being made :)
orbus well the Scalar docs mention some stuff around lists 02:42
Hotkeys So is it faster to use binding when possible?
orbus and flattening and whatnot
Hotkeys performance wise
Juerd After "my $a := 42", it makes little sense to assign a new value to $a, because you equally wouldn't assign a new value to 42.
Hotkeys or is the difference negligible 02:43
sortiz llfourn++
Juerd orbus: There are ways to destructure when binding. So you can unpack named arguments, or unpack arrays and lists to individual variables.
Hotkeys: I think it should be faster but I haven't benchmarked it.
sortiz llfourn, To me, there are a clash between 'my' and named (with ::) symbols.
Juerd I'm inclined to say that if you like to use :=, you should probably use it whenever you don't need a copy. So that is, prefer := over = 02:44
llfourn containers + autovivification do interesting things
m: my %h; my $a := %h<foo><bar>; $a = "win"; say %h.perl
camelia rakudo-moar e93a06: OUTPUT«{:foo(${:bar("win")})}␤»
02:45 ilbot3 left
Juerd Or, put differently, use := when you need easier access to something, and = if you want something's value to change. 02:45
orbus how does := interact with objects? 02:46
llfourn sortiz: there certainly is in the implementation. I think the idea is that it's perfectly valid.
orbus for example
Juerd orbus: It doesn't send them messages.
llfourn orbus: everything is an object :P
orbus well, in principal yes
Juerd Not just in principle 02:47
02:47 ilbot3 joined
Juerd You have to dig deep to encounter something that is not an object. 02:47
skids natives aren't properly they just box that way. 02:48
sortiz llfourn, See my example above, an Stash was created, but I can't access it, and in MY a funny named was created.
Juerd skids: I think natives are digging deep.
orbus m: my $c=Channel.new; my $b=$c; my$x=start $b.send(1); put $c.receive; await $x
camelia rakudo-moar e93a06: OUTPUT«1␤»
Juerd skids: I never said you couldn't use an easy-to-use machine to dig. ;)
orbus like in this example
$c and $b both point to the same Channel
llfourn looks 02:49
02:49 yqt left
skids Actually $c and $b each point to Scalars, and each of those two Scalars point to the same Channel. 02:49
orbus see that's where I'm not sure I fully understand the implications 02:50
I read that
but I'm not entirely sure I fully understand what it means
since Scalars are mostly invisible
Juerd orbus: I don't think it's necessary to understand what it really means. I didn't know this at a level that I could explain it to someone, yet when using Perl 6 all of it just did what I wanted it to do. 02:51
orbus yeah... that's the problem
Juerd But if you really want to know it all, there's the source... :)
orbus it usually does what I want it to do, until it bites me in the butt
Juerd I found Perl 5's model easier to understand, but I find Perl 6's model easier to work with, even though I don't really understand it yet. 02:52
orbus perl5 references had their own failings 02:53
geekosaur p5's model is easier o understand until it suddenly isn't and you find yourself pitchforked into weird, idiosyncratic internals
Juerd geekosaur: I can't recall a single time that this has happened to me.
Whereas I keep getting bitten by subtle bugs in rakudo/moar
llfourn m: my $a = "foo"; my $b = $a; say $a.WHERE; say $b.WHERE # '=' doesn't copy values 02:54
camelia rakudo-moar e93a06: OUTPUT«140356844017296␤140356844017296␤»
geekosaur you usually have to be messing with the weird corner cases to start with. like dualvars
timotimo Hotkeys: i'd be very interested to hear how you went about optimizing; were you able to get anything out of the profile at all? 02:55
geekosaur also, as for bugs, kinda unfair to be comparing a language that was just released to one that's been around for years
decades even
skids m: my $c = (1,2,3); my $d := (1,2,3); sub a ($l is rw) { $l = (3,4,5) }; a($c); $c.say; a($d); # One implication of a Scalar
camelia rakudo-moar e93a06: OUTPUT«(3 4 5)␤Parameter '$l' expected a writable container, but got List value␤ in sub a at /tmp/Sih95IepCq line 1␤ in block <unit> at /tmp/Sih95IepCq line 1␤␤»
Juerd geekosaur: It would be unfair if I didn't compare it to anything else. 02:56
geekosaur: Really, we need the comparisons to improve Perl 6.
orbus we're at the stage now where fixing implementation bugs is top priority
well that and performance
now that the design is more or less finalized 02:57
Juerd orbus: It might be, but not many people actually do that. It's hard to find people who have the right skill set and enough time.
orbus that is of course true
Juerd I don't know if there's a solution to that problem 02:58
orbus but really goes for the whole task of implementing a language, top to bottom
Juerd Yep.
llfourn is amazed how some core devs have jobs but still manage to contribute so much
orbus I know my rusty C skills are nowhere near sufficient
I barely remember how pointers work
Juerd orbus: A lot of Perl 6 is written in Perl 6!
02:58 wamba left
orbus I know - I've dug into the internals somewhat 02:59
Juerd Usually not very readable Perl 6, because it has to perform well, but at least it's much easier than C.
orbus at least in a few areas
I used to be pretty good at C
but it's all flown out of my head
need to pull out my K&R book and re-read it sometime
I still remember that book having the most concise explanation of pointer syntax I've seen anywhere 03:00
Juerd I'm excited that in a minute or so, the robot vacuum cleaner at the office will do its thing.
Nobody's there
Our first robot :)
orbus nobody's around - it might decide to murder you
keep an eye on it
Juerd It's a vacuum cleaner. I'll hear it coming :) 03:01
orbus and yet you don't fear it, so that might not be enough
you aren't expecting murder, even if you hear it coming
Juerd Apart from its lithium batteries I don't think it has any equipment that could actually hurt someone.
orbus might just be an advance scout for the robot legions
Juerd It would make a good scout 03:02
geekosaur xkcd.com/1558/
Juerd It maps every part of the floor.
orbus I thought about getting a roomba before, but my house has way too many obstacles
Juerd I didn't get a roomba for the office. 03:03
There are two kinds of roomba: the very expensive one, and the brainless one that just bumps at random.
orbus this is the former I take it? 03:04
Juerd We got a neato. It's about as cheap as the cheaper roombas, but it actually has a lidar 03:05
It came in today and I've let it do the entire office twice already. Probably spent at least half an hour just watching it. 03:06
Could have vacuumed the entire floor myself in that time... :P 03:07
orbus will it get faster after it's completed its reconnaissance?
Juerd Yes. First it goes around the edges, bumping into things. Then it zigzags through the area quite fast. 03:08
Hotkeys timotimo: eh not really, I just got rid of the hashmap I was using and just used the arrays instead
orbus oh, but it doesn't remember the map of the area between runs? 03:09
03:09 Herby_ joined
Herby_ Evening, everyone! 03:09
Hotkeys (I was sticking input -> expected out into a hash)
hello Herby_
skids Speed doesn't really matter with those things, as long as it is fast enough to get the job done without getting underfoot.
Juerd No, but it will charge and continue where it left off if the area is too big for its battery.
Herby_ \o
Juerd Hi Herby_
Herby_ o/
I see your Perl 6 entry is the top solution :) 03:10
Hotkeys timotimo: I did acquire ~20 1.2mb profiles though :p
skids wonders whether SLAM algorithms are at all interesting for discovering Perl 6 idioms.
Juerd The botvac will also divide an area into rectangles, imagining a wall at the edge of it. It's interesting to see it do a long hallway.
skids: Ooooooh. Probably! 03:11
timotimo Hotkeys: yeah, they tend to be quite big. they contain the whole call tree :S
03:11 adu left
Hotkeys timotimo: that's fine, I have plenty of space 03:11
timotimo if someone would be so fantastic as to make the "finite callgraph depth recording" branch work, we could profile the compilation of the core setting 03:12
Hotkeys if anyone can take a cursory look at my Porter module to see if there's any glaring optimizations I could make I'd appreciate it :) 03:16
timotimo goes to bed 03:17
i'm super late already ;)
Hotkeys sleep well
github.com/johnspurr/Lingua-EN-Stem-Porter if anyone's interested
it did about 3000 word per second in my wordlist test which seems reasonably quick 03:19
I don't really have a comparison 03:20
I suppose I could test some other implementations that have been done as a benchmark
maybe I'll do that tomorrow
skids Hotkeys: It probably won't make a difference, but maybe make e.g. %step2hash a Map instead of a Hash? 03:29
AlexDaniel Herby_: hi 03:31
Hotkeys skids: I'll try that
AlexDaniel Herby_: see my solution here: gist.github.com/AlexDaniel/b952b73284a083973802
sortiz Finally I could answer private messages, shame on previous attempts.
Herby_ AlexDaniel: I was gonna ask if you figured out the other half of the diagnol 03:32
AlexDaniel Herby_: I haven't really found any easier way to find diagonals, but that's still pretty short
Herby_ its a working solution?
AlexDaniel yes
Herby_ Nice!
You gonna post it?
AlexDaniel skids got it better with something like: my @ax = |(([\,] ^@map).cache), |((^@map).tail(@map - $_).cache for ^@map); (@ax.reverse »,« @ax);
it is a bit shorter but it is not really correct 03:33
Herby_: I don't have a reddit account and I am not going to make one for that. So maybe you can post it?
skids Hotkeys: are the things like 'ous||ive||ize' required to be tried in order?
Herby_ I can post it and give you the credit 03:34
Hotkeys not in that one
Herby_ one sec
Hotkeys is it faster to do an alternation with | ?
skids Maybe try | instead, might be better, might be worse.
(More likely to be better with more alts) 03:35
AlexDaniel Herby_: actually wait 1 second I think that I found a tiny bug :)
Herby_ k
AlexDaniel Herby_: fixed, same link 03:36
03:36 synopsebot6 joined
Herby_ k, bout to post 03:36
Hotkeys hmm the map thing didn't change the times really 03:38
let's try the alternation thing
Herby_ AlexDaniel: got it posted. Let me know if you want to change the description :) 03:40
AlexDaniel Herby_: it's great, thanks
Herby_ this week's [Hard] puzzle will be posted tomorrow, if you get bored 03:41
AlexDaniel Herby_: getting diagonals is really hard, such a pity :(
what I don't like about my solution is that these two lines are basically binary blobs, heh 03:42
Herby_ I'm not sharp enough to fully understand the solution, but it looks good compared to the others
Hotkeys hm yeah neither of those made any noticable difference for better or worse
thanks anyway skids
AlexDaniel Herby_: well, the idea is that when you do 「for @map」 you are iterating over rows 03:43
Herby_: so if you want to change any cell you just write back and that's it
Herby_: so it says 「<-> $cell」 and then just 「$cell = ‘*’」 03:44
Herby_ hmm ok
AlexDaniel Herby_: surprisingly, we can do 「(@map[*;$_] for ^@map)」 and it will give us the columns
Herby_: but not just the columns, but a writable slice from the original array
Herby_: so if we do $cell = ‘something’ it will actually write it back!
so the question was how to get slices diagonally… and I kinda did that. It is just a bit unreadable :( 03:45
Herby_: but other than that the code does not really care if you are operating on columns, rows, diagonals, or any of those in reverse
which is really cool 03:46
03:46 Khisanth joined
AlexDaniel Herby_: not sure if you are actually following me but what I was trying to say is that this solution is dead simple if you just take my word that these two lines return writable diagonal slices :) 03:48
Herby_ haha I'll take your word
03:52 addison_ left 03:55 skids left 03:56 synopsebot6 left, synopsebot6 joined 03:58 noganex_ joined 04:00 cpage_ left 04:01 noganex left, addison_ joined 04:07 cpage_ joined
Hotkeys okay all is good in the world 04:07
I made travis install Test::META and now I have a passing build again 04:08
04:12 Herby_ left 04:16 synopsebot6 left, synopsebot6 joined
ugexe why does IO::Pipe.close return a Proc, when IO::Handle returns True? seems to be related to rt.perl.org/Ticket/Display.html?id...xn-1386193 04:18
say $proc.out.close.err.close; # heh 04:21
04:22 adu joined
AlexDaniel Juerd: by the way, why not use | before first 「<after $player」 04:25
it just asks for it, doesn't it? :) 04:30
04:34 addison_ left 04:35 synopsebot6 left, synopsebot6 joined
AlexDaniel Juerd: by the way, your solution is broken I think 04:39
Juerd: try empty board and this on the first line: ------OX 04:40
or this: ------XO
or even -----XO- 04:41
04:43 rindolf joined
AlexDaniel Juerd: also, since you don't really care about newlines… 04:53
Juerd: guess what would happen if you do this: X------O 04:54
04:54 synopsebot6 left
AlexDaniel :-/ 04:54
04:54 synopsebot6 joined 05:13 lnrdo left 05:14 synopsebot6 left, synopsebot6 joined, roguelazer left, lnrdo joined 05:16 roguelazer joined 05:21 addison joined 05:32 molaf_ left 05:33 synopsebot6 left 05:34 synopsebot6 joined, addison left 05:36 Cabanossi left 05:37 jack_rabbit joined 05:40 Cabanossi joined
llfourn anyone know how to call a parent grammar -- like callsame for grammars? 05:42
(inside a token) 05:43
05:46 khw left 05:47 cpage_ left 05:53 synopsebot6 left, synopsebot6 joined 05:59 mattp__ left 06:07 addison_ joined 06:08 davido_ joined
sortiz llfourn, It seems that we like to do complicated questions. :) 06:11
llfourn sortiz: that's what life's for :) 06:12
06:12 synopsebot6 left, synopsebot6 joined
sortiz llfourn, Indeed. 06:12
06:16 rindolf left 06:21 mattp__ joined 06:24 Vitrifur left 06:29 addison_ left 06:30 addison joined, rindolf joined 06:31 synopsebot6 left, synopsebot6 joined 06:42 cpage_ joined 06:46 Relsak left 06:50 synopsebot6 left, synopsebot6 joined 06:53 geraud left 06:55 CIAvash joined
sortiz m: package Foo { }; my package Foo::B { }; say Foo::B === GLOBAL::<Foo>.WHO<B>; # Which was the meaning of 'my' ? 06:58
camelia rakudo-moar e93a06: OUTPUT«True␤»
07:02 cognominal_ left 07:04 MadcapJake left 07:08 adu left 07:10 addison left, synopsebot6 left, synopsebot6 joined 07:17 MadcapJake joined 07:22 FROGGS joined 07:25 hacst left 07:26 addison joined 07:28 sjoshi joined 07:30 synopsebot6 left, synopsebot6 joined 07:32 davido_ left 07:35 firstdayonthejob joined 07:40 nakiro joined
sortiz m: package Foo { }; Foo::<$a> = 1; my $Foo::b = 2; our $Foo::c = 3; say $_ for Foo::.pairs; # Which was the meaning of 'my' ? 07:43
camelia rakudo-moar e93a06: OUTPUT«$c => 3␤$b => 2␤$a => 1␤»
07:43 darutoko joined 07:47 RabidGravy joined 07:50 synopsebot6 left, synopsebot6 joined
RabidGravy HARR 08:00
08:00 rurban joined
sortiz Hi RabidGravy 08:02
08:03 jcallen left 08:04 jcallen joined 08:09 synopsebot6 left, synopsebot6 joined 08:11 jack_rabbit left
Hotkeys yawns 08:12
08:17 PotatoGim_ left, PotatoGim joined 08:19 ely-se joined, arnsholt joined 08:28 synopsebot6 left, synopsebot6 joined 08:32 addison left 08:38 firstdayonthejob left
RabidGravy I have this awful and uncontrollablle urge to make something like c#s XmlSerialization 08:45
08:46 abraxxa joined, rurban1 joined 08:47 broquaint joined 08:48 synopsebot6 left, synopsebot6 joined, rurban left 09:07 synopsebot6 left
DrForr I'd recommend ANSI X.12 instead, much clearer :) 09:07
09:07 synopsebot6 joined 09:15 CIAvash left
jast great recommendation, very much appreciated. I feel a lot saner now. 09:16
DrForr Obviously you haven't read the spec :) 09:18
09:20 |Tux| joined, ely-se left, ely-se joined
FROGGS lol: examples.x12.org/005010X279/subscri...igibility/ 09:21
RabidGravy looked at it once, ended up a gibbering wreck, decided XML was nicer 09:24
those old school EDI formats were such fun
see also APACS-n or whatever banks use for shovelling data around these days 09:25
DrForr I worked with those for 2 years. Thankfully I was laid off before I could lose 2d SAN.
09:26 synopsebot6 left, synopsebot6 joined
RabidGravy I spent a long while doing telco/ISP billing systems, knew too much about banking interchange formats for my sanity 09:26
hippie "shovelling" is a good word for that. 09:29
09:30 zpmorgan left 09:31 lizmat joined 09:32 zakharyas joined 09:36 wamba joined 09:37 El_Che_ is now known as El_Che, rurban1 left
lizmat good *, #perl6! 09:45
FROGGS o/
09:45 synopsebot6 left, synopsebot6 joined
lizmat anything important happen the past 20 hours ? 09:45
seems the FOSDEM videos are supposed to be up: video.fosdem.org/2016/h2214/ 09:46
FROGGS ohh nice 09:47
I was afk most these 20 hours, so I dunno
09:47 molaf joined
lizmat but: none of them play on woolfy's machine, nor on mine 09:47
FROGGS hmmm, same here :/ 09:48
lizmat sees if some quicktime magic could solve the problem
DrForr They didn't play on mine either. 09:49
lizmat quicktme can't open file :-( 09:50
RabidGravy chrome thinks it's audio, opens the default audio thingy and doesn't work 09:52
let's try one in something else 09:53
it's lying about how it was encoded 09:54
09:54 KotH left
RabidGravy just playing in mplayer you get "chunky static" and lots of frame decoding errors 09:55
lizmat quicktime 7 can't handle it either
RabidGravy "[dvvideo @ 0x7f7d8b42af20]AC EOB marker is absent pos=64"
RabidGravy wgets one for further examination 09:56
sortiz Nor vlc: "[mov,mp4,m4a,3gp,3g2,mj2 @ 0x7f204cc429e0] moov atom not found"
lizmat gives up on it for now 09:57
RabidGravy it's probably some obscure format beloved of the open source people
I'm going with Ogg Theora as a working hypothesis
ffmpeg will save us 09:58
09:59 KotH joined
El_Che lizmat: the videos must be correctly cut still 09:59
tom is looking into that 10:00
lizmat so what does status OK mean then ?
El_Che probabky that they have video and audio
lizmat and why do they have an .mp4 extensions if they're not ?
El_Che: okidoki :-)
RabidGravy I think it *is* mp4 but with something else in it 10:01
El_Che hey, there are rooms with lot of lost talks, so far it looks good
10:03 Skarsnik joined
Skarsnik hello 10:03
10:04 synopsebot6 left, synopsebot6 joined
lizmat Skarsnik o/ 10:05
10:05 cur8or joined 10:08 TEttinger left
jnthn morning, #perl6 10:08
sortiz morning jnthn 10:09
lizmat jnthn o/ 10:10
jnthn llfourn: (call parent token) did you try <something=&callsame> (where something is the name to capture the match under)?
10:11 grondilu joined
llfourn jnthn: I did not :). I did try <Literal::Parent::Class::something> which worked as long as you have the symbol. 10:12
llfourn goes to test it out
grondilu m: say "a..e"
camelia rakudo-moar e93a06: OUTPUT«a..e␤»
yoleaux 18 Feb 2016 14:13Z <timotimo> grondilu: i just got the Image Noise example to run at 5.7 FPS instead of 1.9 FPS by using SDL_RenderPoints and a CArray of int32 instead of SDL_RenderPoint
grondilu m: say a..e
camelia rakudo-moar e93a06: OUTPUT«5===SORRY!5=== Error while compiling /tmp/G9j3BwlZOZ␤Undeclared routine:␤ a used at line 1␤␤»
grondilu timotimo: I vaguely remember about this. 5.7FPS seems still pretty slow. 10:14
llfourn jnthn: "Too many positionals passed; expected 0 arguments but got 1" with <.&callsame> and other variations. 10:17
at gen/moar/m-CORE.setting:685
I tried <.&callwith()> as well, and got "Cannot look up attributes in a type object" 10:20
from gen/moar/stage2/QRegex.nqp:1379
10:24 synopsebot6 left, synopsebot6 joined 10:25 TEttinger joined
jnthn Just <&callwith> ? 10:26
But yeah, I can kinda see why it may not work out. 10:27
llfourn same as <.&callwith>.
jnthn Yeah 10:28
Makes sense
Trouble is that you end up passing the cursor in such cases, but callsame/callwith don't expect that
llfourn but isn't the token expecting the cursor? 10:29
jnthn Yes. But think about how you usually call callsame (as a sub, without args)
<&callsame> compiles into callsame(self) 10:30
Not just callsame()
Because that's what you usually want
llfourn callwith() as well right?
jnthn Yeah, same problem, you don't callwith(self, ...) in a method, just callwith(...)
and callwith resolves the self
llfourn makes sensish. I also tried doing a doing a more manual call of a token like token delegate { { something.($¢) } } 10:33
which kinda worked but I could't get the match state returned from something($¢) into the $/ after the block was over
jnthn No, short of .make you can't really do that :) 10:34
llfourn oh ok 10:35
nine The files seem to be encoded with x264 - core 142 r2431 a5831aa - H.264/MPEG-4 AVC codec
jnthn In theory we could add callsame and callwith tokens in Grammar.pm, so grammar tokens inherit them, and do what trickery is needed there, if there's a strong enough use case. Then a simple <callsame> would work. 10:37
I'd like to hear what TimToady thinks about it first, though :)
llfourn jnthn: this is actually in the context of a slang of Perl6::Grammar. I was looking for ways to call the original token I had overriden. 10:39
it would be cool if it worked :)
the slang is getting kinda big and I actually want to write it in a .nqp file. I'm loooking into how to do that now. 10:40
(I have figured most of it out, by copying stuff that happens in CompUnit::Loader) 10:41
10:43 synopsebot6 left, synopsebot6 joined
dalek kudo/nom: 9a08b31 | lizmat++ | src/core/Str.pm:
Streamline substitution setting in Str.trans

This makes Juerd's atbash example yet again 5x faster
10:47
10:50 fireartist joined
stmuk_ timotimo: I'm desperately preparing a perl6 talk for next week but hope to look at the vim colour syntax issue Real Soon Now 10:53
10:56 ocbtec joined
RabidGravy jnthn, llfourn, but you *can* call the callwith with a new invocant if you want, it seems to work it out that you've done that 10:59
11:00 cfedde_ left 11:02 synopsebot6 left, synopsebot6 joined
dalek c/MARTIMM-patch-4: e03f826 | (Marcel Timmerman)++ | doc/Type/Tap.pod:
repairing a typo

at line 60 `method closing(Tap:D:)' changed into 'method close(Tap:D:)'
11:07
timotimo good marning 11:16
lizmat timotimo o/ 11:17
RabidGravy HARR
11:18 araujo_ joined 11:20 araujo_ left, araujo_ joined 11:21 araujo left
|Tux| test 22.228 11:22
test-t 11.672
csv-parser 51.415
11:22 araujo_ left, synopsebot6 left, synopsebot6 joined, araujo_ joined
El_Che probably something silly, but .precomp keeps biting me after I push an update of my module: fpaste.scsys.co.uk/505852. In short I reinstall the modules with panda --force install, remove .perl6 dirs and still the old version 11:23
lizmat |Tux| : that's better again, right ?
El_Che: try running with RAKUDO_MODULE_DEBUG=1
it should tell you where it gets stuff from
11:24 travis-ci joined
travis-ci Doc build passed. Marcel Timmerman 'repairing a typo 11:24
travis-ci.org/perl6/doc/builds/110352881 github.com/perl6/doc/commit/e03f826451d6
11:24 travis-ci left, araujo_ left
nine El_Che: I'd guess it's not precompilation that bites you but rakudobrew 11:24
11:24 araujo_ joined
El_Che let's see 11:25
rudi_s How can I safely write to IO::Handle (or IO::Pipe) from a native call with a function which uses .native-descriptor and from Perl6 itself? I want to write to stdin from a program I spawn with run with a native function. 11:28
nine rudi_s: how do you define "safe"?
rudi_s It won't cause problems with Perl6 internal buffering and similar. "safe" as in all writes will be complete and not intermix when I write from Perl6 and NativeCall in different order. 11:29
jnthn rudi_s: Best is probably to make sure you call .flush on the Perl 6 handle before using it with NativeCall, and call the native flush also. 11:31
(Before using it with Perl 6 I/O again) 11:32
rudi_s Good. Thank you.
El_Che nine: maybe what bites is that the changes in the new version are in the script file and not in the lib/. I see perl6 populating the cache for everything in lib 11:33
jnthn rudi_s: Note that reading is a totally different kettle of fish. You almost certainly shouldn't mix between native and Perl 6 there. 11:34
dalek kudo/nom: cd62316 | timotimo++ | lib/NativeCall/Types.pm6:
replace unwieldy Proxy with atposref in int/num typed CArray
rudi_s jnthn: Yeah, I thought so. Thanks. 11:35
timotimo ^- i haven't measured this - especially since my code directly hits ASSIGN-POS anyway - but it should be a bit snappier than what it used to be
and once spesh knows about atposref and the other kinds of refs, it'll be even better when inlined
jnthn timotimo: Certainly
*nod*
timotimo can't get wait for jnthn to get paid ;)
jnthn The comments on the grant app look good so far, so...fingers crossed :) 11:36
timotimo not just as in "jnthn will make it all good!", but also "jnthn will help me build the things we've been planning already" 11:37
jnthn :)
timotimo jnthn: when i put in that atposref stuff, i wondered why we don't go ahead and also introduce an atposref_o? that'd still be a bit better than a Proxy, even though it's not a "NativeRef" ... 11:41
|Tux| lizmat, yes, better again
lizmat cool :-)
11:41 synopsebot6 left, synopsebot6 joined
|Tux| did not expect to loose so much time in updating systems due to CVE-2016-0235 11:42
11:42 araujo_ left
moritz |Tux|: welcome to the club 11:42
jnthn timotimo: Where would be use it? 11:43
timotimo for CArray of CStruct or Pointer or things like that
in AT-POS, i mean
HOLY HELL 11:44
jnthn o.O
timotimo how to make the framerate of the white noise thing double with a one-word change:
stmuk_ had to patch the last libc CVE in $major_bank by recompiling libc from source and deploying that due to a number of bizarre reasons
timotimo set $w and $h to be native int typed
jnthn Native types. They're super effective! :)
timotimo only sometimes. but if they are, then yeah
moritz stmuk_: sounds like a deployment pipeline would be interesting for you :-)
stmuk_ moritz: we had our own 15 year old one which used a mixture of bash, php and perl :) 11:45
and lots of rsync!
timotimo what a pain in the rsync :) 11:46
11:46 mprelude_ left
jnthn
.oO( Our code was so toxic, we deployed it with rsnyc... )
11:47
timotimo oh lord %)
grondilu: how does "jumping between about 13.5 fps and 17.6 fps" sound to you?
Juerd lizmat: Wow, impressive improvements in .trans
11:48 apiw joined
timotimo Juerd: lizmat is simply The Best :) 11:48
moritz stmuk_: at GPW2016 I'm talking about continuous delivery, I hope you'll listen to my talk :-)
dalek c: e03f826 | (Marcel Timmerman)++ | doc/Type/Tap.pod:
repairing a typo

at line 60 `method closing(Tap:D:)' changed into 'method close(Tap:D:)'
c: 6966c7e | RabidGravy++ | doc/Type/Tap.pod:
Merge pull request #403 from perl6/MARTIMM-patch-4

repairing a typo
moritz and btw, GPW2016 is full (reached the 100 people limit imposed by room capacity) 11:49
stmuk_ moritz: we dreamed of continuous delivery .. reality was "change control"
timotimo jnthn: the next thing that sticks out is 31% exclusive (37.5% inclusive) time spent in postcircumfix:<[ ]>
moritz stmuk_: one of my main points is that you can introduce it gradually; first automate the build step, then the upload to a repo, then the installation etc. (and you can still have manual approval before deploying to prod) 11:50
stmuk_: and change control and CD are rather complementary, not contradictory
stmuk_ moritz: ok ok I'll attend your talk :) 11:51
timotimo jnthn: it's hitting the "(\SELF, int $pos, Mu \assignee) is raw" candidate that directly calls SELF.ASSIGN-POS($pos, assignee), so i'm not sure why it'd take so long 11:52
lizmat timotimo: int candidates are slower because spesh doesn't know about them yet ? 11:53
timotimo i'm not sure that's it; that candidate gets 100% jitted and there's not enough IntLexRef being allocated for that to be the particular problem here 11:54
jnthn Odd...is there a bounds check (for < 0) in the postcircumfix:<[ ]> ? 11:55
timotimo the code is a 2-dimensional loop that fills a CArray of "raw pixel data" with black or white pixels; the outer loop gets entered 11280 times in this particular piece of code, and that's also how many IntLexRef are being allocated
jnthn: not in this candidate, no
postcircumfix:<[ ]> is being invoked 3609600 times, for comparison
ASSIGN-POS is invoked 3609835 times, where the difference is probably due to spesh warm-up time 11:56
11:56 Amendil joined
timotimo and ASSIGN-POS is where the 6.14% inclusive & exclusive time that were the difference between exclusive and inclusive in the postcircumfix come from 11:57
dalek c: 3cd2034 | (Sylvain Colinet)++ | doc/Language/nativecall.pod:
Remove the bad constant %*ENV example in NativeCall. Clarify a bit compile time vs runtime
11:59
c: 67b3028 | (Sylvain Colinet)++ | doc/Type/Tap.pod:
Merge branch 'master' of github.com/perl6/doc
timotimo jnthn: for things that have something comparable to a "main loop" or "frames", i'd really love to have a simple function that just increments a counter that would show up next to the GC runs in the profiler; would you +1 a patch to that effect? 12:00
jnthn timotimo: Hmm...sounds a bit "special case"-y 12:01
timotimo aye :\
12:01 synopsebot6 left, synopsebot6 joined
jnthn I think it comes under the more general "write bytecode instrumentations in a high level language" goal for Moar 12:01
arnsholt jnthn: Speaking of deploying with rsync, I recently worked on a project where my boss basically expected the SVN checkout of the repo to be deployable in our production environment =)
timotimo hm. but GC runs isn't a thing where the bytecode instrumentation could easily hook into 12:02
RabidGravy Oh I've so worked places like that
timotimo arnsholt: as long as that's clearly communicated and people are allowed to work with branches, what's the problem with that?
jnthn timotimo: Yeah, I'm thinking of it more generally as a meta-VM API. :) 12:03
arnsholt It made it a bit of a pain to test things locally
timotimo OK
jnthn So there'd be callbacks on various interesting events
timotimo SGTM
arnsholt And branches in SVN are kind of annoying, although I had git-svn, so I had ninja branches locally
timotimo i'm not quite certain why the GC runs are all about 15 miliseconds each for this particular benchmark 12:04
jnthn What are they normally for you?
12:04 ely-se left
timotimo i seem to recall them being between 7 and 10 usually, i think? 12:04
jnthn OK. Probably need a C-level profile to understand that better. 12:05
sortiz Skarsnik++ # The fix for nativecall docs
timotimo ah, sure, can do that!
jnthn It *may* be that CStruct and friends are more costly to fianlize than typical P6opaques, which don't need anything doing at all 12:06
timotimo hm, 12% self time in _int_malloc reported by perf
12:06 Amendil left
timotimo 7.6% self inside mp_mul_2d, 7.5% self inside _int_free 12:07
and another 6% inside malloc_consolidate
i expect you're right about this
jnthn In which case pushing finalize off to a background thread so it can run concurrent with the mutator would help.
(And yay, that's in The Grant Plans :)) 12:08
timotimo er, "mutator"?
jnthn ah, sorry, GC terminology
arnsholt Thread doing things =)
timotimo that wasn't in your "secret life of GCs" talk! or maybe it was and i forgot ;(
12:08 apiw left
jnthn Not sure it was, but basically "running code that is changing memory" :) 12:08
timotimo ah. so "everything in between GC runs" 12:09
jnthn Or "all the things that touch memory besides GC" :)
Yeah, though once you start talking about concurent GC then "between" gets less easy to reason about :)
timotimo aye
jnthn Lunch :)
12:10 kaare_ joined 12:17 apiw joined 12:20 synopsebot6 left, synopsebot6 joined 12:21 cur8or left 12:26 TEttinger left 12:28 kid51 joined, apiw left 12:33 ely-se joined
El_Che rakudo.org/downloads/rakudo/ has an invalid certificate. Download on https is a good thing. Has someone here access to that server? 12:34
12:35 apiw joined 12:36 kid51 left 12:37 skids joined 12:39 synopsebot6 left 12:40 synopsebot6 joined
timotimo ah, self-signed 12:40
12:41 skids left 12:47 mohae joined 12:51 sufrostico joined
timotimo asset-3.soupcdn.com/asset/16025/7174_30b3.gif - RESTRICTED.setting 12:53
tadzik :D 12:55
someone forgot to turn off debugging hitboxes
timotimo :D
12:56 cfedde joined, apiw left 12:57 apiw joined 12:59 eternaleye left, synopsebot6 left, synopsebot6 joined, _mg_ joined
timotimo tadzik: asset-3.soupcdn.com/asset/9281/4482_373b.gif - you like space doge? 12:59
13:05 apiw left
tadzik :D \o/ 13:06
love it
RabidGravy is there any way I can disambiguate "role A { }; class B {}; my $b = B.new; my $c = B.new but A; multi sub (B ) { }; multi sub (A) { }" ? 13:08
that is I want a candidate for the thing without the role and one with the role 13:09
or is it a specific where * !~~ A ? 13:10
Skarsnik look like it?
RabidGravy let me try that one 13:11
yeah that works 13:12
13:18 synopsebot6 left, synopsebot6 joined
jnthn RabidGravy: You can also mark a candidate "is default" to tie-break, as a last resort 13:19
RabidGravy ah okay 13:20
13:25 zakharyas left
dalek kudo/nom: 10c86cf | coke++ | docs/release_guide.pod:
claim next release
13:27
13:27 zakharyas joined
dalek kudo/nom: cce7ca3 | lizmat++ | src/core/Str.pm:
Streamline Str.trans some more for str only

This makes Juerd's atbash example yet again 2x faster
13:27
kudo/nom: edac531 | lizmat++ | src/core/Str.pm:
Fix problem with overlapping needles

Exposed by optimizations in Str.trans
lizmat away for a few hours& 13:28
13:37 synopsebot6 left, synopsebot6 joined 13:52 Psyche^ joined, Psyche^_ left 13:57 abraxxa left, synopsebot6 left, synopsebot6 joined 13:59 Perleone joined 14:01 apiw joined, araujo joined, araujo left, araujo joined 14:02 araujo left, araujo joined, araujo left, araujo joined 14:04 petercom1and left, petercom1and joined, araujo left, petercom1and is now known as petercommand, araujo joined
Ulti those fosdem videos are super funky 14:06
you cant seek in them at all and all the audio is out from the video
14:06 araujo left 14:07 araujo joined 14:08 araujo left 14:09 araujo joined, araujo left, araujo joined, skids joined
Perleone Ulti: github.com/FOSDEM/videobox/issues/...-186176254 14:10
14:11 araujo left, araujo joined, araujo left, araujo joined
stmuk_ VLC has a key to delay and advance audio 14:11
14:13 araujo left
DrForr Yah, Vim cluster which annoys me because I keep tyoping them. 14:13
14:13 araujo joined, araujo left, araujo joined
Ulti cool thanks Perleone 14:14
14:15 araujo left 14:16 synopsebot6 left, synopsebot6 joined, zpmorgan joined 14:18 araujo joined
moritz ok, good news. $work is experimenting with OpenStack, and for about half a year I get free computing resources on that experimental cluster 14:18
so I want to use that to build some CI stuff for Rakudo :-)
perlpilot moritz++ cool 14:19
14:21 perlpilot left
jnthn \o/ 14:22
14:24 donaldh joined, perlpilot joined 14:26 prammer joined 14:30 apiw left 14:33 _mg_ left, apiw joined 14:35 synopsebot6 left, synopsebot6 joined
masak moritz++ 14:39
14:41 apiw left 14:42 apiw joined
timotimo Ulti: "out from the video"? o_O 14:44
geekosaur out of sync, presumably 14:45
timotimo ah
"the encodes never stopped" o_O
moritz started my first instance
14:51 apiw left 14:54 synopsebot6 left, synopsebot6 joined 15:00 apiw joined 15:02 zpmorgan left 15:05 sjoshi left
skids m: say any("fgh","fhg").index("l"); 42.say without "fhg".index("l"); 43.say without any("fgh","fhg").index("l"); # Should with/without be junction-savvy? 15:06
camelia rakudo-moar edac53: OUTPUT«any(Nil, Nil)␤42␤»
15:08 apiw left 15:14 synopsebot6 left, synopsebot6 joined 15:19 kurahaupo joined 15:20 FROGGS left 15:27 fireartist left
skids m: my %frags := Set.new(<aga agg agga ag>); say %frags.keys.grep: { none((%frags (-) Set($_)).keys).index($_) ~~ Int }; # Step 1 of today's challenge: eliminate entirely subsumed substrings 15:28
camelia rakudo-moar edac53: OUTPUT«(aga agga)␤»
[Coke] Aooga. The 6.c branch of roast has been replaced with both a 6.c tag (unchanging) and a 6.c-errata branch which should include only a small set of 6.c-related fixes (for example, un-TODOing this test that is now passing) 15:29
masak m: say ?any(Nil, Nil)
camelia rakudo-moar edac53: OUTPUT«False␤»
[Coke] see jnthn's document about release management for more deets. 15:30
masak [Coke]++
stmuk_ are there intended to be both rakudo and roast 6.c-errata branches? 15:31
15:31 cdg joined
skids todays challenge posted, BTW www.reddit.com/r/dailyprogrammer/c...equencing/ 15:32
(Wasn't someone already doing bioinformatics?)
15:33 synopsebot6 left, synopsebot6 joined
timotimo yeah 15:33
[Coke] stmuk_: no, rakudo is not maintaining multiple versions. 15:34
timotimo github.com/MattOates/BioInfo as well as github.com/cjfields/bioperl6
yo stmuk_ did you see my issue on vimcolour?
[Coke] (stmuk_) so rakudo-latest will always be targeting the HEAD of 6.c-errata for its 6.c support. 15:36
if we have to change the 6.c tests too much, we'll do so with a 6.c.1 tag (and then errata until the next version) 15:37
15:41 adu joined 15:43 nakiro left, adu left
stmuk_ timotimo: I'm desperately preparing a perl6 talk for next week but hope to look at the vim colour syntax issue Real Soon Now 15:45
15:46 Perleone left
timotimo oh! 15:47
okay, don't worry about it
i made sure the examples htmlify has a little CATCH block that skips highlighting individual pieces if need be 15:48
stmuk_ so really there is no obvious version for a linux distribution to target other than the "latest one" 15:49
skids [Coke]: how about behavior changes that do not break 6.c tests, but are definitely changes, which introriduce new tests that older rakudos would fail? (PR#685 is why I ask) 15:51
15:52 synopsebot6 left, synopsebot6 joined 15:54 Upasaka joined 15:59 autarch1 joined 16:00 cfedde left 16:02 jabowery joined, virtualsue joined
stmuk_ skids: I guess that's still 6.d behaviour 16:03
skids Not 6.c.1? 16:05
[Coke] skids: if it's a new test, it's not 6.c 16:06
skids Are we just pushing those to raost/master then?
[Coke] depending on the behavior, it could go in 6.c.1 or 6.d, sure
jabowery I've installed rakudobrew sometime back (there is a fully populated ~/.rakudobrew directory) but for some reason nothing the environment doesn't let me execute anything -- not 'perl6', not 'rakudo', not 'moar' and not even 'rakudobrew'. Clearly there was some step in the installation process that set up .bashrc or something with environment variables that got trashed. Any ideas how to recover, or should I just blitz that dir and 16:07
reinstall?
s/nothing// 16:08
timotimo yeah, you have to have ~/.rakudobrew/bin in your PATH variable for it to work
if it's quite old, you would probably want to "rakudobrew self-update" or what it's called after you set up the PATH
(that gets you the newest version of rakudobrew itself)
jabowery Thanks!
16:11 Relsak joined, synopsebot6 left, synopsebot6 joined
gregf_ hi 16:12
is there something similar to kwargs in Perl6?
as in , in Ruby i can do def foo(*args, **kwargs){ } ; foo(1,2,3,{a: 1, b:2}) 16:13
timotimo of course, it's spelled *%foo in our case
just like *@bar is for positional arguments
gregf_ oh so foo(*@bar, *%baz) would be it? 16:14
RabidGravy yep
MadcapJake Which one in this SO answer is Rakudo? stackoverflow.com/a/749218/1274498 16:15
geekosaur but there's also proper declared keyword arguments
gregf_ timotimo: RabidGravy : cheers 16:16
geekosaur MadcapJake, 4 but barely as the JI is still young
*JIT
timotimo right. we don't outperform native compilation often yet
MadcapJake I was thinking either 3 or 4, but can you explain what JIT really does? Or more, how does Rakudo's JIT work. 16:17
timotimo easy peasy
when the VM decides some piece of code is worthy of JIT compilation, it takes the bytecode that was used so far and turns that into native code. after that, instead of letting the interpreter go through that bytecode, it'll instead just jump right into the native code 16:18
reality is, of course, much more complicated
geekosaur also, rakudo itself doesn't do JIT. it compiles to moarvm or JVM bytecode, and JIT is implemented at that level (in moarvm or JRE)
MadcapJake neat, so it searches for particular patterns that would benefit from being completely native and compiles and runs them as such?
16:19 prammer left
timotimo something like that, yeah 16:19
16:19 Cheery left
timotimo in MoarVM, deciding what benefits and what doesn't is simply "how often has this piece of code been run yet?" 16:19
and the current jit works on a per-frame level
so a single pair of curly braces, usually. but we often in-line curly braces into their "parents", and we try to inline small subs and methods that get called into the caller's code as well. 16:20
16:20 khw joined
MadcapJake neat! 16:20
any idea where the name "Just In Time" came from? I'm not really seeing the connection to what it does in practice. 16:21
timotimo well, regular compilers are often called "Ahead Of Time"
perlpilot timotimo: and where are the language level hooks so that I can tweak the when and what gets jitted? ;)
MadcapJake ahh i see, makes sense when you consider that 16:22
timotimo perlpilot: not yet, but a language-level API for instrumenting bytecode is planned
16:22 pmurias joined
geekosaur I think it was borrowed from manufacturing, actually. Just In Time there is an inventory system which aims to ensure that raw materials needed for manufacturing arrive Just In Time for the manufacturing step, because having to store them in inventory is fairly expensive. 16:22
when translated to virtual machines, that means generaitng native code Just In Time for it to be run insead of ahead of schedule 16:23
MadcapJake geekosaur, fascinating!
ugexe m: my @a = 1,2,3; my @b = @a.splice(0).grep(*.defined); say @b.perl 16:25
camelia rakudo-moar edac53: OUTPUT«[1, 2, 3]␤»
ugexe m: my @a = 1,2,3; my @b = @a.splice(0).grep(*.defined) || 1; say @b.perl
camelia rakudo-moar edac53: OUTPUT«This Seq has already been iterated, and its values consumed␤(you might solve this by adding .cache on usages of the Seq, or␤by assigning the Seq into an array)␤ in block <unit> at /tmp/G75vcqj7dh line 1␤␤»
jnthn stmuk_: The answer to "what linux distributions target" is generally "what they decide, but I expect most will go for LTS releases"
pmurias MadcapJake: the main reason for generating code JIT is that more information is available at runtime
ugexe what is the sequence consumed in the second example, but not the first?
why^ 16:26
jnthn ugexe: Once to boolean test it, and then the assignment also wants to consume it
MadcapJake pmurias, what do you mean by "more information"?
perlpilot MadcapJake: you know how the code is *actually* being used at runtime.
jnthn ugexe: You'll need a .cache for that
geekosaur and in btoh cases if it turns out your JIT was wrong (or manufacturing, wrong or out of spec material; for VMs, you generated code that works for some cases but not the current one) you incur a stall. it's somewhat cheaper to recover in the VM case, though, so that's in some ways considered a feature. in particular you can if necessary fall back to running the bytecode if it's a special case that only comes up once, while leaving the JIT code for
the common cases
jnthn MadcapJake: Consider trying to compile a sub foo($a) { $a.bar }. Even if we compile that to native code, we can't do a very good job, because we don't know anything about $a, let alone the nature of the receiver of a bar message sent to it. 16:27
MadcapJake: If we put of the compilation until runtime, we might know $a is nearly always a Pub object, and that its bar method is a cheap accessor, so we can devirtualize the method call and inline the cheap accessor, for example. 16:28
MadcapJake so upon arriving at that bit of code you would check the scope for $a and what it is? 16:29
geekosaur you need to check that anyway
MadcapJake sure but is that check where the decision to devirtualize would happen? 16:30
jnthn MadcapJake: We record call counts, and then we start logging what actual types show up, yeah
Then we generate optimized versions of the code by type
And within those sections they can make a bunch of assumptions
16:30 ely-se left 16:31 synopsebot6 left, synopsebot6 joined
ugexe m: my @a = 1,2,3; @a[0]:delete; say @a.perl; say @a.splice(0).grep(*.defined).perl # shouldn't the .splice(0).grep(*.defined) return non-empty? 16:32
camelia rakudo-moar edac53: OUTPUT«[Any, 2, 3]␤().Seq␤»
jnthn Doesn't splice return the removed elements? 16:33
dalek p: 0d075ed | (Pawel Murias)++ | / (7 files):
[js] Add support for using the setting in code that is webpacked and sent to the browser.
ugexe m: my @a = 1,2,3; say @a.splice(0).grep(*.defined)
camelia rakudo-moar edac53: OUTPUT«(1 2 3)␤»
MadcapJake Crazy! It's always baffling to know how much is happening beneath the surface. Thanks for the insights timotimo, geekosaur, pmurias, jnthn! 16:34
jnthn m: Ah, but that still doesn't explain things
camelia rakudo-moar edac53: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ZnrvceAw_y␤Undeclared name:␤ Ah used at line 1␤Undeclared routines:␤ but used at line 1. Did you mean 'put'?␤ doesn't used at line 1␤ explain used at line 1␤ still used at line 1. D…»
jnthn oops!
ugexe m: my @a = 1,2,3; @a[1]:delete; say @a.perl; say @a.splice(0).grep(*.defined).perl
camelia rakudo-moar edac53: OUTPUT«[1, Any, 3]␤(1,).Seq␤»
timotimo MadcapJake: the thing i've learned about all this as i've contributed to moarvm is that all of the intricate inner works are a thousand times simpler than i first assumed ;)
ugexe grep seems to think the end of the array is the first empty index? 16:35
timotimo it felt great to understand all those cool things for the first time
MadcapJake I hope someday to be at that level, for sure!
jnthn ugexe: Yeah, that feels a bit off
timotimo m: my @a = 1, 2, 3; @a[1]:delete; say @a.list.perl
camelia rakudo-moar edac53: OUTPUT«[1, Any, 3]␤»
timotimo m: my @a = 1, 2, 3; @a[1]:delete; @a.map(*.say) 16:36
camelia rakudo-moar edac53: OUTPUT«1␤(Any)␤3␤»
timotimo m: my @a = 1, 2, 3; @a[1]:delete; @a.grep(*.say)
camelia rakudo-moar edac53: OUTPUT«1␤(Any)␤3␤»
timotimo m: my @a = 1, 2, 3; @a[1]:delete; @a.splice(0).grep(*.say)
camelia rakudo-moar edac53: OUTPUT«1␤»
timotimo m: my @a = 1, 2, 3; @a[1]:delete; @a.splice(0).map(*.say)
camelia rakudo-moar edac53: OUTPUT«1␤»
timotimo what's .splice(0) supposed to do, exactly?
it doesn't seem like grep is at fault here
ugexe remove all elements
timotimo oh. well, that certainly doesn't delete *all* elements
El_Che is there an obvious ways to remove perl6 modules. I am building a docker image for a perl6 app, I the standard way is to get rid of everything that the app doesn't need. I used panda at build time. So I'd like to remove it after I get my application and it's dependencies. With .precomp I am kind of lost
timotimo El_Che: since .precomp is just a cache, you can just delete every .precome folder on your whole system (provided rakudo's the only one who uses .precomp) 16:37
oh, btw, maybe we should rename .precomp .p6precomp or something?
ugexe if you use zef you don't even have to install it
El_Che ugexe: I tried zef today while experimenting but it got stuck in Text::CSV 16:38
ugexe but if you do it can also uninstall (if you are using a rakudo from the last weekish)
El_Che ugexe: zef supports uninstalls?
|Tux| El_Che, my fault?
ugexe if you have a rakudo from the last weekish, yes
timotimo CompUnitRepo recently got a .uninstall folder. i only saw mention of that scroll through the backlog, but i assume panda could be made to easily support that 16:39
El_Che |Tux|: I don't think so, panda builds the module
(using rakudo 2016.01.1 in the docker image)
that uninstall bit is wonderful news 16:40
16:40 hippie1 joined 16:42 hippie left
El_Che I'll keep with the bloated image for now and wait the uninstall feature makes it to a rakudo release 16:44
ugexe El_Che: are you sure it froze and wasn't just running text csvs billion tests?
16:44 rurban joined
ugexe cause it installed for me 16:44
16:44 rurban left
El_Che ugexe: I'll will have a it and keep you posted. Maybe it was something related to the problem I posted earlier (panda installed new version of the module, but the binary was stuck to a precomp older version. Was it rakudobrew, was it panda? I don't know. I had the nuke the rakudobrew install to keep my sanaty :) ) 16:45
sanity
ugexe m: my @a = 1,2,3,4,5; @a[3]:delete; say @a.splice(0) 16:46
camelia rakudo-moar edac53: OUTPUT«[1 2 3]␤»
perlpilot m: my @a = 1,2,3,4,5; @a[3]:delete; say @a.splice; # this should be the same as .splice(0) 16:50
camelia rakudo-moar edac53: OUTPUT«[1 2 3 (Any) 5]␤»
16:51 synopsebot6 left, synopsebot6 joined
ugexe i wonder why that still works... looking at the multis it seems like it would take the same path, setting $offset=0 in the signatures 16:56
17:04 addison joined 17:07 zakharyas left
gregf_ i was looking at the execution time for the above question i'd asked and the Perl6 time was quite high :/ 17:07
gist.github.com/anonymous/a5dae683e0c0a27cd4e2 17:08
Woodi hi #perl6 :)
perlpilot ugexe: I wonder what multi actually executes?
timotimo gregf_: you're measuring mostly start-up time there
potentially
gregf_ hmm, possibly 17:09
timotimo you could try running foo for ^10_000 and just stringify, but not print the kwargs
perlpilot gregf_: also ... rakudo still has some optimization to do, so it will (probably) get faster.
timotimo yes, it will 17:10
Woodi lizmat: optimizations like "replace small amount of code with page or two" are well beyoud my brain capacity :) lizmat++
perlpilot Also ... I think rakudo's IO time is slowish too (just a gut feeling I've had)
17:11 synopsebot6 left, synopsebot6 joined
stmuk_ I don't think there is buffering on file handles due to libuv (?) 17:11
timotimo there is a bit of overhead doing synchronous IO through libuv 17:12
ugexe hmm so what is the fastest way to find out which multi something uses? 17:13
perlpilot I only know of slow ways right off. 17:14
timotimo ugexe: hmm, spesh log? :P 17:15
you could wrap the candidates, i guess?
ugexe i was hoping a clever way to make it die so i could use the trace 17:16
perlpilot
.oO( "we've secretly replaced the .splice multi candidates with ones that die; let's see who notices" )
17:17
ugexe would make a good 4.1.2016 release 17:19
stmuk_ but only in the USA! 17:21
perlpilot someone should do a bizarro-rakudo release with such things 17:22
gregf_ timotimo: perlpilot : well ran a 100,000 times: gist.github.com/anonymous/0f7b3a92894b86d41c19 *hides* 17:24
anyways, it should improve over time 17:25
btw, is threading in Perl6 better than in Perl5? 17:26
timotimo a million times better
gregf_ thats encouraging
timotimo i'd say "perl5 doesn't have threading" 17:27
17:27 pullphinger joined
gregf_ well, its there but its not recommended 17:27
geekosaur perl5 threading is a (possibly cancerous) outgrowth of a hack intended to (a) make signal handling safe on unix (b) simulate fork() on Windows 17:28
17:28 sufrostico left
timotimo gregf_: invocation is currently quite a bit more expensive than it could be. that is an important part in jnthn's upcoming optimization work 17:29
for which he'll hopefully be sponsored by the perl foundation's perl6 grant money pool
gregf_: your code runs in 0.85s on my machine; what version of perl6 are you running? 17:30
i.e. perl6 --version
gregf_ 5.9.0 17:31
version 0
its prolly a month or so old
moritz that doesn't look like a rakudo version
17:31 synopsebot6 left
timotimo no, that's not a rakudo version 17:31
17:31 synopsebot6 joined
timotimo give us perl6 --version instead, please 17:31
moritz a parrot version, manybe?
timotimo hopefully not!!
gregf_ parrot it says
timotimo lol 17:32
that explains the performance
please go get an up-to-date rakudo
yours is at least 2 years old
gregf_ ah - i see
timotimo or maybe 10. or 20?
moritz gregf_: please get a rakudo 2016.01 or newer
gregf_ no wonder
sure
17:32 jabowery left
timotimo thank you :) 17:33
and thank the lord the actual current performance isn't that bad
gregf_ ;) 17:34
timotimo the parrot version of rakudo also doesn't come with any perl6-level threading
gregf_ oh , so panda is like rvm/cpanm/pip 17:36
mst somewhat
it's in the same space
17:37 cognominal_ joined
timotimo ohai mst 17:39
gregf_: can you tell us how you got to that version of rakudo? did you get it from your distro's package manager? if yes, what distro and version is that?
flussence perl5 threading made complete sense to me when I used it (shows how little I knew about concurrency back then)
gregf_ timotimo: yeah, just a min. installing rakudo ... 17:40
timotimo stackoverflow.com/questions/355106...use-events - has anybody used the perl6 ncurses module yet? 17:42
17:42 addison left
rudi_s With NativeCall, what do I use for void * which is used to pass arbitrary data to the function? 17:43
timotimo usually, Pointer; you can always nativecast afterwards 17:44
gregf_: also, the perl6 code in your benchmark isn't the same as at least the python code, because the perl6 version gives the %kwargs as the return value of the function you declared
AFK for a bit
rudi_s Basically a char * pointer but not encoded/decoded. On the perl side I have Buf. 17:45
How can I pass that as "raw" value to the C function?
(Btw. how can I convert a Str to a Buf?)
timotimo there's a helper module for things like that in the ecosystem 17:47
you'd use a CArray for that in NativeCall
pmurias jnthn: how does nqp::callercode work with inlining?
timotimo because you cannot create a Buf without knowing the length of the thing
gregf_ timotimo: gist.github.com/anonymous/b3cfa48fdbba487aa3a2 *looks better*
timotimo gregf_: it'd be interesting to see what time perl6 -e 'say "hi"' gives you
on my machine that's 0:00.13elapsed 17:48
gregf_ sure
timotimo used to be at 0:00.10 not long ago. i wonder what changed
rudi_s timotimo: CArray of which type?
timotimo doesn't really matter. probably int8? or uint8? 17:49
if you want to see the most terrible thing ever created to get a void ** to work, have a look at this: github.com/timo/SDL2_raw-p6/blob/m...ise.p6#L37
stmuk_ timotimo: textbox is worth a look as a more modern and simplier ncurses
gregf_ timotimo: nope. its slower :/. almost 3 seconds
timotimo github.com/timo/SDL2_raw-p6/blob/m...aw.pm#L190 - this is the declaration of LockTexture to go with that
gregf_: how can say "hi" take 3 seconds, but a hundred thousand calls to foo take less than one second? 17:50
rudi_s timotimo: I'm confused about the "doesn't really matter". Won't this be represented as a char * internally - otherwise passing it to the external app won't work.
gregf_ timotimo: anyways, gtg, thanks. *later*
timotimo you're welcome!
17:50 prammer joined
timotimo rudi_s: i believe for the calling convention it just matters that the argument is a pointer 17:50
17:51 synopsebot6 left
timotimo i think i'm misunderstanding what you want 17:51
17:51 synopsebot6 joined
timotimo perhaps you're supposed to pass a pre-made buffer to a native function via a "void *" argument? 17:51
gregf_ timotimo: github.com/tadzik/rakudobrew <-- from here 17:52
rudi_s timotimo: Sorry. I'll explain again. I have either a Str or a Buf and want to pass that "raw" to a C function which takes a void * and a length and then writes this data somewhere.
timotimo ah 17:53
gregf_: no, i meant before that. when you got a parrot-based rakudo
rudi_s (I just learned that I can encode a Str to a Blob, so the question becomes how to handle a Buf or Blob and pass that.) 17:54
timotimo rudi_s: i'm not 100% sure about how to pass a Buf. theoretically, it should work as-is, but i suspect it isn't implemented yet
otherwise, have you checked out that nativecall helper module i talked about earlier?
17:55 addison joined
gregf_ timotimo: well just did a: apt-get install perl6 afaik 17:55
timotimo OK, and what distro and distro release is that on?
gregf_ ubuntu 17:56
LTS 4.04
s/^4/14/
timotimo OK, thanks!
flussence yep, that's 2 years out of date alright
rudi_s timotimo: I didn't find it. Do you have a name?
timotimo NativeHelpers::Blob and NativeHelpers::Array 17:57
ugexe ah i see. .splice never reaches the multi that sets a default of 0
timotimo AFK for a bit, for real this time
oh, and what is the content of the "perl" field in the meta.info supposed to be? "6"? "6.c"? 17:58
17:58 Juerd left 17:59 Juerd joined 18:02 b2gills left
nine 6.c 18:02
timotimo what speaks against 6.*?
nine Maybe someday rakudo will drop support for 6.c. That may affect your module. 18:03
timotimo hm, right, fair enough
though i hope i won't leave it unmaintained for that long :)
maybe something more "complicated" than just a single version would be interesting to have in the "perl" field
nine Of course newer versions of your module will be well tested with newer versions of Perl6 by then. But the old version won't.
timotimo if my code runs unchanged with 6.c or 6.d for example
nine Well right now we interpret it as the minimum version of Perl needed by your module. 18:04
timotimo ah, good good
18:05 sufrostico joined
ugexe m: my @a = 1,2,3,4,5; @a[1]:delete; say @a[lazy 0..3] 18:05
camelia rakudo-moar edac53: OUTPUT«(1)␤»
ugexe m: my @a = 1,2,3,4,5; @a[1]:delete; say @a[0..3]
camelia rakudo-moar edac53: OUTPUT«(1 (Any) 3 4)␤»
ugexe this is causing the splice problem
AlexDaniel oh, 2016.01 still is not in Debian. Eh. 18:06
the freeze will be this summer 18:07
18:10 Relsak left 18:11 synopsebot6 left, synopsebot6 joined
Skarsnik (my) current debian stable has a parrot perl6 I think 18:11
ugexe m: my @a = 1,2,3,4,5; @a[1]:delete; say @a[0..*] 18:12
camelia rakudo-moar edac53: OUTPUT«(1)␤»
AlexDaniel Skarsnik: I think that you have to install “rakudo” package directly 18:15
it was there since wheezy, but in wheezy it is 2012.01… In jessie 2014.07
which is, meh…
Skarsnik this is really confusing lol 18:16
rakudo - Perl 6 implementation on top of Parrot virtual machine
rakudo-lib - Library for Perl 6 implementation on top of Moar virtual machine
there is a lib rakudo? x)
[Coke] Skarsnik: that version is just horribly out of date. 18:17
18:17 cognominal_ left
Skarsnik Oh yeah, it's 2014.07 18:17
AlexDaniel Suggests: valgrind
18:18 cognominal joined, b2gills joined
Skarsnik hm 2015.11 is the version on unstable? 18:20
18:21 cdg left, GlitchCog joined, donaldh left 18:22 cdg joined 18:23 GlitchCog left, GlitchCog joined
[Coke] that's still too old. :) 18:23
Skarsnik btw what is recommanded to package now? 2016.01.1?
18:24 addison left
[Coke] yup 18:25
18:25 darko joined, pmqs left, abaugher left, pdcawley_ left, Amnez777 left, Grauwolf left, edenc left, LGD left, johan left, au left, BooK left, [particle] left, rjbs left, moritz left, gypsydave5 left, mst left, Timbus left, moritz joined, rjbs joined, mst joined, kd` joined, au joined, sunnavy joined, mathw joined, gabiruh joined, BooK joined, edenc joined, Hotkeys joined, Grrrr joined, cosimo joined, gregf joined, d^_^b joined, gypsydave5 joined, d^_^b left, d^_^b joined, johan joined, vytas joined, Amnez777 joined, LGD joined, autogen joined, pmqs joined 18:26 abaugher joined, pdcawley joined, Grauwolf joined, yeltzooo joined, [particle] joined, luis joined, Timbus joined, Praise joined, Praise left, Praise joined 18:27 darko left, matt_ left, ambs left, mspo left, lestrrat left, jercos left, felher left, masak left, woodruffw left, cpage left, pochi left, tinita left, a3r0_ joined, ranguard joined, Woodi joined, awwaiid joined, masak joined, mspo joined, dsp- joined, jercos joined, pochi joined, apejens joined, nowan joined, llfourn joined, felher joined, jsimonet1 joined, bitmap joined, matta joined, masak is now known as Guest5704
timotimo AlexDaniel: is that just because we install a perl6-valgrind-m script? 18:28
Skarsnik Yes
AlexDaniel yup
18:28 tinita joined, rdleon joined, ambs joined
Skarsnik In the description 18:28
valgrind package installation is suggested to debug issues with
perl6-valgrind-m program.
18:28 woodruffw joined, cpage joined, woodruffw left
timotimo stmuk_: textbox is not likely a good suggestion for that stackoverflow question, though? 18:29
stmuk_ maybe not but I just like textbox and promote it :)
18:29 Amnez777 left, Amnez777 joined, lestrrat joined
timotimo we don't have a binding for that yet, eh? 18:29
stmuk_ I had one somewhere partly done 18:30
stmuk--
timotimo oh :)
18:30 prammer left
timotimo don't beat yourself up about it 18:30
18:31 synopsebot6 left, synopsebot6 joined
pmurias textbox? 18:32
timotimo does ufo work for installing stuff again? 18:33
pmurias github.com/Yomguithereal/react-blessed seems like a awesome way of doing ncursy-like things 18:34
18:37 wamba left, woodruffw joined, woodruffw left, woodruffw joined, woodruffw left
timotimo great. looking at brrt's assembly programming video ... sound is quiet AF, there is only a little piece of brrt visible, but the slides aren't in the video as "big" ... 18:38
argh.
18:38 woodruffw joined
timotimo and audio and video out of sync 18:38
DrForr I should see if my video is up then. 18:39
timotimo i saw it in the list
just 1gb big, too
that's nothing!
DrForr It was, last time I checked it was broken.
Still is then :/
timotimo well, i see what i assume is you in front of a blackboard that says "NLPW 2016" 18:40
what kind of Dr are you, btw?
stmuk_ errr I actually meant termbox not infobox anyway
DrForr Dr. House :)
stmuk_ code.google.com/archive/p/termbox/
18:40 prammer joined
timotimo did you say infobox? i think you said textbox :) 18:41
so apparently they're using audio from the camera's built-in microphone?
stmuk_ oh yeah
18:41 addison_ joined
timotimo why? :( 18:41
DrForr Oh, mine's going to be overloaded then, the speakers were off and I was trying to project to the back. 18:42
timotimo overloaded?
DrForr Volume. 18:43
timotimo ah
but if your speakers were off, doesn't that mean you'll be quiet rather than too loud?
DrForr Louder than I'd be with them on, which is rare for me. 18:44
timotimo oh, you compensated for the lack of speakers by speaking up?
i hope that didn't take too big of a toll on your voice
DrForr Tried, at least.
Naah. I was still talking afterward, in smoky bars even ) 18:45
s/.$/:)
timotimo good good
18:51 synopsebot6 left, synopsebot6 joined
stmuk_ considers the irony that Brussels the source of the "no smoking in bars" rules allows it 18:52
DrForr I was speaking metaphorically, I really wasn't paying attention to the smoke. Or lack thereof. 18:54
19:01 anaeem1_ joined, anaeem1_ left 19:03 cfedde joined 19:04 Actualeyes left, anaeem1 joined, anaeem1 left, SCHAAP137 joined 19:07 cdg left
stmuk_ www.tolkiensociety.org/2016/02/exte...-in-april/ 19:10
19:11 synopsebot6 left, synopsebot6 joined
lizmat did some benchmark on Str.trans before and after the last optimizations 19:13
and came up with a factor of 160x improvement
lizmat is happy :)
perlpilot S99:LTA 19:14
synopsebot6 Link: design.perl6.org/S99.html#LTA
timotimo lizmat: great! 19:15
synopsebot6: why did you restart? :(
perlpilot S32/Callable:123 19:16
synopsebot6 Link: design.perl6.org/S32/Callable.html#line_123
timotimo huh, this is strange: Failed to set cpu.cfs_quota_us on /system.slice/synopsebot.service Permission denied
lists.debian.org/debian-kernel/201...00313.html - oh? 19:17
looks like "failure to spawn thread", potentially because NPROX set too low. i wonder why it spawns threads all the time, though. 19:19
BBIAB
19:21 fireartist joined
sjn lizmat++ # optimizing stuffs 19:26
perlpilot timotimo++ for resurecting synopsebot6 :)
(and keeping it fed and watered) 19:27
19:28 synopsebot6 left, synopsebot6 joined
timotimo it's quite an easy job 19:28
19:30 _mg_ joined
moritz timotimo: but proc != thread, no? 19:31
19:33 cfedde left 19:35 cfedde joined, sufrosti1o joined 19:37 virtualsue left
moritz btw the setting compiles in 71s on the new openstack instance that I just provisioned 19:43
dalek kudo/nom: 65a2e89 | lizmat++ | docs/ChangeLog:
Add some ChangeLog

For the issues I could recognize: please add anything I forgot / fix what I didn't understand correctly
19:44
lizmat [Coke]: ^^^
19:47 synopsebot6 left, synopsebot6 joined
jnthn ugexe: If you didn't discover already on "how do I find which multis this argument capture matches" - see the .cando method 19:49
pmurias: iirc, currently we don't inline anything that does nqp::callercode 19:51
[Coke] lizmat: danke 19:55
dalek p: 3e46e75 | lizmat++ | tools/build/MOAR_REVISION:
Bump MOAR_REVISION
19:57
[Coke] lizmat++ 19:59
jnthn lizmat: 160x improvement o.O 20:01
lizmat++
lizmat yeah, I think a bit more can still be had, but I'll keep that for after the release
sjn what features are affected by that speedup? 20:02
lizmat tr/abc/def
moritz lizmat: is there anything special post-christmas that I have to be aware of when splitting test files? 20:03
in particular I want to split up t/spec/S06-operator-overloading/sub.t into several files
because it's so memory hungry
Woodi moritz: 71s: it means newer openstack software or just new instance ?
lizmat I think that's fine, jnthn [Coke] objections ?
[Coke] moritz: you can do whatever you want on roast/master - it's not 6.c
lizmat moritz: it's about the test, not where the test lives 20:04
El_Che lizmat: stop making rakudo fast otherwise won't get the grant ;)
[Coke] if you want to split it for 6.c, that's also possible, on the 6.c errata branch, as long as the tests themselves don't change.
rudi_s timotimo: Regarding my problem above (passing Buf/Blob to external function with takes void *), just using Blob as parameter works fine.
moritz Woodi: it means that $work is testing a new openstack cluster, and I got free access, so spun up a new instance 20:05
Woodi bruteforce... 20:06
Skarsnik rudi_s, yes, I think Blob and Buff work as sub argument (but not return, or struct) 20:07
20:07 synopsebot6 left, synopsebot6 joined
jnthn moritz: I'm fine with the split 20:10
20:10 sufrosti1o left
dalek ast: 274e561 | moritz++ | S06-operator-overloading/ (2 files):
Start to split up S06-operator-overloading/prefix.t into several files

  ... because running it on rakudo-moar takes > 1.4GB, and that has
killed my laptop one time too often :-)
20:10
20:10 sufrostico left
dalek kudo/nom: f3cca8f | moritz++ | t/spectest.data:
Run new (split-off) test file
20:10
moritz Woodi: when in doubt, use brute force :-) 20:11
dalek kudo/nom: 120347b | lizmat++ | tools/build/NQP_REVISION:
Bump NQP_REVISION
20:11 lostinfog joined
lizmat nom is now on latest/greatest MoarVM/NQP 20:12
rudi_s Skarsnik: Thanks, good to now.
Btw. how can I handle time_t as argument?
Skarsnik time_t is a struct?
Now, I need to add another flag to gptrixie to not exclude the std stuff x) 20:14
20:15 ocbtec left
Skarsnik time_t seem to be long int for me 20:17
20:18 darutoko left
AlexDaniel Juerd: have you found any way to fix your solution? 20:20
ugexe `say from-json("projects.json".IO.slurp).elems` went from 5.5s to 7.0s 20:22
lizmat ugexe: when? 20:24
ugexe HEAD~2 to HEAD
lizmat hmmm... that could only be the bump in nqp/moarvm then
ugexe 65a2e89 to 120347b
rudi_s Skarsnik: Depends on the system. I guess I can't get this portable. 20:25
Skarsnik You could write a small C helper
or add the type in rakudo and co if it's a serious concern 20:26
lizmat ugexe: fwiw, I'm seeing a 1.5x slowdown for Juerd's atbash example :-(
ugexe i only checked because i knew it used trans (actually it was to-json but i didnt know that before checking) 20:27
rudi_s Skarsnik: I'll just hope it's just a uint64 on all systems I use.
20:27 synopsebot6 left, synopsebot6 joined 20:28 lichtkind joined 20:29 yqt joined
AlexDaniel who is nrebeps on reddit? 20:30
Skarsnik hm, interesting, it should be unsigned int? (32bits system but I get Typedef<__time_t>->|long int|
rudi_s AFAIK it's unsigned long. 20:34
Which I guess translates to Perl6's int64
.
ugexe say to-json(from-json("packages.json".IO.slurp)).chars; # 2015.12-323-gbb2953c => 1m15s, HEAD~2 => 35s, HEAD => 45s
lichtkind is pierre-vigier here?
[Coke] all the nqp changes in that commit are basically JS-only.
jnthn [Coke]: One of them wasn't (just mentioned it in another channel) 20:35
dalek ast: ac99cf5 | moritz++ | S06-operator-overloading/ (2 files):
Split out infix tests from S06-operator-overloading/sub.t
20:36
jnthn ugexe: Where HEAD~2 is 65a2e89ab9?
lizmat jnthn [Coke] building a revert with that now
ugexe jnthn: yes
jnthn is happy there's not that many commits to look through 20:37
[Coke] is glad we noticed BEFORE the release. :)
dalek kudo/nom: 9ac5896 | moritz++ | t/spectest.data:
Track test file split

also restore alphabetical order
20:38
jnthn Indeed
[Coke] ugexe++
jnthn stroll & 20:39
dalek ast: 00464e8 | moritz++ | S06-operator-overloading/ (2 files):
Split out circumfix tests from sub.t
20:44
kudo/nom: 327c518 | moritz++ | t/spectest.data:
Track test file split
20:46
20:47 synopsebot6 left, synopsebot6 joined
timotimo jnthn: did you turn off the fixed size allocator in moar, perhaps? 20:48
20:49 kid51 joined
timotimo the FSA_SIZE_DEBUG is turned on. not sure if that has a speed impact 20:49
dalek ast: 14d35ed | moritz++ | S17-promise/at.t:
Max S17-promise/at.t 2 seconds faster

replace a sleep with an await
20:51
20:51 virtualsue joined
moritz lizmat: does S17-promise/at.t really need to sleep eleven seconds tocheck that the time difference before and after is at least one? 20:52
timotimo ah, that flag makes the fixedsize allocator use malloc directly
that could also explain why my white noise code was so heavy on malloc and free
[Coke]: it's potentially enough to revert just the latest commit 20:53
[Coke] timotimo: the latest commit is "all the nqp changes"
or do you mean the latest nqp commit? 20:54
timotimo no, the laste moarvm commit :)
sorry for not being specific
RabidGravy I don't suppose there is some easy way identify things like Version and DateTime where the .Str of an object can be fed to thr new to create the equivalent object?
timotimo well, only that one line that changes the #define
jnthn timotimo: Ouch, I comitted that? :/ 20:55
jnthn--
timotimo :) 20:56
i'm glad i was around and had the domain knowledge to see that that line could have such an impact
20:57 wbill joined
lizmat moritz: if you feel you can make it better, please do: those tests were added by me to have *any* tests there 20:58
moritz: aka "make it work"
20:58 virtualsue left
lizmat jnthn: so that MoarVM commit *is* the culprit? 21:01
jnthn Almost certainly
Gee, goes to show show how important the FSA is.
We should make more stuff use it :P
timotimo i'm not quite sure why mp_mul_2d is so darn high up on the c-level profile ... 21:02
jnthn lizmat: Pushed an almost-definitely-fix.
Sorry 'bout that. 21:03
timotimo i don't see a multiplication in my code ...
lizmat jnthn: okidoki, bumping once again
jnthn It sneaked into one of my memory leak commits; I disabled it to help uncover more leaks to patch.
21:05 _dolmen_ joined
dalek p: 05c076c | lizmat++ | tools/build/MOAR_REVISION:
Bump MOAR_REVISION to get enabled FSA, jnthn++
21:05
kudo/nom: a347de9 | lizmat++ | tools/build/NQP_REVISION:
Bump NQP_REVISION to get enabled FSA on MoarVM
21:06
21:07 synopsebot6 left, synopsebot6 joined
lizmat ugexe: that appears to fix the speed regression for me 21:10
dalek ast: 27d0da3 | moritz++ | S17-promise/at.t:
Speed up S17-promise/at.t

it should be safe to sleep much less here
jnthn On the concurrency tests that sleep, I'll probably work on a TestScheduler
And we can use virtualized time for most of them 21:11
And just have a handful of tests for in/at on the ThreadPoolScheduler itself that really try and test it does something sensible with time.
Everything else builds atop of .cue in ThreadPoolScheduler.
lizmat tests for .batch may include a time component 21:12
jnthn Yeah, they do
lizmat as for .throttle ?
jnthn *nod*
I want to try and design a nice enough one that I can put it on modules.perl6.org too, as well as including it in the spectest repo
So people can use it for their own time-based code
lizmat jnthn: that would be cool :-)
jnthn Much like my Test::IO::Socket::Async :)
moritz speaking of which 21:13
dalek kudo/nom: e401eeb | moritz++ | t/spectest.data:
at.t is not too slow anymore
moritz the async socket tests sometimes (under stress) abort after test 4 21:14
with "Connection reset by peer"
any idea why? and if this is a timing issue in the test or an actual bug?
jnthn suspects timing issue, but doesn't see it right away... 21:16
21:25 prammer left 21:26 prammer joined 21:27 synopsebot6 left, synopsebot6 joined 21:29 prammer left
[Coke] jnthn: you do git stuff for a living, yes? how much would you charge to convert this horribly broken svn repository to git for me? ;) 21:29
21:30 cdg joined
[Coke] (svn cp ^/ ^/branches/foo; svn cp ^/branches/bar ^/baz) 21:30
21:30 musiKk joined 21:31 addison_ left
lizmat hmmm... I don't think all speed issues are gone yet 21:31
bare startup has gone from 110 msecs to 125 for me :-(
21:32 _mg_ left 21:33 prammer joined 21:34 prammer left 21:36 ely-se joined, SCHAAP137 left
jnthn [Coke]: Ouch! ;) I taught Git, but somehow escaped an SVN -> Git migration...the migrations I encountered were more exotic things (ClearCase <shudder>) :) 21:37
21:37 Zero_Dogg left 21:38 Zero_Dogg joined 21:44 firstdayonthejob joined 21:47 synopsebot6 left, synopsebot6 joined 21:48 addison_ joined
RabidGravy the one I seem to have done most in my life is cvs -> svn 21:50
lizmat realises a backup was running 21:52
dalek osystem: 9df1db1 | (Gary Ashton-Jones)++ | META.list:
Update META.list
21:55
osystem: b1b26df | (Zoffix Znet)++ | META.list:
Merge pull request #156 from garyaj/patch-1

Update META.list.
lizmat good night, #perl6! 21:56
[Coke] ~~ 21:57
jnthn 'night, lizmat 21:58
21:59 skids left, skids joined 22:00 skids left 22:01 pullphinger left 22:03 rindolf left 22:07 synopsebot6 left, synopsebot6 joined 22:23 _dolmen_ left 22:25 zpmorgan joined 22:27 synopsebot6 left, synopsebot6 joined 22:38 autarch1 left 22:43 _dolmen_ joined
ugexe m: my @a = 1,2,3,4; for @a.kv -> $x, $y { @a[$x]:delete; say @a.elems }; # bad yes, but is the behavior still expected? 22:44
camelia rakudo-moar e401ee: OUTPUT«4␤4␤4␤0␤»
22:46 fireartist left
jnthn ugexe: It's certainly very deliberately being done in DELETE-POS 22:47
22:47 synopsebot6 left, synopsebot6 joined
jnthn So, at the very least it's not an accident. 22:48
ugexe is it to prevent destructive iteration?
Hotkeys what else needs being done in Lingua::* 22:49
hmm
jnthn ugexe: 'fraid I don't know the history of this behavior. 22:50
22:51 maybekoo5 joined
jnthn But it seems at some point it's been deliberately made to make the array shorten if elements are deleted at the end, and to collapse all deleted ones 22:51
(So it seems orthogonal to iteration) 22:52
22:56 TEttinger joined, kurahaupo left
AlexDaniel m: my @a = 1,2,3,4; for @a.kv -> $x, $y { @a[$_]:delete for ^3; say @a.elems } 22:58
camelia rakudo-moar e401ee: OUTPUT«4␤4␤4␤4␤»
AlexDaniel m: my @a = 1,2,3,4; for @a.kv -> $x, $y { @a[$_]:delete for ^4; say @a.elems } 22:59
camelia rakudo-moar e401ee: OUTPUT«0␤»
AlexDaniel O_o
jnthn: ↑ is there any excuse for that? :)
jnthn AlexDaniel: I just explained the semantics, and said it's intentional. 23:00
AlexDaniel jnthn: except that it does not happen at the end? 23:01
perhaps I'm missing something?
jnthn Covered in roast here: github.com/perl6/roast/blob/master...lete.t#L18 23:02
23:03 musiKk left, ely-se left
AlexDaniel oh, so when you delete something from the end then it actually shortens during the loop 23:04
but when you delete something from the middle then it doesn't…
jnthn Right 23:05
23:05 kaare_ left 23:06 zacts joined
AlexDaniel ugexe: personally I'd just hope that I'll never see that in real code 23:06
23:07 synopsebot6 left, synopsebot6 joined
jnthn I struggle to recall a case where I modified soemthing I was iterating over and didn't end up regretting it later... 23:07
AlexDaniel <-> is probably OK though 23:08
dalek kudo-star-daily: 5dea8a2 | coke++ | log/ (9 files):
today (automated commit)
jnthn Oh, I meant the array itself rather than its items 23:09
23:10 kurahaupo joined
AlexDaniel m: my @a = 1,2,3,4; for @a <-> $x { $x = Any }; say @a 23:10
camelia rakudo-moar e401ee: OUTPUT«[(Any) (Any) (Any) (Any)]␤»
AlexDaniel m: my @a = 1,2,3,4; for @a <-> $x { $x = Empty }; say @a
camelia rakudo-moar e401ee: OUTPUT«[() () () ()]␤»
RabidGravy HotKeys, I'd go some pluralisation, singularisation thing - I got a couple hacks around that in some code
23:10 addison_ left, _dolmen_ left
Hotkeys RabidGravy: sounds reasonable 23:12
23:12 lostinfog left 23:15 kurahaupo_ joined
RabidGravy it's useful in inference type things 23:16
23:16 kurahaupo left
RabidGravy avyway dunhackin, toodles 23:17
timotimo hmm
23:20 GlitchCog left 23:21 RabidGravy left, skids joined
timotimo jnthn: on my laptop (so not comparable to the numbers i posted yesterday), turning the FSA back on gets me from between 11.5 FPS and 14.5 FPS up to 15 FPS to 22 FPS 23:21
jnthn :) 23:22
timotimo i'm going to turn this into a SDL-less thing so i can benchmark it a bit and compare CArray with IntTypedArray and Buf, i think 23:23
23:24 kurahaupo_ left
jnthn was hacking on a spaced repetition module, but gets tired and decides to rest :) 23:26
'night, #perl6 23:27
timotimo neat. supermemo 2 algorithm?
23:27 synopsebot6 left, synopsebot6 joined 23:28 pmqs left
jnthn timotimo: Hm, should check how close it is to that. Am more aware of it from the Pimsleur language lessons. 23:28
timotimo oh, OK 23:29
23:29 pmqs joined
jnthn But yeah, want something that as I come across new words, I can toss them into it, then every so often spend some time learning. But also to hack up some support for declension/conjugation awareness too. 23:32
Suspect it'll end up a mix of useful module(s) I can share and total hacks that serve my own needs. :) 23:33
Really sleepz & 23:35
dalek osystem: 848e46f | (David Brunton)++ | META.list:
Add Automata::Cellular
23:36
osystem: 8765749 | jnthn++ | META.list:
Merge pull request #157 from dbrunton/patch-1

Add Automata::Cellular
23:36 kurahaupo joined 23:46 kurahaupo left 23:47 synopsebot6 left, synopsebot6 joined 23:56 wbill left