00:26 BenGoldberg joined 00:42 synopsebot6 joined 01:07 lizmat joined 01:25 geekosaur joined 02:47 ilbot3 joined 05:20 synopsebot6 joined 05:23 synopsebot6 joined
[Tux] test 20.841 07:41
test-t 12.436
csv-parser 25.131
07:55 TimToady joined 08:22 FROGGS joined 10:23 RabidGravy joined
dalek kudo/nom: 7cbf2d3 | skids++ | src/core/Range.pm:
More Range fixes/optimizations

   Make Range.EXISTS-POS properly handle negative indices
   Optimize Range.AT-POS for integer range from O(index) to O(1)
   Note that there are no real-world constraints allowing unbox_i on this path
11:19
kudo/nom: 176285f | lizmat++ | src/core/Range.pm:
Merge pull request #728 from skids/range

More Range fixes/optimizations
timotimo ^- i am OK with this 11:20
lizmat so was I :-) 11:22
12:10 perlpilot_ joined 12:11 colomon joined
dalek kudo/nom: 08a7603 | lizmat++ | src/core/Str.pm:
Make <96 97 c>.chrs give a better error message

Type check failed in converting element #2 to .chr; expected Int but got Str ("c")
12:12
psch so i was looking at #125577, and thought "hey, maybe can just remove that jvm-specific code and do what moar does!" 12:14
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=125577
psch and it actually *worked*
at least for that file
then i decided to check for other files in S12-attributes that use .clone 12:15
and S12-attributes/instance.t also does, but NPE'd with my change
which of course made me stash my changes and rebuild nom HEAD
but hey, that *also* NPE'd, so my patch is obviously perfectly fine... :) 12:16
...okay, no point in make spectest. the first 2 dozen files all report 'NO subtests run'... 12:18
lizmat: re 'make test', i did find out that binding of the $!call attribute for role Native is what dies 12:24
lizmat: i suspect that the REPR plays a role there, but...
12:37 mojca joined
[Coke] nine: if I have a test file that says "use lib "lib"" and lib doesn't exist... lib gets created with a .precomp dir. 12:48
that seems aggressive.
timotimo a bit
[Coke] (I'm making a sample git project for a git presentation and using perl 6 as the sample code, so I found this by doing a test first approach) 12:51
lizmat [Coke]: the problem is that a new repo needs to be made when installing modules for the first time... 12:53
and where that repo lives, is basically indicated with "use lib" at the moment
well, afaik
perlpilot use lib shouldn't install anything though. 12:54
lizmat no, but it creates a Repo object 12:55
nine knows more :)
12:58 mojca left
perlpilot [Coke]: I just tried to reproduce that behavior and I can not. 12:59
[Coke] perlpilot: my test file has: use lib 'lib'; 13:01
use Square;
use Test;
and Square didn't exist yet.
perlpilot ah. okay. 13:02
oddly, it only does that for the last directory that has been "use lib"d 13:04
i.e. use lib "does_not_exist", "nor_this"; use FooBarBaz; # will create nor_this/.precomp 13:05
or even .. use lib "does_not_exist"; use lib "nor_this"; use FooBarBaz; # same as above
13:25 skids joined
nine Oh, use lib "foo", "bar"; should be the equivalent to use lib "bar"; use lib "foo"; 13:42
[Coke]: I agree. We shouldn't create a lib dir that doesn't exist yet. 13:45
dalek rakudo/repl6: b843735 | hoelzro++ | src/Perl6/Compiler.nqp: 13:46
rakudo/repl6: REPL6: Fix -I processing when using REPL
rakudo/repl6:
rakudo/repl6: The -I option is processed in
rakudo/repl6: CompUnit::RepositoryRegistry.setup-repositories upon the first eval
nine Should be a relatively simple fix once I've shaved this particularly felted yak.
13:46 dalek joined
dalek Heuristic branch merge: pushed 31 commits to rakudo/repl6 by hoelzro 13:46
psch humm 14:07
m: use nqp; class A { has $.f is box_target is repr('bigint') }; say nqp::getattr(A.new, A, '$!f')
camelia rakudo-moar 08a760: OUTPUTĀ«(Any)ā¤Ā»
psch same code on r-j says "This representation does not support being a box target"
m: use NativeCall; use nqp; class A { has $.f is box_target is repr('NativeCall') }; say nqp::getattr(A.new, A, '$!f') 14:08
camelia rakudo-moar 08a760: OUTPUTĀ«(Any)ā¤Ā»
psch same there...
hrm, i suspect NativeCall does codegen shenanigans to overwrite sixmodel.REPR.generateBoxingMethods() with something non-throwy when it's used properly on nqp-j... 14:10
huh, no, reprs.NativeCall *already* overrides that... 14:11
...why does it call the parent method?
14:22 timotimo joined 14:24 [Tux] joined
dalek kudo/nom: c3446c0 | lizmat++ | src/core/Dateish.pm:
Only integers live in these lookup lists
14:45
timotimo that'll be worth a few bytes 14:46
lizmat yeah, only a few, but hopefully the atpos_i lookup is a bit faster than the atpos one ? 14:50
and it should be easier jittable, as we can now before hand the type of what atpos_i returns 14:51
timotimo it's only much better if it doesn't get boxed directly after lookup 14:52
which is a tiny bit likely
lizmat well, it would be nice if we could annotate methods returning natives :-) 14:54
timotimo we can't?
well, !DAYS-IN-MONTH can also return Nil 14:55
lizmat nope, everything gets boxed on the way out
timotimo i mean, being allowed to return Nil or Failure through regular methods or subs, that's already a tiny bit bad
but in "returns int" annotated methods ... :|
lizmat I guess that method should just return 0 14:56
timotimo is there a good reason to allow Nil or Failure through methods/subs annotated to return a native int, num or str? 14:57
because if not, we can have a simpler return typecheck for that
lizmat I would think that they would disallow that 14:58
timotimo it's probably not noticably cheaper 14:59
dalek kudo/nom: e57e631 | lizmat++ | src/core/IO/Handle.pm:
Make IO::Handle.comb use native strings internally
jnthn I don't think you can return Nil/Failure from a native...it should just blow up immediately inside the sub 15:01
(a returns native, that is)
15:12 AlexDaniel joined
nine m: sub foo returns int { fail "noooo"; }; foo; 15:14
camelia rakudo-moar e57e63: OUTPUTĀ«nooooā¤ in sub foo at /tmp/TmG9X3wavu line 1ā¤ in block <unit> at /tmp/TmG9X3wavu line 1ā¤ā¤Actually thrown at:ā¤ in block <unit> at /tmp/TmG9X3wavu line 1ā¤ā¤Ā»
nine has always liked the empirical approach 15:15
timotimo m: sub foo returns int { fail "nooooo"; }; my $result = foo; say "alive" 15:16
camelia rakudo-moar e57e63: OUTPUTĀ«aliveā¤Ā»
timotimo so much for that 15:17
nine Oh...thanks for fixing my bug :) 15:26
colomon what happened to File::Copy? 15:30
nevermind
colomon accidentally tried to run the p5 version of the script he wanted in p6. 15:31
16:29 SrKeys joined 17:26 pmurias joined
dalek p: 4e9507f | (Pawel Murias)++ | src/vm/js/ (9 files):
[js] Pass t/serialization/03-closures.t

