🦋 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: ... | log inspection situation still under development | For MoarVM see #moarvm
Set by lizmat on 22 May 2021.
Geth DBIish/rbt.complex-types: 5246282492 | (Rod Taylor)++ | 9 files
Restructure type conversions

Allow for 2-way registered conversions. From Raku objects to a format suitable for the database (this was hardcoded for Buf already) in addition to the previously registerable conversions from DB to Raku (Bool, DateTime, Buf).
Allow registration of conversion via register-type-conversion() function calls. This hides the internal implementation which will probably change at some point.
The pg_custom_type.p6 file contains a sample Raku Point(:$x, :$y) object to a Pg "point" type in both directions.
00:19
Geth DBIish: 89dfb87ebb | (Rod Taylor)++ | lib/DBDish/Pg/StatementHandle.pm6
Use dashy variable names
00:27
Geth DBIish/rbt.fix-ci: 682715c0a5 | (Rod Taylor)++ | .github/workflows/test.yml
Additional Debug information for CI
00:45
Geth DBIish/rbt.fix-ci: a973742c14 | (Rod Taylor)++ | .github/workflows/test.yml
fixup! Additional Debug information for CI
00:50
DBIish/rbt.fix-ci: c3bd587ec1 | (Rod Taylor)++ | .github/workflows/test.yml
Remove mysql-client installation

This is already installed and good enough even when it isn't the latest version. Upgrading to the latest version can mess things up.
DBIish/rbt.fix-ci: f8a0f6d39c | (Rod Taylor)++ | .github/workflows/test.yml
Additional Debug information for CI
00:51
DBIish/rbt.fix-ci: 6590a59d7a | (Rod Taylor)++ | .github/workflows/test.yml
Remove mysql-client installation

This is already installed and good enough even when it isn't the latest version. Upgrading to the latest version can mess things up.
Geth DBIish/rbt.complex-types: 64d7ce54d6 | (Rod Taylor)++ | 9 files
Restructure type conversions

Allow for 2-way registered conversions. From Raku objects to a format suitable for the database (this was hardcoded for Buf already) in addition to the previously registerable conversions from DB to Raku (Bool, DateTime, Buf).
Allow registration of conversion via register-type-conversion() function calls. This hides the internal implementation which will probably change at some point.
The pg_custom_type.p6 file contains a sample Raku Point(:$x, :$y) object to a Pg "point" type in both directions.
00:58
DBIish: f8a0f6d39c | (Rod Taylor)++ | .github/workflows/test.yml
Additional Debug information for CI
DBIish: 6590a59d7a | (Rod Taylor)++ | .github/workflows/test.yml
Remove mysql-client installation

This is already installed and good enough even when it isn't the latest version. Upgrading to the latest version can mess things up.
Geth DBIish/rbt.complex-types: d7f6ae4741 | (Rod Taylor)++ | 9 files
Restructure type conversions

Allow for 2-way registered conversions. From Raku objects to a format suitable for the database (this was hardcoded for Buf already) in addition to the previously registerable conversions from DB to Raku (Bool, DateTime, Buf).
Allow registration of conversion via register-type-conversion() function calls. This hides the internal implementation which will probably change at some point.
The pg_custom_type.p6 file contains a sample Raku Point(:$x, :$y) object to a Pg "point" type in both directions.
00:59
Geth DBIish/rbt.complex-types: f8dcea8a6e | (Rod Taylor)++ | 9 files
Restructure type conversions

