00:26 sjn left 00:32 sjn joined 01:22 guifa_ joined 02:30 guifa_ left 02:36 guifa_ joined
Geth rakudo: ugexe++ created pull request #6312:
RakuAST: Don't iterate worries when promoting under fatal
03:08
rakudo: ugexe++ created pull request #6313:
RakuAST: Skip coercion types in the duplicate-multi check
rakudo: ugexe++ created pull request #6314:
RakuAST: Resolve an indirect `is ::Name` parent as a type
03:09
rakudo: ugexe++ created pull request #6315:
RakuAST: Allow a pseudo-package nested in a declared name
03:35
rakudo: ugexe++ created pull request #6316:
RakuAST: Report a leading pseudo-package cleanly instead of crashing
03:45
03:51 guifa_ left 04:57 Geth joined, lizmat left
Geth rakudo/main: 236ce7cf8d | (Nick Logan)++ (committed using GitHub Web editor) | 3 files
RakuAST: build the CORE:: PseudoStash at runtime, not compile time

Referencing a CORE:: symbol at compile time in a module (for example
  `&CORE::prompt` in a role method) died "Missing serialize REPR function
for REPR MVMContext (BOOTContext)". Dynamically compiled code built the CORE PseudoStash from the setting context and inserted it into the QAST as a literal value. That is fine when the frame is thrown away, but a ... (10 more lines)
04:58
04:59 lizmat joined
Geth rakudo: patrickbkr++ created pull request #6317:
Allow resizing the pty of a non-started Proc::Async
06:18
patrickb Non-RakuAST merges to main are currently blocked, right? 06:25
06:32 finanalyst joined
releasable6 Next release in ≈2 days and ≈11 hours. 1 blocker. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft 07:00
07:32 librasteve_ joined 08:03 vrurg_ joined 08:04 vrurg left
Geth rakudo/main: 1964cf3835 | (Patrick Böker)++ (committed using GitHub Web editor) | src/core.c/Proc/Async.rakumod
Stop crash when resizing the pty of a non-started Proc::Async

With this PR, calling $proc.resize-pty(...) on a Proc::Async object that has not been started yet, succeeds (and does the right thing) instead of dying with "Argument 0 to MoarVM syscall 'pty-resize' has repr P6opaque, but should be MVMOSHandle". It errors because $!process-handle is Any until the proc is started.
10:31
lizmat @[Coke]: I signed off on that ^^ 10:32
10:50 guifa_ joined 11:34 guifa_ left 12:34 finanalyst left 12:35 finanalyst joined 12:57 finanalyst left 12:58 finanalyst joined 13:02 finanalyst left
[Coke] ok 13:06
13:10 finanalyst joined 13:15 finanalyst left, finanalyst joined 13:16 finanalyst left 13:26 finanalyst joined 13:31 finanalyst left 14:01 finanalyst joined 14:03 finanalyst_ joined 14:05 finanalyst left
ugexe patrickb: would `X::Proc::Async::MustBeStarted.new(...).throw unless $!started` not be the correct thing to do? 14:44
i say this based on just a quick visual pattern matching of how $!started is used in that file 14:45
Geth rakudo/main: 2a42263f3c | (Nick Logan)++ | 4 files
RakuAST: let a real routine override an imported stub

  `use subs <foo>; sub foo { ... }` (the `subs` pragma predeclares stub
routines that real definitions later fill in) died "Redeclaration of symbol '&foo'". An imported symbol is a generated lexical declaration, so a real declaration of the same name collided with it in the scope's redeclaration check. ... (9 more lines)
15:10
rakudo/main: 63dfcb576d | (Nick Logan)++ | 2 files
RakuAST: don't warn redefining a forward-declared stub routine

  `sub foo { ... }; sub foo { 42 }` warned "Redeclaration of routine 'foo'"
even though defining a forward-declared stub is the supported pattern and works. The scope's redeclaration check warned for any two same-named routine declarations, not accounting for the first being a stub.
Skip the warning when the existing declaration is a stub routine, the way the routine installer already allows the definition to replace it. Redefining a non-stub routine is still a redeclaration.
rakudo/main: 6b88ef5e92 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | 5 files
Merge pull request #6307 from ugexe/ugexe/rakuast-routine-overrides-import

