Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-07-07

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:11 japhb joined #perl6-dev
00:50 Zoffix Someone familiar with GLR and for loops, please advise how to proceed with https://rt.perl.org/Ticket/Display.html?id=124568   It's about whether this test should be removed now: https://github.com/perl6/roast/blob/ab74762da156fa6fda5dd39281f7ffcc361d5a88/S04-statements/for.t#L473
01:29 tbrowder left #perl6-dev
01:41 sortiz joined #perl6-dev
01:48 ilbot3 joined #perl6-dev
01:48 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today
02:05 Zoffix What do we do with tickets like this one? https://rt.perl.org/Ticket/Display.html?id=123577
02:06 Zoffix I mean. Large proposals that don't gather any comments on the ticket?
02:09 gfldex the role part could warn depending on use warn-multiple-inheritance. The first part would require AI.
02:10 Zoffix AI? 0.o
02:10 gfldex to actually solve it rakudo would need to understand each and any where clause
02:11 Zoffix Well, it can just bail out and call it ambiguous. Though, of course, that would severely limit the usefulness of subtypes
02:12 gfldex and how would it know that the where clause part is ambiguous?
02:12 geekosaur I think the suggestionis "if it has a where clause, it is ambiguous"
02:12 Zoffix It wouldn't. It'd just call ambiguousness if it sees same ... yeah, that
02:13 Zoffix But that's crap :)
02:14 gfldex as long as a basic type is used, one could write a module that uses aproximation to find some ambiguous where clauses
02:14 gfldex i fixed the CSS fallout from my Pod::To:HTML changes
02:14 gfldex i will care about the JS stuff tomorrow
02:15 Zoffix gfldex++
02:17 gfldex i put the ToC into a table. It's a good bit narrower and and less nervous. If we want to move it side by side with the main content, it will be easier to do so.
02:18 Zoffix Table? Like <table>?
02:18 gfldex yes
02:19 Zoffix Why? It's a list of links. tables for markup are so 1990s :)
02:20 gfldex i don't care how old an idea is. If it gets the job done I use it.
02:21 Zoffix gfldex, but what problem are you experiencing with a <ol>?
02:21 gfldex also, I do know why LaTeX uses item lists for ToC. Multi page tables are a bitch. In html that's not a problem. There is no bottom of the page.
02:23 Zoffix It probably uses item lists for Toc because is a list of a items :) Tables are for tabular data.
02:23 gfldex the problem I got with ol is that you pretty much have to use indentation for separation. I strongly dislike it when I read a ToC and have to adjust the beginning of the line for every 3rd line or so. Very nervous to read.
02:24 Zoffix How does a table solve that?
02:24 Zoffix Just toss the indent add borders and it'll look exactly the same
02:24 Zoffix You even have display: table-* CSS properties to make any element behave and look like a proper table.
02:25 Zoffix I don't care much what people use, but IMO using a table for markup in 2016 is the lamest thing in web dev.
02:25 Zoffix s/markup/layout/;
02:26 gfldex if it doesn't work out, it would not be hard to change it to a ol
02:27 Zoffix Obligatory link: https://www.hotdesign.com/seybold/everything.html
02:27 gfldex why exactly 2016, why not 2015? It's an empty argument and I would prefere not to follow it further.
02:27 Zoffix I've not used it since my days in #css a decade ago :P
02:28 vendethiel joined #perl6-dev
02:28 Zoffix gfldex, because a decade ago CSS was poorly supported and people used tables for layout because it was a pain in the ass to do it with CSS and have it work. Today, it works, so using semantically incorrect markup just makes zero sense
02:28 Zoffix It's like seeing a shelf with pears in the store tagged as apples.
02:29 Zoffix The argument isn't empty and people stopped having it a while ago :)
02:30 Zoffix If you want to use tables, use tables. Who am I to stop you.
05:24 vendethiel joined #perl6-dev
06:52 [Tux] This is Rakudo version 2016.06-154-g55c359e built on MoarVM version 2016.06-9-g8fc21d5
06:52 [Tux] test            15.632
06:52 [Tux] test-t           9.104
06:52 [Tux] csv-parser      16.806
06:53 [Tux] all in the 9.[0-2]:
06:53 [Tux] 2016-06-30 15:19:35 test-t 9.171
06:53 [Tux] 2016-07-03 14:17:35 test-t 9.284
06:53 [Tux] 2016-07-03 14:38:20 test-t 9.285
06:53 [Tux] 2016-07-05 09:25:29 test-t 9.072
06:53 [Tux] 2016-07-05 09:29:59 test-t 9.146
06:53 [Tux] 2016-07-07 08:50:47 test-t 9.104
07:03 nine I'll take the 2016-07-05 ;)
07:32 RabidGravy joined #perl6-dev
07:42 AlexDaniel joined #perl6-dev
07:58 psch https://gist.github.com/peschwa/b23c2882ff470676544845c23fc42216 is a thing, apparently
07:58 psch i think what's going on there is that we just straight up don't install a handler at all
07:58 psch and i'm not sure what kind of handler we have to put there, and how
07:59 psch like, clearly a control handler that handles the return would be wrong, because actually wanna throw X::ControlFlow::Return
07:59 psch +we
08:00 psch hm, actually, maybe if we just don't panic() in ExceptionHandling but instead build the HLL exception there..?
08:01 psch or is that the wrong layer..? :/
08:16 dalek rakudo/nom: 34463ec | (Zoffix Znet)++ | src/core/Exception.pm:
08:16 dalek rakudo/nom: Remove trailing whitespace
08:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/34463ec7f6
08:16 dalek rakudo/nom: 6d0cc07 | (Zoffix Znet)++ | src/core/Exception.pm:
08:16 dalek rakudo/nom: Improve error message for leading 0 on numerals.
08:16 dalek rakudo/nom:
08:16 dalek rakudo/nom: The message must avoid proposing the user uses an invalid octal number.
08:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6d0cc0730e
08:16 dalek rakudo/nom: 55605b8 | lizmat++ | src/core/Exception.pm:
08:16 dalek rakudo/nom: Merge pull request #813 from zoffixznet/LTA-octal-message
08:16 dalek rakudo/nom:
08:16 dalek rakudo/nom: Improve LTA octal message
08:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/55605b89fd
08:23 dalek rakudo/nom: 2ff5adb | lizmat++ | src/core/Array.pm:
08:23 dalek rakudo/nom: Streamline Array.new
08:23 dalek rakudo/nom:
08:23 dalek rakudo/nom: - by adding candidates for no params, and no :shape params.
08:23 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/2ff5adb75d
08:42 psch hm, i guess i have to port ef3a804d7
08:43 sno joined #perl6-dev
08:54 psch so, yeah, "don't just panic in ExceptionHandling" seems to be half right
08:54 psch (the commit is a moar commit, fwiw)
09:05 psch humm, now what's the corresponding nqp commit... :S
09:19 psch specifically i'm wondering if there's anything i can look at for how we put the handlers in place on moar
09:19 psch ...if we even do that there, which i actually don't know if we do
09:23 timotimo we just have a table for each frame where we look what we're supposed to do
09:23 timotimo hm, but that's just regular frame handlers
09:24 timotimo not 100% sure how about going up the stack
09:34 psch right, but that's kinda the thing
09:34 psch the commit i mentioned above installs something that lets the hll handle a runaway lexical exception
09:34 psch s/installs/implements/
09:34 psch but the hll somehow has to know about that, doesn't it? :S
09:41 psch wait, nqp doesn't really do that, does?
09:41 timotimo the code gen puts the annotations in and i think that's it
09:41 timotimo nqp::handle takes care of most of that
09:41 psch as in, the throwpayloadlexcaller and getextype in rakudo does it
09:43 psch aha! BOOTSTRAP.nqp:3207
09:43 psch there's lexical_handler_not_found_error
09:43 psch which is what moar uses to throw X::Control::Return
09:44 timotimo ah, right
09:45 timotimo moar requires a code frame to exist in order to throw an exception
09:45 timotimo at least i think so
09:45 timotimo that's why we register a callable via the hll mechanism
09:45 psch sounds reasonable to me
09:45 psch and should also be rather portable
09:45 psch i mean, it means i just need a check if we have that Callable in handlerLexical
09:46 psch and if we do, call that instead of calling panic()9
09:46 psch -9
09:47 tbrowder joined #perl6-dev
09:47 timotimo mhm
10:01 psch jnthn: what's behind $out_of_dyn_scope?  it's not used from the looks of it..?
10:01 jnthn psch: Yeah, it's there so (when we get around do it) we can distinguish these two:
10:02 jnthn m: sub foo() { (1..10).map({ return 1 }) }; foo()
10:02 camelia rakudo-moar 2ff5ad: OUTPUT«Attempt to return outside of any Routine␤  in block <unit> at <tmp> line 1␤␤»
10:02 jnthn From this:
10:02 jnthn m: return 1
10:02 camelia rakudo-moar 2ff5ad: OUTPUT«Attempt to return outside of any Routine␤  in block <unit> at <tmp> line 1␤␤»
10:02 jnthn Which get the same error now, but the first one would be better saying something more like "you already returned from this routine" or so
10:02 psch ah, alright
10:02 jnthn The difference is that in the first case you have a handler in the lexical scope, but it's out of the dynamic scope so it's impossible to unwind to it.
10:03 jnthn In the second you don't have a handler at all
10:03 jnthn Given I did most of the hard work wiring it up, that's an easy improvement now for anybody who fancies it ;)
10:04 psch mhm, i guess it depends on whether i can see an easy way to know the distinction on the jvm :)
10:04 psch which, as of right now, i don't vOv
10:05 psch but well, it'll stay around for others in the worst case :)
10:06 psch actually, we have to different methods for handlers, handlerLexical and handlerDynamic.  isn't that already the distinction?
10:06 psch as in, if we don't find the handler in handlerDynamic we throw to lexical_handler_not_found with $out_of_dyn_scope == 1, and 0 for handlerLexical?
10:06 psch i guess i'll se whether the .map case above still dies wrongly or not
10:14 jnthn No, I think handlerLexical maybe has a check for "is the target frame on the call stack"?
10:15 psch well, we have skipCaller in handlerLexical
10:16 psch aside from that, handlerLexical and handlerDynamic are pretty much identical, except the former goes via .outer and the latter via .caller
10:20 jnthn Hm, interesting. I wonder how it behaves in the first of the two cases (there's a lexical return handler but it's out of dynamic scope)
10:28 psch right, so checking for lexical_handler_not_found in handlerLexical solves the bare return case
10:29 psch the (1..10).map({ return }) case from earlier leaks an UnwindException
10:29 psch i'm not sure it did that before, though
10:29 psch so i'm gonna stick the hllConfig check into handlerDynamic now and see what happens :)
10:36 jnthn Yeah, I think the UnwindException measn that we ploughed ahead unwinding the stack looking for a hnadler that's not there.
10:44 psch alright, putting a check for lexical_handler_not_found in handlerDynamic didn't help
10:44 psch so i'm gonna stash my changes and see if we fail the same way without the patch to handlerLexical
10:45 psch there's a lot about this handler code that i don't quite get, so i might well be looking in the wrong spot :|
10:48 Zoffix joined #perl6-dev
10:58 psch well, it seems like the lexicalHandler change doesn't impact the leaking UnwindException
10:58 psch so i'm gonna commit that, cause we have a bunch of tests in e.g. S04-statements/return.t that should pass then
11:00 psch ...yes, i'm also gonna run the tests before pushing :P
11:09 dalek rakudo/nom: e2029cb | lizmat++ | src/core/Array.pm:
11:09 dalek rakudo/nom: Make Array.pop about 2.5x as fast
11:09 dalek rakudo/nom:
11:09 dalek rakudo/nom: - lose the "ensure-allocated" call (no longer allocate if empty)
11:09 dalek rakudo/nom: - don't fail, but return Failure objects
11:09 dalek rakudo/nom: - rewrite using nqp completely
11:09 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e2029cbb5c
11:18 dalek nqp: f84cc8a | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/ (3 files):
11:18 dalek nqp: Add lexical_handler_not_found_error to HLLConfig.
11:18 dalek nqp: review: https://github.com/perl6/nqp/commit/f84cc8a636
11:18 dalek rakudo/nom: 0e2a4a2 | peschwa++ | tools/build/NQP_REVISION:
11:18 dalek rakudo/nom: Bump NQP_REVISION
11:18 dalek rakudo/nom:
11:18 dalek rakudo/nom: This gets us nqp-j handling of lexical_handler_not_found_error, which means can
11:18 dalek rakudo/nom: throw X::ControlFlow::Return on JVM now.
11:18 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0e2a4a29c3
11:18 psch +we # >_>
11:18 lizmat psch++
11:19 psch the .map case above is gonna be lots harder i fear :|
11:31 dalek rakudo/nom: 2d27bde | lizmat++ | src/core/Array.pm:
11:31 dalek rakudo/nom: Make Array.shift about 2x as fast
11:31 dalek rakudo/nom:
11:31 dalek rakudo/nom: - lose the "ensure-allocated" call (no longer allocate if empty)
11:31 dalek rakudo/nom: - rewrite using nqp completely
11:31 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/2d27bdef6e
11:38 moritz http://globalnews.ca/news/2807854/a-leap-second-will-be-added-to-the-end-of-2016/ oh man, what were they thinking
11:38 moritz adding a leap second at the turn of the years
11:39 gfldex they where thinking: "ppl will be to drunk to notice"
11:39 moritz the scary thing is that when I ask myself "what could possibly go wrong?", I don't really know. Potentially everything.
11:42 dalek rakudo/nom: e8a9585 | lizmat++ | src/core/Array.pm:
11:42 dalek rakudo/nom: Simplify Array.WHICH
11:42 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e8a9585ee6
11:54 dalek rakudo/nom: d1ebac0 | lizmat++ | src/core/Array.pm:
11:54 dalek rakudo/nom: Squeeze a few more percent out of Array.shift
11:54 dalek rakudo/nom:
11:54 dalek rakudo/nom: - by handling holes smarter
11:54 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d1ebac0c30
11:58 skids joined #perl6-dev
12:14 Tux_ lizmat, 90_csv.t started failing under prove
12:14 Tux_ t/90_csv.t ........ All 329 subtests passed
12:14 lizmat oki, will look
12:14 Tux_ a manual run now always ends with
12:14 Tux_ ok 426 - Out to Str
12:14 Tux_ 1..426
12:14 Tux_ which indeed is the last test
12:17 Tux_ The good news however ……
12:17 Tux_ This is Rakudo version 2016.06-163-gd1ebac0 built on MoarVM version 2016.06-9-g8fc21d5
12:17 Tux_ test            15.296
12:17 Tux_ test-t           8.995
12:17 Tux_ csv-parser      16.491
12:17 BrokenRobot :o below 9 secs!
12:17 lizmat whoopee!
12:17 BrokenRobot lizmat++
12:18 Tux_ personally I rather see 9.0001 that passes
12:18 lizmat Tux_: wasn't 90_csv.t already problematic in the past ?
12:18 Tux_ yes
12:18 Tux_ but it was steady now for a long(er) time
12:20 Tux_ Sep 12 11:54:25 <[Tux]>  t/90_csv.t ........ All 27 subtests passedr-nom/install/bin/moar': double free or corruption (out): 0x00007f642010f860 ***
12:20 Tux_ Nov 27 08:29:05 <[Tux]>    in block <unit> at t/90_csv.t:104
12:49 RabidGravy joined #perl6-dev
12:50 AlexDaniel joined #perl6-dev
12:54 AlexDaniel joined #perl6-dev
13:00 dalek roast: e669003 | (Zoffix Znet)++ | S15-literals/numbers.t:
13:00 dalek roast: Test warnings for 0 prefixed numbers
13:00 dalek roast:
13:00 dalek roast: RT#119339
13:00 dalek roast:
13:00 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=119339
13:00 dalek roast: - 0-prefixed number must warn about using 0o prefix
13:00 dalek roast: - This warning must not suggest the user to use an invalid octal, e.g. 0o9
13:00 dalek roast: review: https://github.com/perl6/roast/commit/e669003e22
13:01 dalek roast: 7dce301 | (Zoffix Znet)++ | S19-command-line/repl.t:
13:01 dalek roast: Test octal warnings in REPL
13:01 dalek roast:
13:01 dalek roast: RT#119339
13:01 dalek roast:
13:01 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=119339
13:01 dalek roast: - 0-prefixed number must warn about usin 0o prefix
13:01 dalek roast: - This warning must not suggest the user uses invalid octal, e.g. 0o9
13:01 dalek roast: - 0o prefix on valid octal must work in REPL
13:01 dalek roast: review: https://github.com/perl6/roast/commit/7dce301ae7
13:15 gfldex moritz: please update Pod::To::HTML on docs.perl6.org
13:16 moritz ijen?
13:18 gfldex moritz: most of the HTML rendering for docs.perl6.org is actually done in that module
13:19 gfldex i wonder if we should put it in to docs repo as a 3rd party
13:20 gfldex moritz: o.0 do you wish me to go to hell? https://www.google.de/search?q=define:+ijen&amp;biw=1914&amp;bih=2040&amp;tbm=isch&amp;tbo=u&amp;source=univ&amp;sa=X&amp;ved=0ahUKEwjl_67RuOHNAhUDKcAKHUP4Bm4QsAQIOg
13:23 moritz gfldex: do you have a hack.p6c.org account?
13:23 dalek roast: 6c01b3f | (Zoffix Znet)++ | S15-literals/numbers.t:
13:23 dalek roast: Conversion of 'No' chars to numeric is not supported
13:23 dalek roast:
13:23 dalek roast: RT#127866
13:23 dalek roast:
13:23 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=127866
13:23 dalek roast: As per https://github.com/rakudo/rakudo/commit/e28305cc99b969b9592b9d6606ec5b6d25995a90
13:23 dalek roast: and related discussion, we do not support explicit conversion of lone 'No'
13:23 dalek roast: chars to numerics. Such functionality must be explicitly requested
13:23 dalek roast: by the programmer via unival()
13:23 dalek roast: review: https://github.com/perl6/roast/commit/6c01b3fdbf
13:24 gfldex moritz: i do not
13:25 moritz gfldex: alright, done it myself
13:26 gfldex moritz: thanks
13:27 moritz ("ijen" was my botched attempt to translate "again" to Norwegian, simply because I'm surprised this module has activity again)
13:28 ilmari m: say ³²
13:28 camelia rakudo-moar d1ebac: OUTPUT«9␤»
13:28 ilmari m: say "³".Int
13:28 camelia rakudo-moar d1ebac: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏³' (indicated by ⏏)␤  in block <unit> at <tmp> line 1␤␤Actually thrown at:␤  in block <unit> at <tmp> line 1␤␤»
13:28 skids joined #perl6-dev
13:29 ilmari moritz: you almost got it rigth. it's "igjen"
13:36 moritz ilmari: I know the sound, because my wife talks to the kids, and doesn't write them :-)
13:37 moritz and spelling is tricky for me
13:37 [Coke] RT: 1338; CONC: 7; GLR: 6; JVM: 69; LHF: 1; LTA: 74; NYI: 28; OSX: 6; PERF: 16; POD: 3; PRECOMP: 4; RFC: 22; SEGV: 22; STAR: 1; TESTNEEDED: 12; TODO: 8; UNI: 5; UNTAGGED: 675; WEIRD: 3
13:40 ilmari moritz: ah, I wasn't aware your wife's norwegian
13:40 BrokenRobot I should be able to swat a couple more of TESTNEEDED today.
13:41 BrokenRobot Several of them are still unfixed tho. And I'm unsure what tests to write, since it's unclear what the correct behaviour should/gonna be
13:42 moritz ilmari: half norwegian, actually
13:42 [Coke] BrokenRobot: it should be clear in the ticket; if not, ping someone to double check.
13:42 [Coke] in some cases, the test is "code doesn't emit a compiler error"
13:43 BrokenRobot This is still broken, and I'm unsure what error is expected to be emited: https://rt.perl.org/Ticket/Display.html?id=125817
13:43 BrokenRobot I commented on the ticket here; unknown whether tests needs to be deleted from roast: https://rt.perl.org/Ticket/Display.html?id=124568#txn-1408240
13:45 BrokenRobot On this one... I guess the test would be just for a segfaul, but are all those "is-prime on Mu" errors in my runs supposed to be there in the first place? The code suggests they shouldn't be: https://rt.perl.org/Ticket/Display.html?id=127208
13:45 [Coke] BrokenRobot: sure, it's possible that since it was marked testneeded, it went haywire again
13:46 [Coke] 125817 probably needs to decide if it's taking an int or an Int
13:49 BrokenRobot One more closed tickets and we'll have a 1337 number of open tickets :P \o/
13:55 BrokenRobot m: my @aaa = :foo(1), :bar(2); say $aaa[2]
13:55 camelia rakudo-moar d1ebac: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Variable '$aaa' is not declared. Did you mean '@aaa'?␤at <tmp>:1␤------> my @aaa = :foo(1), :bar(2); say ⏏$aaa[2]␤»
13:56 BrokenRobot m: my %aaa = :foo(1), :bar(2); say $aaa{'foo'}
13:56 camelia rakudo-moar d1ebac: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Variable '$aaa' is not declared. Did you mean '%aaa'?␤at <tmp>:1␤------> my %aaa = :foo(1), :bar(2); say ⏏$aaa{'foo'}␤»
13:58 MasterDuke_ joined #perl6-dev
13:58 RabidGravy joined #perl6-dev
13:59 MasterDuke_ [Coke]: re RT #125817 and it needing to decide on int vs Int, i feel it's the same for RT #125814
13:59 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=125817
13:59 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=125814
14:00 MasterDuke_ changing int to Int at https://github.com/rakudo/rakudo/blob/nom/src/core/Str.pm#L71 fixes #125814
14:00 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=125814
14:01 MasterDuke_ and i'm pretty sure there are a bunch of other places all over where an int is used instead of an Int
14:03 MasterDuke_ and i'm not sure whether the expected behavior of those places has been documented
16:03 skids m: sub a (int() $f) { }; a(9) # maybe if that was brought up to speed it would help with chr
16:03 camelia rakudo-moar d1ebac: OUTPUT«Method 'int' not found for invocant of class 'Int'␤  in sub a at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»
16:21 FROGGS joined #perl6-dev
16:41 cognominal joined #perl6-dev
17:37 tbrowder ref table pod: I've found no graceful way to signal a bad table from Pod.nqp except an nqp::die which is not graceful IMHO.  This morning I thought about sending messages to the user by appropriate messages in the generated table pod.  ShimmerFairy is working on a very complex table handling grammar, but that is some time down the road.  I assume it will
17:37 tbrowder have some way to point to the bad table pod, but I think we need something now better than an exception complaining something about not being able to  handle a P6opaque object.  Comments, please.
17:39 tbrowder One nice thing about my idea is it should yield a stringified object that  can be tested without throwing an exception.
17:40 tbrowder Of course all this is based on my presently quite limited view of the whole process.
17:42 [Coke] pod is parsing. why not throw a compile time exception on bad pod?
17:42 [Coke] m: may $a = 3;
17:42 camelia rakudo-moar d1ebac: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Variable '$a' is not declared␤at <tmp>:1␤------> may ⏏$a = 3;␤»
17:42 tbrowder I'm happy to do that if that is acceptable!
17:47 gfldex tbrowder: rendering pod for a large code base is right now in the range of 10th of minutes. The ealier the error is loudly reported the better because then you don't have to start over again and wait another 30min or so.
17:47 gfldex s/10th/10s/
17:49 tbrowder okey dokey!
17:52 gfldex tbrowder: also we do use precompilation (by hand, in the renderer for now) so there is some caching on the correctly finished files. It's ok if the compiler bails in the middle of the build.
17:54 [Coke] tbrowder: note that we currently have a few pod exception types, inc.: X::Syntax::Pod::BeginWithoutEnd
17:54 [Coke] seems like an InvalidTable would be fine there.
17:54 tbrowder gotcha. i'll try to make the die messages very helpful. anyone know if there is a way to get a file name or line number from an nqp match object?
18:38 FROGGS there certainly is a way
18:40 timotimo oh hey froggs :)
18:40 FROGGS nqp/src/vm/moar/QAST/QASTCompilerMAST.nqp:1396:                my $line := HLL::Compiler.lineof($node.orig(), $node.from(), :cache(1));
18:40 FROGGS hi timotimo
18:43 FROGGS the match itself might not know about the file it is from...
18:43 FROGGS tbrowder: ^^
18:44 sortiz joined #perl6-dev
19:08 BrokenRobot Anyone know of an easy ticket for a n00b to hack on?
19:12 moritz BrokenRobot: https://rt.perl.org/Ticket/Display.html?id=128569
19:12 timotimo BrokenRobot: how interested are you in HTML and JS development? :)
19:13 moritz also, test https://rt.perl.org/Ticket/Display.html?id=128564 on windows and linux
19:13 BrokenRobot timotimo: I'm positively-oriented.
19:14 timotimo cool. because you might know we have this profiler thingie, right?
19:14 moritz oh wait, the last one was a p5 ticket :(
19:14 BrokenRobot timotimo: yeah
19:16 timotimo it has a few bits that aren't as cool
19:17 BrokenRobot Like what?
19:17 timotimo beginning with "the pop-up that opens for the allocations lists of code frames per type" won't close when you hit the X
19:18 timotimo somewhere in the middle of difficulty, i have b0rked the icicle graph, the one that shows when you click "call graph"; most of the boxes have the name of the frame missing, even though they show up in the list at the bottom
19:18 timotimo either easier or harder than that: the call graph isn't searchable; there's a little filter, but it only filters the callees of the currently selected node. i think it ought to highlight all callees that have anything matching the search/filter "below" it
19:18 timotimo and the perhaps hardest part: it's slow as molasses.
19:20 BrokenRobot k, I'll see what I can do
19:22 sno joined #perl6-dev
19:24 timotimo way cool!
19:24 timotimo do you need an example file to play around with?
19:24 timotimo you can find the template in nqp's repo under src/vm/moar/profiler
19:28 BrokenRobot Sure, if you have an example file.
19:29 timotimo gimme a sec :)
19:29 tbrowder FROGGS: thanks
19:31 timotimo oh, another thing i haven't mentioned: sometimes some values don't make sense, and i don't know if they come from the json data supplied by moarvm being wrong or something going wrong in the calculations the html is doing
19:32 timotimo http://t.h8.lv/p6profile/profile_galtonbox.html <- BrokenRobot
19:32 timotimo BrokenRobot: perhaps a good first step is to look if there's a newer version of Angular 1 that we could upgrade to. perhaps even porting to Angular 2, or re-writing for something else
19:33 BrokenRobot Oh neat. I wanted to learn Angular
19:34 [Coke] I did the last angular 1 upgrade on that.
19:34 [Coke] going to 2 is, as I recall, basically a full rewrite, and I had to learn enough angular just to bump the 1 version.
19:34 BrokenRobot But it's OK to do that full rewrite?
19:35 timotimo right
19:35 moritz somehow the icicle graph and routines tab contract each other
19:35 timotimo contract?
19:35 moritz contradict, sorry
19:35 timotimo shouldn't be so. how do you figure?
19:35 moritz display-board only has 0.15% exclusive time
19:35 [Coke] we're at 1.4.2, latest 1 is 1.5.7
19:36 moritz but if you look at the icicle graph, it looks like it has about as much eclusive time as sleep, which is roughly 20%
19:37 moritz *exclusive
19:39 timotimo you don't see exclusive time in the icicle graph
19:39 timotimo at the moment at least
19:39 timotimo because the other boxes don't have text in them and so they appear almost invisible
19:40 moritz that makes the graph much less useful :(
19:44 lizmat m: class A { method a() {} }; for ^1000000 { A.a }   # this allocates 1M BOOThashes, one for each call to the method
19:44 camelia rakudo-moar d1ebac: ( no output )
19:44 lizmat jnthn: do we really have to allocate a BOOThash for each method call ?
19:45 moritz where does it happen?
19:45 moritz for potential named args somewhere?
19:45 lizmat moritz: according to the profile, it happens in the method
19:45 lizmat yes, I guess so
19:45 moritz the implicit *%_ ?
19:46 timotimo i think something we don't know about is preventing it from removing that as unused
19:46 moritz or is that optimized out when it's not used in the body?
19:46 lizmat yes, but absence of a BOOThash could as well be taken as an empty *%_, could it not ?
19:46 lizmat well, see the above example: not much going on there, apart from allocating BOOThashes  :-)
19:55 jnthn lizmat: It's the implicit *%_. The "accept all named args" bit has to make it down to the VM level, but it's capable of detecting it's unused and removing it, in theory. Additionally, the Perl 6 optimizer is meant to be looking at whether %_ can possibly be referenced in the scope of the method and removing the binding of it if so.
19:55 jnthn lizmat: I'm not sure which of those two steps is not taking place in this case.
19:55 lizmat jnthn: but that's NYI at this point, right ?
19:55 jnthn Both are implemented.
19:56 jnthn So it's not clear why they're not operating
19:56 jnthn Ohhh
19:56 jnthn There's also a small chance of an unfortunate interaction
19:56 jnthn Whereby the allocating logging instruction keeps the nameds hash alive from the view of spesh...and so doesn't get eliminated under profiling.
19:57 lizmat ah, so you're saying Heisenberg is at work here ?
19:57 jnthn (Since spesh works on the post-instrumented code)
19:57 jnthn No
19:57 jnthn Well, yes
19:57 jnthn :)
19:57 jnthn Both? :D
19:57 lizmat hehe
19:57 jnthn But yeah, it could well be soemthing like that...
19:57 FROGGS Heisenbergs Cat?
19:57 lizmat that's Schrödinger  :)
19:58 FROGGS maybe not in this case :o)
19:58 lizmat ok, so I shouldn't worry about that
19:58 lizmat or should I :-)
19:58 jnthn .oO( April 1st joke: replace /bin/cat some something that drops 1 in 100 lines :P )
19:58 jnthn *with something
19:58 FROGGS /o\
19:58 jnthn lizmat: Well, depends if you want to go digging in spesh to find out if that's what is going on, though it's feasible.
19:59 jnthn If it *is* that it may be causing other distortions too...
19:59 geekosaur schrödinger's cat is both alive and dead; heisenberg's cat only knows either where it is or where it is going, but not both :p
19:59 jnthn So it's worth investigating.
19:59 jnthn It's also possible that one or the other optimization has regressed.
19:59 lizmat yeah, but I'm a 200% spesh noob  :-)
19:59 jnthn :)
19:59 jnthn Feel free to drop a MoarVM issue
20:00 lizmat so i'll ticket it
20:00 lizmat ok
20:00 jnthn Yeah...I just glanced the code and now I'm decidedly suspicious it *is* the instrumentation to do the allocation logging blocking the optimization.
20:01 jnthn Composability is hard...
20:02 jnthn .oO( Apparently, so is beating France, if you're Germany... :P )
20:03 * jnthn bbl :)
20:03 lizmat jnthn: FYI: https://github.com/MoarVM/MoarVM/issues/384
21:04 skids joined #perl6-dev
21:16 jnthn lizmat: Thanks :)
21:26 dalek rakudo/nom: d77174e | lizmat++ | src/core/Array.pm:
21:26 dalek rakudo/nom: Make circumfix:[ ]> about 2.5x as fast
21:26 dalek rakudo/nom:
21:26 dalek rakudo/nom: Turns out that the Iterable:D candidate was basically doing all of the
21:26 dalek rakudo/nom: work, because as soon as we have any , within [], it creates a List
21:26 dalek rakudo/nom: using infix:<,>.  Since this is an Iterable, it would be caught by the
21:26 dalek rakudo/nom: Iterable:D candidate, which then assumed it was something strange and
21:26 dalek rakudo/nom: started the whole iterator process.  Instead, we now check whether it
21:26 dalek rakudo/nom: is a non-lazy List (which is usually the case), we simply copy all of
21:26 dalek rakudo/nom: the elements over into containers and return the resulting Array.
21:26 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d77174e8ec
21:28 TimToady joined #perl6-dev
21:28 timotimo whoa
21:29 timotimo nice
21:38 dalek rakudo/nom: 29a1107 | lizmat++ | src/core/Exception.pm:
21:38 dalek rakudo/nom: "no error message should ever use the second person."
21:38 dalek rakudo/nom:
21:38 dalek rakudo/nom: grondilu++
21:38 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/29a1107390
21:38 lizmat and with that I wish #perl6-dev a good night
21:39 jnthn 'night, lizmat
21:40 timotimo gnite lizmat
21:43 jnthn Sleep time for me also, I think. o/
21:56 timotimo gnite jnthn :)
23:39 dalek roast: 8463d2d | (Zoffix Znet)++ | packages/Test/Util.pm:
23:39 dalek roast: Add is_run_repl function to Test::Util
23:39 dalek roast:
23:39 dalek roast: Simplify testing of REPL output
23:39 dalek roast: review: https://github.com/perl6/roast/commit/8463d2d0b3
23:39 dalek roast: a3fd6e4 | (Zoffix Znet)++ | S19-command-line/repl.t:
23:39 dalek roast: Simplify REPL tests
23:39 dalek roast:
23:39 dalek roast: use is_run_repl from Test::Util
23:40 dalek roast: review: https://github.com/perl6/roast/commit/a3fd6e431a
23:44 AlexDaniel joined #perl6-dev
23:57 dalek roast: 8480c26 | (Zoffix Znet)++ | packages/Test/Util.pm:
23:57 dalek roast: Fix typo
23:57 dalek roast:
23:57 dalek roast: MasterDuke++
23:57 dalek roast: review: https://github.com/perl6/roast/commit/8480c268d6

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary