Zoffix_ | huggable, IO kills | 01:04 | |
huggable | Zoffix_, [XXXX] (doc test suite[fixed]; Text::CSV[fixed]; XML.pm6[PR to fix github.com/supernovus/exemel/pull/43 ], Zef [fixed in github.com/ugexe/zef/commit/e2deb25 ]) | ||
Zoffix_ | huggable, IO kills :is: [XXXXX] (doc test suite[fixed]; Text::CSV[fixed]; Zef [fixed]; XML.pm6[PR to fix github.com/supernovus/exemel/pull/43 ], Crust.pm6[ PR to fix github.com/tokuhirom/p6-Crust/pull/89 ]) | ||
huggable | Zoffix_, Added IO kills as [XXXXX] (doc test suite[fixed]; Text::CSV[fixed]; Zef [fixed]; XML.pm6[PR to fix github.com/supernovus/exemel/pull/43 ], Crust.pm6[ PR to fix github.com/tokuhirom/p6-Crust/pull/89 ]) | ||
Zoffix_ | Looks like I should switch to a gist :/ | 01:05 | |
There's another way to describe the breakage: this software was using entirely untested features. | 01:06 | ||
And on that happy note.... | |||
Zoffix_ drops to bed | |||
ZofBot, night! | |||
ZofBot | Zoffix_, That is, you're specifying the abstract operation, which may be used by various shallow operators | ||
Zoffix_ & | |||
timotimo | gnite Zoffix_! | 01:17 | |
i'll try sleep, too | |||
moritz: i have a reason to look at perl6-all-modules again; feel like updating it? :) | 01:18 | ||
ugexe | github.com/CurtTilmes/perl6-dbi-async this is kinda interesting, although should maybe use a different name | 02:51 | |
Ulti | samcv out of curiosity why are you using a different string match for a given OS, is there a tangible difference in perf given the platform? | 06:38 | |
samcv | there is a bit of difference. and it's because linux has glibc and freebsd's libc has another | 06:39 | |
and the freebsd one is portable and i got it working on windows and macos | |||
Ulti | oh thats interesting, I would have guessed they'd be the same | 06:41 | |
samcv | and it's only used when the strings are either both 8bit or both 32bit string representations | 06:46 | |
but that is most of them | |||
eventually we may be able to adapt the FreeBSD code to also skip x number of bytes because 32bit strings have 4 bytes, so it searches the same on 8 bit as 32bit. but can be optimized more if it's able to skip more often | 06:47 | ||
moritz | timotimo: sure, will do | ||
samcv | instead of each byte considered seperate | ||
moritz | I did want to automate that | 06:48 | |
(updating perl6-all-modules) | |||
Ulti | samcv is this all low level or accessible higher up to swap out? | 06:49 | |
samcv | it's all low level | ||
the nqp::index op is what has been changed | |||
Ulti | I've been considering implementing in a module bitap but for buf so I can do DNA/RNA searches efficiently since they have really small alphabets where each character can be 2bits | ||
samcv | github.com/MoarVM/MoarVM/commit/e8...0240272851 if you want to see the merge that pulled it all in. i've added a fair number of comments if you scroll past the bsd source file (though that's really interesting too) | ||
hm | 06:50 | ||
Ulti | cool thanks | ||
samcv | you should look then | ||
but memmem is basically searches for memory inside a memory | |||
which is just the same as string search, just. i mean that's what it really is anyway | |||
Ulti | yeah | 06:51 | |
samcv | and our strings aren't null terminated and are 32bit or 8bit | ||
also github.com/MoarVM/MoarVM/pull/574 this may be interesting. and i have a link to the PDF of the paper that describes freebsd's algorithm (which also compares it to boyer-moore and also kruth-morris-pratt (glibc uses this) | 06:52 | ||
Ulti | so what was there before you made your changes? | 06:57 | |
samcv | just brute force search | 06:58 | |
which grabs graphemes out of the each string and compares them | |||
moritz | and I assume that was due to our interesting string format? | ||
samcv | Ulti, github.com/MoarVM/MoarVM/blob/mast...ops.c#L265 | 06:59 | |
this is the fallback still in case the strings are different bit widths | 07:00 | ||
i still haven't been able to trigger this github.com/MoarVM/MoarVM/blob/mast...ops.c#L240 at least doesn't show it on coverage reports. even when i forced both strings to 32bit by converting them in the function beforehand | 07:03 | ||
if anybody can help me with that, it would be cool | |||
github.com/perl6/nqp/blob/master/t...ndex.t#L10 | |||
the comments big endian and little endian there are reversed by accident but both of them (i'm pretty certain) contain 4 bytes of null in their 32bit string represetations | 07:04 | ||
depending on the endianess | |||
camelia, gist.githubusercontent.com/samcv/a.../endian.p6 | 07:06 | ||
evalable6, gist.githubusercontent.com/samcv/a.../endian.p6 | |||
evalable6 | samcv, Successfully fetched the code from the provided URL. | ||
1048576 base 10 Padding 11 extra 0's 11 21 Big: (00000000 00010000 00000000 00000000) Little: (00000000 00000000 00010000 00000000) |
|||
samcv | if anybody can confirm if that is correct that'd be great | 07:08 | |
since that's the script i used to decide which codepoints to use in the test | 07:09 | ||
lizmat | good *, #perl6-dev! | 07:23 | |
samcv | hi lizmat :-) | ||
lizmat | Files=1189, Tests=56681, 201 wallclock secs (12.08 usr 4.86 sys + 1195.44 cusr 116.20 csys = 1328.58 CPU) | 07:24 | |
samcv | hey lizmat :) | 07:25 | |
oh i said that already. i think i'm tired | |||
lizmat | samcv o/ | ||
yeah, it's way past midnight for you, no ? | |||
samcv | 25 mins past | ||
i got travis pushing rakudo builds now | |||
pushing appimages | |||
lizmat | :-) | ||
samcv | github.com/samcv/rakudo-appimage/tree/gh-pages all these 4 were commited by travis | 07:26 | |
lizmat | cool | ||
samcv | got a 4 matrix heh | ||
so hopefully we will be able to have nightly appimages or maybe other things. now that i've figured out how the fuck to get travis to behave | |||
lizmat | Zoffix_: MacOs apparently fails S16-filehandles/filetest.t test 48: .z can be called on directories | ||
Ulti | samcv++ from all the people who do lots of string match :D | 08:00 | |
samcv | :D | 08:02 | |
Ulti, i'll probably convert 8 bit needles to 32bit if the haystack is 32bit and the haystack is long enough and needles not too long | 08:03 | ||
so it can use the optimized not the brute force | |||
but still very big improvement so far. but i'm not sure what the next most used function is to speed improve | |||
for string search that is | |||
Ulti | I guess one thing is for the code to be portable, but SSE4 instructions for strings would be a cool thing | 08:04 | |
samcv | yeah. qt has that | ||
Ulti | it amazes me how few if any string libs actually use them despire it being a huge boost | ||
samcv | wait maybe. idk | ||
they have optimized UTF-8 decoding though | |||
i was eying that a month ago | |||
but it seems pretty integrated | 08:05 | ||
Ulti | its kind of mental strings are this complicated | ||
samcv | what? | ||
also we may want to use the freebsd memmem on linux for some things, i'm not sure yet though. if performance shows it's faster. because it might be faster at searching for a 32bit single character in a 32bit string because it has a fourbyte_memmem function | 08:07 | ||
github.com/MoarVM/MoarVM/blob/mast...mmem.c#L46 | |||
chansen_ | www-igm.univ-mlv.fr/~lecroq/string/...CTION00130 | 08:10 | |
Works well and memcmp() is usally very optimized in any libc | 08:11 | ||
samcv | hmm maybe that can be altered to take advantage of knowing 4 byte width per char not 1 byte | 08:18 | |
bookmarking | |||
but what license is that code under | |||
chansen_ | It's a book, did you see the index? www-igm.univ-mlv.fr/~lecroq/string/index.html | 08:21 | |
samcv | nope not yet | 08:23 | |
Zoffix_ | lizmat, what does perl6 -e 'dd ".".IO.z; dd ".".IO.s' give on MacOS? | 09:13 | |
samcv | Zoffix_, where do i edit rakudo's source to have it change directory before running a script | 09:14 | |
based on an ENV var | |||
for my appimages | |||
Zoffix_ | samcv, anywhere, I guess. | 09:15 | |
samcv, the sub for changing process's chdir is here github.com/rakudo/rakudo/blob/nom/...#L149-L150 | |||
samcv | uh. where do we process command line arguments | ||
i'd like to hack that | |||
Zoffix_ | Oh, no idea. | ||
samcv | i have opened the source file at least once months ago | 09:16 | |
Zoffix_ | Somewhere in github.com/rakudo/rakudo/blob/nom/...mpiler.nqp | ||
samcv | oh yes | ||
though i hope if i change directory there it doesn't screw up things | 09:17 | ||
like if i chdir inside the perl6 shell script before launching all the relative links break | |||
Zoffix_, i tried doing -M module_that_chdirs | 09:28 | ||
works on my normal perl 6 but with the appimage it enters a dependency loop | |||
Zoffix_ | samcv, chdirs with what tho? | 09:29 | |
samcv | probably due to relative paths or something weird | ||
chdir's to the directory the appimage was started from | |||
Zoffix_ | What are you calling to chdir? | ||
samcv | well it doesn't matter what is in the module. it can be empty | ||
but it fails in the appimage because the appimage uses relative paths or something | |||
-I lib and then `use foo:bar` works though. but module PRE loading doesn't work | 09:30 | ||
Zoffix_ | It's curious how common misused of IO routines is in the ecosystem... I hope improved docs will help. | 09:38 | |
"return False unless $pid-file.IO.abspath.IO.e;" in UNIX::Daemonize | |||
samcv | it can just be $pid-file.IO.e right? | 09:40 | |
so is abspath getting deprecated with a warning? cause it's used a lot of places | |||
Zoffix_ | Another one in OpenSSL: "$*SPEC.catfile( IO::Path.new($*PROGRAM.dirname).absolute, "cacert.pem" )" | 09:41 | |
m: say WHAT $*PROGRAM.dirname | |||
camelia | (Str) | ||
Zoffix_ | m: say $*PROGRAM.dirname | ||
camelia | /tmp | ||
Zoffix_ | samcv, it's already gone. | ||
samcv | oh | 09:42 | |
m: say ".".IO.abspath | |||
camelia | No such method 'abspath' for invocant of type 'IO::Path' in block <unit> at <tmp> line 1 |
||
samcv | m: say ".".IO.absolute | ||
camelia | /home/camelia | ||
Zoffix_ | m: say $*PROGRAM.parent.child('cacert.pem') | 09:43 | |
camelia | "/tmp/cacert.pem".IO | ||
Zoffix_ | Hm. I think I will steal `.sibling` from Mojolicious | ||
samcv | m: say '.'.IO.Str.IO.Str.IO.absolute.Str | ||
camelia | /home/camelia | ||
Zoffix_ | Details on what I wanna steal: metacpan.org/pod/Mojo::File#sibling | 09:47 | |
samcv | m: my $str = ".IO.Str.IO.Str.IO.absolute.Str"; ā'.'{$str x 10000}ā.EVAL.say | ||
camelia | (timeout) | ||
Zoffix_ | 0.o what are you doing... | ||
samcv | m: my $str = ".IO.Str.IO.Str.IO.absolute.Str"; ā'.'{$str x 1000}ā.EVAL.say | 09:49 | |
camelia | /home/camelia | ||
samcv | only what must be done | ||
Zoffix_ | .Str.IO is wrong | ||
samcv | it works though? | 09:50 | |
can't you call .IO on a string? | |||
Zoffix_ | Doesn't | ||
samcv | i call IO on all the strings which have filenames or directories in them i want to do operations | ||
Zoffix_ | m: my $orig = '.'.IO; $orig.dir.say; chdir '/tmp'; $orig.Str.IO.dir.say | ||
camelia | (".cpanm".IO ".local".IO ".npm".IO ".perl6".IO ".perlbrew".IO ".rcc".IO ".ssh".IO "Perlito".IO "evalbot".IO "log".IO "nqp-js".IO "p1".IO "p2".IO "perl5".IO "std".IO ".bash_history".IO ".bashrc".IO "mbox".IO ".lesshst".IO "evalbot.log".IO ".cpan".IO "daleā¦ | ||
Zoffix_ | m: my $orig = '.'.IO; $orig.dir[0].say; chdir '/tmp'; $orig.Str.IO.dir[0].say | ||
camelia | ".cpanm".IO "y2yamldata-M2wvA1".IO |
||
Zoffix_ | m: my $orig = '.'.IO; $orig.dir[0].say; chdir '/tmp'; $orig.absolute.IO.dir[0].say | ||
camelia | ".cpanm".IO "/home/camelia/.cpanm".IO |
||
samcv | m: "blah".^methods.pick.say | ||
camelia | comb | ||
Zoffix_ | samcv, .Str.IO on an IO::Path object is wrong, because .Str doesn't take $!CWD into account. The proper way to stringify IO::Path while preserving path correctness is with .absolute or .relative | 09:51 | |
m: my $orig = '.'.IO; $orig.dir[0].say; chdir '/tmp'; $orig.relative.IO.dir[0].say | |||
camelia | ".cpanm".IO "../home/camelia/.cpanm".IO |
||
samcv | ok that is wrong | ||
yeah | 09:52 | ||
agree | |||
Zoffix_ | "$remote = $remoteio.abspath() ~ '/' ~ $path.IO.basename();" another one heh | 10:00 | |
samcv | my $p = Promise.in(1); sub rec (Mu $b) { my $m; my $e = False; repeat while $e { $m = $b.^methods.pick.gist; try { "$b.$m".EVAL }; CATCH {$e = True; }; }; return !$p ?? rec("$b.$m") !! "$b.$m"; }; rec("'hi'").say | 10:14 | |
m: my $p = Promise.in(1); sub rec (Mu $b) { my $m; my $e = False; repeat while $e { $m = $b.^methods.pick.gist; try { "$b.$m".EVAL }; CATCH {$e = True; }; }; return !$p ?? rec("$b.$m") !! "$b.$m"; }; rec("'hi'").say | |||
camelia | 'hi'.indent.encode.trim.substr-eq.Str.chars.Stringy.parse-names.parse-base.indices.BUILD.Str.chop.NFC.match.ords.contains.contains.samespace.encode.match.parse-base.samecase.tc.trim.Stringy.uc.Bool.Int.codes.lc.starts-with.ords.samemark.subst-mutate.codeā¦ | ||
samcv | heh | ||
m: my $p = Promise.in(1); sub rec (Mu $b) { my $m; my $e = False; repeat while $e { $m = $b.^methods.pick.gist; try { "$b.$m".EVAL }; CATCH {$e = True; }; }; return !$p ?? rec("$b.$m") !! "$b.$m"; }; rec("'hi'".IO).say | |||
camelia | 'hi'.x.uc.subst-mutate.chars.words.ords.rindex.chars.DUMP.lc.samespace.Num.samespace.uc.trim-leading.Num.BUILD.index.WHY.index.NFD.gist.DUMP.ord.chars.BUILD.lc.ord.word-by-word.trim-trailing.contains.NFC.subst.tclc.subst.trans.parse-base.samecase.Int.triā¦ | ||
samcv | m: my $p = Promise.in(1); sub rec (Mu $b) { my $m; my $e = False; repeat while $e { $m = $b.^methods.pick.gist; try { "$b.$m".EVAL }; CATCH {$e = True; }; }; return !$p ?? rec("$b.$m") !! "$b.$m"; }; rec("'hi'.IO").say | ||
camelia | 'hi'.IO.words.Str.samecase.words.chomp.samemark.gist.WHICH.lc.gist.Str.substr-eq.WHICH.Str.contains.uc.index.contains.Int.match.DUMP.contains.trim.chomp.comb.flip.ord.flip.chomp.trim-leading.starts-with.ACCEPTS.chop.wordcase.index.Num.tclc.indent.subst.Nā¦ | ||
samcv | m: my $p = Promise.in(1); sub rec (Mu $b) { my $m; my $e = False; repeat while $e { $m = $b.^methods.pick.gist; try { "$b.$m".EVAL }; CATCH {$e = True; }; }; return !$p ?? rec("$b.$m") !! "$b.$m"; }; rec("'hi'.IO").say | 10:15 | |
camelia | 'hi'.IO.fc.substr-eq.subst-mutate.NFKD.comb.ends-with.trim-leading.flip.comb.gist.NFD.BUILD.samecase.Numeric.Int.rindex.chars.encode.Str.starts-with.NFC.chomp.NFKC.tc.DUMP.ords.index.trim-trailing.contains.pred.subst.ord.Bool.samemark.Int.words.Numeric.sā¦ | ||
samcv | only does methods that eval shows don't throw. | ||
m: my $p = Promise.in(1); sub rec (Mu $b) { my $m; my $e = False; repeat while $e { $m = $b.^methods.pick.gist; try { "$b.$m".EVAL }; CATCH {$e = True; }; }; return !$p ?? rec("$b.$m") !! "$b.$m"; }; rec("Promise.new").say | 10:16 | ||
camelia | Promise.new.trans.word-by-word.ACCEPTS.lines.tclc.indices.ord.indices.subst-mutate.codes.tclc.NFKD.WHY.subst-mutate.starts-with.NFKD.perl.ords.flip.Stringy.substr-eq.wordcase.substr-eq.trim-leading.tclc.rindex.ord.starts-with.word-by-word.chomp.words.preā¦ | ||
samcv | m: my $p = Promise.in(1); sub rec (Mu $b) { my $m; my $e = False; repeat while $e { $m = $b.^methods.pick.gist; try { "$b.$m".EVAL }; CATCH {$e = True; }; }; return !$p ?? rec("$b.$m") !! "$b.$m"; }; rec("Promise.new").EVAL.say | ||
camelia | No such method 'parse-base' for invocant of type 'Promise' in block <unit> at EVAL_67 line 1 in block <unit> at <tmp> line 1 |
||
samcv | oh. i guess it doesn't work that well | ||
Zoffix_ | <timotimo> moritz: i have a reason to look at perl6-all-modules again; feel like updating it? :) | 10:20 | |
timotimo, FWIW, I sent PRs for the .abspath that were in the current perl6-all-modules: gist.github.com/zoffixznet/0ea1f4d...3f8dd11cc1 | |||
huggable, IO kills | |||
huggable | Zoffix_, [XXXXX XXXXX XXXXX XXX]: See gist.github.com/zoffixznet/0ea1f4d...3f8dd11cc1 | ||
timotimo | Zoffix_: sha1-native already has my pullrequest merged :) | 10:42 | |
Zoffix_ | timotimo, I see neither commits nor other PRs: github.com/bduggan/p6-digest-sha1-...its/master | 10:43 | |
lizmat clickbaits p6weekly.wordpress.com/2017/04/10/...15-kaboom/ | 10:45 | ||
oops, wrong chan | |||
Zoffix_ looks up why the upcoming Good Friday is Good.... | 10:47 | ||
Creepy :| | |||
At least we get a day off up in Canukistan \o/ | |||
samcv | night everybody o/ | ||
Zoffix_ | night | ||
samcv | also thanks Zoffix_ for sending PR to the modules :) very awesome | 10:48 | |
'break it you fix it'? | |||
heheh | |||
lizmat just spent a day trying to optimize creating a sorted list of keys of a hash | 10:49 | ||
turns out, just creating a list_s and sorting that, is the fastest way to do this | |||
and not an approach with a binary search, building the list on the fly from the iterator | 10:50 | ||
*sigh* | |||
gist.github.com/lizmat/5ce4c4963e8...0ff932611c # for those interested | 10:53 | ||
samcv | lizmat, also is there a reason for nqp::stmts, when i was coding nqp it didn't change execution time using stmts versu just (exp 1; exp2; exp3) | 10:54 | |
when compiled | |||
argh it's way too late | |||
lizmat | samcv: I try to mix nqp-like code and HLL code as little as possible | 10:55 | |
samcv | see you all tomorrow | ||
lizmat | good night! | ||
samcv | kk :) | ||
lizmat | 4am is a good time to go and get some rest! | ||
samcv | it was a good time 2 hours ago | ||
and now it's still a good time | |||
but not a better time | |||
o/ | |||
lizmat | o/ | ||
lizmat will be mostly away on Wed / Thu and possibly Fri, so stops doing commits now as to not more problems for the release | 11:00 | ||
*create | |||
timotimo | Zoffix_: damn, i looked at closed pullrequests and there's actually only one "use abspath" | ||
i just got out of bed, so that's probably why i derped that | 11:01 | ||
looks like i made the change and somehow didn't pullrequest it? | |||
Zoffix_ | lizmat, what does perl6 -e 'dd ".".IO.z; dd ".".IO.s' give on MacOS? | 11:02 | |
Zoffix | .tell lizmat FWIW, I'm delaying the release by 1.5-2 days to cram all the IO stuff into it. You said .z test fails on MacOS... it's testing for Bool; what does it get on MacOS? | 11:21 | |
yoleaux | Zoffix: I'll pass your message to lizmat. | ||
Zoffix | good grief... | 12:15 | |
I'm using Molases ISP | 12:16 | ||
timotimo | :< | ||
Zoffix | ehehe. I found a way to test out code on mac. | 12:40 | |
It's very slow though. Takes 8.5 minutes to do 1 test :) | |||
.tell lizmat managed to run .z on Mac. Seems to work fine. Is it possible you ran the test without pulling and building HEAD for rakudo? travis-ci.org/zoffixznet/mactest/jobs/220938858 | 12:41 | ||
yoleaux | Zoffix: I'll pass your message to lizmat. | ||
timotimo | oh yeah, travis :\ | ||
Zoffix | NeuralAnomaly: status | 13:00 | |
NeuralAnomaly | Zoffix, [ā] Next release will be in 3 days and 15 hours. Since last release, there are 24 new still-open tickets (14 unreviewed and 0 blockers) and 222 unreviewed commits. See perl6.fail/release/stats for details | ||
Zoffix | lotsa commits :o | ||
m: my int @b = 1, 2, 3, 4, 5; say @b[-2 ^ 0]; | 13:02 | ||
camelia | one(4, 1) | ||
Zoffix | m: my int @b = 1, 2, 3, 4, 5; say @b[-10 ^ 0]; | ||
camelia | MVMArray: Index out of bounds in block <unit> at <tmp> line 1 |
||
Zoffix | neat :D | ||
timotimo | oh, that's fun | 13:04 | |
because it's checking for bounds, and *one* of those satisfies the bounds | |||
that check needs to happen after the junction fans out | |||
timotimo BBIAB | 13:05 | ||
Zoffix | m: my int @b = 1, 2, 3, 4, 5; say @b[-2 ^ -1]; | ||
camelia | one(4, 5) | ||
lizmat | . | 13:09 | |
yoleaux | 11:21Z <Zoffix> lizmat: FWIW, I'm delaying the release by 1.5-2 days to cram all the IO stuff into it. You said .z test fails on MacOS... it's testing for Bool; what does it get on MacOS? | ||
12:41Z <Zoffix> lizmat: managed to run .z on Mac. Seems to work fine. Is it possible you ran the test without pulling and building HEAD for rakudo? travis-ci.org/zoffixznet/mactest/jobs/220938858 | |||
lizmat | Zoffix: indeed, cannot reproduce it now, so sorry for the false alarm | ||
afk again& | |||
Zoffix | \o/ | ||
Hmmm | 14:09 | ||
<ZofBot> Zoffix, The "subparse" method does not add anchors, and will match substrings against the rule | 14:10 | ||
m: grammar { token TOP { "foo" } }.subparse("meowfoobar").say | |||
camelia | #<failed match> | ||
Zoffix | But it doesn't actually. It's anchored to the start of the string. | ||
Did the bot find a bug? | |||
Geth | roast/6.c-errata: ae9c63cf27 | (Zoffix Znet)++ | integration/advent2011-day23.t Fix typo in code The previous fix[^1] to the test to accomodate Rakudo's changes[^2] removed one-too-many characters. Fix by re-adding it. Also amend test's description to describe actual code run. [1] github.com/perl6/roast/commit/5f76...a3b70e102b [2] github.com/rakudo/rakudo/commit/7e...8dcaa4989e |
14:17 | |
roast: 6546a54cae | (Zoffix Znet)++ | integration/advent2011-day23.t Update test description To reflect the actual code being run. |
14:19 | ||
Zoffix | Should roast even be accessible to default perl6 users? Basically anyone who's part of perl6 org has perms to alter The Official Perl 6 Specificationā¢ | 14:36 | |
I just went to GitHub and it suggested me I pull and merge 6.c-errata to master. | |||
Which might be quite damaging if actually done.. | 14:37 | ||
ZofBot: I'm all alone, talking in this room, am I not? It's just you and me. | 14:38 | ||
ZofBot | Zoffix, Default "multi"s should be marked with ""is default"" | ||
moritz | Zoffix: we also gave everybody write access to perl6/specs when that was considered "The Official Perl 6 Specificationā¢" | ||
Zoffix | Before it was solidified tho | 14:39 | |
And made immutable | 14:40 | ||
jnthn | Trusting people has, so far, worked out pleasantly well | ||
Zoffix | This isn't about trust. This is about someone accidentally deleting 6.c-errata, for example. That won't be even reported by Geth. And with 270 people accidents are more likely than with 30-50. | 14:42 | |
moritz | then one of us who has 6.c-errata checked out pushes it again | ||
when we notice it's gone | |||
Geth | roast/6.c-errata: fe1aef1688 | (Elizabeth Mattijsen)++ | integration/advent2013-day07.t Make bogus .WHICH test less bogus |
||
moritz | most mistakes in git land are simple to recover from (if sometimes painful, through a force-push), so mistakes typically aren't that fatal | 14:43 | |
Zoffix | OK. can't merge 6.cerrata anyway | 14:45 | |
Geth | roast/6.c-errata: fe1aef1688 | (Elizabeth Mattijsen)++ commited by Geth::GitHub::Hooks::Event::Push::Commit<140152101270048>.commiter | integration/advent2013-day07.t Make bogus .WHICH test less bogus |
14:50 | |
Zoffix | uhhh... | ||
Geth | roast/6.c-errata: fe1aef1688 | (Elizabeth Mattijsen)++ (committed by Zoffix Znet) | integration/advent2013-day07.t Make bogus .WHICH test less bogus |
14:52 | |
dogbert17_ | o/ | ||
Zoffix | That's better. | ||
Geth | geth: 43aa2970ab | (Zoffix Znet)++ | lib/Geth/Plugin/GitHub.pm6 Report committer when it differes from author - e.g. in cherry picks |
14:53 | |
dogbert17_ | is it reasonable that running 'perl6 htmlify.p6' should take 20 minutes to execute (on a dual core i5)? | ||
Zoffix | That sounds about what my experience with it was. | ||
dogbert17_ | that's annoyingly slow | ||
dogbert17_ wonders what it might be doing behind the scenes | 14:54 | ||
timotimo | dogbert17_: yeah, it's pretty slow :( | ||
oh, did you get the faster highlighter? | 14:55 | ||
Zoffix | Interesting.... | ||
dogbert17_ | any idea what causes this slowness? | ||
Zoffix | 6.c-errata stresstest takes: Files=1149, Tests=125720, 121 wallclock secs (20.15 usr 3.22 sys + 2247.16 cusr 122.38 csys = 2392.91 CPU) | ||
timotimo | is that still optional? | ||
Zoffix | dogbert17_: doing lots of work | ||
dogbert17_ | it uses some node thingie I belive | ||
Zoffix | I think it gets faster if you turn off highlighting and image generation | ||
the node stuff is highlighting | 14:56 | ||
timotimo | OK, good | ||
it used to do it by exec ing a python instance if you didn't have Inline::Python, but those days are probably long gone | |||
can you run it with --parallel or what it's called? are we stable enough for that yet? | |||
dogbert17_ | well, today the NDA's are lifted on AMD's Ryzen 5 series CPU's, maybe it's time to upgrade ... | ||
Zoffix | yeah, python's ded :} | ||
dogbert17_ | www.youtube.com/watch?v=HO20mmQjY40 # review of the new CPU's | 14:58 | |
Zoffix | timotimo: BTW the :s doesn't stop you from key-lookup or index-look or method call for your scalars. Just like you can still use %hash<foo>[42] with just :h. The most permissive option I found is :c and using codeblocks for all interpolation, but that still sucks for CSS interpolation :/ | 14:59 | |
TimToady: showed some trick that I now forget | 15:00 | ||
m: my $foo = 42; say q|qq\\$foo| | |||
camelia | qq\$foo | ||
Zoffix | It looked somethign like that | 15:01 | |
m: my $foo = 42; say q|qq//$foo| | |||
camelia | qq//$foo | ||
Zoffix shrugs | |||
m: my $foo = 42; say q|qq{$foo}| | |||
camelia | qq{$foo} | ||
Zoffix | m: my $foo = 42; say q|\qq[$foo]| | 15:02 | |
camelia | 42 | ||
Zoffix | Therewego | ||
m: my $foo = 42; say '\qq[$foo](42)' | 15:03 | ||
camelia | 42(42) | ||
Zoffix | \o/ | ||
m: my $foo = 42; say 'the $foo is \Qs[$foo]' | 15:05 | ||
camelia | the $foo is \Qs[$foo] | ||
Zoffix | I guess \Q don't work | ||
too much risk for false positives | 15:06 | ||
tho \q gets interpreted vOv | 15:07 | ||
MasterDuke | dogbert17_: i just ran `htmlify.p6 --no-highlight --parallel=10` and it took maybe 2-3min, but there were two errors | 15:13 | |
Use of uninitialized value $node of type Any in string context. Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful. in sub node2rawtext at /home/dan/Source/perl6/doc/../modules/Pod-To-HTML/lib/Pod/To/HTML.pm (Pod::To::HTML) line 599 | |||
..No such method 'contents' for invocant of type 'Any' in block at htmlify.p6 line 936 in sub write-kind at htmlify.p6 line 916 in sub MAIN at htmlify.p6 line 232 in block <unit> at htmlify.p6 line 1013 | 15:14 | ||
Zoffix | Here. Summed it all up in a screenshot: twitter.com/zoffix/status/851815881852284929 | 15:15 | |
timotimo | MasterDuke: sounds like it's having some kind of concurrency related issue :( | 15:17 | |
MasterDuke | timotimo: yup. much better than it used to be, but still not perfect | 15:18 | |
Zoffix | Have you checked that the problem is not actually in the htmlify.p6 script? | 15:20 | |
This type of stuff you'd get when you have more than one thread changing the same variable | 15:21 | ||
timotimo | yeah, the crossthreadwrite log might give a clue, but not necessarily | ||
jnthn | The problem I know about in htmlify is that the NEXT phaser mis-compiles into something not thread safe | ||
In the while loop case | |||
Or something like that | |||
Zoffix | Ah | ||
jnthn | Many of the others I fixed | ||
But the script really wasn't written in a concurrency-thoughtful way | 15:22 | ||
So I'd not be surprised if there are some further issues after fixing that one | |||
timotimo | yeah :| | ||
jnthn | Though other than that issue it seemed to be getting relatively into things | 15:24 | |
*relatively far | |||
I'd love to say I'd look at it soon, but my Perl 6 time these days is...pretty limited. | 15:28 | ||
[Coke] | Zoffix: I didn't see this explicitly mentioned in backscroll, but the 6.c-errata branch is protected, on github. | 15:29 | |
we can protect it further if needs be, but it can't be deleted, and can't be force-pushed. | 15:30 | ||
dogbert17_ | MasterDuke: have you ever managed to profile htmlify? | 15:31 | |
[Coke] | nope. | 15:32 | |
Zoffix | [Coke]: cool | ||
[Coke] | It's doing a lot, and it does it all in one script (instead of in several make-composable chunks). If you're using it locally, you can pass "--sparse=40" to do a fraction of the pages (this may also help with profiling) | 15:33 | |
dogbert17_ | [Coke]: thx, I'll try that when I get home from work | ||
b2gills | Zoffix: Windows reserves the filename "NUL" (/dev/null) in every directory, along with CON (STDOUT) LPT1 and COM1 etc | 15:37 | |
Zoffix | BTW, now that more people are here, I'm planning to add IO::Path.sibling($x) that will function like .parent.concat-with($x). | 15:38 | |
It's shorter to type. I've seen some uses of it in ecosystem. Mojo::File has it and their team bikesheds everything to death. | |||
b2gills | That sounds useful | ||
Zoffix | So if anyone wants to protest, do so now :D) | ||
b2gills: TIL. Out of them all, the 'CON' file does get created with perl6 -e "'COM1'.IO.spurt('test')" | 15:55 | ||
And LPT1 fails with "Failed to open file C:\temp\LPT1: no such file or directory" even though it's a writing open :S | |||
The rest silently succeed with no file left. | |||
Oh, it's CON not COM! Yeah, also failed to open. | 15:56 | ||
Cool. | |||
b2gills | One of my earliest Perl programs was directly controlling an Epson Dot matrix printer by sending bytes to LPT1 | ||
I think it was in DOS 1.0 which was before it had directories, so to be backwards compatible in DOS 2.0 it worked in all directories. | 15:58 | ||
Zoffix is pretty sure he wasn't yet born at the time... | 16:00 | ||
A time when computing products were advertised with stone and chizzels lulz: upload.wikimedia.org/wikipedia/en/...sdosad.jpg | 16:02 | ||
[Coke] | do we want to restrict the actual github ids that can even push to 6.c-errata? that's possible with github. | ||
Zoffix | [Coke]: I'd say yes. Simply because otherwise we're relying on people noticing a commit announced via a bot. It shouldn't be easy to change something that's supposedly immutable. | 16:04 | |
After 6.d release, would be nice to have some stricter rules, or more like concrete checklist for identifying stuff that can be changed in erratas. | 16:05 | ||
perlpilot | b2gills: I'm a wee bit skeptical that you had Perl running on DOS 1.0 or 2.0 :) | ||
b2gills | I didn't say that, I said that is why CON and NUL are in every directory | 16:06 | |
perlpilot | oh, I conflated your two statements in my head. | ||
b2gills | I think I was using Windows 98 (SE)? when I first found out about Perl | 16:07 | |
Zoffix | And maybe a separate branch where errata-breaking stuff gets pushed, until the test is changed. I noticed at least 1 time where a change went in and a discussion about whether errata is wrong and should be changed never properly took place, because people couldn't connect together. This way, the change can exist elsewhere until everything is properly decided. | 16:08 | |
And more bots to watch stuff. After all the grant stuff, gonna add a bot that stresstests nightly. | 16:11 | ||
Will track all the flappers too. | |||
And improve the release bot to also cut Perl6.VIP and also make distro packages. | 16:13 | ||
And improve the release app a bit. Too much typing when doing logs. Gonna add boxes for each commit and a toggle for which section to log it. It'll assemble it at the end automagically. | 16:14 | ||
ZofBot: replace all the things with robots. | |||
ZofBot | Zoffix, ^ *>5 # means 0, 1, 2, 3, 4, 5 [Conjecture: it is possible that, for most of the above operators that take "*" to mean "Inf", we could still actually return a closure that defaults that particular argument to "Inf" | ||
Geth | rakudo/uncurse: cdd625b68c | TimToady++ | 11 files unify Match with Cursor This just follows the same changes that nqp does for unification. |
||
rakudo/uncurse: b123ab223b | TimToady++ | 2 files move Match code from Cursor.pm to Match.pm |
|||
Zoffix | m: say ^ *>5 | ||
camelia | { ... } | ||
Zoffix | m: say eager ^ *>5 | 16:15 | |
camelia | ({ ... }) | ||
Zoffix | m: say eager 1..^*>5 | ||
camelia | (True) | ||
Zoffix | m: say eager 1...^*>5 | ||
camelia | (1 2 3 4 5) | ||
Zoffix | \o/ | 16:16 | |
Geth | nqp: 7f949d31f6 | TimToady++ | 11 files rebootstrap to get constant declarator |
16:18 | |
nqp: 98601ba688 | TimToady++ | 11 files Revert "rebootstrap to get constant declarator" This reverts commit 7f949d31f691fe862dc962d9ab9bff4239f20cac. Accidentally did this in master when I intended to do it in a branch. |
|||
TimToady | progress report: the uncurse branch now successfully parses the setting, but blows up somewhere in the precompiler | 16:20 | |
without having done any benchmarks, it appears to run at about the same speed, or possibly a hair faster, but large speedups are not yet expected | 16:21 | ||
since it's still doing most of the work that the old MATCH method is doing | |||
in any case, not intending to merge this till after release | 16:22 | ||
since it may impact downstream modules that have gotten overly chummy with the current internals | 16:23 | ||
Zoffix | It's possible the release will be delayed by 2 days and be cut on April 17th (around noon on Monday, EST time) | 16:26 | |
TimToady | yes, I picked up the distress call earlier :) | ||
Zoffix | :) | ||
Geth | nqp/uncurse: 17 commits pushed by (Samantha McVey)++, (Pawel Murias)++, TimToady++ review: github.com/perl6/nqp/compare/e32ad...6439b08a94 |
16:39 | |
Zoffix | t/spec/S17-supply/syntax.t flopped | 16:40 | |
Geth | rakudo/uncurse: 30 commits pushed by (Zoffix Znet)++, (Julien Simonet)++, (Elizabeth Mattijsen)++, (Samantha McVey)++, (Daniel Green)++, (David Warring)++, lizmat++, TimToady++ review: github.com/rakudo/rakudo/compare/b...3dbd05631d |
||
MasterDuke | dogbert17_: i had profiled htmlify.p6 a while ago, but i don't have it anymore (and it probably wouldn't be useful by now anyway) | 16:46 | |
i just tried now, with --parallel=1 so there wasn't any concurrency, but it immediately segfaults | 16:47 | ||
valgrind output fwiw gist.github.com/MasterDuke17/cdf57...03efb29c35 | 16:52 | ||
Zoffix | Oh hah. Un-inteded side effect: Geth fix above now also identifies commits that were pushed using GitHub's web interface :) | 16:55 | |
Geth | rakudo/uncurse: 6d04acf7dc | TimToady++ | src/core/Attribute.pm get rid of hacky read of .HOW (It was a mystery why we ever needed it in the first place, but for a while the following method call to .generate_accessor would not work without it.) |
16:59 | |
[Coke] | suggested restricted list of committers for 6.c-errata? lizmat, zoffix, jnthn, timtoady? | 17:05 | |
Zoffix | rakudo's repo members? | ||
Geth | geth: 7844afdbf1 | (Zoffix Znet)++ | lib/Geth/Plugin/GitHub.pm6 Identify when a commit is made using GitHub's web editor Because we can. |
17:06 | |
[Coke] | Zoffix: that would have to be coordinated manually, and I can't see that list. | ||
we could create a perl 6 team called "core" or something and give that team privs. | 17:08 | ||
(then we use team management to manage it instead of a list of users in one repo's settings.) | |||
Zoffix | Then I guess yeah, that list is good. + samcv + usev6 (bartolin) + MasterDuke17 + pmurias + FCO (SmokeMachine) + niner + arnsholt | 17:09 | |
+ stmuck | 17:10 | ||
* stmuk | |||
ZofBot: is that all? | |||
ZofBot | Zoffix, 14159265358979323846264338327950288 Context * Perl still has the three main contexts: sink (aka void), item (aka scalar), and list | ||
Zoffix | Yeah, the core perl6 team sounds good. | 17:12 | |
MasterDuke | fyi, i'm not a rakudo repo member | 17:13 | |
[Coke] | as long as your a perl6 org member, 'sfine.' | ||
adding myself to list as well. | 17:14 | ||
MasterDuke | k, just didn't want to slide in under an incorrect assumption. btw, what about moritz and masak also? | 17:16 | |
[Coke] | sure. | 17:17 | |
Zoffix | oh yeah | ||
Oh and AlexDaniel | 17:18 | ||
MasterDuke | timotimo? | ||
[Coke] | there, push to 6.c-errata is now restricted to the probably inappropriately named 'core' team. | ||
Zoffix | [Coke]++ | ||
Thanks. | |||
Oh, this for for 6.c-errata. Cool. | |||
[Coke] | yup. any perl6 owner/admin can update the "core" team to add more members as needed. | 17:19 | |
but this should prevent potential thinkos. | |||
Zoffix | OK. Thanks. | ||
[Tux] | This is Rakudo version 2017.03-219-gb6838ee4d built on MoarVM version 2017.03-115-ge8231a30 | 17:38 | |
csv-ip5xs 3.052 | |||
test 12.593 | |||
test-t 4.942 - 4.996 | |||
csv-parser 12.679 | |||
Zoffix | buggable: speed 5 | 17:40 | |
buggable | Zoffix, āāāāā data for 2017-04-10ā2017-04-11; range: 4.921sā5.031s; 1% slower | ||
Zoffix | bah | ||
buggable: speed 10 | 17:41 | ||
buggable | Zoffix, āāāāāāāāāā data for 2017-04-08ā2017-04-11; range: 4.921sā5.413s; 8% faster | ||
Zoffix | There are lies, damned lies, and statistics :) | ||
buggable: speed 4 | 17:42 | ||
buggable | Zoffix, āāāā data for 2017-04-10ā2017-04-11; range: 4.921sā5.031s; 1% faster | ||
Zoffix | buggable: speed 4000 | ||
buggable | Zoffix, Refusing to do more than 100 last entries | ||
Zoffix | buggable: speed 100 | ||
buggable | Zoffix, āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā data for 2017-02-25ā2017-04-11; range: 4.788sā7.664s; 4% slower | ||
Zoffix | :( | ||
Well, don't mean much, as far as entire Rakudo is concerned. | 17:43 | ||
dogbert17 | some htmlify stats from my home machine: running with --no-highlight takes a bit over 7 minutes, running with highlighting takes 20 ! | 17:57 | |
dogbert17 wonders of node v 4.5 is too old | 17:58 | ||
and 'perl6 --profile htmlify.p6 --no-highlight --sparse=10' segfaults | 18:01 | ||
MasterDuke | dogbert17: i believe the segfaulting is the same as this github.com/MoarVM/MoarVM/issues/571 | 18:11 | |
Geth | roast: a8a968499e | (Daniel Green)++ | S02-types/native.t Too big argument for a native param should throw |
18:37 | |
dogbert17 | Program received signal SIGSEGV, Segmentation fault. | 18:46 | |
0xb7c157d5 in MVM_interp_run (tc=0x804c458, initial_invoke=0xb7cee5e9 <toplevel_initial_invoke>, invoke_data=0x80b8b20) at src/core/interp.c:5328 | |||
5328 tc->cur_frame->params.named_used[GET_UI16(cur_op, 0)] = 1; | |||
MasterDuke: looks familiar? | 18:47 | ||
here's the gist, perhaps something for timotimo: gist.github.com/dogbert17/82fd4cb9...b39f7223d0 | 18:50 | ||
MasterDuke | dogbert17: yep | 18:51 | |
[Coke] | perl6 -MApp::Uni -e 'say uni-gist $_ for qx/tput cuu 1/.comb' # should be able to make this awesomer. | 18:54 | |
... wrong window! | 18:55 | ||
MasterDuke | dogbert17: btw, 6m30s no highlighting, 24m20s with highlighting | 19:01 | |
[Coke] | there is a highlighting -- option to speed things up, not sure if it's the default. | 19:03 | |
Zoffix | ZofBot: what are your options to speed things up | 19:25 | |
ZofBot | Zoffix, typename'" !! "No such method '$ | ||
Zoffix | m: sub (int $x) { dd $x }(99999999999999999999) | 19:26 | |
camelia | 7766279631452241919 | ||
Zoffix | MasterDuke: seems it's a failing test you added | ||
c: 2017.03 sub (int $x) { dd $x }(99999999999999999999) | |||
committable6 | Zoffix, Ā¦2017.03: Ā«Cannot unbox 67 bit wide bigint into native integerā¤ in sub at /tmp/LAM1jd3FFL line 1ā¤ in block <unit> at /tmp/LAM1jd3FFL line 1ā¤ Ā«exit code = 1Ā»Ā» | ||
Zoffix hopes for a fix before release :) | 19:27 | ||
MasterDuke | Zoffix: whoops, the fix was merged to moar this monring | 19:28 | |
Zoffix | Ah, we just need a bump github.com/MoarVM/MoarVM/pull/578 | ||
MasterDuke++ | |||
Imma do it | |||
That's another thing I'm gonne make a bot do: version bumps, with stressting stuff first | 19:31 | ||
Might be too slow tho; since I don't have a 24-core VM running 24-7 | 19:38 | ||
Hm... I could teach it to power on a VM to do the bump... | |||
Probably takes like half an hour on a 2-core VM | 19:39 | ||
ZOFVM: Files=1238, Tests=133657, 113 wallclock secs (21.17 usr 3.40 sys + 2323.35 cusr 156.45 csys = 2504.37 CPU) | 19:44 | ||
Geth | nqp: a29b8187e2 | (Zoffix Znet)++ | tools/build/MOAR_REVISION Bump MoarVM version Brings these commits: github.com/MoarVM/MoarVM/compare/2...8-gc9ab59c c9ab59c Remove arbitrary and small length range check. 66dd8c9 Merge pull request #578 from MasterDuke17/fix_mp_get_int64_and_mp_get_uint64_for_realz ... (11 more lines) |
||
Ā¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...8-gc9ab59c | |||
rakudo/nom: d0924f1a28 | (Zoffix Znet)++ | tools/build/NQP_REVISION Bump NQP Version NQP version bump brought these commits: github.com/perl6/nqp/compare/2017....2-ga29b818 98601ba Revert "rebootstrap to get constant declarator" 7f949d3 rebootstrap to get constant declarator ... (27 more lines) |
|||
Ā¦ rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....2-ga29b818 | |||
timotimo | dogbert17: that might be another thing where disabling INLINE might help? | ||
Zoffix | It's kinda weird that master stresstest runs in 113 secs, but 6.c-errata stresstestāthat complains about 20-30 missing filesāruns in 121secs | 19:46 | |
MasterDuke | timotimo: same as the experimenting we did before. disabling jit and spesh get it a tiny bit farther and more info, but stiff immediate segfaults | 19:47 | |
timotimo | wait, huh, did i just see something else? | 19:48 | |
i saw one where paramnamesused segfaulted | |||
MasterDuke | timotimo: i think that was something you were doing, maybe yesterday? | 19:49 | |
timotimo | long, long ago | ||
Geth | roast: e3ce53a142 | (Zoffix Znet)++ (using GitHub Web editor) | S02-types/native.t Don't use non-standard features in tests |
19:51 | |
dogbert17 | timotimo: you're right setting MVM_SPESH_INLINE_DISABLE=1 seems to fix things | 20:01 | |
timotimo | i wonder what it is about named arguments that breaks inlines sometimes | 20:09 | |
MasterDuke | you can profile htmlify.p6 with MVM_SPESH_INLINE_DISABLE=1? | ||
i've never seen a backtrace like this before: gist.github.com/MasterDuke17/dd93c...d98075b2ba | 20:17 | ||
Geth | rakudo/nom: acaeb367f3 | usev6++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java [JVM] Fix X::TypeCheck::Binding::Parameter In order to make the recently (with 0f9f00082b) introduced exception X::TypeCheck::Binding::Parameter work, the CallSiteDescriptor had to contain the additional argument. This makes a couple of tests from roast pass again. |
20:32 | |
timotimo | MasterDuke: fascinating! | 20:36 | |
dogbert17 | I'm trying to profile now but the profiles get rather big so I'm commenting out some steps | ||
timotimo | MasterDuke: can you give us what thread 1 has in its backtrace? | ||
it might be at the end of gc and waiting for other threads to report finished | 20:37 | ||
dogbert17 | am a bit confused with how to interpret the 'Routines' page of profiler output | 20:40 | |
the top few entries all have 'Inclusive time' equal to 100% after that it slowly starts to drop off until there's a big jump | 20:42 | ||
timotimo | yeah | ||
you know that inclusive counts not only the routine itself but also all time spent in routines they call? | |||
so imagine you have a "main" | 20:43 | ||
99.9% of the program's run time is spent inside of main or something main calls | |||
dogbert17 | e.g. I have 'sink' at 97.85% followed by 'process-pod-dir' at 75.78% | ||
timotimo | right, that sink is most likely a very top-level for loop that does most of the work in total | ||
dogbert17 | aha, do I then have to drill down that call to see whats's happening | 20:44 | |
MasterDuke | timotimo: gist updated | 20:45 | |
dogbert17: are you using the qt profile viewer? much better for large profiles | 20:46 | ||
dogbert17 | haven't tried that | ||
timotimo | i generally just sort by exclusive time, honestly | 20:47 | |
MasterDuke | github.com/tadzik/p6profiler-qt | ||
i pretty much use it exclusively, until the profile get too big even for it and then switch to SQL | 20:48 | ||
dogbert17 | cool, will have to try that | 20:49 | |
so 'sink' might then refer to a loop | |||
MasterDuke | dogbert17: are you in a 32-bit OS? how old is your rakudo? | 20:50 | |
tadzik | MasterDuke: since you use it a lot, could I get all possible feedback on what'd you like improved? | ||
especially how big is "too big" | |||
it's one of the things I'd like to polish a little over the not-qa-hackathon next month | 20:51 | ||
MasterDuke | tadzik: well, i know QT imposes a somewhat arbitrary limit of ~120mb, iirc | ||
timotimo | too big is when the json parser says "i can't deal with files this big" | ||
tadzik | yeah, a move to sql is probably unavoidable | 20:52 | |
timotimo | yeah | ||
MasterDuke | tadzik: one thing is resizing the columns doesn't always work well | ||
actually you can't resize at all | 20:53 | ||
so sometimes even full screen i can't read the file+linenumber in the "Routine" column | 20:54 | ||
timotimo | i wish we had something clever for these looooong hash filenames | 20:56 | |
in the html one | |||
MasterDuke | yeah, those are where it really breaks down | ||
tadzik: another small thing. the bar in the inclusive and exclusive columns adjusts adjusts its width to fit the percentage+time | 20:59 | ||
but it just looks a little funny that sometimes the bar's total width differs from one row to the next | 21:01 | ||
timotimo | i wanted to add info about GCs to the qtprofiler some time ago, but handling the model/view stuff qt has come up with is ... annoying | ||
and also trying to build a progressbar that renders in three colors ... | |||
tadzik | hmm | ||
tadzik notes | |||
MasterDuke | timotimo: do the regular profiles still lack allocation info and such? | 21:02 | |
timotimo | yeah :( | 21:03 | |
well, the info is there, but the html app doesn't let you look | |||
MasterDuke: do can you figure out how the instrumented_mark_data function crashes exactly? | 21:04 | ||
MasterDuke | tadzik: see what i mean here? i.imgur.com/khj3FAU.png | 21:05 | |
timotimo | wat? | ||
tadzik | yeah, silly indeed :) | ||
timotimo | that's not how i remember the profiler looking | ||
tadzik | though it looks much different here, must be styling | ||
MasterDuke | i'm using KDE fwiw | ||
on Arch | |||
timotimo: how do i figure that out? | 21:06 | ||
timotimo | MasterDuke: start by doing "print" on all the local variables | ||
tc->prof_data is already null-checked, but maybe it's just a totally invalid pointer somehow? | |||
MasterDuke | does it matter what thread? | ||
timotimo | it should be the one that crashed | 21:07 | |
MasterDuke | timotimo: gist updated | 21:09 | |
timotimo | could you also print the foo[0] for each of these so it dereferences? | 21:10 | |
except the null pointer of course | |||
hum. zef somehow failed to fetch OO::Monitors | 21:12 | ||
*shrug*, i git cloned and locally installed it | 21:13 | ||
MasterDuke | gist updated | 21:14 | |
timotimo | m: say DateTime.new(1033699633629796) | 21:16 | |
camelia | +32758607-05-21T23:23:16Z | ||
timotimo | what. | ||
hm, might be msec | |||
m: say DateTime.new(1033699633629796 / 1000) | |||
camelia | +34726-08-22T03:07:09.796000Z | ||
timotimo | ..... | 21:17 | |
Zoffix | Well, this is unpleasant :| Coming in home to find pieces of drywall all over the hall and half the bathroom wall missing :S | ||
timotimo | :o | ||
what kind of ghetto repair job are they doing there | |||
Zoffix | Note: I had no idea anyone would come at all :/ | 21:18 | |
timotimo | MasterDuke: i'm surprised it crashed at that point ... but maybe gcc just totally inlined the other function and therefor you can't properly see it in the debugger? | ||
Zoffix | And I was supposed to work from home tomorrow; now I wonder if I should turn in to the office, so I wouldn't get annoyed by all the banging. | ||
timotimo | MasterDuke: does it crash early enough so that you could run it under valgrind? it usually gives a bit better errors when a segfault happens | 21:19 | |
MasterDuke | yeah, just a sec | 21:23 | |
timotimo | otherwise maybe --optimize=1 could help? i can't really see in what way that code is supposed to crash | 21:26 | |
MasterDuke | would compiling with --optimize=0 be useful at all? | ||
timotimo | usually not much better than 1, i believe | ||
MasterDuke | oh interesting, it just got past the part it always crashes in in valgrind | ||
timotimo | updating zef helped with installing stuff | 21:30 | |
maybe it was an .abspath thing or something | |||
MasterDuke | gist updated with valgrind output, now i'll try recompiling with --optimize=1 | 21:31 | |
timotimo | ouch | 21:32 | |
Pod::To::BigPage is failing tests with an internal-ish error | 21:33 | ||
dogbert17 | not something about MAST I hope | 21:35 | |
timotimo | exactly that | ||
mast frame expected but not gotted | |||
dogbert17 | github.com/perl6/perl6-pod-to-bigpage/issues/1 | 21:36 | |
timotimo | oh, that's when it tries to install | ||
MasterDuke | timotimo: gist updated, filename '--optimize=1' is the new one | ||
timotimo | that makes a lot more sense | 21:37 | |
MasterDuke | oh, also: (gdb) p node $6 = (MVMProfileCallNode *) 0x0 | ||
oh, could already see that | 21:38 | ||
timotimo | yeah, but only via another pointer deref | ||
and nothing in the line that was highlighted did that | |||
well, not sure why that'd happen, but i've just put a "&& tc->prof_data->call_graph" into the if guarding that part | 21:39 | ||
MasterDuke | src/profiler/instrument.c:541 ? | 21:40 | |
timotimo | yu | 21:41 | |
yup | |||
MasterDuke | oh, i tried that and it doesn't die right away | 21:42 | |
yeah, just finished normally | |||
timotimo | that's better. | 21:43 | |
MasterDuke | still dies if i leave off MVM_SPESH_INLINE_DISABLE=1 though | ||
timotimo | yeah | ||
that's an entirely different thing :) | |||
MasterDuke | dinner & | 21:48 | |
tadzik | hmm, I wonder if a profiler could be ported to perl 6 %) | 21:54 | |
and to gtk, probably | |||
timotimo | could be, yeah | 21:55 | |
tadzik | it'd be pretty cool if it turned out that perl 6 is performant enough where JS wasn'ot | ||
timotimo | DBIish can do sqlite | ||
well, it'd also work completely differently | 21:56 | ||
tadzik | yup | ||
is there an ncurses module? :) | |||
dogbert17 | timotimo: here's an odd thing with the 'perl6' shell script. On my machine it looks like this: | 21:58 | |
#!/bin/sh | |||
exec /home/dogbert/repos/rakudo/install/bin/moar --execname="$0" --libpath="/home/dogbert/repos/rakudo/install/share/nqp/lib" --libpath="/home/dogbert/repos/rakudo/install/share/nqp/lib" --libpath="." /home/dogbert/repos/rakudo/perl6.moarvm --nqp-lib=blib "$@" | |||
there are two --libpath's pointing to the same directory | 21:59 | ||
timotimo | that seems fun | 22:07 | |
MasterDuke | dogbert17: same here | 22:39 | |
Geth | geth: 19e44a4a42 | (Zoffix Znet)++ | lib/Geth/Plugin/GitHub.pm6 Reword with `when` to avoid duplication And to look cool. Also add word "committed" to message about GitHub editor. |
22:45 | |
geth: a9df0ea59c | (Zoffix Znet)++ | lib/Geth/Plugin/GitHub.pm6 Remove another useless duplication of var |
22:47 | ||
Zoffix | huggable: IO kills | 22:50 | |
huggable | Zoffix, 14 x [ā]; 4 x [ā]: See gist.github.com/zoffixznet/0ea1f4d...3f8dd11cc1 | ||
Zoffix | Much better outlook on breakage than 12 hours ago :) | ||
Oh, I even missed one merge. It's now 15 vs 3 | 22:51 | ||
MasterDuke | (IO Grant)++ | 22:52 | |
Geth | rakudo/nom: 184d499961 | (Zoffix Znet)++ | src/core/IO/Handle.pm [io grant] Make IO::Handle.Supply respect handle's mode - Use bin mode when then handle is in bin mode - Remove :bin argument |
23:01 | |
roast: a4c53b01be | (Zoffix Znet)++ | S16-io/supply.t [io grant] Use bin IO::Handle to test its .Supply As part of the IO Action Plan it was deemed the test was erroneous. .Supply was made to respect the handle's mode[^1], which requires the test to be amended. [1] github.com/rakudo/rakudo/commit/184d499961 |
23:03 | ||
roast/6.c-errata: b83882bf8e | (Zoffix Znet)++ | S16-io/supply.t [io grant] Use bin IO::Handle to test its .Supply As part of the IO Action Plan it was deemed the test was erroneous. .Supply was made to respect the handle's mode[^1], which requires the test to be amended. [1] github.com/rakudo/rakudo/commit/184d499961 |
23:05 | ||
samcv | m: say '\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[\qq[testing]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] | 23:06 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Couldn't find terminator ] (corresponding [ was at line 1) at <tmp>:1 ------> 3ting]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]7ā5<EOL> expecting any of: ] |
||
samcv | ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]' | ||
damn cut ofgf | |||
that apparently works | |||
Zoffix doesn't see why it wouldn't :) | 23:07 | ||
samcv | m: '\q[\q[\q[\q[\q[\q[\q[\q[\q[\q[\q[testing]]]]]]]]]]]' | ||
camelia | ( no output ) | ||
samcv | m: say '\q[\q[\q[\q[\q[\q[\q[\q[\q[\q[\q[testing]]]]]]]]]]]' | ||
camelia | testing | ||
samcv | it's insane though | ||
Zoffix | m: say '\qq[\q[\qq[\q[this works too!]]]]' | ||
camelia | this works too! | ||
samcv | how many levels until i use up all my memory though | ||
m: my $head = Q{\q[}; my $tail = ']'; my $b = 10; my $i = 0; sub funct ($in) { ++$i > $b ?? $head ~ $in ~ $tail !! funct($head ~ $in ~ $tail) }; say "'" ~ funct("testing") ~ "'" | 23:08 | ||
camelia | '\q[\q[\q[\q[\q[\q[\q[\q[\q[\q[\q[testing]]]]]]]]]]]' | ||
samcv | that is the question | ||
m: my $head = Q{\q[}; my $tail = ']'; my $b = 10000; my $i = 0; sub funct ($in) { ++$i > $b ?? $head ~ $in ~ $tail !! funct($head ~ $in ~ $tail) }; say ("'" ~ funct("testing") ~ "'").EVAL | |||
camelia | testing | ||
samcv | for some reason i find that very amusing | 23:09 | |
timotimo | samcv: are you going to add some html to the gh-pages of the rakudo-appimage project? | 23:10 | |
Zoffix | m: say $*DEFAULT-READ-ELEMS | ||
camelia | 65536 | ||
samcv | maybe | ||
Zoffix | So, are we making that part of the language? | ||
The $*DEFAULT-READ-ELEMS var | 23:11 | ||
samcv | well yes eventually | ||
what is that... | |||
Zoffix | Reworded: Are we making $*DEFAULT-READ-ELEMS part of the language and make it default to 65536? | ||
It's used in a bunch of places in IO. I'm documenting stuff. So, should I document $*DEFAULT-READ-ELEMS or not. | |||
samcv | but.. what dose it do | 23:12 | |
Zoffix | $ grep -FR '$*DEFAULT-READ-ELEMS' src/ | ||
src/core/IO/Handle.pm: method readchars(Int(Cool:D) $chars = $*DEFAULT-READ-ELEMS) { | |||
src/core/IO/Handle.pm: method Supply(IO::Handle:D: :$size = $*DEFAULT-READ-ELEMS --> Supply:D) { | 23:13 | ||
src/core/IO/Handle.pm:Rakudo::Internals.REGISTER-DYNAMIC: '$*DEFAULT-READ-ELEMS', { | |||
src/core/IO/Socket.pm: my $r := nqp::readfh($!PIO, nqp::decont(buf8.new), $*DEFAULT-READ-ELEMS); | |||
samcv | hmm interesting | ||
m: say $*DEFAULT_READ_ELEMS.^methods | 23:14 | ||
camelia | (DESTROY AT-POS AT-KEY defined handled Int Num Numeric mess sink CALL-ME FALLBACK STORE new Bool Str gist perl exception backtrace AT-POS AT-KEY BIND-KEY ASSIGN-KEY STORE iterator sink unshift chrs gist BIND-POS Numeric Str new ords chomp push FALLBACK cā¦ | ||
Zoffix | Looking at that... I'm gonna go with "no" as the answer to my question. | ||
samcv | seems internalish | ||
Zoffix | And we should nix it to not pay the dynamic price. | ||
I think it was sorta meant as a macro or something. | |||
samcv | ok 100000 levels gets to 5GB of ram then gets killed cause my ulimit setting | 23:16 | |
Zoffix | :o | ||
samcv | but 10000 levels is much less ram maybe 750MB | ||
timotimo | samcv: i wonder if .^ will neglect to vivify the dynamic var there | ||
m: say $*DEFAULT_READ_ELEMS; say $*DEFAULT_READ_ELEMS.^methods | |||
camelia | Dynamic variable $*DEFAULT_READ_ELEMS not found in block <unit> at <tmp> line 1 Actually thrown at: in block <unit> at <tmp> line 1 |
||
timotimo | m: say $*DEFAULT-READ-ELEMS; say $*DEFAULT-READ-ELEMS.^methods | 23:17 | |
camelia | 65536 (Int Num Rat FatRat abs Bridge chr sqrt base polymod expmod is-prime floor ceiling round lsb msb narrow Range atanh sign asech sin tan atan2 acosech truncate asinh conj acosh pred asec cosec acotan cosh acos acosec sech unpolar log exp roots cotaā¦ |
||
timotimo | that's why | ||
samcv: your .^methods was equivalent to $*WHAT_EVEN_IS_THIS.^methods | |||
samcv | heh | ||
m: $*WHAT_EVEN_IS_THIS.^methods.say | |||
camelia | (DESTROY AT-POS AT-KEY defined handled Int Num Numeric mess sink CALL-ME FALLBACK STORE new Bool Str gist perl exception backtrace AT-POS AT-KEY BIND-KEY ASSIGN-KEY STORE iterator sink unshift chrs gist BIND-POS Numeric Str new ords chomp push FALLBACK cā¦ | ||
timotimo | i.e. Failure.^methods | 23:18 | |
samcv | do we have a max variable name length | ||
probably not right | |||
timotimo | i'm not aware of one | ||
samcv | good | ||
timotimo | m: use MONKEY-SEE-NO-EVAL; EVAL 'my $' ~ "foo" x 10000 ~ ' = 1'; | 23:19 | |
camelia | ( no output ) | ||
timotimo | m: use MONKEY-SEE-NO-EVAL; EVAL 'my $' ~ "foo" x 10000 ~ ' = 1; say $' ~ "foo" x 10000; | ||
camelia | 1 | ||
timotimo | 10k graphs ought to be enough for anybody | ||
Zoffix | Bill Gates said that! | 23:20 | |
Oh wait, that was memory :} | |||
samcv | graphemes, memory. same thing | ||
timotimo | only for people with photographic memory | 23:21 | |
samcv | well 100k graphs works | 23:22 | |
timotimo | that ought to be enough | ||
samcv | naw not even | 23:23 | |
10 million works too | |||
timotimo | do we want an easter egg for when you use a very specific number of some significance? | ||
samcv | heh | ||
timotimo, if the name is long enough the name is the variable ;) | |||
well stores more data | |||
ha | |||
timotimo | you can grab the name via .VAR.name | 23:24 | |
so, yeah, probably! | |||
samcv | ok 100_000_000 million is like | 23:25 | |
taking a realllyyy long time | |||
brb | |||
timotimo | hahaha | ||
samcv | maybe will be done when i'm back | ||
timotimo | well, it's a few megabytes, so ... :) | ||
samcv | xoh wait it finished already | ||
timotimo | what's its maxresidentk: ) | ||
samcv | going for 1_000_000_000 then | ||
oh. no. | |||
MoarVM panic: Memory allocation failed; could not allocate 8000000076 bytes | |||
T_T T_T | |||
timotimo | okay! | ||
get some swap on a very big disk | 23:26 | ||
samcv | k | ||
we should make moarvm more efficient | |||
to enable longer variable names | |||
brb actually tho | |||
timotimo | that's clearly very important | ||
MasterDuke | "we should make moarvm more efficient" - can't argue with that | 23:29 | |
"to enable longer variable names" - eh | |||
samcv | maybe it will be a side effect | 23:32 | |
brb | |||
MasterDuke | ooo, but can your variable name be an actual Perl 6 program when EVALed? | ||
timotimo | m: my ::('oh lord why is this variable so crazy') = 10 | 23:34 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Malformed my at <tmp>:1 ------> 3'oh lord why is this variable so crazy')7ā5 = 10 |
||
MasterDuke | what's the word i'm looking for? when a problem prints out it's own source code | ||
timotimo | quine | ||
MasterDuke | right | ||
timotimo | named after mister quine, all he could ever say was his whole genome sequence | ||
MasterDuke | heh | 23:35 | |
timotimo: now that you've solved that one bug, any idea on the spesh bug? | 23:44 | ||
timotimo | nah, it's probably a whole bit different flavour to it | ||
MasterDuke | if i do a profile with MVM_SPESH_INLINE_DISABLE=1, is that at all useful? | 23:46 | |
timotimo | yeah | ||
performance will differ a bit | |||
you can check what percentage difference it makes by running it without profiling | |||
samcv | why does travis have the HAS_JOSH_K_SEAL_OF_APPROVAL env var | 23:47 | |
timotimo | like, not profiling but timing. once with and once without inline | ||
samcv: monkey see no env var? | |||
samcv | can't avoid it with travis | ||
MasterDuke | huh. i profile with MVM_SPESH_INLINE_DISABLE=1, --no-highlight, and --sparse=50, which created a 19mb .json profile, but the qt viewer gets killed when i try to open it | 23:48 | |
timotimo | oh, now here's something interesting | 23:49 | |
you can definitely debug that though | |||
MasterDuke | with what? | 23:50 | |
timotimo | well, gdb i guess? | ||
MasterDuke | huh, only 308486 lines in the sql profile output | ||
timotimo | well, turning off inlining doesn't make there be any fewer routines | 23:51 | |
and we record functions post-inline as a different piece either way | |||
i.e. a normal call differs only from an inlined call by having a "it was inlined" bit set | 23:52 | ||
so the call graphs should be the same size | |||
MasterDuke | i'm just surprised the qt viewer can't do such a small file | ||
timotimo | well, it might be choking on some value? null pointer dereference or something? | 23:53 | |
i don't think you've told us what way it actually dies in? | |||
MasterDuke | will gdb help if the OOM killer is what's killing it? | ||
yep, it's the OOM killer | 23:54 | ||
mst | perhaps it's time to provision some swap? | ||
timotimo | oh, haha | 23:55 | |
well, in that case try a memory debugger or something | |||
MasterDuke | i'm using this as just one part of the justification to upgrade my system | ||
timotimo | like, what was it, heaptrack? | ||
MasterDuke | mst: i've run without swap for a long time now. adds a sense of danger and excitement to my life | 23:57 | |
timotimo | hah | ||
i have zram swap and it's nice | 23:58 | ||
mst | I tend to provision my dev systems to look as much like production as possible | ||
'danger and excitement' are not geatures | |||
nor, indeed, are they features | |||
MasterDuke | heaptrack overview: i.imgur.com/IdwUa0E.png | ||
timotimo | wow | ||
i don't think it should generate that much data | 23:59 | ||
MasterDuke | mst: in complete agreement at work. at home i'm more freewheeling |