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]
<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
<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>
(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)
<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>
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