[00:04] *** sjn left
[00:07] <Voldenet> leont: actually, rust could be awesome for jiting - its macros system could add a layer of type constraints for emitting jit code, since macros can be recursive and also typed

[00:08] *** Manifest0 left
[00:09] <Voldenet> Yes, in the end you'd use some unsafe to cast allocated page into code, but before that, you could get a lot of checks before even emitting code

[00:10] <Voldenet> you could get them in C but definitely not with nice parsed-macro syntax e.g. `jit! { tagged_add r3, r1, r2; guard_type, r2, Int }` etc.

[00:10] <Voldenet> (without , after guard_type perhaps ;p)

[00:12] <Voldenet> not that I've tried to write it in rust, I theoretically know how it could work

[00:12] <Voldenet> and compile times could probably become real pain

[01:02] *** sibl joined
[01:17] *** topnep left
[01:19] *** topnep joined
[01:24] *** johnjay left
[01:25] *** johnjay joined
[01:26] *** johnjay left
[01:28] *** johnjay joined
[01:28] *** johnjay left
[01:29] *** hulk joined
[01:29] *** johnjay joined
[01:29] *** kylese left
[01:33] *** johnjay left
[01:35] *** [Coke] left
[01:35] *** johnjay joined
[01:37] *** [Coke] joined
[02:15] *** hulk left
[02:15] *** kylese joined
[02:46] *** sibl left
[02:47] *** sibl joined
[02:57] *** sibl left
[02:58] *** sibl joined
[03:23] *** topnep left
[03:24] *** topnep joined
[03:34] *** human-blip left
[03:35] *** human-blip joined
[03:40] *** sibl left
[03:41] *** sibl joined
[03:47] *** lichtkind_ joined
[03:49] *** lichtkind__ left
[04:24] *** johnjay left
[04:28] *** johnjay joined
[04:36] *** sibl left
[04:57] *** johnjay left
[04:58] *** johnjay joined
[05:12] *** johnjay left
[05:13] *** johnjay joined
[05:17] *** johnjay left
[05:21] *** johnjay joined
[05:28] *** topnep left
[05:30] *** topnep joined
[05:37] *** wikipedia joined
[05:38] <wikipedia> raku is an improvement on perl

[05:38] <wikipedia> vlang is an improvement on golang

[05:38] <wikipedia> I wonder if raku has ideas that vlang can use

[05:43] *** hurufu joined
[06:16] *** belluzj joined
[06:24] *** belluzj left
[06:54] <disbot4> <librasteve> well Raku was “designed” by an experienced language author with a feel for natural language and gathered 361 RFPs

[06:54] <disbot4> <librasteve> so, please dig in and tell us the answer 🙃

[06:57] <wikipedia> I don't know raku

[06:58] <wikipedia> I asked so you might give ideas

[07:17] *** abraxxa joined
[07:20] *** abraxxa left
[07:21] *** Sgeo left
[07:21] *** abraxxa joined
[07:34] *** topnep left
[07:35] *** topnep joined
[08:01] *** dakkar joined
[08:23] <Voldenet> raku is just so very different from vlang that it's hard to even begin

[08:25] <wikipedia> maybe stuff that would be useful in parsing stuff or something

[08:26] <Voldenet> probably grammars

[08:26] <wikipedia> is that some sort of syntax?

[08:26] <Voldenet> https://slangify.org/examples

[08:27] <Voldenet> there's whole page about it, but it's kinda like ebnf

[08:28] <Voldenet> other hugely useful things are concurrency using `react { whenever … }`

[08:29] <wikipedia> could it have advantages over goroutines?

[08:32] <Voldenet> yes, it's very different mental model

[08:34] <Voldenet> raku handles channels too and you can do `start react whenever $channel { .say }`

[08:34] <Voldenet> m: my $ch = Channel.new; my $task = start react whenever $ch { .say }; for ^5 { $ch.send($_); }; $ch.close; await $task

[08:34] <camelia> rakudo-moar f628473b8: OUTPUT: «0␤1␤2␤3␤4␤»

[08:34] <Voldenet> it's kinda goroutine-ish approach

[08:34] <Voldenet> m: react { whenever Supply.interval(.3) { say 1 }; whenever Supply.interval(.5) { 2.say }; whenever Promise.in(2) { done } }; say "react block has ended";

[08:34] <camelia> rakudo-moar f628473b8: OUTPUT: «2␤1␤1␤2␤1␤1␤2␤1␤1␤2␤1␤2␤react block has ended␤»

[08:35] <wikipedia> I like unique designs based on actual use experience

[08:35] <Voldenet> Yes, the above is doable using channels, but it's just easier to understand

[08:36] <Voldenet> ah, vlang has select that does similar thing…

[08:40] <Voldenet> there are things that raku has in signatures and I'm not sure if vlang has - signature coercions, signature parameter constraints (and subsets)

[08:40] <Voldenet> m: sub Log(Num() $x where * > 0) {  }; Log(1); Log(-1) # Log coerces whatever into floating point number and checks if it's greater than 0

[08:40] <camelia> rakudo-moar f628473b8: OUTPUT: «Constraint type check failed in binding to parameter '$x'; expected anonymous constraint to be met but got Num (-1e0)␤  in sub Log at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»

[08:43] <wikipedia> Voldenet: what do the things in signatures do?

[08:44] <Voldenet> add additional constraints that die when given thing does not satisfy the value

[08:44] <Voldenet> erm, the cosntraint

[08:46] <Voldenet> the above example has type coercions `Num()`, constraints `where * > 0` and WhateverCode syntax (instead of `$_ > 0` you can write `* > 0` in a lot of contexts)

[08:46] <Voldenet> e.g. in map:

[08:46] <Voldenet> m: say (^5).(* ** 2)

[08:46] <camelia> rakudo-moar f628473b8: OUTPUT: «No such method 'CALL-ME' for invocant of type 'Range'␤  in block <unit> at <tmp> line 1␤␤»

[08:46] <Voldenet> m: say (^5).map(* ** 2)

[08:46] <camelia> rakudo-moar f628473b8: OUTPUT: «(0 1 4 9 16)␤»

[08:53] <Voldenet> also, hyperops (`say ^5 >>**>> 2` does the same as map example), metaops (`[+] ^5` means to apply sum on all elements of ^5), postfix function calling

[08:54] <Voldenet> so given `sub a($x) { };` `a(2)` and `2.&a` are equivalent

[08:54] <Voldenet> you can make anonymous blocks for postfix function call too

[08:54] <Voldenet> m: 2.&{ $_ + 3 }.say

[08:54] <camelia> rakudo-moar f628473b8: OUTPUT: «5␤»

[08:55] <Voldenet> that's the most of things I know that are useful to me

[09:01] <Voldenet> and would be probably implementable too - things like multiple dispatch or user-defined operators are not easy to have

[09:01] <Voldenet> or junctions

[09:38] *** topnep left
[09:40] *** topnep joined
[09:48] *** hurufu left
[11:01] *** sjn joined
[11:29] *** wikipedia left
[12:55] <timo> are we in a spot already where we can give source code instead of "expected anonymous constraint to be met"?

[12:55] <timo> m: sub Log(Num() $x where 0 ^.. *) {  }; Log(1); Log(-1) # could be easier to generate a good error for

[12:55] <camelia> rakudo-moar f628473b8: OUTPUT: «Constraint type check failed in binding to parameter '$x'; expected anonymous constraint to be met but got Num (-1e0)␤  in sub Log at <tmp> line 1␤  in block <unit> at <tmp> line 1␤␤»

[13:04] <lizmat> don't we have "will complain" for that ?

[13:07] <timo> where does "will complain" go, on subsets?

[13:09] <lizmat> hhmmm...   good question

[13:09] <timo> oh am i missing a "use v"

[13:09] <lizmat> use experimental :will-complain I think

[13:10] <timo> ah, yes there it is

[13:11] <timo> RAKUDO_RAKUAST=0 doesn't give me "not rakudo rakuast" btw, it's the same as RAKUDO_RAKUAST=1

[13:21] <lizmat> yeah... :-(

[13:22] <lizmat> if nqp::getenvhash()<RAKUDO_RAKUAST>

[13:22] <timo> ah yeah that gives strings

[13:22] <timo> if we try to intify / numify there we'd throw an exception if it's something like "yes"

[13:26] <timo> could mix in a role that can give the source of a constraint by storing the beginning and end character index and then using $?SOURCE in the right spot

[13:26] <timo> since we now store $?SOURCE in many cases

[14:26] *** librasteve_ joined
[15:21] *** abraxxa left
[15:22] *** abraxxa joined
[16:05] <librasteve_> notable6: weekly

[16:05] <notable6> librasteve_, 3 notes: https://gist.github.com/bae426247368849096a89032952cbd6b

[16:19] <librasteve_> notable6: weekly reset

[16:19] <notable6> librasteve_, Moved existing notes to “weekly_2026-06-01T16:19:32Z”

[16:31] *** dakkar left
[16:51] *** wikipedia joined
[17:19] *** johnjay left
[17:20] *** johnjay joined
[17:24] *** wikipedia left
[17:25] <librasteve_> https://rakudoweekly.blog/2026/06/01/2026-22-some-ast-fruit/

[17:26] *** johnjay left
[17:27] *** johnjay joined
[17:27] *** johnjay left
[17:27] *** wikipedia joined
[17:28] *** johnjay joined
[17:28] *** johnjay left
[17:29] *** johnjay joined
[17:29] *** johnjay left
[17:30] *** johnjay joined
[17:50] *** belluzj joined
[18:00] *** wikipedia left
[18:19] *** wikipedia joined
[18:51] *** belluzj left
[19:11] *** belluzj joined
[19:13] *** belluzj left
[19:18] *** johnjay left
[19:50] *** abraxxa left
[20:05] <lizmat> weekly: https://github.com/Raku/problem-solving/issues/520

[20:05] <notable6> lizmat, Noted! (weekly)

[20:09] *** topnep left
[20:12] *** topnep joined
[21:02] *** acidsys left
[21:28] <tonyo> think i finally figured out what is going on with the delete option

[21:29] <tonyo> .tell guifa what timezone are you in?

[21:29] <tellable6> tonyo, I'll pass your message to guifa

[21:35] *** wikipedia left
[21:40] *** acidsys joined
[22:00] *** wikipedia joined
[22:15] *** topnep left
[22:17] *** topnep joined
[22:18] *** Sgeo joined
[22:44] *** wikipedia left
[22:59] *** kylese left
[23:24] *** Nobody joined
