TimToady also wonders how many times he's mistyped --ll-exceptions by now... 00:04
samcv m: my Array[Int] $thingy; $thingy.push("string") 00:11
camelia rakudo-moar 4efcc2: OUTPUT«Type check failed in assignment to ; expected Int but got Str ("string")␤ in block <unit> at <tmp> line 1␤␤»
samcv how do i find out which exception this threw?
IOninja m: my Array[Int] $thingy; try $thingy.push("string"); say $!.^name 00:14
camelia rakudo-moar 4efcc2: OUTPUT«X::TypeCheck::Assignment␤»
samcv thx :)
TimToady samcv: there's something slightly "off" about the current $*COLLATION interface, insofar as we should be encouraging people to do "my $*COLLATION = ..." and our current .set method instead encourages people to clobber the PROCESS::<$COLLATION>, which is a bit antisocial 00:55
especially if we ever get to the point of running separate interpreters, where each has its own GLOBAL for that sort of stuff 00:56
samcv hmm
so how should I change it?
TimToady so we should think about putting it into GLOBAL at some point, but more than that, figure out how to do 'my %*FOO' such that it knows the type of an outer %*FOO somehow 00:57
don't quite know how to do that yet
samcv ah k
TimToady otherwise we get "my Collation $*COLLATION .= set()" and such, which is a bit wordy 00:58
maybe "temp %*FOO" should be more like that
STD actually rewrote that to "my %*FOO = CALLERS::<%*FOO>" or so, but rakudo doesn't really support that model of dynvars yet 00:59
but that form of temporization would automatically pull down the type of the caller's dynvar 01:01
so we wouldn't have to repeat it everywhere, if it were the same
samcv ah
TimToady well, it'd probably have to clone the outer one, so that local mods aren't propagated upstream 01:02
s/outer/caller/
or we could do something like automatically default any untyped my %*FOO to be the same as an ancestor; hafta think about the ramifications of that 01:03
m: say PROCESS::.pairs 01:04
camelia rakudo-moar 4efcc2: OUTPUT«($ERR => IO::Handle<IO::Special.new(what => "<STDERR>")>(opened, at octet 0) $SPEC => (Unix) $COLLATION => collation-level => 15, Country => International, Language => None, primary => True, secondary => True, tertiary => True, quaternary => True &chdir =>…»
TimToady m: say $*COLLATION.VAR.^name 01:06
camelia rakudo-moar 4efcc2: OUTPUT«Scalar␤»
TimToady m: say $*COLLATION.VAR.^of
camelia rakudo-moar 4efcc2: OUTPUT«No such method 'of' for invocant of type 'Perl6::Metamodel::ClassHOW'␤ in block <unit> at <tmp> line 1␤␤»
TimToady m: say $*COLLATION.VAR.of
camelia rakudo-moar 4efcc2: OUTPUT«(Mu)␤»
TimToady well, if we bind an immutable collation value, the people have to use some kind of constructor to set their own 'my $*COLLATION =' 01:08
so the current .set method, which implies mutable, was probably a bad idea on my part 01:09
so at the moment we should probably aim for an interface that looks more like: my $*COLLATION = Collation.new(options) 01:10
and then maybe think about how we can get a type on the left so we can use .= new instead
but that would at least fix the magical-action-at-a-distance problem 01:11
or render it much less likely, anyway
m: say PROCESS::.keys 01:12
camelia rakudo-moar 4efcc2: OUTPUT«($ERR $SPEC $COLLATION &chdir $AWAITER $IN %ENV $OUT)␤»
TimToady m: PROCESS::<$ERR> = 42 01:13
camelia ( no output )
TimToady m: $*ERR = 42
camelia ( no output )
TimToady m: say $*PID
camelia rakudo-moar 4efcc2: OUTPUT«13519␤»
TimToady m: say PROCESS:<$PID> 01:14
camelia rakudo-moar 4efcc2: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared name:␤ PROCESS:<$PID> used at line 1␤␤»
Geth rakudo/nom: 46313fae88 | (Samantha McVey)++ | 2 files
Add an experimental collate method and a Cool:D multi for `coll`
samcv TimToady, so with my $*COLLATION it would be dynamic but not tied to the process? 01:15
TimToady well, the processes PID shouldn't be modifiable either...
*s's
your entire mainline can just set my $*COLLATION at the top if it wants 01:16
and that is effectively global to everything you call
samcv yeah
and then do we just have a default $*COLLATION declared in rakudo
and in case they don't declare it just uses that one 01:17
TimToady we could poke the root of it into GLOBAL, if we decide the default is something that is global to an interpreter rather than to the process
samcv i think that is reasonable 01:18
TimToady m: say GLOBAL::.keys
camelia rakudo-moar 4efcc2: OUTPUT«()␤»
TimToady obviously we haven't thought much about poking things into GLOBAL yet
but if we're ever gonna have an apache-alike that runs multiple virual processes, we have to keep those from interfering with each other
samcv yeah 01:19
TimToady is a little surprised that $*PID doesn't originate from PROCESS, which kinda "duh"
*seems
samcv heh
TimToady anyway, .set was twinging my conscience this morning after you went to bed, so I thought I'd say something... 01:21
samcv thanks for letting me know 01:22
TimToady no problem, thanks for putting up with me always juggling way too many balls at once :)
samcv Ball juggler in chief? 01:26
is that like the court jester ;P
TimToady I made a fool of myself...
(alluding to The Court Jester, of course) 01:27
samcv you may now continue your juggling :) 01:32
for it pleases the court
timotimo clickbaits p6weekly.wordpress.com/2017/02/07/...fter-math/ 01:55
Geth rakudo/nom: 192387883e | (Samantha McVey)++ | 2 files
Hide unicmp coll and .collate behind experimental :collation

