»ö« 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/DnATs7EIeiStrange 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|50521688Scalar|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«140356844017296140356844017296» | ||
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/G9j3BwlZOZUndeclared 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, orby 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_yUndeclared name: Ah used at line 1Undeclared 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«4440» | ||
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«4444» | ||
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
|