samcv would %hash{int} be faster than %hash{Int} or the same 00:59
i think i'm going to have to nqp optimize the bitfield generation part of this script. but i'm running profile on it now 01:01
for whatever reason something i'm doing is way slower than all the rest of the code
geekosaur about the same, from what was said earlier about the implementation
samcv yeah that's what I expected 01:02
does push and join have a lot of overhead?
i guess profile will tell me what's making this code slow
once it completes...
geekosaur you might do better to switch to a sparse array as was recommended earlier
samcv how do I make a sparse array? 01:04
and I guess shaped arrays are faster. I could use that too
geekosaur just don't assign it initially, it *should* hopefully be sparse enough as is. 01:06
samcv checks the profile
you mean `my @array` < that's sparse?
geekosaur conceivably it wont and that could be bad depending on the highest numbered codepoinnt you deal with, but someone else will have to answer in that case
as long as you don;t initialize it, yes
samcv hmm. wow 01:07
geekosaur the spine will be allocated to the max codepoint but it won;t use space for missing values
samcv 58% of the exclusive time was…
infix:<~>
SETTING::src/core/Str.pm:2728
:o
did not expect that
geekosaur real sparse arrays generally have to be emulated but that puts you into object hash territory which is where you are now, unless someone added an actual sparse array type with reasonable behavior when I wasn't looking 01:08
geekosaur suddenly wonders about difference lists :p
samcv yeah coding the concatenation in nqp sped it up so much 01:24
this is infix ~: nqp::p6box_s(nqp::concat(nqp::unbox_s(a), nqp::unbox_s(b)))
so it did that a whole ton of times
geekosaur, is there a way we can optimize "this" ~ "this" ~ "this" so it doesn't have to unbox twice and rebox once for each ~ 01:29
geekosaur wonders about some way to optimize by telling it to skip .... heh
there isn;t that I know of
samcv two ~ causes 4 unboxings and 2 boxing. and just gets bigger the more
damn
geekosaur and I suspect it would require special codegen since checking a flag each time might eat up speed gains 01:30
but some kind of unboxing @foo, $bar { code that can skip the unbox/rebox, unboxed on entry, boxed on close, error if something requires it to be boxed } might be clever 01:31
samcv yeah
geekosaur alternately, really clever codegen could notice there's nothing but that going on and batch them itself, but I suspect we're a long ways from being able to do that optimization as yet 01:32
(it *is* on the long term plan, but you need some hairy data analysis to determine whether it's safe, much less whether it'd actually be a gain) 01:33
samcv i'll probably make an operator 01:37
⟅'string', 'otherstring', 'thing'⟆
to concat all of them or something
geekosaur irony: you'd also want this if we had actual non-string hash support in the backend, since you'd likely be using an unboxed int key behind the scenes and get wins if you can directly use an unboxed p6 value
b2gills samcv: Actually just special case `[~] 'string', 'otherstring', 'thing'` like we have for [+] 1..100 01:54
samcv ah nice 01:55
how do you have typed slurpy arrays? 01:58
not possible?
not sure how to special case it
significantly faster pushing all strings to an array and joining it once 02:11
hopefully I can get this down to fast enough even when it loads all the unicode data 02:12
Geth p: 994d2159fc | TimToady++ | src/QRegex/Cursor.nqp
Uniqueify fates in prep for NFA optimizations

