<kmag>
there is something to be said for the jorney involved in reinventing the wheel, though
<travisbemann>
i've never tried F#, and it seems like a rather watered down OCaml that helps promote Microsoft's .NET
<travisbemann>
hehehe
<kmag>
yeah... I really wish the DIS virtal machine from Inferno was Free/OSS
<kmag>
designed specifically for JITs
<kmag>
on hardware with many registers
<kmag>
stack-based VMs are good for interpretation and aren't bad when you're JITing for a register-starved platfor
<travisbemann>
the thing is that stack based VMs are so easier to implement than register based VMs
<kmag>
or memory based VMs
<kmag>
evcept that they make JITs more complicated
<kmag>
if you want to optimize for many registers
<kmag>
I'm a little surprised that Java doesn't use two stacks...
<kmag>
one for references and the other for literals
<kmag>
it would make garbage collection easier
<travisbemann>
yeah, but it'd make implementing the rest of the VM more difficult
<kmag>
and it wouldn't surprise me if some VMs used two stacks internally
<travisbemann>
and you can always cheat by having the VM do what OCaml's VM does
<travisbemann>
even though at the same time you lose a bit of number resolution
<kmag>
yeah, I've read a paper or two
<kmag>
the ocaml vm kicks ass
<kmag>
has anyone tried making an ocaml JIT?
<kmag>
Ever tried Prolog?
<travisbemann>
i've never tried prolog myself
<travisbemann>
and as for ocaml, it doesn't really need a JIT as it's alreaady got a native code compiler
<kmag>
there are some advantages to having platform-independent binaries with good speed
<kmag>
distributed computation being one of them
<travisbemann>
yeah
<travisbemann>
and also allowing more dynamic, lisp or scheme style programming
<kmag>
dynamic recompilation and optimization can also in theory give you better performance than pre-compiled native code
<kmag>
ever heard of FX!32 ?
<travisbemann>
in theory; the main reason why i like it is that it allows new code to be loaded and compiled at runtime
<travisbemann>
nope
<kmag>
it allows you to run x86 Linux binaries on Alpha Linux or x86 Win32 binaries on Alpha WinNT
TachYon has joined #ocaml
<kmag>
it decompiles x86 code and recompiles for Alpha
<kmag>
the system call numbers and symantics need to be the same
<kmag>
but it does interesting stuff like saving recompiled code and profiling information for the next time you run the same binary, so that you get a better optimized binary next time you run it
<kmag>
DEC had some truly amazing hardware and software people
<travisbemann>
one little question
<kmag>
k
<travisbemann>
how does it solve the problem of 32 bit integer arithmetic being essentially modulo 32?
<travisbemann>
or does it break code which relies on such?
<kmag>
you can do 32-bit operations on Alpha. There may be problems with 16-bi code running a bit slow due to extra truncation operations
<travisbemann>
i wonder why alpha supports 32 bit arithmetic at all... isn't that like unnecessary transistors that could be put to some better purpose...
<kmag>
legacy C code, probably
<kmag>
there's a lot of C code that will run very slowly if you don't have native 32-bit operations
<travisbemann>
even though such code should be considered badly written to start off with
<travisbemann>
(whenever i write code, i try to not make it dependent upon the module 32 aspect of 32 bit arithmetic)
<kmag>
yeah, I use uint32, uint64, etc. and define those in header files
<travisbemann>
i do too
<kmag>
I'm told that there is an official C99 way to specify intger sizes, but I couldn't find it in the header file they told me to look in
<kmag>
in any case, if there is something dumb in hardware or software, at least 70% of the time you can blame x86, FOTRAN, or C
<kmag>
Seymore Cray once said something like "I don't know what the programming language of the year 2000 will look like, but it will be FORTRAN"
<travisbemann>
lol
<kmag>
FORTRAN was developed in 1954!
<travisbemann>
luckily, Fortran seems to be dying out - but C seems to be staying around very well
<kmag>
Supposedly it was the first non-assembly programming language
<kmag>
I did some translation of Fortran 77 into Java
<kmag>
Fortran is evil
<kmag>
pure evil
<travisbemann>
Fortran is like BASIC, but worse
<rhil>
yeah, java's just diluted evil ;)
<kmag>
forget GOTO, it has RETURN_FROMs
rhil is now known as rhil_zzz
<travisbemann>
i'm not sure why anyone really coded in Fortran
<travisbemann>
as Lisp, which is almost as old, is MUCH nicer - heh
<travisbemann>
(Lisp being the second oldest language still in current use)
<kmag>
Fortran is still faster than C for most scientific applications
<travisbemann>
that doesn't make it pleasant to program in at all! heh
<kmag>
I agree
<kmag>
is there any way to get fixed size integers in LISP
<kmag>
?
<travisbemann>
not really
<kmag>
fixnum is one machine register
<travisbemann>
yeah
<kmag>
happen to have a Frazaa plugin for mldonkey?
<travisbemann>
nope
kmag has quit [Read error: 60 (Operation timed out)]
travisbemann has quit ["BitchX: sanitized for your protection"]
kmag has joined #ocaml
TachYon has quit [Remote closed the connection]
owll has joined #ocaml
kmag has quit [Read error: 110 (Connection timed out)]
CybeRDukE has joined #ocaml
kmag has joined #ocaml
lus|wazze has joined #ocaml
owll has quit [leguin.freenode.net irc.freenode.net]
kmag has quit [leguin.freenode.net irc.freenode.net]
Vincenz has quit [leguin.freenode.net irc.freenode.net]
mrvn has quit [leguin.freenode.net irc.freenode.net]
foxster has quit [leguin.freenode.net irc.freenode.net]
rox has quit [leguin.freenode.net irc.freenode.net]
Smerdyakov has quit [leguin.freenode.net irc.freenode.net]
emu has quit [leguin.freenode.net irc.freenode.net]
CybeRDukE has quit [leguin.freenode.net irc.freenode.net]
asqui has quit [leguin.freenode.net irc.freenode.net]
whee has quit [leguin.freenode.net irc.freenode.net]
miph has quit [leguin.freenode.net irc.freenode.net]
wax has quit [leguin.freenode.net irc.freenode.net]
lus|wazze has quit [leguin.freenode.net irc.freenode.net]
mattam_ has quit [leguin.freenode.net irc.freenode.net]
lam has quit [leguin.freenode.net irc.freenode.net]
ctkrohn|away has quit [leguin.freenode.net irc.freenode.net]
rhil_zzz has quit [leguin.freenode.net irc.freenode.net]
vegai has quit [leguin.freenode.net irc.freenode.net]
skylan has quit [leguin.freenode.net irc.freenode.net]
teratorn has quit [leguin.freenode.net irc.freenode.net]
Riastradh has quit [leguin.freenode.net irc.freenode.net]
gl has quit [leguin.freenode.net irc.freenode.net]
smkl has quit [leguin.freenode.net irc.freenode.net]
lus|wazze has joined #ocaml
kmag has joined #ocaml
CybeRDukE has joined #ocaml
owll has joined #ocaml
Smerdyakov has joined #ocaml
Vincenz has joined #ocaml
rhil_zzz has joined #ocaml
asqui has joined #ocaml
mrvn has joined #ocaml
mattam_ has joined #ocaml
whee has joined #ocaml
smkl has joined #ocaml
gl has joined #ocaml
Riastradh has joined #ocaml
teratorn has joined #ocaml
wax has joined #ocaml
emu has joined #ocaml
rox has joined #ocaml
foxster has joined #ocaml
ctkrohn|away has joined #ocaml
skylan has joined #ocaml
vegai has joined #ocaml
miph has joined #ocaml
lam has joined #ocaml
kmag has quit [Read error: 110 (Connection timed out)]
<Vincenz>
:/
ctkrohn|away is now known as ctkrohn
ctkrohn has quit ["Client exiting"]
chuck has joined #ocaml
<chuck>
question if anyone's awake: are there continuations/coroutines/microthreads in ocaml?
<mrvn>
no, use closures
<chuck>
so i'd have to return a new closure to reenter the same state?
<chuck>
sounds expensive
<chuck>
it's not the continuations i'm interested in so much as light threads (need possibly several hundred of 'em)
kmag has joined #ocaml
<mrvn>
no, you have to pass the next closure and store that.
<chuck>
and the tailcall optimization will turn that into a jump?
<mrvn>
google for continuation passing style
<mrvn>
chuck: yes.
<mrvn>
chuck: But you wouldn#t want to use it for every tiny little function. too much to type.
<chuck>
wouldn't need to, would only need to keep the next process in scope somewhere. heck i can just make a global scheduler object
<chuck>
or could mebbe rig something with camlp4 to make it less to type
<mrvn>
unfortunatly not.
* chuck
?
<mrvn>
to transform a source into CPS form you would have to write most of a compiler.
<kmag>
talking about microthreading?
<chuck>
kmag: yah
<mrvn>
ftp://mrvn.homeip.net/multitask.ml
<chuck>
don't need cps transform throughout, just some prims to spawn, yield and resume
<mrvn>
try that
<chuck>
thanks :)
<chuck>
was going to use haskell but i just can't drink the pure functional koolaid
<mrvn>
As human its easy to spot the few functions you need to CPS transform. camlp4 would have a hard time there.
<kmag>
so you're talking cooperative multithreading?
<chuck>
yep
<chuck>
it's an app originally designed for stackless python
<mrvn>
If you keep a global binding for the next continuation you can even do preemtive multitasking. But you would want to have the CPS pretty finegraines so as not to loose too much work on task switches.
<mrvn>
s/work/time/
<chuck>
don't even want preemptive
<chuck>
since that'd make me lock things
kmag has left #ocaml []
chuck has left #ocaml []
systems has joined #ocaml
systems has quit ["Client Exiting"]
TachYon has joined #ocaml
mattam has joined #ocaml
mattam_ has quit [Read error: 110 (Connection timed out)]
TachYon has quit ["Client Exiting"]
owll has quit ["Client Exiting"]
mrvn_ has joined #ocaml
CybeRDukE is now known as CybeR[away]
mrvn has quit [Read error: 104 (Connection reset by peer)]
Vincenz has quit []
avida has joined #ocaml
avida has left #ocaml []
hedonick has joined #ocaml
CybeR[away] has quit ["Application has reported a 'Not My Fault' in module KRNL.EXE in line 0200:103F"]
New2Python has joined #ocaml
skylan_ has joined #ocaml
skylan has quit [Connection timed out]
skylan_ is now known as skylan
skylan has quit [Read error: 113 (No route to host)]