On 02/01/2014, at 12:44 PM, srean wrote:

> 
> Cause it's work for me. And you're making me responsible.
> Felix is a community project.
> 
> Pull request doesnt preclude it from being a community project, in fact that 
> seems to be the de facto way to collaborate on Github. I like the 
> psychological safety net that it offers and its easy to review, solicit 
> commentary and optionally merged. Whats not to like ?

Go for it :-)

Of course, you will also have to synchronise what you're doing with
what I'm doing. 

What I don't like is that a pull request can have a LOT of changes
in it. So unlike small commits TL;DR.


> I dont really know how they implement it, for one thing I do know is that 
> they do not use a spaghetti stack. Walter Brights view has been that it is 
> unnecessary on a 64 bit m/c. Rust seems to have movied in that direction too.

Well until recently all phones used 32 bit ARM processors.
Certainly 64 bit address space helps run more threads.

But Felix can run millions of fthreads and you NEED that for
a telco environment, and you NEED that for games.

1 million fibres on a machine stack swapping system is at
least 4K x 1M = 4G of address space. Dont forget most x86_64
chips do not output 64 bits of bus. Registers are 64 bit, the actual
address space available is less.

If all those threads are lightly used by context switches are
frequent you effectively have no cache. Whereas heap allocated
small object provide better localisation.

Also note, your VM will be clobbered with one VM entry per page
you're going to need 1M VM entries. That's way more than Home
Windows offers AFAIK.  Not sure about Linux or OSX, but most OS have
limits on VM page map size. x86_64 can actually virtualise second level
page maps, so an actual memory access could require two page loads
(one for the page map and one for the actual memory).

Just to get an idea .. my Macbook Pro only HAS 2G of ram.
Also don't forget C does NOT allow malloc() to return demand
paged memory. Malloc has to return actual memory.

So 1 million threads are going to use 4G minimum memory.

Felix can run with much less memory and address space,
and there's no limit how big a stack can get.

Also note .. the Intel X64 uses two machine stacks.. not sure how that
would work for stack swapping systems.

Of course .. Felix pays a price in complexity. Coroutines can't be functions
(or in functions unless you run a scheduler). And C++ exceptions don't
work on the spaghetti stack.

--
john skaller
skal...@users.sourceforge.net
http://felix-lang.org




------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to