diff --git a/AUTHORS b/AUTHORS index 46fd9fd295..1ca176b953 100644 --- a/AUTHORS +++ b/AUTHORS @@ -8,12 +8,15 @@ # Please keep the list sorted. +A Medium Corporation +Aamir Khan Aaron France Abhinav Gupta Adrian Nos Adrian O'Grady Adrien Bustany Ahmed Waheed Moanes +Ainar Garipov Akshat Kumar Alan Shreve Albert Strasheim @@ -23,21 +26,29 @@ Aleksandar Dezelin Alex A Skinner Alex Brainman Alex Jin +Alex Plugaru +Alex Schroeder +Alex Sergeyev Alexander Larsson +Alexander Morozov Alexander Orlov Alexander Reece Alexander Surma Alexander Zhavnerchik +Alexander Zolotov +Alexandre Cesaro Alexandre Normand Alexei Sholik Alexey Borzenkov Alexey Palazhchenko Amir Mohammad Saied Amrut Joshi +Andrei Korzhevskii Andrei Vieru Andrew Balholm Andrew Bonventre Andrew Bursavich +Andrew Ekstedt Andrew Harding Andrew Lutomirski Andrew Pritchard @@ -45,7 +56,9 @@ Andrew Radev Andrew Skiba Andrew Szeto Andrew Wilkins +Andrew Williams Andrey Mirtchovski +Andrey Petrov Andriy Lytvynov Andy Davis Anfernee Yongkun Gui @@ -56,12 +69,16 @@ Anthony Martin Anthony Starks Apisak Darakananda Aram Hăvărneanu +Areski Belaid Arnaud Ysmal Arne Hormann Aron Nopanen Arvindh Rajesh Tamilmani Ato Araki Aulus Egnatius Varialus +awaw fumin +Aymerick Jéhanne +Ben Burkert Ben Olive Benjamin Black Benny Siegert @@ -70,17 +87,22 @@ Berengar Lehr Billie Harold Cleek Bjorn Tillenius Bjorn Tipling +Blake Gentry Blake Mizerany Bobby Powers Brendan Daniel Tracey +Brett Cannon Brian Dellisanti Brian G. Merrell -Brian Gitonga Marete +Brian Gitonga Marete Brian Ketelsen +Brian Smith +Bryan Ford Caine Tighe Caleb Spare Carl Chatfield Carlos Castillo +Carlos Cirello Case Nelson Casey Marshall Cezar Sá Espinola @@ -91,6 +113,7 @@ Chris Dollin Chris Farmiloe Chris Howey Chris Jones +Chris Kastorff Chris Lennert Chris McGee Christian Himpel @@ -98,10 +121,13 @@ Christine Hansmann Christoffer Buchholz Christoph Hack Christopher Cahoon +Christopher Guiney Christopher Nielsen Christopher Redden Christopher Wedgwood Clement Skau +CloudFlare Inc. +Colin Kennedy Conrad Meyer Corey Thomasson Cristian Staretu @@ -125,21 +151,26 @@ David Jakob Fritz David Leon Gil David Thomas David Titarenco +Davies Liu Dean Prichard Denis Brandolini +Derek Buitenhuis Derek Parker Devon H. O'Dell Dhiru Kholia +Didier Spezia Dimitri Tcaciuc Dmitri Shuralyov Dmitriy Shelenin Dmitry Chestnykh +Dmitry Savintsev Dominik Honnef Donovan Hide Dropbox, Inc. Duncan Holm Dustin Sallings Dustin Shields-Cloues +Dvir Volk Eden Li Egon Elbre Ehren Kret @@ -150,9 +181,11 @@ Eoghan Sherry Eric Clark Eric Milliken Eric Roshan-Eisner +Erik Aigner Erik St. Martin Erik Westrup Esko Luontola +Evan Phoenix Evan Shaw Ewan Chou Fabrizio Milo @@ -164,6 +197,7 @@ Felix Geisendörfer Firmansyah Adiputra Florian Uekermann Florian Weimer +Florin Patan Francisco Souza Frederick Kelly Mayle III Fredrik Enestad @@ -171,29 +205,41 @@ Frithjof Schulze Gabriel Aszalos Gary Burd Gautham Thambidorai +Geert-Johan Riemer Georg Reinke +George Shammas Gerasimos Dimitriadis Gideon Jan-Wessel Redelinghuys Giles Lean +Giulio Iotti Google Inc. Gordon Klaus Graham King Graham Miller Greg Ward Guillaume J. Charmes +Guobiao Mei Gustav Paul Gustavo Niemeyer Gwenael Treguier +Hajime Hoshi +Hariharan Srinath Harley Laue +Håvard Haugen Hector Chu Hector Martin Cantero Henning Schmiedehausen Henrik Edwards Herbert Georg Fischer Hong Ruiqi +IBM Icarus Sparry +Igneous Systems, Inc. +Igor Dolzhikov +INADA Naoki Ingo Oeser Isaac Wagner +Ivan Ukhov Jakob Borg Jakub Ryszard Czarnowicz James David Chalfant @@ -222,14 +268,18 @@ Jeremy Jackins Jim McGrath Jimmy Zelinskie Jingcheng Zhang +Jiong Du Joakim Sernbrant +Joe Harrison Joe Poirier Joe Shaw +Joe Tsai Joel Stemmer John Asmuth John C Barstow John Graham-Cumming John Howard Palevich +John Potocny John Shahid John Tuley Jonathan Gold @@ -247,8 +297,11 @@ JT Olds Jukka-Pekka Kekkonen Julian Phillips Julien Schmidt +Justin Nuß Kai Backman Kamil Kisiel +Kang Hu +Kato Kazuyoshi Katrina Owen Kei Son Keith Rarick @@ -257,12 +310,15 @@ Kelvin Foo Chuan Lyi Ken Friedenbach Ken Rockot Kevin Ballard +Konstantin Shaposhnikov Kyle Consalus Kyle Isom Kyle Lemons L Campbell Lai Jiangshan +Lee Packham Linaro Limited +Lloyd Dewolf Lorenzo Stoakes Luca Greco Lucio De Re @@ -272,6 +328,7 @@ Luke Curley Manuel Mendez Marc Weistroff Marco Hennings +Mark Bucciarelli Mark Theunissen Marko Juhani Silokunnas Marko Tiikkaja @@ -279,16 +336,23 @@ Markover Inc. DBA Poptip Markus Duft Markus Sonderegger Markus Zimmermann +Martin Möhrmann Martin Neubauer Martin Olsson Mateusz Czapliński Mathieu Lonjaret Mats Lidell Matt Aimonetti +Matt Bostock Matt Jibson Matt Joiner +Matt Layher Matt Reiferson +Matt T. Proud +Matt Williams +Matthew Brennan Matthew Cottingham +Matthew Holt Matthew Horsnell Maxim Khitrov Micah Stetson @@ -297,11 +361,14 @@ Michael Elkins Michael Fraenkel Michael Gehring Michael Hoisie +Michael Käufl Michael Lewis Michael MacInnis Michael Pearson +Michael Schaller Michael Stapelberg Michael Teichgräber +Michael Vetter Michał Derkacz Miek Gieben Mihai Borobocea @@ -319,6 +386,7 @@ Môshe van der Sterre Nan Deng Nathan John Youngman Nathan P Finch +Nevins Bartolomeo ngmoco, LLC Nicholas Katsaros Nicholas Presta @@ -327,6 +395,7 @@ Nicholas Waples Nick Craig-Wood Nicolas Kaiser Nicolas Owens +Nicolas S. Dade Nigel Kerr Noah Campbell Oling Cat @@ -347,6 +416,7 @@ Paul A Querna Paul Hammond Paul Lalonde Paul Sbarra +Paul Smith Paul van Brouwershaven Pavel Zinovkin Percy Wegmann @@ -357,6 +427,7 @@ Peter Kleiweg Peter Mundy Péter Surányi Péter Szilágyi +Peter Waldschmidt Peter Waller Peter Williams Philip K. Warren @@ -364,9 +435,12 @@ Pieter Droogendijk Pietro Gagliardi Preetam Jinka Quan Yong Zhai +Quoc-Viet Nguyen Raif S. Naffah +Rajat Goel Red Hat, Inc. Rémy Oudompheng +Richard Barnes Richard Crowley Richard Eric Gavaletz Richard Musiol @@ -387,9 +461,11 @@ Ron Minnich Ross Light Rowan Worth Ryan Hitchman +Ryan Seys Ryan Slade S.Çağlar Onur Sanjay Menakuru +Scott Barron Scott Ferguson Scott Lawrence Sebastien Binet @@ -405,17 +481,21 @@ Simon Whitehead Sokolov Yura Spring Mc StalkR +Stan Schwertly Stefan Nilsson Stéphane Travostino Stephen McQuay Stephen Weinberg Steve McCoy +Steve Streeting Steven Elliot Harris Steven Hartland +Stripe, Inc. Sven Almgren Szabolcs Nagy Tad Glines Taj Khattra +Tamir Duberstein Tarmigan Casebolt Taru Karttunen Tetsuo Kiso @@ -425,7 +505,10 @@ Thomas Kappler Timo Savola Timo Truyts Tobias Columbus +Todd Neal +Tom Heng Tom Linford +Tommy Schaefer Tor Andersson Travis Cline Tudor Golubenco @@ -436,6 +519,7 @@ Ulf Holm Nielsen Uriel Mangado Vadim Vygonets Vincent Ambo +Vincent Batts Vincent Vanackere Vinu Rajashekhar Vladimir Nikishenko @@ -448,6 +532,7 @@ Xia Bin Xing Xing Yasuhiro Matsumoto Yissakhar Z. Beck +Yo-An Lin Yongjian Xu Yoshiyuki Kanno Yusuke Kagiwada diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 14214b0d82..f3f53f11c3 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -31,7 +31,9 @@ # Please keep the list sorted. +Aamir Khan Aaron France +Aaron Jacobs Aaron Kemp Abhinav Gupta Adam Langley @@ -39,6 +41,7 @@ Adrian Nos Adrian O'Grady Adrien Bustany Ahmed Waheed Moanes +Ainar Garipov Akshat Kumar Alan Donovan Alan Shreve @@ -50,11 +53,17 @@ Alex A Skinner Alex Brainman Alex Bramley Alex Jin +Alex Plugaru +Alex Schroeder +Alex Sergeyev Alexander Larsson +Alexander Morozov Alexander Orlov Alexander Reece Alexander Surma Alexander Zhavnerchik +Alexander Zolotov +Alexandre Cesaro Alexandre Normand Alexandru Moșoi Alexei Sholik @@ -65,20 +74,25 @@ Amir Mohammad Saied Amrut Joshi Andrea Spadaccini Andreas Jellinghaus +Andrei Korzhevskii Andrei Vieru Andres Erbsen Andrew Balholm Andrew Bonventre Andrew Bursavich +Andrew Ekstedt Andrew Gerrand Andrew Harding Andrew Lutomirski +Andrew Pilloud Andrew Pritchard Andrew Radev Andrew Skiba Andrew Szeto Andrew Wilkins +Andrew Williams Andrey Mirtchovski +Andrey Petrov Andriy Lytvynov Andy Davis Anfernee Yongkun Gui @@ -89,6 +103,7 @@ Anthony Martin Anthony Starks Apisak Darakananda Aram Hăvărneanu +Areski Belaid Arnaud Ysmal Arne Hormann Aron Nopanen @@ -97,7 +112,10 @@ Asim Shankar Ato Araki Aulus Egnatius Varialus Austin Clements +awaw fumin +Aymerick Jéhanne Balazs Lecz +Ben Burkert Ben Eitzen Ben Fried Ben Lynn @@ -111,24 +129,31 @@ Bill Thiede Billie Harold Cleek Bjorn Tillenius Bjorn Tipling +Blake Gentry Blake Mizerany Bobby Powers Brad Fitzpatrick Brad Garcia +Brandon Gilmore Brendan Daniel Tracey Brendan O'Dea +Brett Cannon Brian Dellisanti Brian G. Merrell -Brian Gitonga Marete +Brian Gitonga Marete Brian Ketelsen Brian Slesinsky +Brian Smith +Bryan Ford Burcu Dogan Caine Tighe Caleb Spare Carl Chatfield +Carl Jackson Carl Mastrangelo Carl Shapiro Carlos Castillo +Carlos Cirello Cary Hull Case Nelson Casey Marshall @@ -137,11 +162,13 @@ Cezar Sá Espinola ChaiShushan Charles L. Dorian Charles Lee +Chris Broadfoot Chris Dollin Chris Farmiloe Chris Howey Chris Hundt Chris Jones +Chris Kastorff Chris Lennert Chris Manghane Chris McGee @@ -150,12 +177,14 @@ Christine Hansmann Christoffer Buchholz Christoph Hack Christopher Cahoon +Christopher Guiney Christopher Nielsen Christopher Redden Christopher Swenson Christopher Wedgwood Clement Skau Colby Ranger +Colin Kennedy Conrad Meyer Corey Thomasson Cosmos Nicolaou @@ -164,6 +193,7 @@ Damian Gryski Damien Neil Dan Callahan Dan Peterson +Dan Pupius Dan Sinclair Daniel Fleischman Daniel Krech @@ -180,6 +210,7 @@ David Anderson David Barnett David Bürgin <676c7473@gmail.com> David Calavera +David Chase David Covert David Crawshaw David du Colombier <0intro@gmail.com> @@ -192,23 +223,29 @@ David Presotto David Symonds David Thomas David Titarenco +Davies Liu Dean Prichard Denis Brandolini +Derek Buitenhuis Derek Parker Devon H. O'Dell Dhiru Kholia +Didier Spezia Dimitri Tcaciuc Dmitri Shuralyov Dmitriy Shelenin Dmitriy Vyukov Dmitry Chestnykh +Dmitry Savintsev Dominik Honnef +Dominik Vogt Donovan Hide Drew Hintz Duncan Holm Dustin Long Dustin Sallings Dustin Shields-Cloues +Dvir Volk Eden Li Egon Elbre Ehren Kret @@ -219,11 +256,13 @@ Eoghan Sherry Eric Clark Eric Milliken Eric Roshan-Eisner +Erik Aigner Erik St. Martin Erik Westrup Esko Luontola Evan Kroske Evan Martin +Evan Phoenix Evan Shaw Ewan Chou Fabrizio Milo @@ -234,6 +273,7 @@ Felix Geisendörfer Firmansyah Adiputra Florian Uekermann Florian Weimer +Florin Patan Folke Behrens Francesc Campoy Francisco Souza @@ -245,23 +285,29 @@ Gaal Yahas Gabriel Aszalos Gary Burd Gautham Thambidorai +Geert-Johan Riemer Georg Reinke +George Shammas Gerasimos Dimitriadis Gideon Jan-Wessel Redelinghuys Giles Lean +Giulio Iotti Glenn Lewis Gordon Klaus Graham King Graham Miller Greg Ward Guillaume J. Charmes +Guobiao Mei Gustav Paul Gustavo Franco Gustavo Niemeyer Gwenael Treguier -Hana Kim +Hajime Hoshi Han-Wen Nienhuys +Hariharan Srinath Harley Laue +Håvard Haugen Hector Chu Hector Martin Cantero Henning Schmiedehausen @@ -269,12 +315,17 @@ Henrik Edwards Herbert Georg Fischer Hong Ruiqi Hossein Sheikh Attar +Hyang-Ah Hana Kim Ian Lance Taylor Icarus Sparry +Igor Dolzhikov +INADA Naoki Ingo Oeser Isaac Wagner Ivan Krasin +Ivan Ukhov Jacob Baskin +Jacob H. Haven Jakob Borg Jakub Ryszard Czarnowicz James Aguilar @@ -291,6 +342,7 @@ Jamie Gennis Jamie Turner Jamie Wilkinson Jan H. Hosang +Jan Kratochvil Jan Mercl <0xjnml@gmail.com> Jan Mercl Jan Newmarch @@ -313,9 +365,12 @@ Jeremy Schlatter Jim McGrath Jimmy Zelinskie Jingcheng Zhang +Jiong Du Joakim Sernbrant +Joe Harrison Joe Poirier Joe Shaw +Joe Tsai Joel Sing Joel Stemmer Johan Euphrosine @@ -323,9 +378,11 @@ John Asmuth John Beisley John C Barstow John DeNero +John Dethridge John Graham-Cumming John Howard Palevich John Newlin +John Potocny John Shahid John Tuley Jonathan Allie @@ -352,8 +409,11 @@ JT Olds Jukka-Pekka Kekkonen Julian Phillips Julien Schmidt +Justin Nuß Kai Backman Kamil Kisiel +Kang Hu +Kato Kazuyoshi Katrina Owen Kay Zhu Kei Son @@ -367,12 +427,15 @@ Ken Thompson Kevin Ballard Kevin Klues Kirklin McDonald +Konstantin Shaposhnikov Kyle Consalus Kyle Isom Kyle Lemons L Campbell Lai Jiangshan Larry Hosken +Lee Packham +Lloyd Dewolf Lorenzo Stoakes Louis Kruger Luca Greco @@ -381,12 +444,15 @@ Luit van Drongelen Luka Zakrajšek Luke Curley Luuk van Dijk +Lynn Boger Manoj Dayaram Manu Garg Manuel Mendez Marc Weistroff Marcel van Lohuizen Marco Hennings +Marius Nuennerich +Mark Bucciarelli Mark Theunissen Mark Zavislak Marko Juhani Silokunnas @@ -395,19 +461,26 @@ Marko Tiikkaja Markus Duft Markus Sonderegger Markus Zimmermann +Martin Möhrmann Martin Neubauer Martin Olsson Mateusz Czapliński Mathieu Lonjaret Mats Lidell Matt Aimonetti +Matt Bostock Matt Brown Matt Jibson Matt Joiner Matt Jones +Matt Layher Matt Reiferson +Matt T. Proud +Matt Williams +Matthew Brennan Matthew Cottingham Matthew Dempsky +Matthew Holt Matthew Horsnell Maxim Khitrov Maxim Pimenov @@ -419,17 +492,21 @@ Michael Fraenkel Michael Gehring Michael Hoisie Michael Hudson-Doyle +Michael Käufl Michael Kelly Michael Lewis Michael MacInnis Michael Matloob Michael Pearson Michael Piatek +Michael Schaller Michael Shields Michael Stapelberg Michael T. Jones Michael Teichgräber +Michael Vetter Michał Derkacz +Michalis Kargakis Miek Gieben Mihai Borobocea Mikael Tillenius @@ -448,6 +525,7 @@ Mrunal Patel Nan Deng Nathan John Youngman Nathan P Finch +Nevins Bartolomeo Nicholas Katsaros Nicholas Presta Nicholas Sullivan @@ -456,6 +534,7 @@ Nick Cooper Nick Craig-Wood Nicolas Kaiser Nicolas Owens +Nicolas S. Dade Nigel Kerr Nigel Tao Noah Campbell @@ -479,8 +558,10 @@ Paul Borman Paul Chang Paul Hammond Paul Lalonde +Paul Marks Paul Nasrat Paul Sbarra +Paul Smith Paul van Brouwershaven Pavel Zinovkin Pawel Szczur @@ -495,6 +576,7 @@ Peter Mundy Péter Surányi Péter Szabó Péter Szilágyi +Peter Waldschmidt Peter Waller Peter Weinberger Peter Williams @@ -504,10 +586,14 @@ Pieter Droogendijk Pietro Gagliardi Preetam Jinka Quan Yong Zhai +Quoc-Viet Nguyen +Rahul Chaudhry Raif S. Naffah +Rajat Goel Raph Levien Raul Silvera Rémy Oudompheng +Richard Barnes Richard Crowley Richard Eric Gavaletz Richard Musiol @@ -530,22 +616,25 @@ Roger Pau Monné Roger Peppe Ron Hashimoto Ron Minnich -Ross Light +Ross Light Rowan Worth Rui Ueyama Russ Cox Ryan Barrett +Ryan Brown Ryan Hitchman +Ryan Seys Ryan Slade S.Çağlar Onur Sam Thorogood Sameer Ajmani Sanjay Menakuru +Scott Barron Scott Ferguson Scott Lawrence Scott Schwartz Sean Burford -Sebastien Binet +Sebastien Binet Sébastien Paolacci Sergei Skorobogatov Sergey 'SnakE' Gromov @@ -558,13 +647,16 @@ Shivakumar GN Simon Whitehead Sokolov Yura Spring Mc +Srdjan Petrovic StalkR +Stan Schwertly Stefan Nilsson Stéphane Travostino Stephen Ma Stephen McQuay Stephen Weinberg Steve McCoy +Steve Streeting Steven Elliot Harris Steven Hartland Sugu Sougoumarane @@ -572,6 +664,7 @@ Sven Almgren Szabolcs Nagy Tad Glines Taj Khattra +Tamir Duberstein Tarmigan Casebolt Taru Karttunen Tetsuo Kiso @@ -582,9 +675,12 @@ Thomas Kappler Timo Savola Timo Truyts Tobias Columbus +Todd Neal Todd Wang +Tom Heng Tom Linford Tom Szymanski +Tommy Schaefer Tor Andersson Travis Cline Trevor Strohman @@ -597,9 +693,11 @@ Uriel Mangado Vadim Vygonets Vega Garcia Luis Alfonso Vincent Ambo +Vincent Batts Vincent Vanackere Vinu Rajashekhar Vish Subramanian +Vlad Krasnov Vladimir Nikishenko Volker Dobler Wei Guangjing @@ -613,6 +711,7 @@ Xing Xing Yan Zou Yasuhiro Matsumoto Yissakhar Z. Beck +Yo-An Lin Yongjian Xu Yoshiyuki Kanno Yusuke Kagiwada diff --git a/api/go1.5.txt b/api/go1.5.txt new file mode 100644 index 0000000000..72e4ad9ae7 --- /dev/null +++ b/api/go1.5.txt @@ -0,0 +1,969 @@ +pkg archive/zip, method (*Writer) SetOffset(int64) +pkg bufio, method (*Reader) Discard(int) (int, error) +pkg bufio, method (ReadWriter) Discard(int) (int, error) +pkg bytes, func LastIndexByte([]uint8, uint8) int +pkg bytes, method (*Buffer) Cap() int +pkg bytes, method (*Reader) Size() int64 +pkg crypto, const SHA512_224 = 14 +pkg crypto, const SHA512_224 Hash +pkg crypto, const SHA512_256 = 15 +pkg crypto, const SHA512_256 Hash +pkg crypto, type Decrypter interface { Decrypt, Public } +pkg crypto, type Decrypter interface, Decrypt(io.Reader, []uint8, DecrypterOpts) ([]uint8, error) +pkg crypto, type Decrypter interface, Public() PublicKey +pkg crypto, type DecrypterOpts interface {} +pkg crypto/cipher, func NewGCMWithNonceSize(Block, int) (AEAD, error) +pkg crypto/elliptic, type CurveParams struct, Name string +pkg crypto/rsa, method (*PrivateKey) Decrypt(io.Reader, []uint8, crypto.DecrypterOpts) ([]uint8, error) +pkg crypto/rsa, type OAEPOptions struct +pkg crypto/rsa, type OAEPOptions struct, Hash crypto.Hash +pkg crypto/rsa, type OAEPOptions struct, Label []uint8 +pkg crypto/rsa, type PKCS1v15DecryptOptions struct +pkg crypto/rsa, type PKCS1v15DecryptOptions struct, SessionKeyLen int +pkg crypto/sha512, const Size224 = 28 +pkg crypto/sha512, const Size224 ideal-int +pkg crypto/sha512, const Size256 = 32 +pkg crypto/sha512, const Size256 ideal-int +pkg crypto/sha512, func New512_224() hash.Hash +pkg crypto/sha512, func New512_256() hash.Hash +pkg crypto/sha512, func Sum512_224([]uint8) [28]uint8 +pkg crypto/sha512, func Sum512_256([]uint8) [32]uint8 +pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 49196 +pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 uint16 +pkg crypto/tls, const TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 49200 +pkg crypto/tls, const TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 uint16 +pkg crypto/tls, method (*Config) SetSessionTicketKeys([][32]uint8) +pkg crypto/tls, type Certificate struct, SignedCertificateTimestamps [][]uint8 +pkg crypto/tls, type ConnectionState struct, OCSPResponse []uint8 +pkg crypto/tls, type ConnectionState struct, SignedCertificateTimestamps [][]uint8 +pkg crypto/x509, method (*CertificateRequest) CheckSignature() error +pkg crypto/x509, type Certificate struct, UnhandledCriticalExtensions []asn1.ObjectIdentifier +pkg crypto/x509/pkix, type Name struct, ExtraNames []AttributeTypeAndValue +pkg database/sql, method (*DB) Stats() DBStats +pkg database/sql, type DBStats struct +pkg database/sql, type DBStats struct, OpenConnections int +pkg debug/dwarf, const ClassAddress = 1 +pkg debug/dwarf, const ClassAddress Class +pkg debug/dwarf, const ClassBlock = 2 +pkg debug/dwarf, const ClassBlock Class +pkg debug/dwarf, const ClassConstant = 3 +pkg debug/dwarf, const ClassConstant Class +pkg debug/dwarf, const ClassExprLoc = 4 +pkg debug/dwarf, const ClassExprLoc Class +pkg debug/dwarf, const ClassFlag = 5 +pkg debug/dwarf, const ClassFlag Class +pkg debug/dwarf, const ClassLinePtr = 6 +pkg debug/dwarf, const ClassLinePtr Class +pkg debug/dwarf, const ClassLocListPtr = 7 +pkg debug/dwarf, const ClassLocListPtr Class +pkg debug/dwarf, const ClassMacPtr = 8 +pkg debug/dwarf, const ClassMacPtr Class +pkg debug/dwarf, const ClassRangeListPtr = 9 +pkg debug/dwarf, const ClassRangeListPtr Class +pkg debug/dwarf, const ClassReference = 10 +pkg debug/dwarf, const ClassReference Class +pkg debug/dwarf, const ClassReferenceAlt = 13 +pkg debug/dwarf, const ClassReferenceAlt Class +pkg debug/dwarf, const ClassReferenceSig = 11 +pkg debug/dwarf, const ClassReferenceSig Class +pkg debug/dwarf, const ClassString = 12 +pkg debug/dwarf, const ClassString Class +pkg debug/dwarf, const ClassStringAlt = 14 +pkg debug/dwarf, const ClassStringAlt Class +pkg debug/dwarf, method (*Data) LineReader(*Entry) (*LineReader, error) +pkg debug/dwarf, method (*Entry) AttrField(Attr) *Field +pkg debug/dwarf, method (*LineReader) Next(*LineEntry) error +pkg debug/dwarf, method (*LineReader) Reset() +pkg debug/dwarf, method (*LineReader) Seek(LineReaderPos) +pkg debug/dwarf, method (*LineReader) SeekPC(uint64, *LineEntry) error +pkg debug/dwarf, method (*LineReader) Tell() LineReaderPos +pkg debug/dwarf, method (*Reader) AddressSize() int +pkg debug/dwarf, method (Class) GoString() string +pkg debug/dwarf, method (Class) String() string +pkg debug/dwarf, type Class int +pkg debug/dwarf, type Field struct, Class Class +pkg debug/dwarf, type LineEntry struct +pkg debug/dwarf, type LineEntry struct, Address uint64 +pkg debug/dwarf, type LineEntry struct, BasicBlock bool +pkg debug/dwarf, type LineEntry struct, Column int +pkg debug/dwarf, type LineEntry struct, Discriminator int +pkg debug/dwarf, type LineEntry struct, EndSequence bool +pkg debug/dwarf, type LineEntry struct, EpilogueBegin bool +pkg debug/dwarf, type LineEntry struct, File *LineFile +pkg debug/dwarf, type LineEntry struct, ISA int +pkg debug/dwarf, type LineEntry struct, IsStmt bool +pkg debug/dwarf, type LineEntry struct, Line int +pkg debug/dwarf, type LineEntry struct, OpIndex int +pkg debug/dwarf, type LineEntry struct, PrologueEnd bool +pkg debug/dwarf, type LineFile struct +pkg debug/dwarf, type LineFile struct, Length int +pkg debug/dwarf, type LineFile struct, Mtime uint64 +pkg debug/dwarf, type LineFile struct, Name string +pkg debug/dwarf, type LineReader struct +pkg debug/dwarf, type LineReaderPos struct +pkg debug/dwarf, var ErrUnknownPC error +pkg debug/elf, const R_PPC64_ADDR14 = 7 +pkg debug/elf, const R_PPC64_ADDR14 R_PPC64 +pkg debug/elf, const R_PPC64_ADDR14_BRNTAKEN = 9 +pkg debug/elf, const R_PPC64_ADDR14_BRNTAKEN R_PPC64 +pkg debug/elf, const R_PPC64_ADDR14_BRTAKEN = 8 +pkg debug/elf, const R_PPC64_ADDR14_BRTAKEN R_PPC64 +pkg debug/elf, const R_PPC64_ADDR16 = 3 +pkg debug/elf, const R_PPC64_ADDR16 R_PPC64 +pkg debug/elf, const R_PPC64_ADDR16_DS = 56 +pkg debug/elf, const R_PPC64_ADDR16_DS R_PPC64 +pkg debug/elf, const R_PPC64_ADDR16_HA = 6 +pkg debug/elf, const R_PPC64_ADDR16_HA R_PPC64 +pkg debug/elf, const R_PPC64_ADDR16_HI = 5 +pkg debug/elf, const R_PPC64_ADDR16_HI R_PPC64 +pkg debug/elf, const R_PPC64_ADDR16_HIGHER = 39 +pkg debug/elf, const R_PPC64_ADDR16_HIGHER R_PPC64 +pkg debug/elf, const R_PPC64_ADDR16_HIGHERA = 40 +pkg debug/elf, const R_PPC64_ADDR16_HIGHERA R_PPC64 +pkg debug/elf, const R_PPC64_ADDR16_HIGHEST = 41 +pkg debug/elf, const R_PPC64_ADDR16_HIGHEST R_PPC64 +pkg debug/elf, const R_PPC64_ADDR16_HIGHESTA = 42 +pkg debug/elf, const R_PPC64_ADDR16_HIGHESTA R_PPC64 +pkg debug/elf, const R_PPC64_ADDR16_LO = 4 +pkg debug/elf, const R_PPC64_ADDR16_LO R_PPC64 +pkg debug/elf, const R_PPC64_ADDR16_LO_DS = 57 +pkg debug/elf, const R_PPC64_ADDR16_LO_DS R_PPC64 +pkg debug/elf, const R_PPC64_ADDR24 = 2 +pkg debug/elf, const R_PPC64_ADDR24 R_PPC64 +pkg debug/elf, const R_PPC64_ADDR32 = 1 +pkg debug/elf, const R_PPC64_ADDR32 R_PPC64 +pkg debug/elf, const R_PPC64_ADDR64 = 38 +pkg debug/elf, const R_PPC64_ADDR64 R_PPC64 +pkg debug/elf, const R_PPC64_DTPMOD64 = 68 +pkg debug/elf, const R_PPC64_DTPMOD64 R_PPC64 +pkg debug/elf, const R_PPC64_DTPREL16 = 74 +pkg debug/elf, const R_PPC64_DTPREL16 R_PPC64 +pkg debug/elf, const R_PPC64_DTPREL16_DS = 101 +pkg debug/elf, const R_PPC64_DTPREL16_DS R_PPC64 +pkg debug/elf, const R_PPC64_DTPREL16_HA = 77 +pkg debug/elf, const R_PPC64_DTPREL16_HA R_PPC64 +pkg debug/elf, const R_PPC64_DTPREL16_HI = 76 +pkg debug/elf, const R_PPC64_DTPREL16_HI R_PPC64 +pkg debug/elf, const R_PPC64_DTPREL16_HIGHER = 103 +pkg debug/elf, const R_PPC64_DTPREL16_HIGHER R_PPC64 +pkg debug/elf, const R_PPC64_DTPREL16_HIGHERA = 104 +pkg debug/elf, const R_PPC64_DTPREL16_HIGHERA R_PPC64 +pkg debug/elf, const R_PPC64_DTPREL16_HIGHEST = 105 +pkg debug/elf, const R_PPC64_DTPREL16_HIGHEST R_PPC64 +pkg debug/elf, const R_PPC64_DTPREL16_HIGHESTA = 106 +pkg debug/elf, const R_PPC64_DTPREL16_HIGHESTA R_PPC64 +pkg debug/elf, const R_PPC64_DTPREL16_LO = 75 +pkg debug/elf, const R_PPC64_DTPREL16_LO R_PPC64 +pkg debug/elf, const R_PPC64_DTPREL16_LO_DS = 102 +pkg debug/elf, const R_PPC64_DTPREL16_LO_DS R_PPC64 +pkg debug/elf, const R_PPC64_DTPREL64 = 78 +pkg debug/elf, const R_PPC64_DTPREL64 R_PPC64 +pkg debug/elf, const R_PPC64_GOT16 = 14 +pkg debug/elf, const R_PPC64_GOT16 R_PPC64 +pkg debug/elf, const R_PPC64_GOT16_DS = 58 +pkg debug/elf, const R_PPC64_GOT16_DS R_PPC64 +pkg debug/elf, const R_PPC64_GOT16_HA = 17 +pkg debug/elf, const R_PPC64_GOT16_HA R_PPC64 +pkg debug/elf, const R_PPC64_GOT16_HI = 16 +pkg debug/elf, const R_PPC64_GOT16_HI R_PPC64 +pkg debug/elf, const R_PPC64_GOT16_LO = 15 +pkg debug/elf, const R_PPC64_GOT16_LO R_PPC64 +pkg debug/elf, const R_PPC64_GOT16_LO_DS = 59 +pkg debug/elf, const R_PPC64_GOT16_LO_DS R_PPC64 +pkg debug/elf, const R_PPC64_GOT_DTPREL16_DS = 91 +pkg debug/elf, const R_PPC64_GOT_DTPREL16_DS R_PPC64 +pkg debug/elf, const R_PPC64_GOT_DTPREL16_HA = 94 +pkg debug/elf, const R_PPC64_GOT_DTPREL16_HA R_PPC64 +pkg debug/elf, const R_PPC64_GOT_DTPREL16_HI = 93 +pkg debug/elf, const R_PPC64_GOT_DTPREL16_HI R_PPC64 +pkg debug/elf, const R_PPC64_GOT_DTPREL16_LO_DS = 92 +pkg debug/elf, const R_PPC64_GOT_DTPREL16_LO_DS R_PPC64 +pkg debug/elf, const R_PPC64_GOT_TLSGD16 = 79 +pkg debug/elf, const R_PPC64_GOT_TLSGD16 R_PPC64 +pkg debug/elf, const R_PPC64_GOT_TLSGD16_HA = 82 +pkg debug/elf, const R_PPC64_GOT_TLSGD16_HA R_PPC64 +pkg debug/elf, const R_PPC64_GOT_TLSGD16_HI = 81 +pkg debug/elf, const R_PPC64_GOT_TLSGD16_HI R_PPC64 +pkg debug/elf, const R_PPC64_GOT_TLSGD16_LO = 80 +pkg debug/elf, const R_PPC64_GOT_TLSGD16_LO R_PPC64 +pkg debug/elf, const R_PPC64_GOT_TLSLD16 = 83 +pkg debug/elf, const R_PPC64_GOT_TLSLD16 R_PPC64 +pkg debug/elf, const R_PPC64_GOT_TLSLD16_HA = 86 +pkg debug/elf, const R_PPC64_GOT_TLSLD16_HA R_PPC64 +pkg debug/elf, const R_PPC64_GOT_TLSLD16_HI = 85 +pkg debug/elf, const R_PPC64_GOT_TLSLD16_HI R_PPC64 +pkg debug/elf, const R_PPC64_GOT_TLSLD16_LO = 84 +pkg debug/elf, const R_PPC64_GOT_TLSLD16_LO R_PPC64 +pkg debug/elf, const R_PPC64_GOT_TPREL16_DS = 87 +pkg debug/elf, const R_PPC64_GOT_TPREL16_DS R_PPC64 +pkg debug/elf, const R_PPC64_GOT_TPREL16_HA = 90 +pkg debug/elf, const R_PPC64_GOT_TPREL16_HA R_PPC64 +pkg debug/elf, const R_PPC64_GOT_TPREL16_HI = 89 +pkg debug/elf, const R_PPC64_GOT_TPREL16_HI R_PPC64 +pkg debug/elf, const R_PPC64_GOT_TPREL16_LO_DS = 88 +pkg debug/elf, const R_PPC64_GOT_TPREL16_LO_DS R_PPC64 +pkg debug/elf, const R_PPC64_JMP_SLOT = 21 +pkg debug/elf, const R_PPC64_JMP_SLOT R_PPC64 +pkg debug/elf, const R_PPC64_NONE = 0 +pkg debug/elf, const R_PPC64_NONE R_PPC64 +pkg debug/elf, const R_PPC64_REL14 = 11 +pkg debug/elf, const R_PPC64_REL14 R_PPC64 +pkg debug/elf, const R_PPC64_REL14_BRNTAKEN = 13 +pkg debug/elf, const R_PPC64_REL14_BRNTAKEN R_PPC64 +pkg debug/elf, const R_PPC64_REL14_BRTAKEN = 12 +pkg debug/elf, const R_PPC64_REL14_BRTAKEN R_PPC64 +pkg debug/elf, const R_PPC64_REL16 = 249 +pkg debug/elf, const R_PPC64_REL16 R_PPC64 +pkg debug/elf, const R_PPC64_REL16_HA = 252 +pkg debug/elf, const R_PPC64_REL16_HA R_PPC64 +pkg debug/elf, const R_PPC64_REL16_HI = 251 +pkg debug/elf, const R_PPC64_REL16_HI R_PPC64 +pkg debug/elf, const R_PPC64_REL16_LO = 250 +pkg debug/elf, const R_PPC64_REL16_LO R_PPC64 +pkg debug/elf, const R_PPC64_REL24 = 10 +pkg debug/elf, const R_PPC64_REL24 R_PPC64 +pkg debug/elf, const R_PPC64_REL32 = 26 +pkg debug/elf, const R_PPC64_REL32 R_PPC64 +pkg debug/elf, const R_PPC64_REL64 = 44 +pkg debug/elf, const R_PPC64_REL64 R_PPC64 +pkg debug/elf, const R_PPC64_TLS = 67 +pkg debug/elf, const R_PPC64_TLS R_PPC64 +pkg debug/elf, const R_PPC64_TLSGD = 107 +pkg debug/elf, const R_PPC64_TLSGD R_PPC64 +pkg debug/elf, const R_PPC64_TLSLD = 108 +pkg debug/elf, const R_PPC64_TLSLD R_PPC64 +pkg debug/elf, const R_PPC64_TOC = 51 +pkg debug/elf, const R_PPC64_TOC R_PPC64 +pkg debug/elf, const R_PPC64_TOC16 = 47 +pkg debug/elf, const R_PPC64_TOC16 R_PPC64 +pkg debug/elf, const R_PPC64_TOC16_DS = 63 +pkg debug/elf, const R_PPC64_TOC16_DS R_PPC64 +pkg debug/elf, const R_PPC64_TOC16_HA = 50 +pkg debug/elf, const R_PPC64_TOC16_HA R_PPC64 +pkg debug/elf, const R_PPC64_TOC16_HI = 49 +pkg debug/elf, const R_PPC64_TOC16_HI R_PPC64 +pkg debug/elf, const R_PPC64_TOC16_LO = 48 +pkg debug/elf, const R_PPC64_TOC16_LO R_PPC64 +pkg debug/elf, const R_PPC64_TOC16_LO_DS = 64 +pkg debug/elf, const R_PPC64_TOC16_LO_DS R_PPC64 +pkg debug/elf, const R_PPC64_TPREL16 = 69 +pkg debug/elf, const R_PPC64_TPREL16 R_PPC64 +pkg debug/elf, const R_PPC64_TPREL16_DS = 95 +pkg debug/elf, const R_PPC64_TPREL16_DS R_PPC64 +pkg debug/elf, const R_PPC64_TPREL16_HA = 72 +pkg debug/elf, const R_PPC64_TPREL16_HA R_PPC64 +pkg debug/elf, const R_PPC64_TPREL16_HI = 71 +pkg debug/elf, const R_PPC64_TPREL16_HI R_PPC64 +pkg debug/elf, const R_PPC64_TPREL16_HIGHER = 97 +pkg debug/elf, const R_PPC64_TPREL16_HIGHER R_PPC64 +pkg debug/elf, const R_PPC64_TPREL16_HIGHERA = 98 +pkg debug/elf, const R_PPC64_TPREL16_HIGHERA R_PPC64 +pkg debug/elf, const R_PPC64_TPREL16_HIGHEST = 99 +pkg debug/elf, const R_PPC64_TPREL16_HIGHEST R_PPC64 +pkg debug/elf, const R_PPC64_TPREL16_HIGHESTA = 100 +pkg debug/elf, const R_PPC64_TPREL16_HIGHESTA R_PPC64 +pkg debug/elf, const R_PPC64_TPREL16_LO = 70 +pkg debug/elf, const R_PPC64_TPREL16_LO R_PPC64 +pkg debug/elf, const R_PPC64_TPREL16_LO_DS = 96 +pkg debug/elf, const R_PPC64_TPREL16_LO_DS R_PPC64 +pkg debug/elf, const R_PPC64_TPREL64 = 73 +pkg debug/elf, const R_PPC64_TPREL64 R_PPC64 +pkg debug/elf, method (R_PPC64) GoString() string +pkg debug/elf, method (R_PPC64) String() string +pkg debug/elf, type R_PPC64 int +pkg encoding/base64, const NoPadding = -1 +pkg encoding/base64, const NoPadding int32 +pkg encoding/base64, const StdPadding = 61 +pkg encoding/base64, const StdPadding int32 +pkg encoding/base64, method (Encoding) WithPadding(int32) *Encoding +pkg encoding/base64, var RawStdEncoding *Encoding +pkg encoding/base64, var RawURLEncoding *Encoding +pkg encoding/json, type UnmarshalTypeError struct, Offset int64 +pkg flag, func UnquoteUsage(*Flag) (string, string) +pkg go/ast, type EmptyStmt struct, Implicit bool +pkg go/build, type Package struct, PkgTargetRoot string +pkg go/constant, const Bool = 1 +pkg go/constant, const Bool Kind +pkg go/constant, const Complex = 5 +pkg go/constant, const Complex Kind +pkg go/constant, const Float = 4 +pkg go/constant, const Float Kind +pkg go/constant, const Int = 3 +pkg go/constant, const Int Kind +pkg go/constant, const String = 2 +pkg go/constant, const String Kind +pkg go/constant, const Unknown = 0 +pkg go/constant, const Unknown Kind +pkg go/constant, func BinaryOp(Value, token.Token, Value) Value +pkg go/constant, func BitLen(Value) int +pkg go/constant, func BoolVal(Value) bool +pkg go/constant, func Bytes(Value) []uint8 +pkg go/constant, func Compare(Value, token.Token, Value) bool +pkg go/constant, func Denom(Value) Value +pkg go/constant, func Float32Val(Value) (float32, bool) +pkg go/constant, func Float64Val(Value) (float64, bool) +pkg go/constant, func Imag(Value) Value +pkg go/constant, func Int64Val(Value) (int64, bool) +pkg go/constant, func MakeBool(bool) Value +pkg go/constant, func MakeFloat64(float64) Value +pkg go/constant, func MakeFromBytes([]uint8) Value +pkg go/constant, func MakeFromLiteral(string, token.Token, uint) Value +pkg go/constant, func MakeImag(Value) Value +pkg go/constant, func MakeInt64(int64) Value +pkg go/constant, func MakeString(string) Value +pkg go/constant, func MakeUint64(uint64) Value +pkg go/constant, func MakeUnknown() Value +pkg go/constant, func Num(Value) Value +pkg go/constant, func Real(Value) Value +pkg go/constant, func Shift(Value, token.Token, uint) Value +pkg go/constant, func Sign(Value) int +pkg go/constant, func StringVal(Value) string +pkg go/constant, func Uint64Val(Value) (uint64, bool) +pkg go/constant, func UnaryOp(token.Token, Value, uint) Value +pkg go/constant, type Kind int +pkg go/constant, type Value interface, Kind() Kind +pkg go/constant, type Value interface, String() string +pkg go/constant, type Value interface, unexported methods +pkg go/importer, func Default() types.Importer +pkg go/importer, func For(string, Lookup) types.Importer +pkg go/importer, type Lookup func(string) (io.ReadCloser, error) +pkg go/parser, func ParseExprFrom(*token.FileSet, string, interface{}, Mode) (ast.Expr, error) +pkg go/types, const Bool = 1 +pkg go/types, const Bool BasicKind +pkg go/types, const Byte = 8 +pkg go/types, const Byte BasicKind +pkg go/types, const Complex128 = 16 +pkg go/types, const Complex128 BasicKind +pkg go/types, const Complex64 = 15 +pkg go/types, const Complex64 BasicKind +pkg go/types, const FieldVal = 0 +pkg go/types, const FieldVal SelectionKind +pkg go/types, const Float32 = 13 +pkg go/types, const Float32 BasicKind +pkg go/types, const Float64 = 14 +pkg go/types, const Float64 BasicKind +pkg go/types, const Int = 2 +pkg go/types, const Int BasicKind +pkg go/types, const Int16 = 4 +pkg go/types, const Int16 BasicKind +pkg go/types, const Int32 = 5 +pkg go/types, const Int32 BasicKind +pkg go/types, const Int64 = 6 +pkg go/types, const Int64 BasicKind +pkg go/types, const Int8 = 3 +pkg go/types, const Int8 BasicKind +pkg go/types, const Invalid = 0 +pkg go/types, const Invalid BasicKind +pkg go/types, const IsBoolean = 1 +pkg go/types, const IsBoolean BasicInfo +pkg go/types, const IsComplex = 16 +pkg go/types, const IsComplex BasicInfo +pkg go/types, const IsConstType = 59 +pkg go/types, const IsConstType BasicInfo +pkg go/types, const IsFloat = 8 +pkg go/types, const IsFloat BasicInfo +pkg go/types, const IsInteger = 2 +pkg go/types, const IsInteger BasicInfo +pkg go/types, const IsNumeric = 26 +pkg go/types, const IsNumeric BasicInfo +pkg go/types, const IsOrdered = 42 +pkg go/types, const IsOrdered BasicInfo +pkg go/types, const IsString = 32 +pkg go/types, const IsString BasicInfo +pkg go/types, const IsUnsigned = 4 +pkg go/types, const IsUnsigned BasicInfo +pkg go/types, const IsUntyped = 64 +pkg go/types, const IsUntyped BasicInfo +pkg go/types, const MethodExpr = 2 +pkg go/types, const MethodExpr SelectionKind +pkg go/types, const MethodVal = 1 +pkg go/types, const MethodVal SelectionKind +pkg go/types, const RecvOnly = 2 +pkg go/types, const RecvOnly ChanDir +pkg go/types, const Rune = 5 +pkg go/types, const Rune BasicKind +pkg go/types, const SendOnly = 1 +pkg go/types, const SendOnly ChanDir +pkg go/types, const SendRecv = 0 +pkg go/types, const SendRecv ChanDir +pkg go/types, const String = 17 +pkg go/types, const String BasicKind +pkg go/types, const Uint = 7 +pkg go/types, const Uint BasicKind +pkg go/types, const Uint16 = 9 +pkg go/types, const Uint16 BasicKind +pkg go/types, const Uint32 = 10 +pkg go/types, const Uint32 BasicKind +pkg go/types, const Uint64 = 11 +pkg go/types, const Uint64 BasicKind +pkg go/types, const Uint8 = 8 +pkg go/types, const Uint8 BasicKind +pkg go/types, const Uintptr = 12 +pkg go/types, const Uintptr BasicKind +pkg go/types, const UnsafePointer = 18 +pkg go/types, const UnsafePointer BasicKind +pkg go/types, const UntypedBool = 19 +pkg go/types, const UntypedBool BasicKind +pkg go/types, const UntypedComplex = 23 +pkg go/types, const UntypedComplex BasicKind +pkg go/types, const UntypedFloat = 22 +pkg go/types, const UntypedFloat BasicKind +pkg go/types, const UntypedInt = 20 +pkg go/types, const UntypedInt BasicKind +pkg go/types, const UntypedNil = 25 +pkg go/types, const UntypedNil BasicKind +pkg go/types, const UntypedRune = 21 +pkg go/types, const UntypedRune BasicKind +pkg go/types, const UntypedString = 24 +pkg go/types, const UntypedString BasicKind +pkg go/types, func AssertableTo(*Interface, Type) bool +pkg go/types, func AssignableTo(Type, Type) bool +pkg go/types, func Comparable(Type) bool +pkg go/types, func ConvertibleTo(Type, Type) bool +pkg go/types, func DefPredeclaredTestFuncs() +pkg go/types, func Eval(*token.FileSet, *Package, token.Pos, string) (TypeAndValue, error) +pkg go/types, func ExprString(ast.Expr) string +pkg go/types, func Id(*Package, string) string +pkg go/types, func Identical(Type, Type) bool +pkg go/types, func Implements(Type, *Interface) bool +pkg go/types, func IsInterface(Type) bool +pkg go/types, func LookupFieldOrMethod(Type, bool, *Package, string) (Object, []int, bool) +pkg go/types, func MissingMethod(Type, *Interface, bool) (*Func, bool) +pkg go/types, func NewArray(Type, int64) *Array +pkg go/types, func NewChan(ChanDir, Type) *Chan +pkg go/types, func NewChecker(*Config, *token.FileSet, *Package, *Info) *Checker +pkg go/types, func NewConst(token.Pos, *Package, string, Type, constant.Value) *Const +pkg go/types, func NewField(token.Pos, *Package, string, Type, bool) *Var +pkg go/types, func NewFunc(token.Pos, *Package, string, *Signature) *Func +pkg go/types, func NewInterface([]*Func, []*Named) *Interface +pkg go/types, func NewLabel(token.Pos, *Package, string) *Label +pkg go/types, func NewMap(Type, Type) *Map +pkg go/types, func NewMethodSet(Type) *MethodSet +pkg go/types, func NewNamed(*TypeName, Type, []*Func) *Named +pkg go/types, func NewPackage(string, string) *Package +pkg go/types, func NewParam(token.Pos, *Package, string, Type) *Var +pkg go/types, func NewPkgName(token.Pos, *Package, string, *Package) *PkgName +pkg go/types, func NewPointer(Type) *Pointer +pkg go/types, func NewScope(*Scope, token.Pos, token.Pos, string) *Scope +pkg go/types, func NewSignature(*Var, *Tuple, *Tuple, bool) *Signature +pkg go/types, func NewSlice(Type) *Slice +pkg go/types, func NewStruct([]*Var, []string) *Struct +pkg go/types, func NewTuple(...*Var) *Tuple +pkg go/types, func NewTypeName(token.Pos, *Package, string, Type) *TypeName +pkg go/types, func NewVar(token.Pos, *Package, string, Type) *Var +pkg go/types, func ObjectString(Object, Qualifier) string +pkg go/types, func RelativeTo(*Package) Qualifier +pkg go/types, func SelectionString(*Selection, Qualifier) string +pkg go/types, func TypeString(Type, Qualifier) string +pkg go/types, func WriteExpr(*bytes.Buffer, ast.Expr) +pkg go/types, func WriteSignature(*bytes.Buffer, *Signature, Qualifier) +pkg go/types, func WriteType(*bytes.Buffer, Type, Qualifier) +pkg go/types, method (*Array) Elem() Type +pkg go/types, method (*Array) Len() int64 +pkg go/types, method (*Array) String() string +pkg go/types, method (*Array) Underlying() Type +pkg go/types, method (*Basic) Info() BasicInfo +pkg go/types, method (*Basic) Kind() BasicKind +pkg go/types, method (*Basic) Name() string +pkg go/types, method (*Basic) String() string +pkg go/types, method (*Basic) Underlying() Type +pkg go/types, method (*Builtin) Exported() bool +pkg go/types, method (*Builtin) Id() string +pkg go/types, method (*Builtin) Name() string +pkg go/types, method (*Builtin) Parent() *Scope +pkg go/types, method (*Builtin) Pkg() *Package +pkg go/types, method (*Builtin) Pos() token.Pos +pkg go/types, method (*Builtin) String() string +pkg go/types, method (*Builtin) Type() Type +pkg go/types, method (*Chan) Dir() ChanDir +pkg go/types, method (*Chan) Elem() Type +pkg go/types, method (*Chan) String() string +pkg go/types, method (*Chan) Underlying() Type +pkg go/types, method (*Checker) Files([]*ast.File) error +pkg go/types, method (*Config) Check(string, *token.FileSet, []*ast.File, *Info) (*Package, error) +pkg go/types, method (*Const) Exported() bool +pkg go/types, method (*Const) Id() string +pkg go/types, method (*Const) Name() string +pkg go/types, method (*Const) Parent() *Scope +pkg go/types, method (*Const) Pkg() *Package +pkg go/types, method (*Const) Pos() token.Pos +pkg go/types, method (*Const) String() string +pkg go/types, method (*Const) Type() Type +pkg go/types, method (*Const) Val() constant.Value +pkg go/types, method (*Func) Exported() bool +pkg go/types, method (*Func) FullName() string +pkg go/types, method (*Func) Id() string +pkg go/types, method (*Func) Name() string +pkg go/types, method (*Func) Parent() *Scope +pkg go/types, method (*Func) Pkg() *Package +pkg go/types, method (*Func) Pos() token.Pos +pkg go/types, method (*Func) Scope() *Scope +pkg go/types, method (*Func) String() string +pkg go/types, method (*Func) Type() Type +pkg go/types, method (*Info) ObjectOf(*ast.Ident) Object +pkg go/types, method (*Info) TypeOf(ast.Expr) Type +pkg go/types, method (*Initializer) String() string +pkg go/types, method (*Interface) Complete() *Interface +pkg go/types, method (*Interface) Embedded(int) *Named +pkg go/types, method (*Interface) Empty() bool +pkg go/types, method (*Interface) ExplicitMethod(int) *Func +pkg go/types, method (*Interface) Method(int) *Func +pkg go/types, method (*Interface) NumEmbeddeds() int +pkg go/types, method (*Interface) NumExplicitMethods() int +pkg go/types, method (*Interface) NumMethods() int +pkg go/types, method (*Interface) String() string +pkg go/types, method (*Interface) Underlying() Type +pkg go/types, method (*Label) Exported() bool +pkg go/types, method (*Label) Id() string +pkg go/types, method (*Label) Name() string +pkg go/types, method (*Label) Parent() *Scope +pkg go/types, method (*Label) Pkg() *Package +pkg go/types, method (*Label) Pos() token.Pos +pkg go/types, method (*Label) String() string +pkg go/types, method (*Label) Type() Type +pkg go/types, method (*Map) Elem() Type +pkg go/types, method (*Map) Key() Type +pkg go/types, method (*Map) String() string +pkg go/types, method (*Map) Underlying() Type +pkg go/types, method (*MethodSet) At(int) *Selection +pkg go/types, method (*MethodSet) Len() int +pkg go/types, method (*MethodSet) Lookup(*Package, string) *Selection +pkg go/types, method (*MethodSet) String() string +pkg go/types, method (*Named) AddMethod(*Func) +pkg go/types, method (*Named) Method(int) *Func +pkg go/types, method (*Named) NumMethods() int +pkg go/types, method (*Named) Obj() *TypeName +pkg go/types, method (*Named) SetUnderlying(Type) +pkg go/types, method (*Named) String() string +pkg go/types, method (*Named) Underlying() Type +pkg go/types, method (*Nil) Exported() bool +pkg go/types, method (*Nil) Id() string +pkg go/types, method (*Nil) Name() string +pkg go/types, method (*Nil) Parent() *Scope +pkg go/types, method (*Nil) Pkg() *Package +pkg go/types, method (*Nil) Pos() token.Pos +pkg go/types, method (*Nil) String() string +pkg go/types, method (*Nil) Type() Type +pkg go/types, method (*Package) Complete() bool +pkg go/types, method (*Package) Imports() []*Package +pkg go/types, method (*Package) MarkComplete() +pkg go/types, method (*Package) Name() string +pkg go/types, method (*Package) Path() string +pkg go/types, method (*Package) Scope() *Scope +pkg go/types, method (*Package) SetImports([]*Package) +pkg go/types, method (*Package) String() string +pkg go/types, method (*PkgName) Exported() bool +pkg go/types, method (*PkgName) Id() string +pkg go/types, method (*PkgName) Imported() *Package +pkg go/types, method (*PkgName) Name() string +pkg go/types, method (*PkgName) Parent() *Scope +pkg go/types, method (*PkgName) Pkg() *Package +pkg go/types, method (*PkgName) Pos() token.Pos +pkg go/types, method (*PkgName) String() string +pkg go/types, method (*PkgName) Type() Type +pkg go/types, method (*Pointer) Elem() Type +pkg go/types, method (*Pointer) String() string +pkg go/types, method (*Pointer) Underlying() Type +pkg go/types, method (*Scope) Child(int) *Scope +pkg go/types, method (*Scope) Contains(token.Pos) bool +pkg go/types, method (*Scope) End() token.Pos +pkg go/types, method (*Scope) Innermost(token.Pos) *Scope +pkg go/types, method (*Scope) Insert(Object) Object +pkg go/types, method (*Scope) Len() int +pkg go/types, method (*Scope) Lookup(string) Object +pkg go/types, method (*Scope) LookupParent(string, token.Pos) (*Scope, Object) +pkg go/types, method (*Scope) Names() []string +pkg go/types, method (*Scope) NumChildren() int +pkg go/types, method (*Scope) Parent() *Scope +pkg go/types, method (*Scope) Pos() token.Pos +pkg go/types, method (*Scope) String() string +pkg go/types, method (*Scope) WriteTo(io.Writer, int, bool) +pkg go/types, method (*Selection) Index() []int +pkg go/types, method (*Selection) Indirect() bool +pkg go/types, method (*Selection) Kind() SelectionKind +pkg go/types, method (*Selection) Obj() Object +pkg go/types, method (*Selection) Recv() Type +pkg go/types, method (*Selection) String() string +pkg go/types, method (*Selection) Type() Type +pkg go/types, method (*Signature) Params() *Tuple +pkg go/types, method (*Signature) Recv() *Var +pkg go/types, method (*Signature) Results() *Tuple +pkg go/types, method (*Signature) String() string +pkg go/types, method (*Signature) Underlying() Type +pkg go/types, method (*Signature) Variadic() bool +pkg go/types, method (*Slice) Elem() Type +pkg go/types, method (*Slice) String() string +pkg go/types, method (*Slice) Underlying() Type +pkg go/types, method (*StdSizes) Alignof(Type) int64 +pkg go/types, method (*StdSizes) Offsetsof([]*Var) []int64 +pkg go/types, method (*StdSizes) Sizeof(Type) int64 +pkg go/types, method (*Struct) Field(int) *Var +pkg go/types, method (*Struct) NumFields() int +pkg go/types, method (*Struct) String() string +pkg go/types, method (*Struct) Tag(int) string +pkg go/types, method (*Struct) Underlying() Type +pkg go/types, method (*Tuple) At(int) *Var +pkg go/types, method (*Tuple) Len() int +pkg go/types, method (*Tuple) String() string +pkg go/types, method (*Tuple) Underlying() Type +pkg go/types, method (*TypeName) Exported() bool +pkg go/types, method (*TypeName) Id() string +pkg go/types, method (*TypeName) Name() string +pkg go/types, method (*TypeName) Parent() *Scope +pkg go/types, method (*TypeName) Pkg() *Package +pkg go/types, method (*TypeName) Pos() token.Pos +pkg go/types, method (*TypeName) String() string +pkg go/types, method (*TypeName) Type() Type +pkg go/types, method (*Var) Anonymous() bool +pkg go/types, method (*Var) Exported() bool +pkg go/types, method (*Var) Id() string +pkg go/types, method (*Var) IsField() bool +pkg go/types, method (*Var) Name() string +pkg go/types, method (*Var) Parent() *Scope +pkg go/types, method (*Var) Pkg() *Package +pkg go/types, method (*Var) Pos() token.Pos +pkg go/types, method (*Var) String() string +pkg go/types, method (*Var) Type() Type +pkg go/types, method (Checker) ObjectOf(*ast.Ident) Object +pkg go/types, method (Checker) TypeOf(ast.Expr) Type +pkg go/types, method (Error) Error() string +pkg go/types, method (TypeAndValue) Addressable() bool +pkg go/types, method (TypeAndValue) Assignable() bool +pkg go/types, method (TypeAndValue) HasOk() bool +pkg go/types, method (TypeAndValue) IsBuiltin() bool +pkg go/types, method (TypeAndValue) IsNil() bool +pkg go/types, method (TypeAndValue) IsType() bool +pkg go/types, method (TypeAndValue) IsValue() bool +pkg go/types, method (TypeAndValue) IsVoid() bool +pkg go/types, type Array struct +pkg go/types, type Basic struct +pkg go/types, type BasicInfo int +pkg go/types, type BasicKind int +pkg go/types, type Builtin struct +pkg go/types, type Chan struct +pkg go/types, type ChanDir int +pkg go/types, type Checker struct +pkg go/types, type Checker struct, embedded *Info +pkg go/types, type Config struct +pkg go/types, type Config struct, DisableUnusedImportCheck bool +pkg go/types, type Config struct, Error func(error) +pkg go/types, type Config struct, FakeImportC bool +pkg go/types, type Config struct, IgnoreFuncBodies bool +pkg go/types, type Config struct, Importer Importer +pkg go/types, type Config struct, Sizes Sizes +pkg go/types, type Const struct +pkg go/types, type Error struct +pkg go/types, type Error struct, Fset *token.FileSet +pkg go/types, type Error struct, Msg string +pkg go/types, type Error struct, Pos token.Pos +pkg go/types, type Error struct, Soft bool +pkg go/types, type Func struct +pkg go/types, type Importer interface { Import } +pkg go/types, type Importer interface, Import(string) (*Package, error) +pkg go/types, type Info struct +pkg go/types, type Info struct, Defs map[*ast.Ident]Object +pkg go/types, type Info struct, Implicits map[ast.Node]Object +pkg go/types, type Info struct, InitOrder []*Initializer +pkg go/types, type Info struct, Scopes map[ast.Node]*Scope +pkg go/types, type Info struct, Selections map[*ast.SelectorExpr]*Selection +pkg go/types, type Info struct, Types map[ast.Expr]TypeAndValue +pkg go/types, type Info struct, Uses map[*ast.Ident]Object +pkg go/types, type Initializer struct +pkg go/types, type Initializer struct, Lhs []*Var +pkg go/types, type Initializer struct, Rhs ast.Expr +pkg go/types, type Interface struct +pkg go/types, type Label struct +pkg go/types, type Map struct +pkg go/types, type MethodSet struct +pkg go/types, type Named struct +pkg go/types, type Nil struct +pkg go/types, type Object interface, Exported() bool +pkg go/types, type Object interface, Id() string +pkg go/types, type Object interface, Name() string +pkg go/types, type Object interface, Parent() *Scope +pkg go/types, type Object interface, Pkg() *Package +pkg go/types, type Object interface, Pos() token.Pos +pkg go/types, type Object interface, String() string +pkg go/types, type Object interface, Type() Type +pkg go/types, type Object interface, unexported methods +pkg go/types, type Package struct +pkg go/types, type PkgName struct +pkg go/types, type Pointer struct +pkg go/types, type Qualifier func(*Package) string +pkg go/types, type Scope struct +pkg go/types, type Selection struct +pkg go/types, type SelectionKind int +pkg go/types, type Signature struct +pkg go/types, type Sizes interface { Alignof, Offsetsof, Sizeof } +pkg go/types, type Sizes interface, Alignof(Type) int64 +pkg go/types, type Sizes interface, Offsetsof([]*Var) []int64 +pkg go/types, type Sizes interface, Sizeof(Type) int64 +pkg go/types, type Slice struct +pkg go/types, type StdSizes struct +pkg go/types, type StdSizes struct, MaxAlign int64 +pkg go/types, type StdSizes struct, WordSize int64 +pkg go/types, type Struct struct +pkg go/types, type Tuple struct +pkg go/types, type Type interface { String, Underlying } +pkg go/types, type Type interface, String() string +pkg go/types, type Type interface, Underlying() Type +pkg go/types, type TypeAndValue struct +pkg go/types, type TypeAndValue struct, Type Type +pkg go/types, type TypeAndValue struct, Value constant.Value +pkg go/types, type TypeName struct +pkg go/types, type Var struct +pkg go/types, var Typ []*Basic +pkg go/types, var Universe *Scope +pkg go/types, var Unsafe *Package +pkg html/template, method (*Template) Option(...string) *Template +pkg image, const YCbCrSubsampleRatio410 = 5 +pkg image, const YCbCrSubsampleRatio410 YCbCrSubsampleRatio +pkg image, const YCbCrSubsampleRatio411 = 4 +pkg image, const YCbCrSubsampleRatio411 YCbCrSubsampleRatio +pkg image, func NewCMYK(Rectangle) *CMYK +pkg image, method (*CMYK) At(int, int) color.Color +pkg image, method (*CMYK) Bounds() Rectangle +pkg image, method (*CMYK) CMYKAt(int, int) color.CMYK +pkg image, method (*CMYK) ColorModel() color.Model +pkg image, method (*CMYK) Opaque() bool +pkg image, method (*CMYK) PixOffset(int, int) int +pkg image, method (*CMYK) Set(int, int, color.Color) +pkg image, method (*CMYK) SetCMYK(int, int, color.CMYK) +pkg image, method (*CMYK) SubImage(Rectangle) Image +pkg image, method (Rectangle) At(int, int) color.Color +pkg image, method (Rectangle) Bounds() Rectangle +pkg image, method (Rectangle) ColorModel() color.Model +pkg image, type CMYK struct +pkg image, type CMYK struct, Pix []uint8 +pkg image, type CMYK struct, Rect Rectangle +pkg image, type CMYK struct, Stride int +pkg image/color, func CMYKToRGB(uint8, uint8, uint8, uint8) (uint8, uint8, uint8) +pkg image/color, func RGBToCMYK(uint8, uint8, uint8) (uint8, uint8, uint8, uint8) +pkg image/color, method (CMYK) RGBA() (uint32, uint32, uint32, uint32) +pkg image/color, type CMYK struct +pkg image/color, type CMYK struct, C uint8 +pkg image/color, type CMYK struct, K uint8 +pkg image/color, type CMYK struct, M uint8 +pkg image/color, type CMYK struct, Y uint8 +pkg image/color, var CMYKModel Model +pkg image/gif, const DisposalBackground = 2 +pkg image/gif, const DisposalBackground ideal-int +pkg image/gif, const DisposalNone = 1 +pkg image/gif, const DisposalNone ideal-int +pkg image/gif, const DisposalPrevious = 3 +pkg image/gif, const DisposalPrevious ideal-int +pkg image/gif, type GIF struct, BackgroundIndex uint8 +pkg image/gif, type GIF struct, Config image.Config +pkg image/gif, type GIF struct, Disposal []uint8 +pkg io, func CopyBuffer(Writer, Reader, []uint8) (int64, error) +pkg log, const LUTC = 32 +pkg log, const LUTC ideal-int +pkg log, func Output(int, string) error +pkg log, method (*Logger) SetOutput(io.Writer) +pkg math/big, const Above = 1 +pkg math/big, const Above Accuracy +pkg math/big, const AwayFromZero = 3 +pkg math/big, const AwayFromZero RoundingMode +pkg math/big, const Below = -1 +pkg math/big, const Below Accuracy +pkg math/big, const Exact = 0 +pkg math/big, const Exact Accuracy +pkg math/big, const MaxExp = 2147483647 +pkg math/big, const MaxExp ideal-int +pkg math/big, const MaxPrec = 4294967295 +pkg math/big, const MaxPrec ideal-int +pkg math/big, const MinExp = -2147483648 +pkg math/big, const MinExp ideal-int +pkg math/big, const ToNearestAway = 1 +pkg math/big, const ToNearestAway RoundingMode +pkg math/big, const ToNearestEven = 0 +pkg math/big, const ToNearestEven RoundingMode +pkg math/big, const ToNegativeInf = 4 +pkg math/big, const ToNegativeInf RoundingMode +pkg math/big, const ToPositiveInf = 5 +pkg math/big, const ToPositiveInf RoundingMode +pkg math/big, const ToZero = 2 +pkg math/big, const ToZero RoundingMode +pkg math/big, func Jacobi(*Int, *Int) int +pkg math/big, func NewFloat(float64) *Float +pkg math/big, func ParseFloat(string, int, uint, RoundingMode) (*Float, int, error) +pkg math/big, method (*Float) Abs(*Float) *Float +pkg math/big, method (*Float) Acc() Accuracy +pkg math/big, method (*Float) Add(*Float, *Float) *Float +pkg math/big, method (*Float) Append([]uint8, uint8, int) []uint8 +pkg math/big, method (*Float) Cmp(*Float) int +pkg math/big, method (*Float) Copy(*Float) *Float +pkg math/big, method (*Float) Float32() (float32, Accuracy) +pkg math/big, method (*Float) Float64() (float64, Accuracy) +pkg math/big, method (*Float) Format(fmt.State, int32) +pkg math/big, method (*Float) Int(*Int) (*Int, Accuracy) +pkg math/big, method (*Float) Int64() (int64, Accuracy) +pkg math/big, method (*Float) IsInf() bool +pkg math/big, method (*Float) IsInt() bool +pkg math/big, method (*Float) MantExp(*Float) int +pkg math/big, method (*Float) MinPrec() uint +pkg math/big, method (*Float) Mode() RoundingMode +pkg math/big, method (*Float) Mul(*Float, *Float) *Float +pkg math/big, method (*Float) Neg(*Float) *Float +pkg math/big, method (*Float) Parse(string, int) (*Float, int, error) +pkg math/big, method (*Float) Prec() uint +pkg math/big, method (*Float) Quo(*Float, *Float) *Float +pkg math/big, method (*Float) Rat(*Rat) (*Rat, Accuracy) +pkg math/big, method (*Float) Set(*Float) *Float +pkg math/big, method (*Float) SetFloat64(float64) *Float +pkg math/big, method (*Float) SetInf(bool) *Float +pkg math/big, method (*Float) SetInt(*Int) *Float +pkg math/big, method (*Float) SetInt64(int64) *Float +pkg math/big, method (*Float) SetMantExp(*Float, int) *Float +pkg math/big, method (*Float) SetMode(RoundingMode) *Float +pkg math/big, method (*Float) SetPrec(uint) *Float +pkg math/big, method (*Float) SetRat(*Rat) *Float +pkg math/big, method (*Float) SetString(string) (*Float, bool) +pkg math/big, method (*Float) SetUint64(uint64) *Float +pkg math/big, method (*Float) Sign() int +pkg math/big, method (*Float) Signbit() bool +pkg math/big, method (*Float) String() string +pkg math/big, method (*Float) Sub(*Float, *Float) *Float +pkg math/big, method (*Float) Text(uint8, int) string +pkg math/big, method (*Float) Uint64() (uint64, Accuracy) +pkg math/big, method (*Int) ModSqrt(*Int, *Int) *Int +pkg math/big, method (Accuracy) String() string +pkg math/big, method (ErrNaN) Error() string +pkg math/big, method (RoundingMode) String() string +pkg math/big, type Accuracy int8 +pkg math/big, type ErrNaN struct +pkg math/big, type Float struct +pkg math/big, type RoundingMode uint8 +pkg mime, const BEncoding = 98 +pkg mime, const BEncoding WordEncoder +pkg mime, const QEncoding = 113 +pkg mime, const QEncoding WordEncoder +pkg mime, func ExtensionsByType(string) ([]string, error) +pkg mime, method (*WordDecoder) Decode(string) (string, error) +pkg mime, method (*WordDecoder) DecodeHeader(string) (string, error) +pkg mime, method (WordEncoder) Encode(string, string) string +pkg mime, type WordDecoder struct +pkg mime, type WordDecoder struct, CharsetReader func(string, io.Reader) (io.Reader, error) +pkg mime, type WordEncoder uint8 +pkg mime/quotedprintable, func NewReader(io.Reader) *Reader +pkg mime/quotedprintable, func NewWriter(io.Writer) *Writer +pkg mime/quotedprintable, method (*Reader) Read([]uint8) (int, error) +pkg mime/quotedprintable, method (*Writer) Close() error +pkg mime/quotedprintable, method (*Writer) Write([]uint8) (int, error) +pkg mime/quotedprintable, type Reader struct +pkg mime/quotedprintable, type Writer struct +pkg mime/quotedprintable, type Writer struct, Binary bool +pkg net, type Dialer struct, FallbackDelay time.Duration +pkg net, type OpError struct, Source Addr +pkg net/http, type Request struct, Cancel <-chan struct +pkg net/http/fcgi, var ErrConnClosed error +pkg net/http/fcgi, var ErrRequestAborted error +pkg net/http/pprof, func Trace(http.ResponseWriter, *http.Request) +pkg net/mail, method (*AddressParser) Parse(string) (*Address, error) +pkg net/mail, method (*AddressParser) ParseList(string) ([]*Address, error) +pkg net/mail, type AddressParser struct +pkg net/mail, type AddressParser struct, WordDecoder *mime.WordDecoder +pkg net/smtp, method (*Client) TLSConnectionState() (tls.ConnectionState, bool) +pkg net/url, method (*URL) EscapedPath() string +pkg net/url, type URL struct, RawPath string +pkg os, func LookupEnv(string) (string, bool) +pkg os/signal, func Ignore(...os.Signal) +pkg os/signal, func Reset(...os.Signal) +pkg reflect, func ArrayOf(int, Type) Type +pkg reflect, func FuncOf([]Type, []Type, bool) Type +pkg runtime, func ReadTrace() []uint8 +pkg runtime, func StartTrace() error +pkg runtime, func StopTrace() +pkg runtime/trace, func Start(io.Writer) error +pkg runtime/trace, func Stop() +pkg strings, func Compare(string, string) int +pkg strings, func LastIndexByte(string, uint8) int +pkg strings, method (*Reader) Size() int64 +pkg syscall (darwin-386), type SysProcAttr struct, Ctty int +pkg syscall (darwin-386), type SysProcAttr struct, Foreground bool +pkg syscall (darwin-386), type SysProcAttr struct, Pgid int +pkg syscall (darwin-386-cgo), type SysProcAttr struct, Ctty int +pkg syscall (darwin-386-cgo), type SysProcAttr struct, Foreground bool +pkg syscall (darwin-386-cgo), type SysProcAttr struct, Pgid int +pkg syscall (darwin-amd64), type SysProcAttr struct, Ctty int +pkg syscall (darwin-amd64), type SysProcAttr struct, Foreground bool +pkg syscall (darwin-amd64), type SysProcAttr struct, Pgid int +pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Ctty int +pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Foreground bool +pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Pgid int +pkg syscall (freebsd-386), type SysProcAttr struct, Ctty int +pkg syscall (freebsd-386), type SysProcAttr struct, Foreground bool +pkg syscall (freebsd-386), type SysProcAttr struct, Pgid int +pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Ctty int +pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Foreground bool +pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Pgid int +pkg syscall (freebsd-amd64), type SysProcAttr struct, Ctty int +pkg syscall (freebsd-amd64), type SysProcAttr struct, Foreground bool +pkg syscall (freebsd-amd64), type SysProcAttr struct, Pgid int +pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Ctty int +pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Foreground bool +pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Pgid int +pkg syscall (freebsd-arm), type SysProcAttr struct, Ctty int +pkg syscall (freebsd-arm), type SysProcAttr struct, Foreground bool +pkg syscall (freebsd-arm), type SysProcAttr struct, Pgid int +pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Ctty int +pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Foreground bool +pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Pgid int +pkg syscall (linux-386), type SysProcAttr struct, Foreground bool +pkg syscall (linux-386), type SysProcAttr struct, GidMappingsEnableSetgroups bool +pkg syscall (linux-386), type SysProcAttr struct, Pgid int +pkg syscall (linux-386-cgo), type SysProcAttr struct, Foreground bool +pkg syscall (linux-386-cgo), type SysProcAttr struct, GidMappingsEnableSetgroups bool +pkg syscall (linux-386-cgo), type SysProcAttr struct, Pgid int +pkg syscall (linux-amd64), type SysProcAttr struct, Foreground bool +pkg syscall (linux-amd64), type SysProcAttr struct, GidMappingsEnableSetgroups bool +pkg syscall (linux-amd64), type SysProcAttr struct, Pgid int +pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Foreground bool +pkg syscall (linux-amd64-cgo), type SysProcAttr struct, GidMappingsEnableSetgroups bool +pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Pgid int +pkg syscall (linux-arm), type SysProcAttr struct, Foreground bool +pkg syscall (linux-arm), type SysProcAttr struct, GidMappingsEnableSetgroups bool +pkg syscall (linux-arm), type SysProcAttr struct, Pgid int +pkg syscall (linux-arm-cgo), type SysProcAttr struct, Foreground bool +pkg syscall (linux-arm-cgo), type SysProcAttr struct, GidMappingsEnableSetgroups bool +pkg syscall (linux-arm-cgo), type SysProcAttr struct, Pgid int +pkg syscall (netbsd-386), type SysProcAttr struct, Ctty int +pkg syscall (netbsd-386), type SysProcAttr struct, Foreground bool +pkg syscall (netbsd-386), type SysProcAttr struct, Pgid int +pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Ctty int +pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Foreground bool +pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Pgid int +pkg syscall (netbsd-amd64), type SysProcAttr struct, Ctty int +pkg syscall (netbsd-amd64), type SysProcAttr struct, Foreground bool +pkg syscall (netbsd-amd64), type SysProcAttr struct, Pgid int +pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Ctty int +pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Foreground bool +pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Pgid int +pkg syscall (netbsd-arm), type SysProcAttr struct, Ctty int +pkg syscall (netbsd-arm), type SysProcAttr struct, Foreground bool +pkg syscall (netbsd-arm), type SysProcAttr struct, Pgid int +pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Ctty int +pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Foreground bool +pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Pgid int +pkg syscall (openbsd-386), type SysProcAttr struct, Ctty int +pkg syscall (openbsd-386), type SysProcAttr struct, Foreground bool +pkg syscall (openbsd-386), type SysProcAttr struct, Pgid int +pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Ctty int +pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Foreground bool +pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Pgid int +pkg syscall (openbsd-amd64), type SysProcAttr struct, Ctty int +pkg syscall (openbsd-amd64), type SysProcAttr struct, Foreground bool +pkg syscall (openbsd-amd64), type SysProcAttr struct, Pgid int +pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Ctty int +pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Foreground bool +pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Pgid int +pkg text/template, method (*Template) DefinedTemplates() string +pkg text/template, method (*Template) Option(...string) *Template +pkg time, method (Time) AppendFormat([]uint8, string) []uint8 +pkg unicode, const Version = "8.0.0" +pkg unicode, var Ahom *RangeTable +pkg unicode, var Anatolian_Hieroglyphs *RangeTable +pkg unicode, var Hatran *RangeTable +pkg unicode, var Multani *RangeTable +pkg unicode, var Old_Hungarian *RangeTable +pkg unicode, var SignWriting *RangeTable diff --git a/api/next.txt b/api/next.txt index 7fa2508b8b..e69de29bb2 100644 --- a/api/next.txt +++ b/api/next.txt @@ -1,957 +0,0 @@ -pkg archive/zip, method (*Writer) SetOffset(int64) -pkg bufio, method (*Reader) Discard(int) (int, error) -pkg bufio, method (ReadWriter) Discard(int) (int, error) -pkg bytes, func LastIndexByte([]uint8, uint8) int -pkg bytes, method (*Buffer) Cap() int -pkg bytes, method (*Reader) Size() int64 -pkg crypto, type Decrypter interface { Decrypt, Public } -pkg crypto, type Decrypter interface, Decrypt(io.Reader, []uint8, DecrypterOpts) ([]uint8, error) -pkg crypto, type Decrypter interface, Public() PublicKey -pkg crypto, type DecrypterOpts interface {} -pkg crypto/elliptic, type CurveParams struct, Name string -pkg crypto/rsa, method (*PrivateKey) Decrypt(io.Reader, []uint8, crypto.DecrypterOpts) ([]uint8, error) -pkg crypto/rsa, type OAEPOptions struct -pkg crypto/rsa, type OAEPOptions struct, Hash crypto.Hash -pkg crypto/rsa, type OAEPOptions struct, Label []uint8 -pkg crypto/rsa, type PKCS1v15DecryptOptions struct -pkg crypto/rsa, type PKCS1v15DecryptOptions struct, SessionKeyLen int -pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 49196 -pkg crypto/tls, const TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 uint16 -pkg crypto/tls, const TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 49200 -pkg crypto/tls, const TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 uint16 -pkg crypto/tls, method (*Config) SetSessionTicketKeys([][32]uint8) -pkg crypto/tls, type Certificate struct, SignedCertificateTimestamps [][]uint8 -pkg crypto/tls, type ConnectionState struct, OCSPResponse []uint8 -pkg crypto/tls, type ConnectionState struct, SignedCertificateTimestamps [][]uint8 -pkg crypto/x509, method (*CertificateRequest) CheckSignature() error -pkg crypto/x509, type Certificate struct, UnhandledCriticalExtensions []asn1.ObjectIdentifier -pkg crypto/x509/pkix, type Name struct, ExtraNames []AttributeTypeAndValue -pkg database/sql, method (*DB) Stats() DBStats -pkg database/sql, type DBStats struct -pkg database/sql, type DBStats struct, OpenConnections int -pkg debug/dwarf, const ClassAddress = 1 -pkg debug/dwarf, const ClassAddress Class -pkg debug/dwarf, const ClassBlock = 2 -pkg debug/dwarf, const ClassBlock Class -pkg debug/dwarf, const ClassConstant = 3 -pkg debug/dwarf, const ClassConstant Class -pkg debug/dwarf, const ClassExprLoc = 4 -pkg debug/dwarf, const ClassExprLoc Class -pkg debug/dwarf, const ClassFlag = 5 -pkg debug/dwarf, const ClassFlag Class -pkg debug/dwarf, const ClassLinePtr = 6 -pkg debug/dwarf, const ClassLinePtr Class -pkg debug/dwarf, const ClassLocListPtr = 7 -pkg debug/dwarf, const ClassLocListPtr Class -pkg debug/dwarf, const ClassMacPtr = 8 -pkg debug/dwarf, const ClassMacPtr Class -pkg debug/dwarf, const ClassRangeListPtr = 9 -pkg debug/dwarf, const ClassRangeListPtr Class -pkg debug/dwarf, const ClassReference = 10 -pkg debug/dwarf, const ClassReference Class -pkg debug/dwarf, const ClassReferenceAlt = 13 -pkg debug/dwarf, const ClassReferenceAlt Class -pkg debug/dwarf, const ClassReferenceSig = 11 -pkg debug/dwarf, const ClassReferenceSig Class -pkg debug/dwarf, const ClassString = 12 -pkg debug/dwarf, const ClassString Class -pkg debug/dwarf, const ClassStringAlt = 14 -pkg debug/dwarf, const ClassStringAlt Class -pkg debug/dwarf, method (*Data) LineReader(*Entry) (*LineReader, error) -pkg debug/dwarf, method (*Entry) AttrField(Attr) *Field -pkg debug/dwarf, method (*LineReader) Next(*LineEntry) error -pkg debug/dwarf, method (*LineReader) Reset() -pkg debug/dwarf, method (*LineReader) Seek(LineReaderPos) -pkg debug/dwarf, method (*LineReader) SeekPC(uint64, *LineEntry) error -pkg debug/dwarf, method (*LineReader) Tell() LineReaderPos -pkg debug/dwarf, method (*Reader) AddressSize() int -pkg debug/dwarf, method (Class) GoString() string -pkg debug/dwarf, method (Class) String() string -pkg debug/dwarf, type Class int -pkg debug/dwarf, type Field struct, Class Class -pkg debug/dwarf, type LineEntry struct -pkg debug/dwarf, type LineEntry struct, Address uint64 -pkg debug/dwarf, type LineEntry struct, BasicBlock bool -pkg debug/dwarf, type LineEntry struct, Column int -pkg debug/dwarf, type LineEntry struct, Discriminator int -pkg debug/dwarf, type LineEntry struct, EndSequence bool -pkg debug/dwarf, type LineEntry struct, EpilogueBegin bool -pkg debug/dwarf, type LineEntry struct, File *LineFile -pkg debug/dwarf, type LineEntry struct, ISA int -pkg debug/dwarf, type LineEntry struct, IsStmt bool -pkg debug/dwarf, type LineEntry struct, Line int -pkg debug/dwarf, type LineEntry struct, OpIndex int -pkg debug/dwarf, type LineEntry struct, PrologueEnd bool -pkg debug/dwarf, type LineFile struct -pkg debug/dwarf, type LineFile struct, Length int -pkg debug/dwarf, type LineFile struct, Mtime uint64 -pkg debug/dwarf, type LineFile struct, Name string -pkg debug/dwarf, type LineReader struct -pkg debug/dwarf, type LineReaderPos struct -pkg debug/dwarf, var ErrUnknownPC error -pkg debug/elf, const R_PPC64_ADDR14 = 7 -pkg debug/elf, const R_PPC64_ADDR14 R_PPC64 -pkg debug/elf, const R_PPC64_ADDR14_BRNTAKEN = 9 -pkg debug/elf, const R_PPC64_ADDR14_BRNTAKEN R_PPC64 -pkg debug/elf, const R_PPC64_ADDR14_BRTAKEN = 8 -pkg debug/elf, const R_PPC64_ADDR14_BRTAKEN R_PPC64 -pkg debug/elf, const R_PPC64_ADDR16 = 3 -pkg debug/elf, const R_PPC64_ADDR16 R_PPC64 -pkg debug/elf, const R_PPC64_ADDR16_DS = 56 -pkg debug/elf, const R_PPC64_ADDR16_DS R_PPC64 -pkg debug/elf, const R_PPC64_ADDR16_HA = 6 -pkg debug/elf, const R_PPC64_ADDR16_HA R_PPC64 -pkg debug/elf, const R_PPC64_ADDR16_HI = 5 -pkg debug/elf, const R_PPC64_ADDR16_HI R_PPC64 -pkg debug/elf, const R_PPC64_ADDR16_HIGHER = 39 -pkg debug/elf, const R_PPC64_ADDR16_HIGHER R_PPC64 -pkg debug/elf, const R_PPC64_ADDR16_HIGHERA = 40 -pkg debug/elf, const R_PPC64_ADDR16_HIGHERA R_PPC64 -pkg debug/elf, const R_PPC64_ADDR16_HIGHEST = 41 -pkg debug/elf, const R_PPC64_ADDR16_HIGHEST R_PPC64 -pkg debug/elf, const R_PPC64_ADDR16_HIGHESTA = 42 -pkg debug/elf, const R_PPC64_ADDR16_HIGHESTA R_PPC64 -pkg debug/elf, const R_PPC64_ADDR16_LO = 4 -pkg debug/elf, const R_PPC64_ADDR16_LO R_PPC64 -pkg debug/elf, const R_PPC64_ADDR16_LO_DS = 57 -pkg debug/elf, const R_PPC64_ADDR16_LO_DS R_PPC64 -pkg debug/elf, const R_PPC64_ADDR24 = 2 -pkg debug/elf, const R_PPC64_ADDR24 R_PPC64 -pkg debug/elf, const R_PPC64_ADDR32 = 1 -pkg debug/elf, const R_PPC64_ADDR32 R_PPC64 -pkg debug/elf, const R_PPC64_ADDR64 = 38 -pkg debug/elf, const R_PPC64_ADDR64 R_PPC64 -pkg debug/elf, const R_PPC64_DTPMOD64 = 68 -pkg debug/elf, const R_PPC64_DTPMOD64 R_PPC64 -pkg debug/elf, const R_PPC64_DTPREL16 = 74 -pkg debug/elf, const R_PPC64_DTPREL16 R_PPC64 -pkg debug/elf, const R_PPC64_DTPREL16_DS = 101 -pkg debug/elf, const R_PPC64_DTPREL16_DS R_PPC64 -pkg debug/elf, const R_PPC64_DTPREL16_HA = 77 -pkg debug/elf, const R_PPC64_DTPREL16_HA R_PPC64 -pkg debug/elf, const R_PPC64_DTPREL16_HI = 76 -pkg debug/elf, const R_PPC64_DTPREL16_HI R_PPC64 -pkg debug/elf, const R_PPC64_DTPREL16_HIGHER = 103 -pkg debug/elf, const R_PPC64_DTPREL16_HIGHER R_PPC64 -pkg debug/elf, const R_PPC64_DTPREL16_HIGHERA = 104 -pkg debug/elf, const R_PPC64_DTPREL16_HIGHERA R_PPC64 -pkg debug/elf, const R_PPC64_DTPREL16_HIGHEST = 105 -pkg debug/elf, const R_PPC64_DTPREL16_HIGHEST R_PPC64 -pkg debug/elf, const R_PPC64_DTPREL16_HIGHESTA = 106 -pkg debug/elf, const R_PPC64_DTPREL16_HIGHESTA R_PPC64 -pkg debug/elf, const R_PPC64_DTPREL16_LO = 75 -pkg debug/elf, const R_PPC64_DTPREL16_LO R_PPC64 -pkg debug/elf, const R_PPC64_DTPREL16_LO_DS = 102 -pkg debug/elf, const R_PPC64_DTPREL16_LO_DS R_PPC64 -pkg debug/elf, const R_PPC64_DTPREL64 = 78 -pkg debug/elf, const R_PPC64_DTPREL64 R_PPC64 -pkg debug/elf, const R_PPC64_GOT16 = 14 -pkg debug/elf, const R_PPC64_GOT16 R_PPC64 -pkg debug/elf, const R_PPC64_GOT16_DS = 58 -pkg debug/elf, const R_PPC64_GOT16_DS R_PPC64 -pkg debug/elf, const R_PPC64_GOT16_HA = 17 -pkg debug/elf, const R_PPC64_GOT16_HA R_PPC64 -pkg debug/elf, const R_PPC64_GOT16_HI = 16 -pkg debug/elf, const R_PPC64_GOT16_HI R_PPC64 -pkg debug/elf, const R_PPC64_GOT16_LO = 15 -pkg debug/elf, const R_PPC64_GOT16_LO R_PPC64 -pkg debug/elf, const R_PPC64_GOT16_LO_DS = 59 -pkg debug/elf, const R_PPC64_GOT16_LO_DS R_PPC64 -pkg debug/elf, const R_PPC64_GOT_DTPREL16_DS = 91 -pkg debug/elf, const R_PPC64_GOT_DTPREL16_DS R_PPC64 -pkg debug/elf, const R_PPC64_GOT_DTPREL16_HA = 94 -pkg debug/elf, const R_PPC64_GOT_DTPREL16_HA R_PPC64 -pkg debug/elf, const R_PPC64_GOT_DTPREL16_HI = 93 -pkg debug/elf, const R_PPC64_GOT_DTPREL16_HI R_PPC64 -pkg debug/elf, const R_PPC64_GOT_DTPREL16_LO_DS = 92 -pkg debug/elf, const R_PPC64_GOT_DTPREL16_LO_DS R_PPC64 -pkg debug/elf, const R_PPC64_GOT_TLSGD16 = 79 -pkg debug/elf, const R_PPC64_GOT_TLSGD16 R_PPC64 -pkg debug/elf, const R_PPC64_GOT_TLSGD16_HA = 82 -pkg debug/elf, const R_PPC64_GOT_TLSGD16_HA R_PPC64 -pkg debug/elf, const R_PPC64_GOT_TLSGD16_HI = 81 -pkg debug/elf, const R_PPC64_GOT_TLSGD16_HI R_PPC64 -pkg debug/elf, const R_PPC64_GOT_TLSGD16_LO = 80 -pkg debug/elf, const R_PPC64_GOT_TLSGD16_LO R_PPC64 -pkg debug/elf, const R_PPC64_GOT_TLSLD16 = 83 -pkg debug/elf, const R_PPC64_GOT_TLSLD16 R_PPC64 -pkg debug/elf, const R_PPC64_GOT_TLSLD16_HA = 86 -pkg debug/elf, const R_PPC64_GOT_TLSLD16_HA R_PPC64 -pkg debug/elf, const R_PPC64_GOT_TLSLD16_HI = 85 -pkg debug/elf, const R_PPC64_GOT_TLSLD16_HI R_PPC64 -pkg debug/elf, const R_PPC64_GOT_TLSLD16_LO = 84 -pkg debug/elf, const R_PPC64_GOT_TLSLD16_LO R_PPC64 -pkg debug/elf, const R_PPC64_GOT_TPREL16_DS = 87 -pkg debug/elf, const R_PPC64_GOT_TPREL16_DS R_PPC64 -pkg debug/elf, const R_PPC64_GOT_TPREL16_HA = 90 -pkg debug/elf, const R_PPC64_GOT_TPREL16_HA R_PPC64 -pkg debug/elf, const R_PPC64_GOT_TPREL16_HI = 89 -pkg debug/elf, const R_PPC64_GOT_TPREL16_HI R_PPC64 -pkg debug/elf, const R_PPC64_GOT_TPREL16_LO_DS = 88 -pkg debug/elf, const R_PPC64_GOT_TPREL16_LO_DS R_PPC64 -pkg debug/elf, const R_PPC64_JMP_SLOT = 21 -pkg debug/elf, const R_PPC64_JMP_SLOT R_PPC64 -pkg debug/elf, const R_PPC64_NONE = 0 -pkg debug/elf, const R_PPC64_NONE R_PPC64 -pkg debug/elf, const R_PPC64_REL14 = 11 -pkg debug/elf, const R_PPC64_REL14 R_PPC64 -pkg debug/elf, const R_PPC64_REL14_BRNTAKEN = 13 -pkg debug/elf, const R_PPC64_REL14_BRNTAKEN R_PPC64 -pkg debug/elf, const R_PPC64_REL14_BRTAKEN = 12 -pkg debug/elf, const R_PPC64_REL14_BRTAKEN R_PPC64 -pkg debug/elf, const R_PPC64_REL16 = 249 -pkg debug/elf, const R_PPC64_REL16 R_PPC64 -pkg debug/elf, const R_PPC64_REL16_HA = 252 -pkg debug/elf, const R_PPC64_REL16_HA R_PPC64 -pkg debug/elf, const R_PPC64_REL16_HI = 251 -pkg debug/elf, const R_PPC64_REL16_HI R_PPC64 -pkg debug/elf, const R_PPC64_REL16_LO = 250 -pkg debug/elf, const R_PPC64_REL16_LO R_PPC64 -pkg debug/elf, const R_PPC64_REL24 = 10 -pkg debug/elf, const R_PPC64_REL24 R_PPC64 -pkg debug/elf, const R_PPC64_REL32 = 26 -pkg debug/elf, const R_PPC64_REL32 R_PPC64 -pkg debug/elf, const R_PPC64_REL64 = 44 -pkg debug/elf, const R_PPC64_REL64 R_PPC64 -pkg debug/elf, const R_PPC64_TLS = 67 -pkg debug/elf, const R_PPC64_TLS R_PPC64 -pkg debug/elf, const R_PPC64_TLSGD = 107 -pkg debug/elf, const R_PPC64_TLSGD R_PPC64 -pkg debug/elf, const R_PPC64_TLSLD = 108 -pkg debug/elf, const R_PPC64_TLSLD R_PPC64 -pkg debug/elf, const R_PPC64_TOC = 51 -pkg debug/elf, const R_PPC64_TOC R_PPC64 -pkg debug/elf, const R_PPC64_TOC16 = 47 -pkg debug/elf, const R_PPC64_TOC16 R_PPC64 -pkg debug/elf, const R_PPC64_TOC16_DS = 63 -pkg debug/elf, const R_PPC64_TOC16_DS R_PPC64 -pkg debug/elf, const R_PPC64_TOC16_HA = 50 -pkg debug/elf, const R_PPC64_TOC16_HA R_PPC64 -pkg debug/elf, const R_PPC64_TOC16_HI = 49 -pkg debug/elf, const R_PPC64_TOC16_HI R_PPC64 -pkg debug/elf, const R_PPC64_TOC16_LO = 48 -pkg debug/elf, const R_PPC64_TOC16_LO R_PPC64 -pkg debug/elf, const R_PPC64_TOC16_LO_DS = 64 -pkg debug/elf, const R_PPC64_TOC16_LO_DS R_PPC64 -pkg debug/elf, const R_PPC64_TPREL16 = 69 -pkg debug/elf, const R_PPC64_TPREL16 R_PPC64 -pkg debug/elf, const R_PPC64_TPREL16_DS = 95 -pkg debug/elf, const R_PPC64_TPREL16_DS R_PPC64 -pkg debug/elf, const R_PPC64_TPREL16_HA = 72 -pkg debug/elf, const R_PPC64_TPREL16_HA R_PPC64 -pkg debug/elf, const R_PPC64_TPREL16_HI = 71 -pkg debug/elf, const R_PPC64_TPREL16_HI R_PPC64 -pkg debug/elf, const R_PPC64_TPREL16_HIGHER = 97 -pkg debug/elf, const R_PPC64_TPREL16_HIGHER R_PPC64 -pkg debug/elf, const R_PPC64_TPREL16_HIGHERA = 98 -pkg debug/elf, const R_PPC64_TPREL16_HIGHERA R_PPC64 -pkg debug/elf, const R_PPC64_TPREL16_HIGHEST = 99 -pkg debug/elf, const R_PPC64_TPREL16_HIGHEST R_PPC64 -pkg debug/elf, const R_PPC64_TPREL16_HIGHESTA = 100 -pkg debug/elf, const R_PPC64_TPREL16_HIGHESTA R_PPC64 -pkg debug/elf, const R_PPC64_TPREL16_LO = 70 -pkg debug/elf, const R_PPC64_TPREL16_LO R_PPC64 -pkg debug/elf, const R_PPC64_TPREL16_LO_DS = 96 -pkg debug/elf, const R_PPC64_TPREL16_LO_DS R_PPC64 -pkg debug/elf, const R_PPC64_TPREL64 = 73 -pkg debug/elf, const R_PPC64_TPREL64 R_PPC64 -pkg debug/elf, method (R_PPC64) GoString() string -pkg debug/elf, method (R_PPC64) String() string -pkg debug/elf, type R_PPC64 int -pkg encoding/base64, const NoPadding = -1 -pkg encoding/base64, const NoPadding int32 -pkg encoding/base64, const StdPadding = 61 -pkg encoding/base64, const StdPadding int32 -pkg encoding/base64, method (Encoding) WithPadding(int32) *Encoding -pkg encoding/base64, var RawStdEncoding *Encoding -pkg encoding/base64, var RawURLEncoding *Encoding -pkg encoding/json, type UnmarshalTypeError struct, Offset int64 -pkg flag, func UnquoteUsage(*Flag) (string, string) -pkg go/ast, type EmptyStmt struct, Implicit bool -pkg go/build, type Package struct, PkgTargetRoot string -pkg go/constant, const Bool = 1 -pkg go/constant, const Bool Kind -pkg go/constant, const Complex = 5 -pkg go/constant, const Complex Kind -pkg go/constant, const Float = 4 -pkg go/constant, const Float Kind -pkg go/constant, const Int = 3 -pkg go/constant, const Int Kind -pkg go/constant, const String = 2 -pkg go/constant, const String Kind -pkg go/constant, const Unknown = 0 -pkg go/constant, const Unknown Kind -pkg go/constant, func BinaryOp(Value, token.Token, Value) Value -pkg go/constant, func BitLen(Value) int -pkg go/constant, func BoolVal(Value) bool -pkg go/constant, func Bytes(Value) []uint8 -pkg go/constant, func Compare(Value, token.Token, Value) bool -pkg go/constant, func Denom(Value) Value -pkg go/constant, func Float32Val(Value) (float32, bool) -pkg go/constant, func Float64Val(Value) (float64, bool) -pkg go/constant, func Imag(Value) Value -pkg go/constant, func Int64Val(Value) (int64, bool) -pkg go/constant, func MakeBool(bool) Value -pkg go/constant, func MakeFloat64(float64) Value -pkg go/constant, func MakeFromBytes([]uint8) Value -pkg go/constant, func MakeFromLiteral(string, token.Token, uint) Value -pkg go/constant, func MakeImag(Value) Value -pkg go/constant, func MakeInt64(int64) Value -pkg go/constant, func MakeString(string) Value -pkg go/constant, func MakeUint64(uint64) Value -pkg go/constant, func MakeUnknown() Value -pkg go/constant, func Num(Value) Value -pkg go/constant, func Real(Value) Value -pkg go/constant, func Shift(Value, token.Token, uint) Value -pkg go/constant, func Sign(Value) int -pkg go/constant, func StringVal(Value) string -pkg go/constant, func Uint64Val(Value) (uint64, bool) -pkg go/constant, func UnaryOp(token.Token, Value, uint) Value -pkg go/constant, type Kind int -pkg go/constant, type Value interface, Kind() Kind -pkg go/constant, type Value interface, String() string -pkg go/constant, type Value interface, unexported methods -pkg go/importer, func Default() types.Importer -pkg go/importer, func For(string, Lookup) types.Importer -pkg go/importer, type Lookup func(string) (io.ReadCloser, error) -pkg go/types, const Bool = 1 -pkg go/types, const Bool BasicKind -pkg go/types, const Byte = 8 -pkg go/types, const Byte BasicKind -pkg go/types, const Complex128 = 16 -pkg go/types, const Complex128 BasicKind -pkg go/types, const Complex64 = 15 -pkg go/types, const Complex64 BasicKind -pkg go/types, const FieldVal = 0 -pkg go/types, const FieldVal SelectionKind -pkg go/types, const Float32 = 13 -pkg go/types, const Float32 BasicKind -pkg go/types, const Float64 = 14 -pkg go/types, const Float64 BasicKind -pkg go/types, const Int = 2 -pkg go/types, const Int BasicKind -pkg go/types, const Int16 = 4 -pkg go/types, const Int16 BasicKind -pkg go/types, const Int32 = 5 -pkg go/types, const Int32 BasicKind -pkg go/types, const Int64 = 6 -pkg go/types, const Int64 BasicKind -pkg go/types, const Int8 = 3 -pkg go/types, const Int8 BasicKind -pkg go/types, const Invalid = 0 -pkg go/types, const Invalid BasicKind -pkg go/types, const IsBoolean = 1 -pkg go/types, const IsBoolean BasicInfo -pkg go/types, const IsComplex = 16 -pkg go/types, const IsComplex BasicInfo -pkg go/types, const IsConstType = 59 -pkg go/types, const IsConstType BasicInfo -pkg go/types, const IsFloat = 8 -pkg go/types, const IsFloat BasicInfo -pkg go/types, const IsInteger = 2 -pkg go/types, const IsInteger BasicInfo -pkg go/types, const IsNumeric = 26 -pkg go/types, const IsNumeric BasicInfo -pkg go/types, const IsOrdered = 42 -pkg go/types, const IsOrdered BasicInfo -pkg go/types, const IsString = 32 -pkg go/types, const IsString BasicInfo -pkg go/types, const IsUnsigned = 4 -pkg go/types, const IsUnsigned BasicInfo -pkg go/types, const IsUntyped = 64 -pkg go/types, const IsUntyped BasicInfo -pkg go/types, const MethodExpr = 2 -pkg go/types, const MethodExpr SelectionKind -pkg go/types, const MethodVal = 1 -pkg go/types, const MethodVal SelectionKind -pkg go/types, const RecvOnly = 2 -pkg go/types, const RecvOnly ChanDir -pkg go/types, const Rune = 5 -pkg go/types, const Rune BasicKind -pkg go/types, const SendOnly = 1 -pkg go/types, const SendOnly ChanDir -pkg go/types, const SendRecv = 0 -pkg go/types, const SendRecv ChanDir -pkg go/types, const String = 17 -pkg go/types, const String BasicKind -pkg go/types, const Uint = 7 -pkg go/types, const Uint BasicKind -pkg go/types, const Uint16 = 9 -pkg go/types, const Uint16 BasicKind -pkg go/types, const Uint32 = 10 -pkg go/types, const Uint32 BasicKind -pkg go/types, const Uint64 = 11 -pkg go/types, const Uint64 BasicKind -pkg go/types, const Uint8 = 8 -pkg go/types, const Uint8 BasicKind -pkg go/types, const Uintptr = 12 -pkg go/types, const Uintptr BasicKind -pkg go/types, const UnsafePointer = 18 -pkg go/types, const UnsafePointer BasicKind -pkg go/types, const UntypedBool = 19 -pkg go/types, const UntypedBool BasicKind -pkg go/types, const UntypedComplex = 23 -pkg go/types, const UntypedComplex BasicKind -pkg go/types, const UntypedFloat = 22 -pkg go/types, const UntypedFloat BasicKind -pkg go/types, const UntypedInt = 20 -pkg go/types, const UntypedInt BasicKind -pkg go/types, const UntypedNil = 25 -pkg go/types, const UntypedNil BasicKind -pkg go/types, const UntypedRune = 21 -pkg go/types, const UntypedRune BasicKind -pkg go/types, const UntypedString = 24 -pkg go/types, const UntypedString BasicKind -pkg go/types, func AssertableTo(*Interface, Type) bool -pkg go/types, func AssignableTo(Type, Type) bool -pkg go/types, func Check(string, *token.FileSet, []*ast.File) (*Package, error) -pkg go/types, func Comparable(Type) bool -pkg go/types, func ConvertibleTo(Type, Type) bool -pkg go/types, func DefPredeclaredTestFuncs() -pkg go/types, func Eval(string, *Package, *Scope) (TypeAndValue, error) -pkg go/types, func EvalNode(*token.FileSet, ast.Expr, *Package, *Scope) (TypeAndValue, error) -pkg go/types, func ExprString(ast.Expr) string -pkg go/types, func Id(*Package, string) string -pkg go/types, func Identical(Type, Type) bool -pkg go/types, func Implements(Type, *Interface) bool -pkg go/types, func IsInterface(Type) bool -pkg go/types, func LookupFieldOrMethod(Type, bool, *Package, string) (Object, []int, bool) -pkg go/types, func MissingMethod(Type, *Interface, bool) (*Func, bool) -pkg go/types, func New(string) Type -pkg go/types, func NewArray(Type, int64) *Array -pkg go/types, func NewChan(ChanDir, Type) *Chan -pkg go/types, func NewChecker(*Config, *token.FileSet, *Package, *Info) *Checker -pkg go/types, func NewConst(token.Pos, *Package, string, Type, constant.Value) *Const -pkg go/types, func NewConst(token.Pos, *Package, string, Type, exact.Value) *Const -pkg go/types, func NewField(token.Pos, *Package, string, Type, bool) *Var -pkg go/types, func NewFunc(token.Pos, *Package, string, *Signature) *Func -pkg go/types, func NewInterface([]*Func, []*Named) *Interface -pkg go/types, func NewLabel(token.Pos, *Package, string) *Label -pkg go/types, func NewMap(Type, Type) *Map -pkg go/types, func NewMethodSet(Type) *MethodSet -pkg go/types, func NewNamed(*TypeName, Type, []*Func) *Named -pkg go/types, func NewPackage(string, string) *Package -pkg go/types, func NewParam(token.Pos, *Package, string, Type) *Var -pkg go/types, func NewPkgName(token.Pos, *Package, string, *Package) *PkgName -pkg go/types, func NewPointer(Type) *Pointer -pkg go/types, func NewScope(*Scope, string) *Scope -pkg go/types, func NewSignature(*Scope, *Var, *Tuple, *Tuple, bool) *Signature -pkg go/types, func NewSlice(Type) *Slice -pkg go/types, func NewStruct([]*Var, []string) *Struct -pkg go/types, func NewTuple(...*Var) *Tuple -pkg go/types, func NewTypeName(token.Pos, *Package, string, Type) *TypeName -pkg go/types, func NewVar(token.Pos, *Package, string, Type) *Var -pkg go/types, func ObjectString(*Package, Object) string -pkg go/types, func SelectionString(*Package, *Selection) string -pkg go/types, func TypeString(*Package, Type) string -pkg go/types, func WriteExpr(*bytes.Buffer, ast.Expr) -pkg go/types, func WriteSignature(*bytes.Buffer, *Package, *Signature) -pkg go/types, func WriteType(*bytes.Buffer, *Package, Type) -pkg go/types, method (*Array) Elem() Type -pkg go/types, method (*Array) Len() int64 -pkg go/types, method (*Array) String() string -pkg go/types, method (*Array) Underlying() Type -pkg go/types, method (*Basic) Info() BasicInfo -pkg go/types, method (*Basic) Kind() BasicKind -pkg go/types, method (*Basic) Name() string -pkg go/types, method (*Basic) String() string -pkg go/types, method (*Basic) Underlying() Type -pkg go/types, method (*Builtin) Exported() bool -pkg go/types, method (*Builtin) Id() string -pkg go/types, method (*Builtin) Name() string -pkg go/types, method (*Builtin) Parent() *Scope -pkg go/types, method (*Builtin) Pkg() *Package -pkg go/types, method (*Builtin) Pos() token.Pos -pkg go/types, method (*Builtin) String() string -pkg go/types, method (*Builtin) Type() Type -pkg go/types, method (*Chan) Dir() ChanDir -pkg go/types, method (*Chan) Elem() Type -pkg go/types, method (*Chan) String() string -pkg go/types, method (*Chan) Underlying() Type -pkg go/types, method (*Checker) Files([]*ast.File) error -pkg go/types, method (*Config) Check(string, *token.FileSet, []*ast.File, *Info) (*Package, error) -pkg go/types, method (*Const) Exported() bool -pkg go/types, method (*Const) Id() string -pkg go/types, method (*Const) Name() string -pkg go/types, method (*Const) Parent() *Scope -pkg go/types, method (*Const) Pkg() *Package -pkg go/types, method (*Const) Pos() token.Pos -pkg go/types, method (*Const) String() string -pkg go/types, method (*Const) Type() Type -pkg go/types, method (*Const) Val() constant.Value -pkg go/types, method (*Const) Val() exact.Value -pkg go/types, method (*Func) Exported() bool -pkg go/types, method (*Func) FullName() string -pkg go/types, method (*Func) Id() string -pkg go/types, method (*Func) Name() string -pkg go/types, method (*Func) Parent() *Scope -pkg go/types, method (*Func) Pkg() *Package -pkg go/types, method (*Func) Pos() token.Pos -pkg go/types, method (*Func) Scope() *Scope -pkg go/types, method (*Func) String() string -pkg go/types, method (*Func) Type() Type -pkg go/types, method (*Info) ObjectOf(*ast.Ident) Object -pkg go/types, method (*Info) TypeOf(ast.Expr) Type -pkg go/types, method (*Initializer) String() string -pkg go/types, method (*Interface) Complete() *Interface -pkg go/types, method (*Interface) Embedded(int) *Named -pkg go/types, method (*Interface) Empty() bool -pkg go/types, method (*Interface) ExplicitMethod(int) *Func -pkg go/types, method (*Interface) Method(int) *Func -pkg go/types, method (*Interface) NumEmbeddeds() int -pkg go/types, method (*Interface) NumExplicitMethods() int -pkg go/types, method (*Interface) NumMethods() int -pkg go/types, method (*Interface) String() string -pkg go/types, method (*Interface) Underlying() Type -pkg go/types, method (*Label) Exported() bool -pkg go/types, method (*Label) Id() string -pkg go/types, method (*Label) Name() string -pkg go/types, method (*Label) Parent() *Scope -pkg go/types, method (*Label) Pkg() *Package -pkg go/types, method (*Label) Pos() token.Pos -pkg go/types, method (*Label) String() string -pkg go/types, method (*Label) Type() Type -pkg go/types, method (*Map) Elem() Type -pkg go/types, method (*Map) Key() Type -pkg go/types, method (*Map) String() string -pkg go/types, method (*Map) Underlying() Type -pkg go/types, method (*MethodSet) At(int) *Selection -pkg go/types, method (*MethodSet) Len() int -pkg go/types, method (*MethodSet) Lookup(*Package, string) *Selection -pkg go/types, method (*MethodSet) String() string -pkg go/types, method (*MethodSetCache) MethodSet(Type) *MethodSet -pkg go/types, method (*Named) AddMethod(*Func) -pkg go/types, method (*Named) Method(int) *Func -pkg go/types, method (*Named) NumMethods() int -pkg go/types, method (*Named) Obj() *TypeName -pkg go/types, method (*Named) SetUnderlying(Type) -pkg go/types, method (*Named) String() string -pkg go/types, method (*Named) Underlying() Type -pkg go/types, method (*Nil) Exported() bool -pkg go/types, method (*Nil) Id() string -pkg go/types, method (*Nil) Name() string -pkg go/types, method (*Nil) Parent() *Scope -pkg go/types, method (*Nil) Pkg() *Package -pkg go/types, method (*Nil) Pos() token.Pos -pkg go/types, method (*Nil) String() string -pkg go/types, method (*Nil) Type() Type -pkg go/types, method (*Package) Complete() bool -pkg go/types, method (*Package) Imports() []*Package -pkg go/types, method (*Package) MarkComplete() -pkg go/types, method (*Package) Name() string -pkg go/types, method (*Package) Path() string -pkg go/types, method (*Package) Scope() *Scope -pkg go/types, method (*Package) SetImports([]*Package) -pkg go/types, method (*Package) String() string -pkg go/types, method (*PkgName) Exported() bool -pkg go/types, method (*PkgName) Id() string -pkg go/types, method (*PkgName) Imported() *Package -pkg go/types, method (*PkgName) Name() string -pkg go/types, method (*PkgName) Parent() *Scope -pkg go/types, method (*PkgName) Pkg() *Package -pkg go/types, method (*PkgName) Pos() token.Pos -pkg go/types, method (*PkgName) String() string -pkg go/types, method (*PkgName) Type() Type -pkg go/types, method (*Pointer) Elem() Type -pkg go/types, method (*Pointer) String() string -pkg go/types, method (*Pointer) Underlying() Type -pkg go/types, method (*Scope) Child(int) *Scope -pkg go/types, method (*Scope) Insert(Object) Object -pkg go/types, method (*Scope) Len() int -pkg go/types, method (*Scope) Lookup(string) Object -pkg go/types, method (*Scope) LookupParent(string) (*Scope, Object) -pkg go/types, method (*Scope) Names() []string -pkg go/types, method (*Scope) NumChildren() int -pkg go/types, method (*Scope) Parent() *Scope -pkg go/types, method (*Scope) String() string -pkg go/types, method (*Scope) WriteTo(io.Writer, int, bool) -pkg go/types, method (*Selection) Index() []int -pkg go/types, method (*Selection) Indirect() bool -pkg go/types, method (*Selection) Kind() SelectionKind -pkg go/types, method (*Selection) Obj() Object -pkg go/types, method (*Selection) Recv() Type -pkg go/types, method (*Selection) String() string -pkg go/types, method (*Selection) Type() Type -pkg go/types, method (*Signature) Params() *Tuple -pkg go/types, method (*Signature) Recv() *Var -pkg go/types, method (*Signature) Results() *Tuple -pkg go/types, method (*Signature) String() string -pkg go/types, method (*Signature) Underlying() Type -pkg go/types, method (*Signature) Variadic() bool -pkg go/types, method (*Slice) Elem() Type -pkg go/types, method (*Slice) String() string -pkg go/types, method (*Slice) Underlying() Type -pkg go/types, method (*StdSizes) Alignof(Type) int64 -pkg go/types, method (*StdSizes) Offsetsof([]*Var) []int64 -pkg go/types, method (*StdSizes) Sizeof(Type) int64 -pkg go/types, method (*Struct) Field(int) *Var -pkg go/types, method (*Struct) NumFields() int -pkg go/types, method (*Struct) String() string -pkg go/types, method (*Struct) Tag(int) string -pkg go/types, method (*Struct) Underlying() Type -pkg go/types, method (*Tuple) At(int) *Var -pkg go/types, method (*Tuple) Len() int -pkg go/types, method (*Tuple) String() string -pkg go/types, method (*Tuple) Underlying() Type -pkg go/types, method (*TypeName) Exported() bool -pkg go/types, method (*TypeName) Id() string -pkg go/types, method (*TypeName) Name() string -pkg go/types, method (*TypeName) Parent() *Scope -pkg go/types, method (*TypeName) Pkg() *Package -pkg go/types, method (*TypeName) Pos() token.Pos -pkg go/types, method (*TypeName) String() string -pkg go/types, method (*TypeName) Type() Type -pkg go/types, method (*Var) Anonymous() bool -pkg go/types, method (*Var) Exported() bool -pkg go/types, method (*Var) Id() string -pkg go/types, method (*Var) IsField() bool -pkg go/types, method (*Var) Name() string -pkg go/types, method (*Var) Parent() *Scope -pkg go/types, method (*Var) Pkg() *Package -pkg go/types, method (*Var) Pos() token.Pos -pkg go/types, method (*Var) String() string -pkg go/types, method (*Var) Type() Type -pkg go/types, method (Checker) ObjectOf(*ast.Ident) Object -pkg go/types, method (Checker) TypeOf(ast.Expr) Type -pkg go/types, method (Error) Error() string -pkg go/types, method (TypeAndValue) Addressable() bool -pkg go/types, method (TypeAndValue) Assignable() bool -pkg go/types, method (TypeAndValue) HasOk() bool -pkg go/types, method (TypeAndValue) IsBuiltin() bool -pkg go/types, method (TypeAndValue) IsNil() bool -pkg go/types, method (TypeAndValue) IsType() bool -pkg go/types, method (TypeAndValue) IsValue() bool -pkg go/types, method (TypeAndValue) IsVoid() bool -pkg go/types, type Array struct -pkg go/types, type Basic struct -pkg go/types, type BasicInfo int -pkg go/types, type BasicKind int -pkg go/types, type Builtin struct -pkg go/types, type Chan struct -pkg go/types, type ChanDir int -pkg go/types, type Checker struct -pkg go/types, type Checker struct, embedded *Info -pkg go/types, type Config struct -pkg go/types, type Config struct, DisableUnusedImportCheck bool -pkg go/types, type Config struct, Error func(error) -pkg go/types, type Config struct, FakeImportC bool -pkg go/types, type Config struct, IgnoreFuncBodies bool -pkg go/types, type Config struct, Import Importer -pkg go/types, type Config struct, Importer Importer -pkg go/types, type Config struct, Packages map[string]*Package -pkg go/types, type Config struct, Sizes Sizes -pkg go/types, type Const struct -pkg go/types, type Error struct -pkg go/types, type Error struct, Fset *token.FileSet -pkg go/types, type Error struct, Msg string -pkg go/types, type Error struct, Pos token.Pos -pkg go/types, type Error struct, Soft bool -pkg go/types, type Func struct -pkg go/types, type Importer func(map[string]*Package, string) (*Package, error) -pkg go/types, type Importer interface { Import } -pkg go/types, type Importer interface, Import(string) (*Package, error) -pkg go/types, type Info struct -pkg go/types, type Info struct, Defs map[*ast.Ident]Object -pkg go/types, type Info struct, Implicits map[ast.Node]Object -pkg go/types, type Info struct, InitOrder []*Initializer -pkg go/types, type Info struct, Scopes map[ast.Node]*Scope -pkg go/types, type Info struct, Selections map[*ast.SelectorExpr]*Selection -pkg go/types, type Info struct, Types map[ast.Expr]TypeAndValue -pkg go/types, type Info struct, Uses map[*ast.Ident]Object -pkg go/types, type Initializer struct -pkg go/types, type Initializer struct, Lhs []*Var -pkg go/types, type Initializer struct, Rhs ast.Expr -pkg go/types, type Interface struct -pkg go/types, type Label struct -pkg go/types, type Map struct -pkg go/types, type MethodSet struct -pkg go/types, type MethodSetCache struct -pkg go/types, type Named struct -pkg go/types, type Nil struct -pkg go/types, type Object interface, Exported() bool -pkg go/types, type Object interface, Id() string -pkg go/types, type Object interface, Name() string -pkg go/types, type Object interface, Parent() *Scope -pkg go/types, type Object interface, Pkg() *Package -pkg go/types, type Object interface, Pos() token.Pos -pkg go/types, type Object interface, String() string -pkg go/types, type Object interface, Type() Type -pkg go/types, type Object interface, unexported methods -pkg go/types, type Package struct -pkg go/types, type PkgName struct -pkg go/types, type Pointer struct -pkg go/types, type Scope struct -pkg go/types, type Selection struct -pkg go/types, type SelectionKind int -pkg go/types, type Signature struct -pkg go/types, type Sizes interface { Alignof, Offsetsof, Sizeof } -pkg go/types, type Sizes interface, Alignof(Type) int64 -pkg go/types, type Sizes interface, Offsetsof([]*Var) []int64 -pkg go/types, type Sizes interface, Sizeof(Type) int64 -pkg go/types, type Slice struct -pkg go/types, type StdSizes struct -pkg go/types, type StdSizes struct, MaxAlign int64 -pkg go/types, type StdSizes struct, WordSize int64 -pkg go/types, type Struct struct -pkg go/types, type Tuple struct -pkg go/types, type Type interface { String, Underlying } -pkg go/types, type Type interface, String() string -pkg go/types, type Type interface, Underlying() Type -pkg go/types, type TypeAndValue struct -pkg go/types, type TypeAndValue struct, Type Type -pkg go/types, type TypeAndValue struct, Value constant.Value -pkg go/types, type TypeAndValue struct, Value exact.Value -pkg go/types, type TypeName struct -pkg go/types, type Var struct -pkg go/types, var DefaultImport Importer -pkg go/types, var GcCompatibilityMode bool -pkg go/types, var Typ [26]*Basic -pkg go/types, var Universe *Scope -pkg go/types, var UniverseByte *Basic -pkg go/types, var UniverseRune *Basic -pkg go/types, var Unsafe *Package -pkg html/template, method (*Template) Option(...string) *Template -pkg image, const YCbCrSubsampleRatio410 = 5 -pkg image, const YCbCrSubsampleRatio410 YCbCrSubsampleRatio -pkg image, const YCbCrSubsampleRatio411 = 4 -pkg image, const YCbCrSubsampleRatio411 YCbCrSubsampleRatio -pkg image, func NewCMYK(Rectangle) *CMYK -pkg image, method (*CMYK) At(int, int) color.Color -pkg image, method (*CMYK) Bounds() Rectangle -pkg image, method (*CMYK) CMYKAt(int, int) color.CMYK -pkg image, method (*CMYK) ColorModel() color.Model -pkg image, method (*CMYK) Opaque() bool -pkg image, method (*CMYK) PixOffset(int, int) int -pkg image, method (*CMYK) Set(int, int, color.Color) -pkg image, method (*CMYK) SetCMYK(int, int, color.CMYK) -pkg image, method (*CMYK) SubImage(Rectangle) Image -pkg image, method (Rectangle) At(int, int) color.Color -pkg image, method (Rectangle) Bounds() Rectangle -pkg image, method (Rectangle) ColorModel() color.Model -pkg image, type CMYK struct -pkg image, type CMYK struct, Pix []uint8 -pkg image, type CMYK struct, Rect Rectangle -pkg image, type CMYK struct, Stride int -pkg image/color, func CMYKToRGB(uint8, uint8, uint8, uint8) (uint8, uint8, uint8) -pkg image/color, func RGBToCMYK(uint8, uint8, uint8) (uint8, uint8, uint8, uint8) -pkg image/color, method (CMYK) RGBA() (uint32, uint32, uint32, uint32) -pkg image/color, type CMYK struct -pkg image/color, type CMYK struct, C uint8 -pkg image/color, type CMYK struct, K uint8 -pkg image/color, type CMYK struct, M uint8 -pkg image/color, type CMYK struct, Y uint8 -pkg image/color, var CMYKModel Model -pkg image/gif, const DisposalBackground = 2 -pkg image/gif, const DisposalBackground ideal-int -pkg image/gif, const DisposalNone = 1 -pkg image/gif, const DisposalNone ideal-int -pkg image/gif, const DisposalPrevious = 3 -pkg image/gif, const DisposalPrevious ideal-int -pkg image/gif, type GIF struct, BackgroundIndex uint8 -pkg image/gif, type GIF struct, Config image.Config -pkg image/gif, type GIF struct, Disposal []uint8 -pkg io, func CopyBuffer(Writer, Reader, []uint8) (int64, error) -pkg log, const LUTC = 32 -pkg log, const LUTC ideal-int -pkg log, func Output(int, string) error -pkg log, method (*Logger) SetOutput(io.Writer) -pkg math/big, const Above = 1 -pkg math/big, const Above Accuracy -pkg math/big, const AwayFromZero = 3 -pkg math/big, const AwayFromZero RoundingMode -pkg math/big, const Below = -1 -pkg math/big, const Below Accuracy -pkg math/big, const Exact = 0 -pkg math/big, const Exact Accuracy -pkg math/big, const MaxExp = 2147483647 -pkg math/big, const MaxExp ideal-int -pkg math/big, const MaxPrec = 4294967295 -pkg math/big, const MaxPrec ideal-int -pkg math/big, const MinExp = -2147483648 -pkg math/big, const MinExp ideal-int -pkg math/big, const ToNearestAway = 1 -pkg math/big, const ToNearestAway RoundingMode -pkg math/big, const ToNearestEven = 0 -pkg math/big, const ToNearestEven RoundingMode -pkg math/big, const ToNegativeInf = 4 -pkg math/big, const ToNegativeInf RoundingMode -pkg math/big, const ToPositiveInf = 5 -pkg math/big, const ToPositiveInf RoundingMode -pkg math/big, const ToZero = 2 -pkg math/big, const ToZero RoundingMode -pkg math/big, func Jacobi(*Int, *Int) int -pkg math/big, func NewFloat(float64) *Float -pkg math/big, func ParseFloat(string, int, uint, RoundingMode) (*Float, int, error) -pkg math/big, func ScanFloat(io.ByteScanner, int, uint, RoundingMode) (*Float, int, error) -pkg math/big, method (*Float) Abs(*Float) *Float -pkg math/big, method (*Float) Acc() Accuracy -pkg math/big, method (*Float) Add(*Float, *Float) *Float -pkg math/big, method (*Float) Append([]uint8, uint8, int) []uint8 -pkg math/big, method (*Float) Cmp(*Float) int -pkg math/big, method (*Float) Copy(*Float) *Float -pkg math/big, method (*Float) Float32() (float32, Accuracy) -pkg math/big, method (*Float) Float64() (float64, Accuracy) -pkg math/big, method (*Float) Format(uint8, int) string -pkg math/big, method (*Float) Int(*Int) (*Int, Accuracy) -pkg math/big, method (*Float) Int64() (int64, Accuracy) -pkg math/big, method (*Float) IsInf() bool -pkg math/big, method (*Float) IsInt() bool -pkg math/big, method (*Float) MantExp(*Float) int -pkg math/big, method (*Float) MinPrec() uint -pkg math/big, method (*Float) Mode() RoundingMode -pkg math/big, method (*Float) Mul(*Float, *Float) *Float -pkg math/big, method (*Float) Neg(*Float) *Float -pkg math/big, method (*Float) Parse(string, int) (*Float, int, error) -pkg math/big, method (*Float) Prec() uint -pkg math/big, method (*Float) Quo(*Float, *Float) *Float -pkg math/big, method (*Float) Rat(*Rat) (*Rat, Accuracy) -pkg math/big, method (*Float) Scan(io.ByteScanner, int) (*Float, int, error) -pkg math/big, method (*Float) Set(*Float) *Float -pkg math/big, method (*Float) SetFloat64(float64) *Float -pkg math/big, method (*Float) SetInf(bool) *Float -pkg math/big, method (*Float) SetInt(*Int) *Float -pkg math/big, method (*Float) SetInt64(int64) *Float -pkg math/big, method (*Float) SetMantExp(*Float, int) *Float -pkg math/big, method (*Float) SetMode(RoundingMode) *Float -pkg math/big, method (*Float) SetPrec(uint) *Float -pkg math/big, method (*Float) SetRat(*Rat) *Float -pkg math/big, method (*Float) SetString(string) (*Float, bool) -pkg math/big, method (*Float) SetUint64(uint64) *Float -pkg math/big, method (*Float) Sign() int -pkg math/big, method (*Float) Signbit() bool -pkg math/big, method (*Float) String() string -pkg math/big, method (*Float) Sub(*Float, *Float) *Float -pkg math/big, method (*Float) Uint64() (uint64, Accuracy) -pkg math/big, method (*Int) ModSqrt(*Int, *Int) *Int -pkg math/big, method (Accuracy) String() string -pkg math/big, method (ErrNaN) Error() string -pkg math/big, method (RoundingMode) String() string -pkg math/big, type Accuracy int8 -pkg math/big, type ErrNaN struct -pkg math/big, type Float struct -pkg math/big, type RoundingMode uint8 -pkg mime, const BEncoding = 98 -pkg mime, const BEncoding WordEncoder -pkg mime, const QEncoding = 113 -pkg mime, const QEncoding WordEncoder -pkg mime, func ExtensionsByType(string) ([]string, error) -pkg mime, method (*WordDecoder) Decode(string) (string, error) -pkg mime, method (*WordDecoder) DecodeHeader(string) (string, error) -pkg mime, method (WordEncoder) Encode(string, string) string -pkg mime, type WordDecoder struct -pkg mime, type WordDecoder struct, CharsetReader func(string, io.Reader) (io.Reader, error) -pkg mime, type WordEncoder uint8 -pkg mime/quotedprintable, func NewReader(io.Reader) *Reader -pkg mime/quotedprintable, func NewReader(io.Reader) io.Reader -pkg mime/quotedprintable, func NewWriter(io.Writer) *Writer -pkg mime/quotedprintable, method (*Reader) Read([]uint8) (int, error) -pkg mime/quotedprintable, method (*Writer) Close() error -pkg mime/quotedprintable, method (*Writer) Write([]uint8) (int, error) -pkg mime/quotedprintable, type Reader struct -pkg mime/quotedprintable, type Writer struct -pkg mime/quotedprintable, type Writer struct, Binary bool -pkg net, func SocketConn(*os.File, SocketAddr) (Conn, error) -pkg net, func SocketPacketConn(*os.File, SocketAddr) (PacketConn, error) -pkg net, type OpError struct, Source Addr -pkg net, type SocketAddr interface { Addr, Raw } -pkg net, type SocketAddr interface, Addr([]uint8) Addr -pkg net, type SocketAddr interface, Raw(Addr) []uint8 -pkg net/http/fcgi, var ErrConnClosed error -pkg net/http/fcgi, var ErrRequestAborted error -pkg net/http/pprof, func Trace(http.ResponseWriter, *http.Request) -pkg net/smtp, method (*Client) TLSConnectionState() (tls.ConnectionState, bool) -pkg os, func LookupEnv(string) (string, bool) -pkg os/signal, func Ignore(...os.Signal) -pkg os/signal, func Reset(...os.Signal) -pkg reflect, func ArrayOf(int, Type) Type -pkg reflect, func FuncOf([]Type, []Type, bool) Type -pkg runtime, func ReadTrace() []uint8 -pkg runtime, func StartTrace() error -pkg runtime, func StopTrace() -pkg runtime/pprof, func StartTrace(io.Writer) error -pkg runtime/pprof, func StopTrace() -pkg strings, func Compare(string, string) int -pkg strings, func LastIndexByte(string, uint8) int -pkg strings, method (*Reader) Size() int64 -pkg syscall (darwin-386), type SysProcAttr struct, Ctty int -pkg syscall (darwin-386), type SysProcAttr struct, Foreground bool -pkg syscall (darwin-386), type SysProcAttr struct, Pgid int -pkg syscall (darwin-386-cgo), type SysProcAttr struct, Ctty int -pkg syscall (darwin-386-cgo), type SysProcAttr struct, Foreground bool -pkg syscall (darwin-386-cgo), type SysProcAttr struct, Pgid int -pkg syscall (darwin-amd64), type SysProcAttr struct, Ctty int -pkg syscall (darwin-amd64), type SysProcAttr struct, Foreground bool -pkg syscall (darwin-amd64), type SysProcAttr struct, Pgid int -pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Ctty int -pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Foreground bool -pkg syscall (darwin-amd64-cgo), type SysProcAttr struct, Pgid int -pkg syscall (freebsd-386), type SysProcAttr struct, Ctty int -pkg syscall (freebsd-386), type SysProcAttr struct, Foreground bool -pkg syscall (freebsd-386), type SysProcAttr struct, Pgid int -pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Ctty int -pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Foreground bool -pkg syscall (freebsd-386-cgo), type SysProcAttr struct, Pgid int -pkg syscall (freebsd-amd64), type SysProcAttr struct, Ctty int -pkg syscall (freebsd-amd64), type SysProcAttr struct, Foreground bool -pkg syscall (freebsd-amd64), type SysProcAttr struct, Pgid int -pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Ctty int -pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Foreground bool -pkg syscall (freebsd-amd64-cgo), type SysProcAttr struct, Pgid int -pkg syscall (freebsd-arm), type SysProcAttr struct, Ctty int -pkg syscall (freebsd-arm), type SysProcAttr struct, Foreground bool -pkg syscall (freebsd-arm), type SysProcAttr struct, Pgid int -pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Ctty int -pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Foreground bool -pkg syscall (freebsd-arm-cgo), type SysProcAttr struct, Pgid int -pkg syscall (linux-386), type SysProcAttr struct, Foreground bool -pkg syscall (linux-386), type SysProcAttr struct, Pgid int -pkg syscall (linux-386-cgo), type SysProcAttr struct, Foreground bool -pkg syscall (linux-386-cgo), type SysProcAttr struct, Pgid int -pkg syscall (linux-amd64), type SysProcAttr struct, Foreground bool -pkg syscall (linux-amd64), type SysProcAttr struct, Pgid int -pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Foreground bool -pkg syscall (linux-amd64-cgo), type SysProcAttr struct, Pgid int -pkg syscall (linux-arm), type SysProcAttr struct, Foreground bool -pkg syscall (linux-arm), type SysProcAttr struct, Pgid int -pkg syscall (linux-arm-cgo), type SysProcAttr struct, Foreground bool -pkg syscall (linux-arm-cgo), type SysProcAttr struct, Pgid int -pkg syscall (netbsd-386), type SysProcAttr struct, Ctty int -pkg syscall (netbsd-386), type SysProcAttr struct, Foreground bool -pkg syscall (netbsd-386), type SysProcAttr struct, Pgid int -pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Ctty int -pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Foreground bool -pkg syscall (netbsd-386-cgo), type SysProcAttr struct, Pgid int -pkg syscall (netbsd-amd64), type SysProcAttr struct, Ctty int -pkg syscall (netbsd-amd64), type SysProcAttr struct, Foreground bool -pkg syscall (netbsd-amd64), type SysProcAttr struct, Pgid int -pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Ctty int -pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Foreground bool -pkg syscall (netbsd-amd64-cgo), type SysProcAttr struct, Pgid int -pkg syscall (netbsd-arm), type SysProcAttr struct, Ctty int -pkg syscall (netbsd-arm), type SysProcAttr struct, Foreground bool -pkg syscall (netbsd-arm), type SysProcAttr struct, Pgid int -pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Ctty int -pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Foreground bool -pkg syscall (netbsd-arm-cgo), type SysProcAttr struct, Pgid int -pkg syscall (openbsd-386), type SysProcAttr struct, Ctty int -pkg syscall (openbsd-386), type SysProcAttr struct, Foreground bool -pkg syscall (openbsd-386), type SysProcAttr struct, Pgid int -pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Ctty int -pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Foreground bool -pkg syscall (openbsd-386-cgo), type SysProcAttr struct, Pgid int -pkg syscall (openbsd-amd64), type SysProcAttr struct, Ctty int -pkg syscall (openbsd-amd64), type SysProcAttr struct, Foreground bool -pkg syscall (openbsd-amd64), type SysProcAttr struct, Pgid int -pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Ctty int -pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Foreground bool -pkg syscall (openbsd-amd64-cgo), type SysProcAttr struct, Pgid int -pkg text/template, method (*Template) DefinedTemplates() string -pkg text/template, method (*Template) Option(...string) *Template -pkg time, method (Time) AppendFormat([]uint8, string) []uint8 -pkg unicode, const Version = "8.0.0" -pkg unicode, var Ahom *RangeTable -pkg unicode, var Anatolian_Hieroglyphs *RangeTable -pkg unicode, var Hatran *RangeTable -pkg unicode, var Multani *RangeTable -pkg unicode, var Old_Hungarian *RangeTable -pkg unicode, var SignWriting *RangeTable diff --git a/doc/asm.html b/doc/asm.html index 3f116ea607..ba888118b9 100644 --- a/doc/asm.html +++ b/doc/asm.html @@ -6,16 +6,16 @@

