Gary Willoughby: "Why Go's design is a disservice to intelligent programmers"

via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Fri Mar 27 03:14:52 PDT 2015


On Friday, 27 March 2015 at 09:44:27 UTC, Walter Bright wrote:
> On 3/27/2015 1:41 AM, "Ola Fosheim =?UTF-8?B?R3LDuHN0YWQi?= 
> <ola.fosheim.grostad+dlang at gmail.com>" wrote:
>> On Friday, 27 March 2015 at 08:25:26 UTC, Walter Bright wrote:
>>> The MMU makes it pointless. The virtual address space allows 
>>> for 4 billion
>>> goroutines with 4 billion bytes each of stack.
>>
>> If you fragment the memory space you cannot use recursive page 
>> tables? If you
>> want to address more than 512GB you need to move to 1MiB pages.
>>
>> http://wiki.osdev.org/Page_Tables
>
> So what? The point is there is PLENTY of virtual address space. 
> You can "allocate" absurd amounts of address space for each 
> goroutine, and still have plenty without physically moving 
> anything.

If you don't care about performance, bloated page tables and 
laying waste to memory:

1. Page tables are hierarchical, to save space nodes can point 
back to themselves. IFF the node is similar. Throwing shit all 
over the memory space makes this impossible. So you get BLOATed 
page tables.

2. All dirty pages maps to physical memory. So one recursion 
chain on a fiber will create a big physical mem allocation. To 
get rid of it you would have make a slow syscall.

3. You have no way to go below the page size for a stack.

4. Operating system calls like mmap are slow.

5. Trapped pages are slow and so are modifying page tables.

6. You cannot expect to get more than 47-53 bits of address space 
from the OS. It's not like 64 bits CPUs provide 64 bits address 
space. There is a big hole in the middle.

Have you actually thought about these issues or done performance 
tests?



More information about the Digitalmars-d-announce mailing list