🦋 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:01
reportable6 joined
|
|||||||||||||||||||||||||||||||||||||||
japhb | Yup, -116- starts at full speed. | 00:08 | |||||||||||||||||||||||||||||||||||||
-117- consists of an NQP bump that itself consists of a MoarVM bump, which upgrades to libuv 1.45. | 00:09 | ||||||||||||||||||||||||||||||||||||||
libuv 1.45 introduces io_uring support for Linux, while 1.46 fixes an io_uring bug by turning off support for kernels older than 5.15.90. | 00:10 | ||||||||||||||||||||||||||||||||||||||
And guess what? My kernel is 5.15.0-78-generic | |||||||||||||||||||||||||||||||||||||||
MoarVM HEAD is "Update libuv to version 1.46 (#1761)" | 00:13 | ||||||||||||||||||||||||||||||||||||||
NQP HEAD is "Bump MoarVM for libuv update" and refers to the MoarVM HEAD commit | 00:16 | ||||||||||||||||||||||||||||||||||||||
ugexe | Nice | 00:17 | |||||||||||||||||||||||||||||||||||||
japhb | Rakudo has "Bump NQP to get libuv update" referring to the NQP HEAD | 00:18 | |||||||||||||||||||||||||||||||||||||
So ... now I'm confused again; I thought I'd found it. | 00:19 | ||||||||||||||||||||||||||||||||||||||
Well, certainly 2023.04-116 to 2023.04-117 is the performance cliff, and it is for the libuv 1.45 bump, but the later libuv 1.46 bump doesn't seem to fix it for me, even though it sure smells like it ought to. | 00:20 | ||||||||||||||||||||||||||||||||||||||
AH! libuv 1.46 doesn't disable io_uring support *entirely*, but only for the function uv__iou_fs_close | 00:21 | ||||||||||||||||||||||||||||||||||||||
So ... probably my kernel has some other problem with io_uring. | 00:22 | ||||||||||||||||||||||||||||||||||||||
japhb glares at libuv -- "You DEFINE a uv__use_io_uring function, but you don't CALL it, and that's really the point, isn't it?" | 00:40 | ||||||||||||||||||||||||||||||||||||||
How do I force an *exact* version match for `zef install`? I'm getting this: | 01:29 | ||||||||||||||||||||||||||||||||||||||
zef install 'Term::termios:ver<0.2>' | |||||||||||||||||||||||||||||||||||||||
===> Searching for: Term::termios:ver<0.2> | |||||||||||||||||||||||||||||||||||||||
===> Building: Term::termios:ver<0.2.3>:auth<zef:krunen> | |||||||||||||||||||||||||||||||||||||||
But I specifically want what I asked for, and NOT 0.2.3. | 01:30 | ||||||||||||||||||||||||||||||||||||||
ugexe | for me it gets 0.2 | 02:25 | |||||||||||||||||||||||||||||||||||||
i would wonder if you are on a recent version of zef | 02:27 | ||||||||||||||||||||||||||||||||||||||
MasterDuke | ugexe: have you looked at my new pair of stat/syscall PRs? | 02:33 | |||||||||||||||||||||||||||||||||||||
japhb | ugexe: What version of zef should I expect? `zef --version` gives me 0.18.3 | 04:10 | |||||||||||||||||||||||||||||||||||||
04:16
evalable6 left,
linkable6 left
04:19
evalable6 joined
04:20
linkable6 joined
06:00
reportable6 left
06:01
reportable6 joined
|
|||||||||||||||||||||||||||||||||||||||
lizmat | japhb: that is I think the most recent | 07:27 | |||||||||||||||||||||||||||||||||||||
07:47
linkable6 left,
evalable6 left
07:48
evalable6 joined
07:50
linkable6 joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: d9085270a8 | (Elizabeth Mattijsen)++ | src/Raku/Grammar.nqp RakuAST: give ⇒ its own token It was done for all other unicode/ascii aliases as well |
07:57 | |||||||||||||||||||||||||||||||||||||
08:32
sena_kun joined
08:58
hythm joined
|
|||||||||||||||||||||||||||||||||||||||
nemokosch | termios 0.2 is on REA, if at all | 09:08 | |||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: 37aa0544b8 | (Elizabeth Mattijsen)++ | src/Raku/ast/operator-properties.rakumod RakuAST: Streamline OperatorProperties a bit But mostly add many more comments as to the reason why it exists, and why it exists that way. |
09:55 | |||||||||||||||||||||||||||||||||||||
hythm | m: say v0.2.3 ~~ v0.2 ## v0.2 specification matches higher versions as well (as per rakudo), so candidates like `v0.2.1`, `v0.2.2`, `v0.2.3` etc... will match `v0.2` specification, since v0.2.3 is the latest version, it will be chosen ( not saying this should be the correct behavior, but this might be what is happening for Term::termios) | 10:00 | |||||||||||||||||||||||||||||||||||||
camelia | True | ||||||||||||||||||||||||||||||||||||||
hythm | This would not happen if Term::termios uses fixed version scheme eg. (0.1, 0.2 ...) or (0.0.1, 0.0.2 ...) | 10:02 | |||||||||||||||||||||||||||||||||||||
nemokosch | it might make sense for smartmatching to accept v0.2.3 for v0.2 - but then version resolution shouldn't use smartmatching | 10:27 | |||||||||||||||||||||||||||||||||||||
10:31
linkable6 left,
evalable6 left
10:32
evalable6 joined,
linkable6 joined
11:33
hythm left
12:00
reportable6 left,
reportable6 joined
12:02
hythm joined
|
|||||||||||||||||||||||||||||||||||||||
hythm | m: say v0.2.3 ~~ Version.new( '0.2+' ) | 12:03 | |||||||||||||||||||||||||||||||||||||
camelia | True | ||||||||||||||||||||||||||||||||||||||
hythm | m: say v0.2.3 ~~ Version.new( '0.2-' ) | ||||||||||||||||||||||||||||||||||||||
camelia | True | ||||||||||||||||||||||||||||||||||||||
hythm | m: say Version.new( '0.2-' ).minus | 12:04 | |||||||||||||||||||||||||||||||||||||
camelia | True | ||||||||||||||||||||||||||||||||||||||
12:10
sena_kun left
12:19
ab5tract joined
|
|||||||||||||||||||||||||||||||||||||||
ab5tract | lizmat: can you kindly add a RAKUDO_RAKUAST=1 label to this issue I just filed? github.com/rakudo/rakudo/issues/5353 | 12:22 | |||||||||||||||||||||||||||||||||||||
lizmat | done | ||||||||||||||||||||||||||||||||||||||
ab5tract | thanks! | 12:23 | |||||||||||||||||||||||||||||||||||||
now, how to go about fixing it... :) | 12:24 | ||||||||||||||||||||||||||||||||||||||
I guess this was probably a known issue? | |||||||||||||||||||||||||||||||||||||||
lizmat | not to me | 12:25 | |||||||||||||||||||||||||||||||||||||
and re fixing: nine might have some ideas and/or vrurg | |||||||||||||||||||||||||||||||||||||||
jdv | vrurg: yes - github.com/rakudo/rakudo/blob/main...de.pod#L21 | 12:38 | |||||||||||||||||||||||||||||||||||||
ab5tract | weird, I can't seem to compile rakudo from a realclean state. I get linker issues with libuv ("multiple definition of ...") | 12:59 | |||||||||||||||||||||||||||||||||||||
using `make realclean; find . -name .precomp -print0 | xargs -0 -r rm -rf; perl ./Configure.pl --gen-moar --backends=moar; make` | |||||||||||||||||||||||||||||||||||||||
removing 3rdparty doesn't fix it | 13:01 | ||||||||||||||||||||||||||||||||||||||
13:12
linkable6 left
13:14
linkable6 joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: 187865144b | (Elizabeth Mattijsen)++ | 8 files Make &infix:<⇒> a first class citizen |
13:19 | |||||||||||||||||||||||||||||||||||||
ugexe | hmm, 2.0 compared to 2.0.3 should turn 2.0 into 2.0.0 | 13:42 | |||||||||||||||||||||||||||||||||||||
m: say (v2.0).ACCEPTS(v2.0.3) | |||||||||||||||||||||||||||||||||||||||
camelia | True | ||||||||||||||||||||||||||||||||||||||
ugexe | m: say (v2.0.0).ACCEPTS(v2.0.3) | ||||||||||||||||||||||||||||||||||||||
camelia | False | ||||||||||||||||||||||||||||||||||||||
ugexe | something like v2.0 should never act as a range, and should only match against versions that are considered identical to 2.0 | 13:45 | |||||||||||||||||||||||||||||||||||||
m: say v2.0 cmp v2.0.0' | |||||||||||||||||||||||||||||||||||||||
camelia | ===SORRY!=== Error while compiling <tmp> Malformed postfix call at <tmp>:1 ------> say v2.0 cmp v2.0.⏏50' |
||||||||||||||||||||||||||||||||||||||
ugexe | m: say v2.0 cmp v2.0.0 | ||||||||||||||||||||||||||||||||||||||
camelia | Same | ||||||||||||||||||||||||||||||||||||||
ugexe | if those are identical, then how could it match 2.0.3? (rhetorical question... but it shouldnt) | 13:46 | |||||||||||||||||||||||||||||||||||||
the only reason for that behavior to exist really is so `use v6` can match v6.c, v6.d, etc | 13:47 | ||||||||||||||||||||||||||||||||||||||
but then just use v6.8 | |||||||||||||||||||||||||||||||||||||||
v6.* | 13:48 | ||||||||||||||||||||||||||||||||||||||
i feel like that Version should be updated to act such that v2.0 doesn't match against v2.0.3, but then `use v6;` is gonna need some sort of special casing in code to turn it into v6.* (and should probably send the user a deprecation message to `use v6.*` instead of `use v6`) | 13:50 | ||||||||||||||||||||||||||||||||||||||
lizmat: vrurg any idea how i'd go about attempting that? i dunno where all the v6 handling logic is | 13:53 | ||||||||||||||||||||||||||||||||||||||
even still, it will be less than perfect, since all versions for non-core rakudo will turn v6 into v6.0, whereas rakudo will turn `use v6` into `use v6.*` (* instead of 0) | 13:54 | ||||||||||||||||||||||||||||||||||||||
is there even any reason to do *anything* with `use v6;` even? | 13:56 | ||||||||||||||||||||||||||||||||||||||
like does anything relevant happen when `use v6;`? | |||||||||||||||||||||||||||||||||||||||
originally i thought it was aimed to tell the difference between perl and raku code source | |||||||||||||||||||||||||||||||||||||||
lizmat | yes, that was the original intent | 13:57 | |||||||||||||||||||||||||||||||||||||
and recently I have been removing it from all of roast and t, unless a specific version of Raku was required | 13:58 | ||||||||||||||||||||||||||||||||||||||
still there's plenty of it in the ecosystem | |||||||||||||||||||||||||||||||||||||||
ugexe | yeah, there are a lot of modules and their tests that use it so im wondering how to get around blowing those up if i were to change it | ||||||||||||||||||||||||||||||||||||||
lizmat | I know where it lives in RakuAST | ||||||||||||||||||||||||||||||||||||||
but I think we should think about fixing Version more generally | 13:59 | ||||||||||||||||||||||||||||||||||||||
ugexe | well that would be the intention, but fixing Version is going to break/change what `use v6;` does | ||||||||||||||||||||||||||||||||||||||
vrurg | As far as I remember, plan v6 loads the current default version, it's not v6.*. | ||||||||||||||||||||||||||||||||||||||
lizmat | indeed | 14:00 | |||||||||||||||||||||||||||||||||||||
ugexe | what does v6.* load? .PREVIEW? | ||||||||||||||||||||||||||||||||||||||
ab5tract | wait, what does v6.* do if not load the latest released version? | ||||||||||||||||||||||||||||||||||||||
ugexe | v6.* for a module would load the latest released version for instance | ||||||||||||||||||||||||||||||||||||||
lizmat | m: use v6.*; say $*RAKU | ||||||||||||||||||||||||||||||||||||||
camelia | Raku (6.e) | ||||||||||||||||||||||||||||||||||||||
ab5tract | intriguing | ||||||||||||||||||||||||||||||||||||||
ugexe | yeah thats fine | ||||||||||||||||||||||||||||||||||||||
lizmat | m: say Q|use v6.*; $*RAKU|.AST.EVAL | 14:01 | |||||||||||||||||||||||||||||||||||||
camelia | Raku (6.e.PREVIEW) | ||||||||||||||||||||||||||||||||||||||
ugexe | .PREVIEW is sorted lower than .0, so makes sense | ||||||||||||||||||||||||||||||||||||||
vrurg | ugexe: I mean you shouldn't worry about 'use v6' behavior. | ||||||||||||||||||||||||||||||||||||||
ugexe | oh, that would be a change in behavior as well | ||||||||||||||||||||||||||||||||||||||
lizmat | I'm not sure whether that difference is important | ||||||||||||||||||||||||||||||||||||||
ugexe | vrurg: ah ok, so `use v6;` could be a no-op? | ||||||||||||||||||||||||||||||||||||||
vrurg | It is a no-op. | ||||||||||||||||||||||||||||||||||||||
ugexe | lizmat: it is for modules | ||||||||||||||||||||||||||||||||||||||
lizmat | yes, it's a no-op in Raku | ||||||||||||||||||||||||||||||||||||||
ugexe | that way someone can release a .PREVIEW version of a module, and the final version without .PREVIEW would be sorted newer | 14:02 | |||||||||||||||||||||||||||||||||||||
not that anyone does that, so we don't have to really protect that behavior. but it does have a useful aspect | |||||||||||||||||||||||||||||||||||||||
lizmat | so, maybe Version.ACCEPTS needs more scrutiny | 14:03 | |||||||||||||||||||||||||||||||||||||
vrurg | I use v6.e.PREVIEW in newer modules. :) | ||||||||||||||||||||||||||||||||||||||
lizmat | any missing part is considered to be a * | ||||||||||||||||||||||||||||||||||||||
ugexe | vrurg: yeah, I mean for modules (not loading raku version though) | ||||||||||||||||||||||||||||||||||||||
lizmat | m: say v2.0 ~~ v2.0.3 | ||||||||||||||||||||||||||||||||||||||
camelia | False | ||||||||||||||||||||||||||||||||||||||
ugexe | use Foo:ver<2.0.PREVIEW> | ||||||||||||||||||||||||||||||||||||||
lizmat | m: say v2.0.3 ~~ v2.0 | ||||||||||||||||||||||||||||||||||||||
camelia | True | ||||||||||||||||||||||||||||||||||||||
lizmat | m: say v2.0.3 ~~ v2.0.* | ||||||||||||||||||||||||||||||||||||||
camelia | True | ||||||||||||||||||||||||||||||||||||||
lizmat | they're the same | ||||||||||||||||||||||||||||||||||||||
ugexe | say (v2.0).ACCEPTS(v2.0.3); # this should be false | 14:04 | |||||||||||||||||||||||||||||||||||||
evalable6 | True | ||||||||||||||||||||||||||||||||||||||
vrurg | ugexe: Ah, use... Anybody's using that in module versions?? Never seen it in the wild. | ||||||||||||||||||||||||||||||||||||||
ugexe | vrurg: i dont think so, although the idea was brought up before briefly in some issue long ago | 14:05 | |||||||||||||||||||||||||||||||||||||
vrurg | Looking at the discussion, it smells more and more like a problem-solving to me. | 14:06 | |||||||||||||||||||||||||||||||||||||
ugexe | m: say v2.0 cmp v2.0.3 | ||||||||||||||||||||||||||||||||||||||
camelia | Less | ||||||||||||||||||||||||||||||||||||||
ugexe | m: say v2.0 cmp v2.0.0 | ||||||||||||||||||||||||||||||||||||||
camelia | Same | ||||||||||||||||||||||||||||||||||||||
ugexe | it just doesn't make sense that 2.0 and 2.0.0 are the same, yet 2.0 matches 2.0.3 | ||||||||||||||||||||||||||||||||||||||
vrurg | It's 2.0.3 matches 2.0, not vice versa. We can't use cmp because 2.0.3 > 1.0 but 2.0.3 !~~ 1.0 | 14:08 | |||||||||||||||||||||||||||||||||||||
ugexe | we can use cmp to show that 2.0 and 2.0.0 are the same | 14:09 | |||||||||||||||||||||||||||||||||||||
vrurg | But it looks totally correct to me that 2.0.3 ~~ 2.0 but it is 2.0.3 != 2.0 | ||||||||||||||||||||||||||||||||||||||
ugexe | but yes, generally one would use ~~ to figure out if one version is accept by a version/version-range | ||||||||||||||||||||||||||||||||||||||
nemokosch | smartmatch is not an equivalence check (it's not anything really) | ||||||||||||||||||||||||||||||||||||||
vrurg | Perhaps zef should use strict check unless there is '*'/'+' in the version string. We currently don't have an indication in Version that '*' was explicitly used though. | 14:12 | |||||||||||||||||||||||||||||||||||||
ugexe | that isn't sufficient - leont's code would still have loaded the wrong version if they did `use Foo:ver<2.0>` | 14:13 | |||||||||||||||||||||||||||||||||||||
they (and myself) seem to believe that v2.0 is a concrete version and not a version range | 14:14 | ||||||||||||||||||||||||||||||||||||||
14:14
codesections left
|
|||||||||||||||||||||||||||||||||||||||
vrurg | Agree. It'd be better to change 'use' behavior too then. | 14:14 | |||||||||||||||||||||||||||||||||||||
But not Version's. Not _that_ radical. | 14:15 | ||||||||||||||||||||||||||||||||||||||
ugexe | changing Version seems like the logical choice to me. Version itself needs an easy way for users to make this same comparison, and i'd bet that everything using Version ~~ Version right now expects it to act the way `use Foo:ver<...>` would (and thus how e.g. `zef install Foo:<ver...>` would) | 14:16 | |||||||||||||||||||||||||||||||||||||
vrurg | BTW, looks a bit crazy, but ∈ looks like the appropriate op for the task. I.e. `v2.0.3 ∉ v2.0` but `v2.0.3 ∈ v2.0.*`. | 14:18 | |||||||||||||||||||||||||||||||||||||
ugexe | m: say v2.0 ∉ v3.0 | 14:19 | |||||||||||||||||||||||||||||||||||||
camelia | True | ||||||||||||||||||||||||||||||||||||||
ugexe | i would say ~~ is indeed the correct thing to use here | ||||||||||||||||||||||||||||||||||||||
vrurg | And, still, why `v2.0.3 ~~ v2.0` seems logical to me is because `~~` generally answers `is left is right?` and 2.0.3 is 2.0 in general. | 14:20 | |||||||||||||||||||||||||||||||||||||
ugexe | and everywhere it is used currently is trying to say ($does-this-version-or-version-range).ACCEPT($this-version) | ||||||||||||||||||||||||||||||||||||||
vrurg | m: say v2.0.3 ∈ v2.0.* | 14:21 | |||||||||||||||||||||||||||||||||||||
camelia | False | ||||||||||||||||||||||||||||||||||||||
vrurg | I'm afraid, the problem is about the context we put ~~ into. For Version it's more so than for many other things. | 14:22 | |||||||||||||||||||||||||||||||||||||
Besides, I'm afraid there are modules relying on v2.0.3 ~~ v2.0 and changing this would cause them troubles. | 14:23 | ||||||||||||||||||||||||||||||||||||||
ugexe | yeah, but i'd argue that everywhere it is used (except for potentially anything testing `use v6` behavior explicitly) expects the behavior i describe | ||||||||||||||||||||||||||||||||||||||
lizmat | fwiw, I tried to switch the left/right behaviour for missing parts, but it causes quite some failing tests :-( | 14:24 | |||||||||||||||||||||||||||||||||||||
nemokosch | does the version retrieval even be about "what operator to use"? v2.0 and v2.0+ simply seem two different concepts, why not use two different strategies? | 14:25 | |||||||||||||||||||||||||||||||||||||
vrurg | OK, I have work to do. Specifically woke up earlier as for a typical weekend for that. And have done nothing yet... ;) So, if we can get a problem solving and set 2-week limit for it for ourselves then I'd prefer that way. | 14:26 | |||||||||||||||||||||||||||||||||||||
vrurg is afk unless there are emergencies | 14:27 | ||||||||||||||||||||||||||||||||||||||
ugexe | github.com/rakudo/rakudo/pull/1118 | 14:30 | |||||||||||||||||||||||||||||||||||||
i can't tell if i implemented the behavior i'm arguing against now (lol) but larry did comment in there^ | |||||||||||||||||||||||||||||||||||||||
but apparently i knew a lot more about Versions in the past than i do now :P | 14:32 | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: dc078bfd73 | (Elizabeth Mattijsen)++ | 2 files RakuAST: add default-xxxfix-operator methods To allow custom xxxfix operators to have at least some operator properties, similar to what they have in the legacy grammar |
||||||||||||||||||||||||||||||||||||||
ugexe | wait no | ||||||||||||||||||||||||||||||||||||||
i think i proposed padding with .0 | 14:33 | ||||||||||||||||||||||||||||||||||||||
and thats probably what i implemented | |||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: b1f54e17e0 | (Elizabeth Mattijsen)++ | src/Raku/ast/expressions.rakumod RakuAST: allow ::Infix to handle unknown infixes By giving them the default OperatorProperties, instead of erroring out. |
14:34 | |||||||||||||||||||||||||||||||||||||
nemokosch | > However use searches for modules matching a version prefix, so the subversions are wildcarded, and in this context :ver<1.2> really means :ver<1.2.*> | 14:37 | |||||||||||||||||||||||||||||||||||||
this is the problem | |||||||||||||||||||||||||||||||||||||||
this declaration doesn't seem to match what people think or want | |||||||||||||||||||||||||||||||||||||||
lizmat | changing that to mean :ver<1.2.0> breaks tests so it may require a language version bump | 14:38 | |||||||||||||||||||||||||||||||||||||
which would be ironic :) | |||||||||||||||||||||||||||||||||||||||
nemokosch | I wonder what the idea was. Having versions like 1.2, 1.2.1, 1.2.2, etc. might be DIHWIDT-ish but definitely something that can happen without bad intentions. Does that declaration even provide an opt-out to access the 1.2 version? Would 1.2.0 magically work for it? | 14:43 | |||||||||||||||||||||||||||||||||||||
ugexe | lizmat: which tests though? Are they the ones testing for use v6 or use Perl:ver<6....> or some such? | 14:44 | |||||||||||||||||||||||||||||||||||||
lizmat | I didn't look further | ||||||||||||||||||||||||||||||||||||||
lizmat scrolls back | |||||||||||||||||||||||||||||||||||||||
t/spec/6.d/S02-literals/version.t test 20 | |||||||||||||||||||||||||||||||||||||||
t/spec/S11-modules/import-multi.rakudo.moar test 6 throws | |||||||||||||||||||||||||||||||||||||||
t/02-rakudo/03-corekeys.t fails all 3 tests | 14:45 | ||||||||||||||||||||||||||||||||||||||
that's it | 14:46 | ||||||||||||||||||||||||||||||||||||||
14:53
Xliff joined
|
|||||||||||||||||||||||||||||||||||||||
Xliff | Raku-GLib suite timing statistics for Raku 2023.06.254.g.32.e.078.ca.75 | 14:53 | |||||||||||||||||||||||||||||||||||||
Using the following processor: AMD Ryzen 9 5950X 16-Core Processor | |||||||||||||||||||||||||||||||||||||||
Total number of projects: 34 (506509 loc) | |||||||||||||||||||||||||||||||||||||||
Total non-parallel compile times: 10871.830 (319.760 avg) | |||||||||||||||||||||||||||||||||||||||
Total parallel compile times: 2132.659 (62.725 avg) 5.098x speedup | |||||||||||||||||||||||||||||||||||||||
[Tux] |
|
14:54 | |||||||||||||||||||||||||||||||||||||
hythm | v0.2.3 ~~ v0.2 was confusing for me at the beginning, but now it makes sense, since (as other mentioned) v0.2.3 is considered a 0.2 version, so this behavior looks correct to me. when a user wants to use v0.2 rakudo should load v0.2. same for tools, if the user wants to install v0.2, the tools should resolve that to v0.2 (regardless of the operator | 14:58 | |||||||||||||||||||||||||||||||||||||
used `~~`,`cmp` or any) | |||||||||||||||||||||||||||||||||||||||
nemokosch | Agreed completely | 14:59 | |||||||||||||||||||||||||||||||||||||
ugexe | well, in the PR I posted larry commented that he agreed there should be an easy way for module developers to make this comparison. and i believe he was implying that ~~ was that "way" | 15:28 | |||||||||||||||||||||||||||||||||||||
well maybe not | 15:29 | ||||||||||||||||||||||||||||||||||||||
I'm confused because in the PR I proposed "Pad LHS with .0, such that it is always treated as a concrete version.", but then also said that PR aligns with "However use searches for modules matching a version prefix, so the subversions are wildcarded," | 15:30 | ||||||||||||||||||||||||||||||||||||||
i wonder if i didnt read that whole sentence and meant just the first part "1.2 is equivalent to 1.2.0, 1.2.0.0" | 15:31 | ||||||||||||||||||||||||||||||||||||||
hythm | relevant discussion in this issue starts from this comment github.com/ugexe/zef/issues/379#is...-753240494 | 15:34 | |||||||||||||||||||||||||||||||||||||
ugexe | i wonder what would break if we just switched Version to semver(ish) | 15:41 | |||||||||||||||||||||||||||||||||||||
vrurg | An unrelated thought I'm muling about for quite a while. There are typical patterns like `{ my $v = something; do things with $v; $v }`. What about something like `{ returns $v = something; do something with $v }` instead? Or, even, `{ returns something { do something with $_ } }`. | 15:42 | |||||||||||||||||||||||||||||||||||||
Xliff | vrurg: I like the last one. | 16:22 | |||||||||||||||||||||||||||||||||||||
Would that return even if the block throws an exception? | |||||||||||||||||||||||||||||||||||||||
For that to work, if the interior block throws, then the return stull occurs if there is a handled CATCH. Otherwise it's fatal. | 16:25 | ||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: 5fb6d83612 | (Elizabeth Mattijsen)++ | src/core.c/traits.pm6 Use OperatorProperties.new-compat to set %prec It contains the same logic, but centralized in a single place |
16:37 | |||||||||||||||||||||||||||||||||||||
lizmat | m: dd &infix:<+>.op_prop | 16:46 | |||||||||||||||||||||||||||||||||||||
camelia | No such method 'op_prop' for invocant of type 'Sub+{is-pure}' in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
lizmat | m: dd &infix:<+>.op_props | ||||||||||||||||||||||||||||||||||||||
camelia | OperatorProperties.new(precedence => "t=",associative => "left") | ||||||||||||||||||||||||||||||||||||||
lizmat | m: Q|dd &infix:<+>.op_props|.AST.EVA | ||||||||||||||||||||||||||||||||||||||
camelia | No such method 'EVA' for invocant of type 'RakuAST::StatementList'. Did you mean 'EVAL'? in block <unit> at <tmp> line 1 |
||||||||||||||||||||||||||||||||||||||
lizmat | m: Q|dd &infix:<+>.op_props|.AST.EVAL | ||||||||||||||||||||||||||||||||||||||
camelia | OperatorProperties.new(precedence => "t=",associative => "left") | ||||||||||||||||||||||||||||||||||||||
lizmat | so, when parsing code with the RakuAST grammar from the legacy grammar, the operator properties are visible | 16:47 | |||||||||||||||||||||||||||||||||||||
nvm brain twist | 16:48 | ||||||||||||||||||||||||||||||||||||||
17:02
sena_kun joined
|
|||||||||||||||||||||||||||||||||||||||
gfldex | While fooling aroung with Rakudo, I get "Stage mast : Object does not exist in serialization context". Is there any way to get hold of the offending object? | 17:04 | |||||||||||||||||||||||||||||||||||||
lizmat | in my experience when it happens at that stage, is to revert your code step by step until it doesn't happen anymore | 17:07 | |||||||||||||||||||||||||||||||||||||
also: there's probably an .ensure-sc missing somewhere | 17:08 | ||||||||||||||||||||||||||||||||||||||
so: you created an object that is about to be serialized, but you didn't mark it as serializable (which is what .ensure-sc does) | 17:09 | ||||||||||||||||||||||||||||||||||||||
hope this helps :-) | |||||||||||||||||||||||||||||||||||||||
gfldex | I changes almost nothing, so reverting wont help. I'm trying to follow up on my last blogpost and add referenced of child classes to ClassHOW. | 17:10 | |||||||||||||||||||||||||||||||||||||
.ensure-sc yields „Segmentation fault“. I may be able to get away with not to need „Stage mast“. | 17:14 | ||||||||||||||||||||||||||||||||||||||
lizmat | can you post a gist ? | 17:16 | |||||||||||||||||||||||||||||||||||||
maybe that will ring a bell with me or vrurg | 17:17 | ||||||||||||||||||||||||||||||||||||||
gfldex | gist.github.com/gfldex/3478a475b75...72555872c9 | 17:18 | |||||||||||||||||||||||||||||||||||||
Changes are marked with | |||||||||||||||||||||||||||||||||||||||
#MARK | 17:19 | ||||||||||||||||||||||||||||||||||||||
Without line 12-14 the Segfault goes away. | |||||||||||||||||||||||||||||||||||||||
lizmat | ok, I thought you were doing stuff at the QAST level | 17:23 | |||||||||||||||||||||||||||||||||||||
lines 12-14 can go | |||||||||||||||||||||||||||||||||||||||
I wonder whether @!children needs to be marked in some bootstrap somwhow | 17:27 | ||||||||||||||||||||||||||||||||||||||
ok, jetzt bin ich überfragt :-) | 17:29 | ||||||||||||||||||||||||||||||||||||||
17:59
ab5tract left
18:00
reportable6 left
18:03
reportable6 joined
|
|||||||||||||||||||||||||||||||||||||||
Xliff | How can I type the key of the hash as a type object? | 18:35 | |||||||||||||||||||||||||||||||||||||
Especially if I want to type a $ sigiled hash value... | |||||||||||||||||||||||||||||||||||||||
This should probably go to #raku. Moving... | 18:36 | ||||||||||||||||||||||||||||||||||||||
lizmat | m:mL: my %h{Str:U} = ::("Str") => 42; dd %h | 18:38 | |||||||||||||||||||||||||||||||||||||
evalable6 | Hash[Any,Str:U %h = (my Any %{Str:U} = (Str) => 42) | ||||||||||||||||||||||||||||||||||||||
lizmat | Xliff ^^ | ||||||||||||||||||||||||||||||||||||||
MasterDuke | lizmat: suggestion for rak, a flag to include the first line of any searched file in the output (either always, or only if that file had a match to the pattern) | 18:39 | |||||||||||||||||||||||||||||||||||||
lizmat | MasterDuke: please make an issue for it, otherwise it will fall through the cracks | ||||||||||||||||||||||||||||||||||||||
MasterDuke | done github.com/lizmat/App-Rak/issues/45 | 18:43 | |||||||||||||||||||||||||||||||||||||
lizmat | thanks! | 18:45 | |||||||||||||||||||||||||||||||||||||
vrurg | m: my %h{Mu}; %h{(Int)} = 42; dd %h; | 19:05 | |||||||||||||||||||||||||||||||||||||
camelia | Hash[Any,Mu] %h = (my Any %{Mu} = (Int) => 42) | ||||||||||||||||||||||||||||||||||||||
vrurg | Xliff: ^ here is a little bit simple approach. | 19:06 | |||||||||||||||||||||||||||||||||||||
*simpler | |||||||||||||||||||||||||||||||||||||||
Xliff | vrurg: Does not account for $-sigiled variables, which is a requirement. Thanks, though. | 19:07 | |||||||||||||||||||||||||||||||||||||
vrurg | Xliff: what do you mean? | 19:08 | |||||||||||||||||||||||||||||||||||||
Xliff | %h{Mu} is not $h | ||||||||||||||||||||||||||||||||||||||
m: my $h{Mu}; | |||||||||||||||||||||||||||||||||||||||
camelia | ===SORRY!=== Error while compiling <tmp> The {} shape syntax with the $ sigil is reserved at <tmp>:1 ------> my $h{Mu⏏}; expecting any of: statement end statement modifier statement modifier loo… |
||||||||||||||||||||||||||||||||||||||
vrurg | m: my $h = my %{Mu}; dd $h | 19:09 | |||||||||||||||||||||||||||||||||||||
camelia | Hash[Any,Mu] $h = $(my Any %{Mu}) | ||||||||||||||||||||||||||||||||||||||
Xliff | Ah! There is another option. TYVM! | ||||||||||||||||||||||||||||||||||||||
vrurg | m: my $h = my %{Mu}; $h{(Int)} = 42; dd $h; | ||||||||||||||||||||||||||||||||||||||
camelia | Hash[Any,Mu] $h = $(my Any %{Mu} = (Int) => 42) | ||||||||||||||||||||||||||||||||||||||
vrurg | An special case of anonymous declaration. | ||||||||||||||||||||||||||||||||||||||
m: my $h = Hash[Any, Mu].new; say $h{(Int)} = 42; dd $h; | 19:10 | ||||||||||||||||||||||||||||||||||||||
camelia | 42 Hash[Any,Mu] $h = $(my Any %{Mu} = (Int) => 42) |
||||||||||||||||||||||||||||||||||||||
vrurg | This is what it actually does, eventually. | ||||||||||||||||||||||||||||||||||||||
nemokosch | does the anonymous variable not come with the usual thread safety concerns, though? | ||||||||||||||||||||||||||||||||||||||
vrurg | nemokosch: have you noticed it's a `my`? | 19:11 | |||||||||||||||||||||||||||||||||||||
m: sub foo { my %{Mu} }; say foo.WHICH; say foo.WHICH; | |||||||||||||||||||||||||||||||||||||||
camelia | Hash[Any,Mu]|2817476225328 Hash[Any,Mu]|2817476226768 |
||||||||||||||||||||||||||||||||||||||
vrurg is away for a while. | 19:12 | ||||||||||||||||||||||||||||||||||||||
19:36
linkable6 left,
evalable6 left
19:39
evalable6 joined,
linkable6 joined
|
|||||||||||||||||||||||||||||||||||||||
Geth | rakudo/main: 2dbcdafdf3 | (Elizabeth Mattijsen)++ | src/Raku/ast/code.rakumod RakuAST: make sure custom ops get correct default OperatorProperties |
19:51 | |||||||||||||||||||||||||||||||||||||
lizmat | 938 (+1) | ||||||||||||||||||||||||||||||||||||||
vrurg | gfldex: It's a familiar situation to me. In a couple of modules I rely on compiler internals to install INIT phaser where the registration is done. | 20:15 | |||||||||||||||||||||||||||||||||||||
ugexe | japhb: what version of rakudo were you running with `zef install "Term::termios:ver<0.2>"`? For me that is installing 0.2 | 20:45 | |||||||||||||||||||||||||||||||||||||
gist.github.com/ugexe/8253190d17dd...23e560ca2f | 20:47 | ||||||||||||||||||||||||||||||||||||||
lizmat | I wonder whether japhb changed the default config for searchable repos | 20:52 | |||||||||||||||||||||||||||||||||||||
ugexe | that could result in confusing results, but i'm not sure that could result in this specific scenario | 20:57 | |||||||||||||||||||||||||||||||||||||
fez doesnt have 2.0, so if it didn't search REA it would have failed. REA has 0.2 and 0.2.3 so if it didn't have fez it should have still matched the 0.2 from REA | 20:58 | ||||||||||||||||||||||||||||||||||||||
the fact they have zef v0.18.3 also makes me think their rakudo can't be *that* old | |||||||||||||||||||||||||||||||||||||||
lizmat | hmmm does the 2.0 have the same auth as 2.0 3? | ||||||||||||||||||||||||||||||||||||||
ugexe | no, but that doesn't matter as it wasn't specified | 20:59 | |||||||||||||||||||||||||||||||||||||
lizmat | ack | ||||||||||||||||||||||||||||||||||||||
ugexe | japhb: a `zef list --installed` might be useful to see as well, just to see if there is some old zef code that maybe is getting loaded (despite the fact --verison is reporting 0.18.3) | 21:01 | |||||||||||||||||||||||||||||||||||||
cause the version is determined in the mainline, but the other `use Zef::Foo` could load code from older versions based on where it is in the repository chain | 21:02 | ||||||||||||||||||||||||||||||||||||||
[Coke] | japhb: termios releases borked on mac, so lineeditor borked as well. (can work around by instaling an older version of the dep. | 21:03 | |||||||||||||||||||||||||||||||||||||
21:20
linkable6 left,
evalable6 left
21:21
evalable6 joined
21:23
linkable6 joined
21:30
Xliff left
|
|||||||||||||||||||||||||||||||||||||||
japhb | BAK, sorry I missed these earlier. | 21:32 | |||||||||||||||||||||||||||||||||||||
[Coke]: Yeah, essentially that's what I'm trying to do with (borked termios having a huge cascade through the things I work on). | 21:33 | ||||||||||||||||||||||||||||||||||||||
ugexe: I was building lots of different Rakudo's, but all from 2023. The one I'm *currently* using is v2023.04-116-g01e822248, because that's the last commit before libuv 1.45, which is killing my startup time measurements. | 21:34 | ||||||||||||||||||||||||||||||||||||||
ugexe: gist.github.com/japhb/c1a48e8e5839...ec75b3575d | 21:37 | ||||||||||||||||||||||||||||||||||||||
That was for `zef list --installed`. Did I miss any other questions? | |||||||||||||||||||||||||||||||||||||||
ugexe | hmm, well you have Zef::Configuration installed so maybe lizmat was right | ||||||||||||||||||||||||||||||||||||||
japhb | ugexe: That was to get REA, IIRC. | 21:38 | |||||||||||||||||||||||||||||||||||||
ugexe | could you run `zef install "Term::termios:ver<0.2>" --debug` as well? that'd give me a bit more insight | ||||||||||||||||||||||||||||||||||||||
japhb | Sure | ||||||||||||||||||||||||||||||||||||||
Should I uninstall first? | |||||||||||||||||||||||||||||||||||||||
ugexe | ah, yeah | ||||||||||||||||||||||||||||||||||||||
japhb | OK will do | ||||||||||||||||||||||||||||||||||||||
ugexe | one last thing would be to get the contents of the zef config. run `zef --help` and then it'll show the configuration file path somewhere towards the bottom | 21:39 | |||||||||||||||||||||||||||||||||||||
REA is included in more recent versions of zef by default, so custom configuration files wouldnt be needed anymore | |||||||||||||||||||||||||||||||||||||||
japhb | Updated with --debug output | 21:40 | |||||||||||||||||||||||||||||||||||||
ugexe | ah got it, i see what it is | 21:42 | |||||||||||||||||||||||||||||||||||||
that is getting it from p6c | |||||||||||||||||||||||||||||||||||||||
that is probably still enabled because of the aforementioned custom config | |||||||||||||||||||||||||||||||||||||||
japhb | Config file added | ||||||||||||||||||||||||||||||||||||||
ugexe | what is the configs path | ||||||||||||||||||||||||||||||||||||||
japhb | /home/geoff/.config/zef/config.json | ||||||||||||||||||||||||||||||||||||||
ugexe | ah ok. just delete that :P | ||||||||||||||||||||||||||||||||||||||
japhb | Done. So I take it this can go away from my build script as well? | 21:44 | |||||||||||||||||||||||||||||||||||||
zef install Zef::Configuration | |||||||||||||||||||||||||||||||||||||||
zef-configure enable rea | |||||||||||||||||||||||||||||||||||||||
ugexe | yep, no need to do that anymore | ||||||||||||||||||||||||||||||||||||||
lizmat: you were right afterall | |||||||||||||||||||||||||||||||||||||||
japhb | (Feel free to now dance to your success like an 80's video) | 21:45 | |||||||||||||||||||||||||||||||||||||
ugexe | what was happening though is it was fetching it from p6c (not being updated), which points to master branch on github, which doesn't have the version pointed at by the old p6c | 21:46 | |||||||||||||||||||||||||||||||||||||
(p6c and cpan are disabled in modern versions of zef) | |||||||||||||||||||||||||||||||||||||||
japhb | Weird. Victim of my own history, I guess. | 21:47 | |||||||||||||||||||||||||||||||||||||
Gist updated with latest output of --debug install | |||||||||||||||||||||||||||||||||||||||
Looks now like it should to you? | |||||||||||||||||||||||||||||||||||||||
ugexe | yep that looks like what i expect | 21:48 | |||||||||||||||||||||||||||||||||||||
japhb | Excellent! Thanks for all your help! | ||||||||||||||||||||||||||||||||||||||
(And lizmat) | 21:49 | ||||||||||||||||||||||||||||||||||||||
And it even works with my latest dev code! YAY! | 21:50 | ||||||||||||||||||||||||||||||||||||||
OK, looks like I'll have to make Terminal::Print and Terminal::LineEditor use that specific version of Term::termios (before 0.2, it didn't actually *have* version numbers, so I couldn't specify such previously) | 21:54 | ||||||||||||||||||||||||||||||||||||||
ugexe | for brevity the original issue can be reproduced using a non-custom config zef via `zef install "Term::termios:ver<2.0>" --p6c --/fez --/rea --dry` | ||||||||||||||||||||||||||||||||||||||
japhb | gotcha | 21:55 | |||||||||||||||||||||||||||||||||||||
OK, pushed dependency changes, waiting for CI | 22:04 | ||||||||||||||||||||||||||||||||||||||
New versions of Terminal::Print and Terminal::LineEditor released; [Coke], you might want to try again installing the latest. | 22:12 | ||||||||||||||||||||||||||||||||||||||
japhb tries to remember what he was working on *before* all of this | 22:13 | ||||||||||||||||||||||||||||||||||||||
22:38
sena_kun left
|
|||||||||||||||||||||||||||||||||||||||
nemokosch | m: say (0...5,3...7) | 23:59 | |||||||||||||||||||||||||||||||||||||
Raku eval | (0 1 2 3 4 7) |