Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_log/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
Set by Zoffix on 27 July 2018.
nine AlexDaniel: the long name is the full name like Inline::Perl5:version<0.35>:auth<github:niner> 06:18
AlexDaniel nine: so I only have to update that file whenever I update zef? 07:11
AlexDaniel is very confused
( context colabti.org/irclogger/irclogger_log...10-21#l135 )
nine AlexDaniel: no, you definitely do not touch installed files. Perl 6 explicitly requires installed distributions to be immutable. A long name must refer to one and only one version of a dist's code. 07:13
AlexDaniel nine: ok now it feels like we're talking about something different 07:14
nine: I'm trying to resolve this: github.com/perl6/Blin/issues/2
`zef --help` gives a path to the configuration file
if I shouldn't touch it, then what can I do? 07:15
nine AlexDaniel: --config-path=[path] Load a specific Zef config file 07:16
AlexDaniel ahhh, hmm 07:17
right… well, that totally makes sense
nine: d'oh! Heh… thank you! 07:18
nine Glad I could help! 07:19
nine timotimo++ # the profiler is indespensable in getting nqp-mbc merge worthy. 08:48
Btw timotimo, answering my own question: the way to avoid the uint -> num -> int -> uint dance I mentioned yesterday feels kina obvious in hind sight: use unbox_u explicitly! NQP just can't know that the $register object boxes an uint already and has to be conservative. 08:51
timotimo nine: that's great to hear! feel free to guide me with feature requests :) 09:34
nine It's odd. I feel like I finally understand (register) type handling in NQP. And that's after spending a month working on the code that's actually implementing it. And the finding is: it's quite primitive! Which also makes it simple and easy to influence. 09:50
timotimo ah, i guess that makes sense
nine The only thing to keep in mind is, that NQP only knows the types of locals, lexicals and op results. It cannot look into objects or methods. 09:51
timotimo i've touched the optimizer part of nqp for making the amount of num arithmetic decrease
nine I dare say this also explains why it's so difficult to change NQP's default to int. You'd have to adapt all code paths that may actually need to be able to handle nums. 09:52
timotimo: there's a message from the profiler about passing a file name to service.p6. But it doesn't state how to actually do this. It's not obvious to a non-cro-user 09:56
timotimo on my end it's just perl6 -I lib -I ../moar-heapanalyzer/ service.p6 /tmp/magicbox.sql but that's because i develop it 09:57
but you're right
a sub MAIN would be appropriate
nine I run the profiler with "cro run ." (as told by the README). I'm not even sure how that involves a service.p6 :) 09:58
timotimo hah, that's still the readme from the tutorial repo %) 10:14
timotimo who wants to investigate why Channel's send method has this code: nqp::if( 12:30
$!closed,
which compiles into an attrref instead of attr
so it allocates a nativeref every time it's called
lizmat timotimo: isn't that how all int attributes work ? 12:39
and the reason they're slow to use in some situations ? 12:40
timotimo: in any case, there's nothing special about Channel's $!closed in that way
use nqp; class A { has int $!a; method a() { $!a ?? 42 !! 666 } } # shows the same 12:41
timotimo man, that'd be worth something 12:47
fixing that, i mean
AFK, though
lizmat timotimo: are you implying that it should only ever allocate 1 attributeref, or that it shouldn't allocate any at all? 12:53
MasterDuke nine: if you’re interested, github.com/MasterDuke17/nqp/tree/d...ead_of_num is my WIP branch to change NQP to use int instead of num 12:55
I haven’t rebased recently, but it built and passed ‘make m-test’ 12:56
However, the corresponding Rakudo branch doesn’t yet build 12:57
If you have any comments/suggestions they would be much appreciated
timotimo: btw, there’s a request for some more info to your answer here stackoverflow.com/questions/528303...-in-perl-6 12:59
SmokeMachine: also, maybe you could comment about your recent fixes here stackoverflow.com/questions/528616...-for-perl6 13:05
SmokeMachine I’ll try when I come home... but my problem is my English... 13:07
MasterDuke: ☝️
timotimo lizmat: i don't see a need for it to use attributeref at all there. on top of that, it's using bool_I on the object, which is not only doing unneccessarily indirect lookup of the attribute itself, but probably also doesn't boolify the result very efficiently 14:11
tbh, i'm not quite sure how it's using sp_bool_I on the result of attrref_i anyway?! 14:12
lizmat well, I just tried to replace attributeref by attribute in Actions (line 3365), and that breaks the setting
my turn to be afk&
timotimo i need to investigate more closely. 14:13
oh, i was mistaken, the bool_I must be from something else 14:14
Geth rakudo/gh-2320-placeholder-method-error: 4 commits pushed by (Rob Hoelz)++ 14:55
timotimo it's hoelzro! \o/ 14:56
Geth rakudo: hoelzro++ created pull request #2415:
Fix placeholder method error
14:58
hoelzro o/ 14:59
that looked like a fun fix to make =)
pmurias m: multi y(int $x is rw) { say('good') }; y(my int $x = 42); 15:00
yoleaux 22 Oct 2018 19:46Z <AlexDaniel> pmurias: just wondering, what was the reason to remove --encoding? The commit message doesn't explain why github.com/rakudo/rakudo/commit/bea08ec6
camelia Cannot resolve caller y(Int); none of these signatures match:
(int $x is rw)
in block <unit> at <tmp> line 1
yoleaux 22 Oct 2018 20:30Z <AlexDaniel> pmurias: ah ok, nevermind: colabti.org/irclogger/irclogger_log...10-22#l144
22 Oct 2018 20:31Z <AlexDaniel> pmurias: how would you like JS backend to be announced in the changelog? Feel free to write as little or as much as you want here: github.com/rakudo/rakudo/wiki/ChangeLog-Draft
pmurias ^^ is this a bug?
AlexDaniel m: multi y(int $x) { say $x }; y(42) 15:02
camelia Cannot resolve caller y(Int); none of these signatures match:
(int $x)
in block <unit> at <tmp> line 1
AlexDaniel m: sub y(int $x) { say $x }; y(42)
camelia 42
AlexDaniel what about this?
m: sub y(int $x is rw) { say(‘good’) }; y(my int $x = 42); 15:03
camelia Expected a modifiable native int argument for '$x'
in sub y at <tmp> line 1
in block <unit> at <tmp> line 1
AlexDaniel pmurias: IMO not a bug, 42 is what gets passed 15:04
but why sub works and multi doesn't, that I don't know
pmurias m: multi y(int $x is rw) { 'works at compile time' }; say y(my int $x = 42); 15:06
camelia works at compile time
pmurias AlexDaniel: how it works depends on what's in the sub
AlexDaniel o_o
pmurias because the optimizer uses different rules 15:07
Geth rakudo: lizmat self-assigned Signatures does not shows Coercion types when gisted. github.com/rakudo/rakudo/issues/2416
0243275def | (Elizabeth Mattijsen)++ | src/core/Parameter.pm6

