🦋 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.
00:00 reportable6 left 00:03 reportable6 joined 01:25 kurahaupo left 01:30 kurahaupo joined 01:42 kurahaupo left 01:47 kurahaupo joined 03:20 kurahaupo left 03:25 kurahaupo joined 04:24 kurahaupo left 04:29 kurahaupo joined 05:04 kurahaupo left 05:08 kurahaupo joined 05:10 kurahaupo left 05:15 kurahaupo joined 05:19 kurahaupo left 05:21 japhb joined 05:24 kurahaupo joined 05:26 kurahaupo left 05:31 kurahaupo joined 06:00 reportable6 left 06:01 reportable6 joined 06:33 kurahaupo left 06:38 kurahaupo joined 07:38 linkable6 left, evalable6 left 07:40 linkable6 joined 07:41 evalable6 joined 08:33 sena_kun joined 09:17 samcv left 09:18 samcv joined 09:49 kurahaupo left 09:54 kurahaupo joined
Geth rakudo/main: 563addbb92 | (Elizabeth Mattijsen)++ | src/core.c/Exception.pm6
Make unknown method calls on strings mention the string

This makes it easier to trace errors, specifically with RakuAST's
  "visit-children" being called on a Str, when it should have been
a RakuAST::StrLiteral
10:34 ab5tract joined
Geth rakudo/main: c3df563b1f | (Elizabeth Mattijsen)++ | src/core.e/Formatter.pm6
Another round of Formatter tweaks

  - makes S32-str/sprintf.t run all its tests without throwing
  - fixes issues with using type objects as values
  - fixes issues with Inf / -Inf as values
ugexe I managed to get naive support for long paths on windows sort of working. Rakudo builds and installs modules, and I can create and stat directories with long names. However, my work is all a mess of hacks void of any cohesiveness so I’m not sure it’s useful for anything other than confirming it can work but will be kind of a slog to implement cleanly 11:43
Now I think it might be easier to implement the path normalizing logic in nqp or moarvm since that doesn’t invoke e.g. CUR path specs and whatnot 11:44
s/invoke/involve/ 11:45
basically just: is it a windows system, is it an absolute path? If yes to both then prefix the path with \\?\ and change all / to \ 11:46
12:00 reportable6 left, reportable6 joined
Geth rakudo/main: d3372c8d11 | (Stefan Seifert)++ | 4 files
RakuAST: support traits on signature declarations
nine Much harder to get right than expected but oh boy was it worth it! 872 passing spectest files :) 12:50
lizmat whee!
ugexe: that sounds eminently doable at the MoarVM level 12:51
ugexe: any idea of JVM would be coping with this? an nqp solution would help there as well, no?
nine m: my constant name = 'TestName'; class ::(name) { } # You gotta be kidding me 13:01
camelia ( no output )
lizmat m: my constant name = 'TestName'; dd class ::(name)
camelia ===SORRY!=== Error while compiling <tmp>
Unable to parse class definition
at <tmp>:1
------> ant name = 'TestName'; dd class ::(name)⏏<EOL>
expecting any of:
generic role
nine m: BEGIN my $foo = "Foo"; class ::($foo) { } # At least it's not you know...really smart 13:03
camelia ===SORRY!===
Name ::($foo) is not compile-time known, and can not serve as a package name
lizmat seems like something RakuAST will fix :-)
Geth rakudo/main: 40aa1605b7 | (Elizabeth Mattijsen)++ | src/core.c/Exception.pm6
Streamline X::Str::Sprintf::Directives::BadType

  - make it handle Mu as a value correctly
  - simplify value reporting in case of a type object
