Geth | rakudo/main: 7d29c62a9c | (Elizabeth Mattijsen)++ | tools/templates/NQP_REVISION Bump NQP to get latest bartolin++ JVM fixes |
00:10 | |
02:07
MasterDuke joined
03:18
MasterDuke left
05:00
librasteve_ left
07:27
[Coke] left
08:33
|Tux| left
08:48
sena_kun joined
09:22
[Coke] joined
09:52
sena_kun left
10:29
librasteve_ joined
|
|||
ab5tract | it looks like I was a naughty human and didn't implement revision gating for JVM | 12:58 | |
lizmat | naughty! | 13:03 | |
Sinterklaas knows! | |||
ab5tract | kool voor mijn sokje :( | 13:18 | |
lizmat | de roe! | ||
13:25
patrickb left
13:26
greenfork joined,
patrickb joined
|
|||
timo | asche auf dein haupt :< | 14:07 | |
lizmat | notable6: weekly | 16:15 | |
notable6 | lizmat, No notes for “weekly” | ||
lizmat | and yet another Rakudo Weekly News hits the Net: rakudoweekly.blog/2024/11/25/2024-...o-release/ | 16:23 | |
timo | "the us conference" is that really what it's called? ;) | 16:29 | |
lizmat | well... I don't want mention some names | 16:41 | |
timo | hum. did i break something? all the interesting lexicals show up as VMNull ... | 17:06 | |
lizmat | that's not very interesting :-( | ||
timo | i think it was just that after stepping into a new function none of the lexicals have been filled from things like arguments and such yet | 17:10 | |
one step later they are there | 17:11 | ||
lizmat | ah, interesting :-) | ||
timo | i haven't looked at the exact output of the debugserver's line number instrumentation in a long time | 17:19 | |
17:28
coleman left
17:30
coleman joined
|
|||
timo | hahaha printing the contents of a hash from something that does ANSI stuff from inside the debugger CLI makes the cursor jump around in the middle of printing its table and makes everything mashed up | 17:41 | |
Geth | rakudo/lower-bound-for-revision-gating: 0c1d4a48f4 | ab5tract++ | 2 files Add lower-bounding for the revision-gated trait This adds a finishing touch to revision gating: the ability to use revision gating to evolve methods that otherwise have the exact same signature. The is done by adding the trait to the candidate that is to be replaced: ... (25 more lines) |
||
lizmat | timo: I guess the contents needs to be de-ANSIfied :-) | 17:44 | |
timo | maybe just .raku on it would be a good start? maybe for the common case where nothing needs to be escaped, chop off the " at the start and the end though? | 17:46 | |
Geth | rakudo: ab5tract++ created pull request #5696: Add lower-bounding for the revision-gated trait |
17:47 | |
timo | `step until { .<frames>.none.path.contains("dispatchers.nqp") }` i think i will add this as a built-in command to the moar debugger app for now | 17:57 | |
until "step out" is implemented | |||
i wonder when that will happen, or who will do it ... | |||
the firefox dev tools have a notion of "ignored sources" where you can mark files or whole subfolders as "not interesting" and they will be skipped by default | 17:59 | ||
lizmat | sounds like a nice feature to have ? | 18:02 | |
but that could be handled by the debugger app, no? | |||
just auto-resume if the file / folder is not interesting | 18:03 | ||
iow, let the debugger do the work ? | |||
timo | yes, but it's slow | 18:05 | |
lizmat | I guess it would be, but it would be a first approx | 18:06 | |
if people using it start complaining it's slow, then maybe it could use VM support | |||
timo | sure, so that would be similar to the command i wrote up there | ||
lizmat | right | 18:07 | |
timo | skipping through dispatchers may be even easier since there's a special thing on the call stack when we're in one | 18:09 | |
easier for moar, i mean | |||
lizmat | right | ||
timo | it would be kinda nice to have all of the little pointy blocks that we use in dispatchers.nqp actually be something that has a name that shows up in backtraces | 18:10 | |
otherwise it's all just <anon>, apart from the few helper subs | |||
lizmat | sub foo ($_) { ... } | ||
timo | yeah | ||
lizmat | would work as well and have a name? | ||
timo | maybe nqp::staticcode(...) with it? | ||
not sure if that's necessary at all | 18:11 | ||
just gotta be sure it's not any slower, that would be embarassing | |||
18:12
lizmat_ joined
18:15
lizmat left
18:21
lizmat_ left,
lizmat joined
|
|||
ab5tract | hmm, would it be totally crazy to add a `:name` parameter to pointy blocks? -> $x {...}:name<a-solid-signifier> | 18:31 | |
I guess the first step should be to test the impact of using existing forms of named blocks | 18:33 | ||
timo | seems a bit odd | ||
but also this is in nqp code, so no real impact to raku users | |||
ab5tract | that's actually a good point.. | 18:49 | |
18:49
sena_kun joined
|
|||
ab5tract | should I put some revision-gated tests in `t/02-rakudo` or in `t/spec/12-methods`? | 18:59 | |
lizmat | in t/02-rakudo I'd say for now | 19:06 | |
ab5tract | this is so weird... is-run dies with a SORRY for code that runs perfectly fine when passed to the executable directly via `-e` | 20:13 | |
timo | insufficient amounts of "make install"? | 20:16 | |
ab5tract | ahhhh | 20:18 | |
weird | |||
hmmm.. unfortunately that doesn't seem to matter :( | 20:28 | ||
20:28
|Tux| joined
|
|||
timo | d'oh | 20:30 | |
ab5tract | the escaping on this seems borked: | 20:34 | |
"use v6.d;\nproto sub gated(|) is revision-gated(\"6.c\") \{*}\nmulti sub gated(Int \$x) is revision-gated(\"6.c\") \{ say \"6.c\" }\nmulti sub gated(Int \$x) is revision-gated(\"6.d\") \{ say \"6.d\" }\nmulti sub gated(Int \$x) is revision-gated(\"6.e\") \{ say \"6.e\" }\n\ngated;\n\n" | |||
why is it escaping `\{` but not `}` ? | |||
If I try to run that directly, it indeed dies on that first escaped `\{` | 20:35 | ||
but of course is-run is failing differently, with: `===SORRY!=== Error while compiling -e\nCalling gated() will never work with any of these multi signatures:\n (Int \$x) \n (Int \$x) \n (Int \$x)` | 20:37 | ||
ah! it's my fault in the end | 20:41 | ||
I was testing without signatures | 20:42 | ||
use v6.d; proto sub foo(|) is revision-gated("6.c") { * }; multi sub foo(Int $x) is revision-gated("6.c") { say "6.c" }; multi sub foo(Int $x) is revision-gated("6.d") { say "6.d" }; foo' | |||
^ works fine | |||
sorry for the noise yall... all I needed was to, you know, match the signature. `gated` doesn't work, `gated(5)` does work. | 20:44 | ||
Geth | rakudo/lower-bound-for-revision-gating: 534fdf3c9d | ab5tract++ | 3 files Add lower-bounding for the revision-gated trait This adds a finishing touch to revision gating: the ability to use revision gating to evolve methods that otherwise have the exact same signature. The is done by adding the trait to the candidate that is to be replaced: ... (23 more lines) |
20:50 | |
timo | shit happens :) | 20:51 | |
oh! i was wondering why my escape codes that are supposed to move the cursor and clear lines wasn't working; turns out i was using "say" which of course also puts a newline at the end m) | 20:54 | ||
bartolin | looking at the remaining spectest failures for rakudo-j I noticed that this evaluation (from github.com/Raku/roast/blob/298aaac...mat.t#L28) explodes with a NullPointerException: | 20:56 | |
m: use v6.e.PREVIEW; my $f = Format.new("%5s") | |||
camelia | ( no output ) | ||
bartolin | it happens in github.com/rakudo/rakudo/blob/7d29...akumod#L77 -- and $obj is null at that point | 20:57 | |
according to the backtrace it comes from github.com/rakudo/rakudo/blob/7d29...umod#L1255 | |||
the thing is, that $obj seems to be null on MoarVM as well at that point. | |||
timo | maybe moar just tolerates that? and treats it as a no-op? | 20:58 | |
bartolin | yeah, I'm pretty sure, that nqp::setobj with a nul object doesn't explode on MoarVM. | ||
now I wonder how to fix that or work around that ... | 20:59 | ||
the jvm backend is more picky when trying to do operations on null objects. And I don't like the idea to try to change it to be more liberal all over the place ... | 21:01 | ||
ab5tract | bartolin: I don't suppose we could some use a nullsa | 21:02 | |
nullable Optional ? | |||
I haven't poked at the jvm code enough to know if that's remotely workable though | 21:03 | ||
bartolin | I seem to remember that we had this kind of discussion once in a while over the last years. But in the past the result was usually, that it wouldn't make sense to try to change the inner workings of the JVM backend. | 21:07 | |
that being said I don't feel qualified to judge and decide that | 21:08 | ||
ab5tract | I'd be really curious to see what would happen if I start converting classes to Kotlin one by one :) | ||
one day I'll at least give it a try | |||
bartolin | ab5tract++ :) | 21:09 | |
ab5tract | Kotlin's nullability story is so freaking good | ||
and you make things final by using `val` instead of `var`. I never make anything final in Java because the code is already so verbose to begin with | 21:10 | ||
bartolin hasn't done anything with Kotlin, but will do some reading | 21:11 | ||
timo | ah, so "l" in val is for fina"l", and r in var is for "r"esettable. so is there vau for "u"nsigned maybe? | ||
does vau vau give you a unsigned long long? | |||
ab5tract | no, but "van van" gives you a pointer to a pointer ;) | 21:13 | |
the defined-or in kotlin is like: val foo: Int = maybe-null() ?: 5; // could also be statement, so you can return or throw or whateva | 21:16 | ||
beats the heck out of if `Integer foo = maybe-null(); if (foo == null) { foo = 5 }` (and allows final for foo, which isn't possible with this taglietelle) | 21:18 | ||
&sleep; // cheers all .o/ | |||
bartolin | o/ | 21:24 | |
timo | don't we have a syntax for a list of base-16 numbers? | 21:39 | |
m: say :16[<10 20 30 1a 1b 1c>]; | |||
camelia | Cannot convert string to number: trailing characters after number in '1<HERE>a' (indicated by <HERE>) in block <unit> at <tmp> line 1 |
||
timo | m: say :16[<1 2 3 a b c>]; | 21:40 | |
camelia | Cannot convert string to number: base-10 number must begin with valid digits or '.' in '<HERE>a' (indicated by <HERE>) in block <unit> at <tmp> line 1 |
||
21:40
librasteve_ left
|
|||
timo | i thought :16 is syntax for "base 16 number as a string coming in", not base 10? :S | 21:40 | |
This call only converts base-16 strings to numbers; value $(IntStr.new(1, "1"), IntStr.new(2, "2"), IntStr.new(3, "3"), "a", "b", "c") is of type List, so cannot be converted! | 21:41 | ||
:( | |||
gimme a hypercolon | 21:42 | ||
22:24
sena_kun left
22:36
sena_kun joined
23:14
sena_kun left
|