š¦ Welcome to the IRC channel of the core developers of the Raku Programming Language (raku.org #rakulang). This channel is logged for the purpose of history keeping about its development | evalbot usage: 'm: say 3;' or /msg camelia m: ... | log inspection situation still under development | For MoarVM see #moarvm Set by lizmat on 22 May 2021. |
|||
00:08
reportable6 left
01:09
reportable6 joined
02:09
notable6 left,
squashable6 left,
statisfiable6 left,
greppable6 left,
evalable6 left,
releasable6 left,
linkable6 left,
tellable6 left,
bloatable6 left,
unicodable6 left,
shareable6 left,
reportable6 left,
sourceable6 left,
coverable6 left,
quotable6 left,
committable6 left,
benchable6 left,
bisectable6 left,
nativecallable6 left,
frost joined
02:10
releasable6 joined,
benchable6 joined,
tellable6 joined
02:11
statisfiable6 joined,
nativecallable6 joined,
quotable6 joined,
greppable6 joined,
committable6 joined
02:12
evalable6 joined,
shareable6 joined
02:56
squashable6 joined
03:10
notable6 joined,
sourceable6 joined
03:11
coverable6 joined,
linkable6 joined
|
|||
Geth | rakudo: eb151d53bd | (Daniel Sockwell)++ | 2 files Improve error msg for traits passed invalid args Previously, traits called with invalid arguments would throw an X::Trait::Unknown error, which was confusing when the trait _was_ known. With this commit, they'll now throw an X::Trait::Invalid instead. ... (9 more lines) |
03:16 | |
rakudo: a2cf0ea5fb | (Daniel Sockwell)++ | src/core.c/Exception.pm6 Fix typo |
|||
rakudo: 0e9b2b7c91 | (Daniel Sockwell)++ (committed using GitHub Web editor) | 2 files Merge pull request #4786 from codesections-forks/x-trait Improve error message for traits passed invalid arguments |
|||
rakudo: 232a55b96d | (Daniel Sockwell)++ | src/core.c/traits.pm6 Remove unneeded/confusing can('prec') checks This builds on commits caba0d3 and a7ccfc6 (admittedly not that promptly!). The prior commits moved the .prec method to Code with the to prevent the need of checking whether various functions can prec; this commit removes six such `can('prec')` checks in the `is equiv`, `is tighter` and `is looser` traits. ... (12 more lines) |
03:17 | ||
rakudo: 6e6ef03c88 | (Daniel Sockwell)++ (committed using GitHub Web editor) | src/core.c/traits.pm6 Merge pull request #4787 from codesections-forks/trait-checks Remove unneeded/confusing can('prec') checks |
|||
04:10
bloatable6 joined
04:12
reportable6 joined
05:11
bisectable6 joined
06:08
reportable6 left
06:10
reportable6 joined
07:10
unicodable6 joined
|
|||
lizmat | Files=1351, Tests=117115, 300 wallclock secs (36.27 usr 10.20 sys + 4167.31 cusr 342.20 csys = 4555.98 CPU) | 07:43 | |
08:33
evalable6 left,
linkable6 left
|
|||
MasterDuke | weekly: blog.sunfishcode.online/bugs-in-hello-world/ | 08:50 | |
notable6 | MasterDuke, Noted! (weekly) | ||
lizmat | MasterDuke: the odd thing is, that I think Raku *does* have the bug ? | 09:02 | |
MasterDuke | yeah, i was a little surprised, but haven't gotten around to doing any testing | ||
lizmat | afaik, "say" always returns True | 09:13 | |
Geth | Terminal-Width: b8e637d143 | (JJ Merelo)++ | 3 files :see_no_evil: |
09:14 | |
Terminal-Width: 2988276aa5 | (JJ Merelo)++ | .gitignore :see_no_evil: |
|||
moon-child | it _returns_ true, but it throws an exception | 09:22 | |
ix.io/3RQr | |||
Geth | Terminal-Width: b2ad6e5646 | (JJ Merelo)++ | t/00-use.t Debug Github action |
09:32 | |
09:32
kjp left
09:33
linkable6 joined
09:34
evalable6 joined
|
|||
MasterDuke | is there any `<foo>` where i can do `my Int $r = <some random Int>; $r == <foo>` and it will always be false, but without a warning? e.g., not Nil, because that warns `Use of Nil in numeric context` | 09:35 | |
gfldex | m: my $r = 42|0|Inf; say $r == NaN; | 09:37 | |
camelia | any(False, False, False) | ||
Geth | Terminal-Width: 5397430c45 | (JJ Merelo)++ | .github/workflows/test.yaml Adapt workflow to repo |
09:38 | |
gfldex | MasterDuke: ^^^ | ||
moon-child | also the DIY route: class Special {}; multi infix:<==>(\x, Special \y) { False } | ||
gfldex | You have to make sure not to produce any NaN ofc. | ||
moon-child | gfldex: why? | ||
m: say NaN == NaN | |||
camelia | False | ||
gfldex | I forgot about that. :) | 09:39 | |
moon-child | :) | ||
gfldex | But then, Raku is way smarter then me. | ||
moon-child | (though, you still get a warning if you don't initialise $r) | ||
m: say Int == NaN | |||
camelia | Use of uninitialized value of type Int in numeric context in block <unit> at <tmp> line 1 |
||
Geth | Terminal-Width: 5a6dfdf406 | (JJ Merelo)++ | .github/workflows/test.yaml No sudo :bug: |
09:40 | |
MasterDuke | m: my $a; $a = do given NaN { when NaN { "nan" }; default { "default" } } for ^10; say $a | ||
camelia | nan | ||
moon-child | gfldex: I don't know if that's Raku being smarter than you so much as ieee754 being stupider than you, and raku acquiescing :) | 09:41 | |
m: say NaN == NaN; say NaN ~~ NaN; say NaN === Nan #MasterDuke | |||
camelia | ===SORRY!=== Error while compiling <tmp> Undeclared name: Nan used at line 1 |
||
moon-child | agh | ||
m: say NaN == NaN; say NaN ~~ NaN; say NaN === NaN | |||
camelia | False True True |
||
09:48
sena_kun left
09:52
sena_kun joined
|
|||
MasterDuke | looks like that may work | 10:10 | |
10:26
Xliff joined
|
|||
Xliff | \O | 10:26 | |
Is there an example implementation of CALL-ME documented somewhere? | |||
MasterDuke | m: class A { method CALL-ME($name) { say "Hi, $name" } }; my $a = A.new; $a("Bob")Ā Ā Ā Ā Ā # you mean something simple like this? | 10:29 | |
camelia | Hi, Bob | ||
Xliff | Hmm... probably not. I thought CALL-ME was used for every method call. | 10:30 | |
m: class A { method CALL-ME($name) { if name.lc eq 'bob' { say "Hi, $name" } }; }; my $a = A.new; $a.bob | 10:31 | ||
camelia | ===SORRY!=== Error while compiling <tmp> Undeclared routine: name used at line 1 |
||
Xliff | m: class A { method CALL-ME($name) { if $name.lc eq 'bob' { say "Hi, $name" } }; }; my $a = A.new; $a.bob | ||
camelia | No such method 'bob' for invocant of type 'A' in block <unit> at <tmp> line 1 |
||
Xliff | And no, I don't mean FALLBACK, here. | ||
Basically, I want to be able to intercept all method calls made to an object or its children. | 10:32 | ||
MasterDuke | hm. don't have any methods in the class and have FALLBACK instead call subs with the given name? | 10:34 | |
10:41
ShaneC left
|
|||
MasterDuke | m: class A { method !a($name) { say "hi, $name" }; method FALLBACK(|c) { my $method = c[0]; my \args = c.skip; say "sneakily intercepted a call to '$method'"; self!"$method"(|args) } }; A.new.a("Bob") | 10:42 | |
camelia | sneakily intercepted a call to 'a' hi, Bob |
||
Xliff | LOL! I see whut you did, thar. | 10:44 | |
That actually might work in the long run. | |||
Still, setup would be slow since FALLBACK is expensive, no? | |||
MasterDuke | i think it got a bit faster with new-disp, but sure, it's probably somewhat slower | 10:45 | |
m: class A { method !a($a) { $a + 1 }; method FALLBACK(|c) { my $method = c[0]; my \args = c.skip; self!"$method"(|args) } }; my $a = 0; my $A = A.new; $a = $A.a($a) for ^1_000_000; say now - INIT now; say $a | 10:47 | ||
camelia | 3.626851472 1000000 |
||
MasterDuke | m: class A { method a($a) { $a + 1 }; method FALLBACK(|c) { my $method = c[0]; my \args = c.skip; self!"$method"(|args) } }; my $a = 0; my $A = A.new; $a = $A.a($a) for ^1_000_000; say now - INIT now; say $a | ||
camelia | 0.041119068 1000000 |
||
MasterDuke | so ~100x slower | ||
nine | Grammar::Tracer does what you seem to want: github.com/jnthn/grammar-debugger/...Tracer.pm6 | 10:50 | |
Xliff | Yeah. 100x slower is not so good. | 10:53 | |
nine: Huh! So it does. Thanks! | 10:54 | ||
nine | The Grammar::Tracer method should avoid any slowdowns (except for the one imposed by your wrappers themselves) | ||
Xliff | And I've looked at this code before. Kinda was hoping I didn't have to resort to messing with the HOW, but alas... | ||
MasterDuke | i'm trying to do ^add_method in FALLBACK, but FALLBACK keeps getting called | 10:56 | |
Xliff | Hahaha! | ||
Was wondering about that. | |||
MasterDuke | but then i do get the error `Package 'A' already has a method 'a' (did you mean to declare a multi method?)`, so it's getting installed, but not called | 10:57 | |
Xliff | And this doesn't work, either. Surprisingly, I'm surprised this is geting called on BUILDALL! | 11:07 | |
replit.com/@Xliff/PointlessDimgrayRay#main.raku | |||
12:08
reportable6 left
|
|||
Geth | rakudo: MasterDuke17++ created pull request #4814: Restore optimization for given/when with Numeric cases |
12:23 | |
12:55
sena_kun left
12:57
sena_kun joined
13:11
reportable6 joined
|
|||
Geth | Terminal-Width: 6ef432924a | (JJ Merelo)++ | .github/workflows/test.yaml Use docker installation to check tput |
13:26 | |
Terminal-Width: 5d9ab442eb | (JJ Merelo)++ | 2 files Check with new install |
|||
Terminal-Width: cb8dd700f1 | (JJ Merelo)++ | .github/workflows/test.yaml Fix :poop: |
|||
Terminal-Width: 628aae98a6 | (JJ Merelo)++ | .github/workflows/test.yaml Address 'not a TTY' :bug: |
13:35 | ||
Terminal-Width: 84eb945b3c | (JJ Merelo)++ | META6.json Almost ready to release, closes #3 |
14:05 | ||
Terminal-Width: 58143c1443 | (JJ Merelo)++ | lib/Terminal/Width.pm6 Test for existence of tput, closes #2 |
|||
Terminal-Width: deedb0cb24 | (JJ Merelo)++ | META6.json :arrow_up: for release |
14:11 | ||
14:11
evalable6 left
15:02
frost left
15:23
squashable6 left
15:24
squashable6 joined
|
|||
MasterDuke | m: my $a; $a = do given "NaN" { when NaN { "nan" }; default { "default" } }; say $aĀ Ā Ā Ā Ā Ā # is this correct? | 15:36 | |
camelia | nan | ||
MasterDuke | bisectable6: old=2021.05 my $a; $a = do given "NaN" { when NaN { "nan" }; default { "default" } }; say $a | 15:37 | |
bisectable6 | MasterDuke, Bisecting by output (old=2021.05 new=6e6ef03) because on both starting points the exit code is 0 | ||
MasterDuke, bisect log: gist.github.com/29342d490a15139094...e0aec84ce2 | |||
MasterDuke, (2021-12-27) github.com/rakudo/rakudo/commit/58...fbdfaa6e43 | |||
MasterDuke | committable6: 2021.11 my $a; $a = do given "NaN" { when NaN { "nan" }; default { "default" } }; say $a | 15:38 | |
committable6 | MasterDuke, Ā¦2021.11: Ā«Cannot find this revision (did you mean ā2021.12ā?)Ā» | ||
MasterDuke | committable6: 2021.10 my $a; $a = do given "NaN" { when NaN { "nan" }; default { "default" } }; say $a | ||
committable6 | MasterDuke, Ā¦2021.10: Ā«defaultā¤Ā» | ||
[Coke] | doc test shows that we have Range.sum doc'd as returning Numeric, but the source doesn't have that restriction. Should it? | 15:52 | |
nine | lizmat: FWIW I would approve your PR on "Preparing the Raku Ecosystem for the Future", but I'm not a reviewer in the problem-solving repo :) | 15:55 | |
15:56
cognominal joined
|
|||
MasterDuke | [Coke]: can't think why not, though fwiw, none of the sum methods or subs have a return type | 15:58 | |
[Coke] | nine++ for making me check that apparently I was a requested reviewer. | ||
Performance concerns? | |||
Seems like being explicit is good, esp. these days? | 15:59 | ||
nine | Python mantra says "explicit is better than implicit" | ||
Return type checks can be speshed away. That was one of the original goals for spesh plugins and later new-disp. | 16:00 | ||
They are what makes return "dispatchy" | |||
[Coke] | I can put together a PR that makes all the sums Numeric and see if it breaks anything. | 16:02 | |
16:13
evalable6 joined
|
|||
lizmat | nine: wonder why Github allows me to select you as a reviewer, and not allowing you to review :-( | 16:58 | |
nine: could you try again? | 17:01 | ||
17:50
Kaipi left
18:07
reportable6 left
18:09
reportable6 joined
18:29
Xliff left
|
|||
nine | lizmat: oh, Github would allow me, but I've never signed up to be a reviewer in problem-solving | 18:44 | |
18:45
Kaipi joined
|
|||
nine | I was just happy to leave this pondering to others as I usually have no problem staying busy anyway :) | 18:45 | |
cognominal | It seems many people have no problem lizmat acting as benevolent dictator. Within the raku community. Outside, it seems to be different. Liz tried to drafted me too. I am not competent. | 18:49 | |
* draft | |||
And I prefer not to talk about the fracture between the Perl and the raku community. I have been ousted in France from the former and I don't really feel worthy for the later :) | 18:51 | ||
18:57
ShaneC joined
|
|||
lizmat | nine: ok, sorry for the misunderstanding | 19:01 | |
cognominal | lizmat++ for taking care | ||
20:22
notna joined
|
|||
[Coke] | indeed. | 20:32 | |
so I tried changing all the sums to declare --> Numeric... and a spectest about junctions failed. | |||
m: my @a = km-cd-webapp.ame.intela.deloitte.c...tax-matrix | 20:33 | ||
camelia | ===SORRY!=== Error while compiling <tmp> Confused at <tmp>:1 ------> my @a = https:ā//km-cd-webapp.ame.intela.deloitte.com/U expecting any of: colon pair |
||
[Coke] | carp | ||
MasterDuke | HA | 20:35 | |
s/HA/ha | 20:36 | ||
20:37
sena_kun left
20:38
sena_kun joined
|
|||
[Coke] | m: dd (2, 3|4, 5, 6|7).sum | 20:38 | |
camelia | any(any(16, 17), any(17, 18)) | ||
[Coke] | so the sum returns a Junction and the declared -->Numeric fails. | ||
20:43
notna left
|
|||
gfldex | m: dd (True, True).sum; | 21:33 | |
camelia | 2 | ||
gfldex | So to make return type constraints work (not just for sum), Junctions would need to become Nilish. | 21:38 | |
What makes sense to me, as Junctions stand outside the ordinary type system. | 21:39 | ||
22:14
Xliff joined
|