RakuAST: let a real routine override an imported stub
rakudo/main: df7ca4ae40 | (Nick Logan)++ (committed using GitHub Web editor) | 4 files
RakuAST: parse the `my :(...)` signature literal declaration

Previously `my :($a, $b) := (1, 2)` failed to parse under RakuAST with
  "Malformed my". The declarator grammar accepted the list form
  `my ($a, $b)` but not the signature literal form with a leading colon.
Accept an optional colon before the parenthesized signature in the ... (5 more lines)
15:12
patrickb ugexe: No. The reason is, that we pass in the size on process start. So when calling a pty-resize before starting the process, we are not sending a size change to the running process, but we do save the new sizes. Once the process is started, it will be started with the new sizes. 15:13
Geth rakudo/main: ed28bde563 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
RakuAST: attach a top level variable's `will` phaser to the mainline

A `will leave`/`will enter` (etc.) phaser trait on a top level variable died "No such method 'add_phaser' for invocant of type 'Mu'". The trait attaches the phaser to the variable's enclosing block, found via find-attach-target('block'). At the top level there is no block on the attach-target stack, so the lookup returned Nil and the code object ... (8 more lines)
15:14
rakudo/main: 9c87e104ab | (Nick Logan)++ (committed using GitHub Web editor) | 3 files
RakuAST: skip arity check for feed-stage calls

Previously a call used as a stage of a `==>` or `<==` feed wrongly reported "Calling foo() will never work with declared signature" when the called sub had a mandatory positional. The fed value is appended as an extra argument at QAST time, so the argument count visible at the AST level is short by one. The check-time trial-bind in RakuAST::Call::Name ... (10 more lines)
15:19
rakudo/main: 347366d64a | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
RakuAST: Declare a block's type captures as block-local

A type capture on a pointy or loop block's signature parameter was not declared as a lexical inside that block. The capture bound an outer same-named lexical instead, so `for ... -> ::T { }` inside a routine that already had a `::T` parameter overwrote the routine's capture.
RakuAST::Routine already declares its parameters' type captures in PRODUCE-IMPLICIT-DECLARATIONS. Do the same in RakuAST::Block so blocks with their own signature (pointy blocks, loop blocks) declare theirs too.
15:20
rakudo/main: b1e0906c27 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
RakuAST: Don't iterate worries when promoting under fatal

A node with a sorry-level check-time problem but no worry under `use fatal` crashed with "Cannot iterate over a Mu type object". The worry list stays a type object until the first worry is added, and promote-worries-to-sorries iterated it unconditionally. Guard the promotion on a worry having been recorded.
15:21
rakudo/main: a72df512e7 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
RakuAST: Skip coercion types in the duplicate-multi check

The duplicate-multi-signature check smartmatches two candidate signatures, which erases a coercion type to its target type. Two coercions that share a target but accept different types (such as `Int(Cool)` and `Int(Str)`) then compare as equivalent and produce a spurious "equivalent signatures would lead to ambiguous dispatch" report, which `use fatal` turns into a compile ... (5 more lines)
15:22
rakudo/main: 39d70c1ee7 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
RakuAST: Resolve an indirect `is ::Name` parent as a type

  `is ::Name` names an existing type to inherit from through an indirect
lookup. The `is` trait rejects type captures, so `::Name` falls through to the longname branch and was applied as a property name. Its name was then resolved late, after the declaring package's own name was in scope, so a role like `role Exception is ::Exception` resolved its parent to the wrong ... (6 more lines)
15:27
rakudo/main: 7b9f50a55b | (Nick Logan)++ (committed using GitHub Web editor) | 3 files
RakuAST: Report a leading pseudo-package cleanly instead of crashing

A pseudo-package leading a declared name is rejected with a sorry, but for CORE and GLOBAL the name resolver crashed before that sorry was reported.
  `class CORE::Foo` died with "Can't shift from an empty array" because the
CORE branch shifted an already-empty part list, and `class GLOBAL` died with "Empty name lookup not possible as a constant" because a bare GLOBAL reduces to an empty name in IMPL-FULL-NAME. Return Nil for a bare CORE and skip resolving an empty full name, so both report the normal error like the other pseudo-packages do.
15:28
rakudo/main: e1f9e3ebc2 | (Nick Logan)++ (committed using GitHub Web editor) | 7 files
RakuAST: Don't compose a class whose body fails to begin

