🦋 Welcome to the MAIN() IRC channel of the Raku Programming Language (raku.org). Log available at irclogs.raku.org/raku/live.html . If you're a beginner, you can also check out the #raku-beginner channel! Set by lizmat on 6 September 2022. |
|||
00:00
reportable6 left
00:01
reportable6 joined
00:03
japhb left
00:17
deoac joined
00:35
japhb joined
01:35
evalable6 left,
linkable6 left
01:37
evalable6 joined,
linkable6 joined
01:58
Xliff left
02:00
deoac left
03:00
tellable6 left,
evalable6 left,
shareable6 left,
reportable6 left,
bloatable6 left,
bisectable6 left,
sourceable6 left,
quotable6 left,
committable6 left,
nativecallable6 left,
statisfiable6 left,
benchable6 left,
squashable6 left,
releasable6 left,
notable6 left,
unicodable6 left,
linkable6 left,
coverable6 left,
greppable6 left,
bloatable6 joined,
notable6 joined
03:01
evalable6 joined,
tellable6 joined,
benchable6 joined,
committable6 joined,
quotable6 joined,
linkable6 joined,
coverable6 joined
03:02
shareable6 joined,
squashable6 joined,
sourceable6 joined,
bisectable6 joined,
reportable6 joined,
statisfiable6 joined,
nativecallable6 joined,
unicodable6 joined,
greppable6 joined
03:03
releasable6 joined
03:12
squashable6 left
03:14
squashable6 joined
03:33
razetime joined
04:05
jpn joined
04:06
jpn joined,
razetime left
04:10
jpn left
04:36
melezhik joined
|
|||
melezhik | . | 04:36 | |
tonyo | melezhik: what exactly do you need resource wise? i can't get a static ip and my internet is very unreliable | 04:37 | |
if it's just one way to your servers and isn't mining bitcoins then it should maybe work (i live in the woods) | 04:38 | ||
04:42
melezhik left
05:04
melezhik joined
|
|||
melezhik | Just Linux VM with 16-32 gb ram and , yes static ip | 05:04 | |
05:06
melezhik left
05:22
jrjsmrtn left
06:00
reportable6 left,
razetime joined
06:03
reportable6 joined
06:36
wayland joined
06:38
wayland is now known as wayland76
06:55
abraxxa joined
07:15
abraxxa left
07:22
jpn joined
07:33
vlad joined
07:38
abraxxa joined
07:50
Manifest0 joined
08:02
razetime left,
vlad left
08:17
teatwo left
08:18
teatwo joined
08:19
tea3po joined
08:22
teatwo left
08:27
razetime joined
08:29
sena_kun joined
08:30
Sgeo left
08:43
jpn left
09:11
wafflus joined
09:15
ab5tract joined
09:50
jpn joined
09:53
clarkema1 joined
|
|||
Geth | docker: 7c4b717825 | (Daniel Mita)++ | 5 files Bump to 2023.08 |
10:09 | |
docker: 9b9e5827fb | Altai-man++ (committed using GitHub Web editor) | 5 files Merge pull request #56 from Raku/2023.08 Bump to 2023.08 |
|||
10:23
jpn left
10:27
abraxxa left
10:31
abraxxa joined
10:41
jpn joined
10:56
abraxxa left
11:09
NemokoschKiwi joined
|
|||
NemokoschKiwi | wafflus: so here we go | 11:11 | |
wafflus | ok | 11:12 | |
NemokoschKiwi | bisectable6: (say: "d", 5).say | ||
bisectable6 | NemokoschKiwi, Will bisect the whole range automagically because no endpoints were provided, hang tight | ||
NemokoschKiwi, ¦6c (68 commits): «(d 5)» | |||
NemokoschKiwi, Nothing to bisect! | |||
NemokoschKiwi | so apparently this has always been the same | ||
11:13
ab5tract left
|
|||
wafflus | ok /me confusedly wonders why Nemokosch as turned into a kiwi and is now talking | 11:14 | |
has | |||
11:14
ab5tract joined
|
|||
NemokoschKiwi | the IRC bots don't work via discord | 11:14 | |
wafflus | ah ok are you a bot? | 11:15 | |
NemokoschKiwi | actually, the evalbot doesn't work either, but there is an evalbot for the discord side as well, using the glot.io API | ||
no, the point isn't that I'm a bot, although that sounds like a fun perspective xD | |||
I wanted to access an IRC bot | 11:16 | ||
wafflus | i didn't think you where but i thought you might have been one of the most sophisticated bots ever i wasn't 100% sure | ||
NemokoschKiwi | maybe in the close future 🕵️♂️ | ||
wafflus | maybe they can take your brain out and put it into a robot body like robocop 2 | 11:17 | |
NemokoschKiwi | let me show you another example of bisecting, on something where I know there has been a regression | ||
bisectable6: 'almafa' ~~ Real() | |||
bisectable6 | NemokoschKiwi, Will bisect the whole range automagically because no endpoints were provided, hang tight | ||
wafflus | k np you have been so nice and helpful | 11:18 | |
bisectable6 | NemokoschKiwi, ¦6c (68 commits): «» | ||
NemokoschKiwi, Nothing to bisect! | |||
NemokoschKiwi | um, am I stupid or something? | ||
maybe this one also needs to produce output | |||
bisectable6: say('almafa' ~~ Real()) | 11:19 | ||
bisectable6 | NemokoschKiwi, Will bisect the whole range automagically because no endpoints were provided, hang tight | ||
NemokoschKiwi, Output on all releases: gist.github.com/7b1674fb362ea31da2...2e87358dfe | |||
NemokoschKiwi, Bisecting by output (old=2020.10 new=2020.11) because on both starting points the exit code is 0 | |||
NemokoschKiwi, bisect log: gist.github.com/1d9b5d6c1ddeed40ac...649ed384a5 | 11:20 | ||
NemokoschKiwi, (2020-11-15) github.com/rakudo/rakudo/commit/f2...e8f9076d6e | |||
NemokoschKiwi, ⚠ New output detected, please review the results manually | |||
NemokoschKiwi, Output on all releases and bisected commits: gist.github.com/b786d8965262a868e0...8c3f5c1631 | |||
11:20
NemokoschKiwi left
|
|||
nemokosch | okay, this was meant to illustrate how cool this bot is | 11:21 | |
wafflus | it's verry cool though probally a bit ahead in my understanding :) | ||
nemokosch | it's just, if you really run out of options why something doesn't work, or works differently | 11:22 | |
then you can check if there has been a change | |||
wafflus | nice | ||
nemokosch | here for example I'm positive that the current behavior of something ~~ Type() is borked | 11:23 | |
wafflus | so its a actuall bug in raku itself? | ||
nemokosch | well, in Rakudo at least 😛 | 11:24 | |
wafflus look at broken glass all around | |||
sorry | |||
nemokosch | for say: "d", 5 I wouldn't be sure but at the very least it's unexpected by everything I know | 11:25 | |
11:26
jpn left
|
|||
wafflus | what if you did printf | 11:27 | |
: | |||
sorry my bad anways thanks for your help | 11:29 | ||
kjp | m: $*OUT.say: "d', 5 | 11:35 | |
camelia | ===SORRY!=== Error while compiling <tmp> Unable to parse expression in double quotes; couldn't find final '"' (corresponding starter was at line 1) at <tmp>:1 ------> $*OUT.say: "d', 5⏏<EOL> expecting any of: argum… |
||
kjp | bah! | ||
m: S*OUT.say: "d", 5 | |||
camelia | ===SORRY!=== Unrecognized regex metacharacter , (must be quoted to match literally) at <tmp>:1 ------> S*OUT.say: "d"⏏, 5 Couldn't find terminator * at <tmp>:1 ------> S*OUT.say: "d",⏏ 5 expecting any of: … |
||
kjp | $*OUT.say: "d", 5 | ||
evalable6 | d5 | ||
kjp | What I am getting out is that : only introduces arhuments to methods, and a bare say is a function, and not a method. | 11:36 | |
nemokosch | interesting | ||
well, we did trace down what happened for say: "d", 5 | |||
say: became a label | |||
the question is: should it be allowed to become a label there? | |||
kjp | Interesting question, but allowing a colon there to introduce arguments o a function would at least be very confusing. | 11:38 | |
Being a syntax error would be more useful. | |||
nemokosch | oh right, what I originally mistook it for was say "d": 5 | 11:39 | |
that would be the equivalent of "d".say(5) | |||
but for labels, all I can find is that they are meant to denote loops | 11:40 | ||
we have a bare expression here, not a loop | |||
kjp | True, but I'm not au fait with things at that level. I can't remember the last time I used a label in any language other than assembler (and that's over 20 years ago). | 11:41 | |
nemokosch | who are you, if I may? What is your relation to Raku? I can see you have been around for a couple of years at least, and I used to think you were the IRC account of the late Kaiepi | 11:42 | |
kjp | Nope; just a retired sysadmin who used a lot of perl over the years and has been interested in and writing some raku for the last decade or so. | 11:43 | |
I just checked -- one git repo going back to November 2013, so a decade is about right. | 11:44 | ||
nemokosch | that's solid 😄 | ||
kjp | solid maybel; whether it's sane or not given some of the things I write is another matter. | 11:45 | |
nemokosch | what may be insane about it? The task? The density of the code? The reliance on metamodel features? | 11:47 | |
kjp | The types of things; with other languages probably being a lot more suitable. | 11:50 | |
11:56
wafflus left
12:00
reportable6 left
12:01
reportable6 joined
12:16
jpn joined
12:17
jgaz left
|
|||
nemokosch | well, everything can be a lesson, either for you or for the design/implementation of the language | 12:27 | |
kjp | But have I learnt those lessons? | 12:28 | |
Anyway -- it's bedtime, so see you tomorrow. | |||
nemokosch | the only person who can know the answer to that question is you 😛 | ||
good night | |||
12:54
razetime left,
jpn left
13:02
jpn joined
13:05
melezhik joined
|
|||
melezhik | say I a have a private attribute in my class named $!foo, how can I reference to it by symbolic link, when the name of attribute is taken from another variable? | 13:07 | |
m: class Foo { has !$foo; method bar () { my $name = "foo"; say $!$name } } | 13:08 | ||
camelia | ===SORRY!=== Error while compiling <tmp> Malformed has at <tmp>:1 ------> class Foo { has⏏ !$foo; method bar () { my $name = "foo" |
||
melezhik | m: class Foo { has !$foo; method bar () { my $name = "foo"; say $!$name } } } | ||
camelia | ===SORRY!=== Error while compiling <tmp> Malformed has at <tmp>:1 ------> class Foo { has⏏ !$foo; method bar () { my $name = "foo" |
||
melezhik | m: class Foo { has !$foo; method bar () { } } | ||
camelia | ===SORRY!=== Error while compiling <tmp> Malformed has at <tmp>:1 ------> class Foo { has⏏ !$foo; method bar () { } } |
||
ab5tract | melezhik: you've got the twigil mixed up | 13:09 | |
melezhik | m: class Foo { has $!foo; method bar () { } } | ||
camelia | ( no output ) | ||
melezhik | m: class Foo { has $!foo; method bar () { my $name = "foo" } } | ||
camelia | ( no output ) | ||
13:09
jpn left
|
|||
melezhik | m: class Foo { has $!foo; method bar () { my $name = "foo"; say $!{$name} } } | 13:10 | |
camelia | ===SORRY!=== Error while compiling <tmp> Unsupported use of %! variable at <tmp>:1 ------> ar () { my $name = "foo"; say $!{$name}⏏ } } |
||
melezhik | m: class Foo { has $!foo; method bar () { my $name = "foo"; say $!($name) } } | ||
camelia | ( no output ) | ||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "foo"; say $!($name) } }; Foo.new.bar().say | ||
camelia | Cannot find method 'is_dispatcher' on object of type BOOTCode in method bar at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "foo"; say $!($name) } }; Foo.new.bar() | 13:11 | |
camelia | Cannot find method 'is_dispatcher' on object of type BOOTCode in method bar at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "foo"; say $!($name) } }; my $a = Foo.new() | ||
camelia | ( no output ) | ||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "foo"; say $!($name) } }; my $a = Foo.new(); $a.bar(); | ||
camelia | Cannot find method 'is_dispatcher' on object of type BOOTCode in method bar at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "foo"; say "OK"; say $!($name) } }; my $a = Foo.new(); $a.bar(); | 13:12 | |
camelia | OK Cannot find method 'is_dispatcher' on object of type BOOTCode in method bar at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "foo"; say "OK"; } }; my $a = Foo.new(); $a.bar(); | ||
camelia | OK | ||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "foo"; say "OK"; say $!foo }; my $a = Foo.new(); $a.bar(); | ||
camelia | ===SORRY!=== Error while compiling <tmp> Missing block at <tmp>:1 ------> $!foo }; my $a = Foo.new(); $a.bar();⏏<EOL> |
||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "foo"; say "OK"; say $!foo; }; my $a = Foo.new(); $a.bar(); | 13:13 | |
camelia | ===SORRY!=== Error while compiling <tmp> Missing block at <tmp>:1 ------> !foo; }; my $a = Foo.new(); $a.bar();⏏<EOL> |
||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "foo"; say "OK"; say "OK2"; }; my $a = Foo.new(); $a.bar(); | ||
camelia | ===SORRY!=== Error while compiling <tmp> Missing block at <tmp>:1 ------> OK2"; }; my $a = Foo.new(); $a.bar();⏏<EOL> |
||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "foo"; say "OK"; } }; my $a = Foo.new(); $a.bar(); | ||
camelia | OK | ||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "foo"; say "OK"; say $!foo; } }; my $a = Foo.new(); $a.bar(); | ||
camelia | OK hello |
||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "foo"; say "OK"; say $!foo; } }; my $a = Foo.new(); $a.bar(); | 13:14 | |
camelia | OK hello |
||
melezhik | so basically instead of say $!foo; inside bar method, reference to $!foo indirectly via $name, is it possible? | ||
13:15
wafflus joined
|
|||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "foo"; say "OK"; say ::($!$name); } }; my $a = Foo.new(); $a.bar(); | 13:15 | |
camelia | ===SORRY!=== Error while compiling <tmp> Unable to parse expression in indirect name; couldn't find final ')' (corresponding starter was at line 1) at <tmp>:1 ------> my $name = "foo"; say "OK"; say ::($!⏏$name); } }; my … |
||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "$!foo"; say "OK"; say ::($name); } }; my $a = Foo.new(); $a.bar(); | 13:16 | |
camelia | OK No such symbol 'hello' in method bar at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "$!foo"; say "OK"; say Foo::($name); } }; my $a = Foo.new(); $a.bar(); | ||
camelia | ===SORRY!=== Error while compiling <tmp> Combination of indirect name lookup and call not supported at <tmp>:1 ------> = "$!foo"; say "OK"; say Foo::($name)⏏; } }; my $a = Foo.new(); $a.bar(); expecting any of: … |
||
ab5tract | melezhik: you could create a new class and create an object as a private instance variable, then in that class have all the different variables defined as public variables. This would allow $!private."$foo" | ||
13:17
Vyrus is now known as Vyrus_away
|
|||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "$!foo"; say "OK"; say MAIN::($name); } }; my $a = Foo.new(); $a.bar(); | 13:17 | |
camelia | ===SORRY!=== Error while compiling <tmp> Combination of indirect name lookup and call not supported at <tmp>:1 ------> = "$!foo"; say "OK"; say MAIN::($name)⏏; } }; my $a = Foo.new(); $a.bar(); expecting any of: … |
||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = "$!foo"; say "OK"; say ::($name); } }; my $a = Foo.new(); $a.bar(); | ||
camelia | OK No such symbol 'hello' in method bar at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = '$!foo'; say "OK"; say ::($name); } }; my $a = Foo.new(); $a.bar(); | 13:18 | |
camelia | OK No such symbol '$!foo' in method bar at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
ab5tract | m: class Foo { has $!foo = "hello"; method bar () { my $name = "$!foo"; say "OK"; say Foo::("$!foo"); } }; my $a = Foo.new(); $a.bar() | ||
camelia | ===SORRY!=== Error while compiling <tmp> Combination of indirect name lookup and call not supported at <tmp>:1 ------> "$!foo"; say "OK"; say Foo::("$!foo")⏏; } }; my $a = Foo.new(); $a.bar() expecting any of: … |
||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = '$!foo'; say "OK"; say Foo::($name); } }; my $a = Foo.new(); $a.bar(); | ||
camelia | ===SORRY!=== Error while compiling <tmp> Combination of indirect name lookup and call not supported at <tmp>:1 ------> = '$!foo'; say "OK"; say Foo::($name)⏏; } }; my $a = Foo.new(); $a.bar(); expecting any of: … |
||
ab5tract | jinx :) | 13:19 | |
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = '$foo'; say "OK"; say self!$name; } }; my $a = Foo.new(); $a.bar(); | 13:22 | |
camelia | ===SORRY!=== Error while compiling <tmp> Cannot use this form of method call with a private method at <tmp>:1 ------> ame = '$foo'; say "OK"; say self!$name⏏; } }; my $a = Foo.new(); $a.bar(); expecting any of: … |
||
ab5tract | melezhik: this sounds a bit like an X-Y problem to me, to be honest. | 13:23 | |
13:23
jpn joined
|
|||
melezhik | m: class Foo { has $!foo = "hello"; method bar () { my $name = '$foo'; say "OK"; say self!$name(); } }; my $a = Foo.new(); $a.bar(); | 13:24 | |
camelia | ===SORRY!=== Error while compiling <tmp> Cannot use this form of method call with a private method at <tmp>:1 ------> e = '$foo'; say "OK"; say self!$name()⏏; } }; my $a = Foo.new(); $a.bar(); |
||
13:28
jpn left
13:30
wayland joined,
wayland76 left
13:37
melezhik left
|
|||
tbrowder__ | .ask El_Che what is the intended use of the path /opt/rakudo-pkg/share/perl6/bin | 13:54 | |
tellable6 | tbrowder__, I'll pass your message to El_Che | ||
13:56
Vyrus_away is now known as Vyrus
|
|||
tbrowder__ | looks like El_Che is busy with providing the new release, very cool! | 13:58 | |
13:59
ab5tract left
14:00
jpn joined
14:01
ab5tract joined
14:07
jpn left
|
|||
tbrowder__ | .tell El_Che it looks to me like the current /etc/profile.d/rakudo-pkg.sh is pointing to the wrong path | 14:38 | |
tellable6 | tbrowder__, I'll pass your message to El_Che | ||
tbrowder__ | i just updated to the latest release | 14:39 | |
14:53
avuserow joined
14:55
Sgeo joined
|
|||
antononcube | @tbrowder Thanks for mentioning that -- I did not know moar-2023.08 is relaesed / available. | 14:59 | |
tbrowder__ | i’m referring to El_Che’s rakudo-pkg release on Rakudo.org. not sure what moarvm version it has | 15:21 | |
15:26
jpn joined
15:32
jpn left
15:33
vlad joined
|
|||
tbrowder__ | cat /opt/rakudo-pkg/bin/rakudo-pkg_path.sh yields: | 15:37 | |
RAKUDO_PATHS=/opt/rakudo-pkg/bin:/opt/rakudo-pkg/share/perl6/bin | 15:41 | ||
the last path part does not exist under the current pkg installation from a clean start (no existing /opt/rakudo-pkg directory) | 15:43 | ||
16:20
jgaz joined
16:25
jpn joined
16:27
Xliff joined
|
|||
Xliff | \o | 16:27 | |
16:32
Tirifto left
16:34
Tirifto joined
|
|||
tbrowder__ | o/ | 16:40 | |
Xliff: do u use debian? | |||
16:47
vlad left
16:52
bb8 joined,
vlad joined
17:00
jpn left
|
|||
Xliff | tbrowder: Actually, it's Ubuntu, which is Debian-based. What's up? | 17:09 | |
hythm76 | calling `nqp::sha1` directly on a `Junction` doesn't work, but wrapping it in a sub works | 17:12 | |
m: use nqp; sub foo ( $j ) { nqp::sha1($j) }; my $j = <a b>.any; say foo($j); say nqp::sha1( $j ); | |||
camelia | any(86F7E437FAA5A7FCE15D1DDCB9EAEAEA377667B8, E9D71F5EE7C92D6DC9E92FFDAD17B8BD49418F98) This type cannot unbox to a native string: P6opaque, Junction in block <unit> at <tmp> line 1 |
||
hythm76 | `nqp:sha1(<ab>.any)` # should this work? | 17:14 | |
gfldex | no | ||
hythm76 | why not | ||
tbrowder__ | i'm having trbl using El_Che's rakudo-pkg with two new debian systems. i'm trying to have root's zef modules usable by ordinary users unless they want to install their own. i think in theory that should work without a lot of effort, but getting the paths and pieces to work together has so far escaped my attempts. | ||
Xliff | Containers? | ||
gfldex | Because NQP isn't part of Raku. Also, NQP doesn't really know about Junctions, at least not on NQP-Ops. | 17:15 | |
Xliff | tbrowder__: Hmmm.... even Ubuntu's paths are subtally different from stock Debian. Do you need another test system to run against? | ||
gfldex: Don't you mean that the other way 'round? NQP is a part of Raku, but Raku is NOT a part of NQP? | 17:16 | ||
gfldex | No, NQP is not part of Raku. There are no tests that ask for NQP-Ops in Roast. | 17:17 | |
Xliff | hythm76: You would need to use the part of the Junction class that stores the individual items. | ||
gfldex: Yet you can "use nqp" and Raku won't work without it. | |||
nemokosch | Raku could work without NQP in theory | ||
gfldex | You can, because Rakudo is build with NQP. Other Raku implementation might not. | ||
nemokosch | it's rather Rakudo that is based on NQP | 17:18 | |
Xliff | gfldex: True, but there is only one, right now. | ||
gfldex | If you `use nqp;` you are in impementation-detail-land where one can easily get lost. | ||
Xliff | And nemokosch has the righter interpretation of it. | ||
hythm76 | so what is the difference between calling `nqp::sha1($j), and calling it inside of a sub body `sub foo ( $j ) { nqp::sha1($j) };`? | ||
Xliff | gfldex: This is also understood. However it is the direction that will confuse most people. That's my only point. | ||
nemokosch | hythm76: I think the right question to ask is whether the call to foo distributes the junction or not | 17:19 | |
if it does then we have an answer | |||
gfldex | Indeed. Exposing nqp by Rakudo may have been a mistake. | ||
Xliff | hythm76: The internals of how Junction are passed to a sub is allowing that to work. | ||
gfldex: No tears over spilled milk... | 17:20 | ||
17:20
vlad left
|
|||
Xliff | nemokosch: It does, and it is. | 17:20 | |
gfldex | Junctions are a side-effect (so to speak) of MMD and there is no MMD on NQP-Ops. | ||
nemokosch | at the end of the day, we are all saying the same thing, then | 17:21 | |
Xliff | Yep. | ||
nemokosch | moreover, if I have this right, if you did sub foo(Mu $j), suddenly that would also fail | ||
gfldex | Xliff: If you use anything that is not in Roast, it's going to be your tears, not mine. So I'm good if you spill some milk. :-> | ||
hythm76 | nemokosch: yes sub foo(Mu $j) failed | 17:22 | |
nemokosch | okay, so there is the answer, then: Junction is a "high-level" feature of the core, and it's the default type constraint Any that triggered the resolution of it | 17:23 | |
I don't think the runtime, or even NQP, knows anything about Junctions | 17:24 | ||
Xliff | gfldex: I'm not the one lamenting a decision that has had unintended benefits for Raku and the Community over it's last 8 years of existence over an issue that is largely academic. | ||
gfdex: hythm76 asked a question, that was answered without mentioning NQP-Ops or Roast. | 17:25 | ||
gfdex: Fortunately, I think we've arrived at an answer. Thanks for your input. | |||
gfldex | I'm pointing out facts. Nothing more, nothing less. If that offends you, there is /ignore for you. You don't have to ready anything I write. | 17:26 | |
nemokosch | from my personal perspective, it's fortunate that Junction lives solely in the core because I know the core much more than NQP or the runtime | 17:27 | |
actually, anybody can understand the core reasonably well, all it takes is Raku knowledge and a little bit of NQP knowledge | 17:28 | ||
this describes the dynamics of Rakudo development as well | 17:30 | ||
there is a decent number of people who can contribute to the core | |||
there have been some experienced users who could tackle something in the metamodel | 17:31 | ||
hythm76 | is it discouraged to use nqp in Raku code? and if one needs `sha1` for example, it is recommended to search for a module that provides sha1 functionality, instead of using nqp::sha1? | ||
nemokosch | and then NQP and the VMs are basically only a couple of dedicated individuals... | ||
especially the VMs, of course | |||
hythm76: this is kind of a controversial matter I think | 17:33 | ||
it seems there was this vow or promise back in the day that "we won't use NQP simply for performance advantages" | |||
but then it still happened, quite a lot of times, to modules like JSON::Fast | |||
so at this point NQP is kind of the elephant in the room | 17:34 | ||
hythm76 | I see | ||
gfldex | hythm76: If you use nqp in your code and nqp needs changing, the core devs wont listen to your complaints. If you `use v6.d;`, we guarentee that you code will keep working for the next 100 years, so long you stay in the boundaries of tests for `v6.d`. NQP is not covered by those tests. | ||
hythm76 | Ok makes sense | 17:35 | |
nemokosch | the same is true for the metamodel, strictly speaking | ||
it's just the metamodel would be even more painful to give up on, than NQP is | |||
gfldex | That beeing written, nqp::sha1 is very unlikely to change in the next 10 years and it would be easy to fix in your code. | ||
nemokosch | if use nqp is the elephant in the room than metamethods are the blue whale in the room 😄 | 17:36 | |
gfldex | To provide a little context, Rakudo is using sha1 to provide identity to distribution/modules because we can't depends on os-level paths (because of Windows). | 17:37 | |
nemokosch | this is why there is also a kind of tension between the people who draw the line at the Raku specs and the people who take Rakudo at face value, as the only thing we actually have and works | ||
gfldex | If you got lots of modules installed, there is a performance burden and maybe, just maybe somebody finds an algo that is much faster. That could be a reason to replace nqp::sha1. | 17:38 | |
nemokosch | in case you are interested, not so long ago I opened a problem-solving issue about it, to at least preserve the problem: github.com/Raku/problem-solving/issues/381 | 17:39 | |
17:41
wafflus left
17:45
jrjsmrtn joined
|
|||
hythm76 | actually my use case for sha1 is very similar to how Rakudo uses is (caching distributions locally using their identity eg. `nqp:sha1(foo:ver<0.1>:auth<suthor>:api<>`), and it makes sense for me to use nqp::sha1 in this case, and thats is probably tthe only nqp sub I have used | 17:45 | |
17:53
jpn joined
|
|||
ugexe | m: say CompUnit::Repository::Distribution.new(Distribution::Hash.new(${:name<Foo>, :version<1.1>}, :prefix(IO::Path))).id | 17:54 | |
camelia | 44E70226BEB02350F69BAEEC430E830E3019B63D | ||
tonyo | . | 17:55 | |
18:00
reportable6 left
18:02
reportable6 joined
|
|||
tbrowder__ | Xliff: i may spin up a new Ubuntu VM for testing, but i really like Debian for its rolling releases. can Ubuntu do that now? | 18:02 | |
yes, paths on debian are too complicated imho | 18:18 | ||
tea3po | debian rolling releases? | 18:27 | |
18:29
sena_kun left
18:30
sena_kun joined
18:33
bb8 left
18:35
vlad joined
18:47
vlad left
18:50
jpn left
18:53
jpn joined
|
|||
tbrowder__ | not sure if that's the right term. i used to support an ubuntu host and as i remember it was a giant pain to upgrade the major versions. not as much pain with debian. | 18:57 | |
ubuntu may be easier now. | |||
haven't looked at it in about 12 yrs | 18:58 | ||
19:01
jpn left
|
|||
tea3po | debian testing is rolling-release, but it's not really a release. neither debian nor ubuntu are rolling release. rolling release distros don't have major versions. mint is a debian-derived rolling release distro. | 19:26 | |
Xliff | tbrowder__: Sorry. I'm splitting my awareness between here and $dayJob. | ||
What do you mean by "rolling release?" | 19:27 | ||
tea3po | both debian and ime ubuntu make upgrading easy, cuz the packages are so high quality. | ||
Xliff | Also, with respect to Ubuntu releases, since the latest rollover (xenial to bionic), upgrades have gotten easier. | ||
tea3po | there's a strict rule though, you /must/ read the release notes before upgrading. [and also, downgrades are difficult and unsupported] | 19:28 | |
Xliff | tea3po: I guess I've been lucky, then. I rarely read the release notes. I just don't have the time. :/ | ||
tea3po | you don't have to read everything but the important stuff will be obvious | 19:29 | |
Xliff | I guess I will have to start, then. Thanks for the info. | ||
tea3po | you usually don't need to do anything to upgrade besides upgrade, but the thing is it's allowed for there to be "you must do/assure X before upgrading or your system WILL be broken" and they put those things in the release notes | ||
Xliff | tbrowder: You shouldn't have a problem upgrading 'bionic' to anything through 'mantic', although 'mantic' isn't officially released until sometime in October of this year. | 19:30 | |
tea3po | this is also why you should not put names like "stable" in your sources.list | ||
Xliff | Yeah. That generally means that you do an 'update' and a 'dist-upgrade' before you change the release name in sources.list | 19:31 | |
So I did get that part. :) | |||
tea3po | dist-upgrade is not a lot different from upgrade | ||
19:31
xinming left
|
|||
tea3po | upgrade will still mix your system if you specify "stable" in sources.list and a new release comes up | 19:32 | |
s/up/out/ | |||
Xliff | Ah, yeah. | ||
tea3po | it's poorly named | 19:33 | |
debian releases are infrequent enough that reading release notes isn't a huge burden | 19:38 | ||
19:54
xinming joined
20:01
Xliff left
20:18
teatime joined
20:21
tea3po left
20:22
teatime left,
teatime joined
20:24
teatime left,
teatime joined
20:41
[Coke] left
21:04
initrod joined
21:17
initrod left
21:22
initrod joined
|
|||
tbrowder__ | i guess i'll stick with debian, | 21:23 | |
now if i could just solve the rakudo-pkg trbl | 21:25 | ||
21:30
initrod left
21:43
TieUpYourCamel left
21:48
xinming left
|
|||
teatime | are you packaging rakudo? | 21:52 | |
21:58
bb8 joined
|
|||
nemokosch | El_Che is packaging rakudo | 21:58 | |
22:08
IrresistibleMitt joined
22:10
IrresistibleMitt left
22:34
bb8 left
22:56
sena_kun left
23:19
wayland is now known as wayland76
23:44
squashable6 left
23:46
squashable6 joined
|