adrien changed the topic of #ocaml to: Discussions about the OCaml programming language | http://www.ocaml.org | OCaml 4.07.1 release notes: https://caml.inria.fr/pub/distrib/ocaml-4.07/notes/Changes | Try OCaml in your browser: http://try.ocamlpro.com | Public channel logs at http://irclog.whitequark.org/ocaml | Due to ongoing spam, you must register your nickname to talk on the channel
ostera1974 has joined #ocaml
troydm has quit [Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset]
orbifx has quit [Ping timeout: 272 seconds]
troydm has joined #ocaml
ostera1974 has quit [Ping timeout: 268 seconds]
themsay has quit [Ping timeout: 244 seconds]
themsay has joined #ocaml
cantstanya has quit [Remote host closed the connection]
cantstanya has joined #ocaml
orbifx has joined #ocaml
themsay has quit [Ping timeout: 246 seconds]
themsay has joined #ocaml
companion_cube has joined #ocaml
webshinra has joined #ocaml
ocabot has joined #ocaml
kvda has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
companion_square has joined #ocaml
iovec has joined #ocaml
companion_cube has quit [Quit: WeeChat 2.3]
companion_square is now known as companion_cube
ziyourenxiang has quit [Ping timeout: 245 seconds]
jao has quit [Remote host closed the connection]
jao has joined #ocaml
mfp has quit [Ping timeout: 268 seconds]
Spetznaz_ has quit [Ping timeout: 240 seconds]
jao has quit [Remote host closed the connection]
orbifx has quit [Quit: WeeChat 2.3]
jao has joined #ocaml
try-again has quit [Remote host closed the connection]
companion_cube has quit [Ping timeout: 244 seconds]
ocabot has quit [Ping timeout: 244 seconds]
loli has quit [Quit: WeeChat 2.3]
loli has joined #ocaml
kvda has joined #ocaml
silver has quit [Read error: Connection reset by peer]
ostera1974 has joined #ocaml
ocabot has joined #ocaml
companion_cube has joined #ocaml
ostera1974 has quit [Ping timeout: 245 seconds]
ocabot has quit [Remote host closed the connection]
companion_cube has quit [Remote host closed the connection]
_whitelogger has joined #ocaml
themsay has quit [Ping timeout: 245 seconds]
tormen has joined #ocaml
tormen_ has quit [Ping timeout: 240 seconds]
ocabot has joined #ocaml
companion_cube has joined #ocaml
omarramo has joined #ocaml
ostera1974 has joined #ocaml
ostera1974 has quit [Ping timeout: 268 seconds]
johnelse has quit [Ping timeout: 244 seconds]
cobreadmonster has joined #ocaml
johnelse has joined #ocaml
JimmyRcom has quit [Ping timeout: 244 seconds]
gravicappa has joined #ocaml
gravicappa has quit [Ping timeout: 250 seconds]
jao has quit [Ping timeout: 245 seconds]
gravicappa has joined #ocaml
kvda has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
govg has joined #ocaml
pierpal has quit [Quit: Poof]
pierpal has joined #ocaml
steenuil_ has quit [Remote host closed the connection]
kvda has joined #ocaml
ostera1974 has joined #ocaml
ravenousmoose has joined #ocaml
ostera1974 has quit [Ping timeout: 250 seconds]
ravenousmoose is now known as ravenousmoose[aw
ravenousmoose[aw has quit [Client Quit]
kvda has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
ostera1974 has joined #ocaml
kvda has joined #ocaml
govg has quit [Ping timeout: 268 seconds]
FreeBirdLjj has joined #ocaml
govg has joined #ocaml
rymdhund has joined #ocaml
rymdhund has quit [Ping timeout: 268 seconds]
FreeBirdLjj has quit [Remote host closed the connection]
cobreadmonster has quit [Quit: Connection closed for inactivity]
FreeBirdLjj has joined #ocaml
ygrek has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 240 seconds]
pierpal has quit [Quit: Poof]
pierpal has joined #ocaml
sagotch has joined #ocaml
cantstanya has quit [Remote host closed the connection]
cantstanya has joined #ocaml
mfp has joined #ocaml
bartholin has joined #ocaml
pierpal has quit [Quit: Poof]
pierpal has joined #ocaml
Haudegen has joined #ocaml
ollehar has joined #ocaml
ravenousmoose has joined #ocaml
lokydor has joined #ocaml
lokydor has quit [Client Quit]
lokydor has joined #ocaml
pierpal has quit [Ping timeout: 244 seconds]
omarramo has quit [Ping timeout: 268 seconds]
omarramo has joined #ocaml
bartholin has quit [Remote host closed the connection]
kakadu has joined #ocaml
kakadu has left #ocaml [#ocaml]
kakadu has joined #ocaml
orbifx has joined #ocaml
ziyourenxiang has joined #ocaml
<orbifx> Hello all
reynir is now known as slavnir
slavnir is now known as slavnir_reynirsl
slavnir_reynirsl is now known as reynir
ravenousmoose is now known as ravenousmoose[aw
ravenousmoose[aw has quit [Quit: Taking a quick nap...ZZzzz]
ostera1974 has quit [Ping timeout: 240 seconds]
<vsiles> .o/
ostera1974 has joined #ocaml
* notnotdan waves
ostera1974 has quit [Ping timeout: 246 seconds]
KeyJoo has joined #ocaml
ravenousmoose has joined #ocaml
CcxWrk has quit [Ping timeout: 244 seconds]
nullifidian_ is now known as nullifidian
CcxWrk has joined #ocaml
pierpal has joined #ocaml
sagotch has quit [Ping timeout: 240 seconds]
ostera1974 has joined #ocaml
<cemerick> so, definitely something going awry in containers https://gist.github.com/cemerick/d98c8b836e44972dcd7e5dcbee7ecda8
<cemerick> I'll redo the "port" piece by piece, and see where the problem hits
ostera1974 has quit [Ping timeout: 244 seconds]
layeredeggplant has joined #ocaml
ravenousmoose has quit [Ping timeout: 252 seconds]
orbifx has quit [Read error: Connection reset by peer]
layeredeggplant has quit [Client Quit]
ravenousmoose has joined #ocaml
pierpal has quit [Ping timeout: 244 seconds]
nullifidian_ has joined #ocaml
layeredeggplant has joined #ocaml
orbifx has joined #ocaml
nullifidian has quit [Ping timeout: 245 seconds]
pierpal has joined #ocaml
omarramo has quit [Ping timeout: 240 seconds]
jao has joined #ocaml
Haudegen has quit [Remote host closed the connection]
nikivi has quit [Quit: ZNC is awesome]
nikivi has joined #ocaml
kvda has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
ostera1974 has joined #ocaml
ostera1974 has quit [Ping timeout: 240 seconds]
dtornabene has joined #ocaml
layeredeggplant has quit [Remote host closed the connection]
layeredeggplant has joined #ocaml
gareppa has joined #ocaml
layeredeggplant has quit [Remote host closed the connection]
layeredeggplant has joined #ocaml
FreeBirdLjj has joined #ocaml
layeredeggplant has quit [Quit: bye]
layeredeggplant has joined #ocaml
layeredeggplant has quit [Remote host closed the connection]
layeredeggplant has joined #ocaml
sagotch has joined #ocaml
zolk3ri has joined #ocaml
Enjolras has quit [Changing host]
Enjolras has joined #ocaml
gareppa has quit [Quit: Leaving]
Haudegen has joined #ocaml
ravenousmoose has quit [Ping timeout: 252 seconds]
ravenousmoose has joined #ocaml
ostera1974 has joined #ocaml
omarramo has joined #ocaml
ostera1974 has quit [Ping timeout: 246 seconds]
spew has joined #ocaml
silver has joined #ocaml
FreeBirdLjj has quit [Remote host closed the connection]
omarramo has quit [Quit: Konversation terminated!]
omarramo has joined #ocaml
FreeBirdLjj has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 245 seconds]
jaar has joined #ocaml
JimmyRcom has joined #ocaml
nikivi has quit [Quit: ZNC is awesome]
nikivi has joined #ocaml
dtornabene has quit [Quit: Leaving]
nikivi has quit [Quit: ZNC is awesome]
KeyJoo has quit [Quit: KeyJoo]
<companion_cube> hum :s
nikivi has joined #ocaml
omarramo has quit [Ping timeout: 250 seconds]
FreeBirdLjj has joined #ocaml
twopoint718 has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 240 seconds]
ravenousmoose has quit [Quit: Taking a quick nap...ZZzzz]
ravenousmoose has joined #ocaml
FreeBirdLjj has joined #ocaml
FreeBird_ has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 250 seconds]
<orbifx> companion_cube: hum indeed
FreeBird_ has quit [Ping timeout: 268 seconds]
assemblyman has joined #ocaml
FreeBirdLjj has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 240 seconds]
ostera1974 has joined #ocaml
FreeBirdLjj has joined #ocaml
omarramo has joined #ocaml
ostera1974 has quit [Ping timeout: 245 seconds]
FreeBirdLjj has quit [Ping timeout: 240 seconds]
<companion_cube> cemerick: and that's using Set?
omarramo has quit [Ping timeout: 268 seconds]
ravenousmoose has quit [Quit: Taking a quick nap...ZZzzz]
ravenousmoose has joined #ocaml
omarramo has joined #ocaml
Haudegen has quit [Remote host closed the connection]
bartholin has joined #ocaml
Bronsa has joined #ocaml
notnotdan` has joined #ocaml
ostera1974 has joined #ocaml
gareppa has joined #ocaml
ollehar has quit [Ping timeout: 240 seconds]
gareppa has quit [Max SendQ exceeded]
gareppa has joined #ocaml
ostera1974 has quit [Ping timeout: 272 seconds]
<companion_cube> somehow I feel that dune erroring on deprecation warnings is not good :/
omarramo has quit [Ping timeout: 240 seconds]
ravenousmoose has quit [Quit: Taking a quick nap...ZZzzz]
omarramo has joined #ocaml
ostera1974 has joined #ocaml
orbifx has quit [Quit: WeeChat 2.3]
gareppa has quit [Quit: Leaving]
ostera1974 has quit [Ping timeout: 245 seconds]
jao has quit [Ping timeout: 240 seconds]
Spetznaz_ has joined #ocaml
<Leonidas> does it error also in the release profile? That would definitely not be good.
gareppa has joined #ocaml
<companion_cube> no, no
<Leonidas> too bad version locking is 1) not common in ocaml 2) not very practical in ocaml
<Leonidas> (except for core which always gets released as one big ball of yarn, depending exactly on itself, which has other problems)
<companion_cube> which also makes version locking even more important downstream, doesn't it?
gareppa has quit [Remote host closed the connection]
Haudegen has joined #ocaml
<Leonidas> we always restrict our production applications to some hopefully sane range
omarramo has quit [Ping timeout: 240 seconds]
FreeBirdLjj has joined #ocaml
ostera1974 has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 245 seconds]
salc has quit [Ping timeout: 240 seconds]
<cemerick> companion_cube: Set, Option, and List are the only aggregates the program uses. The "stdlib" version also uses monomorphic, which I replaced with `open Containers.Float`. Just got back to the desk, so we'll see what happens as I do things one bit at a time.
ostera1974 has quit [Ping timeout: 268 seconds]
<companion_cube> my hunch would be that Float shadows something
r3s1stanc3 has quit [Quit: ZNC 1.7.1 - https://znc.in]
r3s1stanc3 has joined #ocaml
tane has joined #ocaml
Jesin has quit [Quit: Leaving]
sagotch has quit [Quit: Leaving.]
assemblyman has quit [Quit: ™]
<Leonidas> octachron: hey, can I get you to do a small ocaml-community thing for me?
<octachron> Leonidas, I can try at least
<Leonidas> octachron: could you do an empty commit to yojson? https://github.com/ocaml-community/yojson/issues/72#issuecomment-458956711
<Leonidas> it looks like project admins have to push to gh-pages to enable them. I assume this is to make sure people with write access don't set up gh-pages without the project authorities knowing or something.
<Leonidas> I haven't looked at the generated docs lately, but oh boy odoc styling has improved so much: https://leonidas-from-xiv.github.io/yojson/
<Leonidas> looks really pretty
<cemerick> companion_cube: 404 whoops? https://simon.cedeela.fr/ocaml-containers/
<Leonidas> (first time I saw it I inspected the page to check which font that was)
<companion_cube> cemerick: the link should be the github.io
<companion_cube> (I did remove the domain name from github yesterday, your DNS cache might be confused)
<octachron> Leonidas, it looks like I don't have the right to push a commit?
<cemerick> ah, the browser had cached the redirect
<Leonidas> octachron: oh? I thought everybody in ocaml-community is an admin of all the projects therein. Hmm, guess then we'll have to wait for pmezger, thanks anyway :-)
mengu has joined #ocaml
jnavila has joined #ocaml
kakadu_ has joined #ocaml
Madars has quit [Quit: reboot]
<cemerick> ok! So it looks like the monomorphic stuff is the culprit, but in a confusing way
<cemerick> I have one .ml file, with 2 modules that actually contain code. If I open either `Containers.Float` OR the analogous monomorphic module that I have been using within those modules, everything is fine.
<cemerick> However, if I open either of them at the top of the file, I see the perf hit.
<cemerick> Does this sound plausible at all?
<cemerick> companion_cube: ^^
<companion_cube> that seems pretty weird
Madars has joined #ocaml
<companion_cube> but, hmm, the monomorphic you use surely also shadows other things, not just floats?
<companion_cube> (note that `open Containers` does open containers' monomorphic sublibrary)
Jesin has joined #ocaml
jaar has quit [Quit: Leaving]
zolk3ri has quit [Remote host closed the connection]
ravenousmoose has joined #ocaml
<cemerick> I've been using `module FloatOps = Monomorphic.Make(struct type t = float end)`, which should do what I expect :-P
<companion_cube> hmm both modules seem legit, that's weird
<companion_cube> what about the incorrect results?
gravicappa has quit [Ping timeout: 240 seconds]
<cemerick> incorrect results?
<companion_cube> I thought you got wrong results
<cemerick> nono
<companion_cube> oh, that's a relief. It's "just" the perf things then.
<companion_cube> do you use flambda, btw?
<cemerick> Just anywhere from 12-20% perf hit by opening at the top level of the file
<cemerick> 4.07.1+fp+flambda currently
<companion_cube> if you open both on the top, and in the submodules, does it change anything?
<cemerick> I'll try
<cemerick> (I hope not!)
nikivi has quit [Ping timeout: 252 seconds]
sagotch has joined #ocaml
<Drup> that implementation doesn't make sense
<Drup> that's ... not enough to make the compiler use the specialized versions at all
<companion_cube> even with the mli?
<thizanne> Drup: would you happen to know what's the best way to create a link to an anchor (#id) on the same page with eliom ?
<thizanne> reload_action would do the job but I don't want to actually reload the page and I'm not sure it does that
<companion_cube> hey, if you're writing jsoo, do you have examples of real code that manipulates the dom?
<cemerick> Drup: reasonml-vscode says min/max/etc are monomorphic with that module
<Drup> companion_cube: mli type information are not going to trickle down inside the Pervasive modules to specialize them
<companion_cube> ah, you have to alias? heh
<Drup> cemerick: type-wise, yes, sure. But I'm pretty sure they are not going to use the specialized implementation
<Drup> (need to check the IR ... but really really highly doubt it)
<thizanne> I'm not writing jsoo companion_cube
<thizanne> but I may at some point
<companion_cube> ah right, my bad.
<Drup> thizanne: different ways, but I would just do `Raw.a ~a:[a_href "#potato"]`
<companion_cube> I kind of got a flemme overflow when I saw that merlin didn't complete methods with jsoo syntax :(
<Drup> companion_cube: use tyxml :3
<companion_cube> to manipulate the dom?
<thizanne> well I have this https://github.com/thizanne/boggle companion_cube
<Drup> companion_cube: is FRP good enough ? If so, yes.
<thizanne> (web/ folder)
<thizanne> but it's not much
<companion_cube> hum, FRP seems super overkill…
<Drup> "manipulate the DOM" can mean many things
<companion_cube> nice!
<companion_cube> I'd like the same kind of things but for a jsoo-compiled sudoku solver
<Drup> http://ocsigen.org/js_of_ocaml/3.1.0/api/Tyxml_js.Register is enough for simply swaping things.
<companion_cube> but, ugh, so many ugly things to learn :(
<Drup> Otherwise, Tyxml_js.R is really good at having simple signals in the middle of your DOM tree
<thizanne> that was one of my solutions Drup
<thizanne> but then I can't use automatic id's
<Drup> oh, automatic ids, hmm
<Drup> Where do you get the anchor from ?
<companion_cube> thanks, will look
<thizanne> Drup: i'm not sure I understand the question, but i'm generating the element with Eliom_html.ineverrememberthemodulenames
<thizanne> and I'd like to also generate an id at the same time so I can point to this element on another `a` tag on the page
<Drup> There is a module for that
gravicappa has joined #ocaml
<Drup> eh, actually, nevermind, it'll not do what you want
jao has joined #ocaml
<Drup> thizanne: if it's a local link, just generate a random string, attach it, and do things manually with Raw.a, you don't have to give the current URL, `#foo` as href is sufficient
<thizanne> thanks
<Drup> Oh, but nevermind
<Drup> there is a "fragment" parameter in Html.a, use that
ostera1974 has joined #ocaml
<Drup> (fragment= "the thing after # in an URL")
<thizanne> yeah I got this but then I have to generate the string myself instead of somehow get eliom to manage this for me
<thizanne> but that's fine for my purpose, just curious is something "cleaner" (albeit probably heavier) existed
<thizanne> bonus question: do you know a way (eliom or another lib) to input something like {|Can C# be used in "lol"|} and get "can-c-be-used-in-lol" ?
<thizanne> (that is, slugify a string or whatever you call it)
<companion_cube> lol runs on windows, pretty sure it must use a bit of C#
<thizanne> oh nice companion_cube solved it
<Drup> thizanne: yeah, we could have something for anchors like that, we don't. It's pretty trivial to write yourself, I guess ?
<cemerick> Drup: by "IR", do you mean -dlambda?
<thizanne> yeah I'm not completely sure what the proper behaviour should be but I guess just lowercasing and keeping the ascii letters would work well
<Drup> I meant the anchor/fragment question
<Drup> For the other question ... I'm sure that there are implementation of that in the OCaml ecosystem, but I'm not sure where and what their names are :p
<Drup> I would write it myself
<Drup> cemerick: I think lambda is indeed specialized, yes
<Drup> that just means it's not inlined and calls to the function :)
<cemerick> yeah, it didn't seem very useful in this case
<Drup> Ok, so it is indeed specialized. I'm .. surprised
<Drup> (probably only at use site, but that should be enough in practice)
tane has quit [Quit: Leaving]
<cemerick> Drup: how can you tell that?
<cemerick> or did you try it yourself to get a different level of IR
<Drup> Yeah, I did, inlining happens only after lambda
ostera1974 has quit [Ping timeout: 250 seconds]
gravicappa has quit [Ping timeout: 250 seconds]
<Drup> So if you use Monomorphic.Float, the *inlined* version is specialized. However, if you use Monomorphic.Make, nothing get specialized (even with flambda -O3)
<cemerick> I was just about to report the results along those lines
<cemerick> Containers.Float exhibits exactly the same perf as Monomorphic.Make
<cemerick> Using either of those at the top of my file yields the slowdown reported previously
<cemerick> putting Monomorphic.Float at the top is 👍
<Drup> Right, so it's perf slowdown due to polymorphic compare
<cemerick> leaving aside Monomorphic.Make, `open Containers.Float` is supposed to provide monomorphic operators though?
<companion_cube> dotted operators, I think
<companion_cube> ah right, not dotted
<companion_cube> but then Drup could test to see if they're effectively specialized, because it does look similar to monomorphic
<companion_cube> (ie just aliasing Pervasives.(whatever))
<Drup> So, Containers.Float.(=) is also not specialize, even after inlining, which is even worse than Monomorphic.Float.(=) ...
<Drup> given the implementation, yes, that's expected.
SpiceGuid has joined #ocaml
FreeBirdLjj has joined #ocaml
<companion_cube> -_-
<Drup> Eh, even CCFloat.(=) is not specialized, because it's an alias of (=), which has no type annotation
<companion_cube> and I thought that the .mli would help
<companion_cube> well that's worth a ticket
<Drup> .mli will never help for specialization in the current implementation, .mli are only checked for inclusion, they have no bearing on the types infered for a given operation
<Drup> it makes sense, a function could be exposed monomorphically but used polymorphically inside the structure
<companion_cube> ah, right :/
nikivi has joined #ocaml
<companion_cube> (that's twisted, though)
<Drup> You should revise the way you implement the specialized operator in general, honestly
<companion_cube> CCFloat has really never been my focus :/
<companion_cube> but please tell
FreeBirdLjj has quit [Ping timeout: 268 seconds]
<companion_cube> when I do this by hand (typically in Hashtbl.Make argument) I just alias with a type annotation, that's enough, right?
<Drup> huh, ok, now the compiler is just being really bad :(
<Drup> equal1 is not specialized :(
<Drup> that's really sad
<companion_cube> weird ôO
<companion_cube> with flambda -O3 ?
<Drup> with anything
<companion_cube> wit a bunch of [@inline], godbolt shows me a `caml_c_call` at a call-site
ostera1974 has joined #ocaml
<companion_cube> hu, it does optimize equal2 better
<companion_cube> `ucomisd` wtf is that
<companion_cube> these instructions…
<Drup> Ah, it might specialize even later than cmm .. >_>
<cemerick> I guess I kicked over a hornet's nest 🙃
<companion_cube> but you're right, even with -O3 it seems super hard to make it specialize equal1 :(
<companion_cube> cemerick: well at least now I opened an issue
<Drup> companion_cube: don't forget that we shouldn't even need to put the type annotation for equal1
<companion_cube> yeah yeah I was trying to give as much info as possible
<companion_cube> and yet, camlExample_equal1 has this caml_c_call inside :(
<companion_cube> (which I assume is the poly comparison)
ravenousmoose has quit [Quit: Taking a quick nap...ZZzzz]
ostera1974 has quit [Ping timeout: 246 seconds]
<Drup> yeah it is
<companion_cube> bug report?
<Drup> I guess ...
<Drup> the only way I found to make it specialize : https://ocaml.godbolt.org/beta/z/E2lOKb
<companion_cube> I should probably read the inlining reports on my projects
<companion_cube> 😅
<Drup> (and it's still masturbating a little bit for the instruction selection, but ... meh, doesn't matter)
<companion_cube> there's no shame in that
<Drup> companion_cube: anyway, in the meantime, I would suggest eta-expanding all your primitives and adding one type annotation everywhere
Haudegen has quit [Remote host closed the connection]
<companion_cube> :/
<companion_cube> will do when I close this issue, I guess
<companion_cube> heh it seems mostly done, except in Float…
<Drup> (and adding a small test, somewhere, to check that the output of -dcmm contains the appropriate primitive, for instance "caml_string_equal" for strings, which is easy to grep for)
<companion_cube> testing dcmm? no thanks
<Drup> just grep for the primitives
<companion_cube> that seems far too annoying to maintain and write
<Drup> caml_string_equal, == (int and bools), ==. (floats)
<companion_cube> that still involves calling a compiler by hand
<Drup> Not sure how hostile dune would be to such shenanigans :3
<companion_cube> anyway, I don't add specialized functions every day
<companion_cube> did you track all this by looking at inlining reports?
<Drup> not, -dcmm
<companion_cube> ugh
<Drup> It's ... not that hard to read
<companion_cube> yeah but you need to give all the arguments to the compiler
<companion_cube> it's not really doable on modules deep inside a project :(
<companion_cube> (can work for containers, tho)
<Drup> No no, just test on a small example file
<Drup> as if it was the user's code
<thizanne> Drup: sorry to bother you again, regarding Drup | there is a "fragment" parameter in Html.a, use that
<companion_cube> not sure I follow, I'm talking about examining whether functions deep inside a project are inlined
<thizanne> do you mean « create a Html.a link with the reload_acton service and the anchor in a fragment » ?
<Drup> thizanne: or just the service of the current page ?
<Drup> companion_cube: the only thing you need to ensure is you obtain the appropriate code inside the user's programs. Doesn't matter what happens before
<thizanne> can I get this automatically ?
<Drup> thizanne: well, it's the service of the current page, you must have created it ...
<thizanne> otherwise, would reload_action trigger an actual reload (that is, send something to the server) or not ?
<Drup> Oh, I see your issue, you don't have it yet
<thizanne> yes but I don't necessarily know on which page I am when I generate this element, so do I need to pass it somehow as a parameter ?
<Drup> hmm, about reload_action, I'm not sure.
<companion_cube> Drup: what if it's in a program and not a library
<companion_cube> (say, a *-solver)
<thizanne> well Raw.a it is, then
<thizanne> thanks for your help
<Drup> companion_cube: ah, I though we were discussing tests for containers
<companion_cube> well more generally speaking, I don't really know how to see if a function is going to be inlined
<Drup> cemerick: at least now we know why you got your slowdown :)
<cemerick> Drup: yeah; I wish I were in more of a position to help :-(
ostera1974 has joined #ocaml
<Drup> The compiler should really be better at this, this is a bit pathetic
<cemerick> maybe another couple of months and I'll have something like a serviceable workflow
<cemerick> Drup: does it make sense that not having _any_ monomorphic-related `open`s yields better perf than opening `Containers.Float` as it sits?
<companion_cube> you don't have any `open`?
<Drup> cemerick: it kinda does, yes, but it should be fixed once companion_cube sort out the mess :p
<companion_cube> pfff :p
mal`` has quit [Ping timeout: 240 seconds]
<cemerick> companion_cube: well, I timed it with everything stripped away. Maybe 8-10% better than the `open Container.Float` timings.
<companion_cube> I guess there are more functions and they're not inlined -_-
<Drup> Well, no, it's what I told you, none of the polymorphic operator in CCFloat are specialized...
<companion_cube> they could still be inlined
bartholin has quit [Remote host closed the connection]
<companion_cube> otherwise how comes it's *slower* than nothing?
mal`` has joined #ocaml
pzp has joined #ocaml
<Drup> Because (=) will point to the external, which means it's inlined very early (around lambda), and immediately specialized
<companion_cube> I guess it depends whether cemerick uses flambda with -O3
<companion_cube> (cause if it's the case, CCFLoat stuff could still have time to be inlined)
<Drup> It's more due to the fact that cemerick's code is probably not at all polymorphic
<Drup> In any case, it'll be better once you add the type annotations
<Drup> amusingly, I looked at how they deal with that in base... https://github.com/janestreet/base/blob/master/shadow-stdlib/gen/mapper.mll
<companion_cube> still not following, in reasonably simple code both should be inlined and specialized, right?
<companion_cube> (assuming O3)
<Drup> companion_cube: currently, it behaves exactly as equal1 in my code example.
<companion_cube> even though there's no functor‽ -_-
<companion_cube> damn it
<Drup> yep
<companion_cube> wtf indeed
<Drup> it is inlined. It's just that the thing that is inlined is the call to caml_equal :3
<companion_cube> …
<Drup> (which makes sense, in a way ...)
<companion_cube> honestly I like OCaml's polymorphism, but F# has this very nice form of specializing polymorphism that would help there
<cemerick> companion_cube: yes, I have -O3 set
<Drup> I still don't understand how F# handles high-order function with that thing
<Drup> (I think it doesn't ... so, meh)
<companion_cube> maybe they only support regular HO functions?
<companion_cube> the ones that can be specialized
<companion_cube> (same as flambda with [@specialise])
<Drup> (Also, F# doesn't have functors and run on a JITed VM, so ....)
<Drup> (it's easy to specialize in a JIT :D)
<companion_cube> mouarf, inlining reports are org-mode files… ^_^"
<companion_cube> I don't think it's done at JIT time
<companion_cube> you can also compile ahead of time
<companion_cube> oops, 8.7MB for the report on a big module :D
<companion_cube> inlining report*
bugabinga has quit [Quit: bugabinga]
bugabinga has joined #ocaml
jnavila has quit [Remote host closed the connection]
bugabinga has quit [Quit: bugabinga]
ostera1974 has quit [Ping timeout: 240 seconds]
ostera1974 has joined #ocaml
ostera1974 has quit [Ping timeout: 245 seconds]
asymptotically has quit [Ping timeout: 256 seconds]
Haudegen has joined #ocaml
rymdhund has joined #ocaml
rymdhund has quit [Ping timeout: 245 seconds]
ravenousmoose[aw has joined #ocaml
ravenousmoose[aw has quit [Client Quit]
kalio has quit [Ping timeout: 240 seconds]
kalio has joined #ocaml
TC01 has quit [Ping timeout: 240 seconds]
TC01 has joined #ocaml
ygrek has quit [Ping timeout: 268 seconds]
ostera1974 has joined #ocaml
ostera1974 has quit [Ping timeout: 244 seconds]
kakadu_ has quit [Remote host closed the connection]
<Leonidas> what the hell is mapper.mll? it looks like it goes through OCaml code and rewrites stuff to, e.g. explode.
orbifx has joined #ocaml
iovec has quit [Quit: Connection closed for inactivity]
kvda has joined #ocaml
SpiceGuid has quit [Quit: ChatZilla 0.9.93 [SeaMonkey 2.49.4/20180713174829]]
sagotch has quit [Ping timeout: 240 seconds]
twopoint718 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
FreeBirdLjj has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 245 seconds]
kvda has quit [Read error: Connection reset by peer]
ostera1974 has joined #ocaml
ostera1974 has quit [Ping timeout: 268 seconds]
Haudegen has quit [Remote host closed the connection]