00:22 hungrydonkey left 00:59 MasterDuke left 01:13 softmoth left 02:03 softmoth joined 02:25 softmoth_ joined 02:27 softmoth left 04:49 coverable6 left, bisectable6 left, unicodable6 left, quotable6 left, reportable6 left, evalable6 left, releasable6 left, nativecallable6 left, shareable6 left, sourceable6 left, squashable6 left, greppable6 left, linkable6 left, committable6 left, notable6 left, bloatable6 left, statisfiable6 left, benchable6 left, tellable6 left 04:50 greppable6 joined, unicodable6 joined, notable6 joined, statisfiable6 joined, benchable6 joined, linkable6 joined 04:51 evalable6 joined, tellable6 joined 04:52 bisectable6 joined, releasable6 joined, committable6 joined, bloatable6 joined, reportable6 joined, quotable6 joined, nativecallable6 joined, squashable6 joined, sourceable6 joined, shareable6 joined, coverable6 joined 05:02 softmoth__ joined, softmoth__ is now known as softmoth 05:05 softmoth_ left 05:45 softmoth left 06:14 hungrydonkey joined 07:15 MasterDuke joined 07:38 sena_kun joined 08:39 Altai-man_ joined 08:42 sena_kun left 09:06 hungrydonkey left 09:10 hungrydonkey joined 09:21 [TuxCM] joined
lizmat Files=1306, Tests=111232, 212 wallclock secs (28.67 usr 8.13 sys + 2995.42 cusr 271.41 csys = 3303.63 CPU) 09:40
10:40 sena_kun joined
lizmat sanity check: the difference between a native `num` and a Num is the boxing, nothing else, right ? 10:42
10:42 Altai-man_ left 10:43 hungryd83 joined
MasterDuke that's my understanding 10:44
10:47 hungrydonkey left 11:35 hungryd83 left, hungrydonkey joined
nine Looks like rakudo requires $*SCHEDULER to support the undocumented queue method 11:43
jnthn Yes, which must return something of repr ConcBlockingQueue 12:05
nine Shouldn't this be added to Scheduler then? 12:06
Even our very own CurrentThreadScheduler seems to be somewhat useless due to the missing .queue 12:07
jnthn Probably, though I also wonder if there's any way to satisfy the requirement without resorting to nqp::shift on the queue... 12:08
So we probably need to provide an impl of that REPR that can be used also
nine Btw. am I the only one who gets a feeling of... I don't know, emptyness? after making a breakthrough in or finishing a large chunk of work? 12:09
Geth_ rakudo: f987cdb0ba | (Elizabeth Mattijsen)++ | src/core.c/Num.pm6
Make Num.Rat about 25% faster

  - using more nqp::ops
  - moving lexicals out of a hot loop
