|
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
|
|||