I changed this based on cachegrind to make the most accessed parts of task fit into a single cache line and reduce the total size of a task. Most tasks don't use name and state, so it is better to not allocate the memory by default. Also, I'd like to get rid of state and probably name soon. They're only useful for debugging and the better solution is to be able to get stack trace of all the tasks, which is possible now, though the implementation is really slow.