japhb
.oO( "I'd like to buy the channel a [Coke], and keep it company ..." )
00:08
TimToady japhb: === should be exactly what you want, as long as you don't need to compare Junction or Mu objects 00:13
and if it's slow, we oughta find out why 00:14
now off to the #perl6 backlog... 00:16
japhb TimToady: Ah, now that I look more closely, === tries to treat a value type differently. But for general classes not derived from a builtin value type, I guess it should just fall back to the base case, which shouldn't be horribly slow for my use case. 00:18
notviki note that general case compares .perl outputs, so it'll give a false positive if two objects differ only by their private attributes. 00:22
TimToady er, isn't that eqv that does that? 00:24
=== shouldn't be
=== should be defaulting to ObjAt comparison or so 00:25
only value types should be using .WHICH comparisons under eqv 00:26
notviki oh, maybe I'm misremembering... 00:27
s: &infix:<eqv>
SourceBaby notviki, Sauce is at github.com/rakudo/rakudo/blob/6703...Mu.pm#L844
notviki s: &infix:<===>
SourceBaby notviki, Sauce is at github.com/rakudo/rakudo/blob/6703...ny.pm#L464
TimToady m: say [1,2,3].WHICH
camelia rakudo-moar 6703b4: OUTPUTĀ«Array|75527936ā¤Ā»
TimToady yeah, that's an ObjAt
I guess it's okay if eqv is used to compare those for the default === 00:28
notviki Yeah, sorry. It's eqv that does that, not ===
dalek p: b3d3e08 | MasterDuke17++ | src/NQP/Actions.nqp:
Just a whitespace fix
notviki currently it compares nqp::eqaddr and .WHICHes as strings 00:29
TimToady well, our signal for value types currently goes through .WHICH, which is stringy, but we could probably speed that up for known value types 00:30
notviki m: dd set('a Str|b') === set([<a b>]) 00:31
camelia rakudo-moar 6703b4: OUTPUTĀ«Bool::Trueā¤Ā»
TimToady yes, that too
as I recall we speculated a special type for that, but NYI
in fact, ObjAt is that speculated type 00:32
m: say 42.WHICH.WHAT 00:33
camelia rakudo-moar 6703b4: OUTPUTĀ«(ObjAt)ā¤Ā»
TimToady which it is, at least there
m: say set([<a b>]).keys[0].WHAT 00:35
camelia rakudo-moar 6703b4: OUTPUTĀ«(Str)ā¤Ā»
TimToady m: say set([<a b>]).keys[0].WHICH.WHAT 00:36
hmm
camelia rakudo-moar 6703b4: OUTPUTĀ«(ObjAt)ā¤Ā»
TimToady okay, just a Str collision inside ObjAt, I guess 00:37
but something inside should be noticing that a Str and an Array are different types and rejecting === equivalence 00:38
m: say 'a Str|b' === [<a b>] 00:39
camelia rakudo-moar 6703b4: OUTPUTĀ«Falseā¤Ā»
TimToady m: say 'a Str|b'.WHICH === [<a b>].WHICH 00:40
camelia rakudo-moar 6703b4: OUTPUTĀ«Falseā¤Ā»
TimToady m: say [<a b>].WHICH
camelia rakudo-moar 6703b4: OUTPUTĀ«Array|49578936ā¤Ā»
TimToady m: say set([<a b>]).WHICH 00:42
camelia rakudo-moar 6703b4: OUTPUTĀ«Set|Str|a Str|bā¤Ā»
TimToady okay, just an injection attack :) 00:43
m: say set(<a b>).WHICH # the extra [] confused my lizard^Wp5 brane 00:46
camelia rakudo-moar 6703b4: OUTPUTĀ«Set|Str|a Str|bā¤Ā»
TimToady these new-fangled 1-arg semantics... 00:47
notviki m: dd set [<a b>], [<c e>] 00:51
camelia rakudo-moar 6703b4: OUTPUTĀ«set("a","c","b","e")ā¤Ā»
notviki Isn't what I expected it to end up as.... (set of two arrays)
TimToady m: say &set.signature 00:54
camelia rakudo-moar 6703b4: OUTPUTĀ«(*@a --> Set)ā¤Ā»
TimToady I guess it's * rather than +
did someone change that at some point?
notviki has no idea 00:55
TimToady m: dd Set.new: [<a b>], [<c e>]
camelia rakudo-moar 6703b4: OUTPUTĀ«set($["a", "b"],$["c", "e"])ā¤Ā»
timotimo i didn't think we would still be vulnerable to the injection of wrong strings 00:56
TimToady I guess set/bag listops have been flattening for a good long while, probably from before GLR 01:05
samcv TimToady, RE \c[unicode name], was \c intended to allow using unicode 1 names? 01:06
because there is 1 test in 6.c-errata which tests that, and in master there are far more. testing unicode 1 names
but i don't know if that was intended at all 01:07
TimToady is not quite sure what you mean by 'unicode 1 names'
samcv m: say "\n".uniname
camelia rakudo-moar 6703b4: OUTPUTĀ«LINE FEED (LF)ā¤Ā»
samcv that
that's a unicode 1 name. currently it has no unicode name, but it has unicode alias' 01:08
namely: "LINE FEED" and "LF"
are its official unicode alias names
but it is tested as \c[LINE FEED (LF)]
we do test \c[LF] btw which is an alias name
TimToady well, I dunno that we have to stay that backward compatible 01:09
that's a rather klunky name
samcv yeah. i don't really like having to rely on unicode 1 names
exactly :\
i think we should only do actual unicode names and unicode alias names, so LINE FEED and LF will work
and for example NULL is an alias name for U+000 01:10
even though it has no unicode name
TimToady that seems fine to me; I tend to doubt anyone is relying on that, when there have always been shorter ways, like \n or \x0a
samcv yeah
the only cases where the unicode 1 names we currently allow for \c and the alias names, are like LINE FEED (LF) where the (LF) is not there and uh one more 01:13
CARRIAGE RETURN (CR)
yeah those two
diakopter .u WHITEY SANTA 01:14
yoleaux2 No characters found
samcv plus \c[BELL] is \c[BEL] or \c[ALERT] since BELL conflicts with the emoji bell symbol
diakopter .u MONGOLIAN SPOT
yoleaux2 No characters found
TimToady m: say "\a".uniname 01:15
camelia rakudo-moar 6703b4: OUTPUTĀ«BELLā¤Ā»
TimToady oopsie
samcv so should 6.c-errata be changed? 01:23
to not be LINE FEED (LF) and just LINE FEED?
TimToady I think I'm okay with treating that as an erratum, though I can well imagine someone squawking, since it's really right on the edge 01:26
I suppose we could do a deprecation cycle on the u1 names, if anyone thinks we really need it 01:27
but I'm guess we don't really need it
*ssing
samcv yeah in almost all cases the unicode 1 names and the alias names match up 01:39
in all but like 3 cases
the CARRIAGE RETURN (CR) and LINE FEED (LF) and i doubt anybody is using those
and then \c[BELL] will have to be \c[BEL] because it already conflicted with the bell symbol
m: "\c[BELL]".ords.say 01:40
camelia rakudo-moar 6703b4: OUTPUTĀ«(7)ā¤Ā»
timotimo let's call one ASCII BELL and the other UNICODE BELL
samcv that's what i thought it would say, the one that came first
timotimo to give people a really, really hard time
samcv hehahah
timotimo or one is "Ring Ring" and the other is "Actually A Bell"
samcv heh 01:41
that's pretty horrible
\c[ALERT] is much better than \c[BELL] tbh
TimToady well, that's why we have \a 01:44
samcv yeah 01:45
TimToady we haven't had actual bells since the ancient ASR-33 or so that I learned to program on back in the dark ages :)
timotimo surely there's usb-connectable bells that you can hook up to \a 01:46
diakopter šŸ‘” 01:47
.u šŸ‘”
yoleaux2 U+1F461 WOMANS SANDAL [So] (šŸ‘”)
diakopter .u šŸ‘¢ 01:48
yoleaux2 U+1F462 WOMANS BOOTS [So] (šŸ‘¢)
TimToady so, where's MANS SANDAL?
samcv u: sandal
unicodable6 samcv, U+1F461 WOMANS SANDAL [So] (šŸ‘”)
timotimo men aren't supposed to wear sandals!!
be very afraid of the unicode fashion police
diakopter .u šŸ‘ž 01:49
yoleaux2 U+1F45E MANS SHOE [So] (šŸ‘ž)
TimToady so where's MANS BOOTS?
diakopter women get sandals not shoes
.u šŸ‘ž 01:50
yoleaux2 U+1F45E MANS SHOE [So] (šŸ‘ž)
diakopter nooo
.u šŸ‘Æ
yoleaux2 U+1F46F WOMAN WITH BUNNY EARS [So] (šŸ‘Æ)
diakopter that's the one men need 01:51
TimToady .u clothes
yoleaux2 U+2EC2 CJK RADICAL CLOTHES [So] (ā»‚)
U+2F90 KANGXI RADICAL CLOTHES [So] (ā¾)
U+1F45A WOMANS CLOTHES [So] (šŸ‘š)
timotimo bunny ears are fantastic. i want some.
TimToady so where's MANS CLOTHES?
timotimo heads to bed
have a fun unicode time, everybody 01:52
samcv ok so regarding being able to do unicode sequences. so \c[ ] expects to get a plain codepoint back, not a synthetic in nqp 02:19
if it gets back a negative number it assumes it didn't find a codepoint
TimToady feel free to make it work with graphemes 02:30
samcv ah looks like it calls chr on it. so hm 02:38
ugexe jnthn: if you `zef update` then `zef install Archive::Libarchive` should install now (looks like the author updated their meta6.json to fix this) 02:50
samcv so i guess i will have to add a new op which gets a string from a name 03:05
nice i'm making some good progress on this 05:55
already have the data generating into the database, just have to setup a new hash for this data 05:56
\o/ it works! 06:46
say(nqp::getstrbyname('Santa Claus: light skin tone')) #> šŸŽ…šŸ» 06:47
sweet
[Tux] This is Rakudo version 2016.12-264-g6703b4c55 built on MoarVM version 2016.12-71-g331a6b43 07:10
csv-ip5xs 2.945
test 13.312
test-t 5.360
csv-parser 13.816
samcv hi [Tux]
[Tux] o/
samcv you ready for emoji-ception
RabidGravy wee!
Geth kudo/nom: f961c025fa | (Elizabeth Mattijsen)++ | src/core/Rakudo/Metaops.pm
Add support for generic op "chain" associativity.
09:04
samcv nice. Geth doesn't print empty lines :-D 09:24
Geth kudo/nom: ed5c86616c | (Elizabeth Mattijsen)++ | src/core/List.pm
No need to check for old Z handling anymore
09:25
lizmat Files=1164, Tests=56524, 198 wallclock secs (11.19 usr 4.66 sys + 1178.22 cusr 133.64 csys = 1327.71 CPU) 11:49
[Coke] jnthn: coke/bughunt in doc still gets the occasional segfault. (got 5 OK runs, one "broken Promise" run, and then a segfault), with ed5c866 13:58
jnthn I guess that's progress... 13:59
notviki wonder how feasible it would be to make an env var that points to where you want .precomp to be 14:00
it always gets in the way when you, say, grep for stuff in a repo or `tree` a repo. 14:01
Especially in roast, where there's tons of different .precomps :/
[Coke] notviki: I tend to use ack for that sort of thing, which lets me ignore stuff pretty easily. 14:02
notviki heh 14:03
right, that's one more thing it interferes it: you have to stuff it into .gitignore
jnthn just does that by now and isn't so bothered by it 14:05
notviki -bash: ack: command not found
jnthn I'm not sure I work in any languages where I don't need to put something into .gitignore
moritz has to put .swp file in every .gitignore :/
[Coke] moritz: gah, no, you put it in YOUR gitignore. 14:06
notviki Heh... so the answer is the broken window theory lives :P
find / -type d -exec perl6 -I '{}' -e '' \; 14:10
[Coke] (docs) perl6 --profile htmlify.p6 segfaults almost immediately. 14:19
timotimo whoops :) 14:41
pmurias rakudo only uses nqp::p6captureouters2? 15:29
(and the nqp::p6captureouters is obsolete) 15:32
jnthn pmurias: Seems so :) 15:40
I forget the exact history, but it's likely in the git log :)
pmurias should I remove the obsolete variant from the jvm? 15:49
jnthn: if I have 'my $x = 1; role Foo { method bar() {$x} }' what sets the scope for the role method (allowing it to see $x)? 15:56
moritz isn't there even a known bug with role methods not seeing outer lexicals properly? 16:01
pmurias m: my $x = 123; role Foo {method bar() {$x} }; say(Foo.bar) 16:02
camelia rakudo-moar ed5c86: OUTPUTĀ«123ā¤Ā»
pmurias moritz: what's the bug? 16:03
moritz pmurias: dunno, might need some more conditions to reproduce, or might be fixed by now
sorry, I'm really vague here; please ignore me
pmurias there is such a problem in nqp 16:04
ugexe github.com/rakudo/rakudo/blob/nom/...on.pm#L449 Does this look like its not doing the right thing to anyone else? I suspect $dist-id is meant to be the index *before* the sort takes place, because otherwise $dist-id will always be the same: 0 16:16
jnthn pmurias: The method's scope is just that of the role body, it's the role scopes that are interesting. We push them into a list, and then capture them again at module load time 16:17
I think using the op you were just asking about
Geth kudo/nom: 9ad94d783b | (Zoffix Znet)++ | t/06-tap-harness/01-desc-backslashes.t
Fix broken test file

