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