00:04 sjn left
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:07
00:08 Manifest0 left
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:09
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
(without , after guard_type perhaps ;p)
not that I've tried to write it in rust, I theoretically know how it could work 00:12
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, johnjay left 01:29 hulk joined, johnjay joined, kylese left 01:33 johnjay left 01:35 [Coke] left, johnjay joined 01:37 [Coke] joined 02:15 hulk left, 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
wikipedia raku is an improvement on perl 05:38
vlang is an improvement on golang
I wonder if raku has ideas that vlang can use
05:43 hurufu joined 06:16 belluzj joined 06:24 belluzj left
disbot4 <librasteve> well Raku was “designed” by an experienced language author with a feel for natural language and gathered 361 RFPs 06:54
<librasteve> so, please dig in and tell us the answer 🙃
wikipedia I don't know raku 06:57
I asked so you might give ideas 06:58
07:17 abraxxa joined 07:20 abraxxa left 07:21 Sgeo left, abraxxa joined 07:34 topnep left 07:35 topnep joined 08:01 dakkar joined
Voldenet raku is just so very different from vlang that it's hard to even begin 08:23
wikipedia maybe stuff that would be useful in parsing stuff or something 08:25
Voldenet probably grammars 08:26
wikipedia is that some sort of syntax?
Voldenet slangify.org/examples
there's whole page about it, but it's kinda like ebnf 08:27
other hugely useful things are concurrency using `react { whenever … }` 08:28
wikipedia could it have advantages over goroutines? 08:29
Voldenet yes, it's very different mental model 08:32
raku handles channels too and you can do `start react whenever $channel { .say }` 08:34
m: my $ch = Channel.new; my $task = start react whenever $ch { .say }; for ^5 { $ch.send($_); }; $ch.close; await $task
camelia 0
1
2
3
4
Voldenet it's kinda goroutine-ish approach
m: react { whenever Supply.interval(.3) { say 1 }; whenever Supply.interval(.5) { 2.say }; whenever Promise.in(2) { done } }; say "react block has ended";
camelia 2
1
1
2
1
1
2
1
1
2
1
2
react block has ended
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
ah, vlang has select that does similar thing… 08:36
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
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
camelia 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
wikipedia Voldenet: what do the things in signatures do? 08:43
Voldenet add additional constraints that die when given thing does not satisfy the value 08:44
erm, the cosntraint
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
e.g. in map:
m: say (^5).(* ** 2)
camelia No such method 'CALL-ME' for invocant of type 'Range'
in block <unit> at <tmp> line 1
Voldenet m: say (^5).map(* ** 2)
camelia (0 1 4 9 16)
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:53
so given `sub a($x) { };` `a(2)` and `2.&a` are equivalent 08:54
you can make anonymous blocks for postfix function call too
m: 2.&{ $_ + 3 }.say
camelia 5
Voldenet that's the most of things I know that are useful to me 08:55
and would be probably implementable too - things like multiple dispatch or user-defined operators are not easy to have 09:01
or junctions
09:38 topnep left 09:40 topnep joined 09:48 hurufu left 11:01 sjn joined 11:29 wikipedia left
timo are we in a spot already where we can give source code instead of "expected anonymous constraint to be met"? 12:55
m: sub Log(Num() $x where 0 ^.. *) { }; Log(1); Log(-1) # could be easier to generate a good error for
camelia 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
lizmat don't we have "will complain" for that ? 13:04
timo where does "will complain" go, on subsets? 13:07
lizmat hhmmm... good question 13:09
timo oh am i missing a "use v"
lizmat use experimental :will-complain I think
timo ah, yes there it is 13:10
RAKUDO_RAKUAST=0 doesn't give me "not rakudo rakuast" btw, it's the same as RAKUDO_RAKUAST=1 13:11
lizmat yeah... :-( 13:21
if nqp::getenvhash()<RAKUDO_RAKUAST> 13:22
timo ah yeah that gives strings
if we try to intify / numify there we'd throw an exception if it's something like "yes"
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
since we now store $?SOURCE in many cases
14:26 librasteve_ joined 15:21 abraxxa left 15:22 abraxxa joined
librasteve_ notable6: weekly 16:05
notable6 librasteve_, 3 notes: gist.github.com/bae426247368849096...32952cbd6b
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
librasteve_ rakudoweekly.blog/2026/06/01/2026-...ast-fruit/ 17:25
17:26 johnjay left 17:27 johnjay joined, johnjay left, wikipedia joined 17:28 johnjay joined, johnjay left 17:29 johnjay joined, 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
lizmat weekly: 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
tonyo think i finally figured out what is going on with the delete option 21:28
.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