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 |