<d_bot>
<darrenldl> > i feel like if a language is general purpose and doesn't cater to specific niches, it won't go anywhere.
<d_bot>
<darrenldl>
<d_bot>
<darrenldl> i am not confident go and rust target any specific niche
<d_bot>
<darrenldl> there are many langs that target some niche and never go anywhere
hornhack has quit [Ping timeout: 250 seconds]
<d_bot>
<darrenldl> lang popularity boils down to timing, marketing and luck really, to suggest "good" lang is necessarily popular and vice versa ignores the fact that most only care about the tech being "good enough"
biog has quit [Quit: ZZZzzz…]
chrisz has quit [Ping timeout: 268 seconds]
<d_bot>
<darrenldl> (as in they dont actively pursue a "better" choice all the time)
mbuf has joined #ocaml
<d_bot>
<darrenldl> we see similar network effect from fb vs other platforms
chrisz has joined #ocaml
hornhack has joined #ocaml
Tuplanolla has quit [Quit: Leaving.]
mclovin has quit [Ping timeout: 240 seconds]
mclovin has joined #ocaml
rgrinberg has joined #ocaml
<d_bot>
<gabenpls> yes there's definitely a timing factor when it comes to the network effect
<d_bot>
<gabenpls> i feel like if ocaml had the features people need back when they needed it it would have been more popular
<d_bot>
<darrenldl> "better" lang necessarily comes with at least slightly higher learning curve, which is an initial cost that some people dont want to deal with
<d_bot>
<darrenldl> many just want to get things up and running, they dont care if it'll be barely holding together a few months down the road
<d_bot>
<gabenpls> maybe but usually how popular something gets comes down to timing and execution
kaph_ has joined #ocaml
<d_bot>
<gabenpls> anyways, like you said, popularity isn't always equated to quality
<d_bot>
<gabenpls> so ocaml not being popular isn't that big of a deal
<d_bot>
<gabenpls> but then the other factor is execution
kaph has quit [Ping timeout: 240 seconds]
<d_bot>
<darrenldl> the ecosystem has been sufficiently rich for my use cases so far, so not too big of a deal to me personally
<d_bot>
<gabenpls> whats your use cases
<d_bot>
<darrenldl> some degree of system automation (namely a linux installer), transpiler/compiler, occassional language parsing and analysis
<d_bot>
<darrenldl> time and schedule handling (well i made a package for this one)
<d_bot>
<darrenldl> occassional quality of life utilities
<d_bot>
<darrenldl> if im writing a server of sort id likely use ocaml as well
<d_bot>
<darrenldl> so...any problem that is kinda complex and can be captured by algebraic data type nicely
<d_bot>
<darrenldl> exception i have made so far would be python and numpy and other data science stuff, but that side of things is largely unparalleled, and no other lang has an equivalent solution with same momentum
<d_bot>
<gabenpls> i wonder if ocaml is suitable for posix userland services
<d_bot>
<mk-fg> Not sure if I'm weird in that, but using ocamlopt compiler and a small .ml.c bindings seem to make it quite nice for linux userland stuff
<d_bot>
<mk-fg> I.e. you get access to all the libs (as C ABI is the dominant interface there) without any restrictions or need to find third-party bindings with slightly warped interfaces in there
<d_bot>
<gabenpls> @mk-fgsounds neat i'll give it a shot. how does ocaml use C bindings? dynamic linking? ffi?
<d_bot>
<mk-fg> Just linking, yeah
<d_bot>
<gabenpls> ok, so long as it's not ffi lol
<d_bot>
<gabenpls> hm reminds me a lot of ruby's c extension functionality
<d_bot>
<mk-fg> Also how python's cffi works, as yeah, ctypes/ffi tend to complicate and duplicate stuff a lot
<d_bot>
<gabenpls> hmm ffi works differently no?
<d_bot>
<mk-fg> I mean as in libffi which iirc what python's ctypes use too
<d_bot>
<mk-fg> "cffi" is a different thing there that uses gcc and similar C snippets
<d_bot>
<mk-fg> Which actually resolve all constants from headers and all that
<d_bot>
<mk-fg> Or constants and signatures and all that - proper compiler checks and linking instead of how ctypes work in python, which I thought was what you meant by "ffi" above
<d_bot>
<gabenpls> i see
<d_bot>
<gabenpls> to my understanding, libffi is for when a language doesn't have a C api that the user can use to call other libs
<d_bot>
<gabenpls> seems like ocaml does have a C api that one can use to write extensions
<d_bot>
<gabenpls> (similar to ruby)
<d_bot>
<gabenpls> C apis are preferably to ffi because more granular control
<d_bot>
<gabenpls> especially if the host lang is GC'd
<rgrinberg>
well libffi is a bit more powerful than that
<rgrinberg>
however, it's true that it isn't necessary to write bindings in OCaml
Everything has quit [Quit: leaving]
<companion_cube>
perf is hard sometimes :/
<companion_cube>
I guess I can't get my httpd to do more than 65k req/s… maybe not surprising since it uses threads
<rgrinberg>
@anurag is working on something that might be fast enough for you :)
waleee has quit [Ping timeout: 240 seconds]
<companion_cube>
domainslib might help a lot
<companion_cube>
but are you referring to something more fun? :)
<companion_cube>
I made a thread pool which helps a bit (compared to allocating new threads), but it's still not awesome
<companion_cube>
domains might be a significant improvement
<rgrinberg>
well threads are definitely the wrong way to go
<companion_cube>
yeah yeah, you know, I like direct style
xiongxin has joined #ocaml
<companion_cube>
I'm trying to optimize the wrong thing, this should be used for low concurrency embedded servers.
<rgrinberg>
how do you have the budget for threads at all then?
<companion_cube>
"embedded" as in, embedded in a larger application
<companion_cube>
it's always been the use case :D
<rgrinberg>
if you're embedded in a larger application, you should be very careful with threads for other reasons
<companion_cube>
sure, but you'd also have to be careful if you embed lwt in something that doesn't use it
<rgrinberg>
why's that?
<companion_cube>
cause it's assuming it's running as the main loop
<companion_cube>
I imagine you could have lwt in a separate thread, but that's kind of ironic :D
<rgrinberg>
that's a bit of a shame I suppose
<rgrinberg>
especially given that the underlying IO library fully supports driving the event loop manually
<companion_cube>
I mean, in applications that do _not_ have an event loop in the first place :)
<rgrinberg>
ok I give up, enjoy your threads :)
<companion_cube>
heh
<companion_cube>
don't worry, it's going to come back in fashion with domainslib
<companion_cube>
🤞
<companion_cube>
I'm also having fun with Atomic
<companion_cube>
it's nice to have access to that in OCaml, at last
<d_bot>
<gabenpls> just a thought but would be nice for https://opam.ocaml.org/packages/ the package list to be paginated. everytime i open this, it slows my entire pc lmao
<d_bot>
<darrenldl> there is effort on overhauling the main site for a while, i presume package page will receive one some time later
<d_bot>
<darrenldl> but yeah, i think it didn't anticipate this amount of packages when it was first built maybe
<companion_cube>
the v3?
<d_bot>
<darrenldl> ye v3
<d_bot>
<darrenldl> i'm very uninformed on it though, so i might be saying nonsense
<d_bot>
<darrenldl> yeah pagination is a good idea
<companion_cube>
tons of divs…
<companion_cube>
at least it's using <li>
<d_bot>
<darrenldl> or just show a handful like crates.io
<d_bot>
<darrenldl> i like the v3 style though
<companion_cube>
yeah it looks good
hexology has quit [Quit: hex on you ...]
<d_bot>
<darrenldl> this might be a good place to ask actually: there was a brief discussion of rust arc vs traditional gc architecture in terms of performance in a different server, wonder if anyone has concrete numbers on that front?
<companion_cube>
not particularly
<companion_cube>
however, note that rust does a lot less memory allocations that OCaml
<companion_cube>
people tend to have more flat values, and borrowing (with rust references) doesn't touch Arc refcounts at all
<companion_cube>
if it did (like Swift tends to do) it can have a certain overhead, although I don't have numbers
<d_bot>
<darrenldl> yeah true, vastly different memory usage profile
<companion_cube>
if you write rust with Arc<Mutex<…>> everywhere, the common view is that it'll be relatively slow :)
<d_bot>
<darrenldl> : D
<companion_cube>
(emphasis on "relatively")
<d_bot>
<gabenpls> i think we were talking about reasonml a couple days ago and someone mentioned about them lagging behind ocaml, but i just checked their repository and it seems like its compatible with 4.13 now..
gravicappa has joined #ocaml
kaph has joined #ocaml
kaph_ has quit [Ping timeout: 256 seconds]
spip has quit [Quit: Konversation terminated!]
hexology has joined #ocaml
rgrinberg has quit [Read error: Connection reset by peer]
rgrinberg has joined #ocaml
rgrinberg has quit [Read error: Connection reset by peer]
rgrinberg has joined #ocaml
rgrinberg has quit [Read error: Connection reset by peer]
rgrinberg has joined #ocaml
rgrinberg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
bartholin has joined #ocaml
ns12 has quit [Ping timeout: 240 seconds]
ns12 has joined #ocaml
mro has joined #ocaml
mro has quit [Remote host closed the connection]
mro has joined #ocaml
Tuplanolla has joined #ocaml
biog has joined #ocaml
mro has quit [Remote host closed the connection]
biog has quit [Quit: ZZZzzz…]
biog has joined #ocaml
mro has joined #ocaml
mro has quit [Ping timeout: 260 seconds]
mro has joined #ocaml
mro has quit [Remote host closed the connection]
mro has joined #ocaml
mro has quit [Remote host closed the connection]
jlrnick has joined #ocaml
mro has joined #ocaml
xiongxin has quit [Quit: xiongxin]
mro has quit [Remote host closed the connection]
mro has joined #ocaml
mro has quit [Remote host closed the connection]
mro has joined #ocaml
biog has quit [Quit: ZZZzzz…]
mro has quit [Remote host closed the connection]
spip has joined #ocaml
biog has joined #ocaml
mro has joined #ocaml
gravicappa has quit [Ping timeout: 256 seconds]
jlrnick has quit [Ping timeout: 268 seconds]
mro has quit [Remote host closed the connection]
mro has joined #ocaml
mro has quit [Client Quit]
gravicappa has joined #ocaml
waleee has joined #ocaml
kaph has quit [Ping timeout: 240 seconds]
mbuf has quit [Quit: Leaving]
biog has quit [Quit: ZZZzzz…]
<d_bot>
<minimario> what is the state of modular implicits in ocaml rn?
<companion_cube>
inexistent
<d_bot>
<minimario> why not 😮
<d_bot>
<undu> people are busy with multicore right now 🙂
<d_bot>
<minimario> the original paper was published in 2015 though 😛
biog has joined #ocaml
<companion_cube>
paper ≠ production ready typechecker
<zozozo>
about modular implicits: there is an ongoing work to prepare the terrain by first working on modular explicits, which is seen as a first step (see https://github.com/ocaml/ocaml/pull/9187 )
<zozozo>
apart from that, as far as I can recall, one thing that was still left to do for modular implicit was some theoretical work (around soundness and/or termination of the elabortation process, i can't quite recall), so not something that can be helped by just anyone sadly
<d_bot>
<Et7f3> The rescript backend is a fork of 4.06 and they embed a old reasonml converter.
rgrinberg has joined #ocaml
reynir has joined #ocaml
kaph has joined #ocaml
rgrinberg has quit [Read error: Connection reset by peer]
rgrinberg has joined #ocaml
mro has joined #ocaml
quernd9 has joined #ocaml
andreypopp_ has joined #ocaml
horninghack has joined #ocaml
mro_ has joined #ocaml
greyrat_ has joined #ocaml
pieguy128_ has joined #ocaml
ns127 has joined #ocaml
Geekingfrog_ has joined #ocaml
bobo_ has joined #ocaml
kronicma1 has joined #ocaml
ralu9 has joined #ocaml
drewolson4 has joined #ocaml
ansiwen_ has joined #ocaml
kandu_ has joined #ocaml
reynir1 has joined #ocaml
brettgilio0 has joined #ocaml
Geekingfrog_ has quit [Client Quit]
hexology- has joined #ocaml
gravicappa has quit [*.net *.split]
ns12 has quit [*.net *.split]
greyrat has quit [*.net *.split]
quernd has quit [*.net *.split]
SquidDev has quit [*.net *.split]
andreypopp has quit [*.net *.split]
remexre has quit [*.net *.split]
tristanC has quit [*.net *.split]
kronicmage has quit [*.net *.split]
Geekingfrog_ has joined #ocaml
olle has joined #ocaml
remexre has joined #ocaml
ns127 is now known as ns12
hackinghorn has joined #ocaml
lagash_ has joined #ocaml
jsoo_ has quit [Ping timeout: 240 seconds]
olle_ has quit [Ping timeout: 240 seconds]
x88x88x has quit [Ping timeout: 240 seconds]
seeg has quit [Ping timeout: 240 seconds]
bgs has quit [Ping timeout: 240 seconds]
biog has quit [Ping timeout: 240 seconds]
lagash has quit [Ping timeout: 240 seconds]
andreypopp_ has quit [Ping timeout: 240 seconds]
rak has quit [Ping timeout: 240 seconds]
rks` has quit [Ping timeout: 240 seconds]
omni has quit [Ping timeout: 240 seconds]
leah2 has quit [Ping timeout: 240 seconds]
quernd9 has quit [Ping timeout: 240 seconds]
Techcable has quit [Ping timeout: 240 seconds]
troydm has quit [Ping timeout: 240 seconds]
dstein64 has quit [Ping timeout: 240 seconds]
mal`` has quit [Ping timeout: 240 seconds]
landonf has quit [Ping timeout: 240 seconds]
horninghack has quit [Ping timeout: 240 seconds]
aru_ has quit [Ping timeout: 240 seconds]
dstein64- has joined #ocaml
aru_ has joined #ocaml
Techcable has joined #ocaml
leah2 has joined #ocaml
brettgilio3 has joined #ocaml
dstein64- is now known as dstein64
troydm has joined #ocaml
bgs has joined #ocaml
spoofer_ has joined #ocaml
mro has quit [*.net *.split]
reynir has quit [*.net *.split]
kaph has quit [*.net *.split]
spip has quit [*.net *.split]
hexology has quit [*.net *.split]
hornhack has quit [*.net *.split]
pieguy128 has quit [*.net *.split]
ralu has quit [*.net *.split]
drewolson has quit [*.net *.split]
tomku has quit [*.net *.split]
Geekingfrog has quit [*.net *.split]
nfc_ has quit [*.net *.split]
lobo has quit [*.net *.split]
ansiwen has quit [*.net *.split]
arg_ has quit [*.net *.split]
brettgilio has quit [*.net *.split]
spoofer has quit [*.net *.split]
theblatte has quit [*.net *.split]
kandu has quit [*.net *.split]
brettgilio3 is now known as brettgilio
drewolson4 is now known as drewolson
arg__ has joined #ocaml
theblatt1 has joined #ocaml
quernd has joined #ocaml
tomku has joined #ocaml
Geekingfrog_ is now known as Geekingfrog
tomku has quit [Changing host]
tomku has joined #ocaml
pieguy12- has joined #ocaml
jsoo has joined #ocaml
kandu_ has quit [Ping timeout: 256 seconds]
ralu9 has quit [Ping timeout: 256 seconds]
spip has joined #ocaml
ralu has joined #ocaml
rak_ has joined #ocaml
brettgilio0 has quit [Ping timeout: 256 seconds]
reynir1 has quit [Ping timeout: 256 seconds]
bobo_ has quit [Ping timeout: 256 seconds]
pieguy128_ has quit [Ping timeout: 256 seconds]
andreypopp has joined #ocaml
omni has joined #ocaml
kandu has joined #ocaml
SquidDev has joined #ocaml
nfc_ has joined #ocaml
rks` has joined #ocaml
reynir1 has joined #ocaml
adibsaad[m] has quit [Ping timeout: 260 seconds]
hexology- has quit [Ping timeout: 256 seconds]
smondet[m] has quit [Ping timeout: 252 seconds]
Sofi[m] has quit [Ping timeout: 240 seconds]
mclovin has quit [Ping timeout: 260 seconds]
saltrocklamp[m] has quit [Ping timeout: 252 seconds]
hexology has joined #ocaml
landonf has joined #ocaml
greyrat_ has quit [Ping timeout: 256 seconds]
greyrat has joined #ocaml
CodeBitCookie[m] has quit [Ping timeout: 250 seconds]
lobo has joined #ocaml
fcc977 has joined #ocaml
mal`` has joined #ocaml
fcc977 has quit [Remote host closed the connection]
fcc977 has joined #ocaml
fcc977 has quit [Remote host closed the connection]
kaph has joined #ocaml
lobo has quit [Ping timeout: 256 seconds]
lobo has joined #ocaml
seeg has joined #ocaml
Sofi[m] has joined #ocaml
leah2 has quit [Quit: trotz alledem!]
leah2 has joined #ocaml
spoofer_ is now known as spoofer
lisq has quit [Quit: lisq]
lisq has joined #ocaml
rgrinberg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
adibsaad[m] has joined #ocaml
mclovin has joined #ocaml
Everything has joined #ocaml
mro_ has quit [Ping timeout: 240 seconds]
smondet[m] has joined #ocaml
<d_bot>
<minimario> zozozo: is there any documentation on that somewhere? am pretty curious about the theory around that
<zozozo>
minimario : there might be some old posts on the forum where some discussions have taken place if you want to go look for them
reynir1 has quit [Ping timeout: 260 seconds]
smondet[m] has quit [Write error: Connection reset by peer]
Sofi[m] has quit [Remote host closed the connection]
mclovin has quit [Read error: Connection reset by peer]
adibsaad[m] has quit [Read error: Connection reset by peer]
perrierjouet has quit [Quit: WeeChat 3.4]
mclovin has joined #ocaml
perrierjouet has joined #ocaml
smondet[m] has joined #ocaml
adibsaad[m] has joined #ocaml
CodeBitCookie[m] has joined #ocaml
saltrocklamp[m] has joined #ocaml
Sofi[m] has joined #ocaml
mclovin has quit [Quit: Client limit exceeded: 20000]
saltrocklamp[m] has quit [Quit: Client limit exceeded: 20000]
smondet[m] has quit [Quit: Client limit exceeded: 20000]
CodeBitCookie[m] has quit [Quit: Client limit exceeded: 20000]
<d_bot>
<leviroth> Unless I’m thinking of something else, I think Leo White said somewhere that soundness isn’t an issue because implicits just elaborate to existing stuff.