A Quick Guide to Go's Assembler

-This document is a quick outline of the unusual form of assembly language used by the gc -Go compiler. +This document is a quick outline of the unusual form of assembly language used by the gc Go compiler. The document is not comprehensive.

-The assembler is based on the input to the Plan 9 assemblers, which is documented in detail -on the Plan 9 site. +The assembler is based on the input style of the Plan 9 assemblers, which is documented in detail +elsewhere. If you plan to write assembly language, you should read that document although much of it is Plan 9-specific. -This document provides a summary of the syntax and +The current document provides a summary of the syntax and the differences with +what is explained in that document, and describes the peculiarities that apply when writing assembly code to interact with Go.

@@ -25,10 +25,12 @@ Some of the details map precisely to the machine, but some do not. This is because the compiler suite (see this description) needs no assembler pass in the usual pipeline. -Instead, the compiler emits a kind of incompletely defined instruction set, in binary form, which the linker -then completes. -In particular, the linker does instruction selection, so when you see an instruction like MOV -what the linker actually generates for that operation might not be a move instruction at all, perhaps a clear or load. +Instead, the compiler operates on a kind of semi-abstract instruction set, +and instruction selection occurs partly after code generation. +The assembler works on the semi-abstract form, so +when you see an instruction like MOV +what the tool chain actually generates for that operation might +not be a move instruction at all, perhaps a clear or load. Or it might correspond exactly to the machine instruction with that name. In general, machine-specific operations tend to appear as themselves, while more general concepts like memory move and subroutine call and return are more abstract. @@ -36,13 +38,15 @@ The details vary with architecture, and we apologize for the imprecision; the si

