01:55
MasterDuke left
03:06
upupbb-user3 left
03:17
upupbb-user3 joined
04:25
cognominal left
04:35
upupbb-user3 left
04:51
hungrydonkey joined
05:00
hungrydonkey46 joined
05:02
hungrydonkey left
05:17
cognominal joined
05:47
[TuxCM] left
06:29
hungrydonkey46 left
06:48
hungrydonkey joined
|
|||||||||||||||||||||||||||||||||||||||
[Tux] |
|
06:50 | |||||||||||||||||||||||||||||||||||||
07:18
MasterDuke joined
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | lizmat++ great weekly | 07:28 | |||||||||||||||||||||||||||||||||||||
08:15
hungrydonkey left
09:03
squashable6 left
09:05
squashable6 joined
09:18
upupbb-user3 joined
09:34
cognomin_ joined
09:37
cognominal left
10:01
[TuxCM] joined
10:12
cognominal joined
10:15
cognomin_ left
10:31
MasterDuke left
11:06
finsternis left
|
|||||||||||||||||||||||||||||||||||||||
lizmat | Files=1306, Tests=111225, 210 wallclock secs (28.89 usr 8.15 sys + 2963.90 cusr 267.52 csys = 3268.46 CPU) | 11:56 | |||||||||||||||||||||||||||||||||||||
Kaiepi | .tell jnthn, did you get a chance to review the pr yet? | 12:05 | |||||||||||||||||||||||||||||||||||||
tellable6 | Kaiepi, I'll pass your message to jnthn | ||||||||||||||||||||||||||||||||||||||
12:29
squashable6 left
12:31
squashable6 joined
12:41
MasterDuke joined
12:43
lichtkind joined
|
|||||||||||||||||||||||||||||||||||||||
tbrowder | hi, lizmat. | 12:48 | |||||||||||||||||||||||||||||||||||||
lizmat | tbrowder o/ | ||||||||||||||||||||||||||||||||||||||
tbrowder | i'm looking at yr P5 version of scalar util and you don't emulate openhandle | 12:49 | |||||||||||||||||||||||||||||||||||||
PostScript::File uses it in a weird way and i've taken a shot at a raku version:... | 12:50 | ||||||||||||||||||||||||||||||||||||||
sub oh($f) { return True if $f.^name ~~ /Handle/} | 12:51 | ||||||||||||||||||||||||||||||||||||||
it should be undef unless the arg is an open file handle | 12:52 | ||||||||||||||||||||||||||||||||||||||
opinion? | |||||||||||||||||||||||||||||||||||||||
jnthn | Matching on .^name is awfully fragile; should probably just be so $f ~~ IO::Handle | 12:53 | |||||||||||||||||||||||||||||||||||||
tellable6 | 2020-03-31T12:05:22Z #raku-dev <Kaiepi> jnthn, did you get a chance to review the pr yet? | ||||||||||||||||||||||||||||||||||||||
lizmat | tbrowder: what jnthn says :-) | ||||||||||||||||||||||||||||||||||||||
jnthn | Kaiepi: Didn't get to any Raku stuff yesterday (well, aside from that needed on a $dayjob project...) Today looks better for that. :) | ||||||||||||||||||||||||||||||||||||||
lizmat | tbrowder: I'm not aware of what opehandle is | 12:54 | |||||||||||||||||||||||||||||||||||||
*openhandle | |||||||||||||||||||||||||||||||||||||||
tbrowder | ah, i didn't realize that, thanks you two! made my day | ||||||||||||||||||||||||||||||||||||||
yes, my usual ff (fumble finger,none finger typing :-D | |||||||||||||||||||||||||||||||||||||||
lizmat | hmmm... it appears an update is needed :-) | 12:55 | |||||||||||||||||||||||||||||||||||||
tbrowder: could you make an issue for it? so it won't fall through the cracks ? | 12:56 | ||||||||||||||||||||||||||||||||||||||
tbrowder | you said in Scalar::Util you didn't port it due to internalisms | ||||||||||||||||||||||||||||||||||||||
yes i will, thnx | |||||||||||||||||||||||||||||||||||||||
lizmat | aah... ok hmmm | ||||||||||||||||||||||||||||||||||||||
sub oh($f) { $f.?opened } | 12:58 | ||||||||||||||||||||||||||||||||||||||
sub oh($f) { ?$f.?opened } # if you insist on a Bool being returned | 12:59 | ||||||||||||||||||||||||||||||||||||||
jnthn | lizmat: I'd make sure it's a handled also; .opened isn't such a weird method name to have | 13:00 | |||||||||||||||||||||||||||||||||||||
*handle | |||||||||||||||||||||||||||||||||||||||
13:00
lichtkind left
|
|||||||||||||||||||||||||||||||||||||||
lizmat | sub oh($f) { $f ~~ IO::Handle && $f.opened } # in that case | 13:01 | |||||||||||||||||||||||||||||||||||||
jnthn | *nod* | 13:02 | |||||||||||||||||||||||||||||||||||||
13:03
Altai-man_ joined
|
|||||||||||||||||||||||||||||||||||||||
lizmat | sub oh($f) { $f ~~ IO::Handle && $f.opened ?? $f !! Nil } # to mimic the interface of openhandle tbrowder | 13:09 | |||||||||||||||||||||||||||||||||||||
tbrowder | 'IO::Handle' | ||||||||||||||||||||||||||||||||||||||
i see quotes required due to '::' | 13:10 | ||||||||||||||||||||||||||||||||||||||
lizmat | ? | ||||||||||||||||||||||||||||||||||||||
tbrowder | when i tried bare ~~ /IO::Handle/ i got an error | 13:11 | |||||||||||||||||||||||||||||||||||||
test for openess is required, good point | 13:12 | ||||||||||||||||||||||||||||||||||||||
lizmat | do you have a gist ? | ||||||||||||||||||||||||||||||||||||||
it should not require quotes | |||||||||||||||||||||||||||||||||||||||
tbrowder | let me check, may be an ff | ||||||||||||||||||||||||||||||||||||||
jnthn | tbrowder: Remove the /../; the smartmatch is against the type, not a regex :) | 13:14 | |||||||||||||||||||||||||||||||||||||
tbrowder | duh, i see that now, sorry | 13:15 | |||||||||||||||||||||||||||||||||||||
13:16
lichtkind joined
|
|||||||||||||||||||||||||||||||||||||||
lizmat | tbrowder: anyways, Scalar::Util 0.07 on its way to CPAN now | 13:17 | |||||||||||||||||||||||||||||||||||||
with openhandle() support :-) | |||||||||||||||||||||||||||||||||||||||
tbrowder | thnx much! | ||||||||||||||||||||||||||||||||||||||
lizmat | glad to see someone using those modules :) | 13:18 | |||||||||||||||||||||||||||||||||||||
jnthn | Kaiepi: Taken a look at it and left feedback, also looked at the NQP and MoarVM deps of it | 13:20 | |||||||||||||||||||||||||||||||||||||
Kaiepi | aight, thanks | ||||||||||||||||||||||||||||||||||||||
tbrowder | lizmat: they really are helpful, as well as many other modules by other #raku people. i'm so far giving 10 a workout, 5 of yours and 5 others. my README has the credits listed. | 13:34 | |||||||||||||||||||||||||||||||||||||
lizmat | tbrowder++ | ||||||||||||||||||||||||||||||||||||||
14:07
sena_kun joined
14:08
Altai-man_ left
14:11
upupbb-user3 left
14:32
lucasb joined
16:05
Altai-man_ joined
16:08
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
tbrowder | from reading docs it's pretty clear how to use a separate file to import subs and vars into a unit module file. is there any way to do the same for a class? i.e., can i put some or all of a classes methods in another file and import them some magic way? | 16:28 | |||||||||||||||||||||||||||||||||||||
afk for a while... | 16:31 | ||||||||||||||||||||||||||||||||||||||
nine | no | 16:37 | |||||||||||||||||||||||||||||||||||||
[Coke] | Could you stub the class and then augment it? | 16:38 | |||||||||||||||||||||||||||||||||||||
(I think you'd have to do the other imports yourself, not from inside the stub, though) | |||||||||||||||||||||||||||||||||||||||
Altai-man_ | I am feeling this is the question where "why" part is more important than "how" part. | 16:39 | |||||||||||||||||||||||||||||||||||||
[Coke] | :) | ||||||||||||||||||||||||||||||||||||||
nine | Well actually, there is a way: put those methods into a role | ||||||||||||||||||||||||||||||||||||||
and consume the role | |||||||||||||||||||||||||||||||||||||||
[Coke] | I get not wanting to have a huge monolithic source file. | ||||||||||||||||||||||||||||||||||||||
nine++ | |||||||||||||||||||||||||||||||||||||||
Altai-man_ | [Coke], if you have a huge class there are plenty of other ways to structure it in another way, I think. Moving lots and lots methods doesn't solve the issue, just moves it in another file and you're in square one, no? | 16:41 | |||||||||||||||||||||||||||||||||||||
[Coke] | It solves the issue of "having a file that's very large". | 16:43 | |||||||||||||||||||||||||||||||||||||
That's all. I'm not saying it's the best way to maintain your source. But if you can group things into Roles, that hopefully makes more sense with a thematic group of methods as well. | |||||||||||||||||||||||||||||||||||||||
Altai-man_ | Roles decomposition - sure. I mean, instead of "a very large file" you have "a small file with class definition and an a bit less large but still large file with its methods", no? | 16:44 | |||||||||||||||||||||||||||||||||||||
Though, well, never mind me. | 16:45 | ||||||||||||||||||||||||||||||||||||||
nine | Of course, an excellent question in such a case would be: why do you have so many methods in a class in the first place? | 16:46 | |||||||||||||||||||||||||||||||||||||
Altai-man_ | Yes, and this takes us back to "why not just decompose". \o/ | 16:47 | |||||||||||||||||||||||||||||||||||||
Kaiepi | i think i figured out how to get rid of that pesky branch in Metamodel::Mixins.mixin once and for all | 17:01 | |||||||||||||||||||||||||||||||||||||
the only time it gets called on uncomposed types during the setting is when traits that use mixins are applied to routines before their types get composed | 17:02 | ||||||||||||||||||||||||||||||||||||||
so by applying Callable to Code and composing Sub/Method/Submethod in the prologue no mixins of uncomposed metaobjects get made during the setting | 17:03 | ||||||||||||||||||||||||||||||||||||||
just waiting for tests to finish before making the pr | |||||||||||||||||||||||||||||||||||||||
Geth | rakudo: Kaiepi++ created pull request #3583: Ensure Routine subtypes are composed before performing mixins with their instances |
17:44 | |||||||||||||||||||||||||||||||||||||
17:48
AlexDaniel left
17:55
lichtkind left
17:56
lichtkind joined
17:59
upupbb-user3 joined
|
|||||||||||||||||||||||||||||||||||||||
[Coke] | let's make sure our distros never don't ship core modules. (having trouble with perl5.26 on git bash on windows that's missing some ExtUtils module) | 18:03 | |||||||||||||||||||||||||||||||||||||
18:06
sena_kun joined
18:08
Altai-man_ left
|
|||||||||||||||||||||||||||||||||||||||
[Coke] | (on the plus side, I'm now using a raku one liner instead) | 18:11 | |||||||||||||||||||||||||||||||||||||
tbrowder | thnx for ideas. yes, it's a LARGE file and i work remotely a lot and don't vi very well | 18:14 | |||||||||||||||||||||||||||||||||||||
i'm trying to port a large Perl module and haven't yet figured out a way to cut back the number of methods or put some of them in a separate class, but that can be done for sure. | 18:19 | ||||||||||||||||||||||||||||||||||||||
sena_kun | tbrowder, can it be separated into roles? Maybe it does too much? | 18:20 | |||||||||||||||||||||||||||||||||||||
nine | tbrowder: can't you open it in your local editor via some remote protocol like sftp? | 18:21 | |||||||||||||||||||||||||||||||||||||
18:34
lichtkind left
|
|||||||||||||||||||||||||||||||||||||||
nine | jnthn: if we take the :noinline band aid for takenextdispatcher now, the speedups we are gonna gain as side effect of your one dispatcher interface to rule them all (tm) will look even more impressive ;) | 18:37 | |||||||||||||||||||||||||||||||||||||
sena_kun | nine, one dispatcher interface? Do we have a proposal? | 18:38 | |||||||||||||||||||||||||||||||||||||
nine | sena_kun: not yet: github.com/Raku/problem-solving/is...-606783081 | 18:41 | |||||||||||||||||||||||||||||||||||||
sena_kun | nine, thanks. | 18:52 | |||||||||||||||||||||||||||||||||||||
19:35
maggotbrain joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 5baa645bb0 | (Ben Davies)++ | src/core.c/Capture.pm6 Make Capture.raku 45% faster Most of the work the method does reduces to nqp ops quite nicely. |
20:02 | |||||||||||||||||||||||||||||||||||||
20:06
Altai-man_ joined
20:09
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
Kaiepi | there are more optimizations to Capture i can make but those will require a pr | 20:23 | |||||||||||||||||||||||||||||||||||||
not quite to that degree though | |||||||||||||||||||||||||||||||||||||||
dogbert17 | .seen lizmat | 20:53 | |||||||||||||||||||||||||||||||||||||
tellable6 | dogbert17, I saw lizmat 2020-03-31T19:15:21Z in #raku: <lizmat> yup | ||||||||||||||||||||||||||||||||||||||
lizmat | you rang? | ||||||||||||||||||||||||||||||||||||||
dogbert17 | I have a stupid question (as usual) | ||||||||||||||||||||||||||||||||||||||
lizmat | I hope I will raise the standard of the response :-) | ||||||||||||||||||||||||||||||||||||||
dogbert17 | I believe you'll have a laugh :) | 20:54 | |||||||||||||||||||||||||||||||||||||
m: my @a; push @a, $_ for ^500000; say now - INIT now # is this the same as | |||||||||||||||||||||||||||||||||||||||
camelia | 4.800496 | ||||||||||||||||||||||||||||||||||||||
dogbert17 | m: my @a; @a.push: $_ for ^500000; say now - INIT now # this | ||||||||||||||||||||||||||||||||||||||
camelia | 0.2146712 | ||||||||||||||||||||||||||||||||||||||
lizmat | push @a calls @a.push | 20:55 | |||||||||||||||||||||||||||||||||||||
dogbert17 | there's a tiny speed difference | ||||||||||||||||||||||||||||||||||||||
lizmat | so you're cutting out the "middle man" as it were | ||||||||||||||||||||||||||||||||||||||
dogbert17 | and the middle man takes his time | 20:56 | |||||||||||||||||||||||||||||||||||||
lizmat | hmmm... looking at profiles, it looks like @a.push is not getting jitted from inside sub push | 20:57 | |||||||||||||||||||||||||||||||||||||
20:57
Kaeipi joined
|
|||||||||||||||||||||||||||||||||||||||
Kaiepi | you can use $*INIT-INSTANT instead of INIT now | 20:57 | |||||||||||||||||||||||||||||||||||||
20:57
Kaiepi left
|
|||||||||||||||||||||||||||||||||||||||
dogbert17 | Kaiepi: thx, didn't know that | 20:58 | |||||||||||||||||||||||||||||||||||||
tellable6 | dogbert17, I'll pass your message to Kaiepi | ||||||||||||||||||||||||||||||||||||||
dogbert17 | I wonder how many uses the 'older' syntax | 20:59 | |||||||||||||||||||||||||||||||||||||
lizmat | ah, the source code of sub push is definitely, eh, icky | 21:00 | |||||||||||||||||||||||||||||||||||||
dogbert17 | oops | 21:02 | |||||||||||||||||||||||||||||||||||||
icky like in 'not very fast'? | |||||||||||||||||||||||||||||||||||||||
I was looking at an old sieve benchmark which was discussed a few years ago | 21:05 | ||||||||||||||||||||||||||||||||||||||
lizmat looks at a better solution | 21:06 | ||||||||||||||||||||||||||||||||||||||
for github.com/rakudo/rakudo/issues/2943 | |||||||||||||||||||||||||||||||||||||||
dogbert17 | changing one line, i.e. '@composite[$t] || push @primes, $t;' to use the method syntax saved more than 10% of the total runtime | ||||||||||||||||||||||||||||||||||||||
lizmat: than you're in the relevant piece of code :) | 21:08 | ||||||||||||||||||||||||||||||||||||||
dunno if this warrants an issue, what do you think? | 21:09 | ||||||||||||||||||||||||||||||||||||||
lizmat | yeah, please make one :-) | ||||||||||||||||||||||||||||||||||||||
dogbert17 | coming up ... | ||||||||||||||||||||||||||||||||||||||
R#3584 | 21:15 | ||||||||||||||||||||||||||||||||||||||
linkable6 | R#3584 [open]: github.com/rakudo/rakudo/issues/3584 sub push much slower than method push | ||||||||||||||||||||||||||||||||||||||
Kaeipi | oh, there's one optimization to Capture i can make without a pr | 21:16 | |||||||||||||||||||||||||||||||||||||
this one's more important than the raku one | |||||||||||||||||||||||||||||||||||||||
MasterDuke | greppable6: /^\s*push[ (]/ | 21:19 | |||||||||||||||||||||||||||||||||||||
greppable6 | MasterDuke, Found nothing! | ||||||||||||||||||||||||||||||||||||||
MasterDuke | greppable6: help | ||||||||||||||||||||||||||||||||||||||
greppable6 | MasterDuke, Like this: greppable6: password # See wiki for more examples: github.com/Raku/whateverable/wiki/Greppable | ||||||||||||||||||||||||||||||||||||||
MasterDuke | greppable6: ^\s*push[ (] | 21:20 | |||||||||||||||||||||||||||||||||||||
greppable6 | MasterDuke, 749 lines, 142 modules: gist.github.com/2f9eed0d8624e8b915...bffd34bb90 | ||||||||||||||||||||||||||||||||||||||
Kaeipi | geth didn't log it, but i made Capture.WHICH 60% faster | 21:23 | |||||||||||||||||||||||||||||||||||||
lizmat pings tyil re Geth | 21:24 | ||||||||||||||||||||||||||||||||||||||
Kaeipi | hm, maybe the way i was thinking of optimizing Capture further that would require a pr isn't the best idea | 21:31 | |||||||||||||||||||||||||||||||||||||
i was thinking of making it so @!list and %!hash always exist, but do they not at the moment because there's a significant impact on memory usage? | |||||||||||||||||||||||||||||||||||||||
lizmat | yes | ||||||||||||||||||||||||||||||||||||||
Kaeipi | ah | 21:32 | |||||||||||||||||||||||||||||||||||||
lizmat | but check with jnthn: things may have changed since then | ||||||||||||||||||||||||||||||||||||||
Kaeipi | aigh | 21:33 | |||||||||||||||||||||||||||||||||||||
t | |||||||||||||||||||||||||||||||||||||||
in the meantime, some methods don't check if they exist or not | 21:34 | ||||||||||||||||||||||||||||||||||||||
lizmat | Kaeipi: well, try to create a case where they would fail ? | 21:39 | |||||||||||||||||||||||||||||||||||||
Kaeipi | it's just EXISTS-KEY that doesn't. the other Positional/Associative methods return Nil when that happens | 21:45 | |||||||||||||||||||||||||||||||||||||
so i'm thinking it should return False when that happens | |||||||||||||||||||||||||||||||||||||||
lizmat | I think EXISTS-KEY is fine, because it will also return 0 if there is no hash? | 21:46 | |||||||||||||||||||||||||||||||||||||
Kaeipi | m: say [].Capture.<foo>:exists | ||||||||||||||||||||||||||||||||||||||
camelia | existskey requires a concrete object (got a VMNull type object instead) in block <unit> at <tmp> line 1 |
21:47 | |||||||||||||||||||||||||||||||||||||
lizmat | ok, that would be a bug :-) | ||||||||||||||||||||||||||||||||||||||
Kaeipi | fixed | 21:52 | |||||||||||||||||||||||||||||||||||||
couldn't the \key and Str:D \key candidates for EXISTS-KEY and a couple other methods be made into one Str() candidate? | 21:53 | ||||||||||||||||||||||||||||||||||||||
lizmat | Kaeipi: that's a performance issue... but maybe not anymore: the code precedes coercion capabilities in signatures | 21:54 | |||||||||||||||||||||||||||||||||||||
so you would have to benchmark | |||||||||||||||||||||||||||||||||||||||
Kaeipi | aight | 21:56 | |||||||||||||||||||||||||||||||||||||
MasterDuke | coercion looks to be slightly slower | 22:01 | |||||||||||||||||||||||||||||||||||||
lizmat | yeah, but how much ? | ||||||||||||||||||||||||||||||||||||||
MasterDuke | m: class F { method bar(Str:D() \a) { "a " ~ a }; }; my $a; $a = F.bar((^2).pick ?? "b" !! 2) for ^100_000; say now - INIT now; say $a | ||||||||||||||||||||||||||||||||||||||
camelia | 0.4300029 a b |
||||||||||||||||||||||||||||||||||||||
MasterDuke | m: | 22:02 | |||||||||||||||||||||||||||||||||||||
m: class F { multi method bar(Str:D \a) { "a " ~ a }; multi method bar(\a) { "a " ~ a.Str } }; my $a; $a = F.bar((^2).pick ?? "b" !! 2) for ^100_000; say now - INIT now; say $a | |||||||||||||||||||||||||||||||||||||||
camelia | 0.3168794 a 2 |
||||||||||||||||||||||||||||||||||||||
22:03
MasterDuke left
22:05
dogbert17 left,
dogbert17 joined
22:07
sena_kun joined
22:08
patrickb joined
22:09
Altai-man_ left
|
|||||||||||||||||||||||||||||||||||||||
lizmat | m: multi a(\b) { "\\" }; multi a(@b) { q/@/ }; dd a $(1,2) # sorta expected to see \ there | 22:14 | |||||||||||||||||||||||||||||||||||||
camelia | "\@" | ||||||||||||||||||||||||||||||||||||||
Kaeipi | huh | ||||||||||||||||||||||||||||||||||||||
i would've expected Str() to be a bit faster since there are fewer candidates to analyze | 22:15 | ||||||||||||||||||||||||||||||||||||||
lizmat | the additional nqp::istype() either blows it, or the Any makes it too wide ? | ||||||||||||||||||||||||||||||||||||||
.tell tyil looks like Geth is AWOL again | 22:18 | ||||||||||||||||||||||||||||||||||||||
tellable6 | lizmat, I'll pass your message to tyil | ||||||||||||||||||||||||||||||||||||||
22:23
patrickb left
|
|||||||||||||||||||||||||||||||||||||||
tbrowder | .tell nine when i say remote i mean via a terminal on my ipad accessing my laptop in another room while i'm lying in my easy chair :-/ | 22:27 | |||||||||||||||||||||||||||||||||||||
tellable6 | tbrowder, I'll pass your message to nine | ||||||||||||||||||||||||||||||||||||||
tbrowder | i could use emacs but i don't like it so much without a real gui...all lame excuses i know... | 22:29 | |||||||||||||||||||||||||||||||||||||
22:37
MasterDuke joined
22:51
lucasb left
|
|||||||||||||||||||||||||||||||||||||||
Kaeipi | oh lizmat is github.com/rakudo/rakudo/pull/3575 worth reviewing before the next release? | 22:53 | |||||||||||||||||||||||||||||||||||||
23:00
sena_kun left
23:17
upupbb-user3 left
|