AlexDaniel | ah… okay… | 00:00 | |
eveo | ZOFFLOP: t/spec/S32-io/pipe.t | 00:03 | |
ZOFFLOP: t/spec/S11-modules/require.t | 00:07 | ||
Geth | rakudo/nom: e4468c610c | (Zoffix Znet)++ | src/core/Proc.pm Polish Proc methods that expect the Proc to be done Affects methods .status, .Numeric, .Bool, .exitcode, and .sink. Fixes module build installation failures and RT#125757: rt.perl.org/Ticket/Display.html?id...et-history Even before Proc refactor, we had some issues where users would call, say, ... (12 more lines) |
00:23 | |
eveo | There. Fixed forever! Gonna write tests tomorrow. | ||
eveo goes to $relax() | |||
Geth | roast/6.c-errata: 2c8d5c7704 | (Samantha McVey)++ | S15-nfg/grapheme-break-test-gen.p6 Add a die to grapheme-break-test-gen.p6 since tests were altered 2 tests that were generated with this script were altered, since they were incorrect. Since this is in 6.c-errata the tests should not change unless they are incorrect, so rewriting the script or taking it from master would not be the best idea. |
00:30 | |
samcv | hmm having some weird testing errors | 00:56 | |
with my font info query module | |||
# expected: :!autohint | |||
# got: :!autohint | |||
using is-deeply | |||
odd | |||
ok i think i got it. looks like .perl is the same... but they're actually not the same | 01:00 | ||
eveo | Then it's a bug in .perl, innit? | ||
they is what? Pair objects? | |||
s: &[eqv], \(:!autohint.Pair, :!autohint.Pair) | 01:01 | ||
SourceBaby | eveo, Sauce is at github.com/rakudo/rakudo/blob/14d7...air.pm#L91 | ||
samcv | yep | ||
hash | |||
this is the .gist: | 01:02 | ||
verticallayout => (Bool) | |||
which is correct. but the .perl is :!verticallayout | |||
is the same code that does hash pairs the same that does other Pairs? | |||
eveo | Ah, I see it | ||
m: (Pair.new: "foo", Bool).perl.say | |||
camelia | :!foo | ||
eveo | s: :2a.Pair, 'perl', \() | ||
SourceBaby | eveo, Sauce is at github.com/rakudo/rakudo/blob/14d7...air.pm#L65 | ||
samcv | yep | 01:03 | |
eveo fixes | |||
samcv | :-) | ||
bisectable6, (Pair.new: "foo", Bool).perl.say | |||
bisectable6 | samcv, On both starting points (old=2015.12 new=e4468c6) the exit code is 0 and the output is identical as well | ||
samcv, Output on both points: «:!foo» | |||
eveo | huh... "!(nqp::istype($!key,Num) && nqp::isnanorinf($!key))" that'll never be true, will it? | 01:05 | |
samcv | weird | 01:06 | |
maybe want to check when that was added | |||
if there was some reason | 01:07 | ||
eveo | ah, yeah, git blame suggests that ! shouldn't be there | 01:08 | |
Oh wait | |||
I need to start wearing my glasses. Totally missed the extra layer of parens there -_- | |||
samcv | heh | 01:09 | |
eveo, what $* variable gets me what rakudo version is running? | 01:11 | ||
eveo | m: $*PERL.compiler.version | 01:15 | |
camelia | ( no output ) | ||
eveo | m: $*PERL.compiler.version.say | ||
camelia | v2017.05.440.ge.4468.c.610 | ||
samcv | very good. thanks :) | 01:16 | |
eveo | m: Pair.new(Complex, 42).perl.say | ||
camelia | Complex => 42 | ||
eveo | Another bug | ||
Geth | rakudo/nom: c6b03c45c7 | (Zoffix Znet)++ | src/core/Pair.pm Fix Pair.perl - Do not assume all Str keys are Str:D - Do not assume all false Bool values are Bool:D - Do not assume all Numeric keys are Numeric:D Bug find: irclog.perlgeek.de/perl6-dev/2017-...i_14734597 |
01:24 | |
roast: 9e351a224a | (Zoffix Znet)++ | S02-types/pair.t Test Pair.perl with typeobject components Rakudo fix: github.com/rakudo/rakudo/commit/c6b03c45c7 Bug find: irclog.perlgeek.de/perl6-dev/2017-...i_14734597 |
|||
eveo powersdown | |||
ugexe | perl6 -e "prompt('y/n')" # can anyone try this on windows with moar-blead? | 02:26 | |
y/nCannot flush handle: Failed to flush filehandle: No such device or address | 02:28 | ||
it works with just "prompt()" though (the other multi) | 02:29 | ||
`my $out := $*OUT; $out.print(42); $out.flush()` reproduces - ok except on windows | 02:32 | ||
samcv | hmm something is tried to convert to a num on /gen/moar/ModuleLoader.nqp on my travis build environment | 03:00 | |
i'm guessing it tries to convert some ENV var to a number | |||
my $DEBUG := +nqp::ifnull(nqp::atkey(nqp::getenvhash(), 'RAKUDO_MODULE_DEBUG'), 0) i see this on line 32 which is what the error is from | |||
is it another line or could you get Unhandled exception: Can't convert 'yes' to num: expecting a number from that line? | 03:01 | ||
oh. i see the + there | |||
yeah that seems to be it | |||
ugexe | Proc might need to use CLONE-HASH-DECONTAINERIZED(%env) | 03:02 | |
it used to be used, but got removed | |||
well no i guess its just in proc::async now | 03:03 | ||
samcv | ugexe, RAKUDO_MODULE_DEBUG is supposed to be a number yes? | 03:11 | |
as it converts to a number with the +, it seems if the variable is set to a string that can't be converted to a number, perl6 won't even compile | 03:12 | ||
have a fix but just want to confirm that. or should it set to 1 if there is a defined string? | |||
or just accept numbers, if not a number set to 0? | |||
ugexe | well if this is a new bug then should probably find out what caused it | 03:13 | |
samcv | it's not new | ||
well. actually it could be | |||
but i fixed it. | |||
ugexe | RAKUDO_MODULE_DEBUG is an env var, so it will always be a string representation | 03:14 | |
samcv | as long as RAKUDO_MODULE_DEBUG accepts numbers. if it's not able to convert to a number then it sets to 0 | ||
i understand this | |||
all i'm asking is if it should accept anything that isn't a number | |||
because that's how it currently works | |||
atm if it's not able to convert to a number then rakudo won't work, or at minimum won't compile. so my fix sets it to 0 if it can't be converted to a number instead of breaking | 03:15 | ||
actually yeah this bug is old. that line was added in 2013 | 03:17 | ||
ugexe | i dunno, im included to say anything but 0 and '' are true but ' ' makes me reconsider | ||
inclined^ | |||
samcv | i would say so too. though that is not currently how it works atm. but i could always try and do that hmm | 03:18 | |
i'm going to commit this fix, which won't change any behavior except stopping the crash, and we can figure out if we want to do that | |||
actually not too much to that, so i'll go ahead and do that | 03:20 | ||
ugexe, it seems other places in the codebase accept things not 0 and not '' as true | 03:26 | ||
i just figured out. so this should be changed to match | |||
ugexe | hmm zef is able to install itself on windows now, but using `zef ...` always results in a precomp error due to not being able to rename a file. `perl6 -Ilib bin/zef ...` works, just not `zef ...` | 04:00 | |
samcv | did more work to make sure it emulated it properly. wrote about 10 tests testing various scenarios and checked how the Perl 6 code checked if the env would be set | 05:06 | |
so finally got it so both things agree with each other instead of in certain cases them not being set the same | |||
Geth | rakudo: samcv++ created pull request #1101: Fix ModuleLoader.nqp so RAKUDO_MODULE_DEBUG works the same as elsewhere |
05:32 | |
samcv | ugexe, code is a bit longer than i had hoped, but i wanted to make sure it matched in practically all cases with the Perl 6 | ||
Full description of everything in the PR description | |||
[Tux] | This is Rakudo version 2017.05-441-gc6b03c45c built on MoarVM version 2017.05-85-g21ee1a50 | 06:14 | |
csv-ip5xs 3.043 | |||
test 13.002 | |||
test-t 4.224 - 4.533 | |||
csv-parser 13.196 | |||
nine | samcv: I'm really not sure the debug output in ModuleLoader.nqp has helped anyone in the past 3 years. And I've thought about trimming RAKUDO_MODULE_DEBUG output to the parts that I usually need a couple of times already. Just left everything in in case somebody would at some point benefit from it. | 07:10 | |
samcv: but without knowing that anyone benefits and instead knowing that it can harm, I'd go for removing it. | 07:11 | ||
lizmat | Files=1204, Tests=62034, 216 wallclock secs (13.24 usr 5.10 sys + 1319.83 cusr 131.33 csys = 1469.50 CPU) | 07:36 | |
yoleaux | 14 Jun 2017 16:14Z <eveo> lizmat: this commit change the time of DateTime.second from a Rat to Num. Does it matter? github.com/rakudo/rakudo/commit/74...46bb6891bf | ||
14 Jun 2017 16:46Z <perlawhirl> lizmat: re: eveo's msg... i think the real question is, should *.seconds type be consistent, eg: ( DateTime.new('2012-02-29T12:34:56Z'), DateTime.now ).map( *.second.^name ) | |||
eveo | NeuralAnomaly: status | 10:16 | |
yoleaux | 10:09Z <zengargoyle> eveo: yay, thanks much. | ||
NeuralAnomaly | eveo, [✘] Next release will be in 1 day and 18 hours. Since last release, there are 65 new still-open tickets (3 unreviewed and 1 blockers) and 43 unreviewed commits. See perl6.fail/release/stats for details | ||
eveo | buggable: speed 10 | 10:17 | |
buggable | eveo, ▂▂▂▁▁▁▁▁↓▄ data for 2017-06-11–2017-06-15; range: 4.224s–4.533s; 3% slower | ||
eveo | FWIW, I don't have %*ENV<ComSpec> set to anything on my windows box: github.com/rakudo/rakudo/blob/nom/...oc.pm#L127 | 10:19 | |
Oh wait I do | 10:20 | ||
would help if I printed the value -_- | |||
Geth | rakudo/nom: 241d292568 | (Jonathan Worthington)++ | src/vm/moar/Perl6/Ops.nqp Generate much better code for p6bool in some cases An earlier optimization to make it better handle the case of native lexicals unfortunately also made it works for native intermediates, such that things like `nqp::p6bool(nqp::isconcrete($foo))` would generate bad code. While it's true that VM-level box interning meant it didn't actually allocate, it still produced much more costly code than it should have. This fixes it using the recently added decont context mechanism, giving simpler code that still produces a good result on native lexicals. |
10:22 | |
rakudo/nom: 7e8bac9bcc | (Jonathan Worthington)++ | src/core/IO/Handle.pm Optimize lines pull-one a little. It turns out that `a // b // c` compiles as `(a // b) // c`. Add some parens to make it `a // (b // c)`, which saves an extra .defined call. |
10:36 | ||
jnthn | eveo: I translit'd the C code we've had in place for some years there | ||
eveo | jnthn: what about CLONE-HASH-DECONTAINERIZED thing ugexe++ mentioned? Is it no longer needed? | 10:38 | |
jnthn | Hm, I can't see where that was mentioned | 10:39 | |
Oh, I see | |||
No, it's done in Proc::Async | 10:40 | ||
We don't need to do it twice. :) | |||
eveo | cool | 10:41 | |
[Coke] | Note that I didn't see the proc/in/out issue on my version of nom. Updating to head, trying again. | 12:12 | |
Geth | nqp/master: 6 commits pushed by pmurias++ | 12:13 | |
[Coke] | updated, still not getting the errors. | 12:15 | |
(testing by running perl6 xt/aspell.t in perl6/doc) | |||
eveo | What sort of errors? | 12:20 | |
Ah, the ones dogbert17 had last night | |||
[Coke] | Did find more new spelling words, though. | 12:22 | |
Geth | rakudo/nom: b03d8044a4 | (Elizabeth Mattijsen)++ | src/core/set_operators.pm Fix various issues with Map (<) Map Mostly to do with the fact that we didn't check for the values in the Map, which we should, as they are when coercing to .Set. |
12:29 | |
roast: 2a147f38f3 | (Elizabeth Mattijsen)++ | S03-operators/proper-subset.t Add a number of Map (<) Map tests Because we had a bug there that wasn't covered by tests yet. |
|||
dogbert17 | [Coke] I just fixed #1375 | 12:38 | |
eveo | m: say 948/874 | ||
camelia | 1.084668 | ||
eveo | Interesting.... doing $*OUT.encoding: Nil; before doing my $s := "y\n".encode; and a bunch of $*OUT.write: $s; makes the writes 8% slower :S | 12:39 | |
s: IO::Handle, 'write' | |||
SourceBaby | eveo, Sauce is at github.com/rakudo/rakudo/blob/7e8b...le.pm#L530 | ||
dogbert17 | [Coke] the discussion yesterday (wrt spurious spelling errors) sort of ended here: rt.perl.org/Public/Bug/Display.html?id=131576 | ||
eveo | well, maybe.. seems there's some variance | 12:41 | |
[Coke] | dogbert17: I'm on OS X, and am not seeing that particular problem. | 12:55 | |
(just fyi) | 12:56 | ||
dogbert17: thanks for the fix. Can you take github.com/perl6/doc/issues/1381 as long as you're in there? | 12:57 | ||
dogbert17 | sure, do you want me to add foooooooobar to code.pws? | 13:01 | |
dogbert17 does that | 13:05 | ||
[Coke] | +1 | 13:09 | |
eater | eveo: intresting :) I just did it /after/ because I was thinking .write may had additionial checks | 13:10 | |
mst | eveo: not convinced you're right on reddit | 13:16 | |
Printing to dynamically set filehandle | |||
Using filehandle that's an object that can be anything really | |||
both of those are doable in perl5 AFAICT albeit not as prettily | |||
eveo | mst: doable != being done in that code | 13:17 | |
timotimo | right, the code that just uses say("foo") pays that cost without the user benefitting at all | ||
whereas the perl5 code doesn't pay for that | |||
eveo | say() literally looks up what's in $*OUT dynvar and calls that object's .say method | ||
mst | eveo: well, certainly, "Printing to dynamically set filehandle" is true of both | ||
timotimo AFK for half a day | |||
mst | yeah, and perl5's say() looks up the currently selected filehandle and prints to that | ||
eveo | mst: how to change it? | 13:18 | |
ilmari | select($fh) | ||
mst | select($fh); | ||
eveo | And that's dynamic? | ||
mst | it's a global, but it's still a lookup | ||
eveo | :/ | ||
mst | in perl5 a dynamic variable would cost exactly the same to look up | ||
ilmari | tehre's SelectSaver, which is basically a scope guard that restores it on DESTROY | 13:19 | |
mst | since 'local' is handled via stack annotations, so looking it up is just a variable lookup | ||
eveo: I do wish you'd actually learn perl5 before criticising it. | |||
it gets quite old when a bunch of your "look at how much cooler perl6 is" stuff turns out to just be that you'd never learned how to do that in perl5 :( | 13:20 | ||
eveo | That's not at all what that post is saying. | 13:21 | |
mst | this is a general complaint | ||
lizmat | mst eveo afaik everybody has the best intentions here | 13:22 | |
mst | well, yes, duh | ||
eveo | Fine, then I do wish perl5 people would actually try perl6 and stop telling people it doesn't even compile | ||
You know, just a general complaint. | |||
lizmat | well, yes, duh :-) | 13:23 | |
mst | I have tried perl6. the last time resulted in TWEAK getting added because I got annoyed that perl6 was more typing than perl5 ;) | ||
so complained until you stole it and were better again :D | |||
lizmat | there you go, we need more of mst in Perl 6 :) | 13:24 | |
eveo | mst: what do I need to `local` to make the behaviour dynamic and not global? | ||
mst | eveo: that isn't directly exposed, but you're talking about performance, and 'local' has no effect on perl5 variable lookup performance, so that still seemed odd | 13:25 | |
the fact that perl6 actually handles unicode sensibly is probably the biggest hit anyway, and also the hugest advantage perl6 has over perl5 of the things you listed | |||
eveo | So there *isn't* a way to dynamically set the variagble in perl 5? | ||
*the handle | 13:26 | ||
mst | it's "just a global", but so are dynamically scoped variables | ||
eveo | No, they're not. | 13:27 | |
mst | in perl5, they are. | ||
hence if it *was* local()ed the performance wouldn't change | |||
(local in perl5 pushes an entry onto the savestack which is restored when that frame's unwound; read/write to the local()ed variable is a plain access) | 13:28 | ||
ilmari | the issue is that PL_defoutgv isn't available as an actual perl variable, only indirectly via select() | ||
eveo | mst: so it goes through dynamic scopes, trying to find a global? | ||
mst | no | 13:29 | |
eveo | Perl 6 does as I understand it | ||
*to find a dynvar | |||
mst | that's probably a cleaner implementation but (uneducated guess) potentially slower than the way perl5 handles it | ||
ilmari | when you local()-ise a global variable its value gets replaced in-place, and an entry to restore it gets pushed on the save stack | 13:30 | |
eveo | Does perl5 even have dynamic variables? | ||
ilmari | any variable can be set for the current dynamic scope | ||
eveo | How? | ||
ilmari | any non-lexical variable, that is | ||
local $foo = 42; | |||
mst | with 'local' | ||
ilmari | will be restored to its old value at the end of the enclosing scope | ||
lizmat | but $foo needs to exist already, right ? | 13:31 | |
ilmari | global variables exist by virtue of being mentioned | ||
mst | it being perl5, it probably autovivifies the stash entry | ||
ilmari | under strict 'vars' it needs to be fully-qualified or declared with 'our' | 13:32 | |
mst | or use vars'ed | ||
eveo | ilmari: you said it's non-lexicals only, get one? | ||
ilmari | eveo: "get one"? | ||
mst | 'my $foo;' can't be local()ed, but given 'my %foo;' $foo{bar} can | ||
ilmari | lexicals as in variables declared with 'my' | ||
eveo | How to make a dynamic varaible in Perl 5 | ||
ilmari | mention it | 13:33 | |
mst | again, anything except a pad entry can be made dynamic with local | ||
ilmari | and use 'local' to assign a value dynamically scoped | ||
eveo | OK | ||
lizmat | in Perl 6, a dynamic var is always a pad entry | ||
be it in MY:: or PROCESS:: | 13:34 | ||
mst | basically, 'local' in perl5 works roughly like 'my $saved = $foo; $foo = undef; LEAVE { $foo = $saved }' | ||
ilmari | that sounds like a stash entry, not a pad entry | ||
mst | except it's at the VM level | ||
ilmari | a pad belongs to a scope, a stash to a namespace | ||
mst | in soviet perl6, ALL variables live in pads | ||
EQUALITY! | |||
(sorry) | |||
lizmat | mst: isn't that more like "our $saved = $foo" ? | ||
mst | lizmat: I said 'roughly' because honestly it's C-level fuckery in the VM so any description is going to be at least slightly wrong :) | 13:35 | |
lizmat | gotcha :-) | ||
mst | it's actually more like push @SAVE_STACK, [ \$foo, $foo ] in terms of how the C works | 13:36 | |
except it's probably a struct | |||
but we're now into "you can pick 'roughly' or you can read the source" territory, I suspect, and it's a while since I read the source :D | |||
for the record, my goal here is "it annoys me when I see a perl6 to perl5 comparison, and the perl5 is basically sucky, so I first have to mentally rewrite the perl5 to be good perl5, and only then can I appreciate that the perl6 is still nicer, and I'd like to be able to skip that step and go straight to the appreciating the perl6 being nicer" | 13:37 | ||
this seems like a goal we can all find useful :) | 13:38 | ||
lizmat | agree :-) | 13:40 | |
eveo | Wonder if there's anyway to make dynamic vars cheaper in Perl 6. | 13:42 | |
s: &DYNAMIC | 13:43 | ||
lizmat | eveo: in general, or for builtin dynamic vars ? | ||
SourceBaby | eveo, Sauce is at github.com/rakudo/rakudo/blob/b03d...ubs.pm#L30 | ||
eveo | lizmat: built-in would be enough. In some IO benches I did in the past, &DYNAMIC was usually high on the list | ||
jnthn | Yes. iirc, $*OUT is expensive because at present it doesn't actually live on the call stack at all | 13:44 | |
mst | assuming 'whenever' blocks preserve their dynamic environment, you probably can't do the simple-but-stupid version that perl5 does? | ||
jnthn | But falls back to looking in PROCESS | ||
eveo | + $*SPEC + $*CWD | ||
jnthn | And that fallback isn't something we can presently cache | ||
Which means it ends up a bunch worse than it really should | 13:45 | ||
eveo | Cool. | ||
mst: and yes, TIL I learned `local` was dynamic | 13:46 | ||
s/I learned/ | |||
eveo & | 13:47 | ||
mst | also, while you're right that the perl5 STDOUT isn't an object, the VM *does* have to check the currently selected filehandle isn't | ||
so we're still paying some cost for it being allowed to be | |||
Geth | rakudo/nom: 3363c7b93b | (Elizabeth Mattijsen)++ | 3 files Streamline unknown .WHY handling It shouldn't matter whether something is a Block, or an Attribute or something else. If no doc could be found, it should return something consistent (Nil for now). |
13:48 | |
eveo | ok, I removed that from the list | 13:49 | |
lizmat | is GLOBAL.WHO collapsed at compile time ? | 13:57 | |
eveo: perhaps this change has a positive effect on that yes benchmark: gist.github.com/lizmat/f8978bee4ec...bddcf50efa | 14:01 | ||
it spectests clean | |||
jnthn | lizmat: What does "collapsed" mean? | 14:05 | |
lizmat | I meant, is the lookup done once at compile time, or every time at runtime | ||
eveo | lizmat: cool | 14:06 | |
lizmat | if the former, we could save it somewhere | ||
FWIW, &DYNAMIC is called for $*OUT for *every* say | 14:10 | ||
eveo: ah, found a way to benchmark it | 14:11 | ||
eveo | Sweet | ||
ugexe | any idea what broke `prompt("y/n")` on windows? | 14:15 | |
lizmat | jnthn's IO refactor ? | ||
jnthn | Yes | ||
Saw it earlier. No Windows on this machine. | 14:16 | ||
But will try and remember to look at it tonight | |||
ugexe | its because it does $*OUT.flush essentially. need to fake it? | ||
jnthn | Need to just ignore it rather than error on things that it doesn't make sense to flush | 14:17 | |
ugexe | try { $out.flush } or $out.?flush ? (in case i see this pattern in modules somewhere) | 14:19 | |
jnthn | Oh, I meant ignore it down at VM level | ||
That'll be much cheaper | 14:20 | ||
dogbert17 | eveo: considering you recent IO++ work, do you think that doc issue github.com/perl6/doc/issues/931 can be closed? | 15:01 | |
eveo | well, the $COLON$COLON URL no longer works. | 15:03 | |
I thought we had .htaccess stuff to make old colon URLs work | |||
dogbert17 | which link on that page are you referring to? | 15:06 | |
eveo | dogbert17: closed the issue | ||
dogbert17 | eveo++ | 15:07 | |
eveo | dogbert17: the OP in the issue links to docs.perl6.org/type/IO$COLON$COLONPath and docs.perl6.org/type/IO$COLON$COLON...$COLONUnix | ||
Both of those are 404s, because of the $COLON crap. But are fine if you change them to proper colons | |||
dogbert17 | only 262 issues left ... | ||
eveo | Looks like this needs updating: github.com/perl6/doc/blob/master/h...ess#L9-L18 | 15:08 | |
To make these links work | |||
dogbert17 wonders if we're still generating these erroneous links | 15:12 | ||
Geth | rakudo/nom: 74242e5532 | (Elizabeth Mattijsen)++ | src/core/stubs.pm Make &DYNAMIC about 1% faster Hardly measurable, but important as this is a hot code path in looking up dynamic variables, such as $*OUT and %*ENV. Other things I tried but that didn't give a positive effect: - replace nqp::replace by nqp::concat(nqp::substr,nqp::substr) - replace assign to native str by binding - use "str $name" in signature For now, nqp::getlexreldyn is blocking &DYNAMIC from being JITted. |
||
eveo | Filed as github.com/perl6/doc/issues/1382 | 15:14 | |
Geth | rakudo/nom: 98b9eae9e6 | (Jonathan Worthington)++ | src/vm/moar/Perl6/Ops.nqp Comment cleanup; ven++. |
15:15 | |
rakudo/nom: 9b0b9effe5 | (Jonathan Worthington)++ | 3 files Change the way we code-gen simple for loops. For a for loop with a single argument and no phasers, we can generate inline code that calls .pull-one and invokes the block. This will turn megamorphic callsites inside of sink-all into typically monomorphic ones, which should enable the specializer - at least, once it has had some tweaks - to do a better job. |
|||
rakudo/nom: 6f9326877c | (Jonathan Worthington)++ | src/Perl6/Optimizer.nqp Re-instate for range optimization. |
15:22 | ||
lizmat | jnthn: spectests clean on MacOS | 15:31 | |
afk& | |||
dogbert17 | m: dd [[1,2,3],[4,5]]>>.elems # is this a bad 'is nodal' examples? | 15:34 | |
camelia | (3, 2) | ||
dogbert17 | m: dd [[1,2,[3, 3]],[4,[5, 6, 7]]]>>.elems # would this be better? | 15:35 | |
camelia | (3, 2) | ||
dogbert17 | this is github.com/perl6/doc/issues/966 | ||
eveo | m: dd ("a", "b", ("c", "d", "e"), [<c d e>])».elems | 15:37 | |
camelia | (1, 1, 3, 3) | ||
eveo | m: dd ("a", "b", ("c", "d", "e"), $[<c d e>])».elems | ||
camelia | (1, 1, 3, 3) | ||
eveo | m: dd ("a", "b", ("c", "d", "e"), [ "g", "h", [<c d e>]])».elems | 15:38 | |
camelia | (1, 1, 3, 3) | ||
eveo | m: dd ("a", "b", ("c", "d", "e", [<c d e>]), [ "g", "h", [<c d e>]])».elems | ||
camelia | (1, 1, 4, 3) | ||
dogbert17 | eveo: which one of these should I pick? | 15:39 | |
all of them? | |||
eveo | None, probably. 1 sec, I had a good one somewhere | ||
m: say (^3, [^4], '5')».Numeric | 15:40 | ||
camelia | ((0 1 2) [0 1 2 3] 5) | ||
eveo | There we go | 15:41 | |
dogbert17 | taken, thx | ||
eveo | m: say (^3, [^4], '5').map: *.Numeric | ||
camelia | (3 4 5) | ||
eveo | ^ with that for contrast | ||
dogbert17 | contrast is good :) | ||
eveo | or even more clearer | 15:42 | |
m: say ((1.0, "2", 3e0), [^4], '5')».Int | |||
camelia | ((1 2 3) [0 1 2 3] 5) | ||
eveo | To show that it actualy discends into iterables instead of just ignoring them | 15:43 | |
dogbert17 | so >> is not nodal? | 15:45 | |
according to current docs we have 'is nodal: Mark a method for hyperoperators as to be avoided for descending into.' | |||
eveo | *avoided*? I thought it was the reverse | 15:46 | |
dogbert17 | me too :) | ||
eveo | >> (and ») are the hyper operators; .Int and .Numeric above are the methods that are or aren't nodal | ||
dogbert17 | ah | 15:47 | |
eveo | s: &deepmap | ||
SourceBaby | eveo, Sauce is at github.com/rakudo/rakudo/blob/9b0b...ps.pm#L646 | ||
eveo | s: &HYPER | ||
SourceBaby | eveo, Sauce is at github.com/rakudo/rakudo/blob/9b0b...ps.pm#L529 | ||
eveo | m: 42.^lookup('Int').can('nodal').say | 15:48 | |
camelia | () | ||
eveo | Ok, yeah, nodal means not descend | ||
dogbert17 | so which examples should we settle for then | 15:50 | |
eveo | m: .^lookup('Int') does role { method nodal {} } for Str, Int, Range, Array, List, Rat, Num; say ((1.0, "2", 3e0), [^4], '5')».Int | ||
camelia | (3 4 5) | ||
eveo | Same as before | ||
Except just say that .Int isn't nodal and then find some nodal method and use it to show that it's nodal | 15:51 | ||
m: say ((1.0, "2", 3e0), [^4], '5')».elems | |||
camelia | (3 4 1) | ||
eveo | there. Compare Int vs elems and say elems is nodal, but Int ain't | ||
m: say ((1.0, "2", 3e0), [^4], '5')».Int | |||
camelia | ((1 2 3) [0 1 2 3] 5) | ||
dogbert17 | eveo++, it will be done | 15:52 | |
eveo | dogbert17++ doing it | ||
dogbert17 | eveo: here's the first attempt at 'is nodal', now incorporating [Coke]'s more readable description: gist.github.com/dogbert17/a0a3057f...4367afcde2 | 16:17 | |
dogbert17 still thinks it's a bit iffy | |||
[Coke] | dogbert17: wait, what did I do? | 17:04 | |
travis-ci | Rakudo build failed. Jonathan Worthington 'Change the way we code-gen simple for loops. | 17:35 | |
travis-ci.org/rakudo/rakudo/builds/243306922 github.com/rakudo/rakudo/compare/7...0b9effe5fe | |||
buggable | [travis build above] ☠ Did not recognize some failures. Check results manually. | ||
eveo | github connect issue "error: RPC failed; curl 56 SSLRead() return error -36" | 17:37 | |
jnthn | I promise I didn't break github :P | 17:40 | |
eveo | :) | ||
[Coke] | wonder if that's the cause of my Bailador issues in toolchain. | ||
dogbert17 | [Coke]: you suggested another text in the issue | 17:50 | |
jnthn | ugexe: MoarVM HEAD has Windows prompt fix | 17:55 | |
[Coke] | dogbert17: ah, cool. | 18:00 | |
also asking in toolchain, but: I can't install Bailador with zef. it grabs all the deps, and then just exits. | 18:03 | ||
I have zef 0.1.17 | 18:04 | ||
(using rakudobrew, just did a self-upgrade there and a rehash) | 18:05 | ||
eveo | [Coke]: what's perl6 -v ? | 18:06 | |
[Coke] | This is Rakudo version 2017.05-443-g7e8bac9bc built on MoarVM version 2017.05-85-g21ee1a50 | 18:07 | |
eveo | m: $*PERL.compiler.version.say | ||
camelia | v2017.05.449.g.6.f.9326877 | ||
[Coke] | so, pretty close. | ||
eveo | c: e4468c6 $*PERL.compiler.version.say | ||
committable6 | eveo, ¦e4468c6: «v2017.05.440.ge.4468.c.610» | ||
eveo | Yeah, you should already have the fix for yesterday's issues... | ||
eveo builds and tests | 18:09 | ||
Well, I see it successfully toasted in toaster.perl6.party/module?module=...9-g14d7571 | 18:14 | ||
[Coke]: ===> Install [OK] for Bailador:ver('0.0.4') | 18:15 | ||
On the same commit you're using. | 18:16 | ||
I mean ^ that's me just now trying it. And it also toasted fine. | |||
[Coke] | I can install panda. installing panda and using that to install Bailador. | ||
eveo | :S | ||
Weird | |||
[Coke] | eveo: did you get the cpan version or the github version, OOC? | 18:17 | |
might be able to tell after the fact by ls ~/.zef/tmp/Bail* if it's .git or .tar.gz | |||
eveo | [Coke]: no idea. here's full output: gist.github.com/zoffixznet/795d8ed...54e534fc1d | 18:18 | |
It sas ===> Fetching [OK]: Bailador:ver('0.0.4') to /home/cpan/.zef/tmp/Bailador-0.0.4.tar.gz | |||
So I guess cpan | |||
[Coke] | right. | ||
eveo does the version bumps to get latest and greast moaaar | 18:19 | ||
[Coke] | panda missed that bailador required YAMLish | 18:21 | |
eveo: my version of that gist basically ends after the last Fetching. | 18:24 | ||
no indication of any error, exitcode=0 | |||
I was able to get bailador installed with panda, back to $dayjob. :| | 18:25 | ||
eveo | ZOFVM: Files=1254, Tests=139491, 113 wallclock secs (19.55 usr 3.19 sys + 2198.82 cusr 168.46 csys = 2390.02 CPU) | 18:29 | |
Geth | nqp: 06586046cb | (Zoffix Znet)++ | tools/build/MOAR_REVISION Bump MoarVM MoarVM bump brought commits: github.com/MoarVM/MoarVM/compare/2...0-g5ea6aaa 5ea6aaa Don't barf on things we can't flush on Windows. 1f5be6a Make find_separator only look at the last chars. ... (13 more lines) |
||
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...0-g5ea6aaa | |||
rakudo/nom: e9b30933b4 | (Zoffix Znet)++ | tools/build/NQP_REVISION Bump NQP NQP bump brought commits: github.com/perl6/nqp/compare/2017....1-g0658604 0658604 Bump MoarVM be2279d [js] Serialize low level arrays using the REPR ... (24 more lines) |
18:30 | ||
rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....1-g0658604 23d6d42d91 | (Elizabeth Mattijsen)++ | src/core/Mu.pm So, in the REPL, you can now do: > 42.WHY No documentation available for type 'Int' Perhaps it can be found at docs.perl6.org/type/Int Meanwhile, the value returned is still Nil for every other purpose. |
|||
eveo | Time for another toaster run. | ||
"*** Error in `/home/cpan/toaster/build/nom/install/bin/moar': free(): invalid pointer: 0x000000000416b4c0 *** | 18:51 | ||
Crawled among the toast output :) | |||
timotimo | oh, good one | 19:11 | |
eveo: can you isolate that explosion? | |||
eveo | timotimo: don't think so. I don't even know which module caused it | 19:12 | |
timotimo | OK | 19:17 | |
AlexDaniel | timotimo: if you want to investigate into a module explosion that has a reliable way to reproduce it, and which actually affects people… see rt.perl.org/Public/Bug/Display.html?id=131003 | 19:29 | |
timotimo | oh lord, gumbo | 19:40 | |
i'm not actually convinced moar is to blame for it exploding | 19:42 | ||
but now i can try it under rr and reverse-step | |||
eveo | New toast run: toaster.perl6.party/ 11 burns 13 unsuccs | 19:47 | |
Haven't looked at whether any of them are false negatives | |||
eveo relocates | |||
timotimo | anyway, i'm building a fresh rakudo and see that i can install gumbo | 19:50 | |
timotimo also reduces the nursery size | 20:03 | ||
eveo | New blog post: "Perl 6 Release Quality Assurance: Full Ecosystem Toaster": perl6.party/post/Perl-6-Release-Qu...em-Toaster | 22:06 | |
samcv | eveo++ | 22:12 | |
jnthn | eveo: I'm wondering if that crash you saw came from File::Temp; I see a few things are burned because of it | 22:21 | |
Will see if I can reproduce that tomorrow | |||
Curiously enough, File::Temp itself installed fine | |||
Ominously, the failure is in a test called gc_stress.t :P | |||
MasterDuke | eveo++ nice post | 22:25 | |
jnthn | Nice post and even nicer tool for helping us ship better releases :) | 22:26 | |
MasterDuke | jnthn: btw, do you have any suggestions for github.com/rakudo/rakudo/pull/1098 ? | 22:27 | |
jnthn | Well, it's just one of the classic things that happens because we're implementing Perl 6 in Perl 6 :) | 22:30 | |
Maybe a non-awful general solution would be to add some kind of parameter trait | 22:32 | ||
will bind-error { ... } | |||
And then X::TypeCheck::Binding::Parameter can invoke it to get a better message | 22:33 | ||
MasterDuke | to Hash's key and value? | ||
jnthn | Yeah | ||
Note that it's a trait though, not a runtime closure | |||
So we'll have to pass in something to the block (perhaps the exception object itself) | 22:34 | ||
That'd give us a general solution to this kind of problem | |||
MasterDuke | little bit more involved than the change in that PR... :) | 22:35 | |
think i should just close it until the general solution exists? which maybe i could do, but can't make promises | 22:36 | ||
lizmat | eveo++ | ||
eveo: s/similarly elimited/similarly eliminated/ ? | 22:37 | ||
MasterDuke | on a different topic, is anybody going to YAPC::NA 2017? i didn't manage to get $work to pay for it, but they might let me count the time as work time. or if not maybe i'll just come down for a dinner if anything like that is going on | 22:42 | |
lizmat | MasterDuke: sadly, won't be able to make it :-( | 22:43 | |
jnthn | MasterDuke: Yeah, I'd rather we solve the general case | ||
MasterDuke | jnthn: ok, i'll close and include your suggestion in a comment | 22:45 | |
lizmat: too bad, know if any of the P6 core devs are gonna make it? | 22:46 | ||
jnthn | lizmat: 23d6d42d91 is a great idea but does fall into the "role is not a closure" trap | ||
lizmat | MasterDuke: TimToady will be there | 22:47 | |
jnthn | (Though probably will get away with it too) | ||
lizmat | argh, I see your point | ||
jnthn: it does seem to work ? | 22:48 | ||
MasterDuke | lizmat: nice, now to figure out who i lent my Programming Perl to... and can i get it back before then... | ||
jnthn | Yeah, these things "work" because the scope is captured by the latest outer invocation | ||
MasterDuke | should probably ask in #perl6 also | 22:49 | |
jnthn | Which basically means they work until you have two threads or recursion or something :) | ||
lizmat | jnthn: do you have any suggestion to do this properly? | 22:50 | |
having .WHY just return a Str by default breaks just about everything :-( | |||
jnthn | lizmat: Parametric role | 22:51 | |
my role Suggestion[$type] { method ... }; Nil but Suggestion[$type] or so | |||
lizmat | ah, duh | ||
Geth | rakudo/nom: cc4d9091d7 | (Elizabeth Mattijsen)++ | src/core/Mu.pm Use a proper typed role for Mu.WHY jnthn++ See irclog.perlgeek.de/perl6-dev/2017-...i_14739446 |
23:02 | |
lizmat | jnthn: better? ^^^ | ||
apart from the commit message: s/typed/parametric/ :-( | 23:03 | ||
jnthn | Yeah, that'll do it :) | 23:04 | |
lizmat | ok, then that concludes my hacking for today | ||
good night, #perl6-dev! | |||
japhb | g'night, lizmat! | 23:05 | |
jnthn | 'night, lizmat | 23:08 | |
Think I'll go rest up too...hoping to get some more perf improvements in tomorrow :) | 23:12 | ||
o/ | |||
japhb | 'night jnthn! | 23:15 | |
So happy to see perf improvements. :-) |