00:03
hungrydonkey joined
00:41
lucs left,
lucs joined
01:42
evalable6 left,
linkable6 left,
linkable6 joined
01:44
evalable6 joined
01:48
Altai-man_ joined
01:50
sena_kun left
03:49
sena_kun joined
03:51
Altai-man_ left
05:31
Guest16689 is now known as masak
05:48
|Tux| left,
Altai-man_ joined
05:51
sena_kun left
06:18
Xliff left
06:53
hungryd79 joined
06:56
hungrydonkey left
07:04
hungrydonkey joined
07:05
hungryd79 left
07:10
hungrydonkey left,
hungrydonkey joined
07:49
sena_kun joined
07:50
Altai-man_ left
|
|||||||||||||||||||||||||||||||||||||||
lizmat | Files=1306, Tests=111228, 212 wallclock secs (29.00 usr 8.38 sys + 2996.04 cusr 271.44 csys = 3304.86 CPU) | 08:08 | |||||||||||||||||||||||||||||||||||||
MasterDuke | when compiling rakudo, there are 2278304 call to `symbol` github.com/Raku/nqp/blob/master/sr...k.nqp#L62, but only 31826 call to `new` github.com/Raku/nqp/blob/master/sr...ck.nqp#L14 | 08:50 | |||||||||||||||||||||||||||||||||||||
any reason not to just `%!symbol := nqp::hash()` in `new` and remove the check in `symbol`? | 08:51 | ||||||||||||||||||||||||||||||||||||||
lizmat | if those numbers are correct, then it feels like something to try | 08:57 | |||||||||||||||||||||||||||||||||||||
nine | MasterDuke: do we actually call symbol on all or at least most blocks? | 09:10 | |||||||||||||||||||||||||||||||||||||
MasterDuke | oh hm, you think it might just be lots of repeated calls to a few? | ||||||||||||||||||||||||||||||||||||||
nine | Could be. Also looking at that code, we wouldn't have to allocate %!symbol for the else branch | 09:11 | |||||||||||||||||||||||||||||||||||||
MasterDuke | here? github.com/Raku/nqp/blob/master/sr...ck.nqp#L75 won't the atkey complain if %!symbol isn't allocated? | 09:17 | |||||||||||||||||||||||||||||||||||||
nine | I was thinking: else { if nqp::isnull(%!symbol) { %NOSYMS } else { nqp::ifnull(nqp::atkey(%!symbol, $name), %NOSYMS)) } } | 09:20 | |||||||||||||||||||||||||||||||||||||
MasterDuke | right | ||||||||||||||||||||||||||||||||||||||
nine | It all depends on whether the majority of blocks gain symbols at some point | 09:21 | |||||||||||||||||||||||||||||||||||||
MasterDuke | hm, i think the name is not guaranteed to be unique, and the cuid isn't assigned in new(). can i use nqp::where() or will that change if the gc moves things? | 09:29 | |||||||||||||||||||||||||||||||||||||
lizmat | it's my understanding that nqp::where is *not* constant over the lifetime of an object | 09:31 | |||||||||||||||||||||||||||||||||||||
but I could be wrong | |||||||||||||||||||||||||||||||||||||||
nine | nqp::where is not constant, nqp::objectid is | 09:32 | |||||||||||||||||||||||||||||||||||||
MasterDuke | ah, i'll try that | ||||||||||||||||||||||||||||||||||||||
nine | nqp::objectid works by forcing the object into gen2, so it's address will stay stable. | ||||||||||||||||||||||||||||||||||||||
09:35
hungryd41 joined
09:38
hungrydonkey left
|
|||||||||||||||||||||||||||||||||||||||
MasterDuke | lots of repeated symbol calls. most is 553193 | 09:40 | |||||||||||||||||||||||||||||||||||||
huh. but there are repeated values for nqp::objectid in new? | 09:43 | ||||||||||||||||||||||||||||||||||||||
i added `note("Q::B.new: " ~ nqp::objectid($node));` after this line github.com/Raku/nqp/blob/master/sr...ck.nqp#L20 | 09:44 | ||||||||||||||||||||||||||||||||||||||
nine | They are stable and unique at the time they're generated - not unique over the life time of the program. | ||||||||||||||||||||||||||||||||||||||
After all even in gen2 objects can get collected and their memory location be reused. | 09:45 | ||||||||||||||||||||||||||||||||||||||
09:48
Altai-man_ joined
09:50
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
Geth_ | rakudo: afff3b0b2e | (Elizabeth Mattijsen)++ | lib/Test.rakumod Make sure die_on_fail shows correct env variable name Also make it a 2 line statement for better readability |
09:55 | |||||||||||||||||||||||||||||||||||||
10:02
camelCaser left,
ccamel joined
|
|||||||||||||||||||||||||||||||||||||||
tbrowder | lizmat: can you explain what you mean when you say "hllize" something | 11:00 | |||||||||||||||||||||||||||||||||||||
i see "hllize_nfa"... | |||||||||||||||||||||||||||||||||||||||
lizmat | m: use nqp; my $l := nqp::list; dd $l.^name, nqp::hllize($l).^name | 11:07 | |||||||||||||||||||||||||||||||||||||
camelia | "BOOTArray" "List" |
||||||||||||||||||||||||||||||||||||||
lizmat | tbrowder: does that make it clearer ? | ||||||||||||||||||||||||||||||||||||||
tbrowder | yes, thnx | 11:10 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | lizmat: but why does it have to do the sorting ahead of time? | 11:22 | |||||||||||||||||||||||||||||||||||||
[Tux] |
|
11:23 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | lizmat: if nobody is asking for the elements then surely we can delay that? | ||||||||||||||||||||||||||||||||||||||
also, TIL: | |||||||||||||||||||||||||||||||||||||||
m: my @a = <a b c d e f g h i>; my $h := @a.head(3); @a[0]=42; say $h | |||||||||||||||||||||||||||||||||||||||
camelia | (42 b c) | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | oh and you don't have to bind | 11:24 | |||||||||||||||||||||||||||||||||||||
m: my @a = <a b c d e f g h i>; my $h = @a.head(3); @a[0]=42; say $h | |||||||||||||||||||||||||||||||||||||||
camelia | (42 b c) | ||||||||||||||||||||||||||||||||||||||
lizmat | containers for the win ? | ||||||||||||||||||||||||||||||||||||||
AlexDaniel: what would be the reason for delaying the sort? As soon as *any* element is needed, the sort would have to be done | 11:25 | ||||||||||||||||||||||||||||||||||||||
for both .sort as well as .min .max you would need to see each element of the source at least once | 11:26 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | lizmat: you don't have to sort if not all elements are needed, which is demonstrated by the ticket | ||||||||||||||||||||||||||||||||||||||
iterate yes, sort no | |||||||||||||||||||||||||||||||||||||||
lizmat | ok, but then I think this functionality belongs in .min / .max | 11:27 | |||||||||||||||||||||||||||||||||||||
as *that*'s what you're asking for then | |||||||||||||||||||||||||||||||||||||||
11:32
finsternis left
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | maybe | 11:32 | |||||||||||||||||||||||||||||||||||||
11:49
sena_kun joined
11:50
Altai-man_ left
|
|||||||||||||||||||||||||||||||||||||||
Geth_ | ¦ problem-solving: JJ assigned to jnthn Issue Redesign Exceptions for subclassing github.com/Raku/problem-solving/issues/173 | 12:19 | |||||||||||||||||||||||||||||||||||||
12:20
MasterDuke left
12:26
MasterDuke joined
12:40
hungryd41 left,
hungrydonkey joined
12:47
hungryd36 joined
12:51
hungrydonkey left
13:41
MasterDuke left
13:42
MasterDuke joined
13:48
Altai-man_ joined
13:51
sena_kun left
13:56
hungrydonkey joined
14:00
hungryd36 left
14:06
hungrydonkey left,
hungryd58 joined
|
|||||||||||||||||||||||||||||||||||||||
MasterDuke | nine: not sure if it's just a coincidence or not, but 31.8k QAST::Blocks were created, and there were symbol method calls to 34.4k different objectids... | 14:12 | |||||||||||||||||||||||||||||||||||||
nine | m: my \Foo := Metamodel::ClassHOW.new_type(name => "Foo"); Foo.^add_method("foo", EVAL q[method foo() { say "foo!" }]); Foo.^compose; Foo.foo | 14:52 | |||||||||||||||||||||||||||||||||||||
camelia | Potential difficulties: Useless declaration of a has-scoped method in mainline (did you mean 'my method foo'?) at /home/camelia/EVAL_0:1 ------> 3method7⏏5 foo() { say "foo!" } foo! |
||||||||||||||||||||||||||||||||||||||
nine | That declaration is not as useless as the warning makes you believe. I think it's rather bogus | ||||||||||||||||||||||||||||||||||||||
jnthn | Easially suppressed by writing `anon method foo`, at least | 14:57 | |||||||||||||||||||||||||||||||||||||
*easily | |||||||||||||||||||||||||||||||||||||||
But yeah, it could be based on sink context too | 14:58 | ||||||||||||||||||||||||||||||||||||||
nine | It also goes away with a 'my method foo', but I'd rather not have users do this here: github.com/niner/Inline-Perl5/blob...V6.pm#L150 | 14:59 | |||||||||||||||||||||||||||||||||||||
I wonder if it'd actually be possible to really compile that method in the context of Foo, as if it was just class Foo { method foo() { ... } } | 15:13 | ||||||||||||||||||||||||||||||||||||||
Oh that would be necessary for attributes anyway. | 15:18 | ||||||||||||||||||||||||||||||||||||||
I may end up wrapping that in an anonymous role for the EVAL and grab stuff out of there | 15:20 | ||||||||||||||||||||||||||||||||||||||
15:24
ufobat_ joined
15:28
ufobat__ left
15:43
hungryd58 left,
hungrydonkey joined
15:49
sena_kun joined
15:51
Altai-man_ left
16:27
hungrydonkey left
17:48
Altai-man_ joined
17:51
sena_kun left
18:07
SmokeMachine_ joined
18:08
SmokeMachine_ is now known as SmokeMachine
18:13
MasterDuke left
|
|||||||||||||||||||||||||||||||||||||||
lizmat | notable6: weekly | 18:29 | |||||||||||||||||||||||||||||||||||||
notable6 | lizmat, 2 notes: 2020-04-03T12:47:47Z <lizmat>: Building Raku modules with Nix ; 2020-04-03T12:47:59Z <lizmat>: foldr.nl/raku-nix.html | ||||||||||||||||||||||||||||||||||||||
lizmat | notable6: weekly reset | ||||||||||||||||||||||||||||||||||||||
notable6 | lizmat, Moved existing notes to “weekly_2020-04-06T18:29:27Z” | ||||||||||||||||||||||||||||||||||||||
18:30
MasterDuke joined
|
|||||||||||||||||||||||||||||||||||||||
lizmat | And another Rakudo Weekly News hits the Net: rakudoweekly.blog/2020/04/06/2020-...spectives/ | 19:12 | |||||||||||||||||||||||||||||||||||||
19:49
sena_kun joined
19:50
Altai-man_ left
|
|||||||||||||||||||||||||||||||||||||||
timotimo | lizmat++ # appreciated | 19:57 | |||||||||||||||||||||||||||||||||||||
21:48
Altai-man_ joined
21:50
sena_kun left
22:09
jjatria joined
22:18
jjatria left
22:20
jjatria joined
23:44
Xliff joined
23:49
sena_kun joined
23:50
Altai-man_ left
|