Allow for 2-way registered conversions. From Raku objects to a format suitable for the database (this was hardcoded for Buf already) in addition to the previously registerable conversions from DB to Raku (Bool, DateTime, Buf).
Allow registration of conversion via register-type-conversion() function calls. This hides the internal implementation which will probably change at some point.
The pg_custom_type.p6 file contains a sample Raku Point(:$x, :$y) object to a Pg "point" type in both directions.
01:05
Geth DBIish/rbt.schedule-ci: 176c28f453 | (Rod Taylor)++ | .github/workflows/test.yml
Schedule daily CI run
01:35
Geth DBIish: 176c28f453 | (Rod Taylor)++ | .github/workflows/test.yml
Schedule daily CI run
01:41
lizmat Files=1349, Tests=117874, 315 wallclock secs (34.94 usr 9.36 sys + 4355.06 cusr 353.43 csys = 4752.79 CPU) 08:56
[Tux] Rakudo v2021.10-146-gc7e456d35 (v6.d) on MoarVM 2021.10-126-g83c53580a
csv-ip5xs0.853 - 0.869
csv-ip5xs-205.157 - 5.409
csv-parser4.215 - 4.218
csv-test-xs-200.408 - 0.412
test7.304 - 7.374
test-t1.670 - 1.711
test-t --race0.968 - 1.004
test-t-2024.622 - 24.840
test-t-20 --race7.530 - 7.861
10:29
releasable6 Next release in ≈3 days and ≈7 hours. 3 blockers. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft 11:00
lizmat m: class Foo { class Zippo { }; class Zappo { }; class Zippo::Deeper { }; }; say Zippo; say Zappo # why is Zippo visible, and Zappo not? 13:56
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared name:
Zappo used at line 1. Did you mean 'Zippo'?
lizmat nine ^^ ? 13:57
or put differently: why *is* Zippo visible? Because it has a subclass Zippo::Deeper ? 13:58
making the deeper class a my: 13:59
m: class Foo { class Zippo { }; class Zappo { }; my class Zippo::Deeper { }; }; say Zippo; say Zappo # why is Zippo visible, and Zappo not?
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared names:
Zappo used at line 1
Zippo used at line 1
lizmat so, having an "our" subclass makes the parent class visible 14:00
ugexe m: class Foo::Bar { }; say Foo 14:09
camelia (Foo)
ugexe isnt it just that?
lizmat m: class Foo { }; say Foo 14:19
camelia (Foo)
lizmat no?
m: class Foo { class Bar { } }; say Foo; say Foo::Bar 14:20
camelia (Foo)
(Bar)
lizmat m: class Foo { my class Bar { } }; say Foo; say Foo::Bar
camelia (Foo)
Could not find symbol '&Bar' in 'Foo'
in block <unit> at <tmp> line 1
lizmat m: class Foo { my class Bar { }; my class Bar::Baz { } }; say Foo; say Foo::Bar
camelia (Foo)
Could not find symbol '&Bar' in 'Foo'
in block <unit> at <tmp> line 1
lizmat m: class Foo { my class Bar { }; class Bar::Baz { } }; say Foo; say Foo::Bar
camelia (Foo)
Could not find symbol '&Bar' in 'Foo'
in block <unit> at <tmp> line 1
lizmat m: class Foo { my class Bar { }; class Bar::Baz { } }; say Foo; say Foo::Bar::Baz
camelia (Foo)
Could not find symbol '&Baz' in 'Foo::Bar'
in block <unit> at <tmp> line 1
lizmat m: class Foo { class Bar { }; class Bar::Baz { } }; say Foo; say Foo::Bar::Baz 14:21
camelia (Foo)
(Baz)
lizmat m: class Foo { my class Bar { }; class Bar::Baz { } }; say Foo; say Bar
camelia (Foo)
(Bar)
lizmat I could understand if that would make Foo::Bar visible, in order to make Foo::Bar::Baz visible 14:22
but why would that make Bar (without Foo::) visible ?
nine lizmat: I've come across a bunch of issues with nested and multi part names when working on in-process precompilation. Apparently the fixes didn't make it into master. 15:35
Geth rakudo/precomp-singleprocess-endgame: 20 commits pushed by (Arne Skjærholt)++, (Stefan Seifert)++
review: github.com/rakudo/rakudo/compare/3...436d41eb3a
15:38
nine github.com/rakudo/rakudo/commit/60...797adL1662 15:39
atroxaper I have a dev related question. I try to investigate how compunit id are created for filename in .precomp directory. I've read FileSystem.pm6 and think that is something like sha1( sha1(meta_name:ver<meta_ver>:auth<meta_auth>:api<meta_api>) ~ module-short-name). But my experiments fails. I have a distribution with META6.json and a module A::B (for example) and I have compiled module in the .precomp. But I cannot reproduce the module id. 15:49
Where I am wrong?
ugexe first, im obliged to say you probably shouldnt be depending on implementation details 15:54
second, you are forgetting to include the distribution name when sha1ing the ver/auth/api
atroxaper ugexe: precomp at all is implementation details :) 15:56
ugexe: meta_name is META6.json{name}. Is it distribution name? 15:57
ugexe not the parts covered by roast
oh i didnt see meta_name for some reason
atroxaper Agree. But zef does so too :)
ugexe probably not for long 15:58
a lot of what it does is because i hadnt yet implemented public interfaces in rakudo, which ive since done for some things 15:59
and even then it is only using it to look up stuff in rakudo because so many people want to look up sha1 16:00
there is nothing critical that uses it
atroxaper For my purpose it will not be some critical. It will speed up. 16:01
ugexe what is it supposed to do 16:02
atroxaper Anyway. I found a second option, when FileSystem does not use META6.json. It creates a hash with face information. I do not understand which value $prefix has? github.com/rakudo/rakudo/blob/mast...m.pm6#L295 16:04
It is for Rococo. To my shame, I found that I calculate .precomp id for modules in a wrong way and always use precomp files compiled by myself. I want to use lib/.precomp files to if they there. 16:07
A hard and naive way is analysing all .precomp files and get the information from dependencies header. 16:09
ugexe fwiw i personally wouldn't encourage users to even think about .precomp 16:10
if you are doing something with .precomp that should be invisible to the users
otherwise you are promoting the implementation details themselves
so like `--fix-compunit - erase <library>/.precomp directory ` shoudl instead say like 'erase precomp files' 16:11
i would also have to discourage telling users errors like to please only have X number of directories in lib/.precomp is 16:17
i think instead you would want to create your own CompUnit::Repository
jdv sena_kun is altai-man, right? 16:20
ugexe yes
jdv sena_kun: thanks for the blin run the other day. 16:21
i just finally got one that's basically a superset of that one - github.com/rakudo/rakudo/issues/4667
codesections: looks like your ro thing is responsible for some fallut 16:23
*fallout
do we care about November? i seem to recall maybe not.
nine What is Rococo_ 16:24
atroxaper ugexe: How my own CompUtin::Repository can help me? A user run the code -> I want to analyze his precomp files if they exists. 16:25
MasterDuke nine: raku-advent.blog/2021/12/09/raku-code-coverage/ 16:26
jdv nine: looks like some of the fallout maybe be from your recent works
nine jdv: what fallout? 16:27
jdv blin 16:27
nine ah, #moarvm
jdv and ^, but yes 16:28
ugexe atroxaper: can the user ever run code and the precomp files not exist? 16:38
i would expect the act of running the code to precompile the files in the first place 16:39
atroxaper ugexe: In my experiments, not all modules will be precompiles. Dunno why. 16:40
ugexe you might try to capture the RAKUDO_MODULE_DEBUG=1 from an instance it fails to precompile 16:41
(for us to look at)
atroxaper Ok.
ugexe also parsing the output of RAKUDO_MODULE_DEBUG=1 can probably give you the information you want 16:42
atroxaper So. I think, I will try to use native CompUnit::Repository::FileSystem to retrieve ids.
ugexe thats one way to guess, although RAKUDO_MODULE_DEBUG=1 will literally tell you 16:44
1 RMD: Loading precompiled 16:45
/Users/ugexe/repos/zef/.precomp/5D2982B12B342A3DE3151613889FE10DB41E6685/CF/CF569252EA8F158C63A712BA13344194C93C6B07
atroxaper I need a map like FileName.rakumod -> id 16:47
ugexe you can make a map out of what i said 16:49
nine I'm still worried that this is the wrong approach in the first place. I'm very tempted to do away with those .precomp directories alltogether because github.com/rakudo/rakudo/issues/46...-991837842 has a point
ugexe thats just moving .precomp :P 16:50
atroxaper Hm... :) 16:52
Geth rakudo: usev6++ created pull request #4668:
[JVM] Don't let signal(SIGINT) break the REPL
19:38
Geth whateverable: 757a0f9fc7 | (Elizabeth Mattijsen)++ | 3 files
Make Whateverable work with latest IRC::Client

