justdit has quit [Read error: Connection reset by peer]
ygrek has joined #ocaml
Drup has quit [Quit: Leaving.]
osnr has quit [Quit: Leaving.]
Tekk_ has quit [Ping timeout: 255 seconds]
justdit has joined #ocaml
walter has joined #ocaml
walter|r has quit [Ping timeout: 256 seconds]
ggole has joined #ocaml
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
<gasche>
rgrinberg: what do you meanm
<gasche>
, n
<gasche>
"no streams"?
<gasche>
(sorry)
justdit has quit [Quit: Lost terminal]
ulfdoz has joined #ocaml
pootler_ has quit [Quit: Lost terminal]
pootler__ has quit [Quit: Lost terminal]
pootler_ has joined #ocaml
pootler__ has joined #ocaml
ulfdoz has quit [Ping timeout: 240 seconds]
pootler_ has quit [Client Quit]
pootler__ has quit [Client Quit]
osnr has quit [Quit: Leaving.]
pootler_ has joined #ocaml
gnuvince has joined #ocaml
pootler__ has joined #ocaml
pootler_1 has joined #ocaml
pootler_1 has quit [Client Quit]
pootler_ has quit [Quit: Lost terminal]
pootler__ has quit [Client Quit]
pootler_ has joined #ocaml
pootler__ has joined #ocaml
pootler_1 has joined #ocaml
pootler_2 has joined #ocaml
pootler_3 has joined #ocaml
pootler_4 has joined #ocaml
cthuluh has quit [Remote host closed the connection]
pootler_2 has quit [Quit: Lost terminal]
pootler_ has quit [Quit: Lost terminal]
pootler_4 has quit [Client Quit]
pootler__ has quit [Quit: Lost terminal]
pootler_1 has quit [Quit: Lost terminal]
pootler_3 has quit [Client Quit]
pootler_ has joined #ocaml
pootler__ has joined #ocaml
pootler_1 has joined #ocaml
pootler_2 has joined #ocaml
kaustuv has joined #ocaml
pootler_1 has quit [Client Quit]
pootler_ has quit [Client Quit]
pootler_2 has quit [Client Quit]
pootler__ has quit [Client Quit]
pootler_ has joined #ocaml
pootler__ has joined #ocaml
pootler__ has quit [Client Quit]
pootler_ has quit [Client Quit]
pootler_ has joined #ocaml
pootler_ has quit [Client Quit]
pootler_ has joined #ocaml
pootler__ has joined #ocaml
pootler__ has quit [Client Quit]
pootler__ has joined #ocaml
derek_c has joined #ocaml
pootler_1 has joined #ocaml
pootler_ has quit [Ping timeout: 255 seconds]
zpe has joined #ocaml
talzeus_ has joined #ocaml
talzeus has quit [Read error: Connection reset by peer]
Watcher7 is now known as Watcher7|off
ygrek has quit [Ping timeout: 246 seconds]
talzeus_ has quit [Remote host closed the connection]
talzeus has joined #ocaml
thomasga has joined #ocaml
ulfdoz has joined #ocaml
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
ulfdoz has quit [Ping timeout: 268 seconds]
ulfdoz has joined #ocaml
osnr has quit [Ping timeout: 256 seconds]
ulfdoz has quit [Ping timeout: 246 seconds]
csakatok_ has joined #ocaml
testcocoon has quit [Quit: Coyote finally caught me]
Snark has joined #ocaml
csakatoku has quit [Ping timeout: 256 seconds]
testcocoon has joined #ocaml
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
sgnb has quit [Remote host closed the connection]
hkBst has joined #ocaml
hkBst has quit [Changing host]
hkBst has joined #ocaml
osnr has quit [Ping timeout: 256 seconds]
sgnb has joined #ocaml
djcoin has joined #ocaml
mika1 has joined #ocaml
ygrek has joined #ocaml
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
ontologiae_ has joined #ocaml
osnr has quit [Ping timeout: 256 seconds]
raichoo has joined #ocaml
f[x] has joined #ocaml
ygrek has quit [Ping timeout: 248 seconds]
derek_c has quit [Quit: Lost terminal]
chrisdotcode has quit [Ping timeout: 268 seconds]
q66 has joined #ocaml
testcocoon has quit [Read error: Connection reset by peer]
Kakadu has joined #ocaml
testcocoon has joined #ocaml
structuralist has joined #ocaml
Kakadu has quit [Ping timeout: 246 seconds]
gnuvince has quit [Ping timeout: 264 seconds]
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
osnr has quit [Ping timeout: 276 seconds]
ttamttam has joined #ocaml
mcclurmc has quit [Ping timeout: 256 seconds]
talzeus has quit [Remote host closed the connection]
talzeus has joined #ocaml
talzeus has quit [Remote host closed the connection]
talzeus has joined #ocaml
UncleVasya has joined #ocaml
Kakadu has joined #ocaml
Uvs has joined #ocaml
UncleVasya has quit [Read error: Connection reset by peer]
Kakadu has quit [Ping timeout: 246 seconds]
Uvs has quit [Quit: Uvs]
osnr has joined #ocaml
osnr has quit [Ping timeout: 246 seconds]
mcclurmc has joined #ocaml
ollehar has joined #ocaml
talzeus has quit [Remote host closed the connection]
talzeus has joined #ocaml
gautamc has quit [Read error: Connection reset by peer]
jcao219 has joined #ocaml
ulfdoz has joined #ocaml
kakadu has joined #ocaml
gautamc has joined #ocaml
jathd has quit [Ping timeout: 276 seconds]
dsheets has quit [Ping timeout: 240 seconds]
osnr has joined #ocaml
ulfdoz has quit [Read error: Connection reset by peer]
osnr has quit [Ping timeout: 264 seconds]
f[x] has quit [Ping timeout: 256 seconds]
ulfdoz has joined #ocaml
introom has joined #ocaml
spanish has joined #ocaml
ulfdoz has quit [Read error: Connection reset by peer]
cthuluh has joined #ocaml
talzeus has quit [Remote host closed the connection]
talzeus has joined #ocaml
talzeus has quit [Remote host closed the connection]
talzeus has joined #ocaml
dsheets has joined #ocaml
talzeus has quit [Ping timeout: 276 seconds]
Drup has joined #ocaml
_andre has joined #ocaml
Drup has left #ocaml []
ygrek has joined #ocaml
Drup has joined #ocaml
f[x] has joined #ocaml
ygrek has quit [Ping timeout: 256 seconds]
structuralist has quit []
ttamttam has quit [Read error: Connection reset by peer]
ttamttam has joined #ocaml
ttamttam has quit [Read error: Connection reset by peer]
ttamttam has joined #ocaml
blues has joined #ocaml
Neros has joined #ocaml
Drup has quit [Quit: Leaving.]
Drup1 has joined #ocaml
csakatok_ has quit [Remote host closed the connection]
blues has quit [Quit: Page closed]
adrien_o1w is now known as adrien_oww
<adrien_oww>
morning
<kaustuv>
Are there any alternatives to the stdlib's Format?
<MarcWeber>
kaustuv: Sure, you can always write your own syntax extensions ..
<MarcWeber>
I don't know ocaml well .. so this may have been done or not - no idea.
<adrien_oww>
Psomething
<adrien_oww>
hmmm
<adrien_oww>
EasyFormat
<adrien_oww>
by Martin Jambon
<adrien_oww>
and maybe something by Jun Furuse
<MarcWeber>
If anybody is using Vim, you can debug ocaml using Vim now: github.com/MarcWeber/vim-addon-ocamldebug
<kaustuv>
adrien_oww: EasyFormat is built on top of Format, so I don't think it will work for me
<adrien_oww>
kaustuv: well, what are your criteria?
<kaustuv>
Here's what I need: I need a way for a "callback" to be called when something is flushed to the output channel.
<kaustuv>
Which will need to know the line and column number
<adrien_oww>
MarcWeber: oh, great; I remember you starting work on that several months back
<adrien_oww>
thanks =)
<MarcWeber>
Did I ? :) Took me a half day yesterday adopting code I wrote earlier.
<MarcWeber>
Eg why doesn't bt (ocamldebug) show human friendly line numbers?
speredenn has joined #ocaml
<MarcWeber>
I mean when setting breakpoitns it does so anyway .. so the code must be there
<MarcWeber>
adrien_oww: How would you try to find out why a bytecode compiled ocaml projects behaves differently then a native compiled one? Is there a better method than trying to use the debugger to find points to trace states and compare them?
Drup1 is now known as Drup
<hcarty>
kaustuv: There is pprint or something close to that... I don't remember the exact name.
<kaustuv>
I think they are all variants of old stuff by Daan Leijen, Phil Wadler, etc.
Tobu has quit [Ping timeout: 256 seconds]
<gasche>
kaustuv: yes and no
<gasche>
because the people you cite themselves developped variants of stuff that was done in the eighties
<gasche>
Wadler took the eighties algorithm, and presented a lazy version of it
<gasche>
Pottier took Daan's implementation of Wadler's algorithm, and developed a strict version of it
<gasche>
He believes that this is essentially the original algorithm or something close, I haven't checked it
<gasche>
(the original work was done by Oppen, the same as in Nelson-Oppen I believe)
sclv has quit [Ping timeout: 240 seconds]
f[x] has quit [Ping timeout: 268 seconds]
sclv has joined #ocaml
<gasche>
MarcWeber: the link to your github repo is dead
<gasche>
and I can't find anything of the same name on your github page
<kaustuv>
Do ocamlpro/ocamllabs/ocamlcore/whoever have any plans to put api docs for packaged ocaml libraries in some canonical place, like hackage for Haskell? Does this already exist?
<gasche>
GODI does that
<gasche>
I think this was one of the plans of Oasis-DB as well, but Sylvain has reduced workforce currently
<MarcWeber>
Is there Std.dump with recursion limit (like the debugger has)?
metasyntax has joined #ocaml
<avsm>
kaustuv: yeah. it'll be on ocaml.org. we've got a new ocamldoc almost complete (just fixing some bugs in -pack) that does cross referencing
<adrien_oww>
a new ocamldoc? can you detail that?
<kaustuv>
That's great news.
<adrien_oww>
MarcWeber: sorry, I don't know where to get the exact details about that
<gasche>
(there are other sources of potentially different behavior coming from the "unspecified" behaviors in OCaml, such as argument evaluation order)
<avsm>
but will be soon. it's easier to demo than to write about beforehand
<kaustuv>
Argument evaluation order is still different? A quick experiment shows that this behaves identically in the toplevel and when compiled: let f x y = () in f (print_endline "one") (print_endline "two");;
<kaustuv>
(compiled with ocamlopt, of course)
<adrien_oww>
kaustuv: no, it was the matter of a bug report around one or two years ago
<adrien_oww>
and was changed for the sake of uniformity
<MarcWeber>
If you timetravel in the debugger, how can it print and display values?
<MarcWeber>
Does it copy the state of the application for each step?
pootler_1 has quit [Ping timeout: 256 seconds]
speredenn has quit [Quit: Leaving]
<kaustuv>
It uses fork(), so copy-on-write for the most part
pootler_ has joined #ocaml
<MarcWeber>
Should I have a process running for each step then?
ollehar has quit [Read error: Operation timed out]
Tobu has joined #ocaml
<ggole>
I think it stores a snapshot at every N steps.
<ggole>
Stepping backwards is then restoring from last snapshot and moving forward however many steps.
<ggole>
(Don't take that as gospel.)
<whitequark>
ggole: I think gdb actually interprets instructions in reverse
f[x] has joined #ocaml
<whitequark>
aka "why debuggers these days implement significant chunks of x86 interpreters"
<ggole>
How do they reconstruct destroyed state?
<whitequark>
record it?
<ggole>
Hmm
<ggole>
I guess those are equivalent.
<whitequark>
one of these does not involve syscalls, though.
<whitequark>
lemme check how lldb does it.
<whitequark>
while I'm at it:http://velvetpulse.com/2012/11/27/scribe-the-deterministic-transparent-record-replay-engine/
<MarcWeber>
using that hack I've created two stack traces: one with ocamlopt, one with ocamlc.
<ggole>
I'm not sure how much of that is because of the awfulness of gdb, though
<MarcWeber>
You see that from line 23 to 17 everything is fine, then the trace starts differing
<whitequark>
ggole: scribe is different though
<whitequark>
it's not for debugging, but for recording not spatial, but temporal backtraces
<ggole>
So you say "gimme the value(s) of x" and get a sequence of x's?
<ggole>
Hmm
<whitequark>
ggole: not really :)
<whitequark>
read the article
<ggole>
Oh, I see
<ggole>
That sounds kinda hard, in the general case
<whitequark>
ggole: yes, but he did it
<whitequark>
I have no idea how, to be honest; the paper is in my reading list for a while
<whitequark>
but it looks really cool.
* ggole
watches the video
<whitequark>
he uses a patched linux kernel; to my knowledge, that's only to intercept syscalls
<ggole>
Interesting
<ggole>
But how much language specific machinery do you need for good visibility into the recorded process?
<ggole>
Cool beans though
<whitequark>
as I understand it, you're fine with just gdb, if from within gdb you can introspect your runtime
<whitequark>
this is true for eg ruby
<whitequark>
and also he writes that he has a way to augment scribe with language-specific stuff
<whitequark>
also it looks like it can replay race conditions, i.e. scheduling.
<whitequark>
that is really, really interesting, especially if coupled with something like tsan.
<whitequark>
sounds like it is possible to make a sanitizer which can automatically detect races, reproduce and create test cases for them, for general-purpose C++ stuff
<whitequark>
well, a subset of
mika1 has quit [Quit: Leaving.]
<whitequark>
no, probably not test cases. but even a human-readable description is very valuable.
<ggole>
So it records all temporal interactions? Even word tearing?
f[x] has quit [Ping timeout: 268 seconds]
<ggole>
(Or equivalent stuff)
<whitequark>
good question
<whitequark>
one of us needs to read the paper :)
<ggole>
Hah!
<kaustuv>
Who has time to read papers? I'm busy proving my code correct.
<whitequark>
kaustuv: so you can avoid running it?
kaustuv has left #ocaml []
<MarcWeber>
Do you know about a preprocessor which adds tracing lines to the code?
<MarcWeber>
So that you know when ocamlopt and ocamlc do something differently fast?
skchrko has quit [Quit: Leaving]
yacks has quit [Quit: Leaving]
kakadu is now known as Kakadu
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
pootler_ has quit [Ping timeout: 255 seconds]
pootler__ has quit [Ping timeout: 276 seconds]
osnr has quit [Ping timeout: 248 seconds]
skchrko has joined #ocaml
alxbl has quit [Quit: Error 3: This should never happen]
<amiller_>
ggole, I guess my concern is that if I don't insert Gc.allocated_bytes into the right places in my code then I'll get misleading measurements from that sample
<amiller_>
what I'd probably want is sampling inserted automatically like by ocamlprof (i think)
<amiller_>
oh wait i think i misunderstood the doc
<ggole>
Hmm
<amiller_>
"Return the total number of bytes allocated since the program was started."
<amiller_>
does that mean it never goes down?
<ggole>
Yeah
<ggole>
You call it once, call it again once you are done
<ggole>
Print the difference
<amiller_>
right
<pippijn>
Active filesystem monitoring, where the build automatically restarts whenever you modify a source file. This can be very useful during the edit/compile cycle.
<pippijn>
this is useful, but doesn't work with vpath builds :(
<pippijn>
because it vpath builds are done with symbolic links, and inotify doesn't follow links
<pippijn>
and after half an hour of looking at the omake code, I couldn't find the place where I could make it follow links when adding the watches
<MarcWeber>
pippijn: ruby -> guard -> that should be less than 3 lines to create rulres for anything
<pippijn>
MarcWeber: the point of having it inside the build system is that it doesn't need to stat everything
<MarcWeber>
Eg you can say **/*.ml any change then recompile
csakatoku has quit [Ping timeout: 276 seconds]
<MarcWeber>
pippijn: there are many different solutions, depending on the amount of files.
chrisdotcode has quit [Ping timeout: 246 seconds]
<MarcWeber>
For haxe I've written a build system based on rake. However I first create the rules, then create rake tasks. Thus I can also create a makefile or whatsoever.
<MarcWeber>
However I don't think the code is nice enough to be reused for arbitrary ocaml projects.
<MarcWeber>
However I'd be willing collaborating on such a goal
<pippijn>
MarcWeber: does ruby guard add new files to the watch?