companion_cube changed the topic of #ocaml to: Discussion about the OCaml programming language | http://www.ocaml.org | OCaml 5.0 released(!!1!): https://ocaml.org/releases/5.0.0.html | Try OCaml in your browser: https://try.ocamlpro.com | Public channel logs at https://libera.irclog.whitequark.org/ocaml/
spip has quit [Quit: Konversation terminated!]
szkl has joined #ocaml
chrisz has quit [Ping timeout: 240 seconds]
chrisz has joined #ocaml
azimut has quit [Ping timeout: 240 seconds]
terrorjack has quit [Quit: The Lounge - https://thelounge.chat]
terrorjack has joined #ocaml
Haudegen has joined #ocaml
synbian has joined #ocaml
mbuf has joined #ocaml
tomku|two has quit [Ping timeout: 250 seconds]
bartholin has joined #ocaml
alexherbo2 has quit [Remote host closed the connection]
alexherbo2 has joined #ocaml
synbian has quit [Ping timeout: 240 seconds]
<toastal> Has anyone tried to write a Dhall parser for OCaml? Typed configuration can be very nice to have.
bartholin has quit [Quit: Leaving]
bgs has joined #ocaml
jlrnick has joined #ocaml
olle has joined #ocaml
kakadu has joined #ocaml
kakadu has quit [Client Quit]
alexherbo2 has quit [Remote host closed the connection]
alexherbo2 has joined #ocaml
tomku has joined #ocaml
jlrnick has quit [Ping timeout: 268 seconds]
spip has joined #ocaml
emp has quit [Quit: ZNC 1.8.2 - https://znc.in]
noonien has joined #ocaml
emp has joined #ocaml
amk has quit [Remote host closed the connection]
amk has joined #ocaml
bacam has quit [Quit: reboot]
bacam has joined #ocaml
wingsorc has quit [Ping timeout: 240 seconds]
Haudegen has quit [Quit: Bin weg.]
azimut has joined #ocaml
azimut has quit [Ping timeout: 240 seconds]
synbian has joined #ocaml
azimut has joined #ocaml
GreaseMonkey has quit [Quit: No Ping reply in 180 seconds.]
greaser|q has joined #ocaml
Haudegen has joined #ocaml
goober has joined #ocaml
<discocaml> <cemerick> you'd need more than a parser, would need an interpeter, too
<companion_cube> and it needs to be able to load URLs too, iirc…
<olle> Is there a name for the pattern that's not tagless but tagfull rather?
<discocaml> <Kali> what do you mean? there might be an answer, i'm just not sure if i understand the question
<discocaml> <Kali> could you give an example
<octachron> deep embedding
<olle> octachron: Yeah? Googling, thank you
<olle> Kail, search for tagless-final for info :)
<discocaml> <Kali> oh, i see
<discocaml> <Kali> i had read about tagless-final a while ago and forgot about it, i thought you were talking about tagged types
<discocaml> <Kali> nevermind
goober has quit [Remote host closed the connection]
trillion_exabyte has quit [Ping timeout: 240 seconds]
trillion_exabyte has joined #ocaml
Putonlalla has quit [Ping timeout: 256 seconds]
rf has joined #ocaml
Haudegen has quit [Quit: Bin weg.]
<discocaml> <cemerick> toastal: tbc, you can use dhall with OCaml without any additional work simply by using the existing standalone dhall-to-X tools
<discocaml> <cemerick> Looking at the language-oriented implementations, I'm surprised that they all appear to carry their own implementations, rather than linking to an authoritative one
mbuf has quit [Quit: Leaving]
<companion_cube> that'd require a portable authoritative one
<companion_cube> the main impl is in Haskell, isn't it? not the easiest to reuse from other languages
<discocaml> <cemerick> there's a mature rust impl it seems
<companion_cube> but then you have to export an AST and all that, no?
<discocaml> <cemerick> yeah, there's no getting around that
<discocaml> <cemerick> but that's a minor task compared to getting a parser and interpreter wired up from scratch
<discocaml> <cemerick> which it seems like all of the existing impls do, even those for languages that are really not suited for such things IMO
dhil has joined #ocaml
Haudegen has joined #ocaml
bartholin has joined #ocaml
olle has quit [Ping timeout: 248 seconds]
troydm has joined #ocaml
<pgiarrusso> OTOH you'd have to export a non-GCed AST into GCed languages, which doesn't sound fun either
<discocaml> <Kakadu> Folks, when we open bisect_ppx report why lines are in three colors? I could guess what green means, but what is the difference between red and white?
<discocaml> <Kakadu> For example, in this: https://gcdnb.pbrd.co/images/ae2qk3ZsIzOV.png?o=1
Tuplanolla has joined #ocaml
<companion_cube> pgiarrusso: better than the opposite, but yeah
dhil has quit [Ping timeout: 256 seconds]
<discocaml> <lukstafi> Anyone going to the OCaml workshop? If yes, do you also go to the full ICFP?
spip has quit [Quit: Konversation terminated!]
alexherbo2 has quit [Remote host closed the connection]
alexherbo2 has joined #ocaml
spip has joined #ocaml
<discocaml> <cemerick> Do cancellations in eio actually preempt the underlying fiber, or does cancellation just result in the fiber's task being "zombified"? I'd like to have timeouts that actually reclaim resources (CPU/memory) in a reasonable timeframe upon a timeout expiring, ideally without cooperative checking.
<companion_cube> I think if a fiber is stuck in a CPU loop, there's not much you can do
<discocaml> <cemerick> reading https://ocaml-multicore.github.io/eio/eio/Eio/Cancel/index.html, cancellation does seem preemptive and "real", but I can see some ambiguity
<discocaml> <cemerick> companion_cube: eh, figures
<discocaml> <cemerick> I miss the JVM's "unsafe" `Thread.stop()` for such things
<discocaml> <cemerick> I'll run an experiment to check, but I guess multicore still isn't for me 🙃
<companion_cube> but does Thread.stop really work on all architectures??
<discocaml> <cemerick> companion_cube: can't say I've run a JVM with `.stop()` calls on anything other than x86/x64/ppc, but for those, yes
daftaupe has quit [Ping timeout: 264 seconds]
<companion_cube> that's cool, I wonder how that works
<discocaml> <cemerick> oh, if you mean "architecture" re: uring or not, who knows
<companion_cube> although… I guess pthread_kill actually exists
<companion_cube> no no, you got it right
<discocaml> <cemerick> yeah, killing runaway loops and such is always a thing, it's just a question if the runtime on top allows it, and/or if it blows up "too often" in practice
wingsorc has joined #ocaml
<discocaml> <cemerick> hrm, there are some comments away from the official docs that imply runaway cancellations works. Experiment definitely in order.
<companion_cube> please report!
<companion_cube> meanwhile, I'm realizing that I can't make an injective open sum type :(
<companion_cube> `type +'a foo = ..`
<companion_cube> can't use this as a GADT :((((
<discocaml> <cemerick> that mostly makes sense
<companion_cube> `type _ foo += Foo_int : int -> int foo`
<companion_cube> I expected this to work…
daftaupe has joined #ocaml
alexherbo2 has quit [Remote host closed the connection]
<sadiq> you can no longer have uninterruptible cpu loops in OCaml
<sadiq> (since.. 4.13 I think?)
<sadiq> though I have no idea how cancellations work in Eio
<discocaml> <cemerick> sadiq: really! I'll have to dig through the changelog to see where/when that's guaranteed
<discocaml> <cemerick> about 80 pages of discussion re: cancellation semantics, woof https://discuss.ocaml.org/t/understanding-cancellation-in-eio/9369
<discocaml> <cemerick> sadiq: 🙏
<discocaml> <cemerick> sadiq: am I right in thinking that this change is only really relevant within the context of multicore? i.e. it's not like this provides for interrupting loops pre-50
<sadiq> well, it means we can deliver ctrl-c to things we couldn't before
<sadiq> but yes, it's there largely for multicore
<sadiq> I wonder if you can raise an effect from a signal handler.
<discocaml> <cemerick> sounds like "asynchronous exceptions", viz. https://github.com/ocaml/ocaml/issues/11411
<discocaml> <cemerick> (in which I see a comment I left months ago, but had forgotten about ofc 🤦 )
<sadiq> I forgot how long that PR got
sagax has joined #ocaml
<sadiq> I think if you don't mind using Unix and registering a signal handler you could use a new Domain in multicore and install a signal handler that raises an async exception?
<sadiq> then signal that domain when you want to cancel it
greaser|q has quit [Changing host]
greaser|q has joined #ocaml
greaser|q is now known as GreaseMonkey
<discocaml> <cemerick> sadiq: but isnt the point of 11411 that a domain can't be interrupted in that way?
<discocaml> <cemerick> (I haven't read it over again this afternoon tbc)
bgs has quit [Remote host closed the connection]
waleee has joined #ocaml
sagax has quit [Read error: Connection reset by peer]
bartholin has quit [Remote host closed the connection]
Tuplanolla has quit [Quit: Leaving.]