Seems to be a better permanent name for these features than unicmp
02:30
MasterDuke samcv: i think you may have broken the rakudo jvm build. `Stage jast : Error while compiling op unicmp_s (source text: "nqp::unicmp_s(\n nqp::unbox_s(a), nqp::unbox_s(b), 15,0,0)"), no registered operation handler` 04:11
samcv hmm i compiled it on jvm 04:12
i will recompile though
MasterDuke i'm a commit or two behind HEAD, i can try pulling and recompiling
samcv i will try 04:13
i may have it broken a few commits back tbh tho 04:15
before i put in #?if moar and stuff
would be nice if we could make travis only check if rakudo compiles and runs some basic tests on jvm or something 04:16
what commit are you on MasterDuke? 04:18
MasterDuke doesn't it already do jvm? or maybe it did and then that got turned off because jvm was broken for a while? 04:19
samcv no it does jvm 04:20
but it doesn't pass all tests so it is always failing
even when it is compiling
MasterDuke well, i pulled, so i'm on HEAD now (192387883eb4856d906660978ab1cb64c9dcb650)
samcv make: *** [CORE.setting.jar] Error 137 is what TravisCI says 04:22
but it will take a while for nqp and rakudo to compile
and i will investigate
MasterDuke thanks
samcv it says Stage jast : Killed 04:23
is that what you got?
MasterDuke that's usually the oom killer 04:25
how much free memory do you have?
samcv no that is travis 04:28
i'm gonna try this out blog.endpoint.com/2012/08/automatic...g-too.html 04:30
for when MVM goes mental and uses all my memory forcing me to hard power off
MasterDuke killed my box, had to hard reset 04:31
samcv hasn't happened recently but. always horrible when it does
it is very fast at being able to allocate memory lol
i have a SSD and 32GB of swap, and it still does it to my computer as SOON as it hits the swap point
i'm sure doesn't help i have full hard drive encryption 04:32
MasterDuke i need more ram, only have 8gb 04:34
samcv uhm i think it compiles fine tbh 04:35
it's not yet done but
Creating './perl6-j'
oh wait maybe not. ok it's on stage jast so i guess i'll find out soon 04:36
MasterDuke i don't consider it done until a `make install` completes successfully. i've had some changes compile fine, but fail there 04:37
samcv compiled fine MasterDuke 04:45
MasterDuke ah, excellent
samcv :D 04:46
MasterDuke now if it fails i know it's my change
Geth nqp: 9ecb40703c | MasterDuke17++ | 6 files
Intify things that cause the most MVM_coerce_smart_numify

