»ö« 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.
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
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
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
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
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 ???
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
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)
Hotkeys or rather I guess DSON is ridiculous 01:39
that isn't the module's fault
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
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
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.
orbus yeah, I more or less understand the simple case 02:26
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")})}␤»
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
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
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!
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
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
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
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
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
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
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
AlexDaniel Juerd: by the way, why not use | before first 「<after $player」 04:25
it just asks for it, doesn't it? :) 04:30
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
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
AlexDaniel :-/ 04:54
llfourn anyone know how to call a parent grammar -- like callsame for grammars? 05:42
(inside a token) 05:43
sortiz llfourn, It seems that we like to do complicated questions. :) 06:11
llfourn sortiz: that's what life's for :) 06:12
sortiz llfourn, Indeed. 06:12
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␤»
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␤»
RabidGravy HARR 08:00
sortiz Hi RabidGravy 08:02
Hotkeys yawns 08:12
RabidGravy I have this awful and uncontrollablle urge to make something like c#s XmlSerialization 08:45
DrForr I'd recommend ANSI X.12 instead, much clearer :) 09:07
jast great recommendation, very much appreciated. I feel a lot saner now. 09:16
DrForr Obviously you haven't read the spec :) 09:18
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.
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
lizmat good *, #perl6! 09:45
FROGGS o/
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
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
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
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
Skarsnik hello 10:03
lizmat Skarsnik o/ 10:05
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)?
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
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
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
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
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
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
|Tux| test 22.228 11:22
test-t 11.672
csv-parser 51.415
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
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
nine El_Che: I'd guess it's not precompilation that bites you but rakudobrew 11:24
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 :-)
|Tux| did not expect to loose so much time in updating systems due to CVE-2016-0235 11:42
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
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
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
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 :\
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?
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
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 ;(
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 :)
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
timotimo ah, self-signed 12:40
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
timotimo tadzik: asset-3.soupcdn.com/asset/9281/4482_373b.gif - you like space doge? 12:59
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
jnthn RabidGravy: You can also mark a candidate "is default" to tie-break, as a last resort 13:19
RabidGravy ah okay 13:20
dalek kudo/nom: 10c86cf | coke++ | docs/release_guide.pod:
claim next release
13:27
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
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
Perleone Ulti: github.com/FOSDEM/videobox/issues/...-186176254 14:10
stmuk_ VLC has a key to delay and advance audio 14:11
DrForr Yah, Vim cluster which annoys me because I keep tyoping them. 14:13
Ulti cool thanks Perleone 14:14
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
jnthn \o/ 14:22
masak moritz++ 14:39
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
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␤»
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
skids todays challenge posted, BTW www.reddit.com/r/dailyprogrammer/c...equencing/ 15:32
(Wasn't someone already doing bioinformatics?)
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
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
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
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!
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?
timotimo something like that, yeah 16:19
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
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
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
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
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?
ugexe cause it installed for me 16:44
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]␤»
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
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)
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
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
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
timotimo no, that's not a rakudo version 17:31
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
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
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
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!
timotimo rudi_s: i believe for the calling convention it just matters that the argument is a pointer 17:50
timotimo i think i'm misunderstanding what you want 17:51
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?
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
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
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
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
Skarsnik Oh yeah, it's 2014.07 18:17
AlexDaniel Suggests: valgrind
Skarsnik hm 2015.11 is the version on unstable? 18:20
[Coke] that's still too old. :) 18:23
Skarsnik btw what is recommanded to package now? 2016.01.1?
[Coke] yup 18:25
timotimo AlexDaniel: is that just because we install a perl6-valgrind-m script? 18:28
Skarsnik Yes
AlexDaniel yup
Skarsnik In the description 18:28
valgrind package installation is suggested to debug issues with
perl6-valgrind-m program.
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 :)
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 :)
timotimo don't beat yourself up about it 18:30
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
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.
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/
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
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
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
stmuk_ www.tolkiensociety.org/2016/02/exte...-in-april/ 19:10
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
sjn lizmat++ # optimizing stuffs 19:26
perlpilot timotimo++ for resurecting synopsebot6 :)
(and keeping it fed and watered) 19:27
timotimo it's quite an easy job 19:28
moritz timotimo: but proc != thread, no? 19:31
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]: ^^^
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
jnthn moritz: I'm fine with the split 20:10
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
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
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
Skarsnik time_t seem to be long int for me 20:17
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.
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
timotimo jnthn: did you turn off the fixed size allocator in moar, perhaps? 20:48
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
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
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"
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.
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
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
[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
[Coke] (svn cp ^/ ^/branches/foo; svn cp ^/branches/bar ^/baz) 21:30
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 :-(
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
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
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␤»
jnthn ugexe: It's certainly very deliberately being done in DELETE-POS 22:47
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
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
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
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
AlexDaniel ugexe: personally I'd just hope that I'll never see that in real code 23:06
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
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
Hotkeys RabidGravy: sounds reasonable 23:12
RabidGravy it's useful in inference type things 23:16
RabidGravy avyway dunhackin, toodles 23:17
timotimo hmm
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
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?
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
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