| 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 |