🦋 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: ... | Logs available at irclogs.raku.org/raku-dev/live.html | For MoarVM see #moarvm Set by lizmat on 8 June 2022. |
|||||||||||||||||||||||||||||||||||||||
japhb | I'm not sure that should be called "sanity checking", because when I looked at it I briefly went insane. | 01:35 | |||||||||||||||||||||||||||||||||||||
ugexe | a sanity check and an insanity check are the same thing | 01:39 | |||||||||||||||||||||||||||||||||||||
japhb | ugexe: But if it were merely a predicate it should not have mutated my mental state. A check that changes state in the process would be ... actually, something like a CAS. That implies that now somehow we can have atomic operations on brains. Huh. | 02:31 | |||||||||||||||||||||||||||||||||||||
04:55
kjp left
04:56
kjp joined
|
|||||||||||||||||||||||||||||||||||||||
nine | ab5tract: .(5) is not a method call? | 07:52 | |||||||||||||||||||||||||||||||||||||
07:57
finanalyst joined
08:52
sena_kun joined
|
|||||||||||||||||||||||||||||||||||||||
[Tux] | jdv: tux.nl/Talks/CSV6/speed4.html | 08:54 | |||||||||||||||||||||||||||||||||||||
and tux.nl/Talks/CSV6/speed4-20.html | 08:55 | ||||||||||||||||||||||||||||||||||||||
ab5tract | nine: the why does it look like one? | 09:31 | |||||||||||||||||||||||||||||||||||||
But you are right, apparently that syntax is not actually method-ical | 09:36 | ||||||||||||||||||||||||||||||||||||||
m: with [1,2,3] { say *.[2] } | |||||||||||||||||||||||||||||||||||||||
camelia | WhateverCode.new | ||||||||||||||||||||||||||||||||||||||
ab5tract | Seems surprising to me but 🤷 | 09:37 | |||||||||||||||||||||||||||||||||||||
And CALL-ME should apparently not be considered a method either? | 09:43 | ||||||||||||||||||||||||||||||||||||||
lizmat | CALL-ME to me, is a grey area: not sure whether that is an implementation-detail or not | ||||||||||||||||||||||||||||||||||||||
ab5tract | m: with { dd :$_ } { *.CALL-ME(<crazy>) } | 09:44 | |||||||||||||||||||||||||||||||||||||
camelia | ( no output ) | ||||||||||||||||||||||||||||||||||||||
lizmat | hmmmm I stand corrected: it is being tested in roast | ||||||||||||||||||||||||||||||||||||||
ab5tract | Do we have a name for these no-really-method-calls-written-exactly-as-method-calls? | 09:46 | |||||||||||||||||||||||||||||||||||||
*not | |||||||||||||||||||||||||||||||||||||||
lizmat | interface methods ? | ||||||||||||||||||||||||||||||||||||||
ab5tract | Hmmm.. could work | 09:47 | |||||||||||||||||||||||||||||||||||||
Thinking of documentation here. Since there is a clear exception to “method calls curry”, I hope that exception can be similarly clearly stated | 09:49 | ||||||||||||||||||||||||||||||||||||||
go | |||||||||||||||||||||||||||||||||||||||
(No go, that’s a typo) | |||||||||||||||||||||||||||||||||||||||
Maybe “turn-key” methods could also be a contender | 09:53 | ||||||||||||||||||||||||||||||||||||||
jdv | [Tux]: thanks. i was surprised those aren't easily searchable/discoverable. | 10:41 | |||||||||||||||||||||||||||||||||||||
11:24
finanalyst left
|
|||||||||||||||||||||||||||||||||||||||
[Tux] | post them to the ML and pin them :) | 12:12 | |||||||||||||||||||||||||||||||||||||
|
13:03 | ||||||||||||||||||||||||||||||||||||||
14:02
finanalyst joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: d9863e9ad5 | ab5tract++ | 3 files Add worry for WhateverCode on LHS of smartmatch Smartmatch only curries `Whatever`, so any user that provides a `WhateverCode` expression as an LHS is likely to encounter a surprising failure (when compared to the behavior of most other infix operaators). In order to be proactive and helpful to such users, we emit a descriptive worry in this scenario. |
14:04 | |||||||||||||||||||||||||||||||||||||
ab5tract | I do still worry that we need a way to ignore/suppress worries :) | 14:07 | |||||||||||||||||||||||||||||||||||||
14:11
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
nine | Love that comment in Actions :D | 14:11 | |||||||||||||||||||||||||||||||||||||
14:11
sena_kun joined
14:18
sena_kun left,
sena_kun joined
14:20
sena_kun left,
sena_kun joined
14:22
sena_kun left
14:23
sena_kun joined
14:24
sena_kun left
14:26
sena_kun joined
14:27
sena_kun left
14:28
sena_kun joined
14:31
Altai-man joined
|
|||||||||||||||||||||||||||||||||||||||
ab5tract | after having to revise that condition change for the fifth time, I couldn't help myself :) | 14:32 | |||||||||||||||||||||||||||||||||||||
14:33
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
ab5tract | maybe it was only three times, but still :) | 14:33 | |||||||||||||||||||||||||||||||||||||
Afterwards I started poking at R#1206, and opened a larger can of worms than I anticipated | 14:36 | ||||||||||||||||||||||||||||||||||||||
linkable6 | R#1206 [open]: github.com/rakudo/rakudo/issues/1206 [operators] Can’t override !~, =~, >>, << | ||||||||||||||||||||||||||||||||||||||
ab5tract | m: sub foo(+$x [$ is rw = False]) { $x }; say foo().raku | 15:52 | |||||||||||||||||||||||||||||||||||||
camelia | ===SORRY!=== Error while compiling <tmp> concatenate requires a concrete string, but got null at <tmp>:1 |
||||||||||||||||||||||||||||||||||||||
ab5tract | what is this code even trying to accomplish? I don't think I've ever seen a signature this bizarre | 15:53 | |||||||||||||||||||||||||||||||||||||
(from R#1211) | |||||||||||||||||||||||||||||||||||||||
linkable6 | R#1211 [open]: github.com/rakudo/rakudo/issues/1211 [LTA] LTA error with `is rw` defaults in an unpacked slurpy | ||||||||||||||||||||||||||||||||||||||
15:55
sena_kun joined
15:56
Altai-man left
|
|||||||||||||||||||||||||||||||||||||||
ab5tract | TIL: `The plus form flattens according to the single argument rule.` | 16:06 | |||||||||||||||||||||||||||||||||||||
but I don't see documentation regarding the `[$ is rw = False]` syntax | 16:09 | ||||||||||||||||||||||||||||||||||||||
17:46
lizmat_ joined
17:48
lizmat left
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/rakuast-phase-cleanup: 28 commits pushed by (Stefan Seifert)++ review: github.com/rakudo/rakudo/compare/c...a612d31dc9 |
17:50 | |||||||||||||||||||||||||||||||||||||
nine | This was a really mysterious bug: github.com/rakudo/rakudo/commit/8b...0c2c7c1e9e | 17:51 | |||||||||||||||||||||||||||||||||||||
MasterDuke | ab5tract: isn't that destructuring into a list of a single item? | 17:52 | |||||||||||||||||||||||||||||||||||||
ab5tract | ah, indeed | 17:53 | |||||||||||||||||||||||||||||||||||||
17:55
lizmat_ left,
lizmat joined
|
|||||||||||||||||||||||||||||||||||||||
ab5tract | nine: `This bug was particularly well hidden because we only use the full method cache when we try to find a method in a megamorphic call site.`<--- this sounds tricky indeed | 17:56 | |||||||||||||||||||||||||||||||||||||
lizmat | nine: shouldn't that commit be in main ? | 17:57 | |||||||||||||||||||||||||||||||||||||
possibly cherry-picked ? | |||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: 2cba37f5c4 | (Stefan Seifert)++ (committed by Elizabeth Mattijsen) | 2 files Fix mysterious failures when class construction process order changes For creating a class' full method list (including inherited ones) we need an up-to-date MRO (i.e. the linearized inheritance list). This MRO is getting cached. While we already re-calculated this cache when the parent list changes, a window of opportunity was left open between method cache getting updated due to a method getting added and the MRO ... (9 more lines) |
18:08 | |||||||||||||||||||||||||||||||||||||
lizmat | nine++ | 18:09 | |||||||||||||||||||||||||||||||||||||
ab5tract | MasterDuke: I've never seen destructuring combined with a slurpy in this way. Zoffix sure was good at surfacing these syntax shenanigans | 18:16 | |||||||||||||||||||||||||||||||||||||
MasterDuke | destructuring doesn't seem to be terribly common in general in most raku code i've seen | 18:17 | |||||||||||||||||||||||||||||||||||||
ab5tract | destructuring into an anyonmous scalar even less so :) | 18:18 | |||||||||||||||||||||||||||||||||||||
m: 'my $x := Int; -> ::($x) $y { say $y }(42.2)'.AST.EVAL | 18:19 | ||||||||||||||||||||||||||||||||||||||
camelia | No lexical found with name '::($x)' in block <unit> at EVAL_0 line 1 in block <unit> at <tmp> line 1 |
18:20 | |||||||||||||||||||||||||||||||||||||
ab5tract | m: 'BEGIN my $x := Int; -> ::($x) $y { say $y }(42.2)'.AST.EVAL | ||||||||||||||||||||||||||||||||||||||
camelia | ===SORRY!=== Unknown compilation input 'qast' |
||||||||||||||||||||||||||||||||||||||
ab5tract | I wonder how badly we want this to work (R#1284) | 18:26 | |||||||||||||||||||||||||||||||||||||
linkable6 | R#1284 [open]: github.com/rakudo/rakudo/issues/1284 [LTA] `::(...)` as type in signatures silently fails | ||||||||||||||||||||||||||||||||||||||
nine | What on earth does class Foo { my $.foo; } mean now? | 19:16 | |||||||||||||||||||||||||||||||||||||
ab5tract | nine: nothing good :) | 19:34 | |||||||||||||||||||||||||||||||||||||
I think the definition you are looking for is `self.typed-sorry: 'X::OutOfDate'` | 19:38 | ||||||||||||||||||||||||||||||||||||||
I mean, by definition `$.foo` implicates a `self`.. `my` is for singleton-ic variables when used in classes. any design that aimed at providing a guesstimate behavior the bridges the two should be erased IMO | 19:41 | ||||||||||||||||||||||||||||||||||||||
nine: I believe I can close R#1277 as an EWONTFIX, right? | 19:42 | ||||||||||||||||||||||||||||||||||||||
linkable6 | R#1277 [open]: github.com/rakudo/rakudo/issues/1277 `require` fails to handle `:from` adverb | ||||||||||||||||||||||||||||||||||||||
nine | To answer my own question: it's a class attribute, i.e. a lexical inside that class that gets an accessor generated for it | 20:04 | |||||||||||||||||||||||||||||||||||||
They are described in github.com/Raku/old-design-docs/bl...bjects.pod | |||||||||||||||||||||||||||||||||||||||
ab5tract: I do not really see a reason to not implement that. | 20:07 | ||||||||||||||||||||||||||||||||||||||
ab5tract | hmmm.. in that case it does make some sense.. | 20:09 | |||||||||||||||||||||||||||||||||||||
but how you do refer to it afterwards? as `$foo`, right? | |||||||||||||||||||||||||||||||||||||||
it just feels kind of disjointed from the usual semantics | 20:10 | ||||||||||||||||||||||||||||||||||||||
s/semantics/syntax/ | |||||||||||||||||||||||||||||||||||||||
or does it work as `$.foo` but not as `$!foo`? (which would be even more disjointed) | 20:14 | ||||||||||||||||||||||||||||||||||||||
nine | Yeah, it's $.foo inside the class | 20:16 | |||||||||||||||||||||||||||||||||||||
And Foo.foo outside | |||||||||||||||||||||||||||||||||||||||
ab5tract | Can't say that I love that | 20:25 | |||||||||||||||||||||||||||||||||||||
but I should probably save my energy for `has $foo`, as that one bothers me more :) | 20:26 | ||||||||||||||||||||||||||||||||||||||
both cases are similar though: the exception-to-the-rule is more pedagogically/cognitively expensive than just having a dang rule | 20:29 | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: ecd2dd4698 | ab5tract++ | src/core.c/IO/Socket/Async.rakumod Provide the host:port that compose the address in use This quality-of-life change supplies the user with a bit more context when an "address already in use" exception bubbles up from libuv. This addresses #1266 (R#1266). |
20:30 | |||||||||||||||||||||||||||||||||||||
linkable6 | R#1266 [open]: github.com/rakudo/rakudo/issues/1266 [LTA] LTA error with sock using already-bound port | ||||||||||||||||||||||||||||||||||||||
22:33
finanalyst left
23:08
sena_kun left
|