-The assembler program is a way to generate that intermediate, incompletely defined instruction sequence -as input for the linker. +The assembler program is a way to parse a description of that +semi-abstract instruction set and turn it into instructions to be +input to the linker. If you want to see what the instructions look like in assembly for a given architecture, say amd64, there are many examples in the sources of the standard library, in packages such as runtime and math/big. -You can also examine what the compiler emits as assembly code: +You can also examine what the compiler emits as assembly code +(the actual output may differ from what you see here):

@@ -52,7 +56,7 @@ package main
 func main() {
 	println(3)
 }
-$ go tool compile -S x.go        # or: go build -gcflags -S x.go
+$ GOOS=linux GOARCH=amd64 go tool compile -S x.go        # or: go build -gcflags -S x.go
 
 --- prog list "main" ---
 0000 (x.go:3) TEXT    main+0(SB),$8-0
@@ -106,20 +110,73 @@ codeblk [0x2000,0x1d059) at offset 0x1000
 
 -->
 
+

Constants

+ +

+Although the assembler takes its guidance from the Plan 9 assemblers, +it is a distinct program, so there are some differences. +One is in constant evaluation. +Constant expressions in the assembler are parsed using Go's operator +precedence, not the C-like precedence of the original. +Thus 3&1<<2 is 4, not 0—it parses as (3&1)<<2 +not 3&(1<<2). +Also, constants are always evaluated as 64-bit unsigned integers. +Thus -2 is not the integer value minus two, +but the unsigned 64-bit integer with the same bit pattern. +The distinction rarely matters but +to avoid ambiguity, division or right shift where the right operand's +high bit is set is rejected. +