rakudo/main: 10cc908d9c | (Elizabeth Mattijsen)++ | src/core.e/Formatter.pm6
Make sure format is reported with Formatter errors
nine lizmat: IIRC you have introduced something that lets me check whether we have a compile time value? 13:14
lizmat .literalize
returns Nil if there is no compile-time value
13:16 kurahaupo left 13:21 kurahaupo joined
nine Why does it swallow all exceptions? That makes it harder to find the This element has not been resolved. Type: RakuAST::Term::Name 13:25
lizmat I wanted to make it an easy to use method
nine But this makes it less easy instead :) 13:26
lizmat well, for core developers perhaps?
nine I only get Nil instead of an esay to understand exception message
lizmat if it's about a RakuAST node that is not supported yet, you *will* get the class name 13:27
nine That does not require catching exceptions much less all of them. 13:28
lizmat if you have an expression with something variable in it, would you want the exception to be thrown? 13:29
that means that anytime you call .literalize, you will have to mind that it could throw
that felt LTA to me 13:30
nine Absolutely yes! I expected it to give me a literal. It didn't. With the exception swallowed I have to actually find and patch scary CORE setting code just to find out what went wrong. This is a problem especially for non-core developers. 13:31
lizmat why?
you ask an AST whether it could become a constant, Nil means it couldn't, and you go on with your business ? 13:32
nine And the error I got is a basic RakuAST mistake: I just tried to literalize a node without giving it a chance to resolve names first.
But it can become a constant. In fact it is my constant name. It doesn't get more constanty than that.
lizmat the other reason for catching the exceptions, is to be able to abort a multi-level deep expression without needing to backtrack 13:33
as we don't have gather/take there
nine backtrack? 13:35
lizmat { a => 42, b => { c => 137, d => $a } } 13:37
it would fail at the $a
or any level deeper
BTW, couldn't it be that just in Term::Name, it decided to throw Nil ? 13:39
because it couldn't resolve?
13:41 kurahaupo left
nine It can resolve. It just hasn't yet. Which is exactly what the exception would tell me. 13:43
lizmat wouldn't jnthn's work not prevent that issue?
nine no
13:46 kurahaupo joined
ugexe Lizmat: jvm and js backends should already just work. I haven’t tested that but that is my understanding after looking at a jvm source and the nodejs source 13:55
lizmat nine: well, if you want to work on the .literalize logic, be my guest 14:07
nine The whole thing turns into quite a mess quickly anyway. The correct canonicalization of names containing expressions requires us to evaluate to constant's values. This requires us to resolve the names contained in expressions contained in names. Since names are quite common in programming we need to do this pretty much right away. 14:15
Geth rakudo/main: b593dc9a89 | (Stefan Seifert)++ | 3 files
RakuAST: Support constant expressions as part of names
rakudo/main: 0df71cfc31 | (Stefan Seifert)++ | src/Raku/ast/variable-declaration.rakumod
RakuAST: actually apply traits to all variables in signature declarations

Trait nodes keep track of whether they have been applied to a target or not, so we must not share the same nodes across multiple targets.
16:39 notable6 left, unicodable6 left, reportable6 left, quotable6 left, benchable6 left, statisfiable6 left, greppable6 left, coverable6 left, committable6 left, bisectable6 left, evalable6 left 16:40 bisectable6 joined, benchable6 joined 16:41 quotable6 joined, coverable6 joined, unicodable6 joined, statisfiable6 joined, evalable6 joined, greppable6 joined 16:42 reportable6 joined, committable6 joined, notable6 joined 16:58 kurahaupo left 17:03 kurahaupo joined 17:05 kurahaupo left 17:15 kurahaupo joined 17:17 kurahaupo left 17:22 kurahaupo joined 17:30 ab5tract left 17:35 kurahaupo left 17:42 kurahaupo joined 18:00 reportable6 left 18:03 reportable6 joined 18:42 dogbert11 left 18:45 dogbert11 joined 19:26 dogbert17 joined 19:28 dogbert11 left 20:36 dogbert11 joined, dogbert17 left 20:42 dogbert17 joined 20:44 dogbert11 left 20:59 dogbert17 left 21:08 dogbert17 joined 21:18 dogbert11 joined 21:20 dogbert17 left 21:26 dogbert17 joined 21:28 dogbert11 left, dogbert11 joined 21:31 dogbert17 left 21:35 dogbert11 left 22:06 dogbert11 joined 22:16 dogbert11 left 22:26 dogbert11 joined 22:32 dogbert11 left 22:35 dogbert11 joined 23:35 evalable6 left, linkable6 left 23:36 evalable6 joined 23:38 linkable6 joined