This also makes `now` about 25% faster, as most of its creation effort is spent in converting nqp::time_n to a Rat. Addresses R#3620 somewhat.
linkable6 R#3620 [open]: github.com/rakudo/rakudo/issues/3620 Speed up Instant/now by optimizing for recent times
lizmat nine: I think that is quite common. I remember that vividly from having done the final exam at high school :-) 12:13
12:39 Altai-man_ joined 12:42 sena_kun left
lizmat we don't have pre-compilation for scripts, do we? www.reddit.com/r/rakulang/comments...ed_script/ 12:51
jnthn No 12:54
Thus the "put things into a module" pattern
lizmat right
[Coke] Is there a technical blocker for adding that? Might we do it eventually? 12:57
jnthn I think it'd be possible 13:03
nine IIRC pmurias++ got pretty far on that 13:08
MasterDuke i think he had a list of failing spectests somewhere 13:16
[Coke] wonder if there's a ticket for that. 13:25
lizmat yeah, running the spectest with scripts pre-compiled was an interesting excercise
Xliff m: my $vol = 1; constant VOLUME_STEPS = 2; $vol = ($vol + $vs).round * VOLUME_STEPS / VOLUME_STEPS; 14:19
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '$vs' is not declared
at <tmp>:1
------> 3nstant VOLUME_STEPS = 2; $vol = ($vol + 7⏏5$vs).round * VOLUME_STEPS / VOLUME_STEPS
Xliff m: my ($vol, $vs) = 1 xx 2; constant VOLUME_STEPS = 2; $vol = ($vol + $vs).round * VOLUME_STEPS / VOLUME_STEPS;
camelia ( no output )
14:20 lucasb joined
Xliff Why is the line I just pasted giving me "Unrecognized regex metacharacter ; (must be quoted to match literally)" 14:22
MasterDuke Xliff: don't think you just pasted anything? did it start with a '/'? might have been interpreted as an IRC command 14:26
[Coke] ... you have more code you're not showing, I assume?
I tried the last line with VOLUME_STEPS that I see here and it runs.
(just like camelia does.)
14:41 sena_kun joined 14:42 Altai-man_ left 14:43 hungryd85 joined, hungrydonkey left 14:51 MasterDuke left 15:06 hungryd85 left 15:08 hungrydonkey joined 15:10 [TuxCM] left 15:22 [TuxCM] joined 15:32 MasterDuke joined 15:39 softmoth joined 16:27 hungrydonkey left 16:39 Altai-man_ joined 16:42 sena_kun left 16:52 softmoth left, softmoth joined 16:55 softmoth left 17:03 softmoth joined
lizmat notable6: weekly 17:24
notable6 lizmat, 7 notes: gist.github.com/05397a8f97d90fc149...46f3909f56
17:43 pmurias joined
pmurias [Coke]: re precompilation for script as far as I remember for rakudo.js it mostly took working around for things we relied on the rakudo executable to set up 17:44
[Coke]: but it's something that is fairly important 17:45
18:28 pmurias left 18:40 sena_kun joined 18:42 Altai-man_ left
lizmat notable6: weekly reset 18:47
notable6 lizmat, Moved existing notes to “weekly_2020-04-13T18:47:48Z”
Geth_ rakudo: usev6++ created pull request #3623:
Add missing label support for some loop constructs
lizmat and another Rakudo Weekly News hits the Net: rakudoweekly.blog/2020/04/13/2020-...-surprise/ 19:25
19:27 pmurias joined 19:35 softmoth left
Geth_ roast: usev6++ created pull request #635:
Test usage of labels within nested loops
20:39 Altai-man_ joined 20:42 sena_kun left
bartolin_ lizmat: while looking at the support for labels in 'from-loop' I've noticed this line: github.com/rakudo/rakudo/blob/f987....pm6#L250. (I wondered whether this might need a tweak wrt labels, too) 20:45
But: isn't Slip.from-loop() wrong? If I'm not mistaken there is only Seq.from-loop() 20:46
do you have an idea for code that would trigger this elsif branch?
lizmat m: Slip.form-loop
camelia No such method 'form-loop' for invocant of type 'Slip'
in block <unit> at <tmp> line 1
lizmat m: Slip.from-loop 20:47
camelia No such method 'from-loop' for invocant of type 'Slip'
in block <unit> at <tmp> line 1
lizmat which implies that path is never taken
bartolin_ yeah, that's what I thought, too. tests needed ;)
should I open an issue? (I'll call it a day soon-ish ...) 20:48
lizmat yes, please make an issue
20:48 MasterDuke left
lizmat seeing that that code has been in there since Sep 2015, I'm pretty sure we can just take it out 20:49
as there has been no test breakage and no ecosystem breakage because of it
20:54 Kaeipi left, Kaeipi joined
bartolin_ github.com/rakudo/rakudo/issues/3624 ## for the Slip.from-loop thing 20:59
lizmat bartolin_++ 21:00
21:01 MasterDuke joined
bartolin_ the last days were an interesting excursion into unknown territory (Actions.nqp and Rakudo::Iterator). Unfortunately, I didn't find the source of the 'labeled next without loop construct' on the JVM backend I originally went out to fix. But it should be easier to find with the things I've learned. 21:09
21:15 ggoebel joined
ggoebel regarding precompilation of scripts... here is a link to the gsoc self-contained executable project summary: yakshavingcream.blogspot.com/2019/...view.html. They got as far as getting a basic script using a module to work. Which basically bundled the bytecode into the elf executable 21:21
Any idea how much startup time savings there could be with precompiled scripts? 21:23
Geth_ rakudo: 3aaca26a52 | (Elizabeth Mattijsen)++ | src/core.c/array_slice.pm6
Remove dead code

Probably fixes R#3624. This code was sitting there from before Christmas and did not cause any problems in core tests, roast or ecosystem tests.
linkable6 R#3624 [open]: github.com/rakudo/rakudo/issues/3624 Call to non-existing method Slip.from-loop in src/core.c/array_slice.pm6
lizmat ggoebel: completely depends on the size of the script 21:25
to give you an idea, parsing the complete setting takes about 64 seconds on my machine 21:26
yet, startup of raku is about 120 msecs 21:27
$ wc gen/moar/CORE.c.setting
70296 209498 2416876 gen/moar/CORE.c.setting
adjust for the size of your script :-) leaving that as an exercise to the reader 21:28
21:29 Altai-man_ left
ggoebel pamplemouse was the handle of the gsoc coder 21:29
lizmat jnthn: would you know a piece of code with which I could test the behaviour of affinity / general worker threads ? 21:30
jnthn: I wonder if it is just a matter of tuning my $affinity-add-thresholds := nqp::list_i(0, 1, 5, 10, 20, 50, 100); 21:35
ggoebel script size is one factor... the number of modules and time it takes to load them (precompiled or not) is another. Is there enough overhead in loading precompiled modules, that would make bundling them in a self-contained executable a significant startup time win? Certainly someday someone will write something in Raku with as many module dependencies as Perl's Moose. 21:44
MasterDuke ggoebel: Xliff would be someone to talk to. their modules are quite large and have some large dependencies 21:46
22:00 lucasb left
timotimo i hope a rakuAST based approach to regex creation will make the MQTT module a bunch faster 22:14
MasterDuke think compiling rakudo itself will get much faster? 22:17
timotimo not necessarily 22:18
if the RakuAST is indeed more compact than the equivalent QAST, we'll save some time on garbage collection 22:19
MasterDuke i haven't been able to actually profile compiling CORE.c for probably over a year now 22:22
i didn't have enough ram for a while, but now it's just the problem with the profile not ending 22:24
hm, but there's some GC log that can be turned on, could it be used to figure out how much time is spend on gc? 22:25
timotimo telemeh can be used for that 22:26
it's a little bit of work tho 22:27
i wonder if the gc entries in the profiler can become unwiedily big during core.c compilation
since we really only append into a list during recording, it might be a good idea to zstd compress data at certain points 22:28
the MVMProfileGC entries are only 80 bytes, but for every type that got tossed out during that run there's also a 24 byte entry 22:34
22:45 cognominal joined 22:46 cognomin_ left
jnthn lizmat: Create a Cro web application that just has some "hello world" handler (just the `cro stub` or Comma project for a Cro web app will do), then use `ab` to throw requests at it (something like `ab -n 10000 -c 100 localhost:20000/`) 22:49
Or replace `ab` with your preferred tool 22:50
timotimo i'm writing a small debug helper function for you MasterDuke 23:01
MasterDuke cool 23:02
timotimo i don't have enough free ram to compile a core setting with profiling right now 23:04
maybe i want to measure the call graph as well 23:05
23:12 ggoebel_ joined, ggoebel left 23:19 ggoebel_ left
MasterDuke i'm off to bed, look forward to trying it tomorrow 23:26
timotimo MasterDuke: just pushed a branch to moarvm 23:30
it's gc_measurement_debughelper
anyway, it does look like the GC entry list is an order of magnitude smaller than the call graph 23:42
hm, if there were a measurement for which nodes haven't been touched in a while, entire pieces of the call graph could be frozen into a zstd-compressed blob and unfrozen for read-out 23:45
23:55 softmoth joined