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.
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
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
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] Rakudo version 2020.02.1-295-gafff3b0b2 - MoarVM version 2020.02.1-75-g838e6836e
csv-ip5xs0.718 - 0.730
csv-ip5xs-206.363 - 6.459
csv-parser25.364 - 25.482
csv-test-xs-200.380 - 0.396
test7.505 - 8.359
test-t2.025 - 2.131
test-t --race0.910 - 0.985
test-t-2031.445 - 33.146
test-t-20 --race9.722 - 10.029
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
AlexDaniel maybe 11:32
Geth_ ¦ problem-solving: JJ assigned to jnthn Issue Redesign Exceptions for subclassing github.com/Raku/problem-solving/issues/173 12:19
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
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”
lizmat And another Rakudo Weekly News hits the Net: rakudoweekly.blog/2020/04/06/2020-...spectives/ 19:12
timotimo lizmat++ # appreciated 19:57