Basically, just "use IRC::Client" will give you everything you need.
22:03
lizmat jdv: ^^^ just FYI 22:04
jdv lizmat: ok 22:04
lizmat I've tried to get it to work again all day, but as nine also confirmed, there's stuff there that we need to look into deeper 22:05
the fix was easy: remove one line, and remove ::Message from another
jdv cool
lizmat I never saw the point of having a Foo/Bar.pm6, which does a "use Foo" 22:13
jdv sure. as long as it works:) 22:15
Geth nqp: MasterDuke17++ created pull request #752:
Change nqp::radix(_I)? to return # chars converted
22:27
Geth rakudo: MasterDuke17++ created pull request #4669:
Adapt to nqp::radix(_I)? now returning # chars converted
22:39
rakudo: MasterDuke17++ created pull request #4670:
Restore larger limit for using string_to_int on 64bit systems
23:19
timo codesections: have you considered instead of giving Block an .is method, introducing a .is postfix operator? 23:50
m: sub postfix:<.is>(&b) { return %( value => &b() ) }; { 5 + 9 }.is.value.say 23:51
camelia No such method 'value' for invocant of type 'Hash'. Did you mean
'values'?
in block <unit> at <tmp> line 1
timo m: sub postfix:<.is>(&b) { return %( value => &b() ) }; { 5 + 9 }.is<value>.say
camelia No such method 'is' for invocant of type 'Block'. Did you mean 'isa'?
in block <unit> at <tmp> line 1
timo welp! never mind then?
MasterDuke m: sub postfix:<?is>(&b) { return %( value => &b() ) }; { 5 + 9 }?is<value>.say 23:53
camelia 14