Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2016-11-24

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

All times shown according to UTC.

Time Nick Message
00:02 seatek joined #perl6-dev
01:17 AlexDaniel joined #perl6-dev
02:14 bisectable6 joined #perl6-dev
02:14 committable6 joined #perl6-dev
02:14 evalable6 joined #perl6-dev
02:14 benchable6 joined #perl6-dev
02:15 unicodable6 joined #perl6-dev
02:27 kalkin-_ joined #perl6-dev
02:48 ilbot3 joined #perl6-dev
02:48 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today
03:41 MasterDuke why does nqp have dyncall in its 3rdparty directory? i can't find any evidence it's being used
04:48 JimmyZ MasterDuke: was for parrot
05:24 Woodi joined #perl6-dev
06:50 RabidGravy joined #perl6-dev
07:06 timotimo changing attributes of Attribute from int to int8 can cause segfaults :(
07:09 [TuxCM] This is Rakudo version 2016.11-44-gf928a20 built on MoarVM version 2016.11-20-g0f7277a
07:09 [TuxCM] csv-ip5xs        3.198
07:09 [TuxCM] test            14.249
07:09 [TuxCM] test-t           6.505
07:09 [TuxCM] csv-parser      14.560
07:11 timotimo it's probably not worth a lot, but it seems quite wasteful to put 5 flags into one 64bit integer each ...
07:11 timotimo er, wrong
07:11 timotimo just four flags
08:13 arnsholt MasterDuke: Was used for NativeCall for a long time
08:19 arnsholt (Well into the Moar days)
09:31 lizmat Files=1154, Tests=53780, 208 wallclock secs (12.77 usr  3.77 sys + 1272.79 cusr 122.29 csys = 1411.62 CPU)
09:31 vendethiel- joined #perl6-dev
10:39 jnthn If there's a 3rdparty dyncall still in NQP, it can go, I think.
10:40 ugjka joined #perl6-dev
11:08 moritz so what are we using now?
11:08 moritz dyncall in MoarVM?
11:12 jnthn Yes
11:12 jnthn Which is pulled in as a submodule
11:12 jnthn Or libffi
11:13 jnthn As a system package
11:13 jnthn MoarVM can be configured with either
11:52 vendethiel joined #perl6-dev
12:02 MasterDuke without NativeCall support in NQP, what would be the simples/easiest way to get it to write profile data as a sqlite db?
12:08 arnsholt Open a subprocess running the sqlite3 client perhaps?
12:09 dalek nqp: eca290b | MasterDuke17++ | 3rdparty/dyncall/ (611 files):
12:09 dalek nqp: Remove dyncall, it's no longer used.
12:09 dalek nqp:
12:09 dalek nqp: See some comments here:
12:09 dalek nqp: https://irclog.perlgeek.de/perl6-dev/2016-11-24#i_13621312
12:09 dalek nqp: review: https://github.com/perl6/nqp/commit/eca290b46d
12:09 dalek nqp: 94cb3dc | jnthn++ | 3rdparty/dyncall/ (611 files):
12:09 dalek nqp: Merge pull request #321 from MasterDuke17/remove_dyncall
12:09 dalek nqp:
12:09 dalek nqp: Remove dyncall, it's no longer used.
12:09 dalek nqp: review: https://github.com/perl6/nqp/commit/94cb3dc496
12:11 MasterDuke arnsholt: hmm, that would require the user to have it installed, correct? or bundle it in nqp?
12:12 jnthn lunch &
12:12 arnsholt Yeah, then it'd have to be installed
12:14 cognominal joined #perl6-dev
12:16 MasterDuke hmm. i'd prefer a way to create the db even if sqlite3 isn't installed, but maybe requiring the user to have it is good enough
12:17 dalek rakudo/nom: 1a6be18 | MasterDuke17++ | tools/build/Makefile-Moar.in:
12:17 dalek rakudo/nom: Rename gen/moar/m-CORE.setting
12:17 dalek rakudo/nom:
12:17 dalek rakudo/nom: The 'moar' in the path already differentiates it from the JVM or JS
12:17 dalek rakudo/nom: settings, this way the filename will be consistent. Some comments from
12:17 dalek rakudo/nom: psch here: https://irclog.perlgeek.de/perl6-dev/2016-11-19#i_13595693
12:17 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1a6be18ae2
12:17 dalek rakudo/nom: 6e77823 | niner++ | tools/build/Makefile-Moar.in:
12:17 dalek rakudo/nom: Merge pull request #928 from MasterDuke17/rename_m-CORE.setting
12:17 dalek rakudo/nom:
12:17 dalek rakudo/nom: Rename gen/moar/m-CORE.setting
12:17 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6e778235b6
12:27 arnsholt MasterDuke: Then you'd either have to bundle SQLite with MoarVM and expose it via ops and stuff, or bind the library using NativeCall (which still requires the library to be installed of course)
12:28 arnsholt The only thing that NQP doesn't have for NativeCall stuff is a user-friendly library though
12:28 arnsholt All the functionality is exposed through nqp::ops
12:30 MasterDuke well, i suspect the subprocess route will be the quickest to implement (for me at least, i don't do much C), think it would be accepted?
12:35 viki For the MAIN enum thing....  I think if we have an EnumStr *just* for sub MAIN and not as a general construct that <...> would also produce EnumStr, then it'd be OK, as the potential to produce an unwanted EnumStr is minimized...
12:38 ugjka joined #perl6-dev
12:40 lizmat sh: gen/moar/m-ModuleLoader.nqp: No such file or directory
12:40 lizmat nine MasterDuke: rakudo doesn't build anymore (at least not for me)
12:42 MasterDuke lizmat: odd, parsing for me right now
12:42 lizmat hmmm... what creates the gen/ and gen/moar dirs ?
12:42 lizmat I had nuked my gen dir
12:43 lizmat it didn't get re-created
12:43 MasterDuke they're in the repo i believe
12:43 lizmat aha, ok, my fail  :-)
12:44 lizmat indeed, with .gitignore in them
12:44 lizmat sorry for the noise
12:46 MasterDuke heh, glad i didn't kill the build for everyone
12:47 MasterDuke hmm, should probably do it for the rest of the files in gen/moar/ also. didn't even think of them, probably because i never opened any
12:48 lizmat MasterDuke: yeah, that would make sense  :-)
12:52 nine step by step :)
13:02 MasterDuke does anybody use rakudo_test_run.tar.gz?
13:02 MasterDuke it looks like it was used by make spectest_smolder, but that's commented out
13:37 brrt joined #perl6-dev
14:08 AlexDaniel joined #perl6-dev
14:28 MasterDuke PR for that submitted, now to experiment with profiles and sqlite. just need to remember where in nqp they are created...
14:31 dalek rakudo/nom: b63c44c | MasterDuke17++ | tools/build/Makefile- (2 files):
14:31 dalek rakudo/nom: Remove backend specific prefixes
14:31 dalek rakudo/nom:
14:31 dalek rakudo/nom: The backend is specified in the path, so it doesn't need to be in the
14:31 dalek rakudo/nom: filenames.
14:31 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b63c44c860
14:31 dalek rakudo/nom: 4415ed9 | lizmat++ | tools/build/Makefile- (2 files):
14:31 dalek rakudo/nom: Merge pull request #929 from MasterDuke17/remove_all_backend_specific_prefixes
14:31 dalek rakudo/nom:
14:31 dalek rakudo/nom: Remove backend specific prefixes
14:31 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4415ed9f56
14:35 tadzik joined #perl6-dev
14:38 lizmat MasterDuke++  # getting rid of prefixes
14:40 lucasb_ joined #perl6-dev
14:41 japhb m: my $fast = Supply.interval(.001).tap: -> $i { say $i; $fast.close if $i > 4; }; sleep 1; my $faster = Supply.interval(.0001).tap: -> $i { say $i; $faster.close if $i > 4; }; sleep 1;  # interval supplies < 1 ms can stop progressing ... known?
14:41 camelia rakudo-moar 6e7782: OUTPUT«0␤1␤2␤3␤4␤5␤0␤»
14:45 jnthn japhb: You're probabl jsut exhausing the thread pool with the sleep clogging things up
14:45 ilmari[m] joined #perl6-dev
14:46 jnthn *just
14:46 japhb jnthn: Oh interesting, hadn't thought of that.
14:46 jnthn Which in part means "our pool ain't smart enough"
14:47 japhb I was about to say, it seems like that oughtn't to cause deadlock.
14:47 jnthn Well, the eventual answer will be `await Promise.in(1)` in place of your sleep
14:47 dalek rakudo/nom: 1b840f1 | lizmat++ | src/core/ (2 files):
14:47 dalek rakudo/nom: Make native shaped array creation about 1.5x faster
14:47 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1b840f1959
14:48 japhb Wait ... I only have two explicit sleep calls there.  I thought you were saying that 'interval' was doing a sleep internally, and lots of those were piling up.
14:48 jnthn Hm, maybe I misread it...
14:48 timotimo i think you hvae, yeah
14:49 jnthn yeah, I did
14:49 jnthn fwiw, you've got a race condition
14:50 jnthn It's likely but not certain $tap will be assigned before the $tap.close call
14:50 japhb jnthn: racing to stop?
14:50 jnthn uh, $fast
14:50 japhb Oh, I thought that was semantically guaranteed.
14:50 japhb OK, good to know!
14:51 jnthn No, an assignment is jsut an assignment
14:51 lizmat jnthn: so how *could* you be sure you can close on $fast ?
14:52 jnthn You can't.
14:52 lizmat hmmm....
14:52 jnthn I'd write it as: supply { whenever Supply.interval(.001) -> $i { say $i; done if $i > 4 } }
14:52 jnthn It's rather smelly for a supply to turn itself off from the outside. :P
14:52 lizmat ok, that's what I meant  :-)
14:53 AlexDaniel joined #perl6-dev
14:53 japhb OK, that's really useful info.
14:53 jnthn As for the original question though
14:53 jnthn Yes, something looks wrong there.
14:54 jnthn m: react { whenever Supply.interval(.001) { .say; done if $_ == 5 } }
14:54 camelia rakudo-moar 1b840f: OUTPUT«0␤1␤2␤3␤4␤5␤»
14:54 jnthn m: react { whenever Supply.interval(.0001) { .say; done if $_ == 5 } }
14:54 camelia rakudo-moar 1b840f: OUTPUT«(timeout)0␤»
14:54 jnthn Yup, that's decidedly wrong.
14:55 jnthn Sorry, I read the sleep as being inside of the tap callback the first time
14:55 japhb np
14:55 jnthn Please RT it; I'll take a look when I get chance
14:55 japhb Will do
14:57 lizmat m: react { whenever Supply.interval(.0001) { done if $_ == 5 } }
14:58 camelia rakudo-moar 1b840f: OUTPUT«(timeout)»
14:58 lizmat ok, my idea was that the .say caused so much delay that too many jobs got added before $_==5
14:59 lizmat but I guess the condition check in itself is enough already
15:00 jnthn Yeah, I struggle to guess this one.
15:01 japhb bug report sent
15:01 jnthn Thanks
15:17 MasterDuke is the profiler output schema documented anywhere?
15:17 timotimo the json stuff? not reall
15:19 MasterDuke well, i don't think i care about the schema of the *json* per se, but the underlying data
15:19 MasterDuke to create a sql schema
15:20 jnthn MasterDuke: The C data structures would give you a good hint but...it's recursive data, so "enjoy" :)
15:21 MasterDuke jnthn: "thanks" :)
15:28 MasterDuke before i go too far down this path, do people think this would be useful? to have a sqlite output option for profiling?
15:29 timotimo it would probably make the qt profiler easier to extend with the functionality the html profiler already has
15:30 timotimo also, it could finally cope with files bigger than the arbitrary limit qt or json-qt or whatever imposes upon us
15:31 MasterDuke yeah, that's what i'm thinking. just want to make sure i'm not the only person who sees a need/use
15:32 timotimo somehow, some files that contribute to the core setting make vim's syntax highlighter go supercritical
15:54 MasterDuke yeah, that's one of the reasons i don't like opening the core setting if i don't have to (partly inspired the line directive support i added)
15:55 MasterDuke any idea for a short script to profile that would trigger all the different kinds of info collected? to force OSR, full GC runs, etc
15:58 timotimo oh, oof
15:58 timotimo parse json with json_fast ;)
15:59 FROGGS joined #perl6-dev
16:00 FROGGS o/
16:51 cognominal joined #perl6-dev
17:13 b2gills joined #perl6-dev
17:35 vendethiel joined #perl6-dev
18:11 lucasb_ joined #perl6-dev
18:42 hankache joined #perl6-dev
18:48 dalek rakudo/nom: 61a18c0 | (Zoffix Znet)++ | src/core/Iterable.pm:
18:48 dalek rakudo/nom: Fix Iterator.flat occasionally skipping inner iterables
18:48 dalek rakudo/nom:
18:48 dalek rakudo/nom: Fixes RT#130160: #https://rt.perl.org/Ticket/Display.html?id=130160
18:48 dalek rakudo/nom: lucasb++ for golfing the bug.
18:48 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130160
18:48 dalek rakudo/nom:
18:48 dalek rakudo/nom: The issue observed in the ticket occurs when a combination of .pull-one
18:48 dalek rakudo/nom: and .push-all method is called on the iterator of the Seq's returned by
18:48 dalek rakudo/nom: .flat(). Current implementation of .push-all on that iterator does not
18:48 dalek rakudo/nom: anticipate that we *already* may be inside a nested iterable, so when
18:48 dalek rakudo/nom: .pull-one stops instead a nested iterable, the .push-all call will
18:48 dalek rakudo/nom: continue with whatever is *after* that iterable.
18:48 dalek rakudo/nom:
18:48 viki Fix by deleting the push-all implementation and using the default one
18:48 viki provided by Iterator. I've done rough performance check by running
18:48 viki this a few times: `for ^1000 { ^10_000 .flat.eager }; say now - INIT now;`
18:48 viki and the results point to a the new way being 1.0000019387x faster, so
18:48 viki there's no apparent performance loss.
18:48 viki https://github.com/rakudo/rakudo/commit/61a18c064695cfa16f31187abed62d1fe4e2cb5e
18:56 dalek roast: 10f3943 | (Zoffix Znet)++ | S02-types/list.t:
18:56 dalek roast: Test .flat() does not skip inner iterables
18:56 dalek roast:
18:56 dalek roast: RT#130160: #https://rt.perl.org/Ticket/Display.html?id=130160
18:56 dalek roast: review: https://github.com/perl6/roast/commit/10f39438be
18:56 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=130160
19:06 vendethiel- joined #perl6-dev
19:23 viki ".pull-one stops instead a nested iterable"  s/instead/inside/;  # ... I should really start proofreading these things /o\
19:25 RabidGravy joined #perl6-dev
19:30 lizmat viki++  # fixing and proofreading in the future  :-)
19:45 dalek rakudo/nom: b6de5e8 | lizmat++ | / (2 files):
19:45 dalek rakudo/nom: Make native 1dimmed init and copying much faster
19:45 dalek rakudo/nom:
19:45 dalek rakudo/nom: - provide separate .STORE candidates for native 1dimmed
19:45 dalek rakudo/nom: - initialization from an iterator: at least 11x faster
19:45 dalek rakudo/nom: - copying from one array to another: at least 25x faster
19:45 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b6de5e8c51
20:08 Ven joined #perl6-dev
20:22 Ven joined #perl6-dev
20:34 dalek rakudo/nom: 172898e | lizmat++ | / (2 files):
20:34 dalek rakudo/nom: Make using native 2dimmed arrays faster
20:34 dalek rakudo/nom:
20:34 dalek rakudo/nom: - AT-POS 4x faster
20:34 dalek rakudo/nom: - ASSIGN-POS 4x faster
20:34 dalek rakudo/nom: - EXISTS-POS 2.5x faster
20:34 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/172898eb1e
20:50 benchable6 joined #perl6-dev
21:11 Ven joined #perl6-dev
21:12 hankache joined #perl6-dev
21:22 Ven_ joined #perl6-dev
21:36 Ven joined #perl6-dev
21:49 dalek rakudo/nom: 64343d7 | lizmat++ | / (2 files):
21:49 dalek rakudo/nom: Make using native 3dimmed arrays faster
21:49 dalek rakudo/nom:
21:49 dalek rakudo/nom: - AT-POS 4x faster
21:49 dalek rakudo/nom: - ASSIGN-POS 4x faster
21:49 dalek rakudo/nom: - EXISTS-POS 2.5x faster
21:49 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/64343d7d0b
21:52 lizmat good night, #perl6-dev!
21:57 timotimo gnite lizmat!
22:08 Ven joined #perl6-dev
22:23 dalek roast: d09072c | usev6++ | S (3 files):
22:23 dalek roast: Fudge some newly added tests for JVM
22:23 dalek roast: review: https://github.com/perl6/roast/commit/d09072ca28
22:56 dalek rakudo/Routine_consolidate_flag_fields: dd0ae9b | timotimo++ | src/ (4 files):
22:56 dalek rakudo/Routine_consolidate_flag_fields: store rw and yada flags in single attribute in Routine
22:56 dalek rakudo/Routine_consolidate_flag_fields:
22:56 dalek rakudo/Routine_consolidate_flag_fields: unfortunately there's a bug here that causes "Stub code executed"
22:56 dalek rakudo/Routine_consolidate_flag_fields: while compiling the core setting, so something's getting
22:56 dalek rakudo/Routine_consolidate_flag_fields: mixed signals here.
22:56 dalek rakudo/Routine_consolidate_flag_fields: review: https://github.com/rakudo/rakudo/commit/dd0ae9b97d

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