Missing variable declaration...
16:18
kudo/nom: aee7af356c | (Zoffix Znet)++ | 3 files
Fix TAP::Harness failing on full-file skippage

The TAP specs[^1][^2] say the SKIP directive should report text after `# SKIP\S*\s+` as the reason for failure and that `TODO` directive must have space after `TODO` if explanation follows.
The current behaviour is we look for SKIP/TODO followed by any number of *alphanumeric *characters. This fails to match the full-file skippage as that directive has a `:` char in it (if we follow the specs' examples that show it as "Skipping: ā€¦").
Fix by making SKIP directive follow the TAP spec \S*\s+ pattern; ... (7 more lines)
notviki \o/ no more lazy bots that stop midway through my commit messages 16:19
moritz by the way, is Geth a goth? 16:23
notviki goth? why goth?
perlpilot_ ugexe: isn't $dist-id a filename?
notviki moritz: masseffect.wikia.com/wiki/Geth
moritz notviki: just for the sake of the pun 16:24
ugexe perlpilot_: ah maybe. i'll have to dig in I guess but that would make sense 16:25
I also wonder if that *.value<ver> is on a Version object or a Str 16:27
sort on *.value<ver>^
perlpilot_ ugexe: from line 439, looks like it's a Version object 16:28
ugexe perlpilot_: cool, thanks for digging in for me! 16:35
[Coke] wonders if there is something like samemark that is additive instead of destructive. 16:38
notviki destructive? 16:39
[Coke] yes. it replaces all the existing combining marks with the new ones. 16:40
notviki ah
notviki gets a new bot feature idea... 16:42
You give it a pattern for a routine name and it tells greps core ones for that pattern
only "samemark" matches "mark"
TimToady could see the use of an addmark method 16:43
or allow multiple arguments to samemark, where all patterns are applied in parallel 16:44
then addmark just means the 1st arg is the original
[Coke] that'd work for my use here. (which is the dumb unicode mangler) 16:45
huggable: 6.d
huggable [Coke], Proposals for 6.d language: github.com/perl6/specs/blob/master/v6d.pod
TimToady allowing multiple additive patterns to samemark wouldn't have to wait for 6.d, since it'd be upward compatible 16:47
notviki spots a public word-by-word method :/ 16:50
m: dd "heh heh".word-by-word 16:51
camelia rakudo-moar aee7af: OUTPUTĀ«Too few positionals passed; expected 2 or 3 arguments but got 1ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā»
notviki m: dd "heh heh".word-by-word: "heh"
camelia rakudo-moar aee7af: OUTPUTĀ«"heh heh"ā¤Ā»
notviki m: dd "heh heh".word-by-word: "\x[308]", *.contains("heh").not 16:53
camelia rakudo-moar aee7af: OUTPUTĀ«Too many positionals passed; expected 1 argument but got 2ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā»
notviki s: "", 'word-by-word'
SourceBaby notviki, Sauce is at github.com/rakudo/rakudo/blob/aee7...r.pm#L1993
notviki it can take two args.... 16:54
ah 16:55
m: dd "heh heh".word-by-word: "\x[308]", {$^a, $^b; $a.contains("heh").not }
camelia rakudo-moar aee7af: OUTPUTĀ«This type cannot unbox to a native string: P6opaque, Boolā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā»
notviki m: dd "heh heh".word-by-word: "\x[308]", {$^a, $^b; $a.contains("heh").not.Str }
camelia rakudo-moar aee7af: OUTPUTĀ«"False False"ā¤Ā»
[Coke] Is there a way to get the marks from a string? (save the intermediate work samemark is doing) 17:01
notviki m: "Ć©".codesĀ».uniname.say 17:02
camelia rakudo-moar aee7af: OUTPUTĀ«(START OF HEADING)ā¤Ā»
notviki :|
m: "Ć©".codes.say 17:03
camelia rakudo-moar aee7af: OUTPUTĀ«1ā¤Ā»
notviki oh right
m: "Ć©".bytes.say
camelia rakudo-moar aee7af: OUTPUTĀ«No such method 'bytes' for invocant of type 'Str'ā¤Did you mean '.encode($encoding).bytes'?ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā»
[Coke] m: "Ć©".NKFD>>uniname.say
camelia rakudo-moar aee7af: OUTPUTĀ«===SORRY!=== Error while compiling <tmp>ā¤Missing dot on method callā¤at <tmp>:1ā¤------> "Ć©".NKFD>>āuniname.sayā¤ expecting any of:ā¤ method argumentsā¤ postfixā¤Ā»
[Coke] m: "Ć©".NKFD>>.uniname.say
camelia rakudo-moar aee7af: OUTPUTĀ«No such method 'NKFD' for invocant of type 'Str'ā¤ in block <unit> at <tmp> line 1ā¤ā¤Ā»
notviki m: "Ć©".NFDĀ».uniname.say 17:04
camelia rakudo-moar aee7af: OUTPUTĀ«(LATIN SMALL LETTER E COMBINING ACUTE ACCENT)ā¤Ā»
notviki m: dd "Ć©".NFD
camelia rakudo-moar aee7af: OUTPUTĀ«Uni.new(0x0065, 0x0301).NFDā¤Ā»
notviki m: "Ć©".NFDĀ».uniname.elems.say
camelia rakudo-moar aee7af: OUTPUTĀ«2ā¤Ā»
notviki oh ok
m: dd "Ć©".NFDĀ».uniprop
camelia rakudo-moar aee7af: OUTPUTĀ«("Ll", "Mn")ā¤Ā»
notviki m: dd "Ć©\x[308]".NFDĀ».uniprop 17:05
camelia rakudo-moar aee7af: OUTPUTĀ«("Ll", "Mn", "Mn")ā¤Ā»
notviki m: dd Uni.new(|"a".NFD, |"Ć©\x[308]".NFD[1..*]).Str 17:06
camelia rakudo-moar aee7af: OUTPUTĀ«"Ć”Ģˆ"ā¤Ā»
notviki w00t
[Coke] heh. 17:07
notviki m: dd Uni.new(0x0308 xx 500_000).Str 17:11
camelia rakudo-moar aee7af: OUTPUTĀ«(signal SEGV)Ā»
travis-ci Rakudo build failed. Zoffix Znet 'Fix TAP::Harness failing on full-file skippage 18:16
travis-ci.org/rakudo/rakudo/builds/190661975 github.com/rakudo/rakudo/compare/e...e7af356cc8
buggable [travis build above] ā˜  Did not recognize some failures. Check results manually.
notviki o-oh 18:22
ZOFVM: Files=1213, Tests=133499, 161 wallclock secs (22.09 usr 3.02 sys + 3073.64 cusr 254.09 csys = 3352.84 CPU)
hm t/04-nativecall/14-rw-attrs.t ............ Failed 16/16 subtests 18:32
and the other job "t/04-nativecall/06-struct.t .............. No subtests run" 18:33
Geth p: e3cf5bc85d | (Jonathan Worthington)++ | tools/build/MOAR_REVISION
Bump to get latest MoarVM.
18:37
camelia nqp-moarvm: OUTPUTĀ«Confused at line 2, near "e3cf5bc85d"ā¤ at gen/moar/stage2/NQPHLL.nqp:765 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/NQPHLL.moarvm:panic)ā¤ from gen/moar/stage2/NQP.nqp:908 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/nqp.moarvm:comp_unit)ā¤ from gen/moarā€¦Ā»
nqp-moarvm: OUTPUTĀ«Confused at line 2, near "Bump to ge"ā¤ at gen/moar/stage2/NQPHLL.nqp:765 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/NQPHLL.moarvm:panic)ā¤ from gen/moar/stage2/NQP.nqp:908 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/nqp.moarvm:comp_unit)ā¤ from gen/moarā€¦Ā»
nqp-moarvm: OUTPUTĀ«Confused at line 2, near "review: ht"ā¤ at gen/moar/stage2/NQPHLL.nqp:765 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/NQPHLL.moarvm:panic)ā¤ from gen/moar/stage2/NQP.nqp:908 (/home/camelia/rakudo-m-inst-1/share/nqp/lib/nqp.moarvm:comp_unit)ā¤ from gen/moarā€¦Ā»
notviki oh boy
I guess camelia *did* have ignore on dalek :P
ugexe heh
notviki will fix shortly 18:38
AlexDaniel notviki: what about making sure that it doesn't write something that can trigger a bot? 18:44
for example
nqpĀ¦ Bump to get latest MoarVM. 18:45
broken bar is part of latin-1 soā€¦ 18:46
notviki star: use LWP::Simple; dd LWP::Simple.post: "geth.perl6.party/?chan=%23zofbot", {"X-GitHub-Event" => "push"}, '{"repository":{"name":"nqp", "full_name":"fakety-fake"},"ref": "refs/heads/meows","commits":[{"message":"Zoffix was here", "id":"meowmeow", "added":[], "removed": [], "modified":["fakety.fake"],"author":{"name":"fake Zoffix"}}]}'
camelia star-m 2016.10: OUTPUTĀ«"OK"ā¤Ā» 18:47
AlexDaniel because at some point it can also start triggering whateverable 18:48
so what now, make all bots ignore Geth just because it is printing stuff in a way that looks like a command?
notviki star: use LWP::Simple; dd LWP::Simple.post: "geth.perl6.party/?chan=%23perl6-dev", {"X-GitHub-Event" => "push"}, '{"repository":{"name":"nqp", "full_name":"fakety-fake"},"ref": "refs/heads/master","commits":[{"message":"Zoffix was here", "id":"meowmeow", "added":[], "removed": [], "modified":["fakety.fake"],"author":{"name":"fake Zoffix"}}]}' 18:49
Geth p: meowmeow | (fake Zoffix)++ | fakety.fake
Zoffix was here
camelia star-m 2016.10: OUTPUTĀ«"OK"ā¤Ā»
notviki There. Fixed fover \o/
AlexDaniel: dalek has been doing that for years and no one blinked an eye. You know whether the source is at. If it bothers you, change it: github.com/zoffixznet/geth 18:50
AlexDaniel :S
notviki AlexDaniel: github.com/zoffixznet/geth/blob/ma...b.pm6#L124 18:51
geekosaur the usual convention is output a leading space, then bots ignore anything with a leading space. or use /notify for output and bots only accept commands via /msg (remembering that channel messages are /msg #chan) 18:52
Geth kudo/nom: e182deb529 | (Jonathan Worthington)++ | tools/build/NQP_REVISION
Get latest MoarVM.

  * Improvements to memory management of various aspects of invocation
   records (aka call frames), greatly reducing memory pressure in a
   number of cases, especially in applications that produce and store a
   large number of closures. Up to 20% improvement to CORE.setting
   build time and ~10% peak memory use reduction observed.
  * I/O memory buffers properly contribute to full collection criteria,
   reducing memory overhead required.
  * Fix an occasional heap profiler crash, and prevent heap profiler
   from greatly reducing the number of full GC collections.
  * Prevent specializer log slots from keeping alive, and so leaking,
... (3 more lines)
notviki neat
jnthn But what if I saved the most exciting thing until last? :P
(I didn't. :P)
[Coke] jnthn: DAMMIT. 18:54
Geth ast: 65979128a2 | (Jonathan Worthington)++ | S32-str/utf8-c8.t
Tests to cover MoarVM #482.
[Coke] fooled me, anyway. :)
jnthn Well, it's exciting if you were hit by either of the two final fixes mentioned I guess :)
diakopter can bisectable do timing comparisons 18:55
AlexDaniel m: say ā€˜helloā€™
camelia rakudo-moar aee7af: OUTPUTĀ«helloā¤Ā»
[Coke] re-building and re-testing my doc repo weirdness...
diakopter or evalable or whatever
[Coke] diakopter: include a time check that you chunk out into seconds or something?
AlexDaniel diakopter: you will have to do ļ½¢(now - BEGIN now) < 2ļ½£ or something like this
Geth ast: f52aef7a62 | (Jonathan Worthington)++ | S19-command-line/arguments.t
Unfudge a now-passing test.
18:56
TimToady people should really get in the habit of using INIT now rather than BEGIN now, or you won't be safe from any kind of precompilation
diakopter yeah, I wad just curious about the raw nqp man-or-boy (closure heavy) benchmark
*was 18:57
AlexDaniel e: say 42
geekosaur wasn't that benchable?
jnthn Hm, I was jnthn++ under dalek 18:58
AlexDaniel TimToady++
jnthn Does Geth source its mappings differently? :)
diakopter notviki said he preferred the long names
notviki jnthn: dalek sourced them from rakudo/rakudo/AUTHORS or something, did it?
AlexDaniel benchable can also give some timing information, yes 18:59
TimToady 'sides, INIT is one character shorter, and one handed (plus shift)
notviki Well, I said that in response to "most people would want github usernames"
AlexDaniel but I'm not sure if it's going to work, I don't remember the last time I used benchable
notviki diakopter: how does dalek do it? rakudo's AUTHORs?
AlexDaniel TimToady: you're assuming a specific keyboard layout 19:00
diakopter yes, with a few hardcoded overrides in addition
lizmat Stage parse : 52.099 # wee,. was ~60 before for me
TimToady AlexDaniel: sure, but that's a pretty safe assumption for the vast majority of people
and I'd like you to fine me a keyboard where typing INIT takes more keystrokes than BEGIN :P 19:01
notviki star: use LWP::Simple; dd LWP::Simple.post: "geth.perl6.party/?chan=%23perl6-dev", {"X-GitHub-Event" => "push"}, '{"repository":{"name":"nqp", "full_name":"fakety-fake"},"ref": "refs/heads/master","commits":[{"message":"Zoffix was here", "id":"meowmeow", "added":[], "removed": [], "modified":["fakety.fake"],"author":{"name":"fake Zoffix"}}]}'
Geth p: meowmeow | (fake Zoffix)++ | fakety.fake
Zoffix was here
camelia star-m 2016.10: OUTPUTĀ«"OK"ā¤Ā»
diakopter hehe that's cool 19:02
TimToady *find
AlexDaniel TimToady: actually, I'm not sure what you're talking about. I don't know a layout where INIT can be written with one hand, so I think I misunderstood you completely
jnthn lizmat: Yeah, and it's some seconds off all the later stages too :)
notviki \o/
TimToady AlexDaniel: oh, yeah, there's that pesky T
hmm
lizmat wonders what that will have done for test-t
[Tux] ?? ^^^
jnthn lizmat: Hard to say. 19:03
diakopter well which one tab-completes best
jnthn lizmat: Though it surely can't have hurt. :-)
AlexDaniel geekosaur: what about using a zero width space instead?
diakopter is there an Inline::TypeScript 19:04
lizmat hmmm... spectest doesn't appear to spectacularly faster :-(
jnthn Yeah, that's going to be in the few percent at best 19:05
notviki builds head and tries stresstest
jnthn Longer-running programs were the main winners from the improvements.
diakopter that's dominated by startup..
jnthn Invocation and frame teardown did get simpler for everything
But it was the smaller bit of the win. 19:06
diakopter someone could write a test harness for make spectest to run all in one process
notviki :o
diakopter actually that would be a great exercise for notviki
jnthn It may well take down the memory overhead of spectest6
notviki me?
why me?
diakopter because you know the language and you're fast 19:07
notviki :o
jnthn Rest, dinner, etc. &
geekosaur AlexDaniel, mostly it's to make it easier to also hide other stuff from bots when needed. maybe you can type that character easily...
diakopter what's spectest6 19:08
AlexDaniel ā€‹nqp: Bump to get latest MoarVM.
notviki diakopter: spectest, but using Perl 6 TAP::Harness instead of perl5's prove
lizmat diakopter: basically "HARNESS_TYPE=6 make spectest"
notviki: is "make test" supposed to run the t/06-tap-harness tests ? 19:09
diakopter oh I see. well someone could probably make a threaded one in one process
notviki lizmat: no, it's not added into the list yet. I should find time and massage failing test files and update make test to run all that's runnable 19:10
lizmat diakopter: the perl6 version uses Proc::Async, afaik, so yes, it does that already (in a way)
notviki: oki
diakopter well I mean to save on startup
notviki we' 19:11
we'd likely still net-lose, due to Perl 6 and not Perl 5
diakopter if there's a failure, it could fall back to processes for a real test
lizmat jnthn: as a datapoint: the tests out of sync problems appear to be gone, but the "No such method 'end-entries' for invocant of type 'Match'" (aka, calling a method on the wrong object, or v.v.) is still there 19:12
so I guess we still have a race condition in grammars :-( 19:13
notviki the out of sync stuff sounds like the "\" in test description bug that got fixed... 19:15
lizmat ah, could be :-)
notviki wonder if the end-entries stuff is a test flapping and some buggy-path in TAP::Harness gets walked
ZOFVM: Files=1213, Tests=133501, 144 wallclock secs (23.08 usr 3.03 sys + 2583.24 cusr 195.21 csys = 2804.56 CPU) 19:16
lizmat notviki: note it's not always "end-entries", it is a bunch of other methods called on the wrong object
notviki And earlier today that was: Files=1213, Tests=133499, 161 wallclock secs (22.09 usr 3.02 sys + 3073.64 cusr 254.09 csys = 3352.84 CPU)
lizmat: oh :(
m: dd [ 3352.83 - 2804.56, 161-144] 19:17
camelia rakudo-moar e182de: OUTPUTĀ«[548.27, 17]ā¤Ā»
notviki seems like a nice win for stresstest \o/
notviki tries HARNESS_TYPE=6 make stresstest 19:18
Oh and Stage parse : 59.380 :)
Was in the 70s recently
[Coke] jnthn: so when I tested it earlier, I didn't think about "in moar but not yet in rakudo" - latest version is mainly 'Tried to get the result of a broken Promise' in coke/bughunt 19:19
notviki uhhh... that didn't take long: "Unhandled exception in code scheduled on thread 56" No such method 'made' for invocant of type 'TAP::Runner::State' 19:20
lizmat notviki: what I said, it's not always "end-entries" :-(
notviki Second run went further but crashed with "Error in `/home/cpan/CPANPRC/rakudo/install/bin/moar': double free or corruption (out): 0x00007f8005c44f40 ***" 19:22
third time a charm? :) 19:23
"Unhandled exception in code scheduled on thread 14" "Cannot call method 'Stringy' on a null object" 19:25
Well, that was good fun.
w00t... 4th charm a charm: Files=1188, Tests=133315, 333 wallclock secs 19:32
Result: PASS
hm... weird that it counted fewer files but more tests 19:34
m: say 1213-1188
camelia rakudo-moar e182de: OUTPUTĀ«25ā¤Ā»
notviki 25 files missing. Oh and not more tests, just ~70 fewer 19:35
lizmat notviki: yeah, I think that's another indication something's wrong :-( 19:38
argh 19:42
So I have made Zop 13x faster 19:43
but it breaks on ZII, Zor, Z&& and Zand because of fetching values when they technically wouldn't need to
aka
m: my $a = 0; dd 0 Zand ($a++,); dd $a 19:44
camelia rakudo-moar e182de: OUTPUTĀ«(0,).Seqā¤Int $a = 0ā¤Ā»
lizmat so the above would now say: Int $a = 1 19:45
grrrr
notviki :( 19:47
lizmat I can't help but think: do we really need that ? 19:49
I mean:
m: my $a = 0; dd &[and](0,$a++); dd $a
camelia rakudo-moar e182de: OUTPUTĀ«0ā¤Int $a = 1ā¤Ā»
notviki here it gets computed before it even reached the routine tho 19:51
TimToady m: my $a = 0; dd [and](0,$a++); dd $a
camelia rakudo-moar e182de: OUTPUTĀ«0ā¤Int $a = 0ā¤Ā»
notviki :o
m: my $a = 0; dd [and] 0, $a++; dd $a
camelia rakudo-moar e182de: OUTPUTĀ«0ā¤Int $a = 0ā¤Ā»
notviki crazy 19:52
TimToady well, it knows the operator at compile time, and how it thunks
notviki Ah
TimToady with &foo, you don't
could as easily be $foo(0, $a++)
Geth kudo/nom: 8654389832 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Metaops.pm
Add support for generic "non" op, and fastpath &[,]
19:53
TimToady and yes, it was insane to make [and] thunk properly, almost as insane as [^^]
m: my $a = 0; dd [^^](0,$a++); dd $a
camelia rakudo-moar e182de: OUTPUTĀ«0ā¤Int $a = 1ā¤Ā»
TimToady m: my $a = 0; dd [^^](0,$a++,$a++); dd $a
camelia rakudo-moar e182de: OUTPUTĀ«1ā¤Int $a = 2ā¤Ā»
TimToady m: my $a = 0; dd [^^](1,$a++,$a++); dd $a
camelia rakudo-moar e182de: OUTPUTĀ«Nilā¤Int $a = 2ā¤Ā»
TimToady hmm 19:54
lizmat TimToady: so I gather you wanna keep it?
TimToady keep what?
reduce thunking correctly?
lizmat m: my $a = 0; dd 0 Zand ($a++,); dd $a # $a = 0 rather than 1
camelia rakudo-moar e182de: OUTPUTĀ«(0,).Seqā¤Int $a = 0ā¤Ā»
TimToady m: my $a = 0; dd [^^](1,++$a,$a++); dd $a
camelia rakudo-moar e182de: OUTPUTĀ«Nilā¤Int $a = 1ā¤Ā»
TimToady well, that seems correct too 19:55
lizmat goes back to the drawing board 19:56
TimToady but you can't do it with normal high-order functions unless you thunk everything on spec
and that's a recipe for slow, not to mention all the bad press Algol got for making swap impossibly by using call-by-name semantics 20:01
*ble
lizmat well, Zop *is* 13 times faster now, also for Zand 20:02
it's just that the side effects are applied always
for each element of the Zip
TimToady so yeah, our metaops are thunk aware in a way that HOP can't emulate unless you make everything lazy
but if you're Haskell, you don't have the side effects anyway :) 20:03
lizmat TimToady: but they only need to be thunk aware on and/or/&&/||/xor/^^ right ?
TimToady but you can't know that's what you have with $foo(0,$a++) 20:04
lizmat I *can* know which metaop is being applied, and take the lazy path for those
and take the fast path for all the others
TimToady so I think the current division at the operator vs function boundary is probably a bit saner than trying to guess whether the &foo is too indirect
you can probably still combine the implementations to some extent, but I'd really like to preserve the thunky behavior of the ops, since it was a lot of work to get right in the first place :) 20:06
lizmat hence the tests for it :-)
TimToady ayup
lizmat so, by the looks of it, this applies for all ops that have &op.prec('thunky').starts-with('.') 20:07
or for all ops that have any thunky ?
TimToady well, xx is thunky in the 1st arg 20:08
and so is RRxx :) 20:09
lizmat m: dd 1,2 Zxx 2,3
camelia rakudo-moar e182de: OUTPUTĀ«((1, 1), (2, 2, 2)).Seqā¤Ā»
notviki wow cool! 20:10
TimToady m: dd rand,rand Zxx 2,3
camelia rakudo-moar e182de: OUTPUTĀ«((0.0977303009167496e0, 0.0771304285501788e0), (0.422388783553719e0, 0.602094833607288e0, 0.434087383252164e0)).Seqā¤Ā»
TimToady note each rand is thunky there
m: dd 2,3 ZRxx rand,rand 20:11
camelia rakudo-moar 865438: OUTPUTĀ«((0.367301135044424e0, 0.276367978963408e0), (0.949134865005526e0, 0.347063326826044e0, 0.777447812991421e0)).Seqā¤Ā»
TimToady and there
bartolin r: use nqp; class A { has Mu $!foo; method bar () { $!foo := Any; say nqp::isnull($!foo) ?? "null" !! $!foo } }.new.bar # RT #130532 20:14
camelia rakudo-moar 865438, rakudo-jvm fb4f16: OUTPUTĀ«(Any)ā¤Ā»
bartolin sorry, this one:
r: use nqp; class A { has Mu $!foo; method bar () { $!foo := nqp::null; say nqp::isnull($!foo) ?? "null" !! $!foo } }.new.bar # RT #130532
camelia rakudo-moar 865438: OUTPUTĀ«nullā¤Ā»
..rakudo-jvm fb4f16: OUTPUTĀ«(Mu)ā¤Ā»
bartolin does anyone has an idea, where that behaviour of r-j could stem from (which code area) 20:16
j: use nqp; my Mu $foo; $foo := nqp::null; say nqp::isnull($foo) ?? "null" !! $foo # this works 20:17
camelia rakudo-jvm fb4f16: OUTPUTĀ«nullā¤Ā»
samcv morning perl 6 dev o/ 20:19
notviki \o 20:20
bartolin hi samcv
samcv hey
lizmat samcv o/
m: m: my $a = 0; dd 0,1,0 Zand $a++,$a++,$a++; dd $a # TimToady: do you consider this to be correct ? 20:27
camelia rakudo-moar 865438: OUTPUTĀ«(0, 0, 0).Seqā¤Int $a = 1ā¤Ā»
TimToady seems right, since only one LHS is true 20:28
lizmat ok, so the fact that the first $a++ isn't executed, affects the outcome of the 2nd 20:29
and that's to be expected 20:30
notviki m: m: my $a = 0; dd 0,1,0 Zand ++$a,++$a,++$a; 20:31
camelia rakudo-moar 865438: OUTPUTĀ«(0, 1, 0).Seqā¤Ā»
notviki amazing...
oh...
the fact that the second gets executed but doesn't affect the third one? 20:32
m: m: my $a = 0; dd 0,1,0 Zand ++$a,++$a,++$a; dd $a
camelia rakudo-moar 865438: OUTPUTĀ«(0, 1, 0).Seqā¤Int $a = 1ā¤Ā»
notviki m: m: my $a = 0; dd 0,1,1 Zand ++$a,++$a,++$a; dd $a
camelia rakudo-moar 865438: OUTPUTĀ«(0, 1, 2).Seqā¤Int $a = 2ā¤Ā»
notviki oh never mind me
Geth kudo/nom: f66d4b3a58 | (Elizabeth Mattijsen)++ | 2 files
Put the new Zop handling live for 13x improvement

  - except for thunky.starts-with('.') ops
   these are lazy in the fetching of values from the iterators in a
   way that I haven't fully grokked, so we're using the old code for
   those cases. This includes: Zand, Z&&, Zor, Z||, Zxor, Z^^
20:49
travis-ci Rakudo build passed. Jonathan Worthington 'Get latest MoarVM. 20:51
travis-ci.org/rakudo/rakudo/builds/190709721 github.com/rakudo/rakudo/compare/a...82deb52990
Geth kudo/nom: 9a11eacdb2 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals.pm
ReifiedListIterator can have its own "skip-one"

Because it is as easy as incrementing the index:
   $ 6 '$_ = (1,2,3).iterator; .skip-one; dd .pull-one'
   2
21:19
lizmat m: my $a = 0; try (1,2,3,4,++$a) >>+<< (3,4,5); dd $a # TimToady: is it ok if that would say 0 in the future ? 21:24
camelia rakudo-moar f66d4b: OUTPUTĀ«Int $a = 1ā¤Ā»
lizmat aka, not reify the entire list, but fail as soon as one of the iterators returns IterationEnd and the other doesn't ? 21:25
samcv how2 generate stageX moarvm for nqp. i think that's the issue i'm seeing 21:49
No registered operation handler for 'getstrbyname'
because the stage wasn't compiled with that op, so won't let me compile nqp to use this op right?
make m-bootstrap-files ? 21:53
lizmat samcv: no idea :-( 22:24
m: my $a = 0; try (1,2,3,4,++$a) >>+<< (3,4,5); dd $a # TimToady jnthn: is it ok if that would say 0 in the future ? 22:27
camelia rakudo-moar 9a11ea: OUTPUTĀ«Int $a = 1ā¤Ā»
lizmat m: dd (1,2 >>+<< 2,3).WHAT # also, is there a reason this is a List and not a Seq ? 22:28
camelia rakudo-moar 9a11ea: OUTPUTĀ«Listā¤Ā»
lizmat hopes to see an answer for this tomorrow 22:37
good night, #perl6-dev!
notviki night 22:38
samcv ok well i figured out probably (maybe) how to reget but i still get that error 23:05
make m-bootstrap-files
oh i got it. was a stupid mistake 23:17
because jvm and js don't have nqp::getstrfromname which will be in mvm soon. i was thinking of making a getstrfromname routine for those, that just calls nqp::char(nqp::codepointfromname) 23:34
does this sound like a good idea? because i want to change Actions.nqp to use the new function, and allow us to use it in rakudo as well
the functions act identically except getstrfromname also adds additional things which are multiple codepoints like emoji sequences and potentially other things in the future 23:35
notviki, any clue on this? 23:45
notviki nope, sorry 23:46
samcv also can i do #?if jvm js
notviki samcv: don't think so, but the script that cares about those is this one: github.com/rakudo/rakudo/blob/nom/...qp#L29-L39 23:48
(no idea if anything else does)
samcv can i improve it? 23:52
well answer is probably yes
i want #?if #?else 23:53
i don't think we support else
notviki buggable was using 2.5GB of RAM :( 23:55
need to dig up what's leaking in it...
timotimo you can definitely do #?if !moar
notviki oh
ah, right there's the ('!')? in that regex 23:56
samcv: ^
samcv oh ok
yay