dalek p: 495bc19 | TimToady++ | src/QAST/ (19 files):
factor out common boolean annotations to flags

Instead of adding common annotations to pretty much every node, we put the common ones into a flags word so that hash allocations for annotations are once again a rarity.
00:19
kudo/nom: bda5999 | TimToady++ | src/Perl6/ (3 files):
use new node bitflags instead of bool annotations
kudo/nom: 77724b2 | TimToady++ | tools/build/NQP_REVISION:
bump NQP to get node flags methods
timotimo nice 00:20
do you have a little measurement/result for us?
TimToady it's roughly the same, currently 00:21
timotimo i wonder if setflag, clearflag, and isflag would be good candidates to become private methods? 00:22
TimToady mebbe, I'm sure there are various tricksy things we could do 00:23
timotimo precalculate the bitneg_i of the flags? ;)
TimToady we could mix in various bits instead of preallocing them
I don't think the calculation is that much overhead, was mostly trying to avoid allocating many hashes 00:24
and bitops will tend to jit well
timotimo right 00:25
TimToady if annotaions are rare, we could mix in the hash pointer instead of preallocing
timotimo oooooh 00:26
that's just *nasty* :) 00:27
nqp::pretendpointerisreallyint(...)
travis-ci Rakudo build errored. TimToady 'bump NQP to get node flags methods' 01:10
travis-ci.org/rakudo/rakudo/builds/150349508 github.com/rakudo/rakudo/compare/0...724b299c7d
buggable travis-ci, one build failed due to the timeout. No other failures. 01:11
timotimo damn you, buggable, you're fantastic 01:12
TimToady mixing in the hash pointer does not appear to help, maybe the mixin mechanism is a little to heavy 03:21
*too 03:22
timotimo oh, now i understand what you mean by "mix in the hash pointer" 03:40
i thought you wanted to set the bits inside the machine-level pointer
ShimmerFairy fun with bugs: 03:59
m: Buf[uint64].new(0x7FFFFFFF_FFFFFFFF, 0x80000000_00000000, 0x80000000_00000001).say
camelia rakudo-moar 77724b: OUTPUTĀ«Buf[uint64]:0x<7fffffffffffffff -8000000000000000 -7fffffffffffffff>ā¤Ā»
ShimmerFairy m: Buf[uint32].new(0x7FFFFFFF, 0x80000000, 0x80000001).say 04:00
camelia rakudo-moar 77724b: OUTPUTĀ«Buf[uint32]:0x<7fffffff 80000000 80000001>ā¤Ā»
ShimmerFairy m: my uint64 $a = 0x80000000_00000000; say $a.base(16) 04:13
camelia rakudo-moar 77724b: OUTPUTĀ«-8000000000000000ā¤Ā»
ShimmerFairy I definitely recall seeing this pop up before.
moritz good morning all 05:41
do we have any infrastructure for language-version dependent features?
(in Actions.nqp, not the setting)
ShimmerFairy moritz: not sure, I'd check around where 'use v6.c' gets parsed and handled 05:52
lizmat Files=1114, Tests=52553, 233 wallclock secs (13.69 usr 4.17 sys + 1436.58 cusr 122.23 csys = 1576.67 CPU) 07:01
going in the right direction again
down from 1594/238 07:02
with 39 more tests now
afk for the deventerboekenmarkt.nl & 07:03
[Tux] This is Rakudo version 2016.07.1-135-g77724b2 built on MoarVM version 2016.07-16-g85b6537 07:50
test 15.378
test-t 7.311
csv-parser 16.372
I somehow expected perl6 to respect BOM's 09:18
perl6 -e'.say for "z".IO.lines'
Malformed UTF-8
brrt hmm, it doesn't respect BOMs? 09:20
BOMs are dumb for utf-8, but oh well...
[Tux] $ head -1 z | od -x | head -2
0000000 fffe 6b00 6f00 6400 6500 3b00 4d00 6100
0000020 7400 6500 7200 6900 6100 6c00 3b00 5100
utf-16be
nine [Tux]: you need .lines(:enc<utf16>) or something like that then, as we default to utf-8. 09:35
[Tux] I know how to "fix" it, but as said, I somehow hoped BOM's would be respected (and auto-converting to utf-8 would happen) automagically 10:09
$ perl6 -e'.say for "spec.csv".IO.lines(:enc<utf-16>)' 10:10
Streaming decode NYI for encoding 4
$ perl6 -e'.say for "spec.csv".IO(:enc<utf-16>).lines' 10:11
Malformed UTF-8
and fwif, it does not know about utf-16be :( 10:12
[Tux] now has to change his YAPC::EU talk :( 10:28
nine [Tux]: we cannot really guess at UTF-16 in the precence of a BOM as while it's completely useless, having a BOM in a UTF-8 encoded file is allowed by Unicode. 10:48
And stupid programs actually add them.
masak they set up us it 11:13
[Tux]: more to the point, in Perl 6, the I/O encoding is UTF-8 unless you specify otherwise. 11:17
[Tux] and if I specify otherwise, I get errors (currently)
my talk was based on an example in utf-16be 11:18
masak I don't know what's going on there. maybe there isn't support for utf-16be yet 11:28
timotimo hm, utf-16 can't be that hard to build a streaming decoder for 11:29
gfldex is this NYI or by design? stackoverflow.com/questions/3881649...-of-a-role 17:03
timotimo hm, knowing what i do about internals, this seems ... interesting 17:13
gfldex it would be nice to have a declarator that means "set the default on an attribute not declared here" 17:16
pmichaud good afternoon, #perl6 17:19
timotimo hey pm!
pmichaud This probably belongs on #perl6, but I have a question about tickets like github.com/perl6/doc/issues/818 and github.com/perl6/doc/issues/819 17:20
Are these methods part of the Perl 6 language spec? 17:21
I'm thinking they're probably internal Rakudo methods.
timotimo do you have an opinion on "how could we let a user express a trait being added to an attribute"?
jnthn pmichaud: I just spotted those two also. I suspect they're meant to be privates...
pmichaud Okay, I'll reply to 818 about it. 17:22
gfldex m: role R[$d] { has $.a = $d }; class C does R["default"] { }; my $c = C.new; dd $c; 17:24
camelia rakudo-moar 77724b: OUTPUTĀ«C $c = C.new(a => "default")ā¤Ā»
pmichaud timotimo: I don't have an opinion on that, beyond "it should probably be done with 'is'" :)
timotimo maybe put an "also" in there somewhere 18:23
dalek p: 3aee321 | (Pawel Murias)++ | src/vm/js/Compiler.nqp:
[js] Store more lexical variables as native javascript lexicals.
20:26
p: 018a151 | (Pawel Murias)++ | src/vm/js/ (3 files):
[js] Avoid having lexicals and local get mixed up, they should have seperate namespaces.
p: fe782bf | (Pawel Murias)++ | src/vm/js/Compiler.nqp:
[js] Avoid storing locals as variables in BlockInfo.
p: 0ff93e0 | (Pawel Murias)++ | src/vm/js/ (2 files):
[js] Rename has_local_* to has_own_* to avoid confusion with locals.
nqp: 4006efa | (Pawel Murias)++ | src/vm/js/Compiler.nqp:
nqp: [js] Use the .variables on BlockInfo instead of symbol to avoid a bug when a lexical doesn't have an entry in the symbol table.
kudo/nom: ff26dd8 | lizmat++ | / (2 files):
Increment Thai digits as well, fixes RT #128868
21:51
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128868
dalek kudo/nom: c8c27e9 | lizmat++ | src/core/List.pm:
Mark List.sum as nodal

Re irclog.perlgeek.de/perl6/2016-08-07#i_12979511
This does not break any spectests. However, it may need explicit testing somewhere, or a revert :-)
21:53
gfldex lizmat: is c8c27e93d6 related to stackoverflow.com/questions/38741605/ ? 21:56
timotimo i bet it is 21:57
lizmat yes
ok, so I have a patch that makes .comb 40% faster on a 26 char string 22:05
but: 1 - it returns a List rather than a Seq
2 - it is much more memory hungry
timotimo oof 22:07
maybe the comb seq's "all at once, please" isn't being invoked for some reason?
lizmat well, the "all at once" will also copy every char 22:08
basically, it replaces the .comb with:
nqp::p6bindattrinvres(nqp::create(List),List,'$!reified',nqp::split("",$!value)) 22:09
so, this pessimises for "".comb { } 22:10
skids star: my uint32 $f = 2;
camelia ( no output )
skids m: my uint32 $f = 2; 22:11
camelia ( no output )
lizmat because it *will* allocate a Str for each char in the string, even if that would not be needed
skids oops sorry I thought this was my camelia tab
timotimo will nqp::split actually create a full Str? 22:12
lizmat well, no, native str actually 22:13
and it's actually a list_s
which actually may have its own internal optimisations ? 22:14
timotimo list_s has hardly anything better than list_o does
i believe it still has BOOTStr in it, or something like that 22:15
i'd have to check
nope, actually the list_s directly holds VMString objects, rather than boxes
lizmat so that's good ? 22:17
timotimo i suppose so 22:18
also, nqp::split("", $!value) could have a tiny optimization in it where if the string is quite long it could immediately store stuff in the old generation 22:19
when you split a very long string into tiny pieces, you end up GCing like crazy because every second GC run will just be 100% promotions, and the others will be 0% freed 22:20
OTOH, there's the single-grapheme-cache that i've built that can help on ascii-only strings
lizmat yeah, so this is just a bad idea
timotimo in the other case where you have a Seq, those strings may end up dying before the old generation would consider having them 22:22
... did i merge that cache into moarvm master yet? 22:27
how long until the next release?
middle of this month, so between 1 and 2 weeks?
though to be honest the improvement gotten through the single-grapheme-cache wasn't as stellar as i had hoped 22:29
lizmat every little bit helps :-) 22:30
as long as it doesn't have any adverse effects somewhere else :-) 22:31
I wonder if we could speed up sequential-map if we could mark Seq's as guaranteed not to return a Slip 22:35
or actually, the iterator 22:36
lizmat will sleep on it 22:39
good night, #perl6-dev!
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Increment Thai digits as well, fixes RT #128868' 22:44
travis-ci.org/rakudo/rakudo/builds/150489303 github.com/rakudo/rakudo/compare/7...26dd8e5e64
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=128868
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Mark List.sum as nodal 23:27
travis-ci.org/rakudo/rakudo/builds/150489684 github.com/rakudo/rakudo/compare/f...c27e93d618