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