<rly>
make[3]: *** No rule to make target `labltk.cmo', needed by `labltkobjs'. Stop.
<adrien>
clean source folder?
<rly>
adrien: already did.
<adrien>
and is 3.12.1 working?
<rly>
adrien: after the clean (that I did before you said so), I do get a different message: Error: Unbound module Odoc_info
<rly>
adrien: File "generators/odoc_todo.ml", line 17, characters 0-14:
<adrien>
does svn have a function to revert to the state in HEAD, undoing all other changes?
<rly>
adrien: svn revert .
<rly>
adrien: svn status => empty result
Kakadu has joined #ocaml
<rly>
adrien: I see the problem.
<rly>
adrien: the problem is that make clean doesn't make clean.
<rly>
adrien: it seems a bug in the build system.
Tobu has quit [Ping timeout: 272 seconds]
<rly>
adrien: make clean doesn't even recursively clean...
<rly>
What are the Frenchies doing to make it that bad?
<zorun>
rly: have you read « Recursive make considered harmful » ? :)
<rly>
zorun: yes
<rly>
zorun: so?
<rly>
zorun: not providing a command to get the build system in a clean state is even worse.
<rly>
zorun: do you want me to write an article about that too?
<f[x]>
"clean source folder" means tarball unpacked into fresh directory
<rly>
f[x]: this is svn.
<f[x]>
then fresh checkout
<adrien>
or "git reset -f -x -d"
<f[x]>
not "make clean"
<rly>
adrien: it's svn.
<adrien>
yeah =/
<adrien>
it's almost impossible to make a perfect "make clean"
<rly>
adrien: uhm, no.
<rly>
find . -name '*.o' -exec rm {} \;
<rly>
Oh, look.
<rly>
That's for C.
<rly>
And likely it's a bit more complicated to make it actually work.
<rly>
But certainly not 'almost impossible'.
<adrien>
reading the recent commit log for ocaml, there is at least one place where a file is created with the Marshal module too
<rly>
With some luck I already fixed it.
<f[x]>
rly, it is not as simple for a big project with long history
<rly>
f[x]: ah, so now you are saying 'nobody knows what the code base is doing'?
<f[x]>
almost
<f[x]>
that's how it happens in "real world" (tm)
<rly>
f[x]: real world software development is the sux.
<f[x]>
what a fresh idea
<rly>
How to do proper real world software development is not new.
<rly>
It's not an 'open problem'.
<rly>
Because they teach it to first years.
<f[x]>
lol
<adrien>
webkit projects have a buildbot
<adrien>
periodically, at least for webkit-gtk, on IRC, you can read "the buildbot needs a full clean"
<adrien>
"periodically" is "every 10 days at most" here, and webkit stuff is not a small project
<rly>
adrien: ah, so because other people are stupid you see that as an excuse?
<adrien>
while I agree that many things are wrong with webkit*, I only meant that this is something that is very rarely properly done when a project does more than .c -> .o files (when there are other build stages)
<rly>
adrien: I watched how Google's build system now works. I can say that my build system is better with the exception of it not being distributed (but I could fairly easily do so if the need would arise).
<rly>
I did svn revert -R . && svn st --no-ignore returns nothing.
<rly>
I even completely purged the directory where the now current failure is and did an svn up afterwards.
<rly>
As such, I conclude that it is broken.
<rly>
<whoever uploaded that>--
<rly>
I will get the release instead.
Tobu has joined #ocaml
<f[x]>
it is quite possible
<rly>
Ok, that's quite sad.
<rly>
The release _also_ doesn't work.
<rly>
Fatal error: cannot find file ./ocamldoc\
<rly>
Fatal error: cannot find file ./ocamldoc
<rly>
That's basically how it died.
<adrien>
how are you building?
<rly>
adrien: ./configure -prefix $HOME && make world
<rly>
My $HOME has no spaces in it.
<adrien>
HOME directly? so you have $HOME/bin?
<rly>
adrien: yes
<rly>
adrien: ./configure has the same problem.
<rly>
adrien: so, without the -prefix.
<rly>
Fatal error: cannot find file ./ocamldoc
<rly>
Where is it looking for 'ocamldoc'?
<rly>
Because it is right there.
<adrien>
pastebin the output of "configure" and of "make world" somewhere
<rly>
Ok, perhaps I solved it now.
<rly>
It seems that it cannot run multiple jobs in parallel.
<rly>
That's fucking hilarious too.
<adrien>
yes, it cannot
<rly>
Whoever built this are supposed to be the best of humanity.
<rly>
But it really isn't better as what a second year student would do.
<adrien>
ocaml actually bootstraps from very little; it's not very easy
<zorun>
rly: try to do better :)
<rly>
zorun: sure, one problem at a time.
<rly>
adrien: yes, it is very easy.
<zorun>
it's really *not* a matter of turning a bunch of .c into .so
<zorun>
-s
<rly>
You start with an implementation of e.g. Forth.
<rly>
Then on top of that you build a slightly more complex language.
<rly>
Until you get at the language you want.
<rly>
The interpreter doesn't need to be optimized.
<rly>
Then you build a compiler in your desired language.
<rly>
Done.
<rly>
Now, if you want extreme safety properties, you would do it slightly different.
<rly>
But the bootstrapping would be the same.
<rly>
I can only hope that people building nuclear reactors do it better than the people at inria.
<f[x]>
so much talking
<rly>
f[x]: so much excuses.
Snark has joined #ocaml
ankit9 has joined #ocaml
gaddo_ has joined #ocaml
_andre has joined #ocaml
gaddo_ has quit [Remote host closed the connection]
cyphase has quit [Ping timeout: 255 seconds]
gaddo_ has joined #ocaml
cyphase has joined #ocaml
avsm has joined #ocaml
eni has quit [Quit: Leaving]
Obfuscate has quit [Ping timeout: 265 seconds]
cyphase has quit [Ping timeout: 255 seconds]
Obfuscate has joined #ocaml
sander has joined #ocaml
sander4321 has joined #ocaml
cyphase has joined #ocaml
Tobu has quit [Ping timeout: 248 seconds]
Tobu has joined #ocaml
zx80 has quit [Quit: Leaving]
Tobu has quit [Ping timeout: 272 seconds]
gnuvince has quit [Ping timeout: 250 seconds]
Tobu has joined #ocaml
Hussaind has quit [Quit: Konversation terminated!]
err404 has joined #ocaml
thomasga has quit [Quit: Leaving.]
Tobu has quit [Ping timeout: 272 seconds]
gnuvince has joined #ocaml
sander has quit [Quit: Leaving]
sander4321 has quit [Quit: Leaving]
browo has joined #ocaml
browo has left #ocaml []
emmanuel__ has joined #ocaml
msimoni has joined #ocaml
snearch has joined #ocaml
Tobu has joined #ocaml
Tobu has quit [Changing host]
Tobu has joined #ocaml
milosn has quit [Ping timeout: 250 seconds]
milosn has joined #ocaml
cago has quit [Quit: Leaving.]
milosn has quit [Read error: Connection reset by peer]
milosn has joined #ocaml
snearch has quit [Quit: Verlassend]
gnuvince has quit [Ping timeout: 260 seconds]
gnuvince has joined #ocaml
<hcarty>
rly: I haven't built OCaml svn in a week or two, but I have a few dozen times before that
<hcarty>
rly: It's a pretty straightforward process, but there are a few areas where the build system can get mixed up, such as Tcl/Tk detection.
ankit9 has quit [Quit: Leaving]
Kakadu has quit [Quit: Page closed]
<rixed>
rly: also the build system has to work on many different archs, from GNUs to non-gnus. So it's not that bad, really.
smondet has joined #ocaml
mika1 has quit [Quit: Leaving.]
gnuvince has quit [Ping timeout: 250 seconds]
gnuvince has joined #ocaml
ikaros has joined #ocaml
thomasga has joined #ocaml
iago has joined #ocaml
TDJACR has quit [Quit: Restarting client]
TDJACR has joined #ocaml
jamii has joined #ocaml
iago has quit [Ping timeout: 252 seconds]
ftrvxmtrx has quit [Quit: Leaving]
Submarine has quit [Quit: Leaving]
cyphase has quit [Ping timeout: 272 seconds]
gaddo_ has quit [Ping timeout: 272 seconds]
cyphase has joined #ocaml
ikaros_ has joined #ocaml
ikaros has quit [Ping timeout: 252 seconds]
jamii has quit [Ping timeout: 240 seconds]
Tobu has quit [Ping timeout: 248 seconds]
jamii has joined #ocaml
milosn has quit [Ping timeout: 265 seconds]
iago has joined #ocaml
Tobu has joined #ocaml
ftrvxmtrx has joined #ocaml
avsm has quit [Quit: Leaving.]
Cyanure has quit [Remote host closed the connection]
srcerer_ is now known as srcerer
jonafan has quit [Quit: leaving]
jonafan has joined #ocaml
bjorkintosh has joined #ocaml
Submarine has joined #ocaml
Submarine has quit [Changing host]
Submarine has joined #ocaml
<bjorkintosh>
is float (-x) the only way to indicate a negative number?
<bjorkintosh>
is there a shortcut or something?
<jonafan>
huh
<jonafan>
-2.0 ?
<flux>
bjorkintosh, you mean a negative floating point number literal?
<flux>
or a negation of a variable?
<bjorkintosh>
negation of a variable, flux.
<flux>
there is a succinct prefix operator for that
<flux>
~-.
<thelema_>
bjorkintosh: ~-.
<flux>
it almost disconnects your ssh but not quite :P
<bjorkintosh>
tilde minus dot ?
gaddo_ has joined #ocaml
<thelema_>
flux: succinct! hah
<flux>
bjorkintosh, the corresponding operator for integers is of course ~-
<thelema_>
unary negation is really ~- for integers, thus ~-. for floats
<flux>
I always seem to be slightly faster than thelema ;)
BiDOrD has joined #ocaml
<jonafan>
when is someone going to write a monsterous and hideous typeclass syntax extension
<thelema_>
jonafan: I hope never
<bjorkintosh>
jonafan, what for?
<jonafan>
different operators for all the different number types sucks
<thelema_>
jonafan: meh.
<flux>
probably 60% of the time when I write an expression involving floats I need to go back and change one literal to a float literal, or one operator to float operator
<thelema_>
jonafan: Float.(1.0 + 4.2)
BiDOrD_ has quit [Ping timeout: 272 seconds]
<flux>
thelema_, is that btw as performant as just writing the stuff out?
<flux>
logic would say yes, but..
<bjorkintosh>
very odd indeed.
<bjorkintosh>
so why does ocaml need a special set of functions for float from int?
<flux>
because in ocaml an expression only has exactly one type
<bjorkintosh>
aaah.
<flux>
also there is no oevrloading
<bjorkintosh>
hmm.
<flux>
it's not all downsides. you can always lexically see what is being done.
<hcarty>
flux: Yes, as long as Float.( + ) is defined as ( +. ) then there should be no performance loss
<thelema_>
flux: good question; it would be except I just noticed that batteries' Float doesn't expose the ocaml externals that implement float ops, so at the moment it's not.
<thelema_>
in 5 minutes, it will.
<flux>
:)
<hcarty>
thelema_: Hooray
<hcarty>
flux: And hooray to you for causing that change :-)
<bjorkintosh>
batteries?
<flux>
hcarty, yeah, asking the right questions is sometimes important :)
<bjorkintosh>
as in 'batteries included'?
<flux>
but I should get something to eat and go do something useful after that
<thelema_>
bjorkintosh: yes
<thelema_>
anyone have a good trick to assert that module Foo is a super-module of module Bar (without restricting the type of Foo to the same as Bar)?
<bjorkintosh>
i'm trying to find a list of things provided by the batteries.
<bjorkintosh>
awesome thanks. i was looking on ocaml forge.
<thelema_>
it's linked from our github page, I think
ikaros_ has quit [Remote host closed the connection]
<hcarty>
thelema_: An ugly solution would be to define Foo_throwaway : module type of Bar
<hcarty>
thelema_: In real OCaml syntax, preferably...
<thelema_>
hcarty: yes, I was thinking about doing that.
<hcarty>
thelema_: If you have an interface definition then "include module type of Bar" there should work
<hcarty>
thelema_: Similar to what Jane St. does for Core IIRC
<thelema_>
hmm, that would work, except then we couldn't have documentation for what got included (at least for types and submodules)
<hcarty>
thelema_: True. You would have to either force a link to the included definition or have the include but still include the definitions inline.
<thelema_>
hcarty: if we have the include, I don't think we could include type definitions again
<thelema_>
although I'll check - maybe that only applies to modules, not module types
<hcarty>
thelema_: Ah, true. Or module definitions.
<thelema_>
yes, exactly
<hcarty>
You could use with module A := A to remove that module...
<thelema_>
more work than the dummy module assert
<hcarty>
Yep
<thelema_>
although I wonder if there's a codesize penalty for dummy modules. I hope not.
<hcarty>
And the dummy assert can be hidden by an interface
<thelema_>
I'm fairly certain that interfaces don't affect codesize
<hcarty>
I doubt they do, at least in the current compiler.
<hcarty>
I suppose they could in a future version if a dead code elimination pass is added.
milosn has joined #ocaml
<thelema_>
one day. But not a priority of the dev team, I'm sure.
<thelema_>
I wish more for a better inliner. I'd love to not lose performance for HOFs.
<thelema_>
not that it's much performance
<thelema_>
and 99% of the time it doesn't matter
oriba has joined #ocaml
rossberg_ has quit [Ping timeout: 245 seconds]
<hcarty>
thelema_: I agree
<thelema_>
next I'll have to figure out how to make types work out such that `in_channel` becomes `IO.input`, etc.
<mrvn>
thelema_: something like IO.from_in_channel
<thelema_>
mrvn: no, in the type level
<thelema_>
replacing all occurrences of val x : in_channel -> ... with input ->
<thelema_>
mrvn: although thanks for the reminder of that function.
<mrvn>
thelema_: to bad you can't include M with type_conv in_channel := Io.from_in_channel
<thelema_>
yup... It looks like I'll have to do it by hand... ick
<hcarty>
thelema_: That will require changing interfaces
<hcarty>
You can have it work that way, but it will take a fair amount of editing or a bit of targeted editing and lots of automted interface generation.
<thelema_>
I think I can do `sig include module type of Legacy.Foo val x = input -> ... end` for those, I think
<thelema_>
except for Hashtbl, Map and Set, which have module types in them...
<thelema_>
although the error I'm getting on Hashtbl is odd - like it's comparing the modules backwards
<thelema_>
The field `Labels' is required but not provided
<thelema_>
module Hashtbl = (Hashtbl: module type of Legacy.Hashtbl)
Se7en has joined #ocaml
emmanuel__ has quit [Remote host closed the connection]
<hcarty>
thelema_: I had submitted a feature request related to this... I think it has something to do with the module signatures in those modules.
<hcarty>
thelema_: 'module type S = ... does not match module type S = ...'
<thelema_>
yup
<hcarty>
There is no way to remove/rename module types currently.
milosn has quit [Read error: Connection reset by peer]
milosn has joined #ocaml
SanderS has joined #ocaml
smerz has joined #ocaml
eni has quit [Quit: Leaving]
bjorkintosh has quit [Read error: No route to host]
msimoni has quit [Quit: Leaving.]
johnnowak has joined #ocaml
johnnowak has quit [Client Quit]
Tobu has quit [Ping timeout: 272 seconds]
bjorkintosh has joined #ocaml
eni has joined #ocaml
emmanuel__ has joined #ocaml
Tobu has joined #ocaml
_andre has quit [Quit: leaving]
TDJACR is now known as TDJACRBot
TDJACRBot is now known as TDJACR
gnuvince has quit [Ping timeout: 252 seconds]
snearch has quit [Quit: Verlassend]
ggherdov has joined #ocaml
eni has quit [Ping timeout: 272 seconds]
jamii has quit [Read error: Connection reset by peer]
Submarine has quit [Ping timeout: 252 seconds]
gnuvince has joined #ocaml
struktured has quit [Ping timeout: 245 seconds]
Tobu has quit [Ping timeout: 248 seconds]
<ssbr_>
Alright, so apparently I spent the last few days working on dead code
<ssbr_>
is there some nice automatic tool for telling me which ocaml functions aren't ever executed?
<_habnabit>
you mean, never _referenced_ or never _called_?
<ssbr_>
_habnabit: I don't care if it's referenced from other dead code.
<ssbr_>
so I mean, in an actual program run, it would never be called
<_habnabit>
dead because those paths are never traversed, or dead because there's a cluster of functions which are never called by anything, though
<ssbr_>
I think I want paths that _could_ never be traversed
gnuvince has quit [Ping timeout: 250 seconds]
<ssbr_>
although if there's a reference that just happens to rely on impossibility, that might just be a buggy if statement
<ssbr_>
the point is that there's lots of code that got replaced without being deleted, and so it isn't called and it's hard for me to tell what's what
Tobu has joined #ocaml
<_habnabit>
yeah, I don't know of anything. I'd sure like one, though
<_habnabit>
I remember running into this same problem before, but I don't remember finding any software that did this (or did it well)
oriba has joined #ocaml
SanderS has quit [Remote host closed the connection]
Snark has quit [Quit: Quitte]
Se7en2 has joined #ocaml
Se7en has quit [Ping timeout: 256 seconds]
err404 has quit [Remote host closed the connection]