4 DeprecatedNeverUse = -1
5 DeprecatedUseNoLonger = -2
8 type Deprecation struct {
10 AlternativeAvailableSince int
13 var StdlibDeprecations = map[string]Deprecation{
14 // FIXME(dh): AllowBinary isn't being detected as deprecated
15 // because the comment has a newline right after "Deprecated:"
16 "go/build.AllowBinary": {7, 7},
17 "(archive/zip.FileHeader).CompressedSize": {1, 1},
18 "(archive/zip.FileHeader).UncompressedSize": {1, 1},
19 "(archive/zip.FileHeader).ModifiedTime": {10, 10},
20 "(archive/zip.FileHeader).ModifiedDate": {10, 10},
21 "(*archive/zip.FileHeader).ModTime": {10, 10},
22 "(*archive/zip.FileHeader).SetModTime": {10, 10},
23 "(go/doc.Package).Bugs": {1, 1},
24 "os.SEEK_SET": {7, 7},
25 "os.SEEK_CUR": {7, 7},
26 "os.SEEK_END": {7, 7},
27 "(net.Dialer).Cancel": {7, 7},
28 "runtime.CPUProfile": {9, 0},
29 "compress/flate.ReadError": {6, DeprecatedUseNoLonger},
30 "compress/flate.WriteError": {6, DeprecatedUseNoLonger},
31 "path/filepath.HasPrefix": {0, DeprecatedNeverUse},
32 "(net/http.Transport).Dial": {7, 7},
33 "(*net/http.Transport).CancelRequest": {6, 5},
34 "net/http.ErrWriteAfterFlush": {7, DeprecatedUseNoLonger},
35 "net/http.ErrHeaderTooLong": {8, DeprecatedUseNoLonger},
36 "net/http.ErrShortBody": {8, DeprecatedUseNoLonger},
37 "net/http.ErrMissingContentLength": {8, DeprecatedUseNoLonger},
38 "net/http/httputil.ErrPersistEOF": {0, DeprecatedUseNoLonger},
39 "net/http/httputil.ErrClosed": {0, DeprecatedUseNoLonger},
40 "net/http/httputil.ErrPipeline": {0, DeprecatedUseNoLonger},
41 "net/http/httputil.ServerConn": {0, 0},
42 "net/http/httputil.NewServerConn": {0, 0},
43 "net/http/httputil.ClientConn": {0, 0},
44 "net/http/httputil.NewClientConn": {0, 0},
45 "net/http/httputil.NewProxyClientConn": {0, 0},
46 "(net/http.Request).Cancel": {7, 7},
47 "(text/template/parse.PipeNode).Line": {1, DeprecatedUseNoLonger},
48 "(text/template/parse.ActionNode).Line": {1, DeprecatedUseNoLonger},
49 "(text/template/parse.BranchNode).Line": {1, DeprecatedUseNoLonger},
50 "(text/template/parse.TemplateNode).Line": {1, DeprecatedUseNoLonger},
51 "database/sql/driver.ColumnConverter": {9, 9},
52 "database/sql/driver.Execer": {8, 8},
53 "database/sql/driver.Queryer": {8, 8},
54 "(database/sql/driver.Conn).Begin": {8, 8},
55 "(database/sql/driver.Stmt).Exec": {8, 8},
56 "(database/sql/driver.Stmt).Query": {8, 8},
57 "syscall.StringByteSlice": {1, 1},
58 "syscall.StringBytePtr": {1, 1},
59 "syscall.StringSlicePtr": {1, 1},
60 "syscall.StringToUTF16": {1, 1},
61 "syscall.StringToUTF16Ptr": {1, 1},
62 "(*regexp.Regexp).Copy": {12, DeprecatedUseNoLonger},
63 "(archive/tar.Header).Xattrs": {10, 10},
64 "archive/tar.TypeRegA": {11, 1},
65 "go/types.NewInterface": {11, 11},
66 "(*go/types.Interface).Embedded": {11, 11},
67 "go/importer.For": {12, 12},
68 "encoding/json.InvalidUTF8Error": {2, DeprecatedUseNoLonger},
69 "encoding/json.UnmarshalFieldError": {2, DeprecatedUseNoLonger},
70 "encoding/csv.ErrTrailingComma": {2, DeprecatedUseNoLonger},
71 "(encoding/csv.Reader).TrailingComma": {2, DeprecatedUseNoLonger},
72 "(net.Dialer).DualStack": {12, 12},
73 "net/http.ErrUnexpectedTrailer": {12, DeprecatedUseNoLonger},
74 "net/http.CloseNotifier": {11, 7},
75 // This is hairy. The notice says "Not all errors in the http package related to protocol errors are of type ProtocolError", but doesn't that imply that
76 "net/http.ProtocolError": {8, DeprecatedUseNoLonger},
77 "(crypto/x509.CertificateRequest).Attributes": {5, 3},
79 // These functions have no direct alternative, but they are insecure and should no longer be used.
80 "crypto/x509.IsEncryptedPEMBlock": {16, DeprecatedNeverUse},
81 "crypto/x509.DecryptPEMBlock": {16, DeprecatedNeverUse},
82 "crypto/x509.EncryptPEMBlock": {16, DeprecatedNeverUse},
83 "crypto/dsa": {16, DeprecatedNeverUse},
85 // This function has no alternative, but also no purpose.
86 "(*crypto/rc4.Cipher).Reset": {12, DeprecatedNeverUse},
87 "(net/http/httptest.ResponseRecorder).HeaderMap": {11, 7},
90 "(*debug/gosym.LineTable).LineToPC": {2, 2},
91 "(*debug/gosym.LineTable).PCToLine": {2, 2},
92 "crypto/tls.VersionSSL30": {13, DeprecatedNeverUse},
93 "(crypto/tls.Config).NameToCertificate": {14, DeprecatedUseNoLonger},
94 "(*crypto/tls.Config).BuildNameToCertificate": {14, DeprecatedUseNoLonger},
95 "(crypto/tls.Config).SessionTicketKey": {16, 5},
96 // No alternative, no use
97 "(crypto/tls.ConnectionState).NegotiatedProtocolIsMutual": {16, DeprecatedNeverUse},
98 // No alternative, but insecure
99 "(crypto/tls.ConnectionState).TLSUnique": {16, DeprecatedNeverUse},
100 "image/jpeg.Reader": {4, DeprecatedNeverUse},
102 // All of these have been deprecated in favour of external libraries
103 "syscall.AttachLsf": {7, 0},
104 "syscall.DetachLsf": {7, 0},
105 "syscall.LsfSocket": {7, 0},
106 "syscall.SetLsfPromisc": {7, 0},
107 "syscall.LsfJump": {7, 0},
108 "syscall.LsfStmt": {7, 0},
109 "syscall.BpfStmt": {7, 0},
110 "syscall.BpfJump": {7, 0},
111 "syscall.BpfBuflen": {7, 0},
112 "syscall.SetBpfBuflen": {7, 0},
113 "syscall.BpfDatalink": {7, 0},
114 "syscall.SetBpfDatalink": {7, 0},
115 "syscall.SetBpfPromisc": {7, 0},
116 "syscall.FlushBpf": {7, 0},
117 "syscall.BpfInterface": {7, 0},
118 "syscall.SetBpfInterface": {7, 0},
119 "syscall.BpfTimeout": {7, 0},
120 "syscall.SetBpfTimeout": {7, 0},
121 "syscall.BpfStats": {7, 0},
122 "syscall.SetBpfImmediate": {7, 0},
123 "syscall.SetBpf": {7, 0},
124 "syscall.CheckBpfVersion": {7, 0},
125 "syscall.BpfHeadercmpl": {7, 0},
126 "syscall.SetBpfHeadercmpl": {7, 0},
127 "syscall.RouteRIB": {8, 0},
128 "syscall.RoutingMessage": {8, 0},
129 "syscall.RouteMessage": {8, 0},
130 "syscall.InterfaceMessage": {8, 0},
131 "syscall.InterfaceAddrMessage": {8, 0},
132 "syscall.ParseRoutingMessage": {8, 0},
133 "syscall.ParseRoutingSockaddr": {8, 0},
134 "syscall.InterfaceAnnounceMessage": {7, 0},
135 "syscall.InterfaceMulticastAddrMessage": {7, 0},
136 "syscall.FormatMessage": {5, 0},
138 // Not marked as deprecated with a recognizable header, but deprecated nonetheless.
139 "io/ioutil": {16, 16},