I'm still struggling to lock down Felix semantics. As stuff like try/catch shows, certain code has to be stackless, and other code doesn't.
It's hard to know what's what due to the optimiser. Current "inline" makes a difference: non-flat code can be flattened by inlining. You can only do supervisor calls from flat code (zero stack). If you make C blocks like try { .. } .catch { .. } (and sometimes while () { .. } or for () { .. } etc) you're introducing a stack which prevents returning to the supervisor, as well as jumping into the block (you can jump into a while or for provided there are no variable initialisations missed) I need to carefully sort out what's what, and provide annotations for enforcement. Eg stack proc f (..) ... ensures the proc f is on the stack or inlined not the heap, heap proc f () .. ensures inlining or on the heap or something :) -- john skaller skal...@users.sourceforge.net http://felix-lang.org ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Felix-language mailing list Felix-language@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/felix-language