+

Symbols

-Some symbols, such as PC, R0 and SP, are predeclared and refer to registers. -There are two other predeclared symbols, SB (static base) and FP (frame pointer). -All user-defined symbols other than jump labels are written as offsets to these pseudo-registers. +Some symbols, such as R1 or LR, +are predefined and refer to registers. +The exact set depends on the architecture. +

+ +

+There are four predeclared symbols that refer to pseudo-registers. +These are not real registers, but rather virtual registers maintained by +the tool chain, such as a frame pointer. +The set of pseudo-registers is the same for all architectures: +

+ +
    + +
  • +FP: Frame pointer: arguments and locals. +
  • + +
  • +PC: Program counter: +jumps and branches. +
  • + +
  • +SB: Static base pointer: global symbols. +
  • + +
  • +SP: Stack pointer: top of stack. +
  • + +
+ +

+All user-defined symbols are written as offsets to the pseudo-registers +FP (arguments and locals) and SB (globals).

The SB pseudo-register can be thought of as the origin of memory, so the symbol foo(SB) is the name foo as an address in memory. This form is used to name global functions and data. -Adding <> to the name, as in foo<>(SB), makes the name +Adding <> to the name, as in foo<>(SB), makes the name visible only in the current source file, like a top-level static declaration in a C file. +Adding an offset to the name refers to that offset from the symbol's address, so +a+4(SB) is four bytes past the start of foo.

