🦋 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: ... | Logs available at irclogs.raku.org/raku-dev/live.html | For MoarVM see #moarvm
Set by lizmat on 8 June 2022.
00:07 reportable6 left 00:09 reportable6 joined 01:09 evalable6 left, linkable6 left 01:11 evalable6 joined, linkable6 joined 01:55 frost joined 03:04 frost left 03:13 frost joined 06:08 evalable6 left, linkable6 left, reportable6 left 06:10 evalable6 joined, linkable6 joined 06:11 reportable6 joined
Geth rakudo/lizmat-span: 9f44aca38b | (Elizabeth Mattijsen)++ | 8 files
Implement Haskell's "span" in 6.e

Inspired by stackoverflow.com/questions/728094...n-function
This implements both the method as well as the sub version of "span".
For more flexibility, the condition can also be a List of conditions ... (17 more lines)
rakudo: lizmat++ created pull request #4976:
Implement Haskell's "span" in 6.e
09:21 sena_kun left 10:01 sena_kun joined 11:01 quotable6 left, linkable6 left, unicodable6 left, notable6 left, sourceable6 left, evalable6 left, coverable6 left, shareable6 left, greppable6 left, bloatable6 left, bisectable6 left, benchable6 left, committable6 left, tellable6 left, nativecallable6 left, reportable6 left, releasable6 left, statisfiable6 left 11:02 shareable6 joined, releasable6 joined, evalable6 joined, nativecallable6 joined, linkable6 joined, coverable6 joined 11:03 notable6 joined, bisectable6 joined, committable6 joined, benchable6 joined, statisfiable6 joined, greppable6 joined 11:04 reportable6 joined, tellable6 joined, bloatable6 joined, quotable6 joined, unicodable6 joined, sourceable6 joined 11:42 sena_kun left 11:43 sena_kun joined 12:07 reportable6 left 12:08 reportable6 joined
Geth rakudo/lizmat-span: 8a5a36bc7d | (Elizabeth Mattijsen)++ | 2 files
Generalize the matcher on span

Instead of just allowing a Callable, go for smart-matching instead.
   .say for (2, 2, 2, 5, 5, "a", "b", "c").span: Int;
   (2 2 2 5 5)
   (a b c)
   .say span Int, 2, 2, 2, 5, 5, "a", "b", "c");
   (2 2 2 5 5)
   (a b c)
|Tux| Rakudo v2022.06-33-g6dc2f92c9 (v6.d) on MoarVM 2022.06-6-gc315523ab
csv-ip5xs0.782 - 0.921
csv-ip5xs-205.218 - 5.599
csv-parser3.616 - 4.037
csv-test-xs-200.403 - 0.417
test6.867 - 6.868
test-t1.393 - 1.737
test-t --race0.843 - 0.920
test-t-2020.438 - 20.729
test-t-20 --race6.586 - 6.691
locria Hello, Raku devs 13:19
Is there any plan to add full C FFI to NativeCall?
lizmat I don't know of any concrete plans
locria This was discussed over a year ago
I want to help, but I don't know how to 13:20
lizmat perhaps nine patrickb vrurg have ideas 13:21
locria I know how to use libffi, but not the internals of moarvm
Can IRC bot ping user on discord? 13:22
lizmat not sure, don't think so 13:23
locria How do I contact them
lizmat hopefully they react to the ping on this channel.... or you could create a Rakudo issue ? 13:26
vrurg An issue would be better. And I'm barely an expert with nativecall and moarvm. 13:28
patrickb locria: Thanks for your offer to help! I think nine is the one to ask. Creating an issue at github.com/rakudo/rakudo and pinging @niner there is a good start 13:31
locria thanks 13:35
13:49 crystalfrost[m] left, crystalfrost[m] joined
nine We already have a libffi based backend for NativeCall. Extending that wouldn't be a problem. I don't even see anything keeping us from switching the default over from dyncall. The two issues are really elsewhere. 14:19
First, more libffi or dyncall is the wrong direction. We want less of those. We already compile many calls to x86 code directly making those native calls almost the same speed as well actual native calls. 14:20
Second the real blocker is not even that, we have already JIT code passing structs to native functions, so we know what the ABI looks like. The real blocker is the API one. I simply haven't seen any good idea on what such native sub definitions would look like. 14:21
Right now sub foo(MyStruct) is native { !!! } is a definition for a void foo(MyStruct*) { ... } function. It would have been easy if the NativeCall definition for that would be sub foo(Pointer[MyStruct]) { !!! } for foo(MyStruct*) and sub foo(MyStruct) for foo(MyStruct) 14:23
14:26 frost left
vrurg nine: sub foo(MyStruct $v is rw) { !!! } 14:34
nine What would foo(MyStruct **) then be? 14:35
vrurg sub foo(Pointer[MyStruct] $v is rw) { !!! }? 14:36
Or we could use a dedicated trait for that. `is pointer`, `is ppointer` or alike.
Pointer[MyStruct] semantics should be there too, though. 14:37
Pointer[Pointer[MyStruct]] is just too cumbersome, hence the trait idea. 14:38
15:14 dogbert17 left 15:41 dogbert17 joined 16:39 sena_kun left 17:18 sena_kun joined 18:04 Xliff joined 18:07 reportable6 left 18:09 reportable6 joined 19:30 Xliff left 19:36 sena_kun left 19:37 sena_kun joined 19:52 lizmat left 19:55 lizmat joined 20:55 linkable6 left, bisectable6 left, coverable6 left, nativecallable6 left, shareable6 left, notable6 left, evalable6 left, greppable6 left, quotable6 left, committable6 left, unicodable6 left, reportable6 left, bloatable6 left, statisfiable6 left, benchable6 left, sourceable6 left, tellable6 left, releasable6 left 20:56 bloatable6 joined, greppable6 joined, shareable6 joined, unicodable6 joined 20:57 bisectable6 joined, notable6 joined, evalable6 joined, benchable6 joined, quotable6 joined, reportable6 joined, releasable6 joined 20:58 nativecallable6 joined, linkable6 joined, tellable6 joined, coverable6 joined 20:59 committable6 joined, sourceable6 joined, statisfiable6 joined 22:17 sena_kun left