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. |
|||||||||||||||||||||||||||||||||||||||
00:17
dct left
00:34
thundergnat left
01:27
lizmat left
01:33
lucasb left
02:10
AlexDani` joined
02:11
p6bannerbot sets mode: +v AlexDani`
02:15
AlexDaniel left
|
|||||||||||||||||||||||||||||||||||||||
Geth | roast/cur-candidates: 4317fb4039 | (Nick Logan)++ | S11-repository/cur-candidates.t Add basic tests for .files and .run-script |
02:18 | |||||||||||||||||||||||||||||||||||||
02:48
AlexDani` is now known as AlexDaniel
03:17
ufobat_ joined
03:18
p6bannerbot sets mode: +v ufobat_
03:21
ufobat___ left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo: e2e5cc53c7 | (Nick Logan)++ (committed using GitHub Web editor) | src/core/CompUnit/PrecompilationRepository.pm6 Use absolute path when spawning $*EXECUTABLE perl6 might have been invoked as e.g. 'install/bin/perl6', which is what $*EXECUTABLE would stringify to. But if the cwd gets changed at run time then the command for precompiling would fail. |
04:40 | |||||||||||||||||||||||||||||||||||||
05:03
cognomin_ joined
05:04
p6bannerbot sets mode: +v cognomin_
05:06
cognominal left
06:54
reportable6 left
06:55
reportable6 joined,
ChanServ sets mode: +v reportable6
06:56
p6bannerbot sets mode: +v reportable6
07:58
dct joined,
p6bannerbot sets mode: +v dct
08:10
dct left
08:57
lizmat joined,
p6bannerbot sets mode: +v lizmat
|
|||||||||||||||||||||||||||||||||||||||
jnthn | mornfall: Why would on-close not be a right way? | 09:49 | |||||||||||||||||||||||||||||||||||||
I mean, if using a supply block then the `CLOSE` phaser is probably more natural | 09:50 | ||||||||||||||||||||||||||||||||||||||
mornfall | jnthn: no idea, but apparently it has to do with multiple taps... can you look at the PR? | ||||||||||||||||||||||||||||||||||||||
github.com/rakudo/rakudo/pull/2529 | 09:51 | ||||||||||||||||||||||||||||||||||||||
jnthn | Which PR? | ||||||||||||||||||||||||||||||||||||||
Oh, I see | 09:52 | ||||||||||||||||||||||||||||||||||||||
Yeah, `on-close` is per tap, the resource here is not being created per tap, which is a problem | |||||||||||||||||||||||||||||||||||||||
I'd rewrite it using the `Supply.on-demand` method so it does one nqp::watchfile per tapping, and then it'll be fine. | 09:53 | ||||||||||||||||||||||||||||||||||||||
There's generally an expectation that each tapping is a new subscription/resource. | |||||||||||||||||||||||||||||||||||||||
So it's not the on-close that's wrong, so much as everything else there :) | 09:54 | ||||||||||||||||||||||||||||||||||||||
mornfall | okay, i can have a look at that, presumably it's not urgent | ||||||||||||||||||||||||||||||||||||||
jnthn | Only if it's urgent for something else you're doing ;) | 09:55 | |||||||||||||||||||||||||||||||||||||
10:01
brrt joined
10:08
brrt left
10:18
Tux__ is now known as |Tux|
|
|||||||||||||||||||||||||||||||||||||||
|Tux| |
|
10:19 | |||||||||||||||||||||||||||||||||||||
Ulti | snap my tests take 1.71s to run :D | 10:40 | |||||||||||||||||||||||||||||||||||||
it can also take that long to just do `say ""` at the moment on my machne so its probably running really quite fast | 10:41 | ||||||||||||||||||||||||||||||||||||||
10:42
dogbert2_ left
|
|||||||||||||||||||||||||||||||||||||||
lizmat | .tell nine stackoverflow.com/questions/538126...er-program | 10:43 | |||||||||||||||||||||||||||||||||||||
yoleaux | lizmat: I'll pass your message to nine. | ||||||||||||||||||||||||||||||||||||||
11:54
dogbert2_ joined
11:55
p6bannerbot sets mode: +v dogbert2_
11:58
lucasb joined,
p6bannerbot sets mode: +v lucasb
|
|||||||||||||||||||||||||||||||||||||||
lizmat | notable6: weekly | 13:58 | |||||||||||||||||||||||||||||||||||||
notable6 | lizmat, No notes for “weekly” | ||||||||||||||||||||||||||||||||||||||
lizmat | wow | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: 631940c7be | (Elizabeth Mattijsen)++ | src/core/Buf.pm6 Make all read/write-int offsets uint This has no runtime meaning yet, but it possibly could in the future. For now it just shows intent. |
14:43 | |||||||||||||||||||||||||||||||||||||
rakudo: 38afa2d6f0 | (Elizabeth Mattijsen)++ | src/core/Buf.pm6 Some more type tightening |
14:56 | ||||||||||||||||||||||||||||||||||||||
lizmat | m: blob8.new(255).read-int8(0,1) # one of the weirder error messages I've ever seen | 16:27 | |||||||||||||||||||||||||||||||||||||
camelia | Lexical with name '$offset' has a different type in this frame in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
lizmat | m: sub a(uint $foo, Endian $) { }; a 0, 1 # golf | 16:28 | |||||||||||||||||||||||||||||||||||||
camelia | Lexical with name '$foo' has a different type in this frame in sub a at <tmp> line 1 in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
lizmat | m: sub a(uint $foo, Bool $) { }; a 0, 1 # further golf | 16:29 | |||||||||||||||||||||||||||||||||||||
camelia | Lexical with name '$foo' has a different type in this frame in sub a at <tmp> line 1 in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
lizmat | m: sub a(int $foo, Bool $) { }; a 0, 1 # seems to be related to the use of "uint" | ||||||||||||||||||||||||||||||||||||||
camelia | Type check failed in binding to parameter '<anon>'; expected Bool but got Int (1) in sub a at <tmp> line 1 in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
Geth | rakudo: lizmat self-assigned Custom multi infix:<~> not working as expected github.com/rakudo/rakudo/issues/2548 848932df2b | (Elizabeth Mattijsen)++ | src/core/Buf.pm6 Weird error occurs when specifying the endianness as an integer if the first parameter is a "uint". sub a(uint $foo, Bool $) { }; a 0, 1 # Lexical with name '$foo' has a different type in this frame |
16:34 | |||||||||||||||||||||||||||||||||||||
lizmat | and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2018/12/17/...-designed/ | 16:46 | |||||||||||||||||||||||||||||||||||||
moritz: ^^ | 16:55 | ||||||||||||||||||||||||||||||||||||||
nine | Very odd indeed | 17:09 | |||||||||||||||||||||||||||||||||||||
yoleaux | 10:43Z <lizmat> nine: stackoverflow.com/questions/538126...er-program | ||||||||||||||||||||||||||||||||||||||
Geth | roast: d91dcd8512 | (Elizabeth Mattijsen)++ | S03-buf/write-num.t First batch of buf8.writenum32/64 tests They mostly fail :-( |
17:33 | |||||||||||||||||||||||||||||||||||||
lizmat | nine: ^^^ I would almost come to the point of removing read-num/write-num from the release as they're severely broken | 17:34 | |||||||||||||||||||||||||||||||||||||
m: my $b = buf8.new; $b.write-num64(0,1e0); say $b.read-num64(0) # this does not round-trip | 17:35 | ||||||||||||||||||||||||||||||||||||||
camelia | 4.6071824188000174e+18 | ||||||||||||||||||||||||||||||||||||||
jnthn | Given we're managing to assemble bytecode with nums in, I'd guess its' something about read-num64 that's wrong. | 17:39 | |||||||||||||||||||||||||||||||||||||
m: my $b = buf8.new; $b.write-num64(0,1e0); dd $b | |||||||||||||||||||||||||||||||||||||||
camelia | Buf[uint8] $b = Buf[uint8].new(0,0,0,0,0,0,240,63) | ||||||||||||||||||||||||||||||||||||||
jnthn | Yeah, those seem correct | 17:42 | |||||||||||||||||||||||||||||||||||||
lizmat | m: my $b = buf8.new; $b.write-num32(0,1e0); dd $b # jnthn, does that look ok to you > | 17:49 | |||||||||||||||||||||||||||||||||||||
camelia | Buf[uint8] $b = Buf[uint8].new(0,0,0,0,0,0,240,63) | ||||||||||||||||||||||||||||||||||||||
jnthn | Yes. | 17:50 | |||||||||||||||||||||||||||||||||||||
lizmat | m: my $b = buf8.new; $b.write-num32(0,1e0); dd $b # jnthn, does that look ok to you? looks like it's writing 64bit ? | ||||||||||||||||||||||||||||||||||||||
camelia | Buf[uint8] $b = Buf[uint8].new(0,0,0,0,0,0,240,63) | ||||||||||||||||||||||||||||||||||||||
jnthn | It's the read that's the problem and I can kind of see why | ||||||||||||||||||||||||||||||||||||||
Oh | |||||||||||||||||||||||||||||||||||||||
Yeah, actually the 32-bit num writing doesn't seem to be implemented on either side | |||||||||||||||||||||||||||||||||||||||
lizmat | ah, ok, well that explains then :-) | ||||||||||||||||||||||||||||||||||||||
jnthn | I can at least fix the 64-bit one to round-trip though :) | ||||||||||||||||||||||||||||||||||||||
lizmat | that would be nice :-) | 17:51 | |||||||||||||||||||||||||||||||||||||
jnthn | I wonder if endianness matters for floating point... | 17:52 | |||||||||||||||||||||||||||||||||||||
lizmat has no idea | 17:53 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | reportable6: 2018-12-10T00:00:00Z 2018-12-17T00:00:00Z | 18:04 | |||||||||||||||||||||||||||||||||||||
reportable6 | AlexDaniel, OK, working on it! This may take up to 40 seconds | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | lizmat: maybe this can be added for completeness ↓ | ||||||||||||||||||||||||||||||||||||||
although I'm not sure how empty it is too! | |||||||||||||||||||||||||||||||||||||||
reportable6 | AlexDaniel, gist.github.com/b2e6e94e44296220e8...d456b4d767 | 18:05 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | that's a lot of stuff :) | ||||||||||||||||||||||||||||||||||||||
Kaiepi: github.com/rakudo/rakudo/issues/25...-447941959 | 18:09 | ||||||||||||||||||||||||||||||||||||||
lizmat | AlexDaniel: added, thanks! | 18:12 | |||||||||||||||||||||||||||||||||||||
Kaiepi | commented AlexDaniel | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | oh. | 18:14 | |||||||||||||||||||||||||||||||||||||
Kaiepi: if it no longer happens then personally I don't care! :) | |||||||||||||||||||||||||||||||||||||||
jnthn | lizmat: Running spectest, but think I've got it at least a bit better for 64-bit read and 32-bit read/write | ||||||||||||||||||||||||||||||||||||||
lizmat | jnthn: the read-num/write-num tests are not part of t/spectest.data yet, you will need to run them manually | 18:15 | |||||||||||||||||||||||||||||||||||||
jnthn | I'll leave that to you :) | ||||||||||||||||||||||||||||||||||||||
lizmat | oki | ||||||||||||||||||||||||||||||||||||||
jnthn | github.com/MoarVM/MoarVM/commit/987269ea9f | 18:16 | |||||||||||||||||||||||||||||||||||||
I'm off home, just thought I'd have a poke before I go. :) | |||||||||||||||||||||||||||||||||||||||
AlexDaniel | samcv: alright then, we're ready. I'll give Blin another chance to find something (should be ready in ≈1 hour then), but otherwise there are no blockers left | ||||||||||||||||||||||||||||||||||||||
wait did that moarvm commit just land on master? :) | 18:17 | ||||||||||||||||||||||||||||||||||||||
jnthn | Sure | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | “This might need tweaking for big endian platforms”? | ||||||||||||||||||||||||||||||||||||||
jnthn | It's touching stuff that didn't exist in the last release :) | ||||||||||||||||||||||||||||||||||||||
So there's no way it can be a regression. | |||||||||||||||||||||||||||||||||||||||
AlexDaniel | alright | 18:19 | |||||||||||||||||||||||||||||||||||||
Geth | nqp: 6e229d8d2f | (Aleks-Daniel Jakimenko-Aleksejev)++ | tools/build/MOAR_REVISION [MoarVM Bump] 987269ea9 Get readnum working, t […] MoarVM bump brought: github.com/MoarVM/MoarVM/compare/2...g987269ea9 |
||||||||||||||||||||||||||||||||||||||
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...g987269ea9 | |||||||||||||||||||||||||||||||||||||||
rakudo: eb31db95b6 | (Aleks-Daniel Jakimenko-Aleksejev)++ | tools/build/NQP_REVISION [NQP Bump] 6e229d8d2 [MoarVM Bump] 987269ea9 G […] NQP bump brought: github.com/perl6/nqp/compare/2018....g6e229d8d2 |
|||||||||||||||||||||||||||||||||||||||
¦ rakudo: version bump brought these changes: github.com/perl6/nqp/compare/2018....g6e229d8d2 | |||||||||||||||||||||||||||||||||||||||
lizmat | AlexDaniel++ | 18:20 | |||||||||||||||||||||||||||||||||||||
lucasb | .oO( How big are those endians anyway?! ) |
18:21 | |||||||||||||||||||||||||||||||||||||
timotimo | would you rather fight a hundred small endian chickens or one really big endian chicken? | ||||||||||||||||||||||||||||||||||||||
er | |||||||||||||||||||||||||||||||||||||||
jnthn | oh, right, chicken...I was meant to go for dinner :) | ||||||||||||||||||||||||||||||||||||||
timotimo | would you rather fight a hundred little endian chickens or one really big endian chicken? | ||||||||||||||||||||||||||||||||||||||
jnthn | bbl | 18:22 | |||||||||||||||||||||||||||||||||||||
lizmat | .oO( big endian chickens give larger eggs ) |
||||||||||||||||||||||||||||||||||||||
Geth | roast: 77da1465dd | (Elizabeth Mattijsen)++ | S03-buf/read-num.t Remove now unnecessary try's |
18:27 | |||||||||||||||||||||||||||||||||||||
lizmat | jnthn++ looking good! | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo: e96b7ffed4 | (Elizabeth Mattijsen)++ | t/spectest.data Run read-num/write-num tests also As they are clean now |
18:35 | |||||||||||||||||||||||||||||||||||||
nine | Ah, of course. C is just too magical. We need a real low level language :) | 18:49 | |||||||||||||||||||||||||||||||||||||
lizmat: btw. still working on the writeint fix I promised on Saturday. Fighting with a regression on Big Endian machines. | 18:50 | ||||||||||||||||||||||||||||||||||||||
Good thing I got a PowerPC VM running, so I can debug such things | |||||||||||||||||||||||||||||||||||||||
AlexDaniel | nine: awesome | 18:57 | |||||||||||||||||||||||||||||||||||||
nine: just to clarify, everything is fine on HEAD, right? | |||||||||||||||||||||||||||||||||||||||
nine | AlexDaniel: writeint/writeuint don't behave correctly in an error condition. But nothing bad | 19:18 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | samcv: yeah, Blin is clean | 20:02 | |||||||||||||||||||||||||||||||||||||
mmm hooold on… | 20:25 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel checks r-j again after pulling… | 20:26 | ||||||||||||||||||||||||||||||||||||||
not that it matters to moar, but still :) | 20:27 | ||||||||||||||||||||||||||||||||||||||
lizmat | AlexDaniel: ah, perhaps we need to guard the read/write-int methods with a #if ? | 20:43 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | lizmat: here's the error: gist.github.com/AlexDaniel/1f7cb74...d33cf0db68 | 20:52 | |||||||||||||||||||||||||||||||||||||
lizmat | yeah, that needs a guard :-( | ||||||||||||||||||||||||||||||||||||||
gimme a mo | |||||||||||||||||||||||||||||||||||||||
Geth | rakudo: e7b61aff7b | (Elizabeth Mattijsen)++ | src/core/Buf.pm6 Implement read-int/write-int and friends only on MoarVM As the underlying nqp:: ops don't exist yet on other backends |
20:58 | |||||||||||||||||||||||||||||||||||||
lizmat | AlexDaniel: ^^^ | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | lizmat: thanks, testing | 20:59 | |||||||||||||||||||||||||||||||||||||
lizmat | it should not die on that error anymore | ||||||||||||||||||||||||||||||||||||||
japhb | .tell jnthn I can install IO::Socket::Async::SSL on mildly older Rakudos (such as 2018.10-191-ga0cb89a72), but on a current build it hangs during testing. | 21:13 | |||||||||||||||||||||||||||||||||||||
yoleaux | japhb: I'll pass your message to jnthn. | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | lizmat: yeah, it's good! | 21:15 | |||||||||||||||||||||||||||||||||||||
japhb: hmm can't reproduce | 21:21 | ||||||||||||||||||||||||||||||||||||||
ahhhh maybe I can | 21:22 | ||||||||||||||||||||||||||||||||||||||
21:25
ufobat_ left
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | ok I don't know :) Its tests are weird | 21:26 | |||||||||||||||||||||||||||||||||||||
21:26
ufobat_ joined,
p6bannerbot sets mode: +v ufobat_
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | in Blin, it's in this list of modules “These seem to hang and leave some processes behind” | 21:27 | |||||||||||||||||||||||||||||||||||||
so I guess that was the case for a long time | |||||||||||||||||||||||||||||||||||||||
21:28
lucasb left
21:33
ufobat_ left
|
|||||||||||||||||||||||||||||||||||||||
timotimo | AlexDaniel: have you considered cgroups for blin? %) | 21:45 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | timotimo: sure but someone needs to do it… | 21:48 | |||||||||||||||||||||||||||||||||||||
Geth | nqp: 355847eca1 | (Stefan Seifert)++ | t/moar/13-writeint.t Add tests for writeint of negative numbers |
||||||||||||||||||||||||||||||||||||||
nine | The regression was about writing negative 16 bit numbers. | 21:49 | |||||||||||||||||||||||||||||||||||||
timotimo | of course, as always :) | ||||||||||||||||||||||||||||||||||||||
lizmat | hmmm... why didn't the rakudo write-int16 tests not pick that up ? | ||||||||||||||||||||||||||||||||||||||
nine | lizmat: do those tests involve endian switching? | 21:50 | |||||||||||||||||||||||||||||||||||||
lizmat | yup all sorts of endians: native big little and no endian specified | ||||||||||||||||||||||||||||||||||||||
when did this happen ? | 21:51 | ||||||||||||||||||||||||||||||||||||||
nine | It's possible that I didn't run these tests. The regression was in the unpushed fix for the bug you reported on Saturday | 21:52 | |||||||||||||||||||||||||||||||||||||
In the PowerPC VM I build and run only NQP. Don't have the patience for building rakudo :) | |||||||||||||||||||||||||||||||||||||||
lizmat | ah, ok, so I shouldn't worry about the tests missing cases ? | ||||||||||||||||||||||||||||||||||||||
21:52
dct joined,
p6bannerbot sets mode: +v dct
|
|||||||||||||||||||||||||||||||||||||||
lizmat | fwiw, I'm playing around with a generic read-bits functionality | 21:53 | |||||||||||||||||||||||||||||||||||||
nine | tests are probably fine, yes | 21:55 | |||||||||||||||||||||||||||||||||||||
jnthn | . | ||||||||||||||||||||||||||||||||||||||
yoleaux | 21:13Z <japhb> jnthn: I can install IO::Socket::Async::SSL on mildly older Rakudos (such as 2018.10-191-ga0cb89a72), but on a current build it hangs during testing. | ||||||||||||||||||||||||||||||||||||||
jnthn | I can repro this too :/ | ||||||||||||||||||||||||||||||||||||||
Is there any way to use bissectable to hunt this? | 22:00 | ||||||||||||||||||||||||||||||||||||||
timotimo | if not bisectable, then at least blin, right? | 22:02 | |||||||||||||||||||||||||||||||||||||
or is blin for bisecting the module only? | |||||||||||||||||||||||||||||||||||||||
jnthn | Dunno. | 22:03 | |||||||||||||||||||||||||||||||||||||
I'm now trying to do a build from just before the last change in that commit range to IO::Socket::Async, which is the first most likely candidate to suspect in recent commits | |||||||||||||||||||||||||||||||||||||||
(Between the one mentioned as working) | |||||||||||||||||||||||||||||||||||||||
timotimo | you can definitely use whateverables builds | 22:04 | |||||||||||||||||||||||||||||||||||||
shareable6: HEAD~5 | 22:05 | ||||||||||||||||||||||||||||||||||||||
shareable6 | timotimo, whateverable.6lang.org/HEAD~5 | ||||||||||||||||||||||||||||||||||||||
AlexDaniel | timotimo: yeah you can use blin, if of course you uncomment that line that skips this module… | 22:08 | |||||||||||||||||||||||||||||||||||||
but if it hangs then I'm not sure if it's going to behave well | 22:09 | ||||||||||||||||||||||||||||||||||||||
jnthn | Darn it, for the commit I picked, I built the NQP_REVISION and MOAR_REVISION it suggested at that Rakudo commit, and all tests fail with Unhandled exception in code scheduled on thread 6 | 22:10 | |||||||||||||||||||||||||||||||||||||
Too many positionals passed; expected 6 arguments but got 7 | |||||||||||||||||||||||||||||||||||||||
That's as much patience as I have this evening to look in to it. | |||||||||||||||||||||||||||||||||||||||
timotimo | can you tell us the commit? i can perhaps continue where you stopped? | ||||||||||||||||||||||||||||||||||||||
though for the moment there's a cat on my lap that just five minutes ago demanded access | 22:11 | ||||||||||||||||||||||||||||||||||||||
jnthn | timotimo: I just picked one, 2fd90b1eccdb, which was before the merge commit that changed IO::Socket::Async | ||||||||||||||||||||||||||||||||||||||
OK, I suspected it may be a4db91394f but reverting that doesn't help | 22:20 | ||||||||||||||||||||||||||||||||||||||
(Had to do a MoarVM revert also to go with it, but even with that, still the hang) | 22:21 | ||||||||||||||||||||||||||||||||||||||
Out of time for now...but at least we know what it isn't. I don't have any other commits that look likely candidates, so bissect is probably the best thing for it. | |||||||||||||||||||||||||||||||||||||||
timotimo | OK, the cat had enough, and i'm full of hair everywhere | 22:45 | |||||||||||||||||||||||||||||||||||||
AlexDaniel | ===> Install [FAIL] for OpenSSL:ver<0.1.21>:auth<github:sergot>: No installing backend available | ||||||||||||||||||||||||||||||||||||||
hmm what does that mean… | |||||||||||||||||||||||||||||||||||||||
timotimo | zef too old? :D | 22:46 | |||||||||||||||||||||||||||||||||||||
23:07
go|dfish left
23:12
go|dfish joined,
p6bannerbot sets mode: +v go|dfish
23:20
dct left
|
|||||||||||||||||||||||||||||||||||||||
AlexDaniel | yeah that went away after upgrading zef | 23:39 | |||||||||||||||||||||||||||||||||||||
timotimo | cool. | 23:47 | |||||||||||||||||||||||||||||||||||||
do we have something like a role i can just mix into an object and have every method call done to it written to the console? kind of like grammar::tracer? |