coleman | quick question: whoever owns the rakubrew.org domain, have you renewed it? infra@raku.org got an email 10 days ago that says it needs to be renewed in 30 days | 00:21 | |
ugexe | Windows on arm also has an x86 emulation layer | 00:43 | |
timo | OK, in that case we would be building an x86_64 moar and everything would be as if we were targeting just 64bit windows? | 00:51 | |
ugexe: do you happen to have a hint for me where i should be looking to figure out the issue where one module causes precompilation for another module to be re-done? | 00:53 | ||
Geth | App-MoarVM-Debug/main: c1c50d57e0 | (Timo Paulssen)++ | lib/App/MoarVM/Debug.rakumod add "step until" command initial implementation, not stable yet |
01:12 | |
App-MoarVM-Debug/main: f96b92e700 | (Timo Paulssen)++ | lib/App/MoarVM/Debug/Formatter.rakumod don't explode with nested values in tables |
|||
ugexe | the first thing i'd look at is if it goes away if you switch JSON::Class:ver<0.0.14+> to JSON::Class:ver<0.0.21> or whatever, which would suggest the precomp repositories have a problem with version ranges | 01:29 | |
timo | with my local changes, you now get a handle to a dispatcher's current capture with the "bt" command, and you can get details about the callsite and also the values in the capture with the "positionals" command | 01:46 | |
ugexe | github.com/rakudo/rakudo/blob/93ba...#L198-L204 like in this logic load-unit is only passed a dependency id which I'm not sure can represent a range | 01:47 | |
Geth | App-MoarVM-Debug/main: 102616101c | (Timo Paulssen)++ | lib/App/MoarVM/Debug.rakumod support "callsite" kind in positionals response when it's not one kind for all slots like in VMArray, but each entry can have a different kind like in an MVMCapture. also: named entries |
01:52 | |
App-MoarVM-Debug/main: cf1167d5c0 | (Timo Paulssen)++ | 2 files bold line numbers in stack trace output |
|||
timo | ah, that's very interesting | 01:53 | |
so there should perhaps be a fix for that in that code | |||
the precompilation depends on the thing we choose from the range, rather than what range we pass, after all | |||
does that also mean that if we compile something for .14+ and something else for 15+ those would conflict against each other, just in general? and if we have one program with both of these, they would keep re-writing one with the other, causing repeated precomp on every run? | 01:58 | ||
ugexe | we'd probably want to test that theory by changing the 14+ to 21 because it might not be the case. my mental model of the precomp code is not as strong as one might think :/ | 02:03 | |
timo | TYVM for the suggestion in any case. have to go for now, but i'll try that soon | 02:04 | |
02:12
Voldenet left
02:15
Voldenet joined
|
|||
timo | i'm kind-of missing some sophisticated thing to let me define a command grammar and get tab completion and help and whatnot "for free" | 09:15 | |
i'm thinking about this in the context of the debugger CLI | |||
ideally i'd at the same time have the ability to accept some keyboard combos as input, and also do TUI output | 09:17 | ||
09:51
sena_kun joined
10:07
sena_kun left
10:19
finanalyst joined
|
|||
patrickb | Terminal-LineEditor / Terminal-Widgets is the best we currently have. | 10:53 | |
They are not yet in a good shape. But given I want to use them for the TUI debugger, they'll soon have to be. | 10:54 | ||
11:45
andinus left
|
|||
timo | right | 11:49 | |
11:57
finanalyst left,
finanalyst joined
12:04
finanalyst left,
finanalyst joined
|
|||
Geth | rakudo/main: 55e40088af | (Elizabeth Mattijsen)++ | src/core.c/REPL.rakumod Internally document the REPL.ctxsave method better It is vital to a correct REPL functioning, I found out the hard way |
12:14 | |
timo | lizmat: you see the call to ctxsave in every --target=ast or --target=optimize | 12:20 | |
lizmat | yeah, I think I'm finally starting to grok the interaction between $*CTXSAVE and $*MAIN_CTX | 12:22 | |
fwiw, I'm re-imagining the REPL as a module at the moment, with the intent of replacing the current REPL code in core | 12:23 | ||
timo | yeah i think MAIN_CTX is probably what makes every line appear to be nested inside the previous one, so that we can have variables | ||
do you have an opinion on making the repl code more oriented around Supply to make it a bit pipeline-like in design, very vaguely inspired by how Cro works? i must admit i haven't thought that through very thoroughly | 12:24 | ||
, though | 12:25 | ||
lizmat | no, not really | ||
short-term goals: 1. better interface for prompt handling, so you can make your own easier | |||
raku -MREPL::MyHandler | 12:26 | ||
would start the REPL with the REPL::MyHandler role / class to do the handling | 12:27 | ||
timo | in any case, for the thing i did recently with the "semantic integration" i wanted to be able to override not just what to print for the prompt, but also how it reacts when the prompt is finished / inputting is done, and probably before and after the point where the repl checks if there has been any output on $*OUT or $*ERR, if it should print the result from the evaluated code, and also if there | ||
lizmat | 2. get grammar changes persistent as well | ||
timo | was an error on if it was successful | ||
i imagine you planned for almost exactly that already | |||
yes, grammar changes will be helpful | |||
lizmat | 2. handling of natives | ||
timo | i wonder if that's more than just stashing away the $?LANG or whatever it's called | 12:28 | |
maybe we'll end up with a LANGSAVE haha | |||
lizmat | well, perhaps... | ||
but first to get some interface going :-) | 12:29 | ||
timo | right-o | ||
if there's also a way to get a custom $*OUT and $*ERR that is used by the executed code, that'd be neat | |||
lizmat | fwiw, it would not be mixing in the handling: the REPL would have an $!editor attribute that "handles" all of the interface methods | 12:30 | |
at least, that's my current thinking | 12:31 | ||
timo | Did You Knowā¢ that if every executed line gets its own $*OUT and $*ERR, then you can have code that keeps doing stuff in the background and the new output could be shown differently between old and new code outputting stuff, or you could have a section of output under each line entered that updates after the fact through moving the cursor there or something more complicated in terms of TUI | ||
and if the $*OUT and $*ERR are "special" objects with some smarts, then code could output stuff without writing over the prompt and what the user has already entered | |||
you can even be mean and make their .t return True >:) | 12:32 | ||
lizmat | hnmmm on that thought: has someone tried to do: raku -e 'repl' | 12:33 | |
on those gitBash shells on Windows ? | |||
timo | making $*ERR go to a separate UI pane on the side and be "mixed" and making $*OUT split by executed line ... | ||
oh huh. i was looking if there's any hexdump module on raku.land and there wasn't but now i see HexDump::Tiny in the community modules, and there were definitely commits about zef releases there | 12:36 | ||
lizmat | yeah, I resurrected that last year if I remember correctly | 12:37 | |
one of perlpilot's modules :-( | 12:38 | ||
timo | rest in peace, buddy ... | 12:39 | |
lizmat | timo: the "editor" is supposed to provide a "read" method | 12:41 | |
that could do checking and such | |||
timo | it would read input from the user, right? what kind of checking are you thinking of? | 12:42 | |
lizmat | "how it reacts when the prompt is finished / inputting is done" was your suggestion? | ||
timo | right, as long as it's easy to just add to whatever line editor the repl would already have chosen | 12:43 | |
so that i can just say "before prompting, and after input is finished, do this. otherwise, do whatever you would normally do" with a callsame or so | 12:44 | ||
lizmat | well, while it's a module, it's going to be flexible enough | ||
timo | good | 12:45 | |
do you think changing the way output happens, like reacting differently to error or success, would go to some other place than $!editor? | |||
lizmat | the $!editor needs to provide an OUT and ERR method, which in the fallback case return $*OUT and $*ERR | 12:47 | |
that would give you all of the flexibility you need ? | |||
timo | this lets me give an OUT and ERR to the executed code, or is that only used by the repl code to do outputs and error printing? | 12:48 | |
lizmat | before doing the EVAL, it does: my $*OUT := self.OUT; my $*ERR := self.ERR; | ||
is that an answer ? | 12:49 | ||
timo | it'd be a little bit awkward to dance between prompt and outputting, especially if the repl code is silly like `Promise.in(2).then({ say "haha!" })` | ||
i'd prefer (or like having additionally) making the code hookable that takes the result from evaluating and printing it | 12:50 | ||
i hope i'm not asking too much, i'll stop before it comes to the kitchen sink, i promise | 13:01 | ||
lizmat | no, by all means, let those suggestions flow in! | 13:02 | |
just introduced a "silent" method to $!editor, that should return True if there was no output | |||
so that's abstracted away now as well | 13:03 | ||
13:48
finanalyst left
13:57
finanalyst joined
14:25
finanalyst left
|
|||
timo | m: say 5.rotor | 14:28 | |
camelia | Cannot resolve caller infix:Ā«<Ā»(); none of these signatures matches: ( --> Bool::True) ($ --> Bool::True) (\a, \b) (Real $a, Real $b) (Int:D $a, Int:D $b --> Bool) (int $a, int $b --> Bool) (uint $a, uint $bā¦ |
||
timo | m: say "buf:"; for Buf.new(1,2,3)[^5] { .raku.say }; say "blob:"; for Blob.new(1,2,3)[^5] { .raku.say } | 14:44 | |
camelia | buf: 1 2 3 0 0 blob: 1 2 3 Failure.new(exception => X::OutOfRange.new(what => "Index", got => 3, range => "0..2", comment => Any), backtrace => Backtrace.new) Failure.new(exception => X::OutOfRange.new(what => "Index", got => 4, ā¦ |
||
timo | this difference is because one is mutable, the other is fixed-size and immutable? | 14:45 | |
i wanted a fixed-length list with items from the input array/buf/blob/whatever but some sentinel when there was no item there (because the input is not long enough); using .list[^16] gave me Nil for those cases, which works nicely | 14:48 | ||
15:07
[Coke] joined
|
|||
ab5tract | m: say ā5ā.rotor | 15:27 | |
camelia | Cannot resolve caller infix:Ā«<Ā»(); none of these signatures matches: ( --> Bool::True) ($ --> Bool::True) (\a, \b) (Real $a, Real $b) (Int:D $a, Int:D $b --> Bool) (int $a, int $b --> Bool) (uint $a, uint $bā¦ |
||
ab5tract | At least itās consistent there | ||
timo | hm. no way to mix a role into a Buf or Blob? | 15:40 | |
m: role Marker {}; (Buf but Marker).new(1,2,3).say | 15:41 | ||
camelia | No such method 'mixin' for invocant of type 'Perl6::Metamodel::ParametricRoleGroupHOW' in block <unit> at <tmp> line 1 |
||
timo | m: role Marker {}; (Buf.new(1,2,3) but Marker).say | ||
camelia | This REPR cannot change type in block <unit> at <tmp> line 1 |
||
timo | m: role Marker {}; (Buf[int8] but Marker).new(1,2,3).say | ||
camelia | No such method 'mixin' for invocant of type 'Perl6::Metamodel::CurriedRoleHOW' in block <unit> at <tmp> line 1 |
||
timo | m: role Marker {}; (buf8 but Marker).new(1,2,3).say | ||
camelia | No such method 'mixin' for invocant of type 'Perl6::Metamodel::CurriedRoleHOW' in block <unit> at <tmp> line 1 |
||
timo | m: role Marker {}; (class :: { } but buf8 but Marker).new(1,2,3).say | ||
camelia | ===SORRY!=== Error while compiling <tmp> Operators 'but' and 'but' are non-associative and require parentheses at <tmp>:1 ------> role Marker {}; (class :: { } but buf8ā but Marker).new(1,2,3).say expecting any of: ā¦ |
||
timo | m: role Marker {}; ((class :: { } but buf8) but Marker).new(1,2,3).say | 15:42 | |
camelia | P6opaque: missing attribute protocol in compose of <anon|1>+{Buf[uint8]} in block <unit> at <tmp> line 1 |
||
[Coke] | Buf is a role - can you mix a role into a role with no class? | ||
m: role X {}; role Y {}; dd Y but X; | 15:43 | ||
camelia | No such method 'mixin' for invocant of type 'Perl6::Metamodel::ParametricRoleGroupHOW' in block <unit> at <tmp> line 1 |
||
timo | m: class MTE {}; (MTE but buf8).new(1,2,3).raku.say | ||
camelia | P6opaque: missing attribute protocol in compose of MTE+{Buf[uint8]} in block <unit> at <tmp> line 1 |
||
timo | m: class MTE is repr<VMArray> {}; (MTE but buf8).new(1,2,3).raku.say | ||
camelia | MTE+{Buf[uint8]}.new(1,2,3) | ||
[Coke] | rlwrap is messing with my repl .:| | 15:44 | |
timo | export INSIDE_EMACS=1 | 15:49 | |
if you mean the automatic self-re-execution of rakudo with rlwrap if it's not inside it already and doesn't have a line editor module installed | |||
in that case, updating to latest will also disable that behaviour | |||
[Coke] | I killed a running REPL and the next repl in that shell was wonky | 15:51 | |
yah, am not at HEAD | |||
timo | oh, that's maybe just left-over stuff that rlwrap set up with some escape sequences? i'd probably just "reset" my terminal if i see something like that | 16:12 | |
[Coke] | mmm | 16:14 | |
17:42
finanalyst joined
18:08
finanalyst left
19:03
finanalyst joined
19:34
finanalyst left
20:00
finanalyst joined
|
|||
lizmat | timo: re my REPL work: raku.land/zef:lizmat/REPL | 20:22 | |
still early days, but it works, so far :-) | |||
timo | cool | 20:32 | |
lizmat | Readline Linenoise Terminal::LineEditor now supported | 20:57 | |
tomorrow I'll be documenting the API | |||
afk& | 21:01 | ||
21:04
sena_kun joined
23:07
sena_kun left
|