@@ -128,9 +185,19 @@ used to refer to function arguments. The compilers maintain a virtual frame pointer and refer to the arguments on the stack as offsets from that pseudo-register. Thus 0(FP) is the first argument to the function, 8(FP) is the second (on a 64-bit machine), and so on. -When referring to a function argument this way, it is conventional to place the name +However, when referring to a function argument this way, it is necessary to place a name at the beginning, as in first_arg+0(FP) and second_arg+8(FP). -Some of the assemblers enforce this convention, rejecting plain 0(FP) and 8(FP). +(The meaning of the offset—offset from the frame pointer—distinct +from its use with SB, where it is an offset from the symbol.) +The assembler enforces this convention, rejecting plain 0(FP) and 8(FP). +The actual name is semantically irrelevant but should be used to document +the argument's name. +It is worth stressing that FP is always a +pseudo-register, not a hardware +register, even on architectures with a hardware frame pointer. +

+ +

For assembly functions with Go prototypes, go vet will check that the argument names and offsets match. On 32-bit systems, the low and high 32 bits of a 64-bit value are distinguished by adding @@ -145,13 +212,53 @@ prepared for function calls. It points to the top of the local stack frame, so references should use negative offsets in the range [−framesize, 0): x-8(SP), y-4(SP), and so on. -On architectures with a real register named SP, the name prefix distinguishes -references to the virtual stack pointer from references to the architectural SP register. -That is, x-8(SP) and -8(SP) are different memory locations: -the first refers to the virtual stack pointer pseudo-register, while the second refers to the +

+ +

+On architectures with a hardware register named SP, +the name prefix distinguishes +references to the virtual stack pointer from references to the architectural +SP register. +That is, x-8(SP) and -8(SP) +are different memory locations: +the first refers to the virtual stack pointer pseudo-register, +while the second refers to the hardware's SP register.

+

+On machines where SP and PC are +traditionally aliases for a physical, numbered register, +in the Go assembler the names SP and PC +are still treated specially; +for instance, references to SP require a symbol, +much like FP. +To access the actual hardware register use the true R name. +For example, on the ARM architecture the hardware +SP and PC are accessible as +R13 and R15. +

+ +

+Branches and direct jumps are always written as offsets to the PC, or as +jumps to labels: +

+ +
+label:
+	MOVW $0, R1
+	JMP label
+
+ +

+Each label is visible only within the function in which it is defined. +It is therefore permitted for multiple functions in a file to define +and use the same label names. +Direct jumps and call instructions can target text symbols, +such as name(SB), but not offsets from symbols, +such as name+4(SB). +

+

