blob: 021ed6478a03a6330416dcccae8317a13f63ba61 [file] [log] [blame]
Ian Lance Taylor2e5a7202009-12-16 15:30:39 -08001<!-- Roadmap -->
2
3<h2 id="Roadmap">Go Roadmap</h2>
4
Andrew Gerrandd7424b12010-10-26 16:18:12 +11005<p>
Ian Lance Taylor2e5a7202009-12-16 15:30:39 -08006This page lists features and ideas being developed or discussed by the
7Go team. This list will be updated as work continues.
8
9<p>
10The roadmap should be discussed on
11the <a href="http://groups.google.com/group/golang-nuts">golang-nuts
12mailing list</a>.
13
14<h3 id="Language_roadmap">
15Language roadmap</h3>
16
17<p>
18This is a list of language changes that are being considered.
19Appearance on this list is no guarantee that the change will be
20accepted.
21
22<ul>
23<li>
Ian Lance Taylor2e5a7202009-12-16 15:30:39 -080024Possibly rewrite restriction on goto across variable declarations.
25<li>
26Variant types. A way to define a type as being the union of some set
27of types.
28<li>
29Generics. An active topic of discussion.
Andrew Gerrandd7424b12010-10-26 16:18:12 +110030<li>
31Methods for operators, to allow a type to use arithmetic notation for
32expressions.
Ian Lance Taylor2e5a7202009-12-16 15:30:39 -080033</ul>
34
35<h3 id="Implementation_roadmap">
36Implementation roadmap</h3>
37
38<ul>
39<li>
40Improved garbage collector, most likely a reference counting collector
41with a cycle detector running in a separate core.
42<li>
43Debugger.
44<li>
Ian Lance Taylor2e5a7202009-12-16 15:30:39 -080045App Engine support.
46<li>
47Improved CGO including some mechanism for calling back from C to Go.
48<li>
Ian Lance Taylor2e5a7202009-12-16 15:30:39 -080049Improved implementation documentation.
Ian Lance Taylor2e5a7202009-12-16 15:30:39 -080050</ul>
51
52<h4 id="Gc_roadmap">
53Gc compiler roadmap</h4>
54
55<ul>
56<li>
Ian Lance Taylor2e5a7202009-12-16 15:30:39 -080057Implement goto restrictions.
58<li>
Ian Lance Taylor2e5a7202009-12-16 15:30:39 -080059Improved optimization.
60<li>
615g: Better floating point support.
Rob Pike4bafef82010-12-01 17:10:26 -080062<li>
63Use escape analysis to keep more data on stack.
Ian Lance Taylor2e5a7202009-12-16 15:30:39 -080064</ul>
65
Andrew Gerrandd7424b12010-10-26 16:18:12 +110066<h4 id="Gccgo_roadmap">
Ian Lance Taylor2e5a7202009-12-16 15:30:39 -080067Gccgo compiler roadmap</h4>
68
69<ul>
70<li>
Ian Lance Taylor2e5a7202009-12-16 15:30:39 -080071Implement goto restrictions.
72<li>
Ian Lance Taylor2e5a7202009-12-16 15:30:39 -080073Use goroutines rather than threads.
74<li>
75Separate gcc interface from frontend proper.
76<li>
77Use escape analysis to keep more data on stack.
78</ul>
Andrew Gerrandd7424b12010-10-26 16:18:12 +110079
80<h3 id="done">Done</h3>
81
82<ul>
83<li>
Rob Pike4bafef82010-12-01 17:10:26 -080084gc: Generate DWARF debug info.
85<li>
86gc: Provide gdb support for runtime facilities.
87<li>
Andrew Gerrandd7424b12010-10-26 16:18:12 +110088Safe compilation mode: generate code that is guaranteed not to obtain an invalid memory address other than via <code>import "unsafe"</code>.
89<li>
90Gccgo: garbage collection.
91<li>
Andrew Gerrandd7424b12010-10-26 16:18:12 +110092SWIG support.
93<li>
94Simpler semicolon rules.
95<li>
Andrew Gerrande9860622010-10-26 16:29:21 +110096A more general definition of <code>...</code> in parameter lists.
Andrew Gerrandd7424b12010-10-26 16:18:12 +110097<li>
98Explicit conversions from <code>string</code>
99to <code>[]byte</code> and <code>[]int</code>.
100<li>
101A function that will be run by the garbage collector when an item is freed
102(runtime.SetFinalizer).
103<li>
104Public continuous build and benchmark infrastructure (gobuilder).
105<li>
106Package manager (goinstall).
107<li>
108A means of recovering from a panic (recover).
109</ul>
110