So we can introspect the type we should coerce to. Also adapt Parameter.perl to take the coerce_type into account.
Fixes R#2416
15:30
Zoffix Does precompilation happen on multiple threads? 15:51
nine no 15:52
Zoffix I don't get how I get this output: gist.github.com/zoffixznet/8a46fb7...4a211beb87
1 printf + conditional with another printf in each branch. Yeah, I get one print of first printf in the output, followed by double print of one of the printf inside the conditional, using different values :S 15:53
MVM_6model_parametric_parameterize.1: FOUND [(null)]
MVM_6model_parametric_parameterize.1: FOUND [Array[Mu]]
That one. How could it print side by side like that, without a "MVM_6model_parametric_parameterize.1: trying to find for …" in between?
nine Maybe the spesh thread?
Zoffix Still same output with `MVM_SPESH_DISABLE=1`. And it's very consistent too. It's always two consequtive "FOUND" messages in the same order. 15:54
and same with `MVM_SPESH_BLOCKING=1` set 15:55
nine You could add a MVM_dump_backtrace(tc) there to get the Perl 6 backtrace
Zoffix cool
synopsebot R#2416 [open]: github.com/rakudo/rakudo/issues/2416 Signatures does not shows Coercion types when gisted.
lizmat this seems to break some tests in t/spec/S06-currying/positional.t that apparently do not expect the coerce_type to appear 15:58
imo the tests are broken
pmurias masak: there is a difference between compile-time (when a modules is compiled) and (load time when it's loaded while compiling something that usesit) 18:01
* uses it
masak: I don't remember the context of the discussion 18:03
masak: but there are at least three phases: 1) compiling the module itself 2) loading the module from disk and having it affect the compilation of something else 3) actuall runtime 18:05
masak: all 3 of them can be separated by time and space 18:06
masak pmurias: thank you for the clarification. that makes sense, and it seems to not be in conflict with what I just discovered about modules. 19:17
Geth rakudo/gh-2320-placeholder-method-error: 27558ef28f | (Rob Hoelz)++ | src/Perl6/Actions.nqp
Use node instead of ast for placeholder AST name

  Zoffix suggested this is more consistent with the Rakudo codebase
19:43
rakudo/gh-2320-placeholder-method-error: c1bb351224 | (Rob Hoelz)++ | t/05-messages/03-errors.t
Add test for GH #2320
AlexDaniel ===> Searching for: sake 21:02
free(): invalid next size (fast)
hmmmmm
AlexDaniel I wonder if we already had that instability previously 21:02
AlexDaniel that happened to just one module 21:04