Hi, Sorry for the vagueness. I'm starting to think about an experimental programming language based, among other things, on microthreads, or green threads, as Erlang has. I'm still under a very vague stage, just thinking on it, so I was wondering on the way this could be achieved. What I know from microthreads are things like: * They don't have their own stack * Switching between threads is controlled by the application, not the OS * They are isolated and the only way to exchange information is message passing Erlang requires an interpreter for this, but, how could I achieve a similar feature for my language with the LLVM JIT? I hope this is a bit clearer, Thank you! .alvaro.castro. 2008/7/24 Bill Wendling <isanbard at gmail.com>:> Hi Álvaro, > > Your question is too vague to answer with any accuracy. Could you be > more specific? > > -bw > > On Jul 24, 2008, at 1:08 PM, "Álvaro Castro Castilla" <alvaro.castro.castilla at gmail.co > m> wrote: > >> Hello, >> >> >> How would you implement an Erlang feature such as the ultra-light >> processes? >> Is llvm prepared for similar situations? >> >> I would appreciate some insight on this. >> >> >> Thank you very much, >> >> .alvaro.castro.castilla. >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-- ||||||||||||||||||||||||||||||||||||||||||||||||||||||||> http://www.alvarocastro.es
On Jul 24, 2008, at 12:30 PM, Álvaro Castro Castilla wrote:> Hi, > > Sorry for the vagueness. > > I'm starting to think about an experimental programming language > based, among other things, on microthreads, or green threads, as > Erlang has. I'm still under a very vague stage, just thinking on it, > so I was wondering on the way this could be achieved. > > What I know from microthreads are things like: > > * They don't have their own stack > * Switching between threads is controlled by the application, not > the OSThese two can be done in C pretty easily. Try googling for "protothreads" for a library that implements this. To see how it looks in LLVM, compile it down to bitcode and take a look.> * They are isolated and the only way to exchange information is > message passing >This one is hard to guarantee in a compiled context, unless you implement a lot of stuff to track pointer values. Remember, all of these threads will be sharing an address space. If you want true protection, you'll want something more like fork(), but that defeats your other two goals. --Owen
2008/7/24 Owen Anderson <resistor at mac.com>:>> * They are isolated and the only way to exchange information is >> message passing >> > This one is hard to guarantee in a compiled context, unless you > implement a lot of stuff to track pointer values. Remember, all of > these threads will be sharing an address space. If you want true > protection, you'll want something more like fork(), but that defeats > your other two goals.Couldn't this also be semi-guaranteed by the design of the language? For instance, if you completely disallow pointer arithmetics and always pass by value when passing messages. Could probably be quite a bit of copying, but if the guarantee is important, I'm guessing this is cheaper than tracking all pointers. I could easily be completely wrong. - Simon