A begin-time error while declaring a package body member can be deferred as a sorry rather than aborting the parse: a trait that dies, or a begin-time evaluation on a check-time node. The package was then composed and installed as a complete type anyway. Re-declaring that name (as `throws-like { EVAL ... }` does when a test exercises a bad declaration twice) raised a spurious ... (7 more lines)
15:30
rakudo/main: 2e27eab619 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
RakuAST: Fix enum declaration with a non-string key

An enum value's name is a string, but a key written as a numeric literal
  (`12844 => 25`) reaches enum building as an Int. Two paths then failed
under RakuAST where legacy did not.
  `add_enum_value` unboxes the key to a native string at BEGIN time. Coerce
... (8 more lines)
15:32
rakudo/main: d4c5749463 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files
RakuAST: Initialize attribute defaults that are type objects at construction

An attribute whose default is a type object (`has T $.x = T`) compiled to a build value that is not concrete. The metamodel only initializes the attribute at construction when the build is concrete, so it was never initialized there. The slot was left to MoarVM, which vivifies it lazily on the first read, and that vivification is not synchronized. Under concurrency a node published with ... (8 more lines)
15:51
[Coke] I assume all these new commits are 1) rakuast, and 2) going in knowing the release is in 2 days? 17:23
patrickb All have a "RakuAST" prefix, except for that one commit of mine, which apparently got a special permit. :-P (It is a very localized and small fix though.) I am well aware the release is in two days. 17:40
Geth rakudo/main: 0a62540648 | (Nick Logan)++ | 2 files
RakuAST: Resolve a package lookup through a runtime lexical

  `t::{$key}` where `t` is a lexical bound to a type (my \t := SomeEnum)
failed to compile with "Symbol 't' does not have a compile-time value". Resolving the qualified name ran the leading part through the constant name resolver, which threw for a lexical that is not itself a constant, before the runtime .WHO fallback could take over. This broke installing ... (8 more lines)
17:54
rakudo/main: 3b1e53c06a | (Nick Logan)++ | 2 files
RakuAST: Resolve a package-qualified call through a runtime lexical

  `t::foo()` where `t` is a lexical bound to a type (my \t := SomeType)
could not find the routine. Resolve the leading part as a plain lexical so a runtime package base binds as the call's package even when it lacks a compile-time value. Codegen already takes .WHO on its value to find the routine, the same as for a compile-time package.
rakudo/main: 20c3028c44 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | 3 files
Merge pull request #6293 from ugexe/ugexe/rakuast-indirect-package-lookup

RakuAST: Resolve a package lookup or call through a runtime lexical
lizmat [Coke]: yes, all RakuAST except patrick's one
Geth rakudo: lizmat++ created pull request #6318:
RakuAST: small refactor of ::Resolver.resolve-lexical-constant
18:11
lizmat heh... interesting... looks like the commit felt in a black hole 18:12
Geth rakudo/main: 0a62540648 | (Nick Logan)++ | 2 files
RakuAST: Resolve a package lookup through a runtime lexical

  `t::{$key}` where `t` is a lexical bound to a type (my \t := SomeEnum)
failed to compile with "Symbol 't' does not have a compile-time value". Resolving the qualified name ran the leading part through the constant name resolver, which threw for a lexical that is not itself a constant, before the runtime .WHO fallback could take over. This broke installing ... (8 more lines)
18:13
rakudo/main: 3b1e53c06a | (Nick Logan)++ | 2 files
RakuAST: Resolve a package-qualified call through a runtime lexical

  `t::foo()` where `t` is a lexical bound to a type (my \t := SomeType)
could not find the routine. Resolve the leading part as a plain lexical so a runtime package base binds as the call's package even when it lacks a compile-time value. Codegen already takes .WHO on its value to find the routine, the same as for a compile-time package.
rakudo/main: 20c3028c44 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | 3 files
Merge pull request #6293 from ugexe/ugexe/rakuast-indirect-package-lookup

RakuAST: Resolve a package lookup or call through a runtime lexical
rakudo/lizmat-24: 0974e1ab89 | (Elizabeth Mattijsen)++ | src/Raku/ast/resolver.rakumod
RakuAST: small refactor of ::Resolver.resolve-lexical-constant

Since it felt like pretty hot code during compilation:
  - no return statement unless needed
  - no unneccesary intermediat variables
lizmat it appears that Github is having some webhooks issues
I'll stop merging PRs now 18:29