On Thu, May 30, 2013 at 8:21 PM, Ian Lance Taylor <
ia...@golang.org> wrote:
> On Thu, May 30, 2013 at 7:32 AM, Rob Pike <
r...@golang.org> wrote:
>> There is a blizzard of changes to the runtime: allocator, scheduler,
>> garbage collector, maps, and more. I can't keep up and although a few
>> pieces have been described outside of CLs mostly all that's happening
>> is non-stop change without a visible plan. I would like to see some
>> order brought to this chaos.
>>
>> What is the plan for each of the major components? What are the goals?
>> What are the milestones along the way? Who is responsible for each
>> part? When will it be done?
>
> There are a few different somewhat overlapping proposals at the moment.
>
> Dmitriy has a plan for preemptive scheduling:
>
https://docs.google.com/a/google.com/document/d/1ETuA2IOmnaQ4j81AtTGT40Y4_Jr6_IDASEKg0t0dBR8/edit
Most of my current changes are related to the preemptive scheduler. As
far as I udnerstand it was LGTMed.
The goals are to provide more habitual environment for users (threads
in most other systems are preemptive) and to eliminate some
degenerative cases with GC when it takes minutes.
The timeframe is: improve preemption for GC -- Go1.2; general
preemption of long running goroutines -- most likely Go1.2 (simple to
implement, but decision is not yet made); finer-grained preemption
(e.g. for {}) -- post Go1.2 (jury is still out).
It's more like declaration of intention, I don't have the exact
design, not saying about LGTM.
However, for Go1.2 I am doing some non-questionable spot optimizations
of malloc.
Goals: (1) does not require users to make destructive optimizations
for the sake of malloc/GC performance, (2) reduce GC pause time.
Timeframe: the bulk of the changes is post Go1.2.