Prior to now, fates were always numbered starting with 1 for protos and starting with 0 for alts. We are moving to a model in which all fate numbers are unique across the process. Every NFA now knows its own range of fates, in the range of fbeg ..^ fend. Conveniently, for both protos and alts, the 0th fate name entry was already unused and set to 0, so we encode the new fbeg and fend into the 0th fate name. Eventually, the uniqueness of fates will allow us to use a top-level NFA scan to determine in advance exactly what some of the sub-scans will do. Currently we have duplicate scans for lower-level rules; when the top-level scan can return multiple levels of fates to the ... (1 more lines)
03:32
p: 2e4ea5886c | TimToady++ | tools/build/MOAR_REVISION
bump MoarVM
TimToady so...Geth replaces the final line to report that there's 1 more line... 03:33
diakopter revisionist history 03:42
timotimo TimToady: got a clue how much we'll be able to save when redundant nfa scans will be optimized away with this? 03:48
TimToady I know a lot of positions in the setting are lexed 4 or 5 times 03:49
timotimo that's alot
how much time all in all does NFA running take?
TimToady haven't measured for a while, but somewhere on the order of 10% 03:50
timotimo hm, fair enough 03:51
will we be able to improve optimization of NFAs at all with this?
because adding operatiors in a module makes compile time grow pretty ridiculously
TimToady that's one of the goals, if we can do tail-sharing on NFA graphs 03:52
we were talking about that a couple days ago...
samcv s: help 03:53
SourceBaby samcv, Something's wrong: �ERR: ===SORRY!=== Error while compiling -e�Undeclared routine:� help used at line 6��
samcv SourceBaby, help
SourceBaby samcv, Use s: trigger with args to give to sourcery sub. e.g. s: Int, 'base'. See modules.perl6.org/dist/CoreHackers::Sourcery
samcv s: Int, '.^name'
SourceBaby samcv, Something's wrong: ␤ERR: Type check failed in binding to &code; expected Callable but got Nil (Nil)␤ in sub do-sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 42␤ in sub sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 33␤ in block <unit> at -e line 6␤␤
samcv where is the ^name method ?
timotimo it's in the HOW 03:54
samcv kk
timotimo likely in ClassHOW for Int
you can define a ^foo method in your class, which will mix in the method to the HOW specifically for that class 03:55
but other than that all ^bar methods live in the HOW class
timotimo BBL 03:56
geekosaur s: ClassHOW, 'name', \(Int) 04:00
SourceBaby geekosaur, Something's wrong: �ERR: ===SORRY!=== Error while compiling -e�Undeclared name:� ClassHOW used at line 6��
geekosaur feh
samcv ok so i'm going to stop using %hash{Int}, too slow 04:08
just gonna make a sub key-sort that does nqp::fromstr_I($^a) cmp etc 04:09
calling .WHAT on Int used 9% of the cpu time
for sub reason trying to augment class Hash made MVM very unhappy. wouldn't even compile 04:11
m: augment class Hash { method atetetata { } } 04:12
camelia rakudo-moar b7cd77: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤augment not allowed without 'use MONKEY-TYPING'␤at <tmp>:1␤------> 3augment class Hash7⏏5 { method atetetata { } }␤ expecting any of:␤ generic role␤»
samcv m: use MONKEY-TYPING; augment class Hash { method atetetata { } }
camelia ( no output )
timotimo m: say Metamodel::ClassHOW
camelia rakudo-moar b7cd77: OUTPUT«(ClassHOW)␤»
timotimo s: Metamodel::ClassHOW, 'name', \(Int)
SourceBaby timotimo, Something's wrong: ␤ERR: No such method 'map' for invocant of type 'NQPRoutine'␤ in sub sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 25␤ in block <unit> at -e line 6␤␤
timotimo oh well
samcv ===SORRY!===
Cannot invoke this object (REPR: Null; VMNull)
this is what i got for some reason
timotimo are you writing nqp code? 04:13
nqp: UndefinedName()
camelia nqp-moarvm: OUTPUT«Cannot invoke this object (REPR: Null; VMNull)␤ at <tmp>:1 (<ephemeral file>:<mainline>)␤ from gen/moar/stage2/NQPHLL.nqp:1582 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/NQPHLL.moarvm:eval)␤ from gen/moar/stage2/NQPHLL.nqp:1785 (/home/camelia/rakudo-m…»
samcv hm
timotimo ^- one of the likely causes of this
geekosaur oh, right, Metamodel (not that it worked...) 04:14
Geth kudo: usev6++ created pull request #994:
[JVM] Add missing comma in workaround for r-j
05:51
kudo/nom: bb8ec30012 | (Christian Bartolomäus)++ | src/core/Rakudo/Iterator.pm
[JVM] Add missing comma in workaround for r-j
09:18
kudo/nom: 2140c90088 | (Zoffix Znet)++ | src/core/Rakudo/Iterator.pm
Merge pull request #994 from usev6/patch-4

  [JVM] Add missing comma in workaround for r-j
[Tux] This is Rakudo version 2016.12-336-g2140c9008 built on MoarVM version 2016.12-115-ged2df9ac 09:49
csv-ip5xs 2.892
test 12.866
test-t 5.201
csv-parser 13.143
brokenchicken s: Int.HOW, 'name', \(Int) 10:06
SourceBaby brokenchicken, Something's wrong: ␤ERR: No such method 'map' for invocant of type 'NQPRoutine'␤ in sub sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 25␤ in block <unit> at -e line 6␤␤
Geth pan style="color: #d55e83">geth: 8d5ae680eb | (Zoffix Znet)++ | lib/Geth/GitHub/Hooks.pm6
Don't bother decoding JSON for unsupported events

Might ameliorate the leakage
10:20
pan style="color: #d55e83">geth: b2098efbbe | (Zoffix Znet)++ | 2 files
Fix compare URL for multi-commit push events

Use 'before'/'after' keys in the webhook data instead of shas of first/last commits.
10:29
pan style="color: #d55e83">geth: 8bcea9e84f | (Zoffix Znet)++ | lib/Geth/Plugin/GitHub.pm6
Smartify commit abridger

If we know we'll have to abridge the commit message, print fewer lines than for maximum unabridged commit messages.
10:40
brokenchicken oh, gee... there's even a compare url in the webhook json -_- 11:06
jnthn .tell TimToady I guess you get notifications of github commit comments, but just in case: github.com/perl6/nqp/commit/994d21...t-20481890 11:57
yoleaux2 jnthn: I'll pass your message to TimToady.
Geth pan style="color: #d55e83">geth: 25c0c6819e | (Zoffix Znet)++ | 3 files
Implement version bump detector

Detect NQP/MoarVM version bump commits and include /compare/ URL to see what commits the version bump brought in.
12:50
brokenchicken check this out.... 12:51
Geth p: 1d4f071453 | (Elizabeth Mattijsen)++ | tools/build/MOAR_REVISION
Bump Moar to get the latest goodies / fixes
nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...3-gd1da1ba
brokenchicken \o/
neat
lizmat Files=1164, Tests=56530, 186 wallclock secs (10.93 usr 4.71 sys + 1108.49 cusr 118.74 csys = 1242.87 CPU) 13:23
brokenchicken++ :-) 13:24
jnthn cute 13:45
brokenchicken++
lizmat m: dd (1 X 1..* X 2)[^10] # this shouldn't timeout, should it ? 14:13
camelia rakudo-moar 2140c9: OUTPUT«(timeout)» 14:14
TimToady star: dd (1..* X 1 X 2)[^10] # at least the useful one works right 15:55
yoleaux2 11:57Z <jnthn> TimToady: I guess you get notifications of github commit comments, but just in case: github.com/perl6/nqp/commit/994d21...t-20481890
camelia star-m 2016.10: OUTPUT«((1, 1, 2), (2, 1, 2), (3, 1, 2), (4, 1, 2), (5, 1, 2), (6, 1, 2), (7, 1, 2), (8, 1, 2), (9, 1, 2), (10, 1, 2))␤»
TimToady m: dd (1..* X 1 X 2)[^10] # at least the useful one works right
camelia rakudo-moar 2140c9: OUTPUT«((1, 1, 2), (2, 1, 2), (3, 1, 2), (4, 1, 2), (5, 1, 2), (6, 1, 2), (7, 1, 2), (8, 1, 2), (9, 1, 2), (10, 1, 2))␤»
lizmat TimToady: so maybe warn / die on non-useful combinations of lazy iterators in X ? 19:20
TimToady: fwiw, I'm refactoring X atm, just trying to find out what needs to be fixed :-) 19:21
MasterDuke if anybody is interested, here is another set of data from --profile--compile'ing the rakudo build: gist.github.com/MasterDuke17/77230...805c3274b5 19:26
dogbert17: re your conv in #moarvm, you could try with --debug=3 19:36
timotimo oh yes 19:40
always --debug=3
lizmat m: dd infix:<X>() # would have expected an empty list here ? 19:42
camelia rakudo-moar 2140c9: OUTPUT«((Any,),).Seq␤»
lizmat I mean, a Seq with an empty list
no, actually an empty list, just like: 19:43
m: dd infix:<Z>()
camelia rakudo-moar 2140c9: OUTPUT«().Seq␤»
brokenchicken too 20:11
lizmat three 20:17
timotimo meh 20:20
AlexDaniel three and a half?
u: { .chr.unival == 3.5 } 20:21
unicodable6 AlexDaniel, U+0F2D TIBETAN DIGIT HALF FOUR [No] (༭)
AlexDaniel u: { .chr.unival == -0.5 } 20:22
unicodable6 AlexDaniel, U+0F33 TIBETAN DIGIT HALF ZERO [No] (༳) 20:23
Geth ast: a89273d659 | usev6++ | S03-metaops/zip.t
[JVM] Unfudge now passing tests, RT #130532
21:15
dogbert17 MasterDuke: thx, will try and update the gist if I manage to provoke the bug again 22:04
AlexDaniel re: ⩵ ⩶ and fixed-width fonts: it occurred to me that some characters are actually double-width 22:20
for example, you don't expect 属 to be as wide as “a”, even if you are using a fixed-width font 22:21
and that's exactly what I see here, by the way (⩵ and ⩶ are double-width) 22:22
so samcv is right and I was wrong
samcv heh what? 22:23
AlexDaniel I mean, there's no reason not to support these because of whatever font reason one can come up with
samcv yeah i think that's a good take on it. as long as the character unambigously is the same as 22:24
if it is ambiguous from a character perspective like the thunderbolt or any other thing, i think we may want to take that into account
AlexDaniel m: say ‘属’.uniprop(‘East_Asian_Width’) 22:26
camelia rakudo-moar 2140c9: OUTPUT«␤»
AlexDaniel m: say ‘a’.uniprop(‘East_Asian_Width’) 22:27
camelia rakudo-moar 2140c9: OUTPUT«␤»
AlexDaniel u: { so .uniprop(‘East_Asian_Width’) } 22:29
unicodable6 AlexDaniel, Found nothing!
AlexDaniel samcv: is it a thing?
samcv: I'm reading this unicode.org/reports/tr11/ 22:30
samcv it is a thing. it's not in MVM 22:37
yet
AlexDaniel :( 22:42
should I create a ticket for that? 22:43
timotimo we do have a module in the ecosystem for that 22:45
samcv for east asian width?
you could make an rt. there's a test in roast for it
my stale pr from weeks ago added east asian width but other things took priority over adding loads of random properties 22:46
but it may be useful
timotimo github.com/bluebear94/Terminal-WCWidth 22:47
samcv unicode didn't used to be set to wide chars except since unicode 9 22:49
before that it was primarily only for literally… east asian width… for east asian characters ;P
but it is good they expanded it since people wanted it
AlexDaniel RT #130564 22:50
samcv i'll add that in today AlexDaniel 22:51
AlexDaniel wow, hold on your horses… it's not that I actually need it :)
samcv too soon? ok i'll add it tomorrow then
XD
AlexDaniel xD
MasterDuke samcv: you (or anybody interested in string handling) might like this: github.com/minimaxir/big-list-of-n...ty-strings 23:23
samcv yeah i have seen it :)
thanks tho
lizmat good night, #perl6-dev! 23:36
brokenchicken night 23:38