🦋 Welcome to Raku! raku.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: colabti.org/irclogger/irclogger_log/raku Set by ChanServ on 14 October 2019. |
|||
00:22
wildtrees left
00:26
chloekek left
|
|||
rypervenche | I feel like this may be a dumb question, but is it possible to have a range of numbers inside of a regex? | 00:34 | |
A range as in 1..33, for example. | 00:35 | ||
00:38
pecastro left
|
|||
thundergnat | m: put "4..14".comb(/\d+/).map(+*).minmax | 00:44 | |
camelia | 4 5 6 7 8 9 10 11 12 13 14 | ||
thundergnat | rypervenche: ^^ | ||
01:00
titsuki joined
|
|||
MasterDuke | m: say say "1" ~~ / << <{2..30}> >> /; say "12" ~~ / << <{2..30}> >> /; say "33" ~~ / << <{2..30}> >> / | 01:03 | |
camelia | Nil True 「12」 Nil |
||
MasterDuke | m: say say "1" ~~ / << @(2..30) >> /; say "12" ~~ / << @(2..30) >> /; say "33" ~~ / << @(2..30) >> / | 01:05 | |
camelia | Nil True 「12」 Nil |
||
rypervenche | Oooh, interesting. | 01:10 | |
MasterDuke | the second version is fantastically faster | 01:15 | |
rypervenche | Ahhh, I finally found <{ }> in the docs. Very cool. Thanks. | 01:16 | |
MasterDuke | np | ||
01:17
SCHAPiE left
|
|||
rypervenche | Oh my, the speed difference is insane, haha. | 01:17 | |
01:30
SCHAPiE joined
01:33
sena_kun left
01:40
libertas left
01:49
sena_kun joined
02:10
aindilis` left
02:11
aindilis joined
02:24
marcusr left
02:27
marcusr joined
02:37
webstrand left
02:40
webstrand joined
03:03
Seirdy joined
03:05
hungryd49 joined
03:08
hungrydonkey left
03:09
kktt007 joined
03:10
kktt007 left,
kktt007 joined
03:12
hungrydonkey joined
03:15
hungryd49 left
03:20
Kaiepi left
03:25
Kaiepi joined,
hungrydonkey left,
hungrydonkey joined
03:34
sena_kun left
03:46
aborazmeh left
03:49
sena_kun joined
03:58
epony left
03:59
epony joined
04:02
surrealpie left
|
|||
Voldenet | How to rewrite c-style iterators into raku? | 04:09 | |
I could use nativecall to just do: my $i = allocate_iterator(…); while($i.next) { $i.current }; $i.free; | 04:10 | ||
but is there a way to rewrite this as: `for allocate_iterator(…) { say $_ }` instead? | 04:11 | ||
my main problem is that I need free_iterator used, even if iteration is interrupted in the middle | 04:15 | ||
04:26
nosqrt left
|
|||
Voldenet | m: for class { method iterator { class { method pull-one { 1 } }.new } }.new { .say; last if state $x++ > 4 } | 05:06 | |
camelia | 1 1 1 1 1 1 |
||
Voldenet | m: my $c = 0; { for class { method iterator { submethod DESTROY { $c++ }; class { method pull-one { 1 } }.new } }.new { last if state $x++ > 4 }}; use nqp; nqp::force_gc(); sleep .1; say $c | 05:18 | |
camelia | 1 | ||
Voldenet | m: my $c = 0; { for class { method iterator { submethod DESTROY { $c++ }; class { method pull-one { 1 } }.new } }.new { last if state $x++ > 4 }}; use nqp; nqp::force_gc(); say $c | ||
camelia | 0 | ||
Voldenet | m: my $c = 0; { for class { method iterator { class { submethod DESTROY { $c++; }; method pull-one { 1 } }.new } }.new { last if state $x++ > 4 }}; use nqp; nqp::force_gc(); say $c | 05:22 | |
camelia | 0 | ||
Voldenet | m: my $c = 0; { for class { method iterator { class { submethod DESTROY { $c++; }; method pull-one { 1 } }.new } }.new { last if state $x++ > 4 }}; use nqp; nqp::force_gc(); sleep .1; say $c | ||
camelia | 1 | ||
05:26
linkable6 left
05:27
linkable6 joined
|
|||
Voldenet | DESTROY works, but I wouldn't mind having more deterministic way to do this, can I somehow attach LEAVE phaser in the iterator itself, so consumers of the iterator don't have to? | 05:31 | |
05:34
sena_kun left
05:47
sena_kun joined
06:47
bisectable6 left,
releasable6 left,
notable6 left,
quotable6 left,
nativecallable6 left,
shareable6 left,
statisfiable6 left,
bloatable6 left,
benchable6 left,
coverable6 left,
sourceable6 left,
committable6 left,
greppable6 left,
squashable6 left,
reportable6 left,
linkable6 left
06:48
sourceable6 joined,
coverable6 joined
06:49
benchable6 joined,
notable6 joined,
bisectable6 joined,
releasable6 joined,
squashable6 joined,
committable6 joined,
reportable6 joined,
shareable6 joined,
linkable6 joined,
nativecallable6 joined,
quotable6 joined,
greppable6 joined
06:50
bloatable6 joined,
statisfiable6 joined
07:04
rindolf joined,
rindolf left
07:05
rindolf joined
|
|||
nine | Voldenet: I don't see a way around a LEAVE phaser. | 07:20 | |
Voldenet | uh, as a `fix`, I went and made iterators non-disposable | 07:22 | |
my $it = allocate_iterator(…); for $it { … }; $it.free; | 07:23 | ||
nine | Why would DESTROY be so bad fo this? | ||
Voldenet | because I have no guarantee on how the underlying implementation treats allocation and freeing | 07:26 | |
For each allocator I've got some data collection with pointers to iterators, and freeing the iterator may try to remove itself from the context | 07:27 | ||
07:33
sena_kun left
|
|||
Voldenet | in fact, I'll just do wasteful thing and attach all finalizers to the context - then it wouldn't matter if DESTROY is called later as long as they're called in order | 07:35 | |
nine | TreyHarris: what mishegas? | 07:42 | |
sena_kun: .precomp directories are already only created when they are actually written to. I don't know why people dismiss .repo-id files without knowing what they are actually needed for. | 07:45 | ||
07:47
sena_kun joined
|
|||
nine | TreyHarris: there's currently no way to centralize the storage of precomp files. Shouldn't be hard to implement such support though. I'd be happy to review PRs. | 07:47 | |
sena_kun: .precomp directories are already only created when they are actually written to. I don't know why people dismiss .repo-id files without knowing what they are actually needed for. | |||
rindolf | nine: what is "mishegas"? | 07:57 | |
nine | rindolf: apparently some Jiddish word for "chaos". Had to look it up myself after TreyHarris used it | 07:58 | |
rindolf | nine: ah | 07:59 | |
nine: en.wiktionary.org/wiki/%D7%9E%D7%A...7%92%D7%A2 means "crazy" in hebrew | 08:00 | ||
nine | Well at least I got the meaning about right ;) | 08:02 | |
08:04
grayrider left
08:27
NODE left,
molaf joined
08:28
NODE joined
|
|||
Geth | doc: 9cbe10612a | (JJ Merelo)++ | 2 files Adds note on error for synthetic codepoints #2632 |
08:32 | |
doc: 4f2a7a09fc | (JJ Merelo)++ | doc/Language/quoting.pod6 Adds ⸨/⸩ as quoting construct in an example refs #2632 |
|||
linkable6 | DOC#2632 [open]: github.com/Raku/doc/issues/2632 [Hacktoberfest][RFE][big][docs][good first issue][help wanted][new][⚠ Top Priority ⚠] Checklist for 6.d | ||
Link: docs.raku.org/language/quoting | |||
08:52
kensanata joined
08:55
molaf left
09:01
NODE left,
Benett left
09:02
Benett joined
|
|||
Geth | doc: e472ef8d38 | (JJ Merelo)++ | doc/Type/Array.pod6 Adds Array.flat in both capacities refs #2632 |
09:02 | |
linkable6 | Link: docs.raku.org/type/Array | ||
DOC#2632 [open]: github.com/Raku/doc/issues/2632 [Hacktoberfest][RFE][big][docs][good first issue][help wanted][new][⚠ Top Priority ⚠] Checklist for 6.d | |||
sena_kun | nine: well, my messages about .precomp were full of doubt, because I don't know how does it work. If it works the good way already, it is great. :) | 09:03 | |
09:17
NODE joined
09:18
pecastro joined
09:25
NODE left
09:26
domidumont joined,
NODE joined
09:32
domidumont left,
domidumont joined
09:34
sena_kun left
09:37
cpan-raku left,
cpan-raku joined,
cpan-raku left,
cpan-raku joined
09:39
NODE left,
wamba joined
09:41
NODE joined
09:49
sena_kun joined
10:05
wamba left,
wamba joined
10:06
NODE left
10:09
NODE joined
10:19
samebchase left,
samebchase- left
10:32
molaf joined
10:42
mithaldu_ left,
mithaldu_ joined
10:43
tejr left
|
|||
Geth | whateverable: MasterDuke17++ created pull request #376: Wait to reply if message is from Geth |
10:45 | |
10:48
tejr joined
11:00
wamba left
11:11
mojca left
11:13
mojca joined
11:14
wamba joined
11:15
kensanata left,
wamba left
11:20
kensanata joined
11:23
tejr left
11:25
gabiruh_ left
|
|||
Geth | whateverable: a55e0787c9 | (Daniel Green)++ | xbin/Linkable.p6 Wait to reply if message is from Geth Otherwise the reply usually ends up being in the middle of the commit message. |
11:26 | |
whateverable: 75e84f7a52 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | xbin/Linkable.p6 Merge pull request #376 from MasterDuke17/delay_if_from_geth Wait to reply if message is from Geth |
|||
11:26
__jrjsmrtn__ left
|
|||
lizmat | Voldenet: maybe modules.raku.org/dist/FINALIZER could be useful ? | 11:28 | |
11:31
__jrjsmrtn__ joined
11:33
libertas joined
11:34
sena_kun left
|
|||
Voldenet | lizmat: most definitely, but I'll introduce a role: `role finalizable { has &!f = FINALIZER.register: { self.finalize(); &!f() }; method finalize { … } };` | 11:46 | |
lizmat | if you think that could be added to the FINALIZER module, I'll gladly accept a PR :-) | 11:47 | |
11:48
sena_kun joined
11:57
NODE left
11:58
NODE joined
12:01
chloekek joined
12:07
m_athias joined
12:13
abraxxa joined,
jjatria joined
12:14
abraxxa left
12:15
jjatria left,
jjatria joined
12:19
veesh left
|
|||
jjatria | Is there a way to get the Raku REPL to behave like with this? ipython.org/ipython-doc/3/config/e...eload.html | 12:26 | |
Basically: if you modify a loaded module, it gets reloaded | |||
Geth | doc: 1540a4de9c | (Stoned Elipot)++ | doc/Language/operators.pod6 Restore previous index entries for (cont), ∋ and ∌ |
12:27 | |
linkable6 | Link: docs.raku.org/language/operators | ||
12:31
veesh joined
|
|||
lizmat | jjatria: that would be tricky, and the REPL is already pretty tricky | 12:31 | |
jjatria | lizmat: I see. Thanks. It would be a neat feature to have, though :) | 12:36 | |
sena_kun | jjatria: if you are willing to volunteer, I think things can be improved. :) | 12:37 | |
jjatria | I think I'm already biting more than I can chew, but I wouldn't mind learning more about how the REPL is put together | 12:39 | |
Even a non-automatic solution would be worth having 👏 | |||
lizmat | jjatria: github.com/rakudo/rakudo/blob/mast...c/REPL.pm6 | 12:40 | |
jjatria | Ta~ | 12:41 | |
12:47
titsuki left
13:05
lucasb joined
13:13
gabiruh joined
13:20
xelxebar left,
xelxebar joined
13:24
titsuki joined
13:26
gabiruh left,
gabiruh joined
|
|||
cpan-raku | New module released to CPAN! Object::Trampoline (0.0.8) by 03ELIZABETH | 13:27 | |
13:33
kktt007 left
13:35
sena_kun left
13:36
_jrjsmrtn joined
13:37
__jrjsmrtn__ left
13:40
satori__ joined
13:42
reach_satori_ left
|
|||
cpan-raku | New module released to CPAN! Object::Delayed (0.0.8) by 03ELIZABETH | 13:43 | |
New module released to CPAN! Object::Delayed (0.0.7) by 03ELIZABETH | |||
13:44
kensanata left,
rindolf left
13:47
satori__ left
13:49
sena_kun joined
13:53
rindolf joined
14:03
natrys joined
|
|||
Voldenet | m: my @a = (^100).pick(4); for @a -> $e { my $WHICH := $e.WHICH; @a.splice($_,1) with @a.first( $WHICH eq *.WHICH, :k ); }; say @a | 14:10 | |
camelia | [64 59] | ||
Voldenet | huh~ | ||
m: my @a = (^100).pick(4); for @a.Array -> $e { my $WHICH := $e.WHICH; @a.splice($_,1) with @a.first( $WHICH eq *.WHICH, :k ); }; say @a | 14:11 | ||
camelia | [] | ||
14:26
bdju left
14:46
aborazmeh joined,
aborazmeh left,
aborazmeh joined
14:47
bdju joined
14:54
wamba joined
15:01
reach_satori joined
15:02
satori__ joined
15:03
satori__ left
15:19
Seirdy left
15:31
hungrydonkey left
15:33
zakharyas joined
15:34
zakharyas left
15:35
sena_kun left
15:49
zakharyas joined
15:52
sena_kun joined
15:53
Xliff joined
16:00
paul6 joined
16:03
ZZZzz joined
16:06
molaf left,
molaf joined
16:08
paul6 left
16:09
paul6 joined
16:12
lichtkind joined,
molaf left
16:18
wamba left,
wamba joined
16:21
aborazmeh left
16:24
hungrydonkey joined
16:25
gabiruh left
16:27
gabiruh joined
16:37
paul6 left
16:38
Kaiepi left,
melezhik left
16:44
Kaiepi joined
|
|||
uzl[m] | What are the details about an exception of type `X::Parameter::RW`? I don't find it in the type exceptions page. | 16:48 | |
MasterDuke | github.com/rakudo/rakudo/blob/mast...1281-L1287 | 16:49 | |
uzl[m] | MasterDuke: Ah, always go to the source. Well, most of the time ;-). Thanks! | 16:54 | |
MasterDuke | np | ||
Geth | doc: 5b8180a2f4 | Coke++ | doc/Type/Cool.pod6 fix typo |
16:55 | |
doc: 8ce8572239 | Coke++ | doc/Type/Cool.pod6 statements require closing ; |
|||
linkable6 | Link: docs.raku.org/type/Cool | ||
17:07
domidumont left
17:08
domidumont joined
|
|||
uzl[m] | I'm playing around with a Raku implementation of a BST (from my class book) and it seems I'm failing at adapting it to Raku. Link: pastebin.run/XN2r2pt2Pt | 17:12 | |
17:34
sena_kun left
|
|||
moritz_ | that looks like a less-than-awesome error message | 17:38 | |
uzl[m]: you likely want `BinaryNode $node is raw`, not `is rw` | 17:39 | ||
`is rw` *always* wants to bind a writable container, but $node.left and $node.right is not writable | 17:40 | ||
but then the case where $node isn't defined doesn't work anymore, probably | 17:42 | ||
if you make $.left and $.write both 'is rw', then 'is rw' also works in !rec-insert | 17:43 | ||
17:44
wamba left
|
|||
uzl[m] | moritz_: You mean make the $.left and $.right attributes writable and then keep the same signature (i.e., `is rw ` instead of `is raw`) in !rec-insert? | 17:47 | |
17:49
sena_kun joined
|
|||
moritz_ | uzl[m]: yes | 17:49 | |
uzl[m] | It did the job! | 17:50 | |
Any idea about `X::TypeCheck::Assignment` when a node's `item` attribute is typed? It's thrown when the new node is created and the `item` attribute is assigned to. | 17:52 | ||
18:03
hungrydonkey left
18:14
titsuki left
|
|||
xinming | m: my @a = %(:a, :b), %(:c, :d); for @a -> (:$a) { $a.perl.say; } | 18:37 | |
camelia | Unexpected named argument 'b' passed in sub-signature in block <unit> at <tmp> line 1 |
||
xinming | m: my @a = %(:a, :b), %(:c(:xx(1), :yy(2)), :d); for @a -> (:$a, :c(:$xxx), *%) { [$a, $xxx].perl.say; } | 18:40 | |
camelia | [Bool::True, Mu] [Mu, (:xx(1), :yy(2))] |
||
xinming | m: my @a = %(:a, :b), %(:c(:xx(1), :yy(2)), :d); for @a -> (:$a, :c(:$xx), *%) { [$a, $xx].perl.say; } | ||
camelia | [Bool::True, Mu] [Mu, (:xx(1), :yy(2))] |
||
xinming | In this case, How can we unpack the nested xx and yy? | 18:41 | |
Or, is it even possible? | |||
18:50
ZZZzz left
|
|||
xinming | m: (3 / 2^2).^name.say | 19:06 | |
camelia | Junction | ||
19:06
a3r0_ left
|
|||
xinming | Also, Why is this a junction, instead of a Number? | 19:06 | |
sena_kun | 2 ^ 2 forms a junction, ^ | ||
xinming | Ah, got it | ||
sena_kun | what do you want, square? | ||
xinming | I think I should use ** | ||
yea | |||
sena_kun | ** | ||
yeah | |||
m: (3 / 2 ** 2).^name.say | |||
camelia | Rat | ||
sena_kun | m: say 3 / 2 ** 2 | 19:07 | |
camelia | 0.75 | ||
xinming | BTW, do you know the answer to my previous question? | ||
m: my @a = %(:a, :b), %(:c(:xx(1), :yy(2)), :d); for @a -> (:$a, :c(:$xx), *%) { [$a, $xx].perl.say; } | |||
camelia | [Bool::True, Mu] [Mu, (:xx(1), :yy(2))] |
||
sena_kun | sorry, nope. :S I didn't even look closer, it sounds like over-engineering to me | ||
xinming | Unpack the nested value | ||
Ok. :-) | 19:08 | ||
sena_kun | I mean, is it like life or death to do _everything_ in a signature? | ||
just add a temp var and do the thing, it'd be more readable and easy to grasp | |||
if you're golfing, that's another question, of course. :) | |||
xinming | signature can unpack single level, So, I thought we may be able to nested unpacking | ||
sena_kun prefers to avoid any situations where something is super specific, it smells | 19:09 | ||
xinming | Ok, understood, that's kind of over engineering. | 19:10 | |
sena_kun | just today I wrote a piece with something like "If it is X, and then if we have Y, and then if in this Y we have Z, no, stop, this is horrible and won't work in a generic way, let's do something better instead, remove the lines, tea refill, redo". | 19:11 | |
19:13
a3r0 joined
19:20
jmerelo joined
|
|||
jmerelo | Hi | 19:20 | |
Can someone tell me if they can reproduce this error? | |||
Simply try zef install IO::Capture::Simple | |||
with raku 2020.01 | 19:21 | ||
sena_kun tries | |||
hmm, All candidates are currently installed, let's try again... | |||
jmerelo | I've had that kind of failure with many modules, apparently unrelated | ||
sena_kun | jmerelo: installs just ok | 19:22 | |
stoned75 | also ok for me | ||
jmerelo | This one too github.com/jonathanstowe/Raku-Sys-...g/issues/4 | ||
Altreus | lizmat: thanks for fixing that so fast! You'll be pleased to know it seems to have worked :) ! | 19:23 | |
stoned75 | btw jmerelo, are your slides from fosdem available somewhere ? I can't seem to be able to find them :) | ||
lizmat | Altreus: good to hear! | ||
jmerelo | I have errors of this kind, not finding the module it's installed when testing | ||
I use rakudobrew, but I can't see how that could be related | 19:24 | ||
I have to download the module using git, and then try | |||
lizmat | jmerelo: Don't understand identity: IO::Capture:Simple | ||
oops :-) single : | |||
jmerelo | stoned75: IARA jj.github.io/hablando-p6/fosdem20.html | ||
stoned75 | jmerelo: many thanks | ||
jmerelo | stoned75: sure, enjoy. Suggestions and criticism always welcome. The video is also available on the FOSDEM page | 19:25 | |
funny thing, it does not always happen, only in some modules, for instance in Sys::Lastlog and in some others. | 19:26 | ||
lizmat | jmerelo: something like this: gist.github.com/lizmat/5d7c0d14c56...dec1ff0f14 | ||
? | |||
jmerelo | lizmat: right! That error! | ||
lizmat | I already had it installed, started producing that error after an uninstall | ||
jmerelo | It shouldn't, right? | 19:27 | |
lizmat | feels like a missing 'use lib' in a test file or so | ||
jmerelo | lizmat: but zef takes care of that usually | ||
lizmat: it precomps anything in the lib module | 19:28 | ||
in most cases, if you download it and test it, it works. I can try in that case, but I'm pretty sure nothing will happen. | |||
I've forked and downloaded and it tests without a problem | 19:31 | ||
lizmat | yup, I see that too | 19:32 | |
jmerelo | lizmat: so it must be somehow related to how downloaded stuff is precompiled by zef. And it's a change brought by the latest raku | ||
lizmat | the only thing that looks slightly suspect to me, is the "unit module Test::IO::Capture;" *after* loading two modules | ||
jmerelo | I'm seeing the same problem now with HTTP::Status | 19:33 | |
19:34
sena_kun left
|
|||
lizmat | jmerelo: confirmed here as well | 19:35 | |
seems like we haz another blocker :-( | |||
nine | FWIW it's working just fine here | 19:39 | |
lizmat | have you tried uninstalling the module and then installing it again ? | ||
nine | yes | 19:40 | |
lizmat | weird | ||
nine | What does zef --debug say about it? | ||
stoned75 | uninstall and install again also works for me | ||
lizmat | nine: gist.github.com/lizmat/61fa8f4b8af...82f584a7c8 | 19:41 | |
I'm slightly surprised by the "# SKIP: No need to build HTTP::Status" | |||
nine | No, that's to be expected | ||
lizmat | do you have a moar with the latest $?FILE fixes ? | 19:43 | |
rakudo rather :-) | |||
19:43
raven__ joined
|
|||
nine | yes | 19:43 | |
2020.01-215-gb90bebae4 | |||
lizmat too | |||
jmerelo: are you on MacOS ? | 19:44 | ||
19:44
TimToady joined
19:46
darkstardev13 left,
domidumont left
|
|||
jmerelo | lizmat: no, ubuntu | 19:49 | |
lizmat | ok, so the OS is not the reason | ||
nine | lizmat: is your zef up to date? | 19:50 | |
lizmat | ah... good question | ||
19:50
sena_kun joined
|
|||
lizmat | how do you update zef ? | 19:51 | |
jmerelo | nine: updating now | ||
lizmat: zef upgrade zef | |||
nine: Sys::Lastlog installs fine with zef 0.8.3. Thanks! | 19:52 | ||
lizmat | no change for me for HTTP::Status after upgrade | 19:53 | |
19:53
jmerelo left
|
|||
lizmat | hmmm... after installing HTTP::Status with --force-test | 19:55 | |
installing again with zef install HTTP::Status --force-install works like a charm | 19:56 | ||
so it still feels like testing may work only because it uses an older HTTP::Status somewhere | |||
20:10
tejr joined
|
|||
Geth | doc/supply-first: ffccbfdbfb | (Stoned Elipot)++ | doc/Type/Supply.pod6 Add Supply.first |
20:22 | |
doc: stoned++ created pull request #3221: Add Supply.first |
20:23 | ||
guifa | jmerelo: ’zef upgrade zef’ it feels so…. deeply philosophical | ||
20:23
molaf joined
|
|||
TreyHarris | Sorry for confusing folks earlier with a Yiddish word. But nine wrote, '.precomp directories are already only created when they are actually written to. I don't know why people dismiss .repo-id files without knowing what they are actually needed for." Okay, I'll bite--what is the importance of a *.repo-id file in an otherwise plain-file-free .precomp, and what could go wrong if you just 'rm -rf | 20:31 | |
.precomp'? | |||
Unless/untill that centralization of .precomp patch is written, I'm going to have to add .precomp to .gitignore in 38 git repos I have cloned that have no Raku code at all if I can't remove any of them safely | 20:34 | ||
20:34
wamba joined
20:39
wamba left,
wamba joined
|
|||
MasterDuke | TreyHarris: well, you could also do `git config --global core.excludesfile <path to something like ~/.global_git_ignore> ` | 20:41 | |
TreyHarris | MasterDuke: true enough, thanks. Can you tell me the significance of a 4-entry .precomp tree with only one plain file, a *.repo-id file? I can't find it in the docs--it isn't discussed in the .repo-id method | 20:44 | |
20:44
TimToady left
20:45
TimToady joined
|
|||
MasterDuke | i can't. i know almost nothing about the pre-comp/compunits/zef/etc | 20:45 | |
TreyHarris | who does know about them? | ||
this is probably more of a #raku-dev question | 20:46 | ||
MasterDuke | nine, ugexe, tony-o_ maybe | ||
20:52
wamba left
21:00
MasterDuke left
21:03
daxim left
21:06
molaf left
21:07
wamba joined
21:08
daxim joined
|
|||
nine | TreyHarris: whenever the contents of any of the repositories in the $*REPO chain changes (i.e. installing or uninstalling a module or changing source code in a -I or $PERL6LIB directory), this could mean that a precompiled file needs an update. | 21:10 | |
TreyHarris: to check whether we really need to compile, we need to resolve the dependencies again, i.e. get from Foo::Bar to the actually resolved full name Foo::Bar:auth<me>:api<1>:ver<0.1.2>. | 21:11 | ||
TreyHarris: resolving such dependencies involves EVALing the dependency specification serialized into precomp files to get to an actual object. EVAL is slow because our compiler is so darn slow. | 21:12 | ||
Since EVAL is so slow (and resolving a DependencySpecification is not exactly free either) we really only want to do that if a repository actually changed. | 21:13 | ||
21:14
MasterDuke joined
|
|||
nine | So when we do actually resolve dependencies, we also save the full contents of all active repositories in the form of a SHA hash into a .repo-id file accompanying the precomp file. | 21:14 | |
I.e. precompilation itself saves (purely made up numbers) about 80 % of the time and the .repo-id files save some 19 % and we only actually have to pay 1 % when nothing happened in the repositories. | 21:16 | ||
So yes, it's perfectly safe to delete those .precomp dirs. Deleting .precomp (not "precomp" without the period) is always safe, you will just pay for it by waiting longer. Or not in the case of the errantly created ones. | 21:18 | ||
TreyHarris | If I typed precomp without the period at some point, that was a typo | 21:19 | |
nine | And yes, the repository chain gets also changed by just adding any directory, so that '.' in PERL6LIB gave rakudo new exciting repositories to check all the time. Probably also slowed down your programs quite a lot. | ||
sena_kun: ^^^ | 21:20 | ||
TreyHarris | so a new .precomp directory gets created in whatever dir I happen to be in when I invoke the REPL or a Raku program? | 21:22 | |
nine | TreyHarris: only if that dir is in your repository chain (i.e. by -I. or PERL6LIB=.) | 21:23 | |
TreyHarris | sorry, I should have written "got created"--meaning before I removed . from PERL6LIB | 21:24 | |
nine | yes | ||
Now we know you ran Raku programs from your ~/.ssh ;) | 21:25 | ||
Altreus | This method never returns and I can't figure out why. github.com/shuppet/p6-api-discord/...l.pm6#L189 | ||
Here's a gist gist.github.com/Altreus/7ac355c32b...3426826cc3 | |||
you can see the hash dumped from here github.com/shuppet/p6-api-discord/...d.pm6#L193 | |||
I realised I omitted the line that proves that `ButReal.new` does return | 21:26 | ||
nine | Btw. in case other precomp/module loading related questions comp up and I'm not around: while I suck at writing tests, I really try to document the full reasoning behind whatever I do in my commit messages. So reading the git history of the stuff I wrote will tell you the whole story. | ||
TreyHarris | nine: I'm pretty sure I didn't (in fact, I know I didn't, my histfile hasn't been truncated yet since I built this host, and I've never cd'd into my .ssh) so I suspect it's Emacs--if I happened to be in a buffer visiting, say, authorized_keys when I run the REPL, its CWD will be set to that file's directory | 21:27 | |
Which is probably why they're strewn all over the place but particularly in Git repos of all kinds | 21:28 | ||
Altreus | I've updated the file on github and the gist | ||
TreyHarris | Altreus: I haven't traced you code carefully, but when you `say Dump $r`, I believe you'll block on a Promise | 21:31 | |
if you remove the say Dump, I'll bet it returns | |||
It's not entirely different than the issue you noted last night with the REPL evaluating a delayed object | 21:32 | ||
21:33
sena_kun left
|
|||
Altreus | because there's a promise on the object? | 21:34 | |
TreyHarris | This may or may not be sufficient to fix it: github.com/tony-o/perl6-data-dump#skip-methods | ||
Altreus | yes you're right, removing the dump did let it continue | 21:35 | |
I'll try this skip-methods | |||
TreyHarris | I haven't played with Data::Dump, but it looks like you can't simply give a list of attributes to skip in the dump | ||
So you mind want to make a custom .gist | 21:36 | ||
s/mind/may/ | |||
21:36
zakharyas left
|
|||
Altreus | looks like it wasn't a method it was blocking on | 21:36 | |
well, at least I've found the answer | |||
I wonder why it was awaiting a promise ... why would it await something I didn't ask it to await? | 21:37 | ||
Hm maybe it's trying to dump the result of it? | |||
TreyHarris | a custom gist can answer that, and if you're handy with your editor you can probably use the text of the class itself to pre-populate the gist output, and then you can use exclusion by division to figure out which attribute(s) are causing the issue | ||
if you write the gist method so that each attribute is on its own line so you can comment them out as needed, it will go faster | 21:38 | ||
(own source line, not own gist output line) | |||
Altreus | Yes, I will figure out what blocks it and raise an issue if there seems to be no built-in way to skip it | 21:39 | |
21:43
natrys left
|
|||
TreyHarris | In general, doing deep inspection (evaluation, comparison or printing) of objects containing concurrency objects as attributes without filtering them out is likely to cause issues | 21:47 | |
Altreus | Concurrency support is the reason I'm using raku ^_^ | ||
21:47
sena_kun joined
|
|||
TreyHarris | Well, I can't think of any language that lets you safely introspect channels or supplies or pipes or whatever. It's not really a reasonable thing for a language or runtime to be able to do. | 21:52 | |
I mean, for a gross example, if it's a queue-like channel, you'd need the introspection to pull out a value to dump it and then stuff it back into the channel for the real code to get at it | 21:53 | ||
21:57
natrys joined
|
|||
Geth | doc: 242f2f0d6f | (Trey Harris)++ | doc/Type/Array.pod6 Minor wording fix to Array.flat |
22:01 | |
linkable6 | Link: docs.raku.org/type/Array | ||
22:02
rindolf left
|
|||
TreyHarris | I take that back; Haskell and maybe Erlang let you do this because all state is rewindable, but you could potentially take huge memory hits for just using such an unwinding even once since now the state and state changes of potentially the entire program has to be kept in memory for long periods | 22:04 | |
22:05
reach_satori left
22:06
reach_satori joined
|
|||
ingy | Does raku find .pm modules before .pm6? | 22:09 | |
I have a perl module and a raku module in the same dir with the same base name | 22:10 | ||
MasterDuke | don't think so | ||
22:10
lucasb left
|
|||
ingy | one .pm (for perl) and one .pm6 | 22:10 | |
and raku is complaining that it's not perl6 | 22:11 | ||
ie it's finding the .pm file | 22:12 | ||
when I move the .pm file the raku code works | |||
MasterDuke | github.com/rakudo/rakudo/blob/mast...em.pm6#L11 and github.com/rakudo/rakudo/blob/mast...m.pm6#L167 would lead me to believe it searches in the array order | ||
but nine would know for sure | |||
22:13
Kaiepi left,
Kaiepi joined
|
|||
ingy | I haven't updated perl6 in some time | 22:14 | |
TreyHarris | It's used in an any-junction, so I don't think you can guarantee order | ||
that's probably wrong | |||
ingy | in this case that's crazy | ||
my @extensions = <rakumod pm6 pm>; # seesm like a good order | 22:15 | ||
TreyHarris | Yep, but the any() comparison needs to be changed to a well-ordered map | ||
ingy | +1 | 22:16 | |
TreyHarris | unfortunately, if you wmant to be current-compatible you'll have to put the Raku and Perl modules into separate directories :-( | ||
There's already an issue open on this: github.com/rakudo/rakudo/issues/1846 | 22:18 | ||
Unfortunately, no action in 2.5 years on it | 22:19 | ||
ingy | I just did that workaround before you said that :\ | ||
TreyHarris | er, 19 months, I can't count | 22:20 | |
ingy | it works... | ||
seems like an easy fix for raku | |||
TreyHarris | I think folks are reticent to touch any code that refers to both Raku names and Perl 6 names | 22:21 | |
This should be a no-brainer though | |||
22:25
libertas left
22:27
libertas joined
22:29
molaf joined
|
|||
jjatria | I got an unexpected "Cannot find method 'find_method_qualified' on object of type Perl6::Metamodel::SubsetHOW" error. It's the first time I see something like this. What sort of thing can throw this? | 22:31 | |
22:34
natrys left
22:36
wamba left
|
|||
MasterDuke | that's a kind of low-level error. how did you trigger it? | 22:42 | |
jjatria | Hm, it looks like it was caused by me trying to `+|` an undefined value | ||
When I gave it a default the error went away | 22:43 | ||
TreyHarris | Huh, my understanding of NQP clearly sucks--AFAICT, src/vm/moar/spesh-plugins.nqp:39 should be the only place that particular error could be thrown | 22:48 | |
Other callers of find_method_qualified aren't calling them on a HOW at all | |||
MasterDuke | jjatria: do you get the same error if you set MVM_SPESH_DISABLE=1 before running it? | 22:52 | |
lizmat | TreyHarris: pretty sure that any() works the eigenstates of the Junction in order | 23:03 | |
in the current implementation at least | |||
TreyHarris | lizmat: then I have no explanation for ingy's reported behavior | 23:06 | |
Oh, wait, I haven't blamed that code, was the pre-.rakumod ordering possibly backwards? | 23:07 | ||
that old GitHub issue suggests so | |||
lizmat | yeah, I think ingy needs to get of his perl6 and get a raku :-) | 23:09 | |
just put a "Foo.rakumod" with "dd $?FILE" in a dir, and copy that file to the .pm and .pm6 extensions | 23:10 | ||
then try to use it | |||
it will select the rakumod one | |||
TreyHarris | But most folks in the wild are probably still on rakudo star, which doesn't know about .rakumod | 23:11 | |
23:11
lichtkind left
|
|||
jjatria | MasterDuke: I'll give that a shot, but now I need to go to bed. I'll report on that later | 23:11 | |
lizmat | TreyHarris: possibly | 23:12 | |
in any case, I think I found a bug... | |||
apparently, CURFS does *not* check if the file in question still exists, if there is a precomp for it | |||
will write up a test-case tomorrow | |||
MasterDuke | jjatria: sure | 23:13 | |
lizmat | it's been late, and cycling today has been... special... | ||
23:23
chloekek left
23:34
sena_kun left
23:48
aborazmeh joined,
aborazmeh left,
aborazmeh joined,
sena_kun joined
23:53
titsuki joined
23:58
pecastro left
|