🦋 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. |
|||
03:45
JimmyZhuo joined
03:58
JimmyZhuo left
08:03
finanalyst joined
08:14
finanalyst left
08:16
finanalyst joined
|
|||
Geth | rakudo/main: 88566130ae | (Stefan Seifert)++ | 2 files RakuAST: properly support natively typed sigilless parameters Fixes: sub foo(int \i) { bar(i) }; sub bar(int $i) { } |
08:24 | |
rakudo/main: 4ede82f6e1 | (Stefan Seifert)++ | src/Raku/ast/type.rakumod RakuAST: fix method not found after failing to resolve type |
|||
rakudo/main: f20251a5ed | (Stefan Seifert)++ | src/Raku/Actions.nqp RakuAST: fix missing $?CLASS and $?PACKAGE in augment |
|||
nine | That makes it 1206 fully bootstrapped. | ||
Btw. I love that last commit. When trying that change I wondered for which obscure problem this code was the wrong solution. Turns out, there wasn't any. Fixed things by just removing that special case. | 08:25 | ||
08:37
finanalyst left
|
|||
patrickb | My guess would be that this bit of code was a workaround that did help at some point in the past. | 08:38 | |
nine | Yep. Probably from an early try to get augment going | 08:39 | |
Ah, there used to be a $*PACKAGE.IMPL-CHECK($*R, $*CU.context, 1); which got translated to $*PACKAGE.to-begin-time | 08:40 | ||
08:49
sena_kun joined
09:25
finanalyst joined
|
|||
Geth | rakudo/bootstrap-rakuast: 25 commits pushed by (Stefan Seifert)++ review: github.com/rakudo/rakudo/compare/9...2a4d00d5e6 |
09:25 | |
nine | 1219 now | ||
So what will happen first? Me catching up fully bootstrapped with setting compiled with regular grammar? Or the rest of the team finishing spectests on the old setting? :D | 09:26 | ||
gfldex | nine: Please don't forget to set the turning light when overtaking them. You are already breaking the coding speed limit. | 09:29 | |
nine | Which should not distract from the fact that it's still a ton of work and every little bit of help is greatly appreciated. | 09:34 | |
Oh boy....there's a RakuAST vs. spesh bug | 09:46 | ||
10:09
sena_kun left
|
|||
nine | Pushed a fix to MoarVM which brings us to 1224 | 10:23 | |
The RakuAST component of the problem was that even in a method foo(|c) we declare the implicit *%_, which the old frontend doesn't. | |||
Geth | nqp/main: ccb993497d | (Elizabeth Mattijsen)++ | tools/templates/MOAR_REVISION Bump MoarVM for various fixes - prevent stuff happening at exit (timo++, MasterDuke++) - avoid segfault with nqp::objectid in GC (nine++) - avoid mis-spec of signatures with multiple slurpies (nine++) |
10:31 | |
lizmat | nine: maybe the new frontend shouldn't either | 10:33 | |
nine | It definitely shouldn't. But apart from bugs like that in spesh it also shouldn't make any semantic difference, so it's just a missing optimization. | 10:34 | |
timo | makes me wonder if there's any sensible way to make an automatic fuzzer for spesh | 10:35 | |
lizmat | hmm... got 3 new make test failures after bumping NQP | 10:38 | |
not sure whether they are caused by the bump or not :-( | |||
lizmat re-conpiles without the bump | 10:39 | ||
t/02-rakudo/07-implementation-detail-6.c.t # ditto 6.d.t and 6.e.t | |||
it wasn't the bump | 10:43 | ||
nine: got spectest failure now *without* RakuAST: t/spec/S06-signature/arity.t | 10:56 | ||
Slurpy named parameters with type constraints are not supported | |||
since this looks related to .assuming, I'll have a look | |||
Geth | rakudo/main: 024827436a | (Elizabeth Mattijsen)++ | tools/templates/NQP_REVISION Bump NQP for various MoarVM fixes - prevent stuff happening at exit (timo++, MasterDuke++) - avoid segfault with nqp::objectid in GC (nine++) - avoid mis-spec of signatures with multiple slurpies (nine++) |
10:57 | |
11:00
rakkable left,
rakkable joined
|
|||
lizmat | bisectable6: old=2025.02 sub a($a, Mu *%_) { } | 11:05 | |
bisectable6 | lizmat, On both starting points (old=2025.02 new=f20251a) the exit code is 1 and the output is identical as well | ||
lizmat, Output on both points: «===SORRY!=== Error while compiling /tmp/eF9hJABYjPSlurpy named parameters with type constraints are not supportedat /tmp/eF9hJABYjP:1------> sub a($a, Mu *%_<HERE>) { } expecting any of: constraint» | |||
lizmat | aha | ||
so somehow now the Mu constraint is being added | 11:07 | ||
11:10
finanalyst left
11:11
JimmyZhuo joined
|
|||
lizmat | bisectable6: old=2025.02 class A { our method a() { } }; dd &A::a.signature.params[1].type | 11:17 | |
bisectable6 | lizmat, On both starting points (old=2025.02 new=f20251a) the exit code is 0 and the output is identical as well | ||
lizmat, Output on both points: «Mu» | |||
nine | Seems like there's at least one case where the generated BUILDALL differs from the interpreting POPULATE | 11:39 | |
The latter hllizes bound values while the former doesn't. | |||
lizmat | BUILDALL is no longer generated. POPULATE is generated | 11:40 | |
BUILDALL is a shim | |||
nine | # Attempt to auto-generate a BUILDALL method. | 11:41 | |
unless self.declares_method($target, 'BUILDALL') | |||
"Basically a flattened version of Mu.BUILDALL" | |||
nqp::die('Invalid ' ~ $object.HOW.name($object) ~ '.BUILDALL plan: ' ~ $code); | 11:42 | ||
So forgive me when I use the name that occurs in many more places | |||
Still doesn't change anything about there being a difference | |||
AFAICT it's not actually possible for a routine to receive an NQP hash as argument. It will always be hllized. The only exception seems to be that generated constructor. Thus I would say hllize is just missing from that. | 11:53 | ||
Geth | rakudo/main: 0adcacd4f0 | (Elizabeth Mattijsen)++ | 4 files Hopefully reduce BUILDALL -> POPULATE confusion Only comment changes. |
11:54 | |
lizmat | nine: what is this affecting? | 11:55 | |
the reason I'm asking is that I'm close to getting rid of all compiler services / BUILDPLAN etc. logic in RakuAST | |||
so RakuAST will generate the POPULATE method itself, and the accessor where applicable | 11:56 | ||
nine | github.com/rakudo/rakudo/blob/main...kumod#L331 relies on $lexpad (which may be an nqp::hash) getting bound un-hllized | ||
lizmat | so we can get rid of the generate_BUILDPLAN / BUILDPLAN interpreting logic altogether as soon as the Raku bootstrap is merged | ||
nine: it also works the other way around: | 12:00 | ||
m: use nqp; my %h = :42a; dd nqp::atkey(%h,"a") | |||
camelia | element of %h = 42 | ||
lizmat | so I don't think that's the issue ? | 12:01 | |
nine | It is: | 12:05 | |
m: use nqp; my %h; nqp::iterator(%h) | |||
camelia | Cannot iterate object with P6opaque representation (Hash) in block <unit> at <tmp> line 1 |
||
lizmat | I guess nqp::atkey is special like that | 12:12 | |
Geth | rakudo/bootstrap-rakuast: 18106bf302 | (Stefan Seifert)++ | src/core.e/PseudoStash.rakumod RakuAST: fix reliance on missing hllize in generated POPULATE Arguments are supposed to be hllized. Apparently this is missing from the generated POPULATE methods, so it wasn't obvious that binding an NQP hash to an attribute via constructor call cannot work as expected. |
||
nine | 1225 | ||
timo | right, a few things can go to the positional or associative delegate slot by default. i think we allow an object to have both a positional and an associative delegate slot, in that case it wouldn't be clear what you would want to iterate? | 12:16 | |
nine | Sadly t/spec/S02-names/SETTING-6e.t still fails, because it's expecting every comp unit to have a <unit> wrapped in a <unit-outer> scope. The latter fulfils no purpose though and is absent in RakuAST | 12:17 | |
I may be biased, but I find SETTING::OUTER::OUTER to get from v6.e to v6.c to be much clearer than SETTING::OUTER::OUTER::OUTER::OUTER | 12:18 | ||
lizmat | agree... and we can fix that on the merge | 12:20 | |
anyways, it's not a roast test, so why not adapt that test in the bootstrap-rakuast branch ? | 12:21 | ||
nine | It *is* a roast test | 12:24 | |
[Coke] | lizmat: did you see the blin run I did a few days ago? | 12:28 | |
I only posted the .md in a gist, I didn't open a ticket (yet) | |||
lizmat | nine: ah,, yes :-( | ||
missed it | |||
been focused on issues lately :-) | 12:29 | ||
[Coke] | gist.githubusercontent.com/coke/9d...failure.md | ||
there's an issue with .assuming | |||
lizmat | ok, looks like there are some .assuming regressions in there | 12:31 | |
ok, getting a bit swamped now: will do the weekly first, then look at blin, then look at spectest regression | 12:32 | ||
nine: then I wonder, should it be a roast test? feels to me that's pretty implementation dependent | 12:45 | ||
nine | I don't know. | 12:56 | |
I wish vrurg would explain what issues his fixes actually solve. But as with the generic stuff all commit messages, comments, GitHub issues and PRs basically just give you a wordy "re-wrote a bunch of code to fix some issues" | 12:57 | ||
Commit message says "Tests to cover fixed CORE loading and pseudo-packages [...] In support of rakudo/rakudo#3055" | 12:58 | ||
linkable6 | RAKUDO#3055 [closed]: github.com/rakudo/rakudo/pull/3055 Re-implement CORE loading sequence | ||
nine | That issue says "PR #3040 wasn't a complete fix to the new symbols issue." without further explaining what the "new symbols issues" was | 12:59 | |
The referenced PR says "Because loading of all CORE settings caused some tests to fail due to the way SETTING and CORE pseudo-packages behaved, this fix also includes improvements to PseudoStash class" | |||
"some tests to fail" yeah, that is helpful | |||
[Coke] | lizmat: I'll plan on one more blin run before this weekend. | 13:03 | |
(this weekend) - I am going to do the release on Sunday | 13:04 | ||
lizmat | [Coke]: ok | ||
ok | |||
[Coke] | (unless jdv gets really excited about it. :) | ||
nine | m: my $a will init { say 'init!' }; | 13:07 | |
camelia | ( no output ) | ||
lizmat | that used to work ? | ||
bisectable6: old=2023.01 my $a will init { say "innit" } | 13:08 | ||
bisectable6 | lizmat, Cannot find revision “2023.01” (did you mean “2025.01”?) | ||
lizmat | bisectable6: old=2023.02 my $a will init { say "innit" } | ||
bisectable6 | lizmat, On both starting points (old=2023.02 new=0adcacd) the exit code is 0 and the output is identical as well | ||
lizmat, Output on both points: «» | |||
lizmat | hmmm.. I guess not | ||
Geth | rakudo/main: 085953b822 | (Stefan Seifert)++ | src/core.c/Variable.rakumod Fix accidental execution of stub code when trying to report will phaser NYI |
||
nine | No, that was never implemented | 13:09 | |
lizmat | heh, indeed | ||
nine | It's just that the error reporting code was never tested | 13:10 | |
lizmat | well, it feels a bit weird to test for a NYI in roast ? | 13:13 | |
nine | Even a single manual test would have uncovered this immediately | 13:14 | |
lizmat | true | 13:17 | |
I guess I didn't :-( | |||
bisectable6: old=2025.02 class A { our method a() { } }; &A::a.assuming(A) | 13:21 | ||
bisectable6 | lizmat, Bisecting by exit code (old=2025.02 new=085953b). Old exit code: 0 | ||
lizmat, bisect log: gist.github.com/fb1d471a4e114dd272...03dbbe2de8 | |||
lizmat, (2025-03-16) github.com/rakudo/rakudo/commit/51...f688d09d51 | |||
[Coke] | I agree that NYIs should probably either not be in roast, or either explicitly or implicitly be preventative. | 13:22 | |
(because NYI at this point doesn't necessarily mean "we are really going to I this") | 13:23 | ||
timo | would probably make sense to have NYIs as fudged tests? | ||
[Coke] | (but if they come out, you'd still need to run those tests somewhere.... rakudo t/?) | ||
still want to make sure that nine's case is covered. | 13:24 | ||
if they're fudged, we'd miss it, yah? | |||
timo | well, they can be fudged to generate a todo that's expected to fail, right? | ||
and i think we can also use fudge to output specific different code per backend? | 13:25 | ||
lizmat | but it's not supposed to fail | ||
timo | instead of just marking a single test, or a series of tests as to be skipped | ||
vrurg | nine: It was unrealistic to mention all the details anyway. So, github.com/Raku/roast/pull/557 summarizes the changed tests. :) The whole thing started, as I now remember, with the SETTINGS pseudo not doing right. | 13:32 | |
nine | vrurg: that's again a PR that just says that something is fixed. And it refers to the Rakudo PR that says that "some tests failed" | 13:33 | |
JimmyZhuo | nine: for 'role E { method e { $!e = 1 }};class F does E { };' , my $package := $!package.meta-object; $package.HOW.has_attribute($package, $!name); can't find $!e. How can I find it/ | 13:35 | |
tellable6 | 2025-03-17T07:55:14Z #raku <patrickb> JimmyZhuo: Ok. Then I understand why you had so much trouble. As not all back ends use a C toolchain and provide respective $CC, ... make variables | ||
JimmyZhuo | ah, I am wrong | ||
vrurg | nine: Well, no reviewer mentioned that problem back then. My only excuse is that there are even worse commit messages in the log. Event worse it was when they were accompanying incorrect changes to the roast. | 13:38 | |
nine | It's the same reason why I have given up on generics. Tests expect "instantiated". Commit message just says "Add test for instantiation of a generic class | 13:42 | |
In support of rakudo/rakudo#5493" | |||
linkable6 | RAKUDO#5493 [closed]: github.com/rakudo/rakudo/pull/5493 Complete generic instantiation 4 | ||
nine | That issue tells me "The epic saga continues with the fourth episode" | 13:43 | |
The probably relevant commit from that PR just says "Add support for nominalizables on generic classes" | 13:44 | ||
But what does that mean?! | |||
vrurg | Unfortunately, true. Due to the absolute lack of time back then I was happy to get that working and fix a real problem in my JSON::Class implementation. | 13:52 | |
nine | And yes, I'm smart and I have by now written most of the compiler frontend for Raku which gave me a pretty intimate understanding of the language and I if I invest a few hours digging through those tests and commits I could figure out what it's all supposed to mean. | ||
But why should I? Why should I spend hours on something that wasn't worth the minutes to you that it would have taken to include a few code examples and bits of background information? | 13:53 | ||
vrurg | nine: Cool down, please. I was digging hours and hours too. I was pissed off of many commits and absolutely non-explaining messages of one person. Nobody even knows who that person was. Like you don't know what was my personal state when I was submitting these PRs. | 13:59 | |
But mainly, the problem is that there must be review process working in first place. We didn't have it with this respect. So, everybody is prone to errors of some kind. But somebody needs to be around to help fix these errors. | 14:00 | ||
jdv | [Coke]: why would i be excited? | 14:02 | |
lizmat | I'd say: let us all try to create better commit messages | ||
in the future | 14:03 | ||
JimmyZhuo | the roast has a little test about compiling time type check test | ||
Geth | rakudo/main: 2e82abc353 | (Elizabeth Mattijsen)++ | src/Raku/ast/signature.rakumod Revert "throw X::Parameter::TypedSlurpy exception, pass two test in t/spec/S06-signature/slurpy-params.t (#5818)" This reverts commit 518596b47ee659a85f949081955971f688d09d51. The added test was breaking .assuming on methods. Further research is needed as to why this was the case. |
14:05 | |
nine | Wouldn't it be quite surprising if commit 518596b47ee659a85f949081955971f688d09d51 was wrong? As checks go it doesn't seem much more straight forward than that | 14:07 | |
timo | the .rakumod files in the ast folder go through some special kind of extra compilation step, right? | 14:09 | |
14:10
JimmyZhuo left
|
|||
Geth | roast: 101b02e8db | (Elizabeth Mattijsen)++ | S04-declarations/will.t Make sure will init tests are skipped As they will throw X::NYI at compilation now. Also remove test for "will compose" as that will most likely never get implemented. Also commented out "will post" code, as that also broke compilation now with X::NYI (although it looks like the test was really being able to compile at this time). |
14:11 | |
lizmat | that should make spectest clean again | ||
nine | timo: yes, tools/build/raku-ast-compiler.nqp | 14:13 | |
timo | ah, it leaves bodies of subs and stuff completely alone, doesn't it? | 14:14 | |
nine | timo: src/Raku/ast/README.md might also be worth a look | ||
yes | |||
timo | OK, that can't be the culprit then | ||
it does "kind of tokenize" the source at a very basic level, but that should be simple enough not to get confused by that code, i'm just assuming. though it's probably easier to just look at the output | 14:16 | ||
lizmat | afk for a few hours& | 14:17 | |
nine | timo: how's it breaking? | 14:18 | |
timo | i have yet to actually run the code to see | 14:30 | |
[Coke] | jdv: that is ... a fair question. :) | 15:12 | |
timo | the slurpy signature tests have a bunch of "dies-ok" which don't test for a specific type of exception. i wonder if that's wise | 15:26 | |
ah, we get an X::AdHoc for these cases | 15:29 | ||
feels like we should be able to do better than that | 15:31 | ||
nine | Wow, that's a subtle bug... multi method candidates get sorted into the wrong order if a parameter type is just a stub at the time the class gets composed | 15:38 | |
timo | eep | 15:41 | |
[Coke] | wow | 15:52 | |
nine | But for some reason I see this only in the setting | 15:53 | |
timo | could it be particularly bootstrappy? | 15:54 | |
uhhh on current rakudo/main i fail 4 tests in t/spec/S06-signature/slurpy-params.t but on the commit right before it, i.e. without the revert, i fail only 2 tests in that file? | 15:57 | ||
15:58
librasteve_ joined
|
|||
timo | oh, i was looking at the wrong spot, the trouble isn't in slurpy-params.t at all | 15:59 | |
uhhh i actually have no idea where the failing code lives that has to do with that commit. presumably one of the failures from the blin run log? | 16:02 | ||
> Serialization Error: missing static code ref for closure 'assumed.great-circle-waypoint' (:1) | 16:19 | ||
this is the real error behind Astro-Utils's "SORRY" with "chars requires a concrete string, but got null" | 16:21 | ||
moar has a commit for that now | 16:23 | ||
16:35
finanalyst joined
|
|||
timo | got a shorter reproduction case | 16:36 | |
nine | Same here: | 16:43 | |
m: 'class Simple { ... }; class Foo { multi method foo(Simple \x, \y, :$a) { say "Simple Any" }; multi method foo(\x, Whatever \y, :$a) { say "Any Whatever" }; multi method foo(\x, \y, :$a) { } }; BEGIN Foo.foo(Any, Any); class Simple { }; Foo.foo(Simple, Whatever);'.AST.EVAL | 16:44 | ||
camelia | ===SORRY!=== Unknown compilation input 'qast' |
||
timo | github.com/rakudo/rakudo/issues/5819 | ||
nine | (would print "Any Whatever" instead of the expected "Simple Any") | ||
timo | [Coke]: when you create an issue for the blin run, you can put this as the source of the problem of Astro::Utils, but the problem is caused by `use Math::Trig;` | 16:45 | |
nine | It's because of that BEGIN time call to the multi | ||
timo | begin time call, eh? in our company we just say "daily standup" | 16:47 | |
[Coke] | scruuuuuum | 16:58 | |
nine | Plot twist! | 17:07 | |
m: class Simple { ... }; class Foo { multi method foo(Simple \x, \y, :$a) { say "Simple Any" }; multi method foo(\x, Whatever \y, :$a) { say "Any Whatever" }; multi method foo(\x, \y, :$a) { } }; BEGIN Foo.foo(Any, Any); class Simple { }; Foo.foo(Simple, Whatever); | |||
camelia | Any Whatever | ||
nine | The exact same problem actually exists on the old frontend. It's just some coincidence that it's hidden | 17:08 | |
Geth | nqp/main: db1c963b24 | (Elizabeth Mattijsen)++ | tools/templates/MOAR_REVISION Bump MoarVM to handle unnamed CU serialization, timo++ |
17:39 | |
timo | i also realize that this is with assuming but not related to methods, so probably not what liz was actually hunting down | ||
lizmat | I think somewhere a RakuAST::Type::Simple.new("Mu") is added to the Parameter, but I haven't looked yet exactly | 17:41 | |
that makes the RakuAST::Parameter.type concrete, and that triggers the error | |||
it probably shouldn't trigger when the type is Mu either | 17:42 | ||
m: sub a(Mu *@a) { } | |||
camelia | ===SORRY!=== Error while compiling <tmp> Slurpy positional parameters with type constraints are not supported at <tmp>:1 ------> sub a(Mu *@a<HERE>) { } expecting any of: constraint |
||
lizmat | I wonder why that is actually an error, you can't get more non-typy in Raku | 17:43 | |
Geth | rakudo/main: e633a64c95 | (Elizabeth Mattijsen)++ | tools/templates/NQP_REVISION Bump NQP to handle unnamed CU serialization, timo++ |
17:51 | |
timo | m: dd :$!; # a random fun "Confused" if anyone is into that kinda thing | 17:52 | |
camelia | ===SORRY!=== Error while compiling <tmp> Confused at <tmp>:1 ------> dd :$<HERE>!; # a random fun "Confused" if anyone i expecting any of: colon pair |
||
Geth | rakudo/main: cbccee08a4 | (Stefan Seifert)++ | 2 files RakuAST: sort multi candidates at check time If aa multi candidate's parameter is typed with a stub and we call that proto at BEGIN time, we may produce a wrong dispatch order. The reason is that the type stub will not yet have any parents and so it won't even beat an Any typed canidate in terms of specificity. Thus we need to re-sort those dispatch canidates at CHECK time, i.e. when we've fully ... (12 more lines) |
17:57 | |
nine | 1228 | 17:58 | |
lizmat | and 1279 non-bootstrapped, right? | ||
asking for the weekly editor | |||
nine | correct | 17:59 | |
I still don't see why the perfectly fine commit 518596b47ee659a85f949081955971f688d09d51 was reverted | 18:00 | ||
This of course now causes a rebase conflict in bootstrap-rakuast | |||
lizmat | nine: because it caused a roast regression | 18:07 | |
it just added / removed 4 lines ? | |||
you mean you changed something in those 4 lines in the bootstrapped branch? | 18:08 | ||
otherwise I don't see how that could create conflicts ? | |||
nine | Yes the branch changes a line there | 18:09 | |
lizmat | maybe that change needs to be ported to main then ? | ||
lizmat is getting curious now | |||
nine | So there are 2 changes: one is that 2 line super easy and straight forward commit that's quite obviously correct. The other is the massive rewrite of assuming. Now something using assuming breaks and the immediate conclusion is that the tiny commit is to blame? | 18:10 | |
Isn't it just as massively more likely that there's a few kinks in the new assuming implementation? | 18:11 | ||
lizmat | I'm not saying the .assuming implementation is without kinks | ||
I'm just saying that it broke roast | |||
nine | I say assuming broke roast | 18:12 | |
Wanna bet? | |||
lizmat | no, not particularly | ||
I'm just saying roast was fine for a week with the new assuming implementation | 18:13 | ||
and that addition in rakuast broke roast | |||
and we're a few days away from a release | 18:14 | ||
nine | And then a new error check actually showed that the new assuming implementation has a flaw. And as far as I understood from what you wrote here, you already confirmed that - the parameter gets a type set when it shouldn't. So the check was totally correct in throwing the error. | 18:15 | |
If its a problem for the release, then assuming should be reverted, not the innocent check that showed that assuming is not ready for prime time. | 18:16 | ||
lizmat | ok, but that's the thing: I verified that the new assuming implementation does **not** add a type to the parameter | ||
nine | Yet there is one there, isn't there? | 18:17 | |
lizmat | I haven't look at it in depth yet, but the test is: | ||
if $was-slurpy && nqp::isconcrete($!type) { | |||
so I can only assume that $!type is getting set somewhere | |||
lizmat triple checks | 18:18 | ||
hmmm... and indeed it shows a type was added | 18:20 | ||
meh | 18:21 | ||
Geth | rakudo/main: fa7697e212 | (Elizabeth Mattijsen)++ | src/Raku/ast/signature.rakumod Revert "Revert "throw X::Parameter::TypedSlurpy exception, pass two test in t/spec/S06-signature/slurpy-params.t (#5818)"" This reverts commit 2e82abc35389110abb915306926977b4fb16c82b. By popular demand |
18:22 | |
18:23
finanalyst left
|
|||
Geth | rakudo/main: 729d26ea61 | (Elizabeth Mattijsen)++ | src/core.c/core_epilogue.rakumod Preliminary fix for .assuming producing typed slurpies Problem became apparent after 518596b47ee659a8 but did not appear to create any problems in roast before that. There is still a kind of tangled mess in RakuAST land handling typed @ and % sigilled parameters, because internally this is handled as Positional[type] / Associative[type], but in other places the sigil appears to be leading, causing stacked types such as Positional[Positional[type]] in certain situations. |
18:53 | |
releasable6 | Next release in ≈4 days and ≈23 hours. There are no known blockers. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft | 19:00 | |
lizmat | notable6: weekly | 19:09 | |
notable6 | lizmat, 6 notes: gist.github.com/6ffed0c2c6fb0a86ba...5c7ea1453d | ||
lizmat | notable6: weekly reset | ||
notable6 | lizmat, Moved existing notes to “weekly_2025-03-17T19:09:43Z” | ||
19:25
sena_kun joined
|
|||
nine | WTF | 19:26 | |
m: my int @a = 1, 2; @a.first = 3 | |||
camelia | ( no output ) | ||
nine | > rakudo -e 'my int @a = 1, 2; say @a.first = 2' | 19:27 | |
Cannot modify an immutable Int (1) | |||
lizmat | that's with the bootstrapped version ? | 19:29 | |
nine | No, my plain normal rakudo from openSUSE package | 19:32 | |
But also with a locally compiled one | 19:33 | ||
lizmat | looks like I fixed that on 9 Feb: de08b4c67d | ||
nine | Oooh...and my locally compiled one was compiled with --optimize=off instead of --optimize=3 from earlier debugging. | 19:34 | |
And both using a too old rakudo and one compiled without optimization lead to the exact same error | |||
Geth | rakudo/main: 26a9c1a702 | (Stefan Seifert)++ | src/Raku/ast/signature.rakumod RakuAST: fix wrong flags on natively typed array parameters Fixes: sub foo(int @a) { }; my int $i = 1; foo($i) |
19:45 | |
nine | 1229 | ||
lizmat | and yet another Rakudo Weekly News hits the Net: rakudoweekly.blog/2025/03/17/2025-...-for-sale/ | ||
19:53
sena_kun left
19:55
sena_kun joined
|
|||
nine | rakudo (bootstrap-rakuast *<>)> ./rakudo-m --ll-exception -e 'my @a = map &sprintf.assuming("%x"), 9..12;' | 20:06 | |
This element has not been resolved. Type: RakuAST::Term::Name | |||
lizmat looks | 20:07 | ||
bisectable6: old=2025.02 my @a = (9..12).map(&sprintf.assuming("%x")); dd @a | 20:08 | ||
bisectable6 | lizmat, On both starting points (old=2025.02 new=26a9c1a) the exit code is 0 and the output is identical as well | ||
lizmat, Output on both points: «["9", "a", "b", "c"]» | |||
lizmat | bisectable6: old=2023.02 my @a = (9..12).map(&sprintf.assuming("%x")); dd @a | 20:09 | |
bisectable6 | lizmat, Bisecting by output (old=2023.02 new=26a9c1a) because on both starting points the exit code is 0 | ||
20:14
bisectable6 left
|
|||
lizmat | m: my @a = (9..12).map(&sprintf.assuming("%x")); dd @a | 20:14 | |
camelia | ["9", "a", "b", "c"] | ||
lizmat | I wonder where the a b c come from ? | ||
nine | those numbers in hex | ||
lizmat | aaaahhh ... "%x" :- | 20:15 | |
) | |||
nine: RakuAST::Term::Name.new(RakuAST::Name.from-identifier("param.2")) | 20:16 | ||
20:18
bisectable6 joined
|
|||
bisectable6 | lizmat, There are 10 candidates for the first “new” revision. See the log for more details | 20:18 | |
lizmat | eh... :-) | ||
bisectable6: old=2024.08 my @a = (9..12).map(&sprintf.assuming("%x")); dd @a | |||
bisectable6 | lizmat, On both starting points (old=2024.08 new=26a9c1a) the exit code is 0 and the output is identical as well | ||
lizmat, Output on both points: «["9", "a", "b", "c"]» | |||
lizmat | bisectable6: old=2024.08 my @a = (9..12).map(&sprintf.assuming("%x")); dd @a | 20:19 | |
bisectable6 | lizmat, On both starting points (old=2024.08 new=26a9c1a) the exit code is 0 and the output is identical as well | ||
lizmat, Output on both points: «["9", "a", "b", "c"]» | |||
lizmat | bisectable6: old=2024.01 my @a = (9..12).map(&sprintf.assuming("%x")); dd @a | ||
bisectable6 | lizmat, Bisecting by output (old=2024.01 new=26a9c1a) because on both starting points the exit code is 0 | ||
lizmat, bisect log: gist.github.com/f65affb2045f1c85e8...5af5601528 | |||
lizmat, (2024-05-18) github.com/rakudo/rakudo/commit/0a...0683b6afac | |||
lizmat | nine: the param.2 is a generated name to be able to refer to the nameless capture in the proto of sprintf | 20:20 | |
the deparsed code is: proto sub assumed.sprintf (|param.2) { self("\%x", |param.2) | 20:21 | ||
where self refers to the invocant of .assuming | |||
the RakuAST::Term::Name thing was inspired by: | 20:25 | ||
m: say Q/sub a(|c) { a |c }/.AST.statements.head.expression.body.statement-list.statements.head.expression.args | 20:26 | ||
camelia | RakuAST::ArgList.new( RakuAST::ApplyPrefix.new( prefix => RakuAST::Prefix.new("|"), operand => RakuAST::Term::Name.new( RakuAST::Name.from-identifier("c") ) ) ) |
||
lizmat | nine: if the use of RakuAST::Term::Name is wrong there, please advise what it should be :-) | 20:28 | |
nine | looks legit | 20:30 | |
Though "param.2" is not exactly a valid identifier, I don't think that matters | |||
20:37
librasteve_ left
|
|||
lizmat | I specifically chose to create an invalid identifier to prevent collisions with actual identifiers | 20:38 | |
and within the context of that sub, it shouldn't matter, I think ? | |||
20:40
Altai-man joined
|
|||
nine | As I said, I don't think it matters | 20:41 | |
lizmat | right | ||
20:41
sena_kun left
|
|||
lizmat | afk& | 20:49 | |
21:59
finanalyst joined
22:08
Altai-man left
22:09
sena_kun joined
22:43
finanalyst left
23:46
sena_kun left
|