summaryrefslogtreecommitdiff
path: root/doc/devel/roadmap.html
blob: 9a3c4eaba5bb78d1d5545fbcb568330550eec9e5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<!-- Roadmap -->

<h2 id="Roadmap">Go Roadmap</h2>

<p>
This page lists features and ideas being developed or discussed by the
Go team.  This list will be updated as work continues.

<p>
The roadmap should be discussed on
the <a href="http://groups.google.com/group/golang-nuts">golang-nuts
mailing list</a>.

<h3 id="Language_roadmap">
Language roadmap</h3>

<p>
This is a list of language changes that are being considered.
Appearance on this list is no guarantee that the change will be
accepted.

<ul>
<li>
Possibly rewrite restriction on goto across variable declarations.
<li>
Variant types.  A way to define a type as being the union of some set
of types.
<li>
Generics.  An active topic of discussion.
<li>
Methods for operators, to allow a type to use arithmetic notation for
expressions.
</ul>

<h3 id="Implementation_roadmap">
Implementation roadmap</h3>

<ul>
<li>
Improved garbage collector, most likely a reference counting collector
with a cycle detector running in a separate core.
<li>
Debugger.
<li>
App Engine support.
<li>
Improved CGO including some mechanism for calling back from C to Go.
<li>
Improved implementation documentation.
</ul>

<h4 id="Gc_roadmap">
Gc compiler roadmap</h4>

<ul>
<li>
Implement goto restrictions.
<li>
Improved optimization.
<li>
Use escape analysis to keep more data on stack.
</ul>

<h4 id="Gccgo_roadmap">
Gccgo compiler roadmap</h4>

<ul>
<li>
Implement goto restrictions.
<li>
Use goroutines rather than threads.
<li>
Separate gcc interface from frontend proper.
<li>
Use escape analysis to keep more data on stack.
</ul>

<h3 id="done">Done</h3>

<ul>
<li>
gc: Generate DWARF debug info.
<li>
gc: Provide gdb support for runtime facilities.
<li>
Safe compilation mode: generate code that is guaranteed not to obtain an invalid memory address other than via <code>import "unsafe"</code>.
<li>
Gccgo: garbage collection.
<li>
SWIG support.
<li>		
Simpler semicolon rules.
<li>		
A more general definition of <code>...</code> in parameter lists.
<li>		
Explicit conversions from <code>string</code>		
to <code>[]byte</code> and <code>[]int</code>.		
<li>
A function that will be run by the garbage collector when an item is freed
(runtime.SetFinalizer).
<li>
Public continuous build and benchmark infrastructure (gobuilder).
<li>
Package manager (goinstall).
<li>
A means of recovering from a panic (recover).
<li>
5g: Better floating point support.
</ul>