Implement serialization of closures.
Disable the qregex test which started to just eat up all memory for some reason and the sprintf test which bitrotted.
17:26
p: 78a021d | (Pawel Murias)++ | src/vm/js/ (2 files):
[js] Pass t/hll/06-sprintf.t.

Support stringifing VMException.
18:18
19:15 camelia joined 19:18 Hotkeys_ joined 19:20 dalek joined
[Coke] ok, work crunch is done, will definitely be able to cut a release this afternoon. 19:30
jnthn [Coke]++ :) 19:47
19:52 FROGGS joined 20:33 colomon joined 21:38 colomon joined 21:44 geekosaur joined
dalek p/use-setdebugtypename: e400d72 | jnthn++ | src/vm/moar/stage0/ (11 files):
Update MoarVM stage0 bootstrap.

This means we'll be able to use the nqp::setdebugtypename op in NQP's MOP.
21:56
p/use-setdebugtypename: 77005fc | jnthn++ | src/how/NQP (5 files):
Scatter various nqp::setdebugtypename.
jnthn For those who don't follow #moarvm: the heap snapshots and analyzer I've been working on can do some basic stuff, including explaining the source of the EVAL memory leak... gist.github.com/jnthn/f67379ff234861729f34 22:19
timotimo how does the analyzer perform? 22:23
did you have to wait long for the result you've shown there?
jnthn Nah
It's actually slowest to start up 22:24
For entirely fixable reasons
timotimo cool :)
jnthn With the NQP sized snapshots you're barely waiting around more than a couple of seconds.
The .Int thing I put into Rakudo yesterday removed one bottleneck 22:26
The MoarVM GC blocking fix I put in earlier removed a second major one
So now I'm basically down to just one that feels annoying.
I'm sure we'll be able to tune it more beyond that though. 22:27
But yeah, if you have an idea where the compute-intensive things are and write carefully, and take advantage of multi-core stuff, you can get some nice wins :) 22:28
The frontend shell is just "whatever, write cute Perl 6": github.com/jnthn/p6-app-moarvm-hea.../Shell.pm6 22:29
While the core processing model has careful use of native/packed arrays, binding, and parallel processing: github.com/jnthn/p6-app-moarvm-hea.../Model.pm6
timotimo :) 22:31
jnthn Note, zero dropping down to nqp:: to get acceptable performance :)
Anyways, enough for today :)
timotimo do you want to drop me a few little tasks? 22:32
i don't have energy to do anything well, but i can at least try
i don't want to keep feeling useless :|
jnthn timotimo: Yeah, more things could do with unmanaged_size 22:33
timotimo aye, that was the obvious part :)
jnthn You did P6bigint
timotimo i did, yes 22:34
jnthn Biggest targets are MVMHash, MVMStaticFrame (the list of lexicals, for example), MultiDimArray, MVMCompUnit (has various long C arrays), SCRef (the same)...
timotimo i've already got MDA open in an editor
jnthn MVMMultiCache too :) 22:35
timotimo mhm
jnthn Those are all the ones on my todo list
timotimo are we interested at all in "allocated" vs "used"?
jnthn Not at the moment
timotimo 'k
jnthn Maybe in the future... :) 22:36
Anyway, I should relax :)
timotimo do you have a word or two of design advice for "attribute names and such"?
ah. yes, you should :)
jnthn Yeah... Another REPR function
You pass it the MVMHeapSnapshot or so
And it can call the functions like MVM_profile_heap_add_collectable_rel_vm_str 22:37
timotimo ah, so that it can grab some strings, yeah
jnthn (e.g. with P6opaque attribute names)
Or MVM_profile_heap_add_collectable_rel_idx in MVMArray
timotimo that's a/the function that tells a reference what name it should have, yeah?
wow, that's super simple! :)
jnthn It adds a reference to the collectable, and if the collectable isn't in the seen hash does the right thing, and if it's NULL ignores it totally. 22:38
So you don't have to guard against it
Yeah, I already did most of the work ;)
timotimo fantastic
have a great relaxation ;)
jnthn Thanks! :)
Have fun!
o/
timotimo i'll be fed some food now, see ya later!
23:06 [Tux] joined 23:18 AlexDaniel joined 23:31 BenGoldberg joined 23:33 BenGoldberg joined 23:41 geekosaur joined