|
01:29
guifa left
01:50
guifa joined
|
|||
| Geth | rakudo: ugexe++ created pull request #6377: RakuAST: fix BEGIN-time cloning and routine trait arguments |
02:09 | |
|
02:09
guifa left
|
|||
| Geth | rakudo: ugexe++ created pull request #6378: RakuAST: do not curry a Whatever operand of a short-circuit operator |
03:00 | |
| rakudo: ugexe++ created pull request #6379: RakuAST: let a module declare its own `my package EXPORT` |
04:16 | ||
| rakudo: ugexe++ created pull request #6380: RakuAST: fix a heredoc used as an attribute default |
04:51 | ||
| rakudo: ugexe++ created pull request #6381: RakuAST: give a method literal its enclosing package |
05:23 | ||
| rakudo/main: def58d5a14 | (Nick Logan)++ (committed using GitHub Web editor) | 3 files RakuAST: Join a role group declared under a setting-named package (#6355) Declaring a parametric role more than once forms a role group across its variants. When the compound name's first part was a setting type, the second declaration failed with "Redeclaration of symbol", so a module like Hash::Sorted (`role Hash::Sorted[...]` declared twice) would not compile. ... (5 more lines) |
05:27 | ||
| rakudo/main: 4aaa9164fb | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: Handle a trailing :: in an indirect package lookup (#6356) `$p::` designates the package that is the value of `$p`, so `$p::.WHO` is that package's stash. Compiling it died with "No such method 'IMPL-QAST-INDIRECT-LOOKUP-PART' for RakuAST::Name::Part::Empty", so modules using `$pkg::.WHO` such as UML::Translators would not compile. A trailing `::` is an empty final name part. The indirect lookup already drops a leading empty part but iterated over a trailing one, which has no lookup chunk to contribute. Drop it too, leaving the package the earlier parts resolve to. |
|||
| rakudo/main: c0a95616fd | (Nick Logan)++ (committed using GitHub Web editor) | 4 files RakuAST: Treat a parenthesized whatever `where` as a closure (#6357) A `where (* > 0)` constraint is the same WhateverCode as `where * > 0`. The parentheses only group. The unparenthesized form is recognized as curried and used directly, but the parenthesized form was not, because `Circumfix::Parentheses` keeps an empty thunk chain (the CurryThunk sits on the inner expression) and so reports `IMPL-CURRIED` false. It was then wrapped in a ... (12 more lines) |
|||
| rakudo/main: 5c7ba33974 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: Join a my-scoped role group inside a package (#6358) A `my`-scoped parametric role declared with several variants inside a package body was rejected at the second variant with `Redeclaration of symbol`. At the top level it worked. `install-in-scope` resolves an existing role group to join, then installs the ... (11 more lines) |
|||
| rakudo/main: b36b74b090 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: Handle a pod block before an `is repr(...)` class (#6359) A pod block before a class parses into the following `is repr('CStruct')` trait's circumfix as a leading Doc::Block statement, so the circumfix holds two statements: the doc block and the repr value. `handle-is-repr` took the first statement of the circumfix, which was then the doc block, and reported `is repr(...) trait value must be known at compile time`. ... (8 more lines) |
|||
| rakudo/main: bfef7f4f2b | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: Serialize a WhateverCode role argument (#6360) A role parameterized by a WhateverCode and punned into a class, like `class C does Role[* cmp * == More]`, died on load from a precompiled module: provided outer frame ... does not match expected static frame '<unit>' ... (12 more lines) |
|||
| rakudo/main: 0f8e3a4436 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: Flatten a Slip held in a container in `for` (#6361) A `for` over a source that sits in a container iterates it as a single item, so `my $s = slip(1, 2, 3); .say for $s` ran the body once with the whole Slip as the topic, instead of once per element. A Slip is meant to flatten even from a container. The `iscont` branch of the `for` codegen used `map(:item)`, which keeps the value as one item. Wrapping the source with `infix:<,>` instead gives `($x,)`, which is one element for an ordinary value and the flattened elements for a Slip, matching the legacy frontend. |
|||
| rakudo/main: bba915cb58 | (Nick Logan)++ | 2 files RakuAST: Decontainerize the value of an `INIT` prefix `my $x = INIT $y` bound the Scalar the INIT phaser caches its result in, rather than the value in it, so `$x` was a container and a later `$x.method` hit the Scalar instead of the value. It broke Test::Scheduler, which keeps `INIT $*SCHEDULER` and later calls `.cue` on it. The phaser caches its result in a Scalar and `IMPL-EXPR-QAST` handed that Scalar straight back. Decontainerize it, so the prefix yields the value the block produced, the same as the unphased expression. |
05:30 | ||
| rakudo/main: b1c717431d | (Nick Logan)++ | 3 files RakuAST: Handle a null or BEGIN-time `INIT` value Two edge cases in the value of an `INIT` prefix produced a raw VMNull or the phaser block instead of Mu. An `INIT` block that bound nothing, for example one reading a variable not yet bound when INIT runs, left its cache Scalar holding a null. Reading it handed ... (7 more lines) |
|||
| rakudo/main: 055e3e09e8 | (Nick Logan)++ (committed using GitHub Web editor) | 3 files Merge pull request #6363 from ugexe/ugexe/rakuast-init-container-edge-cases RakuAST: Fix the value of an INIT statement prefix |
|||
| rakudo/main: 37d708d78a | (Nick Logan)++ | 2 files RakuAST: declare sub-signature type captures block-local A type capture in a sub-signature, as in `-> $p ($n, ::T) { }` or `sub f($p (::T :$value, |)) { }`, was never given a frame slot, so the binder had nowhere to store the captured type and a reference to `T` in the body died with "Lexical with name 'T' does not exist in this frame". Configuration hit this in its accessor loop ... (11 more lines) |
|||
| rakudo/main: f2d579140d | (Nick Logan)++ | 4 files RakuAST: declare list-declaration type captures block-local A type capture in a list declaration, as in `my (::T, $x) := (Int, 5)`, was never given a frame slot, so referring to `T` afterward died with "Lexical with name 'T' does not exist in this frame". A routine or block surfaces its own signature's captures through PRODUCE-IMPLICIT- DECLARATIONS, but a `my (...)` declaration binds against a signature it ... (8 more lines) |
|||
| rakudo/main: cac89efb35 | (Nick Logan)++ (committed using GitHub Web editor) | 4 files Merge pull request #6365 from ugexe/ugexe/rakuast-subsig-type-capture RakuAST: declare sub-signature and list-declaration type captures block-local |
|||
| rakudo/main: 18f8e535e2 | (Nick Logan)++ | 2 files RakuAST: keep a once's state inside a run-once phaser thunk A `once` written directly under a phaser, as in `INIT once { ... }`, never ran its body. The phaser thunks the statement into its own block, but the once's state variable was left in the enclosing scope. The thunk call runs in a fresh frame whose state init never fires for that outer variable, so p6stateinit stayed false and the body was skipped. ... (7 more lines) |
|||
| rakudo/main: 7d1927048f | (Nick Logan)++ | 4 files RakuAST: fire a once in ENTER, LEAVE, and start bodies A `once` in a phaser or thunk body never ran. The once's state variable lives in the enclosing scope, but the body runs in a thunk frame of its own, whose state init never fires for that outer variable, so nqp::p6stateinit stayed false and the once was skipped. An ENTER block additionally got a fresh clone on every entry, so state the block itself ... (19 more lines) |
|||
| rakudo/main: 2df39f4b3c | (Nick Logan)++ (committed using GitHub Web editor) | 5 files Merge pull request #6369 from ugexe/ugexe/rakuast-phaser-once-per-entry RakuAST: fire a once in phaser and start bodies |
|||
|
10:01
[Tux] left
10:04
[Tux] joined
10:50
[Tux] left
11:08
[Tux] joined
11:27
[Tux] left
11:30
[Tux] joined
12:13
lizmat left
12:14
lizmat joined
12:38
finanalyst joined
13:03
apogee_ntv joined
13:27
librasteve_ joined
|
|||
| Geth | rakudo/main: 0b072f218e | (Nick Logan)++ | 2 files RakuAST: don't crash on an unrecognized `<| >` boundary assertion Previously a `<|w>` or `<|c>` boundary assertion compiled, but any other boundary name like `<|b>` left the assertion's AST unset. The metachar assertion handler then called `to-begin-time` on that null node and the compile died with "Cannot find method 'to-begin-time' on object of type NQPMu". ... (7 more lines) |
14:39 | |
| rakudo/main: b121e53e1b | (Nick Logan)++ | 4 files Make an unrecognized `<| >` regex boundary an error from 6.e A `<| ... >` boundary assertion only defines two boundaries: `<|w>` (word) and `<|c>` (codepoint). Any other name like `<|b>` was silently accepted and matched the empty string. That is the odd one out among regex constructs, since an undefined named rule, an unknown metacharacter and an unknown backslash all complain. The silent no-op just hides what is almost ... (9 more lines) |
|||
| rakudo/main: 7eba80c08e | (Nick Logan)++ (committed using GitHub Web editor) | 4 files Merge pull request #6347 from ugexe/ugexe/rakuast-regex-boundary-6e-strict Make an unrecognized `<| >` regex boundary a no-op before 6.e and an error after |
|||
| rakudo/main: 9d47b03698 | (Nick Logan)++ (committed using GitHub Web editor) | 4 files RakuAST: box the evaluated argument of pragmas, use, import, and require (#6371) `use lib "{$*PROGRAM.dirname}/../lib"` failed to compile with "Cannot find method 'List' on object of type BOOTStr". The pragma evaluates its argument at BEGIN time, and an expression without a compile-time value is compiled into a thunk and called. The call returns the block's value as the VM sees it, so the interpolated string came back as an unboxed ... (10 more lines) |
|||
| rakudo/main: 94fab5b3f0 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: declare a constant's anonymous variable in its own thunk (#6372) A constant computes its value with a thunk that is compiled on its own. An anonymous variable declared in that value, such as the `(my uint32 $ = -1)` idiom for a native constant, had its declaration left in the enclosing scope. The thunk then referred to storage it could not reach and compilation died with "No lexical found with name ... (6 more lines) |
|||
| rakudo/main: f4da9e9183 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: leave no backtrack point after a ratchet regex (#6373) A token or rule is ratchet, so a call to one cannot be re-entered to look for a further match. That is arranged by the regex's terminating `pass` node carrying a ratchet backtrack, which keeps the cursor from storing a restart continuation. The RakuAST frontend built that pass node without it, so every token's cursor kept a restart pointing back at the token's ... (11 more lines) |
|||
| rakudo/main: 08c7d88536 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: keep an operator name's colonpair in its package lookup key (#6374) An `our`-scoped operator variable such as `our &infix:<++> = &concat` is reached at runtime through a package lookup, while the container is bound into the package under the name's full canonical form. A name's colonpairs live on the name rather than on its parts, and the package lookup built its key from the parts alone, so the lookup asked for ... (9 more lines) |
|||
| rakudo/main: 43a4df20d2 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: do not sink the result of take (#6375) `take` and `take-rw` stash their argument into the enclosing gather and hand the very same value back. When such a call sits in sink context, for example as the last statement of a `for` loop body inside a gather, its result was sunk. Sinking a Seq drains and clears its iterator, so the value the gather had already stored was consumed before anything could ... (8 more lines) |
|||
| rakudo/main: aa7f92eebb | (Nick Logan)++ (committed using GitHub Web editor) | 4 files RakuAST: make a term visible within its own initializer (#6376) A sigilless term declaration was installed only after its initializer had been parsed, so a reference to the term from inside that initializer could not resolve. A self-referential lazy binding, such as a sequence defined in terms of itself, failed to compile. ... (5 more lines) |
|||
| rakudo/main: 4 commits pushed by (Nick Logan)++ | |||
| rakudo/main: e6525c1db4 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: let a module declare its own `my package EXPORT` (#6379) A module defines its export tags by declaring `my package EXPORT` and populating it. That name collides with the compunit's implicit EXPORT lexical, so RakuAST rejected it with "Redeclaration of symbol 'EXPORT'" while the legacy frontend replaced the implicit and carried on. ... (5 more lines) |
|||
| rakudo/main: 74247ff71e | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: fix a heredoc used as an attribute default (#6380) An attribute whose default is a value known at compile time takes it as the build value straight away, when the attribute is begun. A heredoc's body is not spliced in until the end of the line, after that point, so the value taken there was the placeholder (the terminator word) rather than the heredoc body. `has $.style = q:to/END/; ... END` ended up as "END". Leave a heredoc default to the method path, which compiles the expression once the body is in place. |
|||
| rakudo/main: 66e32459bf | (Nick Logan)++ (committed using GitHub Web editor) | 3 files RakuAST: Keep -n/-p declarations in the compunit mainline (#6343) -n and -p wrap the program in a per-line for-loop. RakuAST built that loop as an AST node containing the program, so the program's lexical declarations landed in the loop-body scope and were re-instantiated each line. A BEGIN-declared variable therefore did not persist, so `raku -ne 'BEGIN my $w = 0; $w += .words.elems; END say $w'` printed only ... (12 more lines) |
14:45 | ||
rakudo/main: 7 commits pushed by (Nick Logan)++
|
14:48 | ||
|
15:23
finanalyst left
15:37
librasteve_ left
16:08
vrurg_ joined
16:11
vrurg left
|
|||
| Geth | rakudo: ugexe++ created pull request #6382: RakuAST: fix \h and \v inside a character class |
16:46 | |
|
16:52
finanalyst joined
17:18
apogee_ntv left
17:22
Pixi` joined
17:25
Pixi left
17:27
Pixi joined
17:29
Pixi` left
17:41
apogee_ntv joined
|
|||
| Geth | rakudo: ugexe++ created pull request #6383: RakuAST: default a bare `package EXPORTHOW` to `my` |
17:53 | |
|
17:54
finanalyst left
17:57
finanalyst joined
|
|||
| [Coke] | releasable6: next | 18:21 | |
| releasable6 | [Coke], Next release in ≈21 days and ≈0 hours. There are no known blockers. 53 out of 86 commits logged | ||
| [Coke], Details: gist.github.com/63ef36cd3a9cd8f61b...c98ae804bc | |||
| [Coke] | ... weird. it already updated in the whateverable channel. | ||
| releasable6: next | |||
| releasable6 | [Coke], Next release in ≈21 days and ≈0 hours. There are no known blockers. 53 out of 86 commits logged | ||
| [Coke], Details: gist.github.com/3a9fb11b51ad89c50a...8f2ca03d82 | |||
| Geth | rakudo: ugexe++ created pull request #6384: RakuAST: use the base type for a `is Type:D` container |
18:29 | |
|
18:41
finanalyst left
18:42
finanalyst joined
19:00
finanalyst_ joined
19:03
finanalyst left
|
|||
| [Coke] | releasable6: next | 19:07 | |
| releasable6 | [Coke], Next release in ≈20 days and ≈23 hours. There are no known blockers. 86 out of 86 commits logged | ||
| Geth | rakudo/main: 7007920283 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: give a method literal its enclosing package (#6381) An anonymous or lexical `method { }` literal, unlike a sub, left its `.package` unset (Mu) rather than recording the enclosing package. The setting's `Mu.raku` decides whether a type has its own `.raku`/`.perl` by testing whether the found method's package is Mu, so a custom `.gist`/`.perl` installed with `add_method` was taken for the default one and `Mu.raku` then ... (5 more lines) |
19:08 | |
|
19:08
guifa joined
|
|||
| rakudo/main: 30de61f06a | (Nick Logan)++ | 2 files RakuAST: merge \h and \v into an adjacent character enumeration A character class combining an enumerable class with literal characters, for example `<-[\v>|]>`, compiled `\v` as a separate enumcharlist from the `>|` literals. That leaves the class as two alternatives wrapped in a zerowidth-conjunction rather than a single enumcharlist, and such a class does not order correctly against another one under longest-token matching. So a ... (7 more lines) |
19:09 | ||
| rakudo/main: e5f4c8afd7 | (Nick Logan)++ | 2 files RakuAST: exclude the CR LF grapheme from \v inside a character class On its own, \v matches the two-codepoint CR LF grapheme as well as the single vertical-space codepoints. Inside a character class it matches only the single codepoints, as the legacy frontend does with a separate enumeration for cclass_backslash:sym<v>. RakuAST used the codepoints-plus-CRLF enumeration in both places, so `<[\v]>` matched a `\r\n` grapheme where legacy did not, and `<[\V]>` excluded it. Give VerticalSpace a character-class enumeration without the CR LF grapheme, leaving the standalone form as it was. |
|||
| rakudo/main: 61dc84299d | (Nick Logan)++ (committed using GitHub Web editor) | 3 files Merge pull request #6382 from ugexe/ugexe/rakuast-regex-vspace-class-crlf RakuAST: fix \h and \v inside a character class |
|||
| rakudo/main: a3f1218ff5 | (Nick Logan)++ (committed using GitHub Web editor) | 3 files RakuAST: default a bare `package EXPORTHOW` to `my` (#6383) A module supplies compile-time declarator overrides by declaring an EXPORTHOW package; the consumer reads it from the module's handle. A bare `package EXPORTHOW` is `our`-scoped, so it landed in GLOBAL and, on load, clashed with the setting's own EXPORTHOW ("Merging GLOBAL symbols failed: duplicate definition of symbol class"). The setting declares `my module EXPORTHOW`, and a bare one should be lexical too. Default a bare `package EXPORTHOW` (one with no explicit scope) to `my` so it stays out of GLOBAL and no longer clashes with the setting's EXPORTHOW on load. |
|||
|
19:12
guifa left
|
|||
| Geth | rakudo/main: 02b04de984 | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: use the base type for a `is Type:D` container (#6384) `my @a is List:D = ...` names a definite type as the container base. A container cannot be an instance of a definite type, so building one died "You cannot create an instance of this type (List:D)". The sigil-default path (a plain `my @a`) and the legacy frontend use the base type there. Strip the definiteness in IMPL-EXPLICIT-CONTAINER-BASE-TYPE so every reader of the explicit base sees the base type, covering the `my`, `state`, and meta-object paths alike. |
19:14 | |
|
19:45
finanalyst__ joined
19:47
vrurg joined
19:48
finanalyst_ left
19:50
vrurg_ left
19:54
finanalyst__ left
|
|||
| Geth | rakudo: ugexe++ created pull request #6385: RakuAST: key an our-scoped twigil variable's package slot by its full name |
20:33 | |
| rakudo/main: 1ec6555109 | (Nick Logan)++ | 5 files RakuAST: key an our-scoped twigil variable's package slot by its full name An `our @.foo` in a class installs its package slot under the full name including the twigil, `@.foo`, the same name self.name and the meta-object use. The declaration looked the slot up without the twigil, as `@foo`, so it missed the installed slot and global-fallback vivified an orphan `@foo` in GLOBAL. Pulling the class in through two paths, directly and via a module that ... (6 more lines) |
21:25 | ||
| rakudo/main: dcf25cf51f | (Nick Logan)++ | 3 files RakuAST: carry a Var::Package twigil instead of folding it into the sigil A package-qualified `$?` variable like `$?CALLER::PACKAGE` built its Var::Package with the twigil concatenated onto the sigil, `:sigil($sigil ~ $twigil)`, so the lookup, bind and error-report paths all saw a `$?` "sigil". This is the same shape the package-slot lookup used before it gained a `:twigil`. ... (8 more lines) |
|||
| rakudo/main: 9d737d4a6a | (Nick Logan)++ (committed using GitHub Web editor) | 7 files Merge pull request #6385 from ugexe/ugexe/rakuast-our-twigil-package-key RakuAST: key an our-scoped twigil variable's package slot by its full name |
|||
| rakudo/main: 27b4e5f65c | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: do not curry a bare Whatever operand of a short-circuit operator (#6378) `0 // *` produced a WhateverCode rather than 0. The table that decides whether an infix operator curries a Whatever operand had no entry for `//`, `and`, `or`, `andthen`, `orelse`, `notandthen`, and `xor`, so they took the default of currying both a Whatever and a WhateverCode. A short-circuiting operator thunks an operand, so a bare Whatever standing there is a literal Whatever term for the ... (12 more lines) |
21:47 | ||
| rakudo: ugexe++ created pull request #6386: Compile the proxy readers with the Raku HLL |
22:03 | ||
| rakudo: ugexe++ created pull request #6387: RakuAST: ratchet the atom position, not the quantifier |
22:52 | ||
| [Coke] | changelog up to date | 23:15 | |
| Geth | rakudo/main: f0844d93f4 | (Nick Logan)++ (committed using GitHub Web editor) | 3 files Compile the proxy readers with the Raku HLL (#6386) A native call with a Proxy argument, like an element of a CArray, returned its result as a BOOT type rather than the Raku type: an int32 return came back a BOOTInt on which ordinary method calls like .defined die "No such method". The ONNX::Native test suite hits this passing a CArray[OrtSessionOptionsHandle] element to a native function and checking the returned status code. ... (26 more lines) |
23:20 | |
| rakudo: ugexe++ created pull request #6388: Map a container-held foreign value when binding a value parameter |
23:30 | ||
| rakudo/main: 7d3a0c0e3d | (Nick Logan)++ (committed using GitHub Web editor) | 2 files RakuAST: ratchet the atom position, not the quantifier (#6387) In a `rule`, `<foo>? <bar>` where `<foo>` can also match `<bar>`'s input failed to parse. ASN::Grammar hits this: its `optional-or-default` rule has `'DEFAULT' <id-string>? <value>`, and `<id-string>` also matches the FALSE that `<value>` needs, so a `criticality BOOLEAN DEFAULT FALSE` line no longer parsed and the whole module returned Any. `<word>+ %% ' '` and `<word> ** {0..1}` ... (17 more lines) |
23:37 | ||
| rakudo/7d3a0c0e3-but-build-rakudo-with-rakuast: da5abc5860 | (Will Coleda)++ | src/main.nqp Introduce RAKUDO_LEGACY Change default build to RAKUAST |
23:56 | ||
| [Coke] | c: 7d3a0c0e3d 3.say | 23:57 | |
| committable6 | [Coke], ¦7d3a0c0: «3» | ||
| [Coke] | c: da5abc586 pi.say | ||
| committable6 | [Coke], ¦da5abc5: «Cannot find this revision (did you mean “8c3ac50”?)» | ||
| [Coke] | c: da5abc586 pi.say | 23:59 | |
| committable6 | [Coke], ¦da5abc5: «Cannot find this revision (did you mean “8c3ac50”?)» | ||