00:37 AlexDani` joined 00:39 AlexDaniel left 02:10 hungrydonkey left 02:55 hungrydonkey joined 03:32 hungrydonkey left 03:43 hungrydonkey joined 03:52 hungrydonkey left, hungrydonkey joined 04:28 hungrydonkey left, hungrydonkey joined 05:30 hungrydonkey left
tyil jjatria: my docker-perl6 repo has 2 kind of images for that purpose, a *-dev image with all those utilities, and a regular image without 05:33
you would install your application with a *-dev image, and let users run it with the regular image 05:34
using a multi-stage dockerfile to make the Docker image for users
www.tyil.nl/post/2019/04/11/perl6-...er-images/ for more information 05:35
05:37 hungrydonkey joined 05:50 hungryd36 joined 05:51 hungrydonkey left 06:53 tyil is now known as mieko 06:54 mieko is now known as tyil 07:03 hungryd36 left 07:16 hungrydonkey joined 07:20 hungrydonkey left 07:36 hungrydonkey joined
lizmat Files=1306, Tests=111210, 32445 wallclock secs (29.32 usr 8.16 sys + 3338.82 cusr 428.21 csys = 3804.51 CPU) 07:37
sadly, S17-promise/nonblocking-await.t hung 07:38
07:48 hungrydonkey left
tyil jjatria: looking at your bash script, you're using `sed -ri`, both of those options are not POSIX defined, and can't be expected to be available on a system 07:55
you can undo the -i quite easily by also dropping the `cat` earlier 07:57
I dont think -r is needed at all
sed "s/{{TAG}}/$tag/g" < "$template" > "$dockerfile" 08:00
or, to combine both sed calls as well: `sed -e "s/{{TAG}}/$base_tag/g" -e "s/{{INSTALL_OPTIONS}}/$install_options/g" < "$template" > "$dockerfile"` 08:03
its probably a bit faster as well, as you only spawn 1 sed, and only write the output to a file once 08:05
but it's mostly more portable :>
[Tux] Rakudo version 2020.02.1-289-g2cbf58372 - MoarVM version 2020.02.1-73-gc7e75be60
csv-ip5xs0.705 - 0.813
csv-ip5xs-206.175 - 6.344
csv-parser26.519 - 27.211
csv-test-xs-200.372 - 0.417
test7.578 - 8.350
test-t2.107 - 2.199
test-t --race0.999 - 1.030
test-t-2032.400 - 33.650
test-t-20 --race9.911 - 11.410
09:05
lizmat yikes 09:11
jnthn ^^
this conforms what I've seen in spectest benchmarking
lizmat feels 4221f8225feae17 is the cause 09:12
linkable6 (2020-04-01) github.com/rakudo/rakudo/commit/4221f8225f Adopt MoarVM-provided value_desc_cont
09:12 Altai-man_ joined
lizmat guesses jnthn's intuition was right 09:12
09:22 sena_kun joined 09:23 Altai-man_ left
Geth rakudo: bbed2255f3 | (Elizabeth Mattijsen)++ | src/core.c/operators.pm6
More correctly implement ^... and ^...^

At least for now: problems found while writing tests for ^... and
  ^...^ . Main problems is that the simplification of just removing
the last value generated, does not work with ... if the RHS is a list: then the value that should be skipped (or not) is the first value of that list, *not* the last value of that list.
09:25
lizmat m: dd 1 ... -Inf # LTA hang 10:29
camelia (timeout) 10:30
lizmat m: dd 1 ... *, "foo","bar" # feels to me this should warn on never being able to produce "foo" and "bar" 10:59
camelia (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,…
11:21 Altai-man_ joined 11:23 sena_kun left 11:35 Xliff joined
Xliff o/ 11:35
AlexDani` Xliff: any news? :)
11:35 AlexDani` is now known as AlexDaniel, AlexDaniel left, AlexDaniel joined
Xliff No. Been real busy with $dayJob. 11:36
Then there's family stuff.
AlexDaniel lizmat: that LTA hang is because of is-lazy 11:37
lizmat: see github.com/rakudo/rakudo/wiki/is-lazy 11:38
lizmat AlexDaniel: yeah, I know: it's lazy but not telling us it is
a thing to fix :-)
11:38 MasterDuke left
AlexDaniel yeah, everything else in that table should be fixed too :) 11:38
Geth rakudo: 30e7a67c55 | (Elizabeth Mattijsen)++ | lib/Test.rakumod
Add s/PERL6/RAKU test environment variables

  - RAKU_TEST_DIE_ON_FAIL as the new versio of PERL6_TEST_DIE_ON_FAIL
  - RAKU_TEST_TIMES as the new version of PERL6_TEST_TIMES
None of these are actually documented, it seems.
AlexDaniel well ok not everything
probably (-∞...42)
and that's it, actually, just two bugs :)
11:41 patrickb joined
Xliff I've got a C question I can't find an answer to anywhere else. Can anyone help? 11:47
It has to deal with LOCAL vs GLOBAL
11:48 MasterDuke joined
nine Xliff: if you ask your question, someone may be able to help 12:11
Xliff I have static routines in a .so that I'd like to use externally. What's the best way to accomplish that? 12:13
12:13 hungrydonkey joined
Geth roast: 5ddc9b9f47 | (Elizabeth Mattijsen)++ | S03-sequence/exhaustive.t
First batch of exhaustive ... ...^ ^... ^...^ tests

Still work in progress, mainly intended to easily allow for testing the ... refactoring work.
12:18
lizmat afk for a few hours&
Geth nqp: 80cc573700 | MasterDuke17++ (committed using GitHub Web editor) | docs/ops.markdown
Add $whence values to seekfh entry
12:30
12:40 samcv left
jnthn Xliff: Make them non-static. 13:12
Xliff: afaik, the compiler is free to inline away `static` routines and not leave a trace of them in the .so 13:13
Xliff jnthn: How can you accomplish that? 13:14
nine Looks like heaptrack's custom allocator API is ridiculously simple to use - just include the header and add some calls. Alas I don't get anything to actually show up in results :/ 13:15
Xliff jnthn: Do you mean at the source level?
jnthn Xliff: Delete the word "static" in the source and recompile?
Xliff Yeah. That's what I was afraid of.
13:16 hungrydonkey left
jnthn Oh, you were trying to do this without modifying the source...now I understand the question more. :) But yeah, such things surely ain't API. 13:17
Xliff Yes, but they should be. 13:18
This is GObject based stuff, and I'm dealing with GStreamer.
gstreamer.freedesktop.org/
jnthn Are they static things in a .h (e.g. the static inline trick to replace macros)?
Xliff Unfortunately it's plugin-based. No. It's using the static keyword in the function implementation in the .c 13:19
jnthn Oh...so then it's not usable from other C code outside that file either... 13:21
So it's not part of the C API either.
nine That's the whole point of static... 13:22
13:22 sena_kun joined
Xliff Weirdly enough, I CAN access it if I use it in a .c and link it with the .o it's compiled in. 13:22
So I tried wrapping it in a self-created .so, but that didn't work. 13:23
13:23 hungryd12 joined
Xliff It's been a while since I've done a lot of C and I've always avoided the use of the static keyword. 13:24
13:24 Altai-man_ left
Xliff It means a whole other thing in C++ where I HAVE used it. 13:24
And the weird thing is that it should be a part of the API. At least as far as I understand the GObject system. 13:25
Thanks for helping. Don't mean to go OT.
13:43 samcv joined
AlexDaniel sourceable6: 2 ... 5 13:47
sourceable6 AlexDaniel, github.com/rakudo/rakudo/blob/30e7...s.pm6#L129
AlexDaniel heh, thank you magical bot 13:49
huh 13:51
13:51 samcv left
AlexDaniel m: say (1 .. -Inf).reverse[^10] 13:51
camelia (Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf)
AlexDaniel that looks very wrong to me :)
c: all say (1 .. -Inf).reverse[^10] 13:52
committable6 AlexDaniel, gist.github.com/aa6da581c5d910b8ee...c9397e3dea
AlexDaniel hm 13:53
bisect: say (1 .. -Inf).reverse[^10]
bisectable6 AlexDaniel, Bisecting by output (old=2015.12 new=30e7a67) because on both starting points the exit code is 0
13:53 samcv joined
bisectable6 AlexDaniel, bisect log: gist.github.com/e8fb64602ae0231c45...b680086897 13:53
AlexDaniel, (2016-03-16) github.com/rakudo/rakudo/commit/ec...57924bfc39
AlexDaniel R#3595 13:55
linkable6 R#3595 [open]: github.com/rakudo/rakudo/issues/3595 (1 .. -Inf).reverse is wrong
AlexDaniel squints 14:03
m: say (Inf .. Inf)[^10]
camelia (-Inf -Inf -Inf -Inf -Inf -Inf -Inf -Inf -Inf -Inf)
AlexDaniel it almost feels like I already reported it… but I can't find a ticket 14:05
not even in old-issue-tracker
c: all say (Inf .. Inf)[^10] 14:06
committable6 AlexDaniel, gist.github.com/6583c1c0b3d7e9cd2e...8651b5797d 14:07
AlexDaniel bisect: say (Inf .. Inf)[^10]
bisectable6 AlexDaniel, Bisecting by output (old=2015.12 new=30e7a67) because on both starting points the exit code is 0
AlexDaniel, bisect log: gist.github.com/025cbeb14408af7326...4e2eedf877 14:08
AlexDaniel, (2018-08-24) github.com/rakudo/rakudo/commit/a9...330c2eaf60
AlexDaniel 6c: say (Inf ^.. Inf).reverse[^10] 14:09
committable6 AlexDaniel, gist.github.com/b2fd1a8d7ec07f790f...5dae186991
AlexDaniel 6c: say (Inf ..^ Inf).reverse[^10] 14:10
6c: say (Inf ..^ Inf)[^10]
committable6 AlexDaniel, gist.github.com/87e7ce4988523d5fcc...3c6a43d1de
AlexDaniel, gist.github.com/3ae27c0327ffe77818...8aedabe431 14:11
AlexDaniel c: all say (Inf ^.. Inf).reverse[^10] 14:14
committable6 AlexDaniel, gist.github.com/64f5f7a42ddbb85cbd...f728ff1983 14:15
AlexDaniel lizmat: so… this is weird, turns out you *can* count down with .. if you use .reverse? 14:24
m: say (2.5 .. 5).reverse[^10] 14:25
camelia (5 4 3 Nil Nil Nil Nil Nil Nil Nil)
AlexDaniel notice how it truly goes starting from 5
insead of reversing the actual values 2.5 .. 5 range would give you
tyil you're reversing the Range after all 14:30
if you do the reverse after the [^10] it would reverse the list returned by [^10], and give you a couple Nils followed by 4.5, 3.5, 2.5 14:31
MasterDuke nine: the bytecode files should end up being identical when built from master and my new branch, correct? 14:47
Geth nqp: patrickbkr++ created pull request #611:
Static nqp home hll var
14:54
nine MasterDuke: yes 14:55
14:56 samcv left, samcv joined 15:21 Altai-man_ joined 15:23 sena_kun left 15:24 ufobat_ joined 15:28 ufobat__ left
AlexDaniel tyil: is it supposed to do that? 15:33
yesterday I was defending the behavior of … because it mimicked what .. does 15:34
but
m: say (2.5 ... 5).reverse
camelia (4.5 3.5 2.5)
AlexDaniel m: say (2.5 … 5).reverse
camelia (4.5 3.5 2.5)
AlexDaniel m: say (2.5 .. 5).reverse
camelia (5 4 3)
AlexDaniel these are different, understandably, but uh… huh?
tyil the ... operator produces a Seq, the .. operator produces a Range 15:46
which, when you know that, explains the behaviour
but I do agree that the ... behaviour seems out of place to me at first glance
m: (2.5 .. 5).WHAT 15:47
camelia ( no output )
tyil m: (2.5 .. 5).WHAT.say
camelia (Range)
tyil m: (2.5 ... 5).WHAT.say
camelia (Seq)
AlexDaniel just because it produces a Range doesn't mean that its .reverse should be what it is 16:44
m: say (2.5 .. 5).reverse
camelia (5 4 3)
AlexDaniel m: say (2.5 .. 5).list.reverse
camelia (4.5 3.5 2.5)
AlexDaniel sure, it is understandable, but should it be this way?
c: all say (0 .. NaN)[^10]; say (NaN .. 0).reverse[^10]; 16:56
committable6 AlexDaniel, gist.github.com/b1dfa4e78b589a8112...6bfffe1b6f 17:01
AlexDaniel m: say (Inf ... Inf)[^10] 17:05
camelia (Inf Inf Inf Inf Inf Inf Inf Inf Inf Inf)
AlexDaniel why?
m: say Inf ~~ Inf
camelia True
AlexDaniel it should've stopped after the first Inf, no?
timotimo m: say (5 ... 5)[^10] 17:06
camelia (5 Nil Nil Nil Nil Nil Nil Nil Nil Nil)
timotimo m: say Inf cmp Inf; say Inf <=> Inf
camelia Same
Same
timotimo it probably should
AlexDaniel c: all say (Inf ... Inf)[^10] 17:07
committable6 AlexDaniel, gist.github.com/900516e19bd427cd93...faae994244
17:18 maggotbrain joined 17:22 sena_kun joined 17:23 Altai-man_ left 18:04 hungryd12 left 18:30 camelCaser joined, camelCaser left 18:31 camelCaser joined
nine This seems to be growing happily without bounds: 18:49
raku -e 'class Foo { }; loop { my $foo = Foo.new; y $role := Metamodel::ParametricRoleHOW.new_type; $role.^set_body_block(-> |args {}); $role.^compose; $foo does $role; use nqp; nqp::force_gc; $i::j; }'
raku -e 'class Foo { }; loop { my $foo = Foo.new; my $role := Metamodel::ParametricRoleHOW.new_type; $role.^set_body_block(-> |args {}); $role.^compose; $foo does $role; use nqp; nqp::force_gc; $i::j; }'
Seems to be the source of the remaining couple of gigs of memory usage of our Cro app. This ^^^ is part of Inline::Perl5 18:51
timotimo correct me if i'm wrong, but i can't getattr_o on an object with one REPR using a type object that has another REPR, right? 18:57
i.e. i can't do something like getattr_o($foo, AClassThatUsesAsyncTask, AClassThatIsP6Opaque, '$!blergh') 18:58
er, that's wrong
i.e. i can't do something like getattr_o($foo-of-AClassThatUsesAsyncTask, AClassThatIsP6Opaque, '$!blergh')
because spesh currently looks only at the 2nd argument for whether there is a spesh function in the repr or not 18:59
but it's more likely that it knows the argument after that
and i think those can not differ in REPR
19:21 Altai-man_ joined 19:23 sena_kun left
jnthn nine: Mixins types are cached, so if you produce ever more roles and keeping mixing them in, then yes, the mixin cache is going to grow without bounds. Are you really repeatedly forming new parametric roles? 'cus that's costly... 19:47
(I'd somewhat expect the roles to be cached somehow...) 19:48
MasterDuke it looks sort of related to the native array stuff recently, where lizmat++'s attempted fix for the types not being composed ended up composing a new type every time a new native array was created 19:54
20:24 Xliff left
nine jnthn: that was the csv-ip5xs speedup before I started using a custom HOW. Inline::Perl5::Object's FALLBACK generates these roles to containing optimized versions of the called method. Works great for when it's always the same CSV object, less well when you get fresh objects all the time 20:29
I really should cache those roles. It'll always be the same class and method names and Inline::Perl5 object. 20:30
That'll make it a lot faster. Or at least a lot less slower. 20:31
When I cache them, I can also extend them to have one role per Perl 5 class that gets extended instead of mixing in a new role for every method 20:33
Or...ditch the whole thing and try to use Inline::Perl5::ClassHOW instead.
Threads make the latter a little difficult. But maybe I find a good way to do it anyway. 20:34
21:22 sena_kun joined, Xliff joined
Xliff AlexDaniel: Have a recent blin invocation that I can test? 21:23
21:23 Altai-man_ left
Geth ¦ rakudo: lizmat self-assigned (1 .. -Inf).reverse is wrong github.com/rakudo/rakudo/issues/3595 21:44
¦ rakudo: lizmat self-assigned (Inf ^.. Inf).reverse is wrong github.com/rakudo/rakudo/issues/3597 21:45
¦ rakudo: lizmat self-assigned Run time SORRY when dividing an Inf range by 0 github.com/rakudo/rakudo/issues/3598
¦ rakudo: lizmat self-assigned (Inf .. Inf) is wrong github.com/rakudo/rakudo/issues/3596
¦ rakudo: lizmat self-assigned Reversed ranges with NaN are wrong (maybe?) github.com/rakudo/rakudo/issues/3599 21:46
¦ rakudo: lizmat self-assigned (Inf ... Inf) is wrong github.com/rakudo/rakudo/issues/3600
21:57 patrickb left
jjatria tyil: Nice. I'll make some changes to my commit then. Thanks! 22:05
jnthn nine: If you have a very rarely updated cache that's a hash, then a good trick is to keep it in a Scalar, and only ever update it by building a new hash and cas'ing the reference; that way you don't ever need a lock to read the cache.
nine: But yes, caching them should fix the leak too
Also, it explains why the amount of memory eating is so high I guess; it's a non-small amount of data involved. 22:06
Geth Blin: Xliff++ created pull request #23:
- Adds creation of overview.md to Blin
23:21
23:21 Altai-man_ joined 23:23 sena_kun left 23:24 hungrydonkey joined