| ShimmerFairy | My probably bad suggestion would be to allow method foo(@args):D { } so you don't have to worry about method foo:D(@args) { } (or even method:D foo(@args) { } as another option) | 00:59 | |||||||||||||||||||||||||||||||||||||
| timotimo | and methods without argument signatures would be "method foo:D { ... }" then? | 01:00 | |||||||||||||||||||||||||||||||||||||
| ShimmerFairy | Yeah, I was thinking more "another location to put adverbs", so attaching it to the name would still be OK. | 01:01 | |||||||||||||||||||||||||||||||||||||
| timotimo | OK | 01:02 | |||||||||||||||||||||||||||||||||||||
| to me, if it's after the signature, and outside, it kind of reads a little like "related to return type", kinda like "is rw" | |||||||||||||||||||||||||||||||||||||||
| ShimmerFairy | Actually, attaching it to the keyword would make sense for things that could be see as affecting what kind of sub/method/etc. you're making, e.g. "This isn't just any method, but a 6.c only method" | ||||||||||||||||||||||||||||||||||||||
|
01:03
lucasb left
|
|||||||||||||||||||||||||||||||||||||||
| ShimmerFairy | method:LANG<6.c> foo() { ... }; method:LANG<6.d> foo() { ... }; | 01:03 | |||||||||||||||||||||||||||||||||||||
| timotimo | metho:D and meth:U:d | 01:04 | |||||||||||||||||||||||||||||||||||||
| ShimmerFairy | Also, I'm fine with the idea of reserving uppercase adverb names, but there had better be a clear line between adverbs and ordinary colonpairs. sub bar:CUSTOM-NOT-OK<...>(:$CUSTOM-OK) { } | 01:07 | |||||||||||||||||||||||||||||||||||||
| Ooh! Attaching adverbs to the keyword means anonymous subs can be modified too! pass-a-func($arg, sub:LANG<6.c> { ... }) | 01:10 | ||||||||||||||||||||||||||||||||||||||
|
02:48
linkable6 left,
evalable6 left
02:50
linkable6 joined
02:51
evalable6 joined
05:14
Xliff left
06:50
domidumont joined
|
|||||||||||||||||||||||||||||||||||||||
| moritz | eeks! | 07:02 | |||||||||||||||||||||||||||||||||||||
| nine | But, but, why not just `multi method foo ($b) is LANG<6.e+> { ... }`? With a simple `sub trait_mod:<is>(Method $m, Version(Str) :$LANG!) { }` that already parses today and just needs the trait to set some field on the multi candidate that the dispatcher checks | 07:09 | |||||||||||||||||||||||||||||||||||||
| We don't need such a mechanism for subs as we can just override lexically in the new language version's setting. | |||||||||||||||||||||||||||||||||||||||
|
07:31
MasterDuke joined
|
|||||||||||||||||||||||||||||||||||||||
| ShimmerFairy | I was just working in the confines of "how can we do this adverbly?" | 07:33 | |||||||||||||||||||||||||||||||||||||
| And besides, putting aside LANG specifically, the question of how to deal with sub foo:adv($function, $args) { } may well come up someday. | 07:36 | ||||||||||||||||||||||||||||||||||||||
|
07:54
JJMerelo joined
|
|||||||||||||||||||||||||||||||||||||||
| JJMerelo | m: rule r { (\w+ '.')* \w+ }; say "a.b" ~~ r | 07:55 | |||||||||||||||||||||||||||||||||||||
| camelia | 5===SORRY!5=== Undeclared routine: r used at line 1 Other potential difficulties: Useless declaration of a has-scoped method in mainline (did you mean 'my rule r'?) at <tmp>:1 ------> 3rule 7⏏5r { (\w+ '.')* \w+… |
||||||||||||||||||||||||||||||||||||||
| JJMerelo | m: my rule r { (\w+ '.')* \w+ }; say "a.b" ~~ r | 07:56 | |||||||||||||||||||||||||||||||||||||
| camelia | Too few positionals passed; expected 1 argument but got 0 in regex r at <tmp> line 1 in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
| JJMerelo | m: my rule r { (\w+ '.')* \w+ }; say "a.b" ~~ &r | ||||||||||||||||||||||||||||||||||||||
| camelia | 「a.b」 0 => 「a.」 |
||||||||||||||||||||||||||||||||||||||
| JJMerelo | m: my rule r { (\w+ '.')* \w+ }; say "a.b" ~~ &r | ||||||||||||||||||||||||||||||||||||||
| camelia | 「a.b」 0 => 「a.」 |
||||||||||||||||||||||||||||||||||||||
| JJMerelo | m: my token r { (\w+ '.')* \w+ }; say "a.b" ~~ &r | ||||||||||||||||||||||||||||||||||||||
| camelia | 「a.b」 0 => 「a.」 |
||||||||||||||||||||||||||||||||||||||
| JJMerelo | commit: releases my token r { (\w+ '.')* \w+ }; say "a.b" ~~ &r | 07:58 | |||||||||||||||||||||||||||||||||||||
| committable6 | JJMerelo, ¦releases (43 commits): «「a.b」 0 => 「a.」» | ||||||||||||||||||||||||||||||||||||||
| JJMerelo | commit: releases my rule r { (\w+ '.')* \w+ }; say "a.b" ~~ &r | ||||||||||||||||||||||||||||||||||||||
| committable6 | JJMerelo, ¦releases (43 commits): «「a.b」 0 => 「a.」» | 07:59 | |||||||||||||||||||||||||||||||||||||
| JJMerelo | So rules behave exactly the same as tokens. There's no :sigspace difference | ||||||||||||||||||||||||||||||||||||||
| m: my token r { [\w+ '.']* \w+ '.' \w+ }; say "a.b.c" ~~ &r | 08:00 | ||||||||||||||||||||||||||||||||||||||
| camelia | Nil | ||||||||||||||||||||||||||||||||||||||
| JJMerelo | m: my rule r { [\w+ '.']* \w+ '.' \w+ }; say "a.b.c" ~~ &r | ||||||||||||||||||||||||||||||||||||||
| camelia | 「a.b.c」 | ||||||||||||||||||||||||||||||||||||||
| JJMerelo | commit: releases my rule r { [\w+ '.']* \w+ '.' \w+ }; say "a.b.c" ~~ &r | ||||||||||||||||||||||||||||||||||||||
| committable6 | JJMerelo, ¦releases (43 commits): «「a.b.c」» | 08:01 | |||||||||||||||||||||||||||||||||||||
| JJMerelo | I am checking this stackoverflow.com/questions/620517...and-a-rule and it seems as if all it's in the documentation is wrong | ||||||||||||||||||||||||||||||||||||||
| tokens ratchet, rules don't. They both have non-significant whitespace. There does not seem to be a difference between a regex and a rule, then. | 08:02 | ||||||||||||||||||||||||||||||||||||||
| ShimmerFairy | default <.ws> does not require whitespace except between two word characters | 08:04 | |||||||||||||||||||||||||||||||||||||
| JJMerelo | ShimmerFairy far as I can tell, that's not what the documentation says. But what about ratcheting? | 08:12 | |||||||||||||||||||||||||||||||||||||
| ShimmerFairy | rule should absolutely be ratcheting, and if it isn't that's a bug. | ||||||||||||||||||||||||||||||||||||||
| But the default <ws> has always been / <!ww> \s* / | |||||||||||||||||||||||||||||||||||||||
| JJMerelo | commit: releases my rule r { [\w+ '.']* \w+ '.' \w+ }; say "a.b.c" ~~ &r | 08:14 | |||||||||||||||||||||||||||||||||||||
| committable6 | JJMerelo, ¦releases (43 commits): «「a.b.c」» | ||||||||||||||||||||||||||||||||||||||
| JJMerelo | commit: releases my token r { [\w+ '.']* \w+ '.' \w+ }; say "a.b.c" ~~ &r | ||||||||||||||||||||||||||||||||||||||
| committable6 | JJMerelo, ¦releases (43 commits): «Nil» | 08:15 | |||||||||||||||||||||||||||||||||||||
| JJMerelo | ShimmerFairy if it does, then it's a long standing bug... | ||||||||||||||||||||||||||||||||||||||
| The commit that changed that part of the documentation is 5 years old github.com/Raku/doc/commit/3c20a9f...7d5e2583bb | |||||||||||||||||||||||||||||||||||||||
| Sorry, afk now... | |||||||||||||||||||||||||||||||||||||||
| ShimmerFairy | m: my token r { a+ a }; say "aaaaa" ~~ &r | 08:17 | |||||||||||||||||||||||||||||||||||||
| camelia | Nil | ||||||||||||||||||||||||||||||||||||||
| ShimmerFairy | m: my rule r {a+a}; say "aaaaa" ~~ &r | ||||||||||||||||||||||||||||||||||||||
| camelia | Nil | ||||||||||||||||||||||||||||||||||||||
| ShimmerFairy | m: my rule r { a+ a }; say "aaaaa" ~~ &r | ||||||||||||||||||||||||||||||||||||||
| camelia | Nil | ||||||||||||||||||||||||||||||||||||||
| ShimmerFairy | m: my regex r { a+ a }; say "aaaaa" ~~ &r | ||||||||||||||||||||||||||||||||||||||
| camelia | 「aaaaa」 | ||||||||||||||||||||||||||||||||||||||
|
08:20
JJMerelo left
|
|||||||||||||||||||||||||||||||||||||||
| jnthn | I'm guessing this is a mis-compile in some situation, but I didn't yet figure out exactly what are the ingredients. | 09:20 | |||||||||||||||||||||||||||||||||||||
| It's losing a ratchet somewhere | |||||||||||||||||||||||||||||||||||||||
| (None in any of those cut-down cases, though..) | |||||||||||||||||||||||||||||||||||||||
| *Not | |||||||||||||||||||||||||||||||||||||||
|
09:44
Altai-man_ joined
09:54
JJMerelo joined
|
|||||||||||||||||||||||||||||||||||||||
| JJMerelo | jnthn is that bug posted somewhere? | 09:55 | |||||||||||||||||||||||||||||||||||||
| jnthn and does that happen always, or only in some situations? | |||||||||||||||||||||||||||||||||||||||
| jnthn | JJMerelo: It's the first time I can recall seeing it. And I think the above evaluations show "only sometimes" | 10:00 | |||||||||||||||||||||||||||||||||||||
| Maybe only if there's a quantified group | |||||||||||||||||||||||||||||||||||||||
| JJMerelo | jnthn++ | ||||||||||||||||||||||||||||||||||||||
| jnthn | JJMerelo: If you've a moment, please do make an issue. If nobody beats me to it, I'll have a big in the regex compiler, but my brain is full of dispatcher stuff at the moment. | 10:06 | |||||||||||||||||||||||||||||||||||||
| JJMerelo | jnthn by all means. | 10:07 | |||||||||||||||||||||||||||||||||||||
| jnthn | s/big/dig :) | ||||||||||||||||||||||||||||||||||||||
.oO( I'm big in the regex compiler ) |
|||||||||||||||||||||||||||||||||||||||
| Altai-man_ | .oO ( maybe not da biggezt, but da strongezt for sure ) | 10:10 | |||||||||||||||||||||||||||||||||||||
| nine | jnthn: isn't grammar matching just a special case of dispatch? :P | ||||||||||||||||||||||||||||||||||||||
| ShimmerFairy | .oO(Non-deterministic Finite Dispatcher) |
10:11 | |||||||||||||||||||||||||||||||||||||
| jnthn | Actually, the design dispatch programs at polymoorphic sites basically does look just like a finite automata, just over arguments instead of chars :P | 10:14 | |||||||||||||||||||||||||||||||||||||
| *design of | |||||||||||||||||||||||||||||||||||||||
|
10:28
sena_kun joined
10:30
Altai-man_ left
|
|||||||||||||||||||||||||||||||||||||||
| Geth | problem-solving: JJ++ created pull request #202: Solution for issue #72: spin off module publishing tutorial in the documentation. |
10:36 | |||||||||||||||||||||||||||||||||||||
|
10:42
squashable6 left
|
|||||||||||||||||||||||||||||||||||||||
| ShimmerFairy | nqp: say(nqp::sprintf("%08.e", [1])); say(nqp::sprintf("%-8.e", [1])); say(nqp::sprintf("%-08.e", [1])); | 10:44 | |||||||||||||||||||||||||||||||||||||
| camelia | 0001e+00 1e+00 001e+000 |
||||||||||||||||||||||||||||||||||||||
|
10:44
squashable6 joined
|
|||||||||||||||||||||||||||||||||||||||
| ShimmerFairy | The handling of the '-' and '0' flags in %e seems broken to me, or is adding one of the zeros in the exponent intentional? | 10:45 | |||||||||||||||||||||||||||||||||||||
|
10:51
JJMerelo left
11:07
MasterDuke left
|
|||||||||||||||||||||||||||||||||||||||
| lizmat | ShimmerFairy: it is not | 11:08 | |||||||||||||||||||||||||||||||||||||
| ShimmerFairy | That's what I figured. I would expect - to override 0 and put spaces on the right, like in other directives. | ||||||||||||||||||||||||||||||||||||||
|
11:12
finsternis joined
12:27
Altai-man_ joined
12:30
sena_kun left
13:04
MasterDuke joined
|
|||||||||||||||||||||||||||||||||||||||
| Kaiepi | i was taking a bit of a break from things for a couple weeks, i'll get all those open prs rebased later today | 13:06 | |||||||||||||||||||||||||||||||||||||
|
13:39
MasterDuke left
13:57
MasterDuke joined
14:28
sena_kun joined
14:29
Altai-man_ left
14:38
MasterDuke left
|
|||||||||||||||||||||||||||||||||||||||
| [Tux] |
|
14:48 | |||||||||||||||||||||||||||||||||||||
| nine | So, my <unit-outer> seems to be missing it's outer, which is why symbols from the setting are just not available at runtime. It's missing already in the mbc file. That's odd however as I clearly give it an outer using nqp::forceouterctx (which I just documented as well) as evidenced by the debug output: forceouterctx(0x6e39d30, 0x5d22830), replacing sf 0x4b03538 <unit-outer>(nested) 91 outer (nil) with | 15:35 | |||||||||||||||||||||||||||||||||||||
| 0x4107d28 | |||||||||||||||||||||||||||||||||||||||
|
15:38
Xliff joined
|
|||||||||||||||||||||||||||||||||||||||
| nine | Oooh! Of course nqp::forceouterctx only affects the MVMCode and MVMStaticFrame, i.e. runtime representation, but not the compiled code they came from. | 15:47 | |||||||||||||||||||||||||||||||||||||
| So what does setting outer_ctx in the compiler adverbs actually do? | |||||||||||||||||||||||||||||||||||||||
| jnthn | nine: I think it's used by the compiler to find symbols at compile time also | 15:49 | |||||||||||||||||||||||||||||||||||||
|
15:58
domidumont left
|
|||||||||||||||||||||||||||||||||||||||
| nine | Though a typical <unit-outer> also doesn't seem to have an outer in the bytecode. So how does it acquire one at runtime? I guess...it's that forceouterctx generated by Perl6::World::load_setting | 16:00 | |||||||||||||||||||||||||||||||||||||
| jnthn | Yes | ||||||||||||||||||||||||||||||||||||||
| Or at least,that's my recollection of how it works | |||||||||||||||||||||||||||||||||||||||
| I suspect this stuff will change a bit in RakuAST...I've noticed that a startup cost is iterating the whole core.setting symbols and building a QAST::Block with lexicals for them all | 16:01 | ||||||||||||||||||||||||||||||||||||||
| When it'd be better to just do lookups into the context when we need to | |||||||||||||||||||||||||||||||||||||||
| nine | Darn...I can't just set the MAST::Frame's outer during compilation as that frame hasn't even been compiled at that point. | 16:10 | |||||||||||||||||||||||||||||||||||||
|
16:16
Geth left
|
|||||||||||||||||||||||||||||||||||||||
| timotimo | oof | 16:19 | |||||||||||||||||||||||||||||||||||||
| gotta fake the outers up or something? uuuggghhhh | |||||||||||||||||||||||||||||||||||||||
| nine | I figure it'd be best to generate the same load_setting call as with non-nested compilations. After all a raku block in a Perl 5 module doesn't have an outer scope other than the setting. Except for nested blocks of course. But I'll figure out something for them once I have the simpler case up and running | 16:23 | |||||||||||||||||||||||||||||||||||||
| Kinda funny. A year ago it wasn't even possible to precompile modules when they used Perl 5 modules. Now that capability looks like the bare minimum and I'd be quite unhappy if we couldn't precompile those raku blocks into the user :) | 16:26 | ||||||||||||||||||||||||||||||||||||||
| Btw. jnthn next up on my list is definitely going to be non-Raku-module dependencies for precomp files. It gets tedious having to modify the user module on every change to the Raku code in the Perl 5 module ;) | 16:27 | ||||||||||||||||||||||||||||||||||||||
|
16:27
Altai-man_ joined
16:28
Geth joined
|
|||||||||||||||||||||||||||||||||||||||
| [Coke] | nine++ nine++ ... (let's assume I did that nine times.) | 16:29 | |||||||||||||||||||||||||||||||||||||
|
16:29
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
| nine | Ok, for that load_setting call to work, it won't do to have 2 dependencies+deserialize frames in the comp unit... | 16:32 | |||||||||||||||||||||||||||||||||||||
|
16:48
MasterDuke joined
|
|||||||||||||||||||||||||||||||||||||||
| jnthn | nine: ooh, that'd be good for multiple things, not least badger... :) | 16:56 | |||||||||||||||||||||||||||||||||||||
| (The "write SQL, get Raku subs" thingy) | 16:57 | ||||||||||||||||||||||||||||||||||||||
| nine | But first, I've got to get out of this rabbit hole... | 17:03 | |||||||||||||||||||||||||||||||||||||
|
17:18
domidumont joined
|
|||||||||||||||||||||||||||||||||||||||
| Xliff | jnthn: I thought badger emitted Go | 18:12 | |||||||||||||||||||||||||||||||||||||
| jnthn | Xliff: Wrong badger. :) | 18:25 | |||||||||||||||||||||||||||||||||||||
|
18:25
hankache joined
18:28
sena_kun joined
18:30
Altai-man_ left
|
|||||||||||||||||||||||||||||||||||||||
| Geth | rakudo/set_equality: 701f4cfb40 | (Elizabeth Mattijsen)++ | 11 files Implement set equality operators - (==) returns whether operands are the same using QuantHash semantics - ≡ unicode version of (==) - ≢ returns whether operrands are *NOT* the same using QuantHash semantics Although "a (==) b" can be considered short for "a.Set (==) b.Set", it will ... (16 more lines) |
18:34 | |||||||||||||||||||||||||||||||||||||
| rakudo: lizmat++ created pull request #3727: Implement set equality operators |
|||||||||||||||||||||||||||||||||||||||
| roast/set_equality: 715fb79b93 | (Elizabeth Mattijsen)++ | 2 files Tests for Rakudo PR #3727 |
18:35 | ||||||||||||||||||||||||||||||||||||||
| roast: lizmat++ created pull request #646: Tests for Rakudo PR #3727 |
18:36 | ||||||||||||||||||||||||||||||||||||||
|
18:51
hankache left,
lucasb joined
19:25
domidumont left
|
|||||||||||||||||||||||||||||||||||||||
| timotimo | ^- so <a a a b b c> (==) <a b c> will give True or False? QuantHash/Bag or Set? | 19:28 | |||||||||||||||||||||||||||||||||||||
| i guess arrays/lists become Set, and if one is a Bag or Mix, that's what the others become | 19:36 | ||||||||||||||||||||||||||||||||||||||
| nine | Now to get my load_setting call running I need to share dependencies+deserialize between outer and nested compiler. To get that running I need to remove my workaround in compile_in_context where I explicitly did not share the CompUnit's data. | 19:53 | |||||||||||||||||||||||||||||||||||||
| The intruiging thing about those failures are that they are of the kind "Cannot invoke this object (REPR: Null; VMNull)" which occurs when I share the frames list between compilations. | 19:54 | ||||||||||||||||||||||||||||||||||||||
| But...why? If anything sharing should fix missing frames, not cause them. | |||||||||||||||||||||||||||||||||||||||
| After all how can having access to all frames of all concurrent compilations cause us to lose some? | 19:55 | ||||||||||||||||||||||||||||||||||||||
| timotimo | is it a missing frame, or is it something just not having the frame assigned to it, or the invocation protocol is not set up, or whatever else? | 20:03 | |||||||||||||||||||||||||||||||||||||
| do you have a VM by now that you can use rr in? | |||||||||||||||||||||||||||||||||||||||
| nine | I can use rr | 20:04 | |||||||||||||||||||||||||||||||||||||
| New observations: lots and lots of nested compilations happen successfully before the failing one. And the failing one also just adds frames to @!frames, though curiously one of them is rethrow | 20:21 | ||||||||||||||||||||||||||||||||||||||
|
20:21
sena_kun left,
sena_kun joined
20:27
Altai-man_ joined
20:29
sena_kun left
22:28
sena_kun joined
22:29
Altai-man_ left
22:53
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
| lizmat | timotimo: <a a a b b c> (==) <a b c> is the same as <a a a b b c>.Set (==) <a b c>.Set so True | 23:25 | |||||||||||||||||||||||||||||||||||||
| timotimo | OK | 23:27 | |||||||||||||||||||||||||||||||||||||
|
23:40
lucasb left
|
|||||||||||||||||||||||||||||||||||||||