🦋 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. |
|||
01:38
MasterDuke joined
|
|||
MasterDuke | here's an interesting situation | 01:39 | |
m: q|my $১০kinds;|.EVAL; CATCH { dd $_ } | |||
camelia | X::Syntax::Variable::Numeric.new(what => "variable", pos => 6, filename => "/home/camelia/EVAL_0", line => 1, directive-filename => Any, column => Any, modules => [], is-compile-time => 1, pre => "my \$১০", post => "kinds;", highexpect => []) ==… |
||
MasterDuke | m: q|my $১০kinds;|.AST.EVAL; CATCH { dd $_ } | 01:40 | |
camelia | X::Syntax::Confused.new(reason => "Two terms in a row", pos => 4, filename => "/home/camelia/EVAL_0", line => 1, directive-filename => Any, column => Any, modules => [], is-compile-time => Bool::True, pre => "my \$", post => "১০kinds;", highexpect… | ||
MasterDuke | it looked like an easy fix. add the missing `[<?{ $*IN-DECL }> <.typed-panic: "X::Syntax::Variable::Numeric">]?` to `token variable`, so it looks identical to the legacy version | 01:41 | |
but that didn't change anything. and then i noticed the error is coming from `eat-terminator`. it looks like it goes straight through <statementlist> and then dies in <eat-terminator> | 01:44 | ||
Geth | ¦ problem-solving: clsn assigned to samcv Issue Regex matching and combining characters github.com/Raku/problem-solving/issues/471 | 01:45 | |
MasterDuke | ah, the legacy version of `token variable` has a different ordering of the alternations | 01:52 | |
it uses `|` for the alternations, which is LTM, so you would think the order doesn't matter...but let's try re-ordering to be the same as legacy... | 01:54 | ||
02:17
MasterDuke left
04:19
codesections joined
04:34
codesections left,
codesections1 joined,
codesections1 left
04:35
codesections joined
04:55
codesections left
04:56
codesections joined
05:22
codesections left
06:35
JimmyZhuo joined
|
|||
JimmyZhuo | nine: 'class D { method d { $!d = 1 }};' vs 'role E { method e { $!e = 1 }}' , the Raku Action performs a '$COMPUNIT.check($RESOLVER)' for the 'class D', but didn't for 'Role E', I added 'RakuAST::Var::Attribute' check to RakuAST::Var::Attribute, and it's only works for the 'class D', How to make | 06:42 | |
it works for role ? | |||
I added 'X::Attribute::Undeclared' check to RakuAST::Var::Attribute | 06:43 | ||
06:53
JimmyZhuo left
|
|||
nine | JimmyZhuo: I'm confused. The CompUnit's check should always be called - unless there was a panic before we get there | 06:59 | |
tellable6 | nine, I'll pass your message to JimmyZhuo | ||
nine | I'm working on a problem where a Seq contained in a List gets consumed prematurely when the List is destructured by a for loop. | 07:38 | |
The problem comes from List's Capture coercer method. It contains this loop: | 07:39 | ||
nqp::istype(($v := nqp::atpos($!reified, $i)),Pair) ?? nqp::bindkey($hash, $v.key.Str, $v.value) !! nqp::push($list,$v) while nqp::islt_i(++$i,$elems) | |||
The Seq gets consumed because the ternary here gets sunk and nqp::push returns the pushed value. Thus the value (our Seq) gets sunk which makes it consume the iterator its based on. | 07:40 | ||
Now my real problem is: I think that's entirely correct behavior. | |||
m: my $i = 2; class Foo { method sink() { say "{self.^name} sank" } }; class Bar is Foo { }; $i > 1 ?? Foo.new !! Bar.new while $i-- | 07:44 | ||
camelia | Bar sank Bar sank |
||
nine | This ^^^ seems to agree with me. | ||
But for some reason: | 07:45 | ||
m: my $i = 3; class Foo { method sink() { say "{self.^name} sank" } }; use nqp; my $l := nqp::list; class Bar is Foo { }; $i > 1 ?? nqp::push($l, Foo.new) !! nqp::push($l, Bar.new) while $i-- | |||
camelia | ( no output ) | ||
nine | m: use nqp; say nqp::push(nqp::list, "pushed") | 07:46 | |
camelia | pushed | ||
nine | The QAST does know that it should be sunk: - QAST::Op(while) <sunk> :statement_id<12> $i > 1 ?? nqp::push($l, Foo.new) !! nqp::push($l, ... | 07:48 | |
And: - QAST::Op(if &infix:<??>) <sunk okifnil> ?? nqp::push($l, Foo.new) !! | |||
08:02
finanalyst joined
|
|||
Geth | rakudo/main: 02e32a22ea | (Stefan Seifert)++ | src/Raku/ast/signature.rakumod RakuAST: don't create implicit slurpy hash when there's a capture parameter In method foo(|c) the c parameter already slurps all named args. There's no need for an implicit *%_ in such cases, so we can avoid the effort of setting it up. |
08:54 | |
rakudo/main: 773f9b9793 | (Stefan Seifert)++ | 2 files RakuAST: don't sink expressions with loop modifiers For unknown reason we must not sink the bodies of loops created from statement modifiers. This restriction may not even have been intentional, but it's certainly being relied upon by code in the setting like this from List.Capture: ... (8 more lines) |
|||
nine | Well, I guess it's just yet another one of these thousands of rules. | ||
08:58
sena_kun joined
09:49
JimmyZhuo joined
|
|||
JimmyZhuo | $ RAKUDO_RAKUAST=1 ./rakudo-m --ll-exception -e 'role E { method e { $!e = 1 }};' | 10:04 | |
No $!e attribute in E | |||
at src\Perl6\Metamodel\AttributeContainer.nqp:91 (E:\OpenSource\Rakudo\blib/Perl6/Metamodel.moarvm:get_attribute_for_usage) | |||
from src\Raku\ast\variable-access.rakumod:303 (E:\OpenSource\Rakudo\blib/Perl6/BOOTSTRAP/v6c.moarvm:IMPL-EXPR-QAST) | |||
from src\Raku\ast\expressions.rakumod:58 (E:\OpenSource\Rakudo\blib/Perl6/BOOTSTRAP/v6c.moarvm:IMPL-TO-QAST) | |||
tellable6 | 2025-03-18T06:59:25Z #raku-dev <nine> JimmyZhuo: I'm confused. The CompUnit's check should always be called - unless there was a panic before we get there | ||
JimmyZhuo | nine: for role: IMPL-EXPR-QAST is executed before check | 10:05 | |
lizmat | JimmyZhuo: that feels.. valid | ||
? | |||
JimmyZhuo | nine: and for class, check is excuted before IMPL-EXPR-QAST | ||
lizmat | I mean, the error | ||
Geth | rakudo/main: ee50ab5be3 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp RakuAST: Fix stupid copy-pasto in exception class naming The name of the class is **without** .new! Fixes #5798 |
10:08 | |
JimmyZhuo | lizmat: not for consistency | 10:09 | |
Geth | rakudo/main: c5fa7bb363 | (Elizabeth Mattijsen)++ | t/12-rakuast/highlight.rakutest RakuAST: fix highlighting test |
10:15 | |
rakudo/main: fba808c224 | (Elizabeth Mattijsen)++ | src/Raku/ast/resolver.rakumod RakuAST: make fallback error handling more informative Since the name of the exception that was attempted to be resolved is known, show that. That would have helped a *lot* when trying to fix #5798 :-( |
10:26 | ||
JimmyZhuo | nine: I found the problem: the IMPL-COMPOSE of RakuAST::Role calls IMPL-FINISH-ROLE-BODY, which calls IMPL-QAST-BLOCK before checktime, while RakuAST::Class does not. so I can't do the check for role | 10:38 | |
but I don't know how to deal it | |||
lizmat | bisectable6: old=2025.01 say Q|my role A { has $.a = 42 }|.AST.statements[0].expression | 10:41 | |
bisectable6 | lizmat, Bisecting by output (old=2025.01 new=fba808c) because on both starting points the exit code is 0 | ||
lizmat, bisect log: gist.github.com/a45b5a4d174eca9d61...23f29878a7 | |||
lizmat, (2025-03-05) github.com/rakudo/rakudo/commit/00...58d63c9e14 | |||
nine | JimmyZhuo: CHECK should not have any influence on IMPL-QAST-BLOCK and vice versa. | 10:46 | |
JimmyZhuo: however it's possible that IMPL-QAST-BLOCK fails because of a condition that you'd report as error in PERFORM-CHECK. That sucks and my only solution there is to try to detect it in IMPL-QAST-BLOCK and fail gracefully. | 10:47 | ||
lizmat: oh that superfluous .new looks super devious. Confusing for sure | 10:52 | ||
lizmat: in the bootstrap-rakuast branch the exception type fallback is already implemented :/ | 10:53 | ||
lizmat | sorry about that... | 10:54 | |
11:03
finanalyst left
|
|||
lizmat | nine: did you look / fix the problems with "make test" t/12rakuast tests in the bootstrapped version ? | 11:25 | |
feels like I'm going to be in your way :-( | |||
nine | Haven't looked at make test in quite a while | 11:28 | |
lizmat | ok, the role one is baffling me... the other ones I can work on, fwiw | 11:29 | |
m: use lib "lib"; use NativeCall::Compiler::GNU; use NativeCall::Compiler::MSVC; say NativeCall::.keys | 11:30 | ||
camelia | (Compiler Types) | ||
lizmat | hmmm... for me, that says (Compiler) locally | ||
m: use NativeCall::Compiler::GNU; use NativeCall::Compiler::MSVC; say NativeCall::.keys | 11:31 | ||
camelia | (Compiler Types) | ||
lizmat | probably because "use lib 'lib'" doesn't work for Camelia, and thus gets the installed versions, and that *does* supply NativeCall::Types | 11:32 | |
but should it ? | |||
nine | You sure you want to dig into that particular cluster fuck? :D | 11:38 | |
Importing module symbols is lexical - except when it isn't | |||
lizmat | yeah... I'll just add a "use NativeCall::Types" to the test file | 11:40 | |
Geth | rakudo/main: f646c5a244 | (Stefan Seifert)++ | 2 files RakuAST: fix missing condition modifier on statements with loop modifiers Commit 95f6c5b4e9697d6a2fc66ade32d2333d375e0ac8 made us omit condition modifiers on statements that also carry loop modifiers as the condition would be handled inside the thunk. For StatementModifier::WhileUntil however we do not thunk in certain conditions. Then we do have to wrap the expression in the condition modifier. Fixes: foo unless bar while baz; |
||
lizmat | nine: a gist about the role issue: gist.github.com/lizmat/4b7fb14673c...e23c98d136 | 11:41 | |
nine | 1237 fully bootstrapped | ||
lizmat: so apparently a RakuAST::Parameter did not get its begin time | 11:43 | ||
lizmat | there is no parameter? | 11:44 | |
unless maybe implicit in the role parameterization ? | |||
I mean, the role body is transmogrified into a sub, no ? | 11:45 | ||
nine | RakuAST::RoleBody isa RakuAST::Sub | ||
The signature at least has the ::$?CLASS capture | |||
lizmat | but is that something that you would need to specify in programmatically creating a role ? | 11:46 | |
Geth | rakudo/main: f9dd316561 | (Elizabeth Mattijsen)++ | t/04-nativecall/24-cpp_param_letter.t Make test always work Apparently the test file depends on NativeCall::Types being implicitely imported, but sometimes it apparently isnt't. Add a "use NativeCall::Types" to make sure the necessary stuff is always known |
11:47 | |
nine | Btw. since I notice that I do complain about Raku a lot lately. The lexical import cluster fuck I mentioned is on me. When I implemented lexical module loading I really had no idea what I was doing. I took it as far as I could without having to ask the hard questions and that's where we are now. | 11:49 | |
lizmat | right, understood, and I won't hold it against you: on the contrary | 11:50 | |
only people that actually make things, make mistakes | |||
hopefully we learn from them :-) | |||
nine | Well I took the lesson to heart and stay far away from language design =) Precicely because it's so hard to anticipate all implications | 11:51 | |
Geth | rakudo/main: 69dc86fa5a | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/Deparse.rakumod RakuAST: fix deparsing of 3²² The power value is the real thing already and doesn't need additional deparsing. |
12:04 | |
rakudo: zhuomingliang++ created pull request #5820: Throw X::Attribute::Undeclared, pass the test of "class D { method d { $!e = 1 }};" |
12:15 | ||
lizmat | bisectable6: old=2025.02 say Q|s/o/x/|.AST.EVAL | 12:17 | |
bisectable6 | lizmat, On both starting points (old=2025.02 new=69dc86f) the exit code is 1 and the output is identical as well | ||
lizmat, Output on both points: «Use of uninitialized value $_ of type Any in string context.Methods .^name, .raku, .gist, or .say can be used to stringify it to something meaningful. in block <unit> at EVAL_0 line 1===SORRY!===Unknown compilation input 'qast'» | |||
lizmat | bisectable6: old=2025.01 say Q|s/o/x/|.AST.EVAL | ||
bisectable6 | lizmat, Bisecting by exit code (old=2025.01 new=69dc86f). Old exit code: 0 | ||
lizmat, bisect log: gist.github.com/f655b3f481ad15438e...68993d070a | |||
lizmat, (2025-02-16) github.com/rakudo/rakudo/commit/cd...da2f4ac311 | |||
Geth | rakudo/bootstrap-rakuast: 27 commits pushed by (Stefan Seifert)++ review: github.com/rakudo/rakudo/compare/1...094f5f66ba |
||
nine | 1244 fully bootstrapped. That's exactly the state of 2 weeks ago :) | 12:18 | |
lizmat | nine: is say Q|s/o/x/|.AST.EVAL something that's fixed on the bootstrapped version ? | ||
cd2ed227be broke t/12-rakuast/regex-substitution.rakutest | 12:19 | ||
linkable6 | (2025-02-16) github.com/rakudo/rakudo/commit/cd2ed227be RakuAST: work around "Misordered regex compilation" problem | ||
JimmyZhuo | nine++ for the hard work | ||
nine | rakudo (bootstrap-rakuast *<>)> RAKUDO_RAKUAST=1 ./rakudo-m -e 'say Q|s/o/x/|.AST.EVAL' | 12:20 | |
Type check failed in assignment to $grammar; expected Mu but got Raku::Grammar (Raku::Grammar.new() ...) | |||
lizmat | and without RAKUDO_RAKUAST=1 ? | ||
nine | Can't run the bootstrapped version without RAKUDO_RAKUAST=1: Missing or wrong version of dependency 'gen/moar/BOOTSTRAP/v6c.nqp' (from 'gen/moar/CORE.c.setting') | 12:21 | |
That grammar error comes even with Q||.AST.EVAL | |||
lizmat | ack | 12:22 | |
I'm just going through the "make test" errors, making sure "make test" gets clean before the release on Sun | 12:23 | ||
perhaps we should disable the tests that are failing atm, and re-instate them after the bootstrapped version becomes main ? | 12:24 | ||
bisectable6: old=2025.01 my $foo; say Q|++$foo while $foo < 5|.AST.EVAL | 12:25 | ||
bisectable6 | lizmat, On both starting points (old=2025.01 new=69dc86f) the exit code is 0 and the output is identical as well | ||
lizmat, Output on both points: «Use of uninitialized value of type Any in numeric contextNil in block <unit> at EVAL_0 line 1» | |||
lizmat | heh | ||
bisectable6: old=2024.08 my $foo; say Q|++$foo while $foo < 5|.AST.EVAL | |||
bisectable6 | lizmat, On both starting points (old=2024.08 new=69dc86f) the exit code is 0 and the output is identical as well | ||
lizmat, Output on both points: «Use of uninitialized value of type Any in numeric contextNil in block <unit> at EVAL_0 line 1» | |||
lizmat | m: my $foo; say Q|++$foo while $foo < 5|.AST.EVAL; say $foo | 12:27 | |
camelia | Use of uninitialized value of type Any in numeric context Nil 5 in block <unit> at EVAL_0 line 1 |
||
lizmat | so it does work, just produces a warning somewhere | 12:28 | |
nine | As it should. After all $foo is uninitialized when entering the loop, yet we are doing a numeric comparison on it | 12:30 | |
Geth | rakudo/main: a2f7c1aa7c | (Elizabeth Mattijsen)++ | t/12-rakuast/statement-mods.rakutest RakuAST: remove unwanted Statement::Expression Apparently in an older version of the Raku Grammar this was needed for the statement modifier, but not anymore. A nice simplification! |
12:32 | |
lizmat | nine: right | ||
nine | Huh...that's an odd one. From the very commit introducing RakuAST::StatementModifier it has taken a RakuAST::Expression (which a Statement::Expression isn't) | 12:36 | |
lizmat | well, the grammar doesn't create it (anymore) | 12:41 | |
m: my $foo; say Q|++$foo while $foo < 5|.AST.statements[0].loop-modifier | |||
camelia | RakuAST::StatementModifier::While.new( RakuAST::ApplyInfix.new( left => RakuAST::Var::Lexical.new("\$foo"), infix => RakuAST::Infix.new("<"), right => RakuAST::IntLiteral.new(5) ) ) |
||
lizmat | bisectable6: old=2025.01 my $foo; say Q|++$foo while $foo < 5|.AST.statements[0].loop-modifier | 12:53 | |
bisectable6 | lizmat, On both starting points (old=2025.01 new=69dc86f) the exit code is 0 and the output is identical as well | ||
lizmat, Output on both points: «RakuAST::StatementModifier::While.new( RakuAST::ApplyInfix.new( left => RakuAST::Var::Lexical.new("\$foo"), infix => RakuAST::Infix.new("<"), right => RakuAST::IntLiteral.new(5) ))» | |||
lizmat | bisectable6: old=2024.08 my $foo; say Q|++$foo while $foo < 5|.AST.statements[0].loop-modifier | ||
bisectable6 | lizmat, On both starting points (old=2024.08 new=69dc86f) the exit code is 0 and the output is identical as well | ||
lizmat, Output on both points: «RakuAST::StatementModifier::While.new( RakuAST::ApplyInfix.new( left => RakuAST::Var::Lexical.new("\$foo"), infix => RakuAST::Infix.new("<"), right => RakuAST::IntLiteral.new(5) ))» | |||
lizmat | ok, apparently a long time ago already | ||
bisectable6: old=2025.01 say Q|my $a is default(42)|.AST.DEPARSE | 12:54 | ||
bisectable6 | lizmat, Bisecting by output (old=2025.01 new=69dc86f) because on both starting points the exit code is 0 | ||
lizmat, bisect log: gist.github.com/82812fd829ca6c4270...397a291833 | |||
lizmat, (2025-03-16) github.com/rakudo/rakudo/commit/51...43cf7fbf7b | |||
lizmat | aha, self inflicted :-) | ||
Geth | rakudo/main: 9f58a3420e | (Jimmy Zhuo)++ (committed using GitHub Web editor) | src/Raku/ast/variable-access.rakumod throw X::Attribute::Undeclared, pass the test of "class D { method d { $!e = 1 }};" (#5820) |
12:57 | |
rakudo/main: b6346aad0b | (Elizabeth Mattijsen)++ | src/core.c/RakuAST/Deparse.rakumod RakuAST: fix deparsing of traits with argument If the argument is already some sort of expression with parentheses, don't add any extra ones. This is just for readability, as the extra parentheses would be ignore on parsing anyway |
13:00 | ||
[Coke] | Getting close to release day. | ||
Going to kick off final blin run this afternoon | |||
lizmat | [Coke]: working on making "make test" clean | ||
[Coke]: if you could make an issue for the result of the blin run, that would help tremendously | 13:01 | ||
the gist only is just too noisy | 13:02 | ||
[Coke] | Yes, sorry about that. | ||
Were you able to address any issues in that one or no? | |||
(the problem is the markdown is enormous and you have to cut a lot of it, but not the helpful parts.) | 13:03 | ||
It'll take a day to run the next one, I'll convert that gist into a ticket after kicking off another round. | |||
lizmat | timo++ found an assuming / precomp bug in there that probably hit a number of modules that has been fixed now | 13:04 | |
so I'm expecting a cleaner blin run in that respect | |||
13:04
rakkable left
13:05
rakkable joined
|
|||
Geth | rakudo/main: cc2e941981 | (Stefan Seifert)++ | 2 files RakuAST: ensure all routines (and mainline) have $¢ Previously we declared it only in regex declarations, but apparently its also available for normal regex expressions. Fixes: my $c; 'abc' ~~ /.{ $c = $¢ }/ |
13:05 | |
lizmat | rakkable: eco-pro .assuming | 13:06 | |
rakkable | lizmat, Running: eco-provides .assuming, please be patient! | ||
lizmat, Found 65 lines in 44 files (32 distributions): | |||
lizmat, gist.github.com/3fbdbdc7558168a7de...ab4d8b908e | |||
lizmat | [Coke]: ^^ potential blin errors fixed | ||
Geth | rakudo/bootstrap-rakuast: 27 commits pushed by (Stefan Seifert)++ review: github.com/rakudo/rakudo/compare/7...0ec541045d |
||
nine | 1245 | ||
lizmat | bisectable6: old=2025.01 say Q|my @matrix[2;2]; @matrix["0"; "0"] = 42|.AST.EVAL | 13:09 | |
bisectable6 | lizmat, Bisecting by exit code (old=2025.01 new=69dc86f). Old exit code: 0 | ||
lizmat, bisect log: gist.github.com/3dd62355e3635291bc...b319524c8c | |||
lizmat, (2025-03-09) github.com/rakudo/rakudo/commit/d6...c4ff433979 | |||
lizmat | d6d3859 an example of a not so good commit message | 13:11 | |
nine | indeed | 13:12 | |
Sadly by the time I committed I didn't know anymore in what specific case this helped. Came up as a bootstrap workaround | 13:14 | ||
13:14
JimmyZhuo left
|
|||
lizmat | nine: we all are in such a situation every now and then | 13:21 | |
fwiw, reverting that makes my @matrix[2;2]; @matrix["0"; "0"] = 42 work again | 13:22 | ||
nine | m: my @matrix[2;2]; @matrix["0"; "0"] = 42 | 13:24 | |
camelia | Partially dimensioned views of shaped arrays not yet implemented. Sorry. in block <unit> at <tmp> line 1 |
||
nine | Apparently it's not even supposed to work? | ||
lizmat | m: use v6.e.PREVIEW; my @matrix[2;2]; @matrix["0"; "0"] = 42 | ||
camelia | Partially dimensioned views of shaped arrays not yet implemented. Sorry. in block <unit> at <tmp> line 1 |
||
lizmat | huh? | ||
nine | Fails in exactly the same way with RakuAST for me | 13:25 | |
Geth | rakudo/bootstrap-rakuast: afa24ab4d7 | (Stefan Seifert)++ | src/core.e/Grammar.rakumod RakuAST: fix "Could not find symbol '&Compiler' in 'Grammar::HLL'" Need to load NQP modules explicitly. |
||
nine | That's 1248 | ||
lizmat | #1297 | ||
nine | And no, I really don't know why we need to load NQP modules explicitly in the setting with RakuAST. Or rather why we don't with the old compiler. | ||
lizmat | github.com/rakudo/rakudo/issues/1297 | ||
m: my @matrix[2;2]; @matrix[0; 0] = 42 | 13:28 | ||
camelia | ( no output ) | ||
lizmat | it's the stringiness of the arguments that caused the NYI error to be shown | ||
$ RAKUDO_RAKUAST=1 raku -e 'my @matrix[2;2]; @matrix["0"; "0"] = 42; dd @matrix' | 13:31 | ||
Array.new(:shape(2, 2), [42, Any], [Any, Any]) | |||
weird | |||
nine | Apparently works as intended when going through infix:<=> but not with whatever IMPL-ASSIGN-OP generates | 13:34 | |
lizmat | m: my %h{Int}; say %h.of | 13:38 | |
camelia | (Any) | ||
lizmat | m: my %h; say %h.of | ||
camelia | (Mu) | ||
lizmat | that feels... inconsistent ? | ||
I guess that's one of the things we thought we fixed in RakuAST, but in the end didn't | 13:39 | ||
m: say Q|my %h{Int}; %h.of|.AST.EVAL | 13:40 | ||
camelia | (Any) | ||
lizmat | bisectable6: old=2025.01 say Q|my %h{Int}; %h.of|.AST.EVAL | ||
bisectable6 | lizmat, Bisecting by output (old=2025.01 new=69dc86f) because on both starting points the exit code is 0 | ||
lizmat, bisect log: gist.github.com/8905793bb6a7a59b4a...f880d8e510 | |||
lizmat, (2025-03-02) github.com/rakudo/rakudo/commit/24...a06f87e7bb | |||
lizmat | discussion at github.com/rakudo/rakudo/issues/5419 | 13:41 | |
nine: suggest we revert 24bde349 and fix the spectest | 13:43 | ||
nine | Do we know whether this affects other spectests? | ||
lizmat | sadly the commit message doesn't mention the commit that changed the default originally | 13:45 | |
lizmat goes afk for a few hours& | 13:49 | ||
nine | It's commit 93e96b44e1b9d97efb388d376ad4d3bceb4176c6 | 13:51 | |
releasable6 | Next release in ≈4 days and ≈3 hours. There are no known blockers. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft | 15:00 | |
15:21
MasterDuke joined
|
|||
MasterDuke | i don't remember. is it at all possible to get the name of the variable holding the object from a class's method? | 15:21 | |
m: class A { method a { say self.VAR.name } }; my $b = A.new; $b.a # e.g., i want it to print '$b' | 15:22 | ||
camelia | No such method 'name' for invocant of type 'A'. Did you mean any of these: 'are', 'none', 'note', 'take'? in method a at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
nine | How could that work? It's perfectly fine to have multiple variables contain the same object | 15:26 | |
MasterDuke | well, for what i want to use it for a list of name would be fine | 15:28 | |
m: class A { method a(\b:) { say b.VAR.name } }; my $b = A.new; $b.a | 15:29 | ||
camelia | $b | ||
nine | Honestly this sounds like a "if you need that, you want the wrong thing in the first place" | 15:34 | |
MasterDuke | just more context in error/warn messages | 15:35 | |
nine | JimmyZhuo: somehow commit 9f58a3420e978acd3f001236c31caf481fc63e98 regressed t/spec/S12-attributes/class.t | 15:43 | |
tellable6 | nine, I'll pass your message to JimmyZhuo | ||
linkable6 | (2025-03-18) github.com/rakudo/rakudo/commit/9f58a3420e throw X::Attribute::Undeclared, pass the test of "class D { method d { $!e = 1 }};" (#5820) | ||
nine | I guess it's because it causes the class to get composed before we add the methods to the package | 15:44 | |
Geth | rakudo/main: 507584f3ca | (Stefan Seifert)++ | 2 files RakuAST: ensure sink is calculcated when generating QAST for subs/methods We really need to have sink calculated before we generate QAST as it can gravely affect compilation output, by e.g. turning lazy loops into eager ones. In normal compilation flow this isn't an issue, but of course routines can be called at BEGIN time which means we also generate the QAST before CHECK time (at which we normally would calculate sink). So force calculation when we generate QAST. We already did so before but just for role bodies (as those are always compiled at BEGIN time). Now we extend that to all subs and methods. |
15:48 | |
nine | 1250 | ||
15:55
MasterDuke left
|
|||
[Coke] | ~. | 16:04 | |
~ | |||
16:32
codesections joined
|
|||
lizmat | accidentally ran into this: | 16:47 | |
m: my %h{Str(Eny)} | |||
camelia | ===SORRY!=== Cannot find method 'value' on object of type QAST::Op |
||
lizmat | m: my %h{Str(Any)} | ||
camelia | ( no output ) | ||
lizmat | m: my %h; %h<a> = 5 | 6; say %h<a> == 5 | 16:59 | |
camelia | any(True, False) | ||
lizmat | m: my %h{Str}; %h<a> = 5 | 6; say %h<a> == 5 | ||
camelia | Type check failed for an element of %h; expected Any but got Junction (any(5, 6)) in block <unit> at <tmp> line 1 |
||
16:59
codesections left
|
|||
lizmat | that's why I think the default constraint should be Mu for typed hashes, like it is for normal hashes | 17:00 | |
it shouldn't make a difference whether a Hash is typed or not | |||
nine | But what about the autoviv Typed hash problem? | 17:02 | |
lizmat | that was a commit from 2013 | 17:03 | |
I can't even find that code anymore in World, at least | |||
I mean, in Actions duh | 17:04 | ||
:{ } is the alternate syntax for creating object hashes | 17:09 | ||
m: say :{ a => 5 | 6 }<a> == 5 | 17:10 | ||
camelia | any(True, False) | ||
lizmat | there it *does* work | ||
17:27
finanalyst joined
|
|||
lizmat | nine: looks like the last commit made us lose: t/spec/S12-attributes/class.t | 17:51 | |
No such method 'z-thunk' for invocant of type 'RT130748d' | |||
in block <unit> at t/spec/S12-attributes/class.t line 161 | |||
nine | No it's 9f58a3420e978acd3f001236c31caf481fc63e98 | 17:53 | |
linkable6 | (2025-03-18) github.com/rakudo/rakudo/commit/9f58a3420e throw X::Attribute::Undeclared, pass the test of "class D { method d { $!e = 1 }};" (#5820) | ||
lizmat | hehe, indeed, sorry old news :-) | 17:58 | |
Geth | roast: b3429ef625 | (Elizabeth Mattijsen)++ | S09-typed-arrays/hashes.t Assume Hash.of alwaysi defaults to Mu Commit 7b7bab4a6c in 2013 assumed Any, as a follow up of github.com/rakudo/rakudo/commit/93e96b44e1b9d9 . However, since then a lot has happened, and an inconsistency has crept in: ... (20 more lines) |
18:07 | |
rakudo/main: d1466f7397 | (Elizabeth Mattijsen)++ | src/Raku/ast/variable-declaration.rakumod Revert "RakuAST: make default value type of shaped hashes Any instead of Mu" This reverts commit 24bde349be3938d39c2e6e4421f88ea06f87e7bb. The original situation on RakuAST was correct, the test that instigated this commit has been corrected. |
18:08 | ||
18:30
finanalyst left
|
|||
lizmat | bisectable6: old=2025.01 my num @a = -Inf .. 0e0; dd @a | 18:40 | |
bisectable6 | lizmat, On both starting points (old=2025.01 new=d1466f7) the exit code is 0 and the output is identical as well | 18:41 | |
lizmat, Output on both points: «num = array[num].new()» | |||
lizmat | ok, this is getting weird: | 18:44 | |
m: my num @a = 1e0,2e0; @a = -Inf..0e0; dd @a # oddly enough doesn't throw, but doesn't re-initialize @a either | 18:46 | ||
camelia | num = array[num].new(1e0, 2e0) | ||
lizmat | m: use Test; my num @a = 1e0,2e0; throws-like { @a = -Inf..0e0 }, Exception, "foo" # but inside a throws-like, it throws ?? | 18:48 | |
camelia | # Subtest: foo 1..2 ok 1 - code dies ok 2 - right exception type (Exception) ok 1 - foo |
||
Geth | rakudo: MasterDuke17++ created pull request #5821: Add variable name if possible to warning about use of uninitialized numeric |
19:29 | |
rakudo/main: ef38f301a8 | (Stefan Seifert)++ | src/Raku/ast/term.rakumod RakuAST: hllize the result of topic calls Method calls may call into foreign languages, so we need to hllize their results. We already did this for normal method calls. Topic calls were left out till now. Fixes: .foo.raku # When .foo returns a BOOTHash |
20:45 | ||
nine | 1251 | ||
A bunch of spectests in S06-currying fail due to .assuming issues | 20:48 | ||
on bootstrap | |||
Geth | rakudo/main: 9d7abd04ad | (Stefan Seifert)++ | src/Raku/ast/statement-mods.rakumod RakuAST: fix missing condition on statements with a given modifier Similar to commit f646c5a244295c9f3336858c8de0afb3b41a6ae3 Same fix was needed for StatementModifier::Given Fixes: say $_ if $_ > 3 given 1 # to not say |
21:52 | |
nine | 1259 fully bootstrapped. | ||
Would be 1261, but t/spec/S32-list/categorize.t and t/spec/S32-list/classify.rakudo.moar suddenly fail (even on non-bootstrapped) | 21:53 | ||
lizmat: I think that revert is responsible | |||
22:46
sena_kun left
|
|||
lizmat | ok, will look | 22:55 | |
hmmm... how can that revert affect the legacy grammar ? | 22:56 | ||
ah, misunderstood | 22:57 | ||
nine: confirmed it is the revert... but I will sleep on whether to change the test, or the way categorize and classify create their object hashes | 23:15 | ||
so will look at that tomorrow | |||
well, actually later today :-) | 23:16 |