MasterDuke | why does nqp have dyncall in its 3rdparty directory? i can't find any evidence it's being used | 03:41 | |
JimmyZ | MasterDuke: was for parrot | 04:48 | |
timotimo | changing attributes of Attribute from int to int8 can cause segfaults :( | 07:06 | |
[TuxCM] | This is Rakudo version 2016.11-44-gf928a20 built on MoarVM version 2016.11-20-g0f7277a | 07:09 | |
csv-ip5xs 3.198 | |||
test 14.249 | |||
test-t 6.505 | |||
csv-parser 14.560 | |||
timotimo | it's probably not worth a lot, but it seems quite wasteful to put 5 flags into one 64bit integer each ... | 07:11 | |
er, wrong | |||
just four flags | |||
arnsholt | MasterDuke: Was used for NativeCall for a long time | 08:13 | |
(Well into the Moar days) | 08:19 | ||
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 | |
jnthn | If there's a 3rdparty dyncall still in NQP, it can go, I think. | 10:39 | |
moritz | so what are we using now? | 11:08 | |
dyncall in MoarVM? | |||
jnthn | Yes | 11:12 | |
Which is pulled in as a submodule | |||
Or libffi | |||
As a system package | 11:13 | ||
MoarVM can be configured with either | |||
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:02 | |
arnsholt | Open a subprocess running the sqlite3 client perhaps? | 12:08 | |
dalek | p: eca290b | MasterDuke17++ | 3rdparty/dyncall/ (611 files): Remove dyncall, it's no longer used. See some comments here: irclog.perlgeek.de/perl6-dev/2016-...i_13621312 |
12:09 | |
p: 94cb3dc | jnthn++ | 3rdparty/dyncall/ (611 files): Merge pull request #321 from MasterDuke17/remove_dyncall Remove dyncall, it's no longer used. |
|||
MasterDuke | arnsholt: hmm, that would require the user to have it installed, correct? or bundle it in nqp? | 12:11 | |
jnthn | lunch & | 12:12 | |
arnsholt | Yeah, then it'd have to be installed | ||
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:16 | |
dalek | kudo/nom: 1a6be18 | MasterDuke17++ | tools/build/Makefile-Moar.in: Rename gen/moar/m-CORE.setting The 'moar' in the path already differentiates it from the JVM or JS settings, this way the filename will be consistent. Some comments from psch here: irclog.perlgeek.de/perl6-dev/2016-...i_13595693 |
12:17 | |
kudo/nom: 6e77823 | niner++ | tools/build/Makefile-Moar.in: Merge pull request #928 from MasterDuke17/rename_m-CORE.setting Rename gen/moar/m-CORE.setting |
|||
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:27 | |
The only thing that NQP doesn't have for NativeCall stuff is a user-friendly library though | 12:28 | ||
All the functionality is exposed through nqp::ops | |||
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:30 | |
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:35 | |
lizmat | sh: gen/moar/m-ModuleLoader.nqp: No such file or directory | 12:40 | |
nine MasterDuke: rakudo doesn't build anymore (at least not for me) | |||
MasterDuke | lizmat: odd, parsing for me right now | 12:42 | |
lizmat | hmmm... what creates the gen/ and gen/moar dirs ? | ||
I had nuked my gen dir | |||
it didn't get re-created | 12:43 | ||
MasterDuke | they're in the repo i believe | ||
lizmat | aha, ok, my fail :-) | ||
indeed, with .gitignore in them | 12:44 | ||
sorry for the noise | |||
MasterDuke | heh, glad i didn't kill the build for everyone | 12:46 | |
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:47 | ||
lizmat | MasterDuke: yeah, that would make sense :-) | 12:48 | |
nine | step by step :) | 12:52 | |
MasterDuke | does anybody use rakudo_test_run.tar.gz? | 13:02 | |
it looks like it was used by make spectest_smolder, but that's commented out | |||
PR for that submitted, now to experiment with profiles and sqlite. just need to remember where in nqp they are created... | 14:28 | ||
dalek | kudo/nom: b63c44c | MasterDuke17++ | tools/build/Makefile- (2 files): Remove backend specific prefixes The backend is specified in the path, so it doesn't need to be in the filenames. |
14:31 | |
kudo/nom: 4415ed9 | lizmat++ | tools/build/Makefile- (2 files): Merge pull request #929 from MasterDuke17/remove_all_backend_specific_prefixes Remove backend specific prefixes |
|||
lizmat | MasterDuke++ # getting rid of prefixes | 14:38 | |
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ā¤Ā» | ||
jnthn | japhb: You're probabl jsut exhausing the thread pool with the sleep clogging things up | 14:45 | |
*just | 14:46 | ||
japhb | jnthn: Oh interesting, hadn't thought of that. | ||
jnthn | Which in part means "our pool ain't smart enough" | ||
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 | ||
dalek | kudo/nom: 1b840f1 | lizmat++ | src/core/ (2 files): Make native shaped array creation about 1.5x faster |
||
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... | ||
timotimo | i think you hvae, yeah | ||
jnthn | yeah, I did | 14:49 | |
fwiw, you've got a race condition | |||
It's likely but not certain $tap will be assigned before the $tap.close call | 14:50 | ||
japhb | jnthn: racing to stop? | ||
jnthn | uh, $fast | ||
japhb | Oh, I thought that was semantically guaranteed. | ||
OK, good to know! | |||
jnthn | No, an assignment is jsut an assignment | 14:51 | |
lizmat | jnthn: so how *could* you be sure you can close on $fast ? | ||
jnthn | You can't. | 14:52 | |
lizmat | hmmm.... | ||
jnthn | I'd write it as: supply { whenever Supply.interval(.001) -> $i { say $i; done if $i > 4 } } | ||
It's rather smelly for a supply to turn itself off from the outside. :P | |||
lizmat | ok, that's what I meant :-) | ||
japhb | OK, that's really useful info. | 14:53 | |
jnthn | As for the original question though | ||
Yes, something looks wrong there. | |||
m: react { whenever Supply.interval(.001) { .say; done if $_ == 5 } } | 14:54 | ||
camelia | rakudo-moar 1b840f: OUTPUTĀ«0ā¤1ā¤2ā¤3ā¤4ā¤5ā¤Ā» | ||
jnthn | m: react { whenever Supply.interval(.0001) { .say; done if $_ == 5 } } | ||
camelia | rakudo-moar 1b840f: OUTPUTĀ«(timeout)0ā¤Ā» | ||
jnthn | Yup, that's decidedly wrong. | ||
Sorry, I read the sleep as being inside of the tap callback the first time | 14:55 | ||
japhb | np | ||
jnthn | Please RT it; I'll take a look when I get chance | ||
japhb | Will do | ||
lizmat | m: react { whenever Supply.interval(.0001) { done if $_ == 5 } } | 14:57 | |
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 | ||
but I guess the condition check in itself is enough already | 14:59 | ||
jnthn | Yeah, I struggle to guess this one. | 15:00 | |
japhb | bug report sent | 15:01 | |
jnthn | Thanks | ||
MasterDuke | is the profiler output schema documented anywhere? | 15:17 | |
timotimo | the json stuff? not reall | ||
MasterDuke | well, i don't think i care about the schema of the *json* per se, but the underlying data | 15:19 | |
to create a sql schema | |||
jnthn | MasterDuke: The C data structures would give you a good hint but...it's recursive data, so "enjoy" :) | 15:20 | |
MasterDuke | jnthn: "thanks" :) | 15:21 | |
before i go too far down this path, do people think this would be useful? to have a sqlite output option for profiling? | 15:28 | ||
timotimo | it would probably make the qt profiler easier to extend with the functionality the html profiler already has | 15:29 | |
also, it could finally cope with files bigger than the arbitrary limit qt or json-qt or whatever imposes upon us | 15:30 | ||
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:31 | |
timotimo | somehow, some files that contribute to the core setting make vim's syntax highlighter go supercritical | 15:32 | |
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:54 | |
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:55 | ||
timotimo | oh, oof | 15:58 | |
parse json with json_fast ;) | |||
FROGGS | o/ | 16:00 | |
dalek | rakudo/nom: 61a18c0 | (Zoffix Znet)++ | src/core/Iterable.pm: | 18:48 | |
rakudo/nom: Fix Iterator.flat occasionally skipping inner iterables | |||
rakudo/nom: | |||
rakudo/nom: Fixes RT#130160: #rt.perl.org/Ticket/Display.html?id=130160 | |||
rakudo/nom: lucasb++ for golfing the bug. | |||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130160 | ||
dalek | rakudo/nom: | ||
rakudo/nom: The issue observed in the ticket occurs when a combination of .pull-one | |||
rakudo/nom: and .push-all method is called on the iterator of the Seq's returned by | |||
rakudo/nom: .flat(). Current implementation of .push-all on that iterator does not | |||
rakudo/nom: anticipate that we *already* may be inside a nested iterable, so when | |||
rakudo/nom: .pull-one stops instead a nested iterable, the .push-all call will | |||
rakudo/nom: continue with whatever is *after* that iterable. | |||
rakudo/nom: | |||
viki | Fix by deleting the push-all implementation and using the default one | ||
provided by Iterator. I've done rough performance check by running | |||
this a few times: `for ^1000 { ^10_000 .flat.eager }; say now - INIT now;` | |||
and the results point to a the new way being 1.0000019387x faster, so | |||
there's no apparent performance loss. | |||
github.com/rakudo/rakudo/commit/61...1fe4e2cb5e | |||
dalek | ast: 10f3943 | (Zoffix Znet)++ | S02-types/list.t: Test .flat() does not skip inner iterables RT#130160: #rt.perl.org/Ticket/Display.html?id=130160 |
18:56 | |
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130160 | ||
viki | ".pull-one stops instead a nested iterable" s/instead/inside/; # ... I should really start proofreading these things /o\ | 19:23 | |
lizmat | viki++ # fixing and proofreading in the future :-) | 19:30 | |
dalek | kudo/nom: b6de5e8 | lizmat++ | / (2 files): Make native 1dimmed init and copying much faster - provide separate .STORE candidates for native 1dimmed - initialization from an iterator: at least 11x faster - copying from one array to another: at least 25x faster |
19:45 | |
kudo/nom: 172898e | lizmat++ | / (2 files): Make using native 2dimmed arrays faster - AT-POS 4x faster - ASSIGN-POS 4x faster - EXISTS-POS 2.5x faster |
20:34 | ||
kudo/nom: 64343d7 | lizmat++ | / (2 files): Make using native 3dimmed arrays faster - AT-POS 4x faster - ASSIGN-POS 4x faster - EXISTS-POS 2.5x faster |
21:49 | ||
lizmat | good night, #perl6-dev! | 21:52 | |
timotimo | gnite lizmat! | 21:57 | |
dalek | ast: d09072c | usev6++ | S (3 files): Fudge some newly added tests for JVM |
22:23 | |
kudo/Routine_consolidate_flag_fields: dd0ae9b | timotimo++ | src/ (4 files): store rw and yada flags in single attribute in Routine unfortunately there's a bug here that causes "Stub code executed" while compiling the core setting, so something's getting mixed signals here. |
22:56 |