These are variable that cause lots of calls to MVM_coerce_smart_numify.
04:52
MasterDuke nqp and rakudo both built on the jvm with that PR, so i merged it 04:53
samcv MasterDuke, how do I fix java.nio.file.NoSuchFileException: blib/Perl6/BOOTSTRAP.jar 05:11
MasterDuke, also does that change speed things up?
MasterDuke did you do `perl Configure.pl ...`? 05:12
and not noticeably
samcv yes i did
let's pretend it made it 10x faster
MasterDuke may just have to `make clean`, the jvm building is just a little more finicky all around 05:13
samcv ^
MasterDuke i could live with that
it did remove something like 15 million calls to MVM_coerce_smart_numify 05:14
samcv nice! 05:15
↑5
MasterDuke yeah, it seems like a good thing overall, they just weren't terribly expensive
samcv it's scientifically proven i make 100 1% speed improvements, it will then become instantaneous and require no time at all 05:16
MasterDuke science never lies 05:17
samcv yep! 100 * 1% = 100% so it will take 100% - 100% = 0! 05:18
TimToady wait, I thought 0! was defined as 1... 05:35
samcv m: for ^10 { say $++ } 05:49
camelia rakudo-moar 192387: OUTPUT«0␤1␤2␤3␤4␤5␤6␤7␤8␤9␤»
samcv TimToady, what magic makes $ become 0 05:50
when it's usually just (Any)
TimToady multi postfix:<++>(Mu:U $a is rw) { $a = 1; 0 } 05:59
samcv heh 06:00
smart
TimToady it was mandated by the specs 06:01
samcv multi dispatch ftw 06:02
Geth rakudo/nom: 56114251e1 | (Samantha McVey)++ | src/core/Any-iterable-methods.pm
Add .collate method to Any-iterable-methods.pm
07:08
rakudo/nom: 9f7e618fc0 | (Samantha McVey)++ | src/core/Any-iterable-methods.pm
Trim whitespace in Any-iterable-methods.pm
samcv TimToady, .sort for Hashes only sorts the keys right? 07:09
and returns the pairs
when I add collate to Any-iterable-methods.pm say %hash.collate 07:10
Cannot resolve caller infix:<coll>(Pair, Pair);
should I just add a multi which collates the keys when given two pairs?
eventually should be able to make collate only get the value of $*COLLATION.collation-level once and mostly remove the speed decrease from having to call it so many times 07:14
when using coll
i guess that's sorta an unrelated aside
but for now the collate methods just call self.sort(&[coll])
TimToady m: say :a(1) cmp :a(2) 07:24
camelia rakudo-moar 192387: OUTPUT«Less␤»
TimToady m: say :a(2) cmp :a(1)
camelia rakudo-moar 192387: OUTPUT«More␤»
TimToady pair comparison includes the values
of course, if you know you have a hash, the keys can't be identical 07:25
well, they could be identical from a collation point of view, I suppose
so you have to include the keys 07:26
er, values
samcv so doing by pair sorts by key and then falls back to value? 07:27
so the answer is i should make a multi, yes?
TimToady sounds like 07:34
samcv great 07:40
Geth rakudo/nom: 6990133410 | (Samantha McVey)++ | src/core/Str.pm
Add multi's for coll and unicmp for (Pair:D, Pair:D)
08:08
rakudo/fix-thunks: aec4f5fad9 | (Pawel Murias)++ | 3 files
Emit properly nested blocks for the combination of default value to params and subs/->.
11:42
jnthn pmurias++ 11:43
Well, I didn't read the patch yet, but... :)
pmurias jnthn: it's still being spectested so it might have some horrible flow 11:48
nine Patch looks sensible at a first glance 11:49
timotimo patch looks glancible at first sense 11:53
pmurias If the patch looks sane I'll expand it to fix up '$foo where sub {...}' and other thunks 12:16
IOninja NeuralAnomaly: status 14:39
NeuralAnomaly IOninja, [✘] Next release will be in 1 week and 4 days. Since last release, there are 30 new still-open tickets (30 unreviewed and 0 blockers) and 173 unreviewed commits. See perl6.fail/release/stats for details
IOninja 1.5 weeks till release :o
Time flies
Geth rakudo: pmurias++ created pull request #1016:
Emit properly nested blocks for the combination of default value to p…
17:01
nqp: 4e7eee01b7 | (Zoffix Znet)++ | src/HLL/CommandLine.nqp
Fix typos in POD

Part of fixing #346
17:29
IOninja How come this line (and some others) do `my $laze = values.is-lazy; values.map(&code).lazy-if($laze)` instead of just `values.map(&code).lazy-if(values.is-lazy)` ? github.com/rakudo/rakudo/blob/nom/...s.pm#L1951 18:46
timotimo mapping over the values might reify it completely? 18:48
IOninja Wouldn't values.is-lazy be obtained before that?
timotimo don't think so 18:49
well, it depends on whether or not the map immediately does something
to be honest, i haven't looked at this part of the code in a long while
IOninja m: sub x (\values) { values.map({$_}).lazy-if(values.is-lazy) }; say (x lazy 1, 2, 3).is-lazy 18:50
camelia rakudo-moar 699013: OUTPUT«This Seq has already been iterated, and its values consumed␤(you might solve this by adding .cache on usages of the Seq, or␤by assigning the Seq into an array)␤ in sub x at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
IOninja m: sub x (\values) { my $laze = values.is-lazy; values.map({$_}).lazy-if($laze) }; say (x lazy 1, 2, 3).is-lazy
camelia rakudo-moar 699013: OUTPUT«True␤»
IOninja Ahhhh
Well, half-an-ahh. 18:51
m: sub x (\values) { $ = values.is-lazy; $ = values.map({$_}); 42 }; say (x lazy 1, 2, 3) 18:52
camelia rakudo-moar 699013: OUTPUT«42␤»
IOninja m: sub x (\values) { $ = values.map({$_}); $ = values.is-lazy; 42 }; say (x lazy 1, 2, 3)
camelia rakudo-moar 699013: OUTPUT«This Seq has already been iterated, and its values consumed␤(you might solve this by adding .cache on usages of the Seq, or␤by assigning the Seq into an array)␤ in sub x at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
IOninja So it *is* called after it's (started to) mapped
m: sub x (\values) { $ = values.map({say "$_"}); $ = values.is-lazy; 42 }; say (x lazy 1, 2, 3) 18:59
camelia rakudo-moar 699013: OUTPUT«This Seq has already been iterated, and its values consumed␤(you might solve this by adding .cache on usages of the Seq, or␤by assigning the Seq into an array)␤ in sub x at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
IOninja s: (lazy 1, 2, 3), 'map', \({;}) 19:00
SourceBaby IOninja, Sauce is at github.com/rakudo/rakudo/blob/6990...ods.pm#L17
IOninja ZOFVM: Files=1224, Tests=132853, 145 wallclock secs (21.73 usr 3.16 sys + 2703.73 cusr 215.98 csys = 2944.60 CPU) 19:16
Geth rakudo/nom: 51b0aba8e8 | (Zoffix Znet)++ | src/core/Iterable.pm
Make Iterable.flat propagate `is-lazy`

  irclog.perlgeek.de/perl6/2017-02-07#i_14059136
19:19
IOninja is failing to find any non-accidental tests for .flat :( 19:22
TimToady I see what you mean 19:24
I guess all the GLR testing was rather more ad hoc... 19:25
(of flat)
Geth roast: f00494253b | (Zoffix Znet)++ | S02-types/array.t
Test Iterable.flat propagates .is-lazy

Note that routine &flat does not propagate it and based on the source comments[^1], it appears it wasn't meant to.
  [1] github.com/rakudo/rakudo/blob/51b0...1377-L1382
20:02
IOninja or maybe I'm misreading that source comment.... 20:04
m: multi x(Seq $x) { $x.is-lazy.say }; multi x(**@x) { @x.is-lazy.say }; x(lazy 1, 2, 3) 20:05
camelia rakudo-moar 51b0ab: OUTPUT«True␤»
IOninja hmmmm
m: multi x(Seq $x) { $x.is-lazy.say }; multi x(**@x) { @x.is-lazy.say }; x(42, lazy 1, 2, 3)
camelia rakudo-moar 51b0ab: OUTPUT«False␤»
IOninja m: multi x(Seq $x) { $x.is-lazy.say }; multi x(**@x) { @x.is-lazy.say }; x(1..*)
camelia rakudo-moar 51b0ab: OUTPUT«False␤»
IOninja m: multi x(Iterable $x) { $x.is-lazy.say }; multi x(**@x) { @x.is-lazy.say }; x(1..*) 20:06
camelia rakudo-moar 51b0ab: OUTPUT«True␤»
IOninja guess that multi can be shoved in there to make it propagate .is-lazy in cases where it can; unsure if that covers all the core things or user subclasses 20:07
m: sub (*@x) { say @x.is-lazy }(1..*) 20:08
camelia rakudo-moar 51b0ab: OUTPUT«True␤»
IOninja m: sub (**@x) { say @x.is-lazy }(1..*)
camelia rakudo-moar 51b0ab: OUTPUT«False␤»
IOninja or is the slurpy supposed to propagate it? 20:09
[Coke] jnthn: if you have time tomorrow, any help on github.com/perl6/doc/issues/1175 would be greatly appreciated. Please let me know if you need more golf. 20:48
jnthn [Coke]: Ah, yes, I keep meaning to look at that... 21:58
jnthn sticks it in a browser tab 21:59
RabidGravy I have stuff that stays in a browser tab for months 22:08
jnthn Me too, but I tend to see the ones at the top of the stack :) 22:10
MasterDuke IOninja: timotimo has a moarvm PR waiting to merge the coverage branch 22:16
timotimo it'll need to be fixed again since new ops were introduced recently 22:18