Geth | nqp/master: 5 commits pushed by TimToady++ | 02:15 | |
TimToady | that unbreaks nqp build on jvm, which I shoulda checked first... | 02:18 | |
BenGoldberg | m: sub circumfix:<< ⟅ ⟆ >>(\_) { _.Bag }; dd ⟅ 1, 2, 3 ⟆ # ← samcv | 02:49 | |
camelia | (1=>1,3=>1,2=>1).Bag | ||
TimToady | hmm, the d setting doesn't compile under jvm, gets what appears to be a recursive exception | 03:32 | |
that's *probably* not my fault... | |||
well, a job for tomorrow, if no actual jvm ex-spurt beats me to it | 03:41 | ||
lizmat | Files=1192, Tests=56772, 204 wallclock secs (12.20 usr 4.71 sys + 1194.43 cusr 117.39 csys = 1328.73 CPU) | 07:25 | |
nine | RAKUDO_RERESOLVE_DEPENDENCIES=0 or RAKUDO_SKIP_RERESOLVING_DEPENDENCIES=1? | 07:37 | |
Trying to avoid negated booleans here, but have to admit that setting an environment option to 0 is kinda unusual | |||
Zoffix: .child is now the safer and thus slower version of .add, isn't it? So I'd argue that we should still use .child in CompUnit::Repository::Installation for better performance. At least where we control the added path part (e.g. it's a constant string). | 07:54 | ||
[Tux] | This is Rakudo version 2017.03-292-g0b5a41ba8 built on MoarVM version 2017.03-138-g40881cdb | 08:19 | |
csv-ip5xs 3.024 | |||
test 12.890 | |||
test-t 5.122 - 5.137 | |||
csv-parser 13.013 | |||
nine | Damn, this sucks. I've found another major stumbling block. my constant $p5helper = %?RESOURCES<libraries/p5helper>.Str; in Inline::Perl5. A compile time constant pointing at the shared library for the NativeCall declarations. That's a path name. So when we build the module in a staging directory, that path will point to that staging dirctory and not to the directory where the shared lib will be installed | 10:04 | |
to. | |||
jnthn | I guess using pass-a-sub-to-the-native-trait approach would make it late bound enough | 10:09 | |
But yeah, I've seen plenty of modules that do the very same thing | 10:10 | ||
nine | Can't do that in this case as I need NativeCall at compile time to determine Perl 5's int size | ||
jnthn | ah, ok | 10:13 | |
nine | However, the only place where the library gets loaded is MVM_nativecall_build which is only called by role Native's !setup. So I assume that even for precompiled modules !setup is always called at runtime as well. This may give us a chance to influence the path. | 10:20 | |
Of course this will not help for any other %?RESOURCES :-/ | |||
timotimo | s: Failure.new(), 'Exception', \() | 10:24 | |
SourceBaby | timotimo, Something's wrong: ERR: Could not find candidate that can do \() in sub sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 29 in block <unit> at -e line 6 | ||
timotimo | s: Failure.new(), 'Exception', \(Failure:D:) | ||
SourceBaby | timotimo, Something's wrong: ERR: ===SORRY!=== Error while compiling -eUnexpected closing bracketat -e:6------> Failure.new(), 'Exception', \(Failure:D:<HERE>) )[1]; | ||
timotimo | s: Failure.new(), 'exception', \() | 10:25 | |
SourceBaby | timotimo, Sauce is at github.com/rakudo/rakudo/blob/0b5a....moarvm#L1 | ||
timotimo | lol. wat. | ||
that's not correct :D | |||
nine | The only way around that I can see is to defer creating a path as long as possible, i.e. %?RESOURCES will give you a path like object that goes through the repo chain every time. This isn't helped by NativeCall accepting only Str, Callable or List though. | 10:27 | |
timotimo | but a Callable can do *anything*! :) | 10:28 | |
nine | Well maybe a Callable (for NativeCall) that overrides .Str (for path concatenation, printing, etc.) | ||
Btw. NativeCall not accepting IO::Path for the library path does not show off our best side. | 10:53 | ||
...and is so easy to fix that I really wonder why no one (especially me) has bothered so far. | 10:54 | ||
timotimo | oh, right | 10:55 | |
quickly, before the release happens | 10:56 | ||
make everything awesome | |||
nine | Yeah, I've got some very experimental, last minute commits to push ;) | 10:57 | |
timotimo | when IO::Path { | 10:58 | |
return $lib.absolute(); | 10:59 | ||
just that, right? | |||
in guess_library_name? | |||
nine | gist.github.com/niner/7bcd6145c320...f2e453f5db | ||
timotimo | oh | ||
also needs to take IO::Path in the signature of the role | |||
yeah, that's the code i cam up with as well | 11:00 | ||
you wanna commit it? | |||
nine | I've got too many half baked changes to run a spec test right now | 11:01 | |
timotimo | OK, i'll do it | 11:04 | |
jnthn | YAMLish fails to install against Rakudo HEAD :( | 11:05 | |
All tests fail with | |||
Too few positionals passed; expected 2 arguments but got 1 in regex list at /home/jnthn/edument/rmtly/.panda-work/1492427079_1/lib/YAMLish.pm6 (YAMLish) line 145 | |||
timotimo | huh, something from the uncurse branch? | 11:06 | |
jnthn | I fear so | ||
If Match and Cursor got unified, and you have a regex called list, won't that end up breaking @$/ or $/.list and so forth? | |||
timotimo | could be, aye | ||
we ought to put a list of problematic regex names up | 11:07 | ||
jnthn | m: grammar G { token TOP { (<list>) }; token list { .+ } }; say G.parse('xxx') | ||
camelia | (timeout) | ||
jnthn | o.O | 11:08 | |
star: grammar G { token TOP { (<list>) }; token list { .+ } }; say G.parse('xxx') | |||
camelia | 「xxx」 0 => 「xxx」 list => 「xxx」 |
||
jnthn | *sigh* | ||
This is a pretty bad regression. | |||
Anyway, I don't have time for this now, so will just go back to running older Rakudo/NQP versions | 11:09 | ||
timotimo | All tests successful. | 11:10 | |
moritz | nikic.github.io/2017/04/14/PHP-7-Vi...chine.html "Exceptions are the root of all evil." :-) | 11:11 | |
nine | Maybe we should get back into the habit of running emmentaler regularly | 11:12 | |
jnthn | Indeed | ||
I'd imagine YAMLish is pretty widely used | 11:13 | ||
Though hopefully this is easy enough to work around | |||
llfourn | fwiw my very grammar involved compiler (github.com/spitsh/spitsh) is broken too after uncurse got merged. | 11:18 | |
haven't had had time to debug it yet but it seems on the smallest possible snippet it timed out like the above. | 11:19 | ||
timotimo | jnthn: i just pushed a fix to YAMLish | 11:21 | |
jnthn | timotimo: Nice, thanks :) | ||
timotimo | leont gave me commit access. i think this situation warrants pushing to master | 11:24 | |
bumped version, too, now | |||
jnthn | Cool, will try that later today | 11:25 | |
lunch; bbl | |||
nine | Of course if I declare a class in CompUnit/Repository/Staging.pm we'll end up depending on CompUnit::Repository::Staging again... | 11:31 | |
Ah, I should probably move that thing into Distribution::Resources anyway as that's where we already have an indirection to avoid depending on the repo. | 11:35 | ||
Zoffix | nine: no, .add is an alias for .child. .child-secure is the slow secure version | 11:39 | |
timotimo | i don't actually see the secureness inside child-secure :o | 11:41 | |
aaah it's in resolve | |||
Zoffix | timotimo: what's not secure about it? | ||
timotimo | i was looking for the magic for combiners | 11:42 | |
nine | Zoffix: but why do we have .add if it's just the same as .child? | 11:43 | |
I thought the goal was to encourage people to use the secure one by making its name short and simple | |||
timotimo | we can't just re-use child because now child-secure has very different semantics | ||
Zoffix | nine: because .child("../some-other-path") looks stupid | ||
timotimo | i.e. it can fail when the folder doesn't exist | ||
or when it's not an actual child, etc etc | 11:44 | ||
Zoffix | nine: why would .add need to be secure? The secureness is about containing a filesystem object within another path. | ||
.add is about concatenating any path fragment | 11:45 | ||
nine: if this were designed from scratch, there wouldn't be a .child-secure. .child would be it. But there's too much ecosystem use to just change its functionality + its securiness would depend on whether the user is using a recent enough compilert | 11:46 | ||
timotimo | hm, let's make a class IO::Pαth that has the right .child | 11:49 | |
nine | The whole situation sucks :/ How about warning about insecure paths with a pointer to .add for a couple of months before making .child strict? | ||
timotimo | and how do you get strilt .child then? | 11:50 | |
strict* | |||
nine | Make it do whatever .child-secure does now? | ||
timotimo | er | 11:51 | |
no | |||
you just said .child should warn about insecure paths | |||
nine | for a transition period | ||
timotimo | so you can't get secure .child at all until the transition period is over? | ||
nine | Yes | ||
timotimo | that's also terrible | ||
nine | 3 years from now it will be considerably less terrible than having a .child that just accepts everything and some .child-secure that no one uses. | 11:52 | |
Zoffix | TBH, I don't see too much suckiness. The "secure" in the name is also a hint to the reader that this part of code is sensitive and shouldn't be changed willy-nilly | ||
nine | Zoffix: that's if the author actually thought about security | 11:53 | |
We require a pragma for even allowing usage of EVAL but the simplest way to concatenate paths will happily take anything | 11:54 | ||
Zoffix | nine: OK, let's remove .child-secure. And make .child be it in 6.d. By that time we can send enough PRs to the ecosystem to swap to .add where it matters, and the safety can be guaranted by just making the program require 6.d-or-newer compiers. | 11:58 | |
timotimo | that doesn't sound terrible | 11:59 | |
Zoffix | nine: thoughts? | 12:18 | |
.child won't warn in the meanwhile. The detection for insecureness is probably a gazillion times slower, since it has to resolve two paths and do string compare | 12:19 | ||
timotimo | oh yeah, it's really really slow | ||
nine | Sounds ok. | 12:20 | |
Zoffix | Though you could still get owned if your IO::Path was created by 6.c code :/ | 12:25 | |
oh wait, no; we'll just replace it, not augment it from 6.d | 12:26 | ||
NeuralAnomaly: status | 12:31 | ||
NeuralAnomaly | Zoffix, [✘] Next release is in the past. Since last release, there are 32 new still-open tickets (6 unreviewed and 1 blockers) and 58 unreviewed commits. See perl6.fail/release/stats for details | ||
Geth | roast: 458500d1f4 | (Zoffix Znet)++ | fudge Teach fudger to recognise new Test::Util routines |
13:18 | |
roast: 7a063b512f | (Zoffix Znet)++ | 2 files [io grant] Fudge .child-secure tests We'll make .child behave like .child-secure later Discussion: irclog.perlgeek.de/perl6-dev/2017-...i_14439386 |
13:21 | ||
rakudo/nom: a98b285b0a | (Zoffix Znet)++ | src/core/IO/Path.pm [io grant] Remove IO::Path.child-secure We'll make .child behave like .child-secure later Discussion: irclog.perlgeek.de/perl6-dev/2017-...i_14439386 |
|||
Zoffix decides to not add IO::Path.sibling after all | 13:41 | ||
Oh | |||
Nevermind. My original take on it was just dumb. There's a sane way to implement it :} | |||
Geth | roast: dcedcc2d27 | (Zoffix Znet)++ | S32-io/null-char.t No need to todo a test Thinko with the .child-secure swap... current .child throws on nuls anyway. |
13:56 | |
Zoffix | "Stage parse : 56.828" | 14:04 | |
Haven't seen it to be less than a minute for ages :) | |||
ZOFFLOP: t/spec/S10-packages/precompilation.t | 14:18 | ||
Geth | rakudo/nom: 8bacad8f84 | (Zoffix Znet)++ | src/core/IO/Path.pm [io grant] Implement IO::Path.sibling |
14:19 | |
roast: 3b36d4db0d | (Zoffix Znet)++ | S32-io/io-path.t [io grant] Test IO::Path.sibling Rakudo impl: github.com/rakudo/rakudo/commit/8bacad8f84 |
14:20 | ||
rakudo/nom: 9984080413 | (Timo Paulssen)++ | lib/NativeCall.pm6 allow IO::Path to be passed for "is native" |
14:22 | ||
timotimo | i totally forgot to push the thing i did | ||
Zoffix | I think I'm done with all the IO stuff I wanted to commit pre-release. | 14:32 | |
nqp-j fails one test file. Any idea how to fix it? gist.github.com/zoffixznet/aff64cf...ce7c54b48b | 14:49 | ||
t/nqp/044-try-catch.t .. 1/54 Unhandled exception; category = 4224 | |||
More verbose output: gist.github.com/zoffixznet/3b2815e...03094c9159 | 14:50 | ||
Oh, it's a new test. | 14:51 | ||
man, I hate that Chrome doesn't have an option to make search case-sensitive :/ | 14:54 | ||
Geth | nqp: 0994e33818 | (Zoffix Znet)++ | t/nqp/044-try-catch.t Temporarily fudge a newly-added test - Fails on JVM - Fudge for release, to keep test suite clean |
14:58 | |
rakudo/nom: 28a6e80ff3 | (Pawel Murias)++ | 5 files Make the dynamic method default to False instead of Nil Make the dynamic return False instead of Nil on Scalar/Hash/Array return False instead of Nil when the container descriptor is missing. %?LANG is installed with container descriptor explicitly marked as dynamic for EVAL to work. |
15:00 | ||
pmurias | It would be great if someone reviewed the 28a6e80ff3 commit ;) | 15:03 | |
Zoffix | code reads good; tough I don't know much about World stuff. | 15:06 | |
heh | 15:09 | ||
Zoffix sees people blaming non-IO stuff on IO | |||
I guess this is like precomp was the prime suspect when we were doing precomp changes :D | |||
japhb crawls back from vacation | 15:11 | ||
Looks like things were quite busy while I was gone. :-) | |||
Zoffix | Yup :) | 15:12 | |
Geth | rakudo/nom: 1867099978 | (Zoffix Znet)++ | src/core/Scalar.pm Use nqp::p6bool instead of so More consistent with what we do elsewhere and also ~20x faster. |
15:14 | |
japhb | FWIW, the IO stuff I care about of late is below the Rakudo level -- I can barely wait for Uni input to be implemented in MoarVM. :-) | ||
Not that I haven't been extremely happy to see all the fixes you've been doing, Zoffix. :-) | 15:15 | ||
timotimo | japhb: you mean decoding utf8 without doing any normalization, yeah? | ||
nine | OMG I think I finally got it to work :) | 15:16 | |
timotimo | fantastic! | ||
nine | Currently running spectest with Inline::Perl5 installed from an .rpm file | ||
It is using the RAKUDO_RERESOLVE_DEPENDENCIES=0 workaround but that's still a hell of a lot better than not being able to deploy at all | 15:17 | ||
timotimo | i don't know what resolve dependencies = 0 does :( | 15:19 | |
nine | timotimo: irclog.perlgeek.de/perl6-dev/2017-...i_14436390 | 15:20 | |
timotimo: does that make sense? | 15:22 | ||
Geth | rakudo/nom: 0dbe451bbc | (Stefan Seifert)++ | 2 files Avoid costly EVALs when we don't have to. No need to deserialize a dependency specification just to serialize (stringify) it again. |
15:26 | |
timotimo | i'm not 100% sure, but i believe you're doing the right thing | 15:27 | |
nine | Well if I ever find out how the EVAL pulls in the totaly unrelated SC, we can get rid of it again. For now it just feels good to make progress on this :) | 15:28 | |
Geth | rakudo/nom: 2694f5d16d | (Stefan Seifert)++ | src/core/CompUnit/PrecompilationStore/File.pm Unfatalize failure to store a repo-id in a precomp store The repo-id is the identity (the complete state) of the whole repository chain at the time when we resolved the dependencies for a precomp file. We store this repo-id alongside the precomp file in the precomp store. When we load a precomp file, we can cheaply check if this repo-id is the same as the current repository chain's. In this case we can be sure that we can still ... (6 more lines) |
15:33 | |
Zoffix | c: 2017.03 dd IO::Path.abspath | 15:37 | |
committable6 | Zoffix, ¦2017.03: «IO::Path is disallowed in restricted setting in sub restricted at src/RESTRICTED.setting line 1 in method FALLBACK at src/RESTRICTED.setting line 31 in block <unit> at /tmp/FTtpN8htqN line 1 «exit code = 1»» | ||
Zoffix | cmon bruh | 15:38 | |
m: class { has $!x; method y { $!x } }.y | 15:39 | ||
camelia | Cannot look up attributes in a <anon|65349248> type object in method y at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
Zoffix | Hm, OK. | ||
Zoffix wonders where ===SORRY!=== | |||
Cannot resolve caller absolute(IO::Path: ) | |||
is coming from. | |||
in META6::bin's test suite | |||
Geth | rakudo/nom: 31cf7d5cfd | (Stefan Seifert)++ | tools/install-dist.pl Fix "No such method 'child'" in install-dist.pl |
15:40 | |
Zoffix | Ahh | 15:41 | |
The file tests. Glad I caugh this before release | |||
timotimo | huh, is absolute not the right method name on an IO::Path? | 15:45 | |
Zoffix | :U vs :D | ||
timotimo | ah | 15:46 | |
Zoffix | hm, though looking more at it, in the past it would've been throwing too, except with "cannot lookup attributes in type object" | 15:47 | |
c: 2017.03 dd ".".IO.WHAT.abspath | 15:48 | ||
committable6 | Zoffix, ¦2017.03: «Cannot look up attributes in a IO::Path type object in block <unit> at /tmp/h2kNVLZ13x line 1 «exit code = 1»» | ||
Zoffix | c: 2017.03 dd ".".IO.WHAT.e | ||
committable6 | Zoffix, ¦2017.03: «Cannot look up attributes in a IO::Path type object in block <unit> at /tmp/JipE5iNybQ line 1 «exit code = 1»» | ||
Zoffix | yeah | ||
Zoffix builds 2017.03 to try META6::bin's tests there | 15:49 | ||
nine | "An exception occurred while evaluating a constant" now that's an extraordinarily unhelpful error | 15:51 | |
jnthn | How so? | ||
Zoffix | m: constant foo = die | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> An exception occurred while evaluating a constant at <tmp>:1 Exception details: Died in block at <tmp> line 1 |
||
jnthn | It includes the details of the exception | 15:52 | |
nine | Except when it doesn't :) | ||
Zoffix | :D | ||
nine | gist.github.com/niner/68a5cd5ef43b...36ee080170 | ||
jnthn | Maybe that's due to the --ll-exception? | 15:53 | |
nine | Indeed! jnthn++ | ||
jnthn | m: EVAL 'constant foo = die'; CATCH { default { .Str.say } } | ||
camelia | An exception occurred while evaluating a constant | ||
jnthn | m: EVAL 'constant foo = die'; CATCH { default { .gist.say } } | ||
camelia | 5===SORRY!5=== Error while compiling /home/camelia/EVAL_0 An exception occurred while evaluating a constant at /home/camelia/EVAL_0:1 Exception details: Died in block at EVAL_0 line 1 |
||
jnthn | Yeah, I think we just .Str it with --ll-exception | 15:54 | |
But the useful bit is in the .gist | |||
Zoffix | oooh | ||
jnthn | m: EVAL 'constant foo = die'; CATCH { default { say .^methods } } | ||
camelia | (message sorry_heading SET_FILE_LINE gist use-case exception filename pos line column modules is-compile-time pre post highexpect backtrace throw resume die is-compile-time gist Str reset-backtrace vault-backtrace rethrow resumable fail) | ||
Zoffix | "===SORRY!=== | ||
Could not find META6" | |||
Then I'm really glad I caught this before release :o | |||
jnthn | m: EVAL 'constant foo = die'; CATCH { default { say .exception } } | ||
camelia | Died in block at EVAL_0 line 1 |
||
jnthn | And the .exception property has the original exception | 15:55 | |
Zoffix | oh nm, it's not it. rakudobrew just doesn't retain modules on version switch. | 15:56 | |
pmurias | jnthn: I made Scalar.dynamic return False when the descriptor is not set | 16:12 | |
Geth | rakudo/nom: 5b862a3256 | (Stefan Seifert)++ | src/core/CompUnit/PrecompilationRepository.pm Workaround for dependency resolver pulling in the Staging repo Dependency re-resolving currently uses EVAL to unserialize a dependency specification. This EVAL causes a reference to the serialization context containing the Staging repository to be included in the precomp file. The Staging repo is for when you want to precompile modules with an ... (15 more lines) |
16:16 | |
rakudo/nom: d4d6a99764 | (Stefan Seifert)++ | src/core/Distribution.pm Cope with changes to repo paths between compile and run time When installing a module via a Staging repo, at compile time, we will find the resources in the staging repo's path while later after installation we'll find it in the target repo's path. Thus we need to defer creating the path as long as possible. We do this by returning an object that does Callable (which NativeCall will run) but also stringifies to the path for non-NativeCall users and backwards compatibility. |
|||
rakudo/nom: 2a0a2d3d74 | (Stefan Seifert)++ | 2 files Make sure we load resources from the Staging repo, too. Now that resources are loaded from a repo found via name resolution rather than direct path access, we need to make sure the Staging repo is found for that name, instead of the target repo. |
|||
nine | Ok, that's all I need for creating RPMs :) | ||
Zoffix | k, it wasn't a Rakudo bug. META6::bin is just broken | 16:17 | |
This assumes it'll always find something: github.com/gfldex/perl6-meta6-bin/...in.pm6#L55 so this part ends up calling Nil.IO.e, which fails either with "cannot attributes" or "no absolute on :U" error, depending on Rakudo's version: github.com/gfldex/perl6-meta6-bin/...n.pm6#L474 | 16:21 | ||
And even if you fix the second issue, you get two more bugs | 16:24 | ||
Sent a PR: github.com/gfldex/perl6-meta6-bin/pull/6 | 16:28 | ||
though I suspect gfldex is still part of bdfoy's club of Ignore Zoffix | |||
ZOFVM: Files=1241, Tests=133744, 110 wallclock secs (21.64 usr 2.83 sys + 2297.75 cusr 134.80 csys = 2457.02 CPU) | 16:42 | ||
Geth | rakudo/nom: 7112a08488 | (Zoffix Znet)++ | src/core/IO/Path.pm [io grant] Add :D on invocant for file tests This adds no new behaviour, just a better error message, since previously we failed with either "can't look up attributes in type object" or "no candidate for .absolute" failures. |
16:43 | |
Zoffix | gs | 16:44 | |
oops | |||
TimToady | I guess you'll need to pick a new root password :P | ||
Zoffix | heh | ||
nah, gs = git status | |||
TimToady | don't have that one, but I have gd, gb, gco, etc... | 16:45 | |
and of course gp='git pull --rebase' | 16:46 | ||
timotimo | ah the good old general practitioner | 16:48 | |
Zoffix | I have gs, gd = 'git diff --ws-error-highlight=new,old', gp = git push; gr = 'git pull'; grr = git pull --rebase; and GRRR = 'git reset --hard; git pull' | ||
dogbert17 | m: grammar G { token TOP { (<list>) }; token list { .+ } }; say G.parse('xxx') # from jnthn | ||
Zoffix | and R and S that sync uncommited rakudo and roast changes with my google VM | 16:49 | |
camelia | (timeout) | ||
TimToady | for some reason this really bothers me: | ||
t/spec/S24-testing/11-plan-skip-all.t ............................. skipped: Testing skippage of `plan skip-all` | |||
Zoffix | TimToady: me too, because I usually spot these longer lines as failures | ||
Maybe move it to rakudo's test suite... | |||
dogbert17 | TimToady: and what about the grammar above? | 16:50 | |
TimToady | kind of a you-think-that's-cute-today | ||
Zoffix | TimToady: the plan skip-all feature? | ||
Perl 5 has it | |||
Geth | rakudo/nom: f07079e0be | TimToady++ | 2 files allow user grammar methods like list/hash/elems The user may still get confused if they call .list or .hash themselves, but at least Capture itself now should not fall into an infinite regression. (One workaround for the user is to call $match.Capture::list instead of $match.list.) |
16:51 | |
Zoffix | And TAP has the "use skippage instead of plan" feature. | ||
TimToady | dogbert17: and what about it? :) | ||
dogbert17 | is impressed :) | ||
TimToady | that was, in fact, what I was spec-testing :) | 16:52 | |
Zoffix | :) | ||
timotimo | TimToady: so was renaming "token list" to "token yamllist" the wrong call for yamlish? | 16:54 | |
TimToady | see above: "One workaround..." | 16:55 | |
dogbert17 | fixing that problem was no Match for TimoToady :) | ||
TimToady | I specifically changed it from "The workaround..." :) | ||
Geth | rakudo/nom: c630548c6e | (Zoffix Znet)++ | t/spectest.data Mark plan skip-all test as stres test It spits out a long "skipped blah" line during run and long lines usually mean failures. Marking it as stress test will at least move that sort of output out of spectest |
16:56 | |
TimToady feels sleepy for some reason :) | 16:58 | ||
oh, I only had one cuppa so far... | |||
nine | TimToady: that's a severe condition. You should fix it immediately | 16:59 | |
TimToady | yeah, almost a release blocker... | 17:00 | |
esp if I can't figure out why jvm infithrows while trying to compile CORE.d | 17:01 | ||
Zoffix | What's a release blocker? | 17:16 | |
dogbert17 | ENOCOFFEE it seems | 17:18 | |
TimToady | I dunno if rakudo-j not building is considered a release blocker, offhand... | ||
Zoffix | Nope. | 17:19 | |
Can't recall last time I built it even. I know lizmat said she had trouble building it. And we disabled reports of JVM Travis due to constant failures | 17:20 | ||
TimToady | then I'm working on an it-would-be-nice feature, mostly just to make sure uncurse didn't cause it | ||
Zoffix | \o/ | ||
TimToady | it does compile CORE.c, just not CORE.d | 17:21 | |
one must have a robust timesharing model in one's brane to do any development for jvm, though | 17:22 | ||
or sit around a lot... | |||
one can get an amazing amount of backlogging done during a single jvm build... | 17:23 | ||
bartolin | hmm, three days ago spectest on rakudo-j was mostly clean (1 flapper) on my box. so, I'm pretty sure it was the ncurse merge | ||
I'm not saying, it should be a release blocker, though | |||
TimToady | was a recursive exception, so might or might not have been my fault, since other folks have been dealing with exceptions lately | 17:24 | |
bartolin | ah ok, I didn't take a look at the latest commits, yet | 17:25 | |
TimToady | first step will probably be to put an infinite regress blocker into the exception to at least get me a decenter stack trace | 17:27 | |
Zoffix | wow, we have 75 commits in the last 3 days :o | 17:28 | |
TimToady | actually, 0th step is to take off my 3-gig limit, since javac apparently can't run in 3 gig... | 17:29 | |
Zoffix | TimToady: how should I log the uncurse changes in the Changelog? | ||
bartolin | I've seen a ArrayIndexOutOfBoundsException somewhere. The one place I remember this error happening is here | 17:30 | |
j: my (\foo) = 42 | |||
camelia | ===SORRY!=== java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: -1 |
||
TimToady | that looks familiar | ||
bartolin doesn't know if that helps somehow | |||
TimToady | j: my \foo = 42 | 17:31 | |
camelia | ( no output ) | ||
TimToady | so only inside parens... | ||
bartolin | it's from S04-declarations/my.t -- RT #126626 | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=126626 | ||
TimToady | j: multi sub await(Awaitable:D \a) { } | 17:33 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Invalid typename 'Awaitable' in parameter declaration. at <tmp>:1 ------> 3multi sub await(Awaitable:D7⏏5 \a) { } expecting any of: pair value |
||
TimToady | j: multi sub await(Any:D \a) { } | 17:34 | |
camelia | ( no output ) | ||
TimToady | well, that seems okay | ||
bartolin | ah, it might be possible to get a better error message by removing the if/else here and just throw ExceptionHAndling.dieInternal: | ||
github.com/rakudo/rakudo/blob/c630...c.java#L66 | |||
bartolin has to take care of the kids now, bbl | |||
TimToady | thanks | 17:35 | |
Zoffix | j: my (\foo) = 42 | 17:39 | |
camelia | ===SORRY!=== java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException |
||
Zoffix | j: my (\foo) = 42, | ||
camelia | ===SORRY!=== java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException |
||
Zoffix | j: my (\foo) = 42, | ||
camelia | ===SORRY!=== java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException |
||
Zoffix | :S | ||
<Zoffix_> j: my (\foo) = 42, | |||
===SORRY!=== java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: -1 |
|||
^ that one has a -1 at the end | |||
TimToady guesses this one is easy to fix once we find it, but finding it is like looking for a needle in a nuclear power plant | 17:44 | ||
pmurias vaguely remembers there was some flag to get better stack traces for the java runtime part | 17:55 | ||
[Coke] | pmurias: --ll-exception? | 17:57 | |
MasterDuke_ | there is some other env variable | 18:02 | |
TimToady | weird, putting a BEGIN at the start of gen/jvm/CORE.d.setting has no effect, so it's blowing up before it ever parses the file, it would seem | 18:04 | |
but after emitting "Stage parse" | 18:05 | ||
MasterDuke_ | during the install of CORE.setting perhaps? | ||
bartolin | I get "Type check failed in assignment to '$DID_MATCH'" after changing RakudoContainerSpec.java (see link above) | ||
TimToady | well, that's definitely uncurse territory | 18:06 | |
TimToady testing a patch | 18:09 | ||
slowly... | 18:10 | ||
Geth | rakudo/nom: c1804bd41f | TimToady++ | src/core/Match.pm make initializer pass stricter jvm typecheck |
18:20 | |
TimToady | bartolin++ | ||
Zoffix | \o/ | 18:21 | |
TimToady | we just want it to be your fault the release is delayed, not ours :P | 18:22 | |
Zoffix | :D | ||
I can always blame it in jnthn :P | 18:23 | ||
TimToady | at least I did get you a slightly faster compile... | ||
Zoffix | *on | ||
jnthn | .oO( What's Zoffix doing inside of me?! ) |
||
I'll get a MoarVM release later this evening :) | |||
TimToady | I dunno, it's too dark to hack | ||
jnthn | hah :) | 18:24 | |
Full marx for that reference. | |||
TimToady | I guess I woke up groucho this morning. | 18:25 | |
.oO(I wonder how different the world would be if Karl Marx had been spelled Carl Marks.) |
18:27 | ||
fudging seems a lot slower than it used to be...is that just cuz we have more tests? | 18:29 | ||
Zoffix | a lot is how a lot? | 18:30 | |
I added 3 more routines for it to know how to fudge and yeah, we added 2000 more lines of tests. | 18:31 | ||
Not sure how much that'd affect it though, since it's a Perl 5 script :/ | |||
TimToady | maybe it's just that javac throws out all the OS's cached disk blocks... | 18:32 | |
I mean, merely by being about as big as my physical memory, not explicitly | 18:33 | ||
maybe someone should write a make-based fudger that only fudges the files that have changed since last time | 18:39 | ||
maybe our current fudger could compare modification times, if it doesn't already... | 18:40 | ||
or maybe trying to run 6 jvm tests in parallel on a 4-core machine is just a really bad idea... | 18:50 | ||
TimToady wonders what percentage of reductions could now write directly to the capture rather than the cstack because they never backtrack... | 18:55 | ||
Zoffix reminds: need to write down uncurse into ChangeLog; should should I write for it? | 19:00 | ||
s/should should/what should/; | 19:01 | ||
timotimo | well, uncurse is about getting rid of the Cursor object by merging Match and Cursor together | 19:02 | |
Zoffix | Oh | ||
m: dd Cursor | |||
camelia | Match | ||
Zoffix | "Merged Cursor into Match; in preparation of for future removal of Cursor" ? | 19:04 | |
TimToady | it was effectively done the other direction, then Cursor was renamed to Match, but close enough :) | 19:09 | |
cog_ | b | 19:10 | |
Zoffix | ok :) | 19:11 | |
Zoffix leaves TAP.pm in in this release | 20:02 | ||
Too tired to take care of it and it's not like there's any rush to toss it | 20:03 | ||
Geth | rakudo/nom: fd89b7ebf7 | (Zoffix Znet)++ | docs/ChangeLog Log all commits to date |
20:11 | |
Zoffix | "PART 3: Information on Changes Due to IO Grant Work": rakudo.org/2017/04/17/final-notes-o...rant-work/ | 20:28 | |
heh | 20:29 | ||
That URL reveals my hesitation to call it the "final" note, just in case :) | |||
timotimo | oh hey | 20:31 | |
hey hey hey hey | |||
why don't we have .link take a Pair as argument | |||
link($linkfile => $existingfile) | |||
Zoffix | Because we don't use that convention anywhere else, other than Test::subtest and you're opening up the `oops => 'named-arg'` issue, further mudding up the implementation (making it look for both positional pair and `%_` that contains 1 key), also closing the path to add any additional args to the routine, should we ever need to | 20:33 | |
timotimo | Zoffix: we have Enum ~~ Enum, and a bit later Numeric.ACCEPTS(Any), care to unify that? | 20:34 | |
OK | 20:35 | ||
Zoffix | timotimo: it's ordered by speed improvement; largest first | 20:41 | |
timotimo | yeah, but one says ACCEPTS, the other says ~~ | ||
you could mention the profiler being fixed (that's an nqp commit) | 20:42 | ||
Zoffix | ahh.. sure | ||
fixed how? | |||
(like what was broken?) | 20:43 | ||
MasterDuke_ | the allocations tab hadn't worked for a while, does now | ||
timotimo | well, the allocations, gc, and OSR tabs weren't working at all | ||
did the last changes for the sql profile land in nqp master yet? | 20:44 | ||
MasterDuke_ | not yet | 20:45 | |
i could merge the minor changes i've made so far. haven't finished the more extensive stuff we've talked about | |||
timotimo | hmm, probably not very important to get the first bits into the release | 20:46 | |
MasterDuke_ | yeah, figured it would make more sense as an actual upgrade in capability | 20:47 | |
timotimo | right | ||
and by next release we might even have an application to go with it | |||
MasterDuke_ | oooo, got something up your sleeve? | ||
timotimo | nope | 20:48 | |
just hoping someone might get inspired i guess | |||
we might salvage the qtprofiler to (also?) be able to open the sqlite files | |||
MasterDuke_ | that would be nice | ||
Geth | rakudo/nom: b0e3d26cf9 | (Zoffix Znet)++ | docs/ChangeLog Unify format |
20:53 | |
rakudo/nom: a18b3fb4b1 | (Zoffix Znet)++ | docs/ChangeLog Add Part 3 upgrade note in notes section |
20:54 | ||
nqp: 46e7a95b8e | (Zoffix Znet)++ | tools/build/MOAR_REVISION Bump MoarVM Brings MoarVM commits: github.com/MoarVM/MoarVM/compare/2...9-g34d5a46 34d5a46 Add missing MVMROOT when reading bytes. 8d5d036 Mark thread GC blocked when doing sync writes. ad99a1e Add .editorconfig file to set indentation usage of files ... (28 more lines) |
21:12 | ||
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...9-g34d5a46 | |||
samcv | yay | ||
Geth | rakudo/nom: 756877e1b4 | (Zoffix Znet)++ | tools/build/NQP_REVISION Bump NQP Brings NQP commits: github.com/perl6/nqp/compare/2017....8-g46e7a95 46e7a95 Bump MoarVM 0994e33 Temporarily fudge a newly-added test 9aa9c9e Merge branch 'uncursej' ... (38 more lines) |
21:13 | |
rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017....8-g46e7a95 922ca912e1 | (Zoffix Znet)++ | docs/ChangeLog |
|||
samcv | tell me of this qtprofiler timotimo | 21:15 | |
timotimo | find it in tadziks github | 21:16 | |
samcv | k | ||
timotimo | we made it because the html profiler was extremely slow | ||
samcv | don't i know XD | ||
heh | |||
timotimo | but the qtprofiler uses a json parser that has a random limit for filesize | ||
which is maximum annoying | |||
samcv | can that be changed? | ||
qt has some fast string things. their utf-8 decoder has SIMD optimizations for tons of processors | 21:17 | ||
timotimo | yeah, you can probably plop in a different json parser | 21:18 | |
Zoffix | Alright. | ||
samcv | oh does qt have its own json parser | ||
Zoffix starts prepping the rocket | |||
timotimo | it uses QJsonDocument | ||
samcv | it might. it has everything | ||
Zoffix | Release time. | ||
timotimo | that seems to be qt's json parser | ||
samcv | k | ||
MasterDuke_ | i think the filesize limitation is in qdocument, not the actual json parser part | 21:19 | |
samcv | ah | ||
timotimo | bugreports.qt.io/browse/QTBUG-47629 - nobody seems to care about it | ||
MasterDuke_ | i recompiled qt and increased the limit, but i couldn't increase it very much | 21:20 | |
samcv | Without the support of storing large amounts of data QJson classes automatically turns into ice cream in a glass. | ||
You look at it, it looks delicious but you can not lick. | |||
XD | |||
timotimo | enum { | 21:21 | |
639 MaxSize = (1<<27) - 1 | |||
640 }; | |||
samcv | argh qt why you do dis | ||
Zoffix | NeuralAnomaly: status | 21:23 | |
NeuralAnomaly | Zoffix, [✔] Next release is in the past. Since last release, there are 32 new still-open tickets (0 unreviewed and 0 blockers) and 0 unreviewed commits. See perl6.fail/release/stats for details | ||
Zoffix | NeuralAnomaly: cut the release | ||
NeuralAnomaly | Zoffix, Will do! If you're feeling particularly naughty, you can watch me at perl6.fail/release/progress or go look at some cats icanhas.cheezburger.com/lolcats | ||
Zoffix, ☠☠☠☠☠☠☠☠☠☠ ABNORMAL EXIT! | |||
Zoffix | stupid robot... can't you just guess the new IP for the VM! | 21:24 | |
samcv | Please contact your system administrator. | ||
Zoffix, i am contacting you as instructed | |||
now please contact yourself | |||
Zoffix | NeuralAnomaly: cut the release | 21:25 | |
NeuralAnomaly | Zoffix, Will do! If you're feeling particularly naughty, you can watch me at perl6.fail/release/progress or go look at some cats icanhas.cheezburger.com/lolcats | ||
Zoffix, ♥♥♥♥♥♥ Prep done | |||
Geth | nqp: bdbe19615b | (Zoffix Znet)++ | tools/build/MOAR_REVISION bump MoarVM version to 2017.04 |
||
nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2......2017.04 ffe7afb864 | (Zoffix Znet)++ | VERSION |
|||
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2......2017.04 | |||
samcv | omg it's. happening | ||
dunno if i've been on live during the build before | |||
Zoffix | :) | 21:26 | |
[Coke] | "back in my day, we did those commits by hand, and we LIKED it." | ||
samcv | how to best generate a huge profile file | 21:28 | |
that won't work with qtprofiler | |||
MasterDuke_ | profile building rakudo | ||
that's the exact thing that prompted me to create the sql output | |||
samcv | how do i do that MasterDuke_ | 21:29 | |
MasterDuke_ | just re-run the command immediately before "stage start", but add --profile-compile | 21:30 | |
how much ram do you have? you're probably going to run into problems if you don't have at least 8gb | 21:32 | ||
samcv | 16gb | ||
add it to the makefile? | |||
MasterDuke_ | i just copy it and run it directly from the command line | 21:34 | |
samcv | oh | ||
NeuralAnomaly | Zoffix, ♥♥♥♥♥♥ nqp tests OK | 21:35 | |
samcv | NeuralAnomaly, status | ||
NeuralAnomaly | samcv, [✔] Next release is in the past. Since last release, there are 32 new still-open tickets (0 unreviewed and 0 blockers) and 0 unreviewed commits. See perl6.fail/release/stats for details | ||
samcv | why does it feel like it's compiling moarvm again | 21:36 | |
Zoffix | It compiles it 4 times during the entire process | 21:37 | |
[Coke] | (which we used to do by hand, at least twice. :) | 21:38 | |
Zoffix++ again, for automating this grunt work. | 21:39 | ||
and making it... less grunty? | |||
samcv | MasterDuke_, moar --libpath="/home/samantha/perl6/share/nqp/lib" --libpath="/home/samantha/perl6/share/nqp/lib" perl6.moarvm --profile=blah.json --nqp-lib=blib --setting=NULL --ll-exception --optimize=3 --target=mbc --stagestats --output=CORE.setting.moarvm gen/moar/CORE.setting | ||
like this? | |||
is it at the right position? | |||
i tried putting it first but it wasn't having any of that | |||
timotimo | that should be it, but you need --profile-compile in there, too | ||
and i think --profile-filename | |||
it needs to go after perl6.moarvm | 21:40 | ||
MasterDuke_ | --profile-compile --profile-filename=foo.json | ||
samcv | thx | ||
timotimo | but yeah, the memory usage from that si rather massive | ||
samcv | good | 21:41 | |
or bad i guess. well. i will monitor it | 21:42 | ||
well up to 3.3GB | 21:44 | ||
NeuralAnomaly | Zoffix, ♥♥♥♥♥♥ nqp release tarball tests OK | 21:45 | |
Zoffix, ♥♥♥♥♥♥ nqp release DONE | |||
timotimo | thing is that we have one entry in our call graph for every path to a routine | ||
Geth | rakudo/nom: 9e48297944 | (Zoffix Znet)++ | docs/announce/2017.04.md Generate release announcement for 2017.04 |
||
rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017.......2017.04 137b7665a5 | (Zoffix Znet)++ | tools/build/NQP_REVISION |
|||
rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017.......2017.04 05fa8aa3e5 | (Zoffix Znet)++ | VERSION |
|||
timotimo | that's ... not so eloquently put | ||
¦ rakudo/nom: version bump brought these changes: github.com/perl6/nqp/compare/2017.......2017.04 | |||
timotimo | i just mean that every routine can be in there as many times as there are different paths to the main function | ||
i.e. if you have sub a { a }; it'll generate infinitely many entries in the call graph | |||
samcv | that's a lot | ||
timotimo | okay, it'll *try to* generate infinitely many entries :) | 21:47 | |
also, for every gc run we build a little data structure entry | |||
i'm not sure how often the gc runs during setting compilation | |||
but i imagine it'd be a whole lot | |||
samcv | so much frreezing | 21:49 | |
should have closed chrome | |||
how did it use 17GB of swap... | 21:51 | ||
timotimo | i'll try with telemetry | ||
samcv | howwww | ||
omg | |||
timotimo | oh | ||
you can sidestep most of the optimizer with --optimize=off | 21:52 | ||
samcv quits chrome while system is not frozen | |||
timotimo | that'll make the call graph a bunch smaller | ||
samcv | right now it's just saying writing profiler output to foo.json | ||
and swap usage is down to 9GB at least | |||
timotimo | because the optimizer walks the whole ast and it'll have as deep a call graph as the ast is deep | ||
samcv | at least i'll get a really big json? | 21:53 | |
NeuralAnomaly | Zoffix, ♥♥♥♥♥♥ Rakudo stresstest (master) OK | ||
timotimo | 1326 lines of "gc finished" in the telemetry log | ||
NeuralAnomaly | Zoffix, ☠☠☠☠☠☠ Rakudo: make stresstest (6.c-errata) | 21:55 | |
Zoffix, ☠☠☠☠☠☠☠☠☠☠ ABNORMAL EXIT! | |||
samcv | ruh roh | ||
timotimo | whoops | ||
Zoffix | :) | ||
samcv | feels like my system is getting murdered | 21:56 | |
Geth | roast/6.c-errata: 6e3d180aff | TimToady++ (committed by Zoffix Znet) | S02-types/WHICH.t Cursor is going away And Cursor was always considered to be mostly internal anyway, not really part of the official Perl 6 language. So don't test for it. (We will still have Cursor for now, but only as an alias to Match.) |
||
samcv | freezes periodicly for unknown amounts of time | 21:57 | |
timotimo | yeah | ||
Zoffix | NeuralAnomaly: steps | ||
NeuralAnomaly | Zoffix, all pre nqp r post pre-r6 pre-blank-slate nqp-clone nqp-bump-vers nqp-build nqp-test nqp-tar nqp-tar-build nqp-tag nqp-tar-sign nqp-tar-copy r-clone r-prep-ann r-bump-vers r-build r-p5 r-stress r-stress-v6c r-tar r-tar-build r-tar-p5 r-tar-stress r-tag r-tar-sign r-tar-copy post-scp | ||
MasterDuke_ | samcv: --target=parse will also make it a little quicker/use less ram | ||
timotimo | samcv: it's still writing out the json file? i *think* it spits out pieces of the json before it finishes, but i'm not sure | ||
samcv | yeah idk | 21:58 | |
MasterDuke_ | it does | ||
Zoffix | NeuralAnomaly: run r-stress-v6c r-tar r-tar-build r-tar-p5 r-tar-stress r-tag r-tar-sign r-tar-copy post-scp | ||
samcv | it's hovering between 8GB and 9GB swap. and sti/ll using 90% of ram usage | ||
it was at 16GB of swap usage... | |||
but foo.json is still 0 bytes | 21:59 | ||
i will go away for a while. and hope my system is not on fire when i get back | |||
NeuralAnomaly | Zoffix, ♥♥♥♥♥♥ Rakudo stresstest (6.c-errata) OK | 22:00 | |
timotimo | OK, i see | ||
well, the --target=ast hint is good, and the --optimize=off tip is an alternative to that | |||
the telemetry log for core setting build is 99% gc timings and a tiny amount of string reads and writes (but the writes are only the stage stats) | 22:02 | ||
MasterDuke_ | this is my last perf report of a compile: gist.githubusercontent.com/MasterD...o_children | 22:06 | |
NeuralAnomaly | Zoffix, ☠☠☠☠☠☠☠☠☠☠ ABNORMAL EXIT! | 22:07 | |
Zoffix, ☠☠☠☠☠☠ Rakudo: make stresstest (tarball testing) | |||
Zoffix | ZOFFLOP: t/spec/S17-supply/wait.t | ||
NeuralAnomaly: run r-tar-stress r-tag r-tar-sign r-tar-copy post-scp | 22:09 | ||
NeuralAnomaly | Zoffix, ♥♥♥♥♥♥ Rakudo release DONE | 22:11 | |
Zoffix, ♥♥♥♥♥♥ Post: upload tarballs to rakudo.org and rakudo.perl6.org | |||
Zoffix, ???????????????????????????????????????????????????????????? | |||
Zoffix, The release of **Rakudo #110 2017.04** has now been completed | |||
Zoffix, ???????????????????????????????????????????????????????????? | |||
NeuralAnomaly celebrates with an appropriate amount of fun | |||
lizmat | whee!!! just in time :-) | 22:12 | |
lizmat waves from Copenhagen | |||
Zoffix | NeuralAnomaly: thanks, baby | ||
NeuralAnomaly | Zoffix, any time, buddy! | ||
timotimo | oh welcome back lizmat | 22:13 | |
lizmat will now try to finish the P6W in the next hour or so | |||
Geth | rakudo/nom: 241831e05b | (Zoffix Znet)++ (committed using GitHub Web editor) | docs/release_guide.pod 2017.04 is now in the past |
22:15 | |
nqp: 6916dd0d99 | (Zoffix Znet)++ | t/nqp/044-try-catch.t Revert "Temporarily fudge a newly-added test" This reverts commit 0994e33818d2f8c8ab92a1e53043c01da40d4b94. |
22:16 | ||
samcv | timotimo, there's no way it's gonna be more than likie 5GB of json right? | 22:18 | |
i only have 5.7Gb of space left on disk | |||
NeuralAnomaly, thanks baby | 22:20 | ||
aww. | |||
Zoffix | :) | ||
Zoffix calls it a night | 22:21 | ||
\o | |||
samcv | oh well it's finally gottan some stuff to disk. json file is at 307MB so far | 22:22 | |
night Zoffix | |||
MasterDuke_, what's the biggest json you ever got | 22:25 | ||
timotimo | one time, i pulled this GIGANTIC JSON | ||
i could barely hold it in my arms | |||
then i brought it to this fantastic restaurant and they prepared it real fine | 22:26 | ||
samcv | LOL | 22:32 | |
this one is getting much better than i wanted | 22:34 | ||
they grow up so fast | |||
timotimo | did it reach a gig yet? | ||
samcv | getting close | ||
swap use went back up to 14G too. and still full mem usage (16GB) | 22:35 | ||
so much memory | |||
timotimo | yeah, the nature of how we jsonify means we're not really freeing stuff up | 22:36 | |
maybe we can go through lists shifting off elements rather than just iterating through 'em | |||
that'll mean parts of the call graph that are no longer interesting will natuarlly be GC'd | 22:37 | ||
samcv | yeah | 22:38 | |
and they told me i had too much swap... you'll never need 32GB of swap they said | 22:39 | ||
proved them wrong! | |||
haha | |||
i've hit 1.1GB | 22:44 | ||
MasterDuke_ | i don't remember how big they've been | 22:45 | |
samcv | have you used up 32GB of memory total before? | 22:46 | |
so the .html are just json embedded in the html? with a javascript thing to graph it? | 22:47 | ||
holds the same data as the json right? | |||
MasterDuke_ | yep | ||
samcv | ok memeory dropped off a cliff. i think *hope* it's done | 22:48 | |
timotimo | and the best thing about it | ||
samcv | \o/ | ||
timotimo | in order to put it inside the javascript, we have to escape one extra bit | ||
samcv | fuck | ||
timotimo | because browsers will absolutely explode when we just put it in as a literal | ||
samcv | what do we have to escape? | 22:49 | |
timotimo | like " | ||
and of course \ | |||
samcv | but it's already javascript json right? | ||
shouldn't it like already be fine? | |||
if put in between the right tags? | |||
or html doesn't let you? | |||
timotimo | hm | 22:50 | |
samcv | Malformed input file, top level isn't an array: "too large document" | ||
timotimo | i suppose you could, and then grab the string from the dom | ||
samcv | that did it | ||
timotimo | though | ||
no, that's probably bad | |||
we'd then have to escape < and > at the least | 22:51 | ||
and &, too | |||
samcv | X| | ||
timotimo | i think i'll go to bed soon-ish | ||
MasterDuke_ | samcv: how big did the file end up? | 22:56 | |
samcv | 1.2G | ||
timotimo | samcv: wanna try loading it with JSON::Tiny or JSON::Fast? :D | ||
samcv | though we might only have to escape a </script> string actually | ||
oh god | |||
timotimo, jsfiddle.net/YmhZv/14/ | 22:58 | ||
i think this works | |||
see how i escaped the </script> | |||
i think it will ignore any other thing except </script> | |||
cause it needs matching tags | 22:59 | ||
timotimo | i get "Hi" there | ||
samcv | yes | ||
if you remove the escaping | |||
and hit run | |||
timotimo | Uncaught SyntaxError: Unexpected token a in JSON at position 152 | ||
at JSON.parse (<anonymous>) | |||
what escaping? | |||
MasterDuke_ | a sql profile from feb was 770mb and 13million lines | 23:00 | |
samcv | timotimo, line 6 | ||
<\/script> if you remove the backslash and hit run | |||
the text shows up | |||
timotimo | then i get "i should not exist" | 23:01 | |
samcv | yep | ||
because it reads the </script tag embedded inside the json | |||
timotimo | yeah but if the code worked it shouldn't say "Hi" | ||
it should say "awesome" | |||
samcv | yeah the code doesn't work | ||
that's not the point! | |||
lol | |||
timotimo | %) | ||
you could have told me that before | |||
samcv | feel free to make the code work | ||
but timotimo the "Hi" is the 1st line. | 23:02 | ||
and it's not inside the script. so it should always show | |||
timotimo | no, you're replacing it with "result: awesome" | ||
that's how .text works | |||
samcv | k | ||
well please fix code | |||
if it's not too much trouble. you know this better than i do | 23:03 | ||
timotimo | i'm sure the " inside the script tag are bad | ||
because they're already inside a string literal | |||
oh | |||
and there was a trailing , in there as well | |||
samcv | but the " would already have been escaped | ||
timotimo | jsfiddle.net/YmhZv/17/ - do you get my changes? | ||
samcv | in our moarvm right? | 23:04 | |
yes | |||
somehow | |||
timotimo | well, the code works now | ||
we have full control over how we escape things | |||
samcv | but we escape once because json right | ||
and then again to get it inside html | |||
but if we put it in script tags, then we only have to escape </script> maybe. | 23:05 | ||
that would be nice though | |||
timotimo | we don't actually escape "again", we immediately replace " with \\\" or whatever | ||
samcv | oh | ||
so not too much effort? | |||
ok | |||
timotimo | probably not | 23:06 | |
samcv | ugh i'm so hungry | ||
browsers have it hard man | |||
timotimo | i think it'd just be "kick out the special code we had in place for the json-in-javascript-string mode" | ||
is it because mrario keeps coming over and throwing them into bombs and spikes and lava pits? | |||
samcv | browsers are very much abused | ||
no | |||
timotimo | AFK, BBIAB | 23:07 | |
okay, so | 23:18 | ||
how many bytes do we save from this, i wonder | |||
samcv | hm? | 23:19 | |
timotimo | by getting rid of those escapes | 23:20 | |
whoa | 23:21 | ||
we have a --profile-stage commandline switch?! | |||
MasterDuke_ | ? what does that do? | ||
timotimo | only profiles a single stage | ||
whereas with --profile-compile you get "the beginning to this particular stage, and also the program ends here" | 23:22 | ||
MasterDuke_ | cool, never knew that existed | ||
timotimo | hmm. i wonder, though | 23:23 | |
that uses run_profiled, which installs an end phaser to get the profile data dumped | |||
like, it installs a value in @END_PHASERS from the perl6 hll | |||
oh | |||
but the core setting is also already perl6 code | |||
how did i forget that? | 23:24 | ||
TimToady | well, at the beginning it's still basically nqp, and by then end it's Perl 6 :) | 23:26 | |
well, the syntax is Perl 6 at the beginning, fwiw | |||
timotimo | right | 23:27 | |
here's hoping that making to_json in the profiler destructive will be positive for memory usage | 23:32 | ||
timotimo shuts down a few programs | 23:33 | ||
positive in a negative sense. | 23:34 | ||
13823988maxresident - this is with --optimize=off, which i claim is important | 23:37 | ||
TimToady | so basically, pretending there's no spesh or jit... | 23:39 | |
or is that aimed somewhere else? | 23:40 | ||
timotimo | oh, no, that's just skipping Perl6::Optimizer | ||
TimToady | ah | ||
MasterDuke_ | profiling a rakudo compile? | ||
samcv | timotimo, i'm trying to load the 1.2G profile with json::fast | 23:42 | |
it'll take like 100 years right? | 23:43 | ||
timotimo | no idea | ||
JSON::Fast is kinda fast | |||
um ... it didn't actually profile at all?! | 23:46 | ||
no, it did profile, but ... it didn't write a file?! | |||
what even ... | |||
i mean, it took way longer | |||
oh, it did get oom'd | 23:47 | ||
without telling me so on the commandline | |||
well, ain't that friendly | |||
13794460maxresident | 23:49 | ||
but i can't really compare those | |||
time to make some more swap. | |||
samcv | ok i'm killing it. i'm at 2GB swap so 18GB total ram usage now | ||
lizmat | and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com | 23:50 | |
p6weekly.wordpress.com/2017/04/17/...-the-road/ | |||
samcv | "Please have the appropriate amount of more efficient fun!" :-) | 23:51 | |
i like that lie | |||
*line | |||
timotimo | hahaha | ||
breaking: perl6 dev admits to perl6 being slow | |||
samcv | haha | 23:52 | |
that's not a new thing! | |||
lizmat is *very* tired after driving 1K km and goes to get some shuteye | |||
samcv | sleep well | ||
timotimo | oh crap, there isn't even much space left on my external hard drive? | 23:54 | |
oh, taht's not my external hard drive | |||
samcv | now idk what to do with this 1.2GB json file :\ | 23:55 | |
MasterDuke_ | lizmat++ | ||
samcv | i can't do anything with it sanely | ||
Zoffix | lizmat++ Thanks. Good weekly | 23:56 | |
samcv | maybe compile a modified qt that doesn't have a limit? | ||
MasterDuke_ | samcv: you've used abs? | 23:57 | |
timotimo | oooh | ||
someone claimed perl6weekly.wordpress.com and the only post says "you're looking for p6weekly.wordpress.com" | |||
samcv | what? arch build system? | 23:58 | |
if so then yes | |||
hah | |||
MasterDuke_ | yeah, that's how i build a modified qt when i was experimenting with upping that limit | ||
samcv | oh | ||
did it work? | |||
MasterDuke_ | i was able to change the 1<<27 to something like 1<<30 | 23:59 | |
samcv | oh |