Go 13 has changed the implementation of goroutine stacks away from the old

Go 13 has changed the implementation of goroutine

This preview shows page 13 - 19 out of 48 pages.

Go 1.3 has changed the implementation of goroutine stacks away from the old, "segmented" model to a contiguous model. For a while now, the garbage collector has been precise when examining values in the heap; the Go 1.3 release adds equivalent precision to values on the stack. Iterations over small maps no longer happen in a consistent order. This is due to developers abusing implementation behaviour. 1. 4 - 1. 4. 3 201 4/1 2/1 0 Range - e x pr es si o n w it h o ut as si g n m e nt In 1.4, much of the runtime code has been translated to Go so that the garbage collector can scan the stacks of programs in the runtime and get accurate information about what variables are active. The language accepted by the assemblers cmd/5a , cmd/6a and cmd/8a has had several changes, mostly to make it easier to deliver type information to the runtime. Addition of internal packages. New subcommand go generate.
Image of page 13
Auto m at ic d o u bl e- d er ef er e n ce o n m et h o d ca ll s is n o w di sa ll o w e d in g c a n d g cc g o. T hi s
Image of page 14
is a b ac k w ar ds in c o m p at ib le c h a n g e b ut in li n e w it hi n th e la n g u a g e sp ec ifi ca ti o n. 1. 5 - 1. 201 5/0 8/1 Due The compiler and runtime are now implemented in Go and assembler, without C. Now that the Go compiler and runtime are implemented in Go, a Go compiler
Image of page 15
5. 4 9 to a n o v er si g ht , th e ru le th at al lo w e d th e el e m e nt ty p e to b e el id e d fr o m sl ic e lit er al s w as n must be available to compile the distribution from source. The compiler is now self-hosted. The garbage collector has been re-engineered for 1.5. The "stop the world" phase of the collector will almost always be under 10 milliseconds and usually much less. In Go 1.5, the order in which goroutines are scheduled has been changed.
Image of page 16
ot a p pl ie d to m a p k e ys . T hi s h as b ee n c or re ct e d in G o 1. 5. 1. 6 - 1. 6. 4 201 6/0 2/1 7 There are no langua ge chang es in this releas e. A major change was made to cgo defining the rules for sharing Go pointers with C code, to ensure that such C code can coexist with Go's garbage collector. The Go parser is now hand-written instead of generated. The go vet command now diagnoses passing function or method values as arguments to Printf , such as when passing f where f() was intended. 1. 7 - 1. 7. 6 201 6/0 8/1 5 Clarifi ca ti o n o For 64-bit x86 systems, the following instructions have been added: PCMPESTRI , RORXL , RORXQ , VINSERTI128 , VPADDD , VPADDQ , V PALIGNR , VPBLENDD , VPERM2F128 , VPERM2I128 , VPOR , VPSHUFB , VPS HUFD , VPSLLD , VPSLLDQ , VPSLLQ , VPSRLD , VPSRLDQ , and VPSRLQ . This release includes a new code generation back end for 64-bit x86 systems,
Image of page 17
n te r m in at in g st at e m e nt s in th e la n g u a g e sp ec ifi ca ti o n.
Image of page 18
Image of page 19

You've reached the end of your free preview.

Want to read all 48 pages?

  • Fall '12
  • DuiWei
  • The Land, Google Go

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture

  • Left Quote Icon

    Student Picture