Instructions, registers, and assembler directives are always in UPPER CASE to remind you that assembly programming is a fraught endeavor. @@ -312,11 +419,17 @@ This data contains no pointers and therefore does not need to be scanned by the garbage collector.

  • -WRAPPER = 32 +WRAPPER = 32
    (For TEXT items.) This is a wrapper function and should not count as disabling recover.
  • +
  • +NEEDCTXT = 64 +
    +(For TEXT items.) +This function is a closure so it uses its incoming context register. +
  • Runtime Coordination

    @@ -401,42 +514,61 @@ even pointers to stack data must not be kept in local variables.

    It is impractical to list all the instructions and other details for each machine. -To see what instructions are defined for a given machine, say 32-bit Intel x86, -look in the top-level header file for the corresponding linker, in this case 8l. -That is, the file $GOROOT/src/cmd/8l/8.out.h contains a C enumeration, called as, -of the instructions and their spellings as known to the assembler and linker for that architecture. -In that file you'll find a declaration that begins +To see what instructions are defined for a given machine, say ARM, +look in the source for the obj support library for +that architecture, located in the directory src/cmd/internal/obj/arm. +In that directory is a file a.out.go; it contains +a long list of constants starting with A, like this:

    -enum	as
    -{
    -	AXXX,
    -	AAAA,
    -	AAAD,
    -	AAAM,
    -	AAAS,
    -	AADCB,
    +const (
    +	AAND = obj.ABaseARM + obj.A_ARCHSPECIFIC + iota
    +	AEOR
    +	ASUB
    +	ARSB
    +	AADD
     	...
     

    -Each instruction begins with a initial capital A in this list, so AADCB -represents the ADCB (add carry byte) instruction. -The enumeration is in alphabetical order, plus some late additions (AXXX occupies -the zero slot as an invalid instruction). -The sequence has nothing to do with the actual encoding of the machine instructions. -Again, the linker takes care of that detail. +This is the list of instructions and their spellings as known to the assembler and linker for that architecture. +Each instruction begins with an initial capital A in this list, so AAND +represents the bitwise and instruction, +AND (without the leading A), +and is written in assembly source as AND. +The enumeration is mostly in alphabetical order. +(The architecture-independent AXXX, defined in the +cmd/internal/obj package, +represents an invalid instruction). +The sequence of the A names has nothing to do with the actual +encoding of the machine instructions. +The cmd/internal/obj package takes care of that detail. +

    + +

    +The instructions for both the 386 and AMD64 architectures are listed in +cmd/internal/obj/x86/a.out.go. +

    + +

    +The architectures share syntax for common addressing modes such as +(R1) (register indirect), +4(R1) (register indirect with offset), and +$foo(SB) (absolute address). +The assembler also supports some (not necessarily all) addressing modes +specific to each architecture. +The sections below list these.

    One detail evident in the examples from the previous sections is that data in the instructions flows from left to right: MOVQ $0, CX clears CX. -This convention applies even on architectures where the usual mode is the opposite direction. +This rule applies even on architectures where the conventional notation uses the opposite direction.

    -Here follows some descriptions of key Go-specific details for the supported architectures. +Here follow some descriptions of key Go-specific details for the supported architectures.

    32-bit Intel 386

    @@ -445,11 +577,11 @@ Here follows some descriptions of key Go-specific details for the supported arch The runtime pointer to the g structure is maintained through the value of an otherwise unused (as far as Go is concerned) register in the MMU. A OS-dependent macro get_tls is defined for the assembler if the source includes -an architecture-dependent header file, like this: +a special header, go_asm.h:

    -#include "zasm_GOOS_GOARCH.h"
    +#include "go_asm.h"
     

    @@ -462,21 +594,39 @@ The sequence to load g and m using CX loo

     get_tls(CX)
     MOVL	g(CX), AX     // Move g into AX.
    -MOVL	g_m(AX), BX   // Move g->m into BX.
    +MOVL	g_m(AX), BX   // Move g.m into BX.
     
    +

    +Addressing modes: +

    + +
      + +
    • +(DI)(BX*2): The location at address DI plus BX*2. +
    • + +
    • +64(DI)(BX*2): The location at address DI plus BX*2 plus 64. +These modes accept only 1, 2, 4, and 8 as scale factors. +
    • + +
    +

    64-bit Intel 386 (a.k.a. amd64)

    -The assembly code to access the m and g -pointers is the same as on the 386, except it uses MOVQ rather than -MOVL: +The two architectures behave largely the same at the assembler level. +Assembly code to access the m and g +pointers on the 64-bit version is the same as on the 32-bit 386, +except it uses MOVQ rather than MOVL:

     get_tls(CX)
     MOVQ	g(CX), AX     // Move g into AX.
    -MOVQ	g_m(AX), BX   // Move g->m into BX.
    +MOVQ	g_m(AX), BX   // Move g.m into BX.
     

    ARM

    @@ -513,6 +663,107 @@ The name SP always refers to the virtual stack pointer described ea For the hardware register, use R13.

    +

    +Condition code syntax is to append a period and the one- or two-letter code to the instruction, +as in MOVW.EQ. +Multiple codes may be appended: MOVM.IA.W. +The order of the code modifiers is irrelevant. +

    + +

    +Addressing modes: +

    + +
      + +
    • +R0->16 +
      +R0>>16 +
      +R0<<16 +
      +R0@>16: +For <<, left shift R0 by 16 bits. +The other codes are -> (arithmetic right shift), +>> (logical right shift), and +@> (rotate right). +
    • + +
    • +R0->R1 +
      +R0>>R1 +
      +R0<<R1 +
      +R0@>R1: +For <<, left shift R0 by the count in R1. +The other codes are -> (arithmetic right shift), +>> (logical right shift), and +@> (rotate right). + +
    • + +
    • +[R0,g,R12-R15]: For multi-register instructions, the set comprising +R0, g, and R12 through R15 inclusive. +
    • + +
    • +(R5, R6): Destination register pair. +
    • + +
    + +

    ARM64

    + +

    +The ARM64 port is in an experimental state. +

    + +

    +Instruction modifiers are appended to the instruction following a period. +The only modifiers are P (postincrement) and W +(preincrement): +MOVW.P, MOVW.W +

    + +

    +Addressing modes: +

    + +
      + +
    • +(R5, R6): Register pair for LDP/STP. +
    • + +
    + +

    Power 64, a.k.a. ppc64

    + +

    +The Power 64 port is in an experimental state. +

    + +

    +Addressing modes: +

    + +
      + +
    • +(R5)(R6*1): The location at R5 plus R6. It is a scaled +mode as on the x86, but the only scale allowed is 1. +
    • + +
    • +(R5+R6): Alias for (R5)(R6*1) +
    • + +
    +

    Unsupported opcodes

    @@ -531,11 +782,17 @@ Here's how the 386 runtime defines the 64-bit atomic load function. // uint64 atomicload64(uint64 volatile* addr); // so actually // void atomicload64(uint64 *res, uint64 volatile *addr); -TEXT runtime·atomicload64(SB), NOSPLIT, $0-8 +TEXT runtime·atomicload64(SB), NOSPLIT, $0-12 MOVL ptr+0(FP), AX + TESTL $7, AX + JZ 2(PC) + MOVL 0, AX // crash with nil ptr deref LEAL ret_lo+4(FP), BX - BYTE $0x0f; BYTE $0x6f; BYTE $0x00 // MOVQ (%EAX), %MM0 - BYTE $0x0f; BYTE $0x7f; BYTE $0x03 // MOVQ %MM0, 0(%EBX) - BYTE $0x0F; BYTE $0x77 // EMMS + // MOVQ (%EAX), %MM0 + BYTE $0x0f; BYTE $0x6f; BYTE $0x00 + // MOVQ %MM0, 0(%EBX) + BYTE $0x0f; BYTE $0x7f; BYTE $0x03 + // EMMS + BYTE $0x0F; BYTE $0x77 RET

    diff --git a/doc/effective_go.html b/doc/effective_go.html index 5465fa3a32..5a522f607d 100644 --- a/doc/effective_go.html +++ b/doc/effective_go.html @@ -3172,40 +3172,44 @@ count the completion signals by draining the channel after launching all the goroutines.

    -const NCPU = 4  // number of CPU cores
    +const numCPU = 4 // number of CPU cores
     
     func (v Vector) DoAll(u Vector) {
    -    c := make(chan int, NCPU)  // Buffering optional but sensible.
    -    for i := 0; i < NCPU; i++ {
    -        go v.DoSome(i*len(v)/NCPU, (i+1)*len(v)/NCPU, u, c)
    +    c := make(chan int, numCPU)  // Buffering optional but sensible.
    +    for i := 0; i < numCPU; i++ {
    +        go v.DoSome(i*len(v)/numCPU, (i+1)*len(v)/numCPU, u, c)
         }
         // Drain the channel.
    -    for i := 0; i < NCPU; i++ {
    +    for i := 0; i < numCPU; i++ {
             <-c    // wait for one task to complete
         }
         // All done.
     }
    -
     
    -

    -The current implementation of the Go runtime -will not parallelize this code by default. -It dedicates only a single core to user-level processing. An -arbitrary number of goroutines can be blocked in system calls, but -by default only one can be executing user-level code at any time. -It should be smarter and one day it will be smarter, but until it -is if you want CPU parallelism you must tell the run-time -how many goroutines you want executing code simultaneously. There -are two related ways to do this. Either run your job with environment -variable GOMAXPROCS set to the number of cores to use -or import the runtime package and call -runtime.GOMAXPROCS(NCPU). -A helpful value might be runtime.NumCPU(), which reports the number -of logical CPUs on the local machine. -Again, this requirement is expected to be retired as the scheduling and run-time improve. +Rather than create a constant value for numCPU, we can ask the runtime what +value is appropriate. +The function runtime.NumCPU +returns the number of hardware CPU cores in the machine, so we could write

    - +
    +var numCPU = runtime.NumCPU()
    +
    +

    +There is also a function +runtime.GOMAXPROCS, +which reports (or sets) +the user-specified number of cores that a Go program can have running +simultaneously. +It defaults to the value of runtime.NumCPU but can be +overridden by setting the similarly named shell environment variable +or by calling the function with a positive number. Calling it with +zero just queries the value. +Therefore if we want to honor the user's resource request, we should write +

    +
    +var numCPU = runtime.GOMAXPROCS(0)
    +

    Be sure not to confuse the ideas of concurrency—structuring a program as independently executing components—and parallelism—executing diff --git a/doc/gccgo_install.html b/doc/gccgo_install.html index 8f744a6216..ef27fd1818 100644 --- a/doc/gccgo_install.html +++ b/doc/gccgo_install.html @@ -183,7 +183,7 @@ export LIBRARY_PATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH The gccgo compiler works like other gcc frontends. As of GCC 5 the gccgo installation also includes a version of the go command, which may be used to build Go programs as described at -http://golang.org/cmd/go. +https://golang.org/cmd/go.

    diff --git a/doc/go1.5.html b/doc/go1.5.html index e8a1392340..4e173d130a 100644 --- a/doc/go1.5.html +++ b/doc/go1.5.html @@ -28,7 +28,7 @@ once necessary for building the distribution is gone.

  • -The garbage collector is now concurrent and provides dramatically lower +The garbage collector is now concurrent and provides dramatically lower pause times by running, when possible, in parallel with other goroutines.
  • @@ -38,15 +38,25 @@ number of cores available; in prior releases it defaulted to 1.
  • -Support for internal packages +Support for internal packages is now provided for all repositories, not just the Go core.
  • -The go command now provides experimental +The go command now provides experimental support for "vendoring" external dependencies.
  • +
  • +A new go tool trace command supports fine-grained +tracing of program execution. +
  • + +
  • +A new go doc command (distinct from godoc) +is customized for command-line use. +
  • +

    @@ -59,7 +69,7 @@ The release also contains one small language change involving map literals.

    -Finally, the timing of the release +Finally, the timing of the release strays from the usual six-month interval, both to provide more time to prepare this major release and to shift the schedule thereafter to time the release dates more conveniently. @@ -67,7 +77,7 @@ time the release dates more conveniently.

    Changes to the language

    -

    Map literals

    +

    Map literals

    Due to an oversight, the rule that allowed the element type to be elided from slice literals was not @@ -107,7 +117,7 @@ There was a C compiler in the tree in 1.4 and earlier. It was used to build the runtime; a custom compiler was necessary in part to guarantee the C code would work with the stack management of goroutines. Since the runtime is in Go now, there is no need for this C compiler and it is gone. -Details of the process to eliminate C are discussed elsewhere. +Details of the process to eliminate C are discussed elsewhere.

    @@ -122,7 +132,7 @@ An overview of this process is available in the slides for this presentation.

    -

    Compiler and tools

    +

    Compiler and tools

    Independent of but encouraged by the move to Go, the names of the tools have changed. @@ -147,7 +157,24 @@ rather than .8, .6, etc.

    Garbage collector

    -TODO +The garbage collector has been re-engineered for 1.5 as part of the development +outlined in the design document. +Expected latencies are much lower than with the collector +in prior releases, through a combination of advanced algorithms, +better scheduling of the collector, +and running more of the collection in parallel with the user program. +The "stop the world" phase of the collector +will almost always be under 10 milliseconds and usually much less. +

    + +

    +For systems that benefit from low latency, such as user-responsive web sites, +the drop in expected latency with the new collector may be important. +

    + +

    +Details of the new collector were presented in a +talk at GopherCon 2015.

    Runtime

    @@ -171,7 +198,7 @@ In prior releases it defaulted to 1. Programs that do not expect to run with multiple cores may break inadvertently. They can be updated by removing the restriction or by setting -GOMAXPROCS explicitly. +GOMAXPROCS explicitly.

    Build

    @@ -182,13 +209,13 @@ must be available to compile the distribution from source. Thus, to build the Go core, a working Go distribution must already be in place. (Go programmers who do not work on the core are unaffected by this change.) Any Go 1.4 or later distribution (including gccgo) will serve. -For details, see the design document. +For details, see the design document.

    Ports

    -Due mostly to the industry's move away the 32-bit x86 architecture, +Due mostly to the industry's move away from the 32-bit x86 architecture, the set of binary downloads provided is reduced in 1.5. A distribution for the OS X operating system is provided only for the amd64 architecture, not 386. @@ -206,6 +233,14 @@ The new port linux/arm64 is mostly in place, but cgo is only supported using external linking.

    +

    +Also available as experiments are ppc64 (IBM Power 64) +and ppc64le (IBM Power 64, little-endian). +Both these ports support cgo, +but for ppc64 it requires external linking while +for ppc64le it requires internal linking. +

    +

    On FreeBSD, Go 1.5 requires FreeBSD 8-STABLE+ because of its new use of the SYSCALL instruction.

    @@ -215,86 +250,385 @@ On NaCl, Go 1.5 requires SDK version pepper-39 or above because it now uses the get_random_bytes system call.

    +

    +On Darwin, the use of the system X.509 certificate interface can be disabled +with the ios build tag. +

    + +

    Tools

    + +

    Translating

    + +

    +As part of the process to eliminate C from the tree, the compiler and +linker were translated from C to Go. +It was a genuine (machine assisted) translation, so the new programs are essentially +the old programs translated rather than new ones with new bugs. +We are confident the translation process has introduced few if any new bugs, +and in fact uncovered a number of previously unknown bugs, now fixed. +

    + +

    +The assembler is a new program, however; it is described below. +

    + +

    Renaming

    + +

    +The suites of programs that were the compilers (6g, 8g, etc.), +the assemblers (6a, 8a, etc.), +and the linkers (6l, 8l, etc.) +have each been consolidated into a single tool that is configured +by the environment variables GOOS and GOARCH. +The old names are gone; the new tools are available through the go tool +mechanism as go tool compile, +go tool asm, +and go tool link. +Also, the file suffixes .6, .8 etc. for the +intermediate object files are also gone; now they are just plain .o files. +

    + +

    +For example, to build and link a program on amd64 for Darwin +using the tools directly, rather than through go build, +one would run: +

    +
    -Tools:
    -
    -build: external linking support for windows (https://golang.org/cl/7163, 7282, 7283, 7284, 7534, 7535)
    -cmd/cover: tool now lives in the standard repository (https://golang.org/cl/9560)
    -cmd/gc: constant arithmetic is based on math/big (https://golang.org/cl/7830, 7851, 7857, 8426, 7858, 7912, 8171)
    -cmd/go, go/build: add ${SRCDIR} variable expansion to cgo lines (https://golang.org/cl/1756)
    -cmd/go: add $DOLLAR to generate's variables (https://golang.org/cl/8091)
    -cmd/go: std wildcard now excludes commands in main repo (https://golang.org/cl/5550)
    -cmd/go: .swig/.swigcxx files now require SWIG 3.0.6 or later
    -cmd/go: add -run flag to go generate (https://golang.org/cl/9005)
    -cmd/go: add $GOLINE to generate's variables (https://golang.org/cl/9007)
    -cmd/go: add go doc (https://golang.org/cl/9227)
    -cmd/go: internal enforced even outside standard library (golang.org/s/go14internal; https://golang.org/cl/9156)
    -cmd/go, testing: add go test -count (https://golang.org/cl/10669)
    -cmd/go: add preliminary support for vendor directories (https://golang.org/cl/10923)
    -cmd/vet: better validation of struct tags (https://golang.org/cl/2685)
    -cmd/ld: no longer record build timestamp in Windows PE file header (https://golang.org/cl/3740)
    -cmd/go: add -toolexec build option
    -cmd/go: drop -ccflags build option
    -cmd/go: add -asmflags build option
    -cmd/go: add -buildmode build option
    -cmd/gc: add -dynlink option (for amd64 only)
    -cmd/ld: add -buildmode option
    -cmd/trace: new command to view traces (https://golang.org/cl/3601)
    -
    -Performance:
    -
    -cmd/gc: evaluate concrete == interface without allocating (https://golang.org/cl/2096)
    -cmd/gc: optimize memclr of slices and arrays (https://golang.org/cl/2520)
    -cmd/gc: transform closure calls to function calls (https://golang.org/cl/4050)
    -cmd/gc: transitive inlining (https://golang.org/cl/5952)
    -cmd/gc, runtime: speed up some cases of _, ok := i.(T) (https://golang.org/cl/7697)
    -cmd/gc: speed up large string switches (https://golang.org/cl/7698)
    -cmd/gc: inline x := y.(*T) and x, ok := y.(*T) (https://golang.org/cl/7862)
    -cmd/gc: allocate backing storage for non-escaping interfaces on stack (https://golang.org/cl/8201)
    -encoding/xml: avoid an allocation for tags without attributes (https://golang.org/cl/4160)
    -image: many optimizations
    -runtime: add ARM runtime.cmpstring and bytes.Compare (https://golang.org/cl/8010)
    -runtime: do not scan maps when k/v do not contain pointers (https://golang.org/cl/3288)
    -runtime: reduce thrashing of gs between ps (https://golang.org/cl/9872)
    -sort: number of Sort performance optimizations (https://golang.org/cl/2100, https://golang.org/cl/2614, ...)
    -strconv: optimize decimal to string conversion (https://golang.org/cl/2105)
    -strconv: optimize float to string conversion (https://golang.org/cl/5600)
    -sync: add active spinning to Mutex (https://golang.org/cl/5430)
    -math/big: faster assembly kernels for amd64 and 386 (https://golang.org/cl/2503, https://golang.org/cl/2560)
    -math/big: faster "pure Go" kernels for platforms w/o assembly kernels (https://golang.org/cl/2480)
    -regexp: port RE2's bitstate backtracker to the regexp package (https://golang.org/cl/2153)
    -
    -Assembler:
    -
    -New cmd/asm tool (now use go tool asm, not go tool 6a)
    -
    -Assembler now supports -dynlink option.
    -
    -ARM assembly syntax has had some features removed.
    -
    -	- mentioning SP or PC as a hardware register
    -		These are always pseudo-registers except that in some contexts
    -		they're not, and it's confusing because the context should not affect
    -		which register you mean. Change the references to the hardware
    -		registers to be explicit: R13 for SP, R15 for PC.
    -	- constant creation using assignment
    -		The files say a=b when they could instead say #define a b.
    -		There is no reason to have both mechanisms.
    -	- R(0) to refer to R0.
    -		Some macros use this to a great extent. Again, it's easy just to
    -		use a #define to rename a register.
    -
    -Also expression evaluation now uses uint64s instead of signed integers and the
    -precedence of operators is now Go-like rather than C-like.
    +$ export GOOS=darwin GOARCH=amd64
    +$ go tool compile program.go
    +$ go tool link program.o
     
    -

    Core library

    +

    Moving

    + +

    +Because the go/types package +has now moved into the main repository (see below), +the vet and +cover +tools have also been moved. +They are no longer maintained in the external golang.org/x/tools repository, +although (deprecated) source still resides there for compatibility with old releases. +

    + +

    Compiler

    + +

    +As described above, the compiler in Go 1.5 is a single Go program, +translated from the old C source, that replaces 6g, 8g, +and so on. +Its target is configured by the environment variables GOOS and GOARCH. +

    + +

    +The 1.5 compiler is mostly equivalent to the old, +but some internal details have changed. +One significant change is that evaluation of constants now uses +the math/big package +rather than a custom (and less well tested) implementation of high precision +arithmetic. +We do not expect this to affect the results. +

    + +

    +For the amd64 architecture only, the compiler has a new option, -dynlink, +that assists dynamic linking by supporting references to Go symbols +defined in external shared libraries. +

    + +

    Assembler

    + +

    +Like the compiler and linker, the assembler in Go 1.5 is a single program +that replaces the suite of assemblers (6a, +8a, etc.) and the environment variables +GOARCH and GOOS +configure the architecture and operating system. +Unlike the other programs, the assembler is a wholly new program +written in Go. +

    + +

    +The new assembler is very nearly compatible with the previous +ones, but there are a few changes that may affect some +assembler source files. +See the updated assembler guide +for more specific information about these changes. In summary: + +

    + +

    +First, the expression evaluation used for constants is a little +different. +It now uses unsigned 64-bit arithmetic and the precedence +of operators (+, -, <<, etc.) +comes from Go, not C. +We expect these changes to affect very few programs but +manual verification may be required. +

    + +

    +Perhaps more important is that on machines where +SP or PC is only an alias +for a numbered register, +such as R13 for the stack pointer and +R15 for the hardware program counter +on ARM, +a reference to such a register that does not include a symbol +is now illegal. +For example, SP and 4(SP) are +illegal but sym+4(SP) is fine. +On such machines, to refer to the hardware register use its +true R name. +

    + +

    +One minor change is that some of the old assemblers +permitted the notation +

    + +
    +constant=value
    +
    + +

    +to define a named constant. +Since this is always possible to do with the traditional +C-like #define notation, which is still +supported (the assembler includes an implementation +of a simplified C preprocessor), the feature was removed. +

    + + + +

    +The linker in Go 1.5 is now one Go program, +that replaces 6l, 8l, etc. +Its operating system and instruction set are specified +by the environment variables GOOS and GOARCH. +

    + +

    +There are a couple of other changes. +The more significant is the addition of a -buildmode option that +expands the style of linking; it now supports +situations such as building shared libraries and allowing other languages +to call into Go libraries. +Some of these were outlined in a design document. +For a list of the available build modes and their use, run +

    + +
    +$ go help buildmode
    +
    + +

    +Another minor change is that the linker no longer records build time stamps in +the header of Windows executables. +Also, although this may be fixed, Windows cgo executables are missing some +DWARF information. +

    + +

    Go command

    + +

    +The go command's basic operation +is unchanged, but there are a number of changes worth noting. +

    + +

    +The previous release introduced the idea of a directory internal to a package +being unimportable through the go command. +In 1.4, it was tested with the introduction of some internal elements +in the core repository. +As suggested in the design document, +that change is now being made available to all repositories. +The rules are explained in the design document, but in summary any +package in or under a directory named internal may +be imported by packages rooted in the same subtree. +Existing packages with directory elements named internal may be +inadvertently broken by this change, which was why it was advertised +in the last release. +

    + +

    +Another change in how packages are handled is the experimental +addition of support for "vendoring". +For details, see the documentation for the go command +and the design document. +

    + +

    +There have also been several minor changes. +Read the documentation for full details. +

    + +
      + +
    • +SWIG support has been updated such that +.swig and .swigcxx +now require SWIG 3.0.6 or later. +
    • + +
    • +The std (standard library) wildcard package name +now excludes commands. +A new cmd wildcard covers the commands. +
    • + +
    • +A new -asmflags build option +sets flags to pass to the assembler. +However, +the -ccflags build option has been dropped; +it was specific to the old, now deleted C compiler . +
    • + +
    • +A new -buildmode build option +sets the build mode, described above. +
    • + +
    • +An -asmflags build option has been added to provide +flags to the assembler. +However, +the -ccflags build option has been dropped; +it was specific to the old, now deleted C compiler . +
    • + +
    • +A new -pkgdir build option +sets the location of installed package archives, +to help isolate custom builds. +
    • + +
    • +A new -toolexec build option +allows substitution of a different command to invoke +the compiler and so on. +This acts as a custom replacement for go tool. +
    • + +
    • +The test subcommand now has a -count +flag to specify how many times to run each test and benchmark. +testing package +does the work here, through by the -test.count flag. +
    • + +
    • +The generate subcommand has a couple of new features. +The -run option specifies a regular expression to select which directives +to execute; this was proposed but never implemented in 1.4. +The executing pattern now has access to two new environment variables: +$GOLINE returns the source line number of the directive +and $DOLLAR expands to a dollar sign. +
    • + +
    • +The get subcommand now has a -insecure +flag that must be enabled if fetching from an insecure repository, one that +does not encrypt the connection. +
    • + +
    + +

    Go vet command

    + +

    +The go tool vet command now does +more thorough validation of struct tags. +

    + +

    Trace command

    + +

    +A new tool is available for dynamic execution tracing of Go programs. +The usage is analogous to how the test coverage tool works. +Generation of traces is integrated into go test, +and then a separate execution of the tracing tool itself analyzes the results: +

    + +
    +$ go test -trace=trace.out path/to/package
    +$ go tool trace [flags] pkg.test trace.out
    +
    + +

    +The flags enable the output to be displayed in a browser window. +For details, run go tool trace -help. +There is also a description of the tracing facility in this +talk +from GopherCon 2015. +

    + +

    Go doc command

    + +

    +A few releases back, the go doc +command was deleted as being unnecessary. +One could always run "godoc ." instead. +The 1.5 release introduces a new go doc +command with a more convenient command-line interface than +godoc's. +It is designed for command-line usage specifically, and provides a more +compact and focused presentation of the documentation for a package +or its elements, according to the invocation. +It also provides case-insensitive matching and +support for showing the documentation for unexported symbols. +For details run "go help doc". +

    + +

    Cgo

    + +

    +When parsing #cgo lines, +the invocation ${SRCDIR} is now +expanded into the path to the source directory. +This allows options to be passed to the +compiler and linker that involve file paths relative to the +source code directory. Without the expansion the paths would be +invalid when the current working directory changes. +

    + +

    +On Windows, cgo now uses external linking by default. +

    + +

    Performance

    + +

    +As always, the changes are so general and varied that precise statements +about performance are difficult to make. +The changes are even broader ranging than usual in this release, which +includes a new garbage collector and a conversion of the runtime to Go. +Some programs may run faster, some slower. +On average the programs in the Go 1 benchmark suite run a few percent faster in Go 1.5 +than they did in Go 1.4, +while as mentioned above the garbage collector's pauses are +dramatically shorter, and almost always under 10 milliseconds. +

    + +

    +Builds in Go 1.5 will be slower by a factor of about two. +The automatic translation of the compiler and linker from C to Go resulted in +unidiomatic Go code that performs poorly compared to well-written Go. +Analysis tools and refactoring helped to improve the code, but much remains to be done. +Further profiling and optimization will continue in Go 1.6 and future releases. +For more details, see these slides +and associated video. +

    + +

    Core library

    Flag

    The flag package's -PrintDefaults +PrintDefaults function, and method on FlagSet, have been modified to create nicer usage messages. The format has been changed to be more human-friendly and in the usage @@ -345,6 +679,58 @@ values produce the same results as the corresponding IEEE-754 arithmetic on those values.

    +

    Go types

    + +

    +The go/types package +up to now has been maintained in the golang.org/x +repository; as of Go 1.5 it has been relocated to the main repository. +The code at the old location is now deprecated. +There is also a modest API change in the package, discussed below. +

    + +

    +Associated with this move, the +go/constant +package also moved to the main repository; +it was golang.org/x/tools/exact before. +The go/importer package +also moved to the main repository, +as well as some tools described above. +

    + +

    Net

    + +

    +The DNS resolver in the net package has almost always used cgo to access +the system interface. +A change in Go 1.5 means that on most Unix systems DNS resolution +will no longer require cgo, which simplifies execution +on those platforms. +Now, if the system's networking configuration permits, the native Go resolver +will suffice. +The important effect of this change is that each DNS resolution occupies a goroutine +rather than a thread, +so a program with multiple outstanding DNS requests will consume fewer operating +system resources. +

    + +

    +The decision of how to run the resolver applies at run time, not build time. +The netgo build tag that has been used to enforce the use +of the Go resolver is no longer necessary, although it still works. +A new netcgo build tag forces the use of the cgo resolver at +build time. +To force cgo resolution at run time set +GODEBUG=netdns=cgo in the environment. +More debug options are documented here. +

    + +

    +This change applies to Unix systems only. +Windows, Mac OS X, and Plan 9 systems behave as before. +

    +

    Reflect

    @@ -352,7 +738,7 @@ The reflect package has two new functions: ArrayOf and FuncOf. These functions, analogous to the extant -SliceOffunction, +SliceOf function, create new types at runtime to describe arrays and functions.

    @@ -400,7 +786,7 @@ Also in the bytes package, the Buffer type now has a Cap method that reports the number of bytes allocated within the buffer. -Similarly, both the bytes +Similarly, in both the bytes and strings packages, the Reader type now has a Size @@ -415,43 +801,101 @@ function that locates the rightmost byte with that value in the argument.
  • -TODO crypto/cipher: clarify what will happen if len(src) != len(dst) for the Stream interface. (https://golang.org/cl/1754) +The crypto package +has a new interface, Decrypter, +that abstracts the behavior of a private key used in asymmetric decryption.
  • -TODO crypto/cipher: support non-standard nonce lengths for GCM. (https://golang.org/cl/8946) +In the crypto/cipher package, +the documentation for the Stream +interface has been clarified regarding the behavior when the source and destination are +different lengths. +If the destination is shorter than the source, the method will panic. +This is not a change in the implementation, only the documentation.
  • -TODO crypto/elliptic: add Name field to CurveParams struct (https://golang.org/cl/2133) +Also in the crypto/cipher package, +there is now support for nonce lengths other than 96 bytes in AES's Galois/Counter mode (GCM), +which some protocols require.
  • -TODO crypto/elliptic: Unmarshaling points now automatically checks that the point is on the curve (https://golang.org/cl/2421) +In the crypto/elliptic package, +there is now a Name field in the +CurveParams struct, +and the curves implemented in the package have been given names. +These names provide a safer way to select a curve, as opposed to +selecting its bit size, for cryptographic systems that are curve-dependent.
  • -TODO crypto/tls: change default minimum version to TLS 1.0. (https://golang.org/cl/1791) +Also in the crypto/elliptic package, +the Unmarshal function +now verifies that the point is actually on the curve. +(If it is not, the function returns nils). +This change guards against certain attacks.
  • -TODO crypto/tls: including Certificate Transparency SCTs in the handshake is now supported (https://golang.org/cl/8988) +The crypto/sha512 +package now has support for the two truncated versions of +the SHA-512 hash algorithm, SHA-512/224 and SHA-512/256.
  • -TODO crypto/tls: session ticket keys can now be rotated at runtime (https://golang.org/cl/9072) +The crypto/tls package +minimum protocol version now defaults to TLS 1.0. +The old default, SSLv3, is still available through Config if needed.
  • -TODO crypto/tls: servers will now always call GetCertificate to pick a certificate for a connection when Certificates is empty (https://golang.org/cl/8792) +The crypto/tls package +now supports Signed Certificate Timestamps (SCTs) as specified in RFC 6962. +The server serves them if they are listed in the +Certificate struct, +and the client requests them and exposes them, if present, +in its ConnectionState struct. + +
  • +The stapled OCSP response to a crypto/tls client connection, +previously only available via the +OCSPResponse method, +is now exposed in the ConnectionState struct.
  • -TODO crypto/x509: wildcards are now only accepted as the first label (https://golang.org/cl/5691) +The crypto/tls server implementation +will now always call the +GetCertificate function in +the Config struct +to select a certificate for the connection when none is supplied.
  • -TODO crypto/x509: unknown critical extensions now cause errors in Verify, not when parsing (https://golang.org/cl/9390) +Finally, the session ticket keys in the +crypto/tls package +can now be changed while the server is running. +This is done through the new +SetSessionTicketKeys +method of the +Config type. +
  • + +
  • +In the crypto/x509 package, +wildcards are now accepted only in the leftmost label as defined in +the specification. +
  • + +
  • +Also in the crypto/x509 package, +the handling of unknown critical extensions has been changed. +They used to cause parse errors but now they are parsed and caused errors only +in Verify. +The new field UnhandledCriticalExtensions of +Certificate records these extensions.
  • @@ -461,6 +905,18 @@ now has a Stats method to retrieve database statistics.
  • +
  • +The debug/dwarf +package has extensive additions to better support DWARF version 4. +See for example the definition of the new type +Class. +
  • + +
  • +The debug/elf +package now has support for the 64-bit Power architecture. +
  • +
  • The encoding/base64 package now supports unpadded encodings through two new encoding variables, @@ -469,7 +925,31 @@ now supports unpadded encodings through two new encoding variables,
  • -Also in the fmt package, +The encoding/json package +now returns an UnmarshalTypeError +if a JSON value is not appropriate for the target variable or component +to which it is being unmarshaled. +
  • + +
  • +The encoding/json's +Decoder +type has a new method that provides a streaming interface for decoding +a JSON document: +Token. +It also interoperates with the existing functionality of Decode, +which will continue a decode operation already started with Decoder.Token. +
  • + +
  • +The flag package +has a new function, UnquoteUsage, +to assist in the creation of usage messages using the new convention +described above. +
  • + +
  • +In the fmt package, a value of type Value now prints what it holds, rather than use the reflect.Value's Stringer method, which produces things like <int Value>. @@ -486,6 +966,76 @@ semicolon was implicitly added or was present in the source. For forward compatibility the go/build package reserves GOARCH values for a number of architectures that Go might support one day. This is not a promise that it will. +Also, the Package struct +now has a PkgTargetRoot field that stores the +architecture-dependent root directory in which to install, if known. +
  • + +
  • +The (newly migrated) go/types +package allows one to control the prefix attached to package-level names using +the new Qualifier +function type as an argument to several functions. This is an API change for +the package, but since it is new to the core, it is not breaking the Go 1 compatibility +rules since code that uses the package must explicitly ask for it at its new location. +To update, run +go fix on your package. +
  • + +
  • +In the image package, +the Rectangle type +now implements the Image interface, +mask image when drawing. +
  • + +
  • +Also in the image package, +to assist in the handling of some JPEG images, +there is now support for 4:1:1 and 4:1:0 YCbCr subsampling and basic +CMYK support, represented by the new image.CMYK struct. +
  • + +
  • +The image/color package +adds basic CMYK support, through the new +CMYK struct, +the CMYKModel color model, and the +CMYKToRGB function, as +needed by some JPEG images. +
  • + +
  • +Also in the image/color package, +the conversion of a YCbCr +value to RGBA has become more precise. +Previously, the low 8 bits were just an echo of the high 8 bits; +now they contain more accurate information. +Because of the echo property of the old code, the operation +uint8(r) to extract an 8-bit red value worked, but is incorrect. +In Go 1.5, that operation may yield a different value. +The correct code is, and always was, to select the high 8 bits: +uint8(r>>8). +Incidentally, image/draw package +provides better support for such conversions; see +this blog post +for more information. +
  • + +
  • +Finally, as of Go 1.5 the closest match check in +Index +now honors the alpha channel. +
  • + +
  • +The image/gif package +includes a couple of generalizations. +A multiple-frame GIF file can now have an overall bounds different +from all the contained single frames' bounds. +Also, the GIF struct +now has a Disposal field +that specifies the disposal method for each frame.
  • @@ -519,7 +1069,16 @@ method for the Int type.
  • -The mime package adds an +The mime package +adds a new WordDecoder type +to decode MIME headers containing RFC 204-encoded words. +It also provides BEncoding and +QEncoding +as implementations of the encoding schemes of RFC 2045 and RFC 2047. +
  • + +
  • +The mime package also adds an ExtensionsByType function that returns the MIME extensions know to be associated with a given MIME type.
  • @@ -530,43 +1089,81 @@ package that implements the quoted-printable encoding defined by RFC 2045.
  • -TODO net: add sequential and RFC 6555-compliant TCP dialing (https://golang.org/cl/8768) +The net package will now +Dial hostnames by trying each +IP address in order until one succeeds. +The Dialer.DualStack +mode now implements Happy Eyeballs +(RFC 6555) by giving the +first address family a 300ms head start; this value can be overridden by +the new Dialer.FallbackDelay.
  • -TODO net: add Source field to OpError (https://go-review.googlesource.com/9231) +A number of inconsistencies in the types returned by errors in the +net package have been +tidied up. +Most now return an +OpError value +with more information than before. +Also, the OpError +type now includes a Source field that holds the local +network address.
  • -TODO net: fix inconsistent errors (https://golang.org/cl/9236) +The net/http package now +has support for setting trailers from a server Handler. +For details, see the documentation for +ResponseWriter.
  • -TODO net: add SocketConn, SocketPacketConn (https://golang.org/cl/9275) +There is a new method to cancel a net/http +Request by setting the new +Request.Cancel +field. +It is supported by http.Transport. +The Cancel field's type is compatible with the +context.Context.Done +return value.
  • -TODO net: use Go's DNS resolver when system configuration permits (https://golang.org/cl/8945) +Also in the net/http package, +there is code to ignore the zero Time value +in the ServeContent function. +As of Go 1.5, it now also ignores a time value equal to the Unix epoch.
  • -TODO net/http: support for setting trailers from a server Handler (https://golang.org/cl/2157) +The net/http/fcgi package +exports two new errors, +ErrConnClosed and +ErrRequestAborted, +to report the corresponding error conditions.
  • -TODO net/http: ignore the Unix epoch time in ServeContent (https://golang.org/cl/7915) +The net/http/cgi package +had a bug that mishandled the values of the environment variables +REMOTE_ADDR ad REMOTE_HOST. +This has been fixed. +Also, starting with Go 1.5 the package sets the REMOTE_PORT +variable.
  • -TODO net/http/cgi: fix REMOTE_ADDR, REMOTE_HOST, add REMOTE_PORT (https://golang.org/cl/4933) +The net/mail package +adds a AddressParser +type that can parse mail addresses.
  • -TODO net/mail: adds AddressParser type (https://golang.org/cl/10392) -
  • - -
  • -TODO net/smtp: add TLSConnectionState accessor (https://golang.org/cl/2151) +The net/smtp package +now has a TLSConnectionState +accessor to the Client +type that returns the client's TLS state.
  • @@ -582,6 +1179,20 @@ adds new Ignore and Reset functions.
  • +
  • +The runtime, +runtime/pprof, +and net/http/pprof packages +each have new functions to support the tracing facilities described above: +ReadTrace, +StartTrace, +StopTrace, +StartTrace, +StopTrace, and +Trace. +See the respective documentation for details. +
  • +
  • The runtime/pprof package by default now includes overall memory statistics in all memory profiles. @@ -641,7 +1252,7 @@ The default, which can now be overridden, is as before: to continue with an inva
  • The time package's Time type has a new method -AppendFormat, +AppendFormat, which can be used to avoid allocation when printing a time value.
  • diff --git a/doc/go1compat.html b/doc/go1compat.html index d800dec0c0..607d354687 100644 --- a/doc/go1compat.html +++ b/doc/go1compat.html @@ -95,6 +95,18 @@ We therefore recommend that composite literals whose type is defined in a separate package should use the keyed notation. +
  • +Methods. As with struct fields, it may be necessary to add methods +to types. +Under some circumstances, such as when the type is embedded in +a struct along with another type, +the addition of the new method may break +the struct by creating a conflict with an existing method of the other +embedded type. +We cannot protect against this rare case and do not guarantee compatibility +should it arise. +
  • +
  • Dot imports. If a program imports a standard package using import . "path", additional names defined in the diff --git a/doc/go_faq.html b/doc/go_faq.html index d5ee805703..33636fca39 100644 --- a/doc/go_faq.html +++ b/doc/go_faq.html @@ -92,13 +92,6 @@ portability and the addition of new functionality such as improved support for i There may well be a Go 2 one day, but not for a few years and it will be influenced by what we learn using Go 1 as it is today.

    -

    -What is the origin of the name?

    - -

    -“Ogle” would be a good name for a Go debugger. -

    -

    What's the origin of the mascot?

    @@ -893,7 +886,7 @@ encourages you to be explicit.

    -A blog post titled Constants +A blog post titled Constants explores this topic in more detail.

    @@ -1591,6 +1584,51 @@ test cases. The standard Go library is full of illustrative examples, such as in the formatting tests for the fmt package.

    +

    +Why isn't X in the standard library?

    + +

    +The standard library's purpose is to support the runtime, connect to +the operating system, and provide key functionality that many Go +programs require, such as formatted I/O and networking. +It also contains elements important for web programming, including +cryptography and support for standards like HTTP, JSON, and XML. +

    + +

    +There is no clear criterion that defines what is included because for +a long time, this was the only Go library. +There are criteria that define what gets added today, however. +

    + +

    +New additions to the standard library are rare and the bar for +inclusion is high. +Code included in the standard library bears a large ongoing maintenance cost +(often borne by those other than the original author), +is subject to the Go 1 compatibility promise +(blocking fixes to any flaws in the API), +and is subject to the Go +release schedule, +preventing bug fixes from being available to users quickly. +

    + +

    +Most new code should live outside of the standard library and be accessible +via the go tool's +go get command. +Such code can have its own maintainers, release cycle, +and compatibility guarantees. +Users can find packages and read their documentation at +godoc.org. +

    + +

    +Although there are pieces in the standard library that don't really belong, +such as log/syslog, we continue to maintain everything in the +library because of the Go 1 compatibility promise. +But we encourage most new code to live elsewhere. +

    Implementation

    diff --git a/doc/go_spec.html b/doc/go_spec.html index cc01494ff5..95406a1687 100644 --- a/doc/go_spec.html +++ b/doc/go_spec.html @@ -1,6 +1,6 @@ @@ -129,27 +129,27 @@ hex_digit = "0" … "9" | "A" … "F" | "a" … "f" .

    Comments

    -There are two forms of comments: +Comments serve as program documentation. There are two forms:

    1. Line comments start with the character sequence // -and stop at the end of the line. A line comment acts like a newline. +and stop at the end of the line.
    2. General comments start with the character sequence /* -and continue through the character sequence */. A general -comment containing one or more newlines acts like a newline, otherwise it acts -like a space. +and stop with the first subsequent character sequence */.

    -Comments do not nest. +A comment cannot start inside a rune or +string literal, or inside a comment. +A general comment containing no newlines acts like a space. +Any other comment acts like a newline.

    -

    Tokens

    @@ -176,11 +176,8 @@ using the following two rules:

    1. -

      When the input is broken into tokens, a semicolon is automatically inserted -into the token stream at the end of a non-blank line if the line's final -token is -

      +into the token stream immediately after a line's final token if that token is
      • an identifier @@ -357,9 +354,10 @@ imaginary_lit = (decimals | float_lit) "i" .

        A rune literal represents a rune constant, an integer value identifying a Unicode code point. -A rune literal is expressed as one or more characters enclosed in single quotes. -Within the quotes, any character may appear except single -quote and newline. A single quoted character represents the Unicode value +A rune literal is expressed as one or more characters enclosed in single quotes, +as in 'x' or '\n'. +Within the quotes, any character may appear except newline and unescaped single +quote. A single quoted character represents the Unicode value of the character itself, while multi-character sequences beginning with a backslash encode values in various formats. @@ -433,6 +431,7 @@ escaped_char = `\` ( "a" | "b" | "f" | "n" | "r" | "t" | "v" | `\` | "'" | ` '\xff' '\u12e4' '\U00101234' +'\'' // rune literal containing single quote character 'aa' // illegal: too many characters '\xa' // illegal: too few hexadecimal digits '\0' // illegal: too few octal digits @@ -449,8 +448,8 @@ obtained from concatenating a sequence of characters. There are two forms: raw string literals and interpreted string literals.

        -Raw string literals are character sequences between back quotes -``. Within the quotes, any character is legal except +Raw string literals are character sequences between back quotes, as in +`foo`. Within the quotes, any character may appear except back quote. The value of a raw string literal is the string composed of the uninterpreted (implicitly UTF-8-encoded) characters between the quotes; @@ -461,8 +460,9 @@ are discarded from the raw string value.

        Interpreted string literals are character sequences between double -quotes "". The text between the quotes, -which may not contain newlines, forms the +quotes, as in "bar". +Within the quotes, any character may appear except newline and unescaped double quote. +The text between the quotes forms the value of the literal, with backslash escapes interpreted as they are in rune literals (except that \' is illegal and \" is legal), with the same restrictions. @@ -484,17 +484,17 @@ interpreted_string_lit = `"` { unicode_value | byte_value } `"` .

        -`abc`  // same as "abc"
        +`abc`                // same as "abc"
         `\n
        -\n`    // same as "\\n\n\\n"
        +\n`                  // same as "\\n\n\\n"
         "\n"
        -""
        +"\""                 // same as `"`
         "Hello, world!\n"
         "日本語"
         "\u65e5本\U00008a9e"
         "\xff\u00FF"
        -"\uD800"       // illegal: surrogate half
        -"\U00110000"   // illegal: invalid Unicode code point
        +"\uD800"             // illegal: surrogate half
        +"\U00110000"         // illegal: invalid Unicode code point
         

        @@ -2090,7 +2090,7 @@ Receiver = Parameters .

        -The receiver is specified via an extra parameter section preceeding the method +The receiver is specified via an extra parameter section preceding the method name. That parameter section must declare a single parameter, the receiver. Its type must be of the form T or *T (possibly using parentheses) where T is a type name. The type denoted by T is called diff --git a/doc/gopher/README b/doc/gopher/README index 936a24c66a..d4ca8a1c2d 100644 --- a/doc/gopher/README +++ b/doc/gopher/README @@ -1,3 +1,3 @@ The Go gopher was designed by Renee French. (http://reneefrench.blogspot.com/) The design is licensed under the Creative Commons 3.0 Attributions license. -Read this article for more details: http://blog.golang.org/gopher +Read this article for more details: https://blog.golang.org/gopher diff --git a/doc/install-source.html b/doc/install-source.html index 11e00d055b..d0e4d1a1f7 100644 --- a/doc/install-source.html +++ b/doc/install-source.html @@ -487,6 +487,7 @@ The valid combinations of $GOOS and $GOARCH are: windows amd64 +

      • $GOHOSTOS and $GOHOSTARCH

        diff --git a/lib/time/update.bash b/lib/time/update.bash index caa8450fa6..3ef1df582c 100755 --- a/lib/time/update.bash +++ b/lib/time/update.bash @@ -7,8 +7,8 @@ # downloaded from the ICANN/IANA distribution. # Versions to use. -CODE=2014j -DATA=2014j +CODE=2015e +DATA=2015e set -e rm -rf work diff --git a/lib/time/zoneinfo.zip b/lib/time/zoneinfo.zip index 425d7c98fa..73c30b4597 100644 Binary files a/lib/time/zoneinfo.zip and b/lib/time/zoneinfo.zip differ diff --git a/misc/cgo/test/cflags.go b/misc/cgo/test/cflags.go index 313824a10e..6571fe02dc 100644 --- a/misc/cgo/test/cflags.go +++ b/misc/cgo/test/cflags.go @@ -4,7 +4,7 @@ // Test that the #cgo CFLAGS directive works, // with and without platform filters. -// See http://golang.org/issue/5224 for details. +// See https://golang.org/issue/5224 for details. package cgotest /* diff --git a/misc/cgo/test/cgo_test.go b/misc/cgo/test/cgo_test.go index 1a9207ca2a..9af31e8a20 100644 --- a/misc/cgo/test/cgo_test.go +++ b/misc/cgo/test/cgo_test.go @@ -64,5 +64,6 @@ func TestReturnAfterGrowFromGo(t *testing.T) { testReturnAfterGrowFromGo(t) } func Test9026(t *testing.T) { test9026(t) } func Test9557(t *testing.T) { test9557(t) } func Test10303(t *testing.T) { test10303(t, 10) } +func Test11925(t *testing.T) { test11925(t) } func BenchmarkCgoCall(b *testing.B) { benchCgoCall(b) } diff --git a/misc/cgo/test/issue11925.go b/misc/cgo/test/issue11925.go new file mode 100644 index 0000000000..9e50fb7027 --- /dev/null +++ b/misc/cgo/test/issue11925.go @@ -0,0 +1,37 @@ +// Copyright 2015 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Issue 11925. Structs with zero-length trailing fields are now +// padded by the Go compiler. + +package cgotest + +/* +struct a11925 { + int i; + char a[0]; + char b[0]; +}; + +struct b11925 { + int i; + char a[0]; + char b[]; +}; +*/ +import "C" + +import ( + "testing" + "unsafe" +) + +func test11925(t *testing.T) { + if C.sizeof_struct_a11925 != unsafe.Sizeof(C.struct_a11925{}) { + t.Errorf("size of a changed: C %d, Go %d", C.sizeof_struct_a11925, unsafe.Sizeof(C.struct_a11925{})) + } + if C.sizeof_struct_b11925 != unsafe.Sizeof(C.struct_b11925{}) { + t.Errorf("size of b changed: C %d, Go %d", C.sizeof_struct_b11925, unsafe.Sizeof(C.struct_b11925{})) + } +} diff --git a/misc/cgo/test/issue3945.go b/misc/cgo/test/issue3945.go index 331cd0baf5..7e6863f7b6 100644 --- a/misc/cgo/test/issue3945.go +++ b/misc/cgo/test/issue3945.go @@ -5,7 +5,7 @@ package cgotest // Test that cgo reserves enough stack space during cgo call. -// See http://golang.org/issue/3945 for details. +// See https://golang.org/issue/3945 for details. // #include // diff --git a/misc/cgo/test/issue6997_linux.go b/misc/cgo/test/issue6997_linux.go index 5455f0c536..07fd58e399 100644 --- a/misc/cgo/test/issue6997_linux.go +++ b/misc/cgo/test/issue6997_linux.go @@ -4,7 +4,7 @@ // Test that pthread_cancel works as expected // (NPTL uses SIGRTMIN to implement thread cancellation) -// See http://golang.org/issue/6997 +// See https://golang.org/issue/6997 package cgotest /* diff --git a/misc/cgo/test/issue7234_test.go b/misc/cgo/test/issue7234_test.go index 604dfad4ba..a020b6a724 100644 --- a/misc/cgo/test/issue7234_test.go +++ b/misc/cgo/test/issue7234_test.go @@ -7,7 +7,7 @@ package cgotest import "testing" // This test actually doesn't have anything to do with cgo. It is a -// test of http://golang.org/issue/7234, a compiler/linker bug in +// test of https://golang.org/issue/7234, a compiler/linker bug in // handling string constants when using -linkmode=external. The test // is in this directory because we routinely test -linkmode=external // here. diff --git a/misc/cgo/test/issue8428.go b/misc/cgo/test/issue8428.go index a3dc5755ce..16fa7cc6ec 100644 --- a/misc/cgo/test/issue8428.go +++ b/misc/cgo/test/issue8428.go @@ -20,6 +20,7 @@ struct issue8428two { void *p; char b; char rest[0]; + char pad; }; struct issue8428three { @@ -34,8 +35,10 @@ import "C" import "unsafe" var _ = C.struct_issue8428one{ - b: C.char(0), - rest: [0]C.char{}, + b: C.char(0), + // The trailing rest field is not available in cgo. + // See issue 11925. + // rest: [0]C.char{}, } var _ = C.struct_issue8428two{ diff --git a/misc/cgo/test/setgid_linux.go b/misc/cgo/test/setgid_linux.go index 4da0d300e9..197f01fb7e 100644 --- a/misc/cgo/test/setgid_linux.go +++ b/misc/cgo/test/setgid_linux.go @@ -3,7 +3,7 @@ // license that can be found in the LICENSE file. // Test that setgid does not hang on GNU/Linux. -// See http://golang.org/issue/3871 for details. +// See https://golang.org/issue/3871 for details. package cgotest diff --git a/misc/cgo/testshared/shared_test.go b/misc/cgo/testshared/shared_test.go index 232ca3394a..6ef448c4f2 100644 --- a/misc/cgo/testshared/shared_test.go +++ b/misc/cgo/testshared/shared_test.go @@ -143,6 +143,10 @@ func testMain(m *testing.M) (int, error) { } func TestMain(m *testing.M) { + // Some of the tests install binaries into a custom GOPATH. + // That won't work if GOBIN is set. + os.Unsetenv("GOBIN") + flag.Parse() exitCode, err := testMain(m) if err != nil { diff --git a/misc/cgo/testshared/src/dep/asm.s b/misc/cgo/testshared/src/dep/asm.s new file mode 100644 index 0000000000..8069ebb749 --- /dev/null +++ b/misc/cgo/testshared/src/dep/asm.s @@ -0,0 +1,10 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//+build !gccgo + +#include "textflag.h" + +TEXT ·ImplementedInAsm(SB),NOSPLIT,$0-0 + RET diff --git a/misc/cgo/testshared/src/dep/gccgo.go b/misc/cgo/testshared/src/dep/gccgo.go new file mode 100644 index 0000000000..552ec303fa --- /dev/null +++ b/misc/cgo/testshared/src/dep/gccgo.go @@ -0,0 +1,5 @@ +//+build gccgo + +package dep + +func ImplementedInAsm() {} diff --git a/misc/cgo/testshared/src/dep/stubs.go b/misc/cgo/testshared/src/dep/stubs.go new file mode 100644 index 0000000000..036296a2fc --- /dev/null +++ b/misc/cgo/testshared/src/dep/stubs.go @@ -0,0 +1,5 @@ +//+build !gccgo + +package dep + +func ImplementedInAsm() diff --git a/misc/cgo/testshared/src/exe/exe.go b/misc/cgo/testshared/src/exe/exe.go index 34fd144632..f64477613a 100644 --- a/misc/cgo/testshared/src/exe/exe.go +++ b/misc/cgo/testshared/src/exe/exe.go @@ -1,7 +1,12 @@ package main -import "dep" +import ( + "dep" + "runtime" +) func main() { + defer dep.ImplementedInAsm() + runtime.GC() dep.V = dep.F() + 1 } diff --git a/misc/cgo/testsovar/cgoso_c.h b/misc/cgo/testsovar/cgoso_c.h index ab304cdcaa..640db7b396 100644 --- a/misc/cgo/testsovar/cgoso_c.h +++ b/misc/cgo/testsovar/cgoso_c.h @@ -11,7 +11,7 @@ # define VAR __declspec(dllimport) #endif #else -# define VAR +# define VAR extern #endif VAR const char *exported_var; diff --git a/misc/chrome/gophertool/gopher.js b/misc/chrome/gophertool/gopher.js index c09c4ef10c..09edb2957b 100644 --- a/misc/chrome/gophertool/gopher.js +++ b/misc/chrome/gophertool/gopher.js @@ -23,7 +23,7 @@ function urlForInput(t) { } if (gerritChangeIdRE.test(t)) { - return "http://golang.org/cl/" + t; + return "https://golang.org/cl/" + t; } var match = commitRE.exec(t); @@ -34,7 +34,7 @@ function urlForInput(t) { if (pkgRE.test(t)) { // TODO: make this smarter, using a list of packages + substring matches. // Get the list from godoc itself in JSON format? - return "http://golang.org/pkg/" + t; + return "https://golang.org/pkg/" + t; } return null; diff --git a/misc/makerelease/darwin/Distribution b/misc/makerelease/darwin/Distribution deleted file mode 100644 index 8b764b69f4..0000000000 --- a/misc/makerelease/darwin/Distribution +++ /dev/null @@ -1,32 +0,0 @@ - - - Go - - - - - - - - - - - - com.googlecode.go.pkg - diff --git a/misc/makerelease/darwin/Resources/bg.png b/misc/makerelease/darwin/Resources/bg.png deleted file mode 100644 index c3d8ea93ac..0000000000 Binary files a/misc/makerelease/darwin/Resources/bg.png and /dev/null differ diff --git a/misc/makerelease/darwin/etc/paths.d/go b/misc/makerelease/darwin/etc/paths.d/go deleted file mode 100644 index 532e5f9364..0000000000 --- a/misc/makerelease/darwin/etc/paths.d/go +++ /dev/null @@ -1 +0,0 @@ -/usr/local/go/bin diff --git a/misc/makerelease/darwin/scripts/postinstall b/misc/makerelease/darwin/scripts/postinstall deleted file mode 100755 index 13f5bff9b1..0000000000 --- a/misc/makerelease/darwin/scripts/postinstall +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -GOROOT=/usr/local/go - -echo "Fixing permissions" -cd $GOROOT -find . -exec chmod ugo+r \{\} \; -find bin -exec chmod ugo+rx \{\} \; -find . -type d -exec chmod ugo+rx \{\} \; -chmod o-w . diff --git a/misc/makerelease/darwin/scripts/preinstall b/misc/makerelease/darwin/scripts/preinstall deleted file mode 100755 index 4cdaaa4bca..0000000000 --- a/misc/makerelease/darwin/scripts/preinstall +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash - -GOROOT=/usr/local/go - -echo "Removing previous installation" -if [ -d $GOROOT ]; then - rm -r $GOROOT -fi diff --git a/misc/makerelease/makerelease.go b/misc/makerelease/makerelease.go deleted file mode 100644 index 054cf6f788..0000000000 --- a/misc/makerelease/makerelease.go +++ /dev/null @@ -1,1089 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// This is a tool for packaging binary releases. -// It supports FreeBSD, Linux, NetBSD, OpenBSD, OS X, and Windows. -package main - -import ( - "archive/tar" - "archive/zip" - "bufio" - "bytes" - "compress/gzip" - "crypto/sha1" - "encoding/json" - "errors" - "flag" - "fmt" - "io" - "io/ioutil" - "log" - "net/http" - "net/url" - "os" - "os/exec" - "path" - "path/filepath" - "regexp" - "runtime" - "strings" - - storage "code.google.com/p/google-api-go-client/storage/v1" - "golang.org/x/oauth2" - "golang.org/x/oauth2/google" -) - -var ( - tag = flag.String("tag", "", "git revision to check out") - toolTag = flag.String("tool", defaultToolTag, "go.tools revision to check out") - tourTag = flag.String("tour", defaultTourTag, "go-tour tag to check out") - repo = flag.String("repo", "https://go.googlesource.com/go", "repo URL") - verbose = flag.Bool("v", false, "verbose output") - upload = flag.Bool("upload", false, "upload resulting files to Google Code") - addLabel = flag.String("label", "", "additional label to apply to file when uploading") - includeRace = flag.Bool("race", true, "build race detector packages") - versionOverride = flag.String("version", "", "override version name") - staticToolchain = flag.Bool("static", true, "try to build statically linked toolchain (only supported on ELF targets)") - tokenCache = flag.String("token", defaultCacheFile, "Authentication token cache file") - storageBucket = flag.String("bucket", "golang", "Cloud Storage Bucket") - uploadURL = flag.String("upload_url", defaultUploadURL, "Upload URL") - - defaultCacheFile = filepath.Join(os.Getenv("HOME"), ".makerelease-request-token") - defaultUploadURL = "http://golang.org/dl/upload" -) - -const ( - blogPath = "golang.org/x/blog" - toolPath = "golang.org/x/tools" - tourPath = "code.google.com/p/go-tour" - defaultToolTag = "release-branch.go1.4" - defaultTourTag = "release-branch.go1.4" -) - -// Import paths for tool commands. -// These must be the command that cmd/go knows to install to $GOROOT/bin -// or $GOROOT/pkg/tool. -var toolPaths = []string{ - "golang.org/x/tools/cmd/cover", - "golang.org/x/tools/cmd/godoc", - "golang.org/x/tools/cmd/vet", -} - -var preBuildCleanFiles = []string{ - "lib/codereview", - "misc/dashboard/godashboard", - "src/cmd/cov", - "src/cmd/prof", - "src/exp", - "src/old", -} - -var cleanFiles = []string{ - ".git", - ".gitignore", - ".gitattributes", - "VERSION.cache", -} - -var sourceCleanFiles = []string{ - "bin", - "pkg", -} - -var tourPackages = []string{ - "pic", - "tree", - "wc", -} - -var tourContent = []string{ - "content", - "solutions", - "static", - "template", -} - -var blogContent = []string{ - "content", - "template", -} - -// The os-arches that support the race toolchain. -var raceAvailable = []string{ - "darwin-amd64", - "linux-amd64", - "windows-amd64", -} - -// The OSes that support building statically linked toolchain -// Only ELF platforms are supported. -var staticLinkAvailable = []string{ - "linux", - "freebsd", - "openbsd", - "netbsd", -} - -var fileRe = regexp.MustCompile(`^(go[a-z0-9-.]+)\.(src|([a-z0-9]+)-([a-z0-9]+)(?:-([a-z0-9.]+))?)\.(tar\.gz|zip|pkg|msi)$`) - -// OAuth2-authenticated HTTP client used to make calls to Cloud Storage. -var oauthClient *http.Client - -// Builder key as specified in ~/.gobuildkey -var builderKey string - -func main() { - flag.Usage = func() { - fmt.Fprintf(os.Stderr, "usage: %s [flags] targets...\n", os.Args[0]) - flag.PrintDefaults() - os.Exit(2) - } - flag.Parse() - if flag.NArg() == 0 { - flag.Usage() - } - if runtime.GOOS == "windows" { - checkWindowsDeps() - } - - if *upload { - if err := readCredentials(); err != nil { - log.Fatalln("readCredentials:", err) - } - if err := setupOAuthClient(); err != nil { - log.Fatalln("setupOAuthClient:", err) - } - } - ok := true - for _, targ := range flag.Args() { - var b Build - if m := fileRe.FindStringSubmatch(targ); m != nil { - // targ is a file name; upload it to googlecode. - version := m[1] - if m[2] == "src" { - b.Source = true - } else { - b.OS = m[3] - b.Arch = m[4] - b.Label = m[5] - } - if !*upload { - log.Printf("%s: -upload=false, skipping", targ) - continue - } - if err := b.Upload(version, targ); err != nil { - log.Printf("uploading %s: %v", targ, err) - } - continue - } - if targ == "source" { - b.Source = true - } else { - p := strings.SplitN(targ, "-", 3) - if len(p) < 2 { - log.Println("Ignoring unrecognized target:", targ) - continue - } - b.OS = p[0] - b.Arch = p[1] - if len(p) >= 3 { - b.Label = p[2] - } - if *includeRace { - for _, t := range raceAvailable { - if t == targ || strings.HasPrefix(targ, t+"-") { - b.Race = true - } - } - } - if *staticToolchain { - for _, os := range staticLinkAvailable { - if b.OS == os { - b.static = true - } - } - } - } - if *tag == "" { - fmt.Fprintln(os.Stderr, "you must specify a -tag") - os.Exit(2) - } - if err := b.Do(); err != nil { - log.Printf("%s: %v", targ, err) - ok = false - } - } - if !ok { - os.Exit(1) - } -} - -type Build struct { - Source bool // if true, OS and Arch must be empty - Race bool // build race toolchain - OS string - Arch string - Label string - root string - gopath string - static bool // if true, build statically linked toolchain -} - -func (b *Build) Do() error { - work, err := ioutil.TempDir("", "makerelease") - if err != nil { - return err - } - defer os.RemoveAll(work) - b.root = filepath.Join(work, "go") - b.gopath = work - - // Clone Go distribution and update to tag. - _, err = b.run(work, "git", "clone", *repo, b.root) - if err != nil { - return err - } - _, err = b.run(b.root, "git", "checkout", *tag) - if err != nil { - return err - } - - // Remove exp and old packages. - if err := b.clean(preBuildCleanFiles); err != nil { - return err - } - - src := filepath.Join(b.root, "src") - if b.Source { - if runtime.GOOS == "windows" { - log.Print("Warning: running make.bash on Windows; source builds are intended to be run on a Unix machine") - } - // Build dist tool only. - _, err = b.run(src, "bash", "make.bash", "--dist-tool") - } else { - // Build. - if b.OS == "windows" { - _, err = b.run(src, "cmd", "/C", "make.bat") - } else { - _, err = b.run(src, "bash", "make.bash") - } - if b.Race { - if err != nil { - return err - } - goCmd := filepath.Join(b.root, "bin", "go") - if b.OS == "windows" { - goCmd += ".exe" - } - // Because on release branches, go install -a std is a NOP, - // we have to resort to delete pkg/$GOOS_$GOARCH, install -race, - // and then reinstall std so that we're not left with a slower, - // race-enabled cmd/go, etc. - goPkg := filepath.Join(b.root, "pkg", b.OS+"_"+b.Arch) - err = os.RemoveAll(goPkg) - if err != nil { - return err - } - _, err = b.run(src, goCmd, "tool", "dist", "install", "runtime") - if err != nil { - return err - } - _, err = b.run(src, goCmd, "install", "-race", "std") - if err != nil { - return err - } - _, err = b.run(src, goCmd, "install", "std") - if err != nil { - return err - } - // Re-building go command leaves old versions of go.exe as go.exe~ on windows. - // See (*builder).copyFile in $GOROOT/src/cmd/go/build.go for details. - // Remove it manually. - if b.OS == "windows" { - os.Remove(goCmd + "~") - } - } - if err != nil { - return err - } - err = b.extras() - } - if err != nil { - return err - } - - // Get version strings. - var ( - version string // "weekly.2012-03-04" - fullVersion []byte // "weekly.2012-03-04 9353aa1efdf3" - ) - pat := filepath.Join(b.root, "pkg/tool/*/dist*") // trailing * for .exe - m, err := filepath.Glob(pat) - if err != nil { - return err - } - if len(m) == 0 { - return fmt.Errorf("couldn't find dist in %q", pat) - } - fullVersion, err = b.run("", m[0], "version") - if err != nil { - return err - } - fullVersion = bytes.TrimSpace(fullVersion) - v := bytes.SplitN(fullVersion, []byte(" "), 2) - version = string(v[0]) - if *versionOverride != "" { - version = *versionOverride - } - - // Write VERSION file. - err = ioutil.WriteFile(filepath.Join(b.root, "VERSION"), fullVersion, 0644) - if err != nil { - return err - } - - // Clean goroot. - if err := b.clean(cleanFiles); err != nil { - return err - } - if b.Source { - if err := b.clean(sourceCleanFiles); err != nil { - return err - } - } - - // Create packages. - base := fmt.Sprintf("%s.%s-%s", version, b.OS, b.Arch) - if b.Label != "" { - base += "-" + b.Label - } - if !strings.HasPrefix(base, "go") { - base = "go." + base - } - var targs []string - switch b.OS { - case "linux", "freebsd", "netbsd", "": - // build tarball - targ := base - if b.Source { - targ = fmt.Sprintf("%s.src", version) - if !strings.HasPrefix(targ, "go") { - targ = "go." + targ - } - } - targ += ".tar.gz" - err = makeTar(targ, work) - targs = append(targs, targ) - case "darwin": - // build tarball - targ := base + ".tar.gz" - err = makeTar(targ, work) - targs = append(targs, targ) - - makerelease := filepath.Join(runtime.GOROOT(), "misc/makerelease") - - // build pkg - // arrange work so it's laid out as the dest filesystem - etc := filepath.Join(makerelease, "darwin/etc") - _, err = b.run(work, "cp", "-r", etc, ".") - if err != nil { - return err - } - localDir := filepath.Join(work, "usr/local") - err = os.MkdirAll(localDir, 0755) - if err != nil { - return err - } - _, err = b.run(work, "mv", "go", localDir) - if err != nil { - return err - } - // build package - pkgdest, err := ioutil.TempDir("", "pkgdest") - if err != nil { - return err - } - defer os.RemoveAll(pkgdest) - _, err = b.run("", "pkgbuild", - "--identifier", "com.googlecode.go", - "--version", version, - "--scripts", filepath.Join(makerelease, "darwin/scripts"), - "--root", work, - filepath.Join(pkgdest, "com.googlecode.go.pkg")) - if err != nil { - return err - } - targ = base + ".pkg" - _, err = b.run("", "productbuild", - "--distribution", filepath.Join(makerelease, "darwin/Distribution"), - "--resources", filepath.Join(makerelease, "darwin/Resources"), - "--package-path", pkgdest, - targ) - if err != nil { - return err - } - targs = append(targs, targ) - case "windows": - // Create ZIP file. - zip := filepath.Join(work, base+".zip") - err = makeZip(zip, work) - // Copy zip to target file. - targ := base + ".zip" - err = cp(targ, zip) - if err != nil { - return err - } - targs = append(targs, targ) - - // Create MSI installer. - win := filepath.Join(runtime.GOROOT(), "misc/makerelease/windows") - installer := filepath.Join(win, "installer.wxs") - appfiles := filepath.Join(work, "AppFiles.wxs") - msi := filepath.Join(work, "installer.msi") - // Gather files. - _, err = b.run(work, "heat", "dir", "go", - "-nologo", - "-gg", "-g1", "-srd", "-sfrag", - "-cg", "AppFiles", - "-template", "fragment", - "-dr", "INSTALLDIR", - "-var", "var.SourceDir", - "-out", appfiles) - if err != nil { - return err - } - // Build package. - _, err = b.run(work, "candle", - "-nologo", - "-dGoVersion="+version, - "-dWixGoVersion="+wixVersion(version), - "-dArch="+b.Arch, - "-dSourceDir=go", - installer, appfiles) - if err != nil { - return err - } - appfiles = filepath.Join(work, "AppFiles.wixobj") - installer = filepath.Join(work, "installer.wixobj") - _, err = b.run(win, "light", - "-nologo", - "-ext", "WixUIExtension", - "-ext", "WixUtilExtension", - installer, appfiles, - "-o", msi) - if err != nil { - return err - } - // Copy installer to target file. - targ = base + ".msi" - err = cp(targ, msi) - targs = append(targs, targ) - } - if err == nil && *upload { - for _, targ := range targs { - err = b.Upload(version, targ) - if err != nil { - return fmt.Errorf("uploading %s: %v", targ, err) - } - } - } - return err -} - -var versionRe = regexp.MustCompile(`^go([0-9]+(\.[0-9]+)*)`) - -// The Microsoft installer requires version format major.minor.build -// (http://msdn.microsoft.com/en-us/library/aa370859%28v=vs.85%29.aspx). -// Where the major and minor field has a maximum value of 255 and build 65535. -// The offical Go version format is goMAJOR.MINOR.PATCH at $GOROOT/VERSION. -// It's based on the Mercurial tag. Remove prefix and suffix to make the -// installer happy. -func wixVersion(v string) string { - m := versionRe.FindStringSubmatch(v) - if m == nil { - return "0.0.0" - } - return m[1] -} - -// extras fetches the go.tools, go.blog, and go-tour repositories, -// builds them and copies the resulting binaries and static assets -// to the new GOROOT. -func (b *Build) extras() error { - defer b.cleanGopath() - - if err := b.tools(); err != nil { - return err - } - if err := b.blog(); err != nil { - return err - } - return b.tour() -} - -func (b *Build) get(repoPath, revision string) error { - // Fetch the packages (without building/installing). - _, err := b.run(b.gopath, filepath.Join(b.root, "bin", "go"), - "get", "-d", repoPath+"/...") - if err != nil { - return err - } - - // Update the repo to the specified revision. - dest := filepath.Join(b.gopath, "src", filepath.FromSlash(repoPath)) - switch { - case exists(filepath.Join(dest, ".git")): - _, err = b.run(dest, "git", "checkout", revision) - case exists(filepath.Join(dest, ".hg")): - _, err = b.run(dest, "hg", "update", revision) - default: - err = errors.New("unknown version control system") - } - return err -} - -func (b *Build) tools() error { - // Fetch the go.tools repository. - if err := b.get(toolPath, *toolTag); err != nil { - return err - } - - // Install tools. - args := append([]string{"install"}, toolPaths...) - _, err := b.run(b.gopath, filepath.Join(b.root, "bin", "go"), args...) - if err != nil { - return err - } - - // Copy doc.go from go.tools/cmd/$CMD to $GOROOT/src/cmd/$CMD - // while rewriting "package main" to "package documentation". - for _, p := range toolPaths { - d, err := ioutil.ReadFile(filepath.Join(b.gopath, "src", - filepath.FromSlash(p), "doc.go")) - if err != nil { - return err - } - d = bytes.Replace(d, []byte("\npackage main\n"), - []byte("\npackage documentation\n"), 1) - cmdDir := filepath.Join(b.root, "src", "cmd", path.Base(p)) - if err := os.MkdirAll(cmdDir, 0755); err != nil { - return err - } - docGo := filepath.Join(cmdDir, "doc.go") - if err := ioutil.WriteFile(docGo, d, 0644); err != nil { - return err - } - } - - return nil -} - -func (b *Build) blog() error { - // Fetch the blog repository. - _, err := b.run(b.gopath, filepath.Join(b.root, "bin", "go"), "get", "-d", blogPath+"/blog") - if err != nil { - return err - } - - // Copy blog content to $GOROOT/blog. - blogSrc := filepath.Join(b.gopath, "src", filepath.FromSlash(blogPath)) - contentDir := filepath.Join(b.root, "blog") - return cpAllDir(contentDir, blogSrc, blogContent...) -} - -func (b *Build) tour() error { - // Fetch the go-tour repository. - if err := b.get(tourPath, *tourTag); err != nil { - return err - } - - // Build tour binary. - _, err := b.run(b.gopath, filepath.Join(b.root, "bin", "go"), - "install", tourPath+"/gotour") - if err != nil { - return err - } - - // Copy all the tour content to $GOROOT/misc/tour. - importPath := filepath.FromSlash(tourPath) - tourSrc := filepath.Join(b.gopath, "src", importPath) - contentDir := filepath.Join(b.root, "misc", "tour") - if err = cpAllDir(contentDir, tourSrc, tourContent...); err != nil { - return err - } - - // Copy the tour source code so it's accessible with $GOPATH pointing to $GOROOT/misc/tour. - if err = cpAllDir(filepath.Join(contentDir, "src", importPath), tourSrc, tourPackages...); err != nil { - return err - } - - // Copy gotour binary to tool directory as "tour"; invoked as "go tool tour". - return cp( - filepath.Join(b.root, "pkg", "tool", b.OS+"_"+b.Arch, "tour"+ext()), - filepath.Join(b.gopath, "bin", "gotour"+ext()), - ) -} - -func (b *Build) cleanGopath() { - for _, d := range []string{"bin", "pkg", "src"} { - os.RemoveAll(filepath.Join(b.gopath, d)) - } -} - -func ext() string { - if runtime.GOOS == "windows" { - return ".exe" - } - return "" -} - -func (b *Build) run(dir, name string, args ...string) ([]byte, error) { - buf := new(bytes.Buffer) - absName, err := lookPath(name) - if err != nil { - return nil, err - } - cmd := exec.Command(absName, args...) - var output io.Writer = buf - if *verbose { - log.Printf("Running %q %q", absName, args) - output = io.MultiWriter(buf, os.Stdout) - } - cmd.Stdout = output - cmd.Stderr = output - cmd.Dir = dir - cmd.Env = b.env() - if err := cmd.Run(); err != nil { - fmt.Fprintf(os.Stderr, "%s", buf.Bytes()) - return nil, fmt.Errorf("%s %s: %v", name, strings.Join(args, " "), err) - } - return buf.Bytes(), nil -} - -var cleanEnv = []string{ - "GOARCH", - "GOBIN", - "GOHOSTARCH", - "GOHOSTOS", - "GOOS", - "GOROOT", - "GOROOT_FINAL", - "GOPATH", -} - -func (b *Build) env() []string { - env := os.Environ() - for i := 0; i < len(env); i++ { - for _, c := range cleanEnv { - if strings.HasPrefix(env[i], c+"=") { - env = append(env[:i], env[i+1:]...) - } - } - } - final := "/usr/local/go" - if b.OS == "windows" { - final = `c:\go` - } - env = append(env, - "GOARCH="+b.Arch, - "GOHOSTARCH="+b.Arch, - "GOHOSTOS="+b.OS, - "GOOS="+b.OS, - "GOROOT="+b.root, - "GOROOT_FINAL="+final, - "GOPATH="+b.gopath, - ) - if b.static { - env = append(env, "GO_DISTFLAGS=-s") - } - return env -} - -func (b *Build) Upload(version string, filename string) error { - file, err := ioutil.ReadFile(filename) - if err != nil { - return err - } - - svc, err := storage.New(oauthClient) - if err != nil { - return err - } - obj := &storage.Object{ - Acl: []*storage.ObjectAccessControl{{Entity: "allUsers", Role: "READER"}}, - Name: filename, - } - _, err = svc.Objects.Insert(*storageBucket, obj).Media(bytes.NewReader(file)).Do() - if err != nil { - return err - } - - sum := fmt.Sprintf("%x", sha1.Sum(file)) - kind := "unknown" - switch { - case b.Source: - kind = "source" - case strings.HasSuffix(filename, ".tar.gz"), strings.HasSuffix(filename, ".zip"): - kind = "archive" - case strings.HasSuffix(filename, ".msi"), strings.HasSuffix(filename, ".pkg"): - kind = "installer" - } - req, err := json.Marshal(File{ - Filename: filename, - Version: version, - OS: b.OS, - Arch: b.Arch, - Checksum: sum, - Size: len(file), - Kind: kind, - }) - if err != nil { - return err - } - u := fmt.Sprintf("%s?%s", *uploadURL, url.Values{"key": []string{builderKey}}.Encode()) - resp, err := http.Post(u, "application/json", bytes.NewReader(req)) - if err != nil { - return err - } - defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { - return fmt.Errorf("upload status: %v", resp.Status) - } - - return nil -} - -type File struct { - Filename string - OS string - Arch string - Version string - Checksum string `datastore:",noindex"` - Size int `datastore:",noindex"` - Kind string // "archive", "installer", "source" -} - -func setupOAuthClient() error { - config := &oauth2.Config{ - ClientID: "999119582588-h7kpj5pcm6d9solh5lgrbusmvvk4m9dn.apps.googleusercontent.com", - ClientSecret: "8YLFgOhXIELWbO-NtF3iqIQz", - Endpoint: google.Endpoint, - Scopes: []string{storage.DevstorageRead_writeScope}, - RedirectURL: "oob", - } - url := config.AuthCodeURL("junk") - fmt.Println("Visit the following URL, obtain an authentication" + - "code, and enter it below.") - fmt.Println(url) - fmt.Print("Enter authentication code: ") - code := "" - if _, err := fmt.Scan(&code); err != nil { - return err - } - tok, err := config.Exchange(oauth2.NoContext, code) - if err != nil { - return err - } - oauthClient = config.Client(oauth2.NoContext, tok) - return nil -} - -func (b *Build) clean(files []string) error { - for _, name := range files { - path := filepath.Join(b.root, name) - var err error - if b.OS == "windows" { - // Git sets some of its packfiles as 'read only', - // so os.RemoveAll will fail for the ".git" directory. - // Instead, shell out to cmd's 'del' subcommand. - cmd := exec.Command("cmd.exe", "/C", "del", "/Q", "/F", "/S", path) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err = cmd.Run() - } else { - err = os.RemoveAll(path) - } - if err != nil { - return err - } - } - return nil -} - -func exists(path string) bool { - _, err := os.Stat(path) - return err == nil -} - -func readCredentials() error { - name := os.Getenv("HOME") - if runtime.GOOS == "windows" { - name = os.Getenv("HOMEDRIVE") + os.Getenv("HOMEPATH") - } - name = filepath.Join(name, ".gobuildkey") - f, err := os.Open(name) - if err != nil { - return err - } - defer f.Close() - s := bufio.NewScanner(f) - if s.Scan() { - builderKey = s.Text() - } - return s.Err() -} - -func cp(dst, src string) error { - sf, err := os.Open(src) - if err != nil { - return err - } - defer sf.Close() - fi, err := sf.Stat() - if err != nil { - return err - } - df, err := os.Create(dst) - if err != nil { - return err - } - defer df.Close() - // Windows doesn't currently implement Fchmod - if runtime.GOOS != "windows" { - if err := df.Chmod(fi.Mode()); err != nil { - return err - } - } - _, err = io.Copy(df, sf) - return err -} - -func cpDir(dst, src string) error { - walk := func(srcPath string, info os.FileInfo, err error) error { - if err != nil { - return err - } - dstPath := filepath.Join(dst, srcPath[len(src):]) - if info.IsDir() { - return os.MkdirAll(dstPath, 0755) - } - return cp(dstPath, srcPath) - } - return filepath.Walk(src, walk) -} - -func cpAllDir(dst, basePath string, dirs ...string) error { - for _, dir := range dirs { - if err := cpDir(filepath.Join(dst, dir), filepath.Join(basePath, dir)); err != nil { - return err - } - } - return nil -} - -func makeTar(targ, workdir string) error { - f, err := os.Create(targ) - if err != nil { - return err - } - zout := gzip.NewWriter(f) - tw := tar.NewWriter(zout) - - err = filepath.Walk(workdir, func(path string, fi os.FileInfo, err error) error { - if !strings.HasPrefix(path, workdir) { - log.Panicf("walked filename %q doesn't begin with workdir %q", path, workdir) - } - name := path[len(workdir):] - - // Chop of any leading / from filename, leftover from removing workdir. - if strings.HasPrefix(name, "/") { - name = name[1:] - } - // Don't include things outside of the go subdirectory (for instance, - // the zip file that we're currently writing here.) - if !strings.HasPrefix(name, "go/") { - return nil - } - if *verbose { - log.Printf("adding to tar: %s", name) - } - target, _ := os.Readlink(path) - hdr, err := tar.FileInfoHeader(fi, target) - if err != nil { - return err - } - hdr.Name = name - hdr.Uname = "root" - hdr.Gname = "root" - hdr.Uid = 0 - hdr.Gid = 0 - - // Force permissions to 0755 for executables, 0644 for everything else. - if fi.Mode().Perm()&0111 != 0 { - hdr.Mode = hdr.Mode&^0777 | 0755 - } else { - hdr.Mode = hdr.Mode&^0777 | 0644 - } - - err = tw.WriteHeader(hdr) - if err != nil { - return fmt.Errorf("Error writing file %q: %v", name, err) - } - if fi.IsDir() { - return nil - } - r, err := os.Open(path) - if err != nil { - return err - } - defer r.Close() - _, err = io.Copy(tw, r) - return err - }) - if err != nil { - return err - } - if err := tw.Close(); err != nil { - return err - } - if err := zout.Close(); err != nil { - return err - } - return f.Close() -} - -func makeZip(targ, workdir string) error { - f, err := os.Create(targ) - if err != nil { - return err - } - zw := zip.NewWriter(f) - - err = filepath.Walk(workdir, func(path string, fi os.FileInfo, err error) error { - if !strings.HasPrefix(path, workdir) { - log.Panicf("walked filename %q doesn't begin with workdir %q", path, workdir) - } - name := path[len(workdir):] - - // Convert to Unix-style named paths, as that's the - // type of zip file that archive/zip creates. - name = strings.Replace(name, "\\", "/", -1) - // Chop of any leading / from filename, leftover from removing workdir. - if strings.HasPrefix(name, "/") { - name = name[1:] - } - // Don't include things outside of the go subdirectory (for instance, - // the zip file that we're currently writing here.) - if !strings.HasPrefix(name, "go/") { - return nil - } - if *verbose { - log.Printf("adding to zip: %s", name) - } - fh, err := zip.FileInfoHeader(fi) - if err != nil { - return err - } - fh.Name = name - fh.Method = zip.Deflate - if fi.IsDir() { - fh.Name += "/" // append trailing slash - fh.Method = zip.Store // no need to deflate 0 byte files - } - w, err := zw.CreateHeader(fh) - if err != nil { - return err - } - if fi.IsDir() { - return nil - } - r, err := os.Open(path) - if err != nil { - return err - } - defer r.Close() - _, err = io.Copy(w, r) - return err - }) - if err != nil { - return err - } - if err := zw.Close(); err != nil { - return err - } - return f.Close() -} - -type tool struct { - name string - commonDirs []string -} - -var wixTool = tool{ - "http://wix.sourceforge.net/, version 3.5", - []string{`C:\Program Files\Windows Installer XML v3.5\bin`, - `C:\Program Files (x86)\Windows Installer XML v3.5\bin`}, -} - -var hgTool = tool{ - "http://mercurial.selenic.com/wiki/WindowsInstall", - []string{`C:\Program Files\Mercurial`, - `C:\Program Files (x86)\Mercurial`, - }, -} - -var gitTool = tool{ - "http://git-scm.com/download/win", - []string{`C:\Program Files\Git`, `C:\Program Files (x86)\Git`}, -} - -var gccTool = tool{ - "Mingw gcc; http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/", - []string{`C:\Mingw\bin`}, -} - -var windowsDeps = map[string]tool{ - "gcc": gccTool, - "heat": wixTool, - "candle": wixTool, - "light": wixTool, - "cmd": {"Windows cmd.exe", nil}, - "git": gitTool, - "hg": hgTool, -} - -func checkWindowsDeps() { - for prog, help := range windowsDeps { - absPath, err := lookPath(prog) - if err != nil { - log.Fatalf("Failed to find necessary binary %q in path or common locations; %s", prog, help) - } - if *verbose { - log.Printf("found windows dep %s at %s", prog, absPath) - } - } -} - -func lookPath(prog string) (absPath string, err error) { - absPath, err = exec.LookPath(prog) - if err == nil { - return - } - t, ok := windowsDeps[prog] - if !ok { - return - } - for _, dir := range t.commonDirs { - for _, ext := range []string{"exe", "bat"} { - absPath = filepath.Join(dir, prog+"."+ext) - if _, err1 := os.Stat(absPath); err1 == nil { - err = nil - os.Setenv("PATH", os.Getenv("PATH")+";"+dir) - return - } - } - } - return -} diff --git a/misc/makerelease/windows/LICENSE.rtf b/misc/makerelease/windows/LICENSE.rtf deleted file mode 100644 index b2b0be62c0..0000000000 Binary files a/misc/makerelease/windows/LICENSE.rtf and /dev/null differ diff --git a/misc/makerelease/windows/README.txt b/misc/makerelease/windows/README.txt deleted file mode 100644 index 0cf828b24d..0000000000 --- a/misc/makerelease/windows/README.txt +++ /dev/null @@ -1,25 +0,0 @@ - -Windows build dependencies - -- Mercurial (hg): http://mercurial.selenic.com/ -- MinGW: http://www.mingw.org/ -- Windows Installer XML (WiX) toolset: http://wix.sourceforge.net/ - -Packaging - -The dependencies must be in/added to the system's search PATH. - -Run bindist as normal, eg: - bindist windows-386 - -TODO - -- Documentation server shortcut checkbox option - -Misc - -WiX box sizes: - - banner size: 493x58 - - left side of dialog: 164x312 - - full dialog size: 493x312 - diff --git a/misc/makerelease/windows/images/Banner.jpg b/misc/makerelease/windows/images/Banner.jpg deleted file mode 100644 index ce65f63af9..0000000000 Binary files a/misc/makerelease/windows/images/Banner.jpg and /dev/null differ diff --git a/misc/makerelease/windows/images/Dialog.jpg b/misc/makerelease/windows/images/Dialog.jpg deleted file mode 100644 index 1f0ec0a313..0000000000 Binary files a/misc/makerelease/windows/images/Dialog.jpg and /dev/null differ diff --git a/misc/makerelease/windows/images/DialogLeft.jpg b/misc/makerelease/windows/images/DialogLeft.jpg deleted file mode 100644 index 73bab89b43..0000000000 Binary files a/misc/makerelease/windows/images/DialogLeft.jpg and /dev/null differ diff --git a/misc/makerelease/windows/images/gopher.ico b/misc/makerelease/windows/images/gopher.ico deleted file mode 100644 index 2e861ebe04..0000000000 Binary files a/misc/makerelease/windows/images/gopher.ico and /dev/null differ diff --git a/misc/makerelease/windows/installer.wxs b/misc/makerelease/windows/installer.wxs deleted file mode 100644 index 01178e2651..0000000000 --- a/misc/makerelease/windows/installer.wxs +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - -1 - - - - VersionNT >= 500 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/misc/nacl/README b/misc/nacl/README index b7163d3d73..99b94dc90a 100644 --- a/misc/nacl/README +++ b/misc/nacl/README @@ -11,7 +11,7 @@ Go 1.3 supports three architectures limited to a 4gb window. * nacl/arm which is 32-bit ARMv7A architecture with 1GB address space. -For background it is recommended that you read http://golang.org/s/go13nacl. +For background it is recommended that you read https://golang.org/s/go13nacl. Prerequisites ------------- diff --git a/misc/trace/README.md b/misc/trace/README.md index 992b438dc7..8561c79bfd 100644 --- a/misc/trace/README.md +++ b/misc/trace/README.md @@ -2,7 +2,7 @@ This directory contains helper file for trace viewer (`go tool trace`). `trace_viewer_lean.html` was generated by following [instructions](https://github.com/google/trace-viewer/wiki/Embedding) -on revision `3c695b420a09db9933686fa958f1765c373c372e` using: +on revision `280626ef607decf36291e290d5f0322b173e8a7f` using: ``` trace-viewer$ ./vulcanize_trace_viewer --config=lean trace-viewer$ cp bin/trace_viewer_lean.html $GOROOT/misc/trace/ diff --git a/misc/trace/trace_viewer_lean.html b/misc/trace/trace_viewer_lean.html index 5491fd3a4e..5d40bc5805 100644 --- a/misc/trace/trace_viewer_lean.html +++ b/misc/trace/trace_viewer_lean.html @@ -2,12 +2,111 @@ -