AUTHORS | 1504 ----------------------------------------------------- CONTRIBUTORS | 2865 ----------------------------------------------------- doc/go1.19.html | 919 ----------------------------------------------------- misc/cgo/test/setgid2_linux.go | 5 +---- misc/cgo/testcshared/cshared_test.go | 35 +++++++++++++++++++++++++---------- misc/cgo/testplugin/plugin_test.go | 6 ++++++ misc/cgo/testplugin/testdata/issue53989/main.go | 32 ++++++++++++++++++++++++++++++++ misc/cgo/testplugin/testdata/issue53989/p/p.go | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ misc/cgo/testplugin/testdata/issue53989/plugin.go | 13 +++++++++++++ misc/cgo/testshared/shared_test.go | 9 +++++++++ src/bytes/reader.go | 3 +-- src/cmd/cgo/out.go | 23 ++++++++++++++++++----- src/cmd/compile/doc.go | 3 --- src/cmd/compile/internal/amd64/versions_test.go | 31 +++++++++++++++++++++++++------ src/cmd/compile/internal/base/flag.go | 19 +------------------ src/cmd/compile/internal/ir/mini.go | 1 + src/cmd/compile/internal/ir/mknode.go | 9 +++++++++ src/cmd/compile/internal/noder/stencil.go | 4 ++-- src/cmd/compile/internal/ssa/rewrite.go | 1 + src/cmd/compile/internal/ssagen/ssa.go | 4 ++++ src/cmd/compile/internal/types/size.go | 2 ++ src/cmd/compile/internal/types2/sizes.go | 23 +++++++++++++++++++++++ src/cmd/compile/internal/types2/sizes_test.go | 41 ++++++++++++++++++++++++++++++++++++++++- src/cmd/dist/test.go | 4 ++-- src/cmd/go/alldocs.go | 2 +- src/cmd/go/go_test.go | 15 --------------- src/cmd/go/internal/modcmd/download.go | 26 +++++++++++++++++++------- src/cmd/go/internal/modfetch/codehost/codehost.go | 2 +- src/cmd/go/internal/modfetch/coderepo.go | 8 ++++---- src/cmd/go/internal/modindex/read.go | 3 +++ src/cmd/go/internal/modload/build.go | 7 ++++++- src/cmd/go/internal/modload/buildlist.go | 5 ++--- src/cmd/go/internal/test/test.go | 2 +- src/cmd/go/testdata/mod/example.com_retract_noupgrade_v1.0.0.txt | 9 +++++++++ src/cmd/go/testdata/script/build_overlay.txt | 20 ++++++++++++-------- src/cmd/go/testdata/script/get_issue16471.txt | 22 ++++++++++++++++++++++ src/cmd/go/testdata/script/mod_download_issue51114.txt | 21 +++++++++++++++++++++ src/cmd/go/testdata/script/mod_download_private_vcs.txt | 10 +++------- src/cmd/go/testdata/script/mod_retract_noupgrade.txt | 11 +++++++++++ src/cmd/go/testdata/script/test_fuzz_cache.txt | 11 ++++------- src/cmd/go/testdata/script/work_goproxy_off.txt | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/cmd/go/testdata/script/work_why_download_graph.txt | 10 ++++++++-- src/crypto/internal/nistec/p224_sqrt.go | 2 +- src/debug/gosym/symtab.go | 2 +- src/encoding/gob/gobencdec_test.go | 2 +- src/encoding/xml/read_test.go | 5 ++--- src/go/build/build.go | 3 +++ src/go/build/deps_test.go | 8 +++++--- src/go/parser/parser_test.go | 8 ++------ src/go/types/sizes.go | 23 +++++++++++++++++++++++ src/go/types/sizes_test.go | 41 ++++++++++++++++++++++++++++++++++++++++- src/image/jpeg/reader_test.go | 23 +++++++++++------------ src/internal/fuzz/mem.go | 2 +- src/math/big/floatmarsh.go | 7 +++++++ src/math/big/floatmarsh_test.go | 12 ++++++++++++ src/math/big/ratmarsh.go | 6 ++++++ src/math/big/ratmarsh_test.go | 12 ++++++++++++ src/net/http/client.go | 2 +- src/net/http/header.go | 3 ++- src/net/ipsock_posix.go | 6 +++++- src/net/udpsock.go | 4 ++++ src/net/udpsock_test.go | 43 +++++++++++++++++++++++++++++++++++++++++++ src/os/exec/dot_test.go | 80 ++++++++++++++++++++++++++++++++--------------------- src/os/exec/exec.go | 5 +++++ src/os/exec/lp_plan9.go | 3 ++- src/os/exec/lp_unix.go | 3 ++- src/os/exec/lp_windows.go | 6 +++++- src/runtime/asm_arm64.s | 24 +++++++++++++++++------- src/runtime/cgo/gcc_linux_amd64.c | 4 +++- src/runtime/chan.go | 2 +- src/runtime/mgcpacer.go | 22 ++++++++++++++++++++-- src/runtime/mprof.go | 2 +- src/runtime/runtime_test.go | 7 ++++++- src/runtime/string.go | 2 +- src/runtime/testdata/testprog/vdso.go | 2 +- src/runtime/time.go | 12 ++++++++++-- src/time/format.go | 8 ++++---- src/time/format_test.go | 7 +++++++ src/unsafe/unsafe.go | 13 ++++++++++--- test/fixedbugs/issue52278.go | 2 +- test/run.go | 18 +++++++++++++++++- test/typeparam/issue53762.go | 18 ++++++++++++++++++ diff --git a/AUTHORS b/AUTHORS deleted file mode 100644 index bb07bd52e83f42c4970b9c93df9f71cf6632b2fe..0000000000000000000000000000000000000000 --- a/AUTHORS +++ /dev/null @@ -1,1504 +0,0 @@ -# This is the official list of Go authors for copyright purposes. -# This file is distinct from the CONTRIBUTORS files. -# See the latter for an explanation. - -# Since Go 1.11, this file is not actively maintained. -# To be included, send a change adding the individual or -# company who owns a contribution's copyright. - -# Names should be added to this file as one of -# Organization's name -# Individual's name -# Individual's name -# See CONTRIBUTORS for the meaning of multiple email addresses. - -# Please keep the list sorted. - -10x Genomics, Inc. -A Medium Corporation -Aamir Khan -Aaron France -Aaron Stein -Aaron Torres -Aarti Parikh -Abe Haskins -Abhinav Gupta -Adam Eijdenberg -Adam Harvey -Adam Kisala -Adam Medzinski -Adam Shannon -Adam Thomason -Adam Woodbeck -Aditya Mukerjee -Adrian Hesketh -Adrian Nos -Adrian O'Grady -Adrien Bustany -Adrien Petel -Aécio Júnior -Aeneas Rekkas (arekkas) -Afanasev Stanislav -Agis Anastasopoulos -Agniva De Sarker -Ahmed W. Mones -Ahmet Soormally -Ahmy Yulrizka -Aiden Scandella -Ainar Garipov -Aishraj Dahal -Akhil Indurti -Akihiro Suda -Akshat Kumar -Alan Shreve -Albert Nigmatzianov -Albert Strasheim -Albert Yu -Alberto Bertogli -Alberto Donizetti -Alberto García Hierro -Aleksandar Dezelin -Aleksandr Lukinykh -Alekseev Artem -Alessandro Arzilli -Alessandro Baffa -Alex A Skinner -Alex Brainman -Alex Browne -Alex Carol -Alex Jin -Alex Myasoedov -Alex Plugaru -Alex Schroeder -Alex Sergeyev -Alexander Demakin -Alexander Döring -Alexander F Rødseth -Alexander Guz -Alexander Kauer -Alexander Kucherenko -Alexander Larsson -Alexander Menzhinsky -Alexander Morozov -Alexander Neumann -Alexander Orlov -Alexander Pantyukhin -Alexander Reece -Alexander Surma -Alexander Zhavnerchik -Alexander Zolotov -Alexandre Cesaro -Alexandre Fiori -Alexandre Normand -Alexandre Parentea -Alexandre Viau -Alexei Sholik -Alexey Borzenkov -Alexey Neganov -Alexey Palazhchenko -Alexey Semenyuk -Alexis Hildebrandt -Ali Rizvi-Santiago -Aliaksandr Valialkin -Alif Rachmawadi -Allan Simon -Alok Menghrajani -Aman Gupta -Amazon.com, Inc -Amir Mohammad Saied -Amr Mohammed -Amrut Joshi -Anand K. Mistry -Anders Pearson -André Carvalho -Andre Nathan -Andreas Auernhammer -Andreas Litt -Andrei Korzhevskii -Andrei Tudor Călin -Andrei Vieru -Andrew Austin -Andrew Balholm -Andrew Benton -Andrew Bonventre -Andrew Braunstein -Andrew Bursavich -Andrew Ekstedt -Andrew Etter -Andrew Harding -Andrew Lutomirski -Andrew Pogrebnoy -Andrew Pritchard -Andrew Radev -Andrew Skiba -Andrew Szeto -Andrew Wilkins -Andrew Williams -Andrey Mirtchovski -Andrey Petrov -Andrii Soldatenko -Andrii Soluk -Andriy Lytvynov -Andrzej Żeżel -Andy Balholm -Andy Davis -Andy Finkenstadt -Andy Lindeman -Andy Maloney -Andy Pan -Andy Walker -Anfernee Yongkun Gui -Angelo Bulfone -Anh Hai Trinh -Anit Gandhi -Anmol Sethi -Anschel Schaffer-Cohen -Anthony Alves -Anthony Canino -Anthony Eufemio -Anthony Martin -Anthony Sottile -Anthony Starks -Anthony Voutas -Anthony Woods -Antoine Martin -Antonin Amand -Antonio Antelo -Antonio Bibiano -Antonio Troina -Apisak Darakananda -Apsalar -Aram Hăvărneanu -Areski Belaid -Ariel Mashraki -Arlo Breault -ARM Ltd. -Arnaud Ysmal -Arne Hormann -Arnout Engelen -Aron Nopanen -Arthur Khashaev -Artyom Pervukhin -Arvindh Rajesh Tamilmani -Ashish Gandhi -Atin Malaviya -Ato Araki -Audrey Lim -Audrius Butkevicius -Augusto Roman -Aulus Egnatius Varialus -Aurélien Rainone -awaw fumin -Awn Umar -Axel Wagner -Ayanamist Yang -Aymerick Jéhanne -Azat Kaumov -Baiju Muthukadan -Baokun Lee -Bartosz Grzybowski -Bastian Ike -Beijing Bytedance Technology Co., Ltd. -Ben Burkert -Ben Haines -Ben Lubar -Ben Olive -Ben Shi -Benjamin Black -Benjamin Cable -Benjamin Hsieh -Benny Siegert -Benoit Sigoure -Berengar Lehr -Bharath Kumar Uppala -Bill Zissimopoulos -Billie Harold Cleek -Bjorn Tillenius -Bjorn Tipling -Blain Smith -Blake Gentry -Blake Mesdag -Blake Mizerany -Blixt -Bob Briski -Bob Potter -Bobby Powers -Bolt -Borja Clemente -Brad Burch -Brad Morgan -Bradley Falzon -Brady Catherman -Brady Sullivan -Brendan Daniel Tracey -Brett Cannon -Brett Merrill -Brian Dellisanti -Brian Downs -Brian G. Merrell -Brian Gitonga Marete -Brian Kennedy -Brian Kessler -Brian Ketelsen -Brian Smith -Brian Starke -Bryan Alexander -Bryan Chan -Bryan Ford -Bulat Gaifullin -Burak Guven -Caine Tighe -Caleb Martinez -Caleb Spare -Canonical Limited -Carl Chatfield -Carl Henrik Lunde -Carl Johnson -Carlisia Campos -Carlo Alberto Ferraris -Carlos Castillo -Carlos Cirello -Carolyn Van Slyck -Case Nelson -Casey Callendrello -Casey Marshall -Cezar Sá Espinola -ChaiShushan -Changkun Ou -Chaoqun Han -Charles Fenwick Elliott -Charles L. Dorian -Charles Lee -Chef Software, Inc. -Chew Choon Keat -Cholerae Hu -Chotepud Teo -Chris Ball -Chris Biscardi -Chris Dollin -Chris Farmiloe -Chris Hines -Chris Howey -Chris Jones -Chris Kastorff -Chris Lennert -Chris Liles -Chris McGee -Chris Roche -Chris Smith -Chris Stockton -Christian Alexander -Christian Couder -Christian Himpel -Christian Pellegrin -Christine Hansmann -Christoffer Buchholz -Christoph Blecker -Christoph Hack -Christopher Cahoon -Christopher Guiney -Christopher Henderson -Christopher Nelson -Christopher Nielsen -Christopher Redden -Christopher Wedgwood -Christos Zoulas -CL Sung -Clement Skau -CloudFlare Inc. -Cody Oss -Colin Edwards -Colin Kennedy -Conrad Irwin -Conrad Meyer -Conrado Gouvea -Constantin Konstantinidis -CoreOS, Inc. -Corey Thomasson -Cristian Staretu -Currant -Cyrill Schumacher -Daisuke Fujita -Damian Gryski -Damien Lespiau -Damien Mathieu <42@dmathieu.com> -Dan Ballard -Dan Caddigan -Dan Callahan -Dan Peterson -Dan Sinclair -Daniel Fleischman -Daniel Johansson -Daniel Kerwin -Daniel Krech -Daniel Lidén -Daniel Martí -Daniel Morsing -Daniel Nephin -Daniel Ortiz Pereira da Silva -Daniel Skinner -Daniel Speichert -Daniel Theophanes -Daniel Upton -Daniela Petruzalek -Danny Rosseau -Darren Elwood -Darshan Parajuli -Datong Sun -Dave Cheney -Dave MacFarlane -Dave Russell -David Brophy -David Bürgin <676c7473@gmail.com> -David Calavera -David Carlier -David du Colombier <0intro@gmail.com> -David Forsythe -David G. Andersen -David Howden -David Jakob Fritz -David Leon Gil -David NewHamlet -David R. Jenni -David Sansome -David Stainton -David Thomas -David Titarenco -David Url -David Volquartz Lebech -David Wimmer -Davies Liu -Davor Kapsa -Dean Prichard -Deepak Jois -Denis Bernard -Denis Brandolini -Dennis Kuhnert -Denys Honsiorovskyi -Derek Buitenhuis -Derek McGowan -Derek Parker -Derek Shockey -Dev Ojha -Dev Zhoujun -Develer SRL -Devon H. O'Dell -Dhaivat Pandit -Dhiru Kholia -Dhruvdutt Jadhav -Didier Spezia -Dimitri Sokolyuk -Dimitri Tcaciuc -Diogo Pinela -Dirk Gadsden -Diwaker Gupta -Dmitri Popov -Dmitri Shuralyov -Dmitriy Cherchenko -Dmitriy Dudkin -Dmitriy Shelenin -Dmitry Chestnykh -Dmitry Doroginin -Dmitry Savintsev -Dmitry Yakunin -Dominic Green -Dominik Honnef -Donald Huang -Dong-hee Na -Donovan Hide -Dropbox, Inc. -Duncan Holm -Dustin Herbison -Dustin Sallings -Dustin Shields-Cloues -Dvir Volk -Dylan Waits -Edan Bedrik <3d4nb3@gmail.com> -Eden Li -Eduardo Ramalho -Edward Muller -Egon Elbre -Ehren Kret -Eitan Adler -Eivind Uggedal -Elbert Fliek -Eldar Rakhimberdin -Elena Grahovac -Elias Naur -Elliot Morrison-Reed -Emerson Lin -Emil Hessman -Emil Mursalimov -Emilien Kenler -Emmanuel Odeke -Empirical Interfaces Inc. -Eoghan Sherry -Eric Chiang -Eric Clark -Eric Daniels -Eric Engestrom -Eric Lagergren -Eric Milliken -Eric Pauley -Eric Rescorla -Eric Roshan-Eisner -Eric Rykwalder -Erik Aigner -Erik Dubbelboer -Erik St. Martin -Erik Westrup -Ernest Chiang -Erwin Oegema -Esko Luontola -Euan Kemp -Eugene Kalinin -Evan Hicks -Evan Jones -Evan Phoenix -Evan Shaw -Evgeniy Polyakov -Ewan Chou -Ewan Valentine -Eyal Posener -Fabian Wickborn -Fabian Zaremba -Fabrizio Milo -Facebook, Inc. -Faiyaz Ahmed -Fan Hongjian -Fastly, Inc. -Fatih Arslan -Fazlul Shahriar -Fedor Indutny -Felipe Oliveira -Felix Geisendörfer -Felix Kollmann -Filip Gruszczyński -Filip Haglund -Filippo Valsorda -Firmansyah Adiputra -Florian Uekermann -Florian Weimer -Florin Patan -Ford Hurley -Francesc Campoy -Francisco Claude -Francisco Rojas -Francisco Souza -Frank Schroeder -Frank Somers -Frederic Guillot -Frederick Kelly Mayle III -Frederik Ring -Fredrik Enestad -Fredrik Forsmo -Fredrik Wallgren -Frithjof Schulze -Frits van Bommel -Gabríel Arthúr Pétursson -Gabriel Aszalos -Gabriel Nicolas Avellaneda -Gabriel Russell -Gareth Paul Jones -Gary Burd -Gaurish Sharma -Gautham Thambidorai -Gauthier Jolly -Geert-Johan Riemer -Gengliang Wang -Geoffroy Lorieux -Geon Kim -Georg Reinke -George Gkirtsou -George Shammas -Gerasimos Dimitriadis -Getulio Sánchez -Gideon Jan-Wessel Redelinghuys -Giles Lean -Giulio Iotti -Gleb Stepanov -Google Inc. -Gordon Klaus -Graham King -Graham Miller -Grant Griffiths -Greg Poirier -Greg Ward -Grégoire Delattre -Gregory Man -Guilherme Garnier -Guilherme Goncalves -Guilherme Rezende -Guillaume J. Charmes -Guobiao Mei -Gustav Paul -Gustav Westling -Gustavo Niemeyer -Gwenael Treguier -Gyu-Ho Lee -H. İbrahim Güngör -Hajime Hoshi -HAMANO Tsukasa -Hang Qian -Hanjun Kim -Harald Nordgren -Hari haran -Hariharan Srinath -Harley Laue -Harry Moreno -Harshavardhana -Hauke Löffler -Håvard Haugen -Hector Chu -Hector Martin Cantero -Henning Schmiedehausen -Henrik Edwards -Henrik Hodne -Henry Adi Sumarto -Henry Bubert -Henry Chang -Henry Clifford -Herbert Georg Fischer -Hilko Bengen -Hiroaki Nakamura -Hironao OTSUBO -Hiroshi Ioka -Hitoshi Mitake -Holden Huang -Hong Ruiqi -Hongfei Tan -Hootsuite Inc. -Hsin-Ho Yeh -Hu Keping -Hugues Bruant -HyperConnect Inc. -Ian Gudger -Ian Kent -IBM -Ibrahim AshShohail -Icarus Sparry -Iccha Sethi -Idora Shinatose -Igneous Systems, Inc. -Igor Dolzhikov -Igor Vashyst -INADA Naoki -Inanc Gumus -Infobaleen AB -Ingo Gottwald -Ingo Krabbe -Ingo Oeser -Intel Corporation -Ioannis Georgoulas -Irfan Sharif -Irieda Noboru -Isaac Ardis -Isaac Wagner -Ivan Babrou -Ivan Bertona -Ivan Markin -Ivan Moscoso -Ivan Ukhov -Jack Britton -Jacob H. Haven -Jacob Hoffman-Andrews -Jae Kwon -Jakob Borg -Jakob Weisblat -Jakub Ryszard Czarnowicz -James Bardin -James Clarke -James Cowgill -James David Chalfant -James Fysh -James Gray -James Hartig -James Lawrence -James Meneghello -James Myers -James Neve -James P. Cooper -James Schofield -James Smith -James Sweet -James Toy -James Treanor -James Whitehead -Jamie Beverly -Jamie Kerr -Jamie Stackhouse -Jamil Djadala -Jan Berktold -Jan H. Hosang -Jan Lehnardt -Jan Mercl <0xjnml@gmail.com> -Jan Newmarch -Jan Pilzer -Jan Ziak <0xe2.0x9a.0x9b@gmail.com> -Jani Monoses -Jared Culp -Jaroslavas Počepko -Jason A. Donenfeld -Jason Barnett -Jason Chu -Jason Del Ponte -Jason Smale -Jason Travis -Jason Wangsadinata -Javier Segura -Jay Weisskopf -Jean-André Santoni -Jean-Francois Cantin -Jean-Nicolas Moal -Jeet Parekh -Jeevanandam M -Jeff Dupont -Jeff Hodges -Jeff R. Allen -Jeff Sickel -Jeff Wendling -Jeffrey H -Jelte Fennema -Jens Frederich -Jeremy Jackins -Jeroen Bobbeldijk -Jerrin Shaji George -Jess Frazelle -Jesse Szwedko -Jesús Espino -Jihyun Yu -Jim McGrath -Jimmy Frasche -Jimmy Zelinskie -Jin-wook Jeong -Jingcheng Zhang -Jingguo Yao -Jinzhu Zhang -Jiong Du -Jirka Daněk -Jiulong Wang -Joakim Sernbrant -Joe Cortopassi -Joe Farrell -Joe Harrison -Joe Henke -Joe Kyo -Joe Poirier -Joe Shaw -Joe Sylve -Joe Tsai -Joel Sing -Joel Stemmer -Joey Geiger -Johan Brandhorst -Johan Sageryd -John Asmuth -John C Barstow -John Gibb -John Graham-Cumming -John Howard Palevich -John Jeffery -John Jenkins -John Leidegren -John Potocny -John R. Lenton -John Schnake -John Shahid -John Tuley -Johnny Luo -Jonas Bernoulli -Jonathan Boulle -Jonathan Chen -Jonathan Gold -Jonathan Mark -Jonathan Pentecost -Jonathan Rudenberg -Jonathan Stacks -Jonathan Wills -Jongmin Kim -Joonas Kuorilehto -Joop Kiefte -Jordan Krage -Jordan Lewis -Jose Luis Vázquez González -Joseph Holsten -Josh Bleecher Snyder -Josh Chorlton -Josh Deprez -Josh Goebel -Josh Holland -Josh Roppo -Josh Varga -Joshua Chase -Joshua Rubin -Josselin Costanzi -Jostein Stuhaug -Joyent, Inc. -JT Olds -Juan Carlos -Jude Pereira -Jukka-Pekka Kekkonen -Julian Kornberger -Julian Phillips -Julien Salleyron -Julien Schmidt -Junda Liu -Junya Hayashi -Justin Gracenin -Justin Nuß -Justyn Temme -Kai Backman -Kai Trukenmüller -Kale Blankenship -Kaleb Elwert -Kamil Chmielewski -Kamil Kisiel -Kamil Rytarowski -Kang Hu -Karel Pazdera -Karoly Negyesi -Karsten Köhler -Kashav Madan -Kate Manson -Kato Kazuyoshi -Katrina Owen -Kaviraj Kanagaraj -Keegan Carruthers-Smith -Kei Son -Keiji Yoshida -Keith Ball -Keith Rarick -Kelsey Hightower -Kelvin Foo Chuan Lyi -Ken Friedenbach -Ken Rockot -Ken Sedgwick -Kenji Kaneda -Kenji Yano -Kenneth Shaw -Kenny Grant -Kevin Ballard -Kevin Burke -Kevin Kirsche -Kevin Ruffin -Kevin Vu -Kieran Colford -Kim Yongbin -Kir Kolyshkin -Kirk Han -Klaus Post -Kodie Goodwin -Koichi Shiraishi -Koki Ide -Konstantin -Konstantin Shaposhnikov -KPCompass, Inc. -Kris Nova -Kristopher Watts -Kun Li -Kunpei Sakai -Kuntal Majumder -Kyle Consalus -Kyle Isom -Kyle Jones -Kyle Lemons -Kyle Shannon -Kyohei Kadota -Kyrylo Silin -L Campbell -Lai Jiangshan -Lakshay Garg -Lanre Adelowo -Larry Hosken -Lars Jeppesen -Lars Lehtonen -Lars Wiegman -Larz Conwell -Laurent Voisin -Laurie Clark-Michalek -LE Manh Cuong -Lee Hinman -Lee Packham -Lehner Florian -Leigh McCulloch -Leo Antunes -Leon Klingele -Leonard Wang -Leonel Quinteros -Lev Shamardin -Lewin Bormann -Liberty Fund Inc -Linaro Limited -Lion Yang -Lloyd Dewolf -Loongson Technology Corporation Limited -Lorenzo Masini -Lorenzo Stoakes -Luan Santos -Lubomir I. Ivanov -Luca Greco -Lucas Bremgartner -Lucien Stuker -Lucio De Re -Ludi Rehak -Luigi Riefolo -Luit van Drongelen -Luka Zakrajšek -Luke Curley -Luke Granger-Brown -Lyle Franklin -Ma Peiqi -Maicon Costa -Maksym Trykur -Mal Curtis -Manfred Touron -Manigandan Dharmalingam -Manish Goregaokar -Mansour Rahimi -Manu S Ajith -Manuel Mendez -Marc Weistroff -Marcel Edmund Franke -Marcelo Cantos -Marcelo E. Magallon -Marco Hennings -Marin Bašić -Mario Arranz -Mark Adams -Mark Bucciarelli -Mark Percival -Mark Pulford -Mark Rushakoff -Mark Severson -Mark Theunissen -Mark Wolfe -Marko Juhani Silokunnas -Marko Mudrinic -Marko Tiikkaja -Markover Inc. DBA Poptip -Markus Duft -Markus Sonderegger -Markus Zimmermann -Martin Bertschler -Martin Garton -Martin Hamrle -Martin Hoefling -Martin Kunc -Martin Lindhe -Martin Möhrmann -Martin Neubauer -Martin Olsen -Martin Olsson -Martin Probst -Martin Sucha -Martins Sipenko -Marvin Stenger -Marwan Sulaiman -Maryan Hratson -Masahiro Furudate -Masahiro Wakame -Masaki Yoshida -Mat Byczkowski -Mat Ryer -Máté Gulyás -Matej Baćo -Mateus Amin -Mateusz Czapliński -Mathias Beke -Mathias Hall-Andersen -Mathias Leppich -Mathieu Lonjaret -Mats Lidell -Matt Aimonetti -Matt Blair -Matt Bostock -Matt Dee -Matt Drollette -Matt Harden -Matt Jibson -Matt Joiner -Matt Juran -Matt Layher -Matt Reiferson -Matt Robenolt -Matt Strong -Matt T. Proud -Matt Williams -Matthew Brennan -Matthew Broberg -Matthew Cottingham -Matthew Denton -Matthew Holt -Matthew Horsnell -Matthieu Hauglustaine -Matthieu Olivier -Matthijs Kooijman -Max Riveiro -Max Schmitt -Maxim Khitrov -Maxime de Roucy -Máximo Cuadros Ortiz -Maxwell Krohn -Maya Rashish -Mayank Kumar -MediaMath, Inc -Meir Fischer -Meng Zhuo -Meteor Development Group -Mhd Sulhan -Micah Stetson -Michael Brandenburg -Michael Chaten -Michael Dorner -Michael Edwards -Michael Elkins -Michael Fraenkel -Michael Gehring -Michael Hendricks -Michael Hoisie -Michael Kasch -Michael Käufl -Michael Lewis -Michael MacInnis -Michael Marineau -Michael McConville -Michael McLoughlin -Michael Pearson -Michael Schaller -Michael Schurter -Michael Stapelberg -Michael Steinert -Michael Teichgräber -Michael Vetter -Michal Bohuslávek -Michał Derkacz -Michal Franc -Michal Pristas -Miek Gieben -Miguel Mendez -Miguel Molina -Mihai Borobocea -Mihail Minaev -Mikael Tillenius -Mike Andrews -Mike Appleby -Mike Houston -Mike Kabischev -Mike Rosset -Mike Tsao -Mikhail Gusarov -Mikhail Panchenko -Miki Tebeka -Mikio Hara -Mikkel Krautz -Milan Knezevic -Milutin Jovanović -MinJae Kwon -Miquel Sabaté Solà -Miroslav Genov -Misty De Meo -Mohit Agarwal -Mohit kumar Bajoria -Momchil Velikov -Monty Taylor -Moov Corporation -Moriyoshi Koizumi -Morten Siebuhr -Môshe van der Sterre -Mostyn Bramley-Moore -Muhammad Falak R Wani -Muhammed Uluyol -Mura Li -Nan Deng -Naoki Kanatani -Nate Wilkinson -Nathan Cantelmo -Nathan Caza -Nathan Humphreys -Nathan John Youngman -Nathan Otterness -Nathan P Finch -Nathan VanBenschoten -Nathan Youngman -Nathaniel Cook -Naveen Kumar Sangi -Neelesh Chandola -Neil Alexander -Neil Lyons -Netflix, Inc. -Neuman Vong -Neven Sajko -Nevins Bartolomeo -Nexedi -ngmoco, LLC -Niall Sheridan -Nic Day -Nicholas Katsaros -Nicholas Maniscalco -Nicholas Presta -Nicholas Sullivan -Nicholas Waples -Nick Craig-Wood -Nick Leli -Nick Miyake -Nick Patavalis -Nick Petroni -Nick Robinson -Nick Smolin -Nicolas BRULEZ -Nicolas Kaiser -Nicolas Owens -Nicolas S. Dade -Niek Sanders -Niels Widger -Nigel Kerr -Nik Nyby -Nikhil Benesch -Nikita Gillmann -Niklas Schnelle -Niko Dziemba -Nikolay Turpitko -Nils Larsgård -Niranjan Godbole -Nishanth Shanmugham -Noah Campbell -Noble Johnson -Noel Georgi -Norberto Lopes -Odin Ugedal -Oleg Bulatov -Oleg Vakheta -Oleku Konko -Oling Cat -Oliver Hookins -Oliver Tonnhofer -Olivier Antoine -Olivier Duperray -Olivier Poitrey -Olivier Saingre -Oracle -Orange -Orijtech, Inc. -Özgür Kesim -Pablo Lalloni -Pablo Rozas Larraondo -Pablo Santiago Blum de Aguiar -Padraig Kitterick -Pallat Anchaleechamaikorn -Palm Stone Games -Paolo Giarrusso -Paolo Martini -Parker Moore -Pascal S. de Kloe -Pat Moroney -Patrick Crosby -Patrick Gavlin -Patrick Higgins -Patrick Lee -Patrick Mézard -Patrick Mylund Nielsen -Patrick Pelletier -Patrick Smith -Paul A Querna -Paul Boyd -Paul Hammond -Paul Jolly -Paul Lalonde -Paul Meyer -Paul PISCUC -Paul Querna -Paul Rosania -Paul Ruest -Paul Sbarra -Paul Smith -Paul Tyng -Paul van Brouwershaven -Paulo Casaretto -Pavel Paulau -Pavel Zinovkin -Pavlo Sumkin -Pawel Knap -Percy Wegmann -Perry Abbott -Petar Maymounkov -Peter Armitage -Peter Bourgon -Peter Conerly -Peter Froehlich -Peter Kleiweg -Peter Moody -Peter Morjan -Peter Mundy -Peter Nguyen -Péter Surányi -Péter Szilágyi -Peter Teichman -Peter Waldschmidt -Peter Waller -Peter Williams -Peter Zhang -Petrica Voicu -Phil Pearl -Philip Børgesen -Philip Brown -Philip Hofer -Philip K. Warren -Philip Nelson -Pierre Durand -Pierre Prinetti -Pierre Roullon -Piers -Pieter Droogendijk -Pietro Gagliardi -Piyush Mishra -PlanetScale, Inc. -Platform.sh -Pontus Leitzler -Prasanga Siripala -Prashant Varanasi -Pravendra Singh -Preetam Jinka -Qais Patankar -Qiuxuan Zhu -Qualcomm Data Center, Inc. -Quan Tran -Quan Yong Zhai -Quentin Perez -Quentin Renard -Quoc-Viet Nguyen -RackTop Systems Inc. -Radek Sohlich -Radu Berinde -Rafal Jeczalik -Raif S. Naffah -RainTank -Rajat Goel -Rajath Agasthya -Rajender Reddy Kompally -Ralph Corderoy -Ramazan AYYILDIZ -Raphael Geronimi -Ravil Bikbulatov -RaviTeja Pothana -Ray Tung -Raymond Kazlauskas -Red Hat, Inc. -Reilly Watson -Reinaldo de Souza Jr -Remi Gillig -Rémy Oudompheng -Rens Rikkerink -Ricardo Padilha -Richard Barnes -Richard Crowley -Richard Dingwall -Richard Eric Gavaletz -Richard Gibson -Richard Miller -Richard Musiol -Rick Arnold -Rick Sayre -Risto Jaakko Saarelma -Rob Norman -Rob Phoenix -Robert Daniel Kortschak -Robert Dinu -Robert Figueiredo -Robert Hencke -Robert Obryk -Robert Stepanek -Robert-André Mauchin -Roberto Clapis -Robin Eklind -Rodolfo Carvalho -Rodrigo Moraes de Oliveira -Rodrigo Rafael Monti Kochenburger -Roger Pau Monné -Roger Peppe -Roland Shoemaker -Roman Budnikov -Ron Hashimoto -Ron Minnich -Ross Chater -Ross Light -Rowan Marshall -Rowan Worth -Rudi Kramer -Russell Haering -Ryan Bagwell -Ryan Boehning -Ryan Canty -Ryan Hitchman -Ryan Lower -Ryan Roden-Corrent -Ryan Seys -Ryan Slade -Ryan Zhang -Ryoichi KATO -Ryuji Iwata -Ryuma Yoshida -Ryuzo Yamamoto -S.Çağlar Onur -Sabin Mihai Rapan -Sakeven Jiang -Salmān Aljammāz -Sam Boyer -Sam Hug -Sam Whited -Sami Pönkänen -Samuele Pedroni -Sanjay Menakuru -Sascha Brawer -Sasha Sobol -Scott Barron -Scott Bell -Scott Crunkleton -Scott Ferguson -Scott Lawrence -Sean Rees -Sebastien Binet -Sébastien Paolacci -Seiji Takahashi -Sergei Skorobogatov -Sergey 'SnakE' Gromov -Sergey Lukjanov -Sergey Mishin -Sergey Mudrik -Sergey Semin -Sergio Luis O. B. Correia -Sergiusz Bazanski -Seth Hoenig -Seth Vargo -Shahar Kohanim -Shamil Garatuev -Shane Hansen -Shaozhen Ding -Shaun Dunning -Shawn Smith -Shenghou Ma -Shengyu Zhang -Shi Han Ng -Shinji Tanaka -Shintaro Kaneko -Shivakumar GN -Shuai Tan -Silvan Jegen -Simon Jefford -Simon Rawet -Simon Thulbourn -Simon Whitehead -Sina Siadat -Sokolov Yura -Song Gao -Sourcegraph Inc -Spencer Nelson -Spring Mc -Square, Inc. -Sridhar Venkatakrishnan -StalkR -Stan Schwertly -Stanislav Afanasev -Steeve Morin -Stefan Nilsson -Stéphane Travostino -Stephen Lewis -Stephen McQuay -Stephen Searles -Stephen Weinberg -Steve Gilbert -Steve McCoy -Steve Phillips -Steve Streeting -Steven Elliot Harris -Steven Erenst -Steven Hartland -Steven Wilkin -Stripe, Inc. -Sukrit Handa -Sunny -Suriyaa Sundararuban -Suyash -Sven Almgren -Sylvain Zimmer -Syohei YOSHIDA -Szabolcs Nagy -Taavi Kivisik -Tad Fisher -Tad Glines -Tailscale Inc. -Taj Khattra -Takayoshi Nishida -Takeshi YAMANASHI <9.nashi@gmail.com> -Takuya Ueda -Tal Shprecher -Tamir Duberstein -Tao Wang -Tarmigan Casebolt -Taro Aoki -Taru Karttunen -Tatsuhiro Tsujikawa -Teague Cole -Ted Kornish -Tejasvi Nareddy -Teleport Inc. -Terin Stock -Terrel Shumway -Tetsuo Kiso -Thanabodee Charoenpiriyakij -Thanatat Tamtan -Thiago Avelino -Thiago Fransosi Farina -Thomas Alan Copeland -Thomas Bonfort -Thomas Bruyelle -Thomas de Zeeuw -Thomas Desrosiers -Thomas Kappler -Thomas Meson -Thomas Wanielista -Thorben Krueger -Thordur Bjornsson -Tiago Queiroz -Tilman Dilo -Tim Cooijmans -Tim Cooper -Tim Ebringer -Tim Heckman -Tim Henderson -Tim Wright -Timo Savola -Timo Truyts -Timothy Studd -Tobias Assarsson -Tobias Columbus -Tobias Klauser -Todd Neal -Tom Heng -Tom Levy -Tom Limoncelli -Tom Linford -Tom Payne -Tom Thorogood -Tommy Schaefer -Tomoya Ishizaki -Tonis Tiigi -Tony Walker -Tor Andersson -Tormod Erevik Lea -Toshiki Shima -Totoro W -Travis Bischel -Travis Cline -Trey Lawrence -Trey Roessig -Trey Tacon -Tristan Colgate -Tristan Ooohry -Tristan Rice -Troels Thomsen -Trung Nguyen -Tudor Golubenco -Tugdual Saunier -Tuo Shan -Tyler Bunnell -Tyler Treat -Uber Technologies -Ugorji Nwoke -Ulf Holm Nielsen -Ulrich Kunitz -Upthere, Inc. -Uriel Mangado -Vadim Grek -Vadim Vygonets -Vee Zhang -Vendasta -Veselkov Konstantin -Victor Vrantchan -Vignesh Ramachandra -Vincent Ambo -Vincent Batts -Vincent Vanackere -Vinu Rajashekhar -Vishvananda Ishaya -Vitor De Mario -Vladimir Mihailenco -Vladimir Nikishenko -Vladimir Stefanovic -Vladimir Varankin -VMware, Inc. -Volker Dobler -W. Trevor King -Wade Simmons -Wander Lairson Costa -Wayne Ashley Berry -Wayne Zuo -Weaveworks -Wèi Cōngruì -Wei Fu -Wei Guangjing -Weichao Tang -Weixie Cui <523516579@qq.com> -Wembley G. Leach, Jr -Wen Yang -Will Faught -Will Storey -Willem van der Schyff -William Chang -William Josephson -William Orr -Wisdom Omuya -Wu Yunzhou -Xi Ruoyao -Xia Bin -Xing Xing -Xu Fei -Xudong Zhang -Xudong Zheng <7pkvm5aw@slicealias.com> -Xuyang Kang -Yahoo Inc. -Yamagishi Kazutoshi -Yann Kerhervé -Yann Salaün -Yao Zhang -Yasha Bubnov -Yasuharu Goto -Yasuhiro Matsumoto -Yasuyuki Oka -Yazen Shunnar -Yestin Sun -Yissakhar Z. Beck -Yo-An Lin -Yongjian Xu -Yorman Arias -Yoshiyuki Kanno -Yoshiyuki Mineo -Yosuke Akatsuka -Yuji Yaginuma -Yukihiro Nishinaka <6elpinal@gmail.com> -YunHao Zhang -Yury Smolsky -Yusuke Kagiwada -Yuusei Kuwana -Yuval Pavel Zholkover -Zac Bergquist -Zach Bintliff -Zach Gershman -Zachary Gershman -Zak -Zakatell Kanda -Zellyn Hunter -Zemanta d.o.o. -Zev Goldstein -Zheng Dayu -Zhongtao Chen -Zhou Guangyuan -Zhou Peng -Ziad Hatahet -Zizhao Zhang -Zorion Arrizabalaga -Максим Федосеев -Роман Хавроненко -Тарас Буник -Фахриддин Балтаев -张嵩 -申习之 diff --git a/CONTRIBUTORS b/CONTRIBUTORS deleted file mode 100644 index b0314a0ffbe52ae8724b6fb26421d6c750d2bdaa..0000000000000000000000000000000000000000 --- a/CONTRIBUTORS +++ /dev/null @@ -1,2865 +0,0 @@ -# This is the official list of people who can contribute -# (and typically have contributed) code to the Go repository. -# The AUTHORS file lists the copyright holders; this file -# lists people. For example, Google employees are listed here -# but not in AUTHORS, because Google holds the copyright. -# -# Names should be added to this file only after verifying that -# the individual or the individual's organization has agreed to -# the appropriate Contributor License Agreement, found here: -# -# http://code.google.com/legal/individual-cla-v1.0.html -# http://code.google.com/legal/corporate-cla-v1.0.html -# -# The agreement for individuals can be filled out on the web. - -# Names should be added to this file like so: -# Individual's name -# Individual's name -# -# An entry with multiple email addresses specifies that the -# first address should be used in the submit logs and -# that the other addresses should be recognized as the -# same person when interacting with Gerrit. - -# Please keep the list sorted. - -Aamir Khan -Aaron Beitch -Aaron Bieber -Aaron Cannon -Aaron France -Aaron Jacobs -Aaron Jensen -Aaron Kemp -Aaron Patterson -Aaron Sheah -Aaron Stein -Aaron Torres -Aaron Zinman -Aarti Parikh -Abdullah Al Maruf -Abe Haskins -Abhinav Gupta -Adam Azarchs -Adam Bender -Adam Eijdenberg -Adam Harvey -Adam Kisala -Adam Langley -Adam Medzinski -Adam Mitha -Adam Shannon -Adam Shelton -Adam Sindelar -Adam Thomason -Adam Williams -Adam Woodbeck -Adarsh Ravichandran -Adel Rodríguez -Adin Scannell -Aditya Harindar -Aditya Mukerjee -Adrian Hesketh -Adrian Nos -Adrian O'Grady -Adrien Bustany -Adrien Delorme -Adrien Petel -Aécio Júnior -Aeneas Rekkas (arekkas) -Afanasev Stanislav -Agis Anastasopoulos -Agniva De Sarker -Ahmed W. Mones -Ahmet Aktürk -Ahmet Alp Balkan -Ahmet Soormally -Ahmy Yulrizka -Ahsun Ahmed -Aidan Coyle -Aiden Scandella -Ainar Garipov -Aishraj Dahal -Ajanthan Balachandran -Akhil Indurti -Akihiro Suda -Akshat Kumar -Al Cutter -Alan Braithwaite -Alan Donovan -Alan Shreve -Albert Nigmatzianov -Albert Strasheim -Albert Teoh -Albert Yu -Alberto Bertogli -Alberto Donizetti -Alberto García Hierro -Alec Benzer -Alejandro García Montoro -Aleksa Sarai -Aleksandar Dezelin -Aleksandr Lukinykh -Aleksandr Razumov -Alekseev Artem -Aleksei Tirman -Alessandro Arzilli -Alessandro Baffa -Alex A Skinner -Alex Brainman -Alex Bramley -Alex Browne -Alex Buchanan -Alex Carol -Alex Gaynor -Alex Harford -Alex Hays -Alex Jin -Alex Kohler -Alex Myasoedov -Alex Opie -Alex Plugaru -Alex Schade <39062967+aschade92@users.noreply.github.com> -Alex Schroeder -Alex Sergeyev -Alex Tokarev -Alex Vaghin -Alex Zhirov -Alexander Demakin -Alexander Döring -Alexander F Rødseth -Alexander Greim -Alexander Guz -Alexander Kauer -Alexander Klauer -Alexander Kucherenko -Alexander Larsson -Alexander Lourier -Alexander Melentyev -Alexander Menzhinsky -Alexander Morozov -Alexander Neumann -Alexander Nohe -Alexander Orlov -Alexander Pantyukhin -Alexander Polcyn -Alexander Rakoczy -Alexander Reece -Alexander Surma -Alexander Yastrebov -Alexander Zhavnerchik -Alexander Zillion -Alexander Zolotov -Alexandr Mayorskiy -Alexandre Cesaro -Alexandre Fiori -Alexandre Maari -Alexandre Normand -Alexandre Parentea -Alexandre Viau -Alexandru Moșoi -Alexei Sholik -Alexey Alexandrov -Alexey Borzenkov -Alexey Naidonov -Alexey Neganov -Alexey Palazhchenko -Alexey Semenyuk -Alexey Vilenskiy -Alexis Hildebrandt -Alexis Hunt -Alexis Imperial-Legrand -Ali Farooq -Ali Rizvi-Santiago -Aliaksandr Valialkin -Alice Merrick -Alif Rachmawadi -Allan Guwatudde -Allan Simon -Allen Li -Alok Menghrajani -Alwin Doss -Aman Gupta -Amarjeet Anand -Amelia Downs -Amir Mohammad Saied -Amit Kumar -Amr Mohammed -Amrut Joshi -An Long -An Xiao -Anand K. Mistry -Ananya Saxena -Anatol Pomozov -Anders Pearson -Anderson Queiroz -André Carvalho -Andre Marianiello -André Martins -Andre Nathan -Andrea Nodari -Andrea Simonini -Andrea Spadaccini -Andreas Auernhammer -Andreas Jellinghaus -Andreas Litt -Andrei Enshin -Andrei Gherzan -Andrei Korzhevskii -Andrei Matei -Andrei Tudor Călin -Andrei Vagin -Andrei Vieru -Andres Erbsen -Andres Lowrie -Andrew Austin -Andrew Balholm -Andrew Benton -Andrew Bonventre -Andrew Braunstein -Andrew Bursavich -Andrew Ekstedt -Andrew Etter -Andrew G. Morgan -Andrew Gerrand -Andrew Harding -Andrew Jackura -Andrew Kemm -Andrew LeFevre -Andrew Louis -Andrew Lutomirski -Andrew Medvedev -Andrew Pilloud -Andrew Pogrebnoy -Andrew Poydence -Andrew Pritchard -Andrew Radev -Andrew Skiba -Andrew Stormont -Andrew Stribblehill -Andrew Szeto -Andrew Todd -Andrew Wansink -Andrew Werner -Andrew Wilkins -Andrew Williams -Andrew Z Allen -Andrey Bokhanko -Andrey Mirtchovski -Andrey Petrov -Andrii Soldatenko -Andrii Soluk -Andriy Lytvynov -Andrzej Żeżel -Andy Balholm -Andy Davis -Andy Finkenstadt -Andy Lindeman -Andy Maloney -Andy Pan -Andy Walker -Andy Wang -Andy Williams -Andy Zhao -Andzej Maciusovic -Anfernee Yongkun Gui -Angelo Bulfone -Anh Hai Trinh -Anit Gandhi -Ankit Goyal -Anmol Sethi -Annirudh Prasad -Anschel Schaffer-Cohen -Anthony Alves -Anthony Canino -Anthony Eufemio -Anthony Fok -Anthony Martin -Anthony Sottile -Anthony Starks -Anthony Voutas -Anthony Woods -Antoine GIRARD -Antoine Martin -Anton Gyllenberg -Anton Kuklin -Antonin Amand -Antonio Antelo -Antonio Bibiano -Antonio Garcia -Antonio Huete Jimenez -Antonio Murdaca -Antonio Ojea -Antonio Troina -Anze Kolar -Aofei Sheng -Apisak Darakananda -Aram Hăvărneanu -Araragi Hokuto -Arash Bina -Archana Ravindar -Arda Güçlü -Areski Belaid -Ariel Mashraki -Arkadi Pyuro -Arlo Breault -Arnaud Ysmal -Arne Hormann -Arnout Engelen -Aron Nopanen -Arran Walker -Artem Alekseev -Artem Khvastunov -Artem Kolin -Arthur Fabre -Arthur Khashaev -Artur M. Wolff -Artyom Pervukhin -Arvindh Rajesh Tamilmani -Ashish Bhate -Ashish Gandhi -Asim Shankar -Assel Meher -Atin Malaviya -Ato Araki -Atsushi Toyama -Audrey Lim -Audrius Butkevicius -Augusto Roman -Aulus Egnatius Varialus -Aurélien Rainone -Aurélio A. Heckert -Austin Clements -Avi Flax -Aviv Klasquin Komissar -awaw fumin -Awn Umar -Axel Wagner -Ayan George -Ayanamist Yang -Ayke van Laethem -Aymerick Jéhanne -Ayzat Sadykov -Azat Kaumov -Baiju Muthukadan -Balaram Makam -Balazs Lecz -Baokun Lee -Barnaby Keene -Bartłomiej Klimczak -Bartosz Grzybowski -Bartosz Oler -Bassam Ojeil -Bastian Ike -Ben Burkert -Ben Cartwright-Cox -Ben Eitzen -Ben Fried -Ben Haines -Ben Hoyt -Ben Hutchings -Ben Kraft -Ben Laurie -Ben Lubar -Ben Lynn -Ben Olive -Ben Schwartz -Ben Shi -Ben Toews -Benjamin Barenblat -Benjamin Black -Benjamin Cable -Benjamin Hsieh -Benjamin Peterson -Benjamin Prosnitz -Benjamin Wester -Benjamin Wuethrich -Benny Siegert -Benoit Sigoure -Berengar Lehr -Berkant Ipek <41230766+0xbkt@users.noreply.github.com> -Beth Brown -Bharath Kumar Uppala -Bharath Thiruveedula -Bhavin Gandhi -Bill Neubauer -Bill O'Farrell -Bill Prin -Bill Thiede -Bill Zissimopoulos -Billie Harold Cleek -Billy Lynch -Billy Zaelani Malik -Bjørn Erik Pedersen -Bjorn Tillenius -Bjorn Tipling -Blain Smith -Blake Gentry -Blake Mesdag -Blake Mizerany -Blixt -Bob Briski -Bob McNaughton -Bob Potter -Bobby DeSimone -Bobby Powers -Boqin Qin -Boris Nagaev -Borja Clemente -Boshi Lian -Brad Burch -Brad Erickson -Brad Fitzpatrick -Brad Garcia -Brad Jones -Brad Morgan -Brad Whitaker -Braden Bassingthwaite -Bradford Lamson-Scribner -Bradley Falzon -Brady Catherman -Brady Sullivan -Branden J. Brown -Brandon Bennett -Brandon Gilmore -Brandon Philips -Brandon Ryan -Brave Cow -Brayden Cloud -Brendan Daniel Tracey -Brendan O'Dea -Brett Cannon -Brett Merrill -Brian Dellisanti -Brian Downs -Brian Falk -Brian G. Merrell -Brian Gitonga Marete -Brian Kennedy -Brian Kessler -Brian Ketelsen -Brian Slesinsky -Brian Smith -Brian Starke -Bruce Huang -Bryan Alexander -Bryan Boreham -Bryan C. Mills -Bryan Chan -Bryan Ford -Bryan Heden -Bulat Gaifullin -Burak Guven -Byoungchan Lee -Caine Tighe -Caio Marcelo de Oliveira Filho -Caleb Martinez -Caleb Spare -Carl Chatfield -Carl Henrik Lunde -Carl Jackson -Carl Johnson -Carl Mastrangelo -Carl Menezes -Carl Shapiro -Carlisia Campos -Carlo Alberto Ferraris -Carlos Alexandro Becker -Carlos Amedee -Carlos Castillo -Carlos Cirello -Carlos Eduardo -Carlos Eduardo Seo -Carlos Iriarte -Carlos Souza -Carolyn Van Slyck -Carrie Bynon -Carson Hoffman -Cary Hull -Case Nelson -Casey Callendrello -Casey Marshall -Catalin Nicutar -Catalin Patulea -Cathal O'Callaghan -Cedric Staub -Cezar Sá Espinola -Chad Rosier -ChaiShushan -Changkun Ou -Channing Kimble-Brown -Chao Xu -Chaoqun Han -Charles Fenwick Elliott -Charles Kenney -Charles L. Dorian -Charles Lee -Charles Weill -Charlie Getzen -Charlie Moog -Charlotte Brandhorst-Satzkorn -Chauncy Cullitan -Chen Zhidong -Chen Zhihan -Cheng Wang -Cherry Mui -Chew Choon Keat -Chia-Chi Hsu -Chiawen Chen -Chirag Sukhala -Cholerae Hu -Chotepud Teo -Chressie Himpel -Chris Ball -Chris Biscardi -Chris Broadfoot -Chris Dollin -Chris Farmiloe -Chris Hines -Chris Howey -Chris Hundt -Chris Jones -Chris Kastorff -Chris Le Roy -Chris Lennert -Chris Liles -Chris Manghane -Chris Marchesi -Chris McGee -Chris Raynor -Chris Roche -Chris Smith -Chris Stockton -Chris Taylor -Chris Waldon -Chris Zou -Christian Alexander -Christian Couder -Christian Himpel -Christian Muehlhaeuser -Christian Pellegrin -Christian R. Petrin -Christian Svensson -Christine Hansmann -Christoffer Buchholz -Christoph Blecker -Christoph Hack -Christopher Cahoon -Christopher Guiney -Christopher Henderson -Christopher Hlubek -Christopher Koch -Christopher Loessl -Christopher Nelson -Christopher Nielsen -Christopher Redden -Christopher Swenson -Christopher Thomas <53317512+chrisssthomas@users.noreply.github.com> -Christopher Wedgwood -Christos Zoulas -Christy Perez -CL Sung -Clément Chigot -Clement Skau -Clint J. Edwards -Cody Oss -Colby Ranger -Colin Arnott -Colin Cross -Colin Edwards -Colin Kennedy -Colin Nelson -Colin Rice -Conrad Irwin -Conrad Meyer -Conrado Gouvea -Constantin Konstantinidis -Corey Thomasson -Corne van der Plas -Cosmos Nicolaou -Costin Chirvasuta -Craig Citro -Cristian Staretu -Cristo García -cui fliter -Cuihtlauac ALVARADO -Cuong Manh Le -Curtis La Graff -Cyrill Schumacher -Dai Jie -Dai Wentao -Daisuke Fujita -Daisuke Suzuki -Daker Fernandes Pinheiro -Damian Gryski -Damien Lespiau -Damien Mathieu <42@dmathieu.com> -Damien Neil -Damien Tournoud -Dan Ballard -Dan Caddigan -Dan Callahan -Dan Harrington -Dan Jacques -Dan Johnson -Dan McArdle -Dan Peterson -Dan Pupius -Dan Scales -Dan Sinclair -Daniel Cohen -Daniel Cormier -Daniël de Kok -Daniel Fleischman -Daniel Ingram -Daniel Johansson -Daniel Kerwin -Daniel Kessler -Daniel Krech -Daniel Kumor -Daniel Langner -Daniel Lidén -Daniel Lublin -Daniel Mangum -Daniel Marshall -Daniel Martí -Daniel McCarney -Daniel Morsing -Daniel Nadasi -Daniel Nephin -Daniel Ortiz Pereira da Silva -Daniel S. Fava -Daniel Skinner -Daniel Speichert -Daniel Theophanes -Daniel Upton -Daniela Petruzalek -Danish Dua -Danish Prakash -Danny Rosseau -Daria Kolistratova -Darien Raymond -Darren Elwood -Darren Grant -Darren McCleary -Darshan Parajuli -Datong Sun -Dave Borowitz -Dave Bort -Dave Cheney -Dave Day -Dave Grijalva -Dave MacFarlane -Dave Pifke -Dave Russell -David Anderson -David Barnett -David Benjamin -David Black -David Bond -David Brophy -David Bürgin <676c7473@gmail.com> -David Calavera -David Carlier -David Carter -David Chase -David Covert -David Crawshaw -David du Colombier <0intro@gmail.com> -David Finkel -David Forsythe -David G. Andersen -David Glasser -David Golden -David Heuschmann -David Howden -David Hubbard -David Jakob Fritz -David Jones -David Lazar -David Leon Gil -David McLeish -David Ndungu -David NewHamlet -David Presotto -David Qu -David R. Jenni -David Sansome -David Stainton -David Symonds -David Thomas -David Timm -David Titarenco -David Tolpin -David Url -David Volquartz Lebech -David Wimmer -Davies Liu -Davor Kapsa -Dean Eigenmann <7621705+decanus@users.noreply.github.com> -Dean Prichard -Deepak Jois -Deepak S -Denis Bernard -Denis Brandolini -Denis Isaev -Denis Nagorny -Dennis Kuhnert -Denys Honsiorovskyi -Denys Smirnov -Derek Buitenhuis -Derek Che -Derek McGowan -Derek Parker -Derek Phan -Derek Shockey -Dev Ojha -Dev Zhoujun -Devon H. O'Dell -Dhaivat Pandit -Dhananjay Nakrani -Dhiru Kholia -Dhruvdutt Jadhav -Di Xiao -Didier Spezia -Diego Medina -Diego Siqueira -Dieter Plaetinck -Dilyn Corner -Dimitri Sokolyuk -Dimitri Tcaciuc -Dina Garmash -Diogo Pinela -Dirk Gadsden -Diwaker Gupta -Dmitri Goutnik -Dmitri Popov -Dmitri Shuralyov -Dmitrii Okunev -Dmitriy Cherchenko -Dmitriy Dudkin -Dmitriy Shelenin -Dmitriy Vyukov -Dmitry Chestnykh -Dmitry Doroginin -Dmitry Mottl -Dmitry Neverov -Dmitry Savintsev -Dmitry Yakunin -Dmytro Shynkevych -Doga Fincan -Domas Tamašauskas -Domen Ipavec -Dominic Della Valle -Dominic Green -Dominik Honnef -Dominik Vogt -Don Byington -Donald Huang -Dong-hee Na -Donovan Hide -Doug Anderson -Doug Fawley -Douglas Danger Manley -Drew Flower -Drew Hintz -Drew Richardson -Duco van Amstel -Duncan Holm -Dustin Carlino -Dustin Herbison -Dustin Long -Dustin Sallings -Dustin Shields-Cloues -Dustin Spicuzza -Dvir Volk -Dylan Waits -Ed Schouten -Edan Bedrik <3d4nb3@gmail.com> -Eddie Scholtz -Eden Li -Eduard Urbach -Eduardo Ramalho -Eduardo Villaseñor -Edward Muller -Egon Elbre -Ehren Kret -Eitan Adler -Eivind Uggedal -El Mostafa Idrassi -Elbert Fliek -Eldar Rakhimberdin -Elena Grahovac -Eli Bendersky -Elias Naur -Elliot Morrison-Reed -Ellison Leão -Elvina Yakubova -Emerson Lin -Emil Bektimirov -Emil Hessman -Emil Mursalimov -Emilien Kenler -Emmanuel Odeke -Emrecan Bati -Eno Compton -Eoghan Sherry -Eric Biggers -Eric Brown -Eric Chiang -Eric Clark -Eric Daniels -Eric Engestrom -Eric Garrido -Eric Koleda -Eric Lagergren -Eric Milliken -Eric Pauley -Eric Ponce -Eric Rescorla -Eric Roshan-Eisner -Eric Rutherford -Eric Rykwalder -Eric Wang -Erick Tryzelaar -Erik Aigner -Erik Dubbelboer -Erik St. Martin -Erik Staab -Erik Westrup -Erin Masatsugu -Ernest Chiang -Erwin Oegema -Esko Luontola -Ethan Anderson -Ethan Burns -Ethan Hur -Ethan Miller -Ethan Reesor -Euan Kemp -Eugene Formanenko -Eugene Kalinin -Evan Broder -Evan Brown -Evan Digby -Evan Hicks -Evan Jones -Evan Klitzke -Evan Kroske -Evan Martin -Evan Phoenix -Evan Shaw -Evgeniy Kulikov -Evgeniy Polyakov -Ewan Chou -Ewan Valentine -Eyal Posener -F. Talha Altınel -Fabian Wickborn -Fabian Zaremba -Fabio Falzoi -Fabrizio Milo -Faiyaz Ahmed -Fan Hongjian -Fangming Fang -Fannie Zhang -Fatih Arslan -Fazal Majid -Fazlul Shahriar -Federico Bond -Federico Guerinoni -Federico Simoncelli -Fedor Indutny -Fedor Korotkiy -Felipe Oliveira -Felix Bünemann -Felix Cornelius <9767036+fcornelius@users.noreply.github.com> -Felix Geisendörfer -Felix Kollmann -Ferenc Szabo -Fernandez Ludovic -Filip Gruszczyński -Filip Haglund -Filip Stanis -Filippo Valsorda -Firmansyah Adiputra -Florian Forster -Florian Uekermann -Florian Weimer -Florin Papa -Florin Patan -Folke Behrens -Ford Hurley -Forest Johnson -Francesc Campoy -Francesco Guardiani -Francesco Renzi -Francisco Claude -Francisco Rojas -Francisco Souza -Frank Chiarulli Jr -Frank Schroeder -Frank Somers -Frederic Guillot -Frederick Kelly Mayle III -Frederik Ring -Frederik Zipp -Frediano Ziglio -Fredrik Enestad -Fredrik Forsmo -Fredrik Wallgren -Frew Schmidt -Frithjof Schulze -Frits van Bommel -Fujimoto Kyosuke -Fumitoshi Ukai -G. Hussain Chinoy -Gaal Yahas -Gabríel Arthúr Pétursson -Gabriel Aszalos -Gabriel Guzman -Gabriel Nelle -Gabriel Nicolas Avellaneda -Gabriel Rosenhouse -Gabriel Russell -Gabriel Vasile -Gareth Paul Jones -Garret Kelly -Garrick Evans -Garry McNulty -Gary Burd -Gary Elliott -Gaurav Singh -Gaurish Sharma -Gautham Thambidorai -Gauthier Jolly -Gawen Arab -Geert-Johan Riemer -Genevieve Luyt -Gengliang Wang -Geoff Berry -Geoffroy Lorieux -Geon Kim -Georg Reinke -George Gkirtsou -George Hartzell -George Looshch -George Shammas -George Tsilias -Gerasimos (Makis) Maropoulos -Gerasimos Dimitriadis -Gergely Brautigam -Gernot Vormayr -Gert Cuykens -Getulio Sánchez -Ghazni Nattarshah -Gianguido Sora` -Gideon Jan-Wessel Redelinghuys -Giles Lean -Giovanni Bajo -GitHub User @180909 (70465953) <734461790@qq.com> -GitHub User @6543 (24977596) <6543@obermui.de> -GitHub User @aca (50316549) -GitHub User @ajnirp (1688456) -GitHub User @ajz01 (4744634) -GitHub User @alkesh26 (1019076) -GitHub User @andig (184815) -GitHub User @andrius4669 (4699695) -GitHub User @as (8127015) -GitHub User @bakape (7851952) -GitHub User @bgadrian (830001) -GitHub User @bontequero (2674999) -GitHub User @cch123 (384546) -GitHub User @chainhelen (7046329) -GitHub User @chanxuehong (3416908) -GitHub User @Cluas (10056928) -GitHub User @cncal (23520240) -GitHub User @DQNEO (188741) -GitHub User @Dreamacro (8615343) -GitHub User @dupoxy (1143957) -GitHub User @EndlessCheng (7086966) -GitHub User @erifan (31343225) -GitHub User @esell (9735165) -GitHub User @fatedier (7346661) -GitHub User @frennkie (6499251) -GitHub User @geedchin (11672310) -GitHub User @GrigoriyMikhalkin (3637857) -GitHub User @Gusted (25481501) -GitHub User @hengwu0 (41297446) <41297446+hengwu0@users.noreply.github.com> -GitHub User @hitzhangjie (3725760) -GitHub User @hkhere (33268704) <33268704+hkhere@users.noreply.github.com> -GitHub User @hqpko (13887251) -GitHub User @Illirgway (5428603) -GitHub User @itchyny (375258) -GitHub User @jinmiaoluo (39730824) -GitHub User @jopbrown (6345470) -GitHub User @kazyshr (30496953) -GitHub User @kc1212 (1093806) -GitHub User @komisan19 (18901496) -GitHub User @korzhao (64203902) -GitHub User @Kropekk (13366453) -GitHub User @lgbgbl (65756378) -GitHub User @lhl2617 (33488131) -GitHub User @linguohua (3434367) -GitHub User @lloydchang (1329685) -GitHub User @LotusFenn (13775899) -GitHub User @luochuanhang (96416201) -GitHub User @ly303550688 (11519839) -GitHub User @madiganz (18340029) -GitHub User @maltalex (10195391) -GitHub User @markruler (38225900) -GitHub User @Matts966 (28551465) -GitHub User @micnncim (21333876) -GitHub User @mkishere (224617) <224617+mkishere@users.noreply.github.com> -GitHub User @nu50218 (40682920) -GitHub User @OlgaVlPetrova (44112727) -GitHub User @pierwill (19642016) -GitHub User @pityonline (438222) -GitHub User @po3rin (29445112) -GitHub User @pokutuna (57545) -GitHub User @povsister (11040951) -GitHub User @pytimer (17105586) -GitHub User @qcrao (7698088) -GitHub User @ramenjuniti (32011829) -GitHub User @renthraysk (30576707) -GitHub User @roudkerk (52280478) -GitHub User @saitarunreddy (21041941) -GitHub User @SataQiu (9354727) -GitHub User @seifchen (23326132) -GitHub User @shogo-ma (9860598) -GitHub User @sivchari (55221074) -GitHub User @skanehira (7888591) -GitHub User @soolaugust (10558124) -GitHub User @surechen (7249331) -GitHub User @syumai (6882878) -GitHub User @tangxi666 (48145175) -GitHub User @tatsumack (4510569) -GitHub User @tell-k (26263) -GitHub User @tennashi (10219626) -GitHub User @uhei (2116845) -GitHub User @uji (49834542) -GitHub User @unbyte (5772358) -GitHub User @uropek (39370426) -GitHub User @utkarsh-extc (53217283) -GitHub User @witchard (4994659) -GitHub User @wmdngngng (22067700) -GitHub User @wolf1996 (5901874) -GitHub User @yah01 (12216890) -GitHub User @yuanhh (1298735) -GitHub User @zikaeroh (48577114) -GitHub User @ZZMarquis (7624583) -Giulio Iotti -Giulio Micheloni -Giuseppe Valente -Gleb Stepanov -Glenn Brown -Glenn Lewis -Gordon Klaus -Gordon Tyler -Grace Han -Graham King -Graham Miller -Grant Griffiths -Green Lightning -Greg Poirier -Greg Steuck -Greg Thelen -Greg Ward -Grégoire Delattre -Gregory Man -Gregory Petrosyan -Guilherme Caruso -Guilherme Garnier -Guilherme Goncalves -Guilherme Rezende -Guilherme Souza <32180229+gqgs@users.noreply.github.com> -Guillaume Blaquiere -Guillaume J. Charmes -Guillaume Sottas -Günther Noack -Guobiao Mei -Guodong Li -Guoliang Wang -Guoqi Chen -Gustav Paul -Gustav Westling -Gustavo Franco -Gustavo Niemeyer -Gwenael Treguier -Gyu-Ho Lee -H. İbrahim Güngör -Hajime Hoshi -Hallgrimur Gunnarsson -HAMANO Tsukasa -Han-Wen Nienhuys -Hang Qian -Hanjun Kim -Hanlin He -Hanlin Shi -Hans Nielsen -Hao Mou -Haoran Luo -Haosdent Huang -Harald Nordgren -Hari haran -Hariharan Srinath -Harley Laue -Harry Moreno -Harshavardhana -Hasan Ozgan -Hasit Bhatt -Hauke Löffler -Håvard Haugen -He Liu -Hector Chu -Hector Martin Cantero -Hein Khant Zaw -Henning Schmiedehausen -Henrik Edwards -Henrik Hodne -Henrique Vicente -Henry Adi Sumarto -Henry Bubert -Henry Chang -Henry Clifford -Henry Wong -Herbert Georg Fischer -Herbie Ong -Heschi Kreinick -Hidetatsu Yaginuma -Hilko Bengen -Himanshu Kishna Srivastava <28himanshu@gmail.com> -Hiroaki Nakamura -Hiromichi Ema -Hironao OTSUBO -Hiroshi Ioka -Hitoshi Mitake -Holden Huang -Hong Ruiqi -Hongfei Tan -Horacio Duran -Horst Rutter -Hossein Sheikh Attar -Hossein Zolfi -Howard Zhang -Hsin Tsao -Hsin-Ho Yeh -Hu Keping -Huan Du -Hugues Bruant -Huy Le -Hyang-Ah Hana Kim -Hyoyoung Chang -Ian Cottrell -Ian Davis -Ian Gudger -Ian Haken -Ian Kent -Ian Lance Taylor -Ian Leue -Ian Mckay -Ian Tay -Ian Zapolsky -Ibrahim AshShohail -Icarus Sparry -Iccha Sethi -Ichinose Shogo -Idora Shinatose -Ignacio Hagopian -Igor Bernstein -Igor Bolotnikov -Igor Dolzhikov -Igor Vashyst -Igor Zhilianin -Ikko Ashimine -Illya Yalovyy -Ilya Chukov <56119080+Elias506@users.noreply.github.com> -Ilya Mateyko -Ilya Sinelnikov -Ilya Tocar -INADA Naoki -Inanc Gumus -Ingo Gottwald -Ingo Krabbe -Ingo Oeser -Ioannis Georgoulas -Irbe Krumina -Irfan Sharif -Irieda Noboru -Isaac Ardis -Isaac Wagner -Isfan Azhabil -Iskander Sharipov -Issac Trotts -Ivan Babrou -Ivan Bertona -Ivan Krasin -Ivan Kutuzov -Ivan Markin -Ivan Moscoso -Ivan Osadchiy -Ivan Sharavuev -Ivan Trubach -Ivan Ukhov -Ivy Evans -Jaana Burcu Dogan -Jaap Aarts -Jack Britton -Jack Lindamood -Jack You -Jacob Baskin -Jacob Blain Christen -Jacob H. Haven -Jacob Hoffman-Andrews -Jacob Walker -Jaden Teng -Jae Kwon -Jake B -Jake Ciolek -Jakob Borg -Jakob Weisblat -Jakub Čajka -Jakub Kaczmarzyk -Jakub Ryszard Czarnowicz -Jakub Warczarek -Jamal Carvalho -James Aguilar -James Bardin -James Chacon -James Clarke -James Cowgill -James Craig Burley -James David Chalfant -James Eady -James Fennell -James Fysh -James Gray -James Harris -James Hartig -James Kasten -James Lawrence -James Meneghello -James Myers -James Naftel -James Neve -James Nugent -James P. Cooper -James Robinson -James Schofield -James Smith -James Sweet -James Toy -James Treanor -James Tucker -James Whitehead -Jamie Beverly -Jamie Gennis -Jamie Kerr -Jamie Liu -Jamie Stackhouse -Jamie Turner -Jamie Wilkinson -Jamil Djadala -Jan Berktold -Jan H. Hosang -Jan Kratochvil -Jan Lehnardt -Jan Mercl <0xjnml@gmail.com> -Jan Newmarch -Jan Pilzer -Jan Steinke -Jan Ziak <0xe2.0x9a.0x9b@gmail.com> -Jani Monoses -Jannis Andrija Schnitzer -Jared Allard -Jared Culp -Jaroslavas Počepko -Jason A. Donenfeld -Jason Baker -Jason Barnett -Jason Buberel -Jason Chu -Jason Del Ponte -Jason Hall -Jason Keene -Jason LeBrun -Jason Smale -Jason Travis -Jason Wangsadinata -Javier Kohen -Javier Revillas -Javier Segura -Jay Chen -Jay Conrod -Jay Lee -Jay Taylor -Jay Weisskopf -Jean de Klerk -Jean-André Santoni -Jean-François Bustarret -Jean-Francois Cantin -Jean-Hadrien Chabran -Jean-Marc Eurin -Jean-Nicolas Moal -Jed Denlea -Jędrzej Szczepaniak -Jeet Parekh -Jeevanandam M -Jeff (Zhefu) Jiang -Jeff Craig -Jeff Dupont -Jeff Hodges -Jeff Johnson -Jeff R. Allen -Jeff Sickel -Jeff Wendling -Jeff Wentworth -Jeff Widman -Jeffrey H -Jelte Fennema -Jens Frederich -Jeremiah Harmsen -Jeremy Banks <_@jeremy.ca> -Jeremy Canady -Jeremy Faller -Jeremy Jackins -Jeremy Jay -Jeremy Schlatter -Jero Bado -Jeroen Bobbeldijk -Jeroen Simonetti -Jérôme Doucet -Jerrin Shaji George -Jess Frazelle -Jesse Szwedko -Jesús Espino -Jia Zhan -Jiacai Liu -Jiahao Lu -Jiahua Wang -Jianing Yu -Jianqiao Li -Jiayu Yi -Jie Ma -Jihyun Yu -Jim Cote -Jim Kingdon -Jim McGrath -Jim Minter -Jimmy Frasche -Jimmy Zelinskie -Jin-wook Jeong -Jingcheng Zhang -Jingguo Yao -Jinzhu Zhang -Jingnan Si -Jinkun Zhang -Jinwen Wo -Jiong Du -Jirka Daněk -Jiulong Wang -Joakim Sernbrant -Jochen Weber -Joe Bowbeer -Joe Cortopassi -Joe Farrell -Joe Harrison -Joe Henke -Joe Kyo -Joe Poirier -Joe Richey -Joe Shaw -Joe Sylve -Joe Tsai -Joel Courtney -Joel Ferrier -Joel Sing -Joël Stemmer -Joel Stemmer -Joey Geiger -Johan Brandhorst -Johan Euphrosine -Johan Jansson -Johan Knutzen -Johan Sageryd -Johannes Altmanninger -Johannes Huning -John Asmuth -John Bampton -John Beisley -John C Barstow -John DeNero -John Dethridge -John Gibb -John Gilik -John Graham-Cumming -John Howard Palevich -John Jago -John Jeffery -John Jenkins -John Kelly -John Leidegren -John McCabe -John Moore -John Newlin -John Olheiser -John Papandriopoulos -John Potocny -John R. Lenton -John Schnake -John Shahid -John Tuley -John Weldon -Johnny Luo -Jon Chen -Jon Johnson -Jonas Bernoulli -Jonathan Albrecht -Jonathan Allie -Jonathan Amsterdam -Jonathan Boulle -Jonathan Chen -Jonathan Feinberg -Jonathan Gold -Jonathan Hseu -Jonathan Mark -Jonathan Nieder -Jonathan Pentecost -Jonathan Pittman -Jonathan Rudenberg -Jonathan Stacks -Jonathan Swinney -Jonathan Wills -Jonathon Lacher -Jongmin Kim -Joonas Kuorilehto -Joop Kiefte -Jordan Christiansen -Jordan Krage -Jordan Lewis -Jordan Liggitt -Jordan Rhee -Jordan Rupprecht -Jordi Martin -Jorge Araya -Jorge L. Fatta -Jorge Troncoso -Jos Visser -Josa Gesell -Jose Luis Vázquez González -Joseph Bonneau -Joseph Holsten -Joseph Morag -Josh Baum -Josh Bleecher Snyder -Josh Chorlton -Josh Deprez -Josh Goebel -Josh Hoak -Josh Holland -Josh Rickmar -Josh Roppo -Josh Varga -Joshua Bezaleel Abednego -Joshua Boelter -Joshua Chase -Joshua Crowgey -Joshua Harshman -Joshua M. Clulow -Joshua Rubin -Josselin Costanzi -Jostein Stuhaug -JP Sugarbroad -JT Olds -JT Olio -Juan Carlos -Juan Pablo Civile -Jude Pereira -Jukka-Pekka Kekkonen -Julia Hansbrough -Julian Kornberger -Julian Pastarmov -Julian Phillips -Julian Tibble -Julie Qiu -Julien Kauffmann -Julien Salleyron -Julien Schmidt -Julien Tant -Julio Montes -Jun Zhang -Junchen Li -Junda Liu -Jungho Ahn -Junya Hayashi -Juraj Sukop -Jure Ham -Justin Gracenin -Justin Li -Justin Nuß -Justyn Temme -Kai Backman -Kai Dong -Kai Lüke -Kai Trukenmüller -Kale Blankenship -Kaleb Elwert -Kalman Bekesi -Kamal Aboul-Hosn -Kamil Chmielewski -Kamil Kisiel -Kamil Rytarowski -Kang Hu -Kanta Ebihara -Karan Dhiman -Karel Pazdera -Karoly Negyesi -Karsten Köhler -Karthik Nayak -Kashav Madan -Kate Manson -Katharine Berry -Katie Hockman -Kato Kazuyoshi -Katrina Owen -Kaviraj Kanagaraj -Kay Zhu -Kazuhiro Sera -KB Sriram -Keegan Carruthers-Smith -Kei Son -Keiichi Hirobe -Keiji Yoshida -Keisuke Kishimoto -Keith Ball -Keith Randall -Keith Rarick -Kelly Heller -Kelsey Hightower -Kelvin Foo Chuan Lyi -Kemal Elmizan -Ken Friedenbach -Ken Rockot -Ken Sedgwick -Ken Thompson -Kenichi Tsunokawa -Kenji Kaneda -Kenji Yano -Kenneth Shaw -Kenny Grant -Kensei Nakada -Kenta Mori -Kerollos Magdy -Ketan Parmar -Kevan Swanberg -Kevin Albertson -Kevin Ballard -Kevin Burke -Kévin Dunglas -Kevin Gillette -Kevin Herro -Kevin Kirsche -Kevin Klues -Kevin Malachowski -Kevin Parsons -Kevin Ruffin -Kevin Vu -Kevin Zita -Keyan Pishdadian -Keyuan Li -Kezhu Wang -Khosrow Moossavi -Kieran Colford -Kieran Gorman -Kim Shrier -Kim Yongbin -Kir Kolyshkin -Kirill Korotaev -Kirill Motkov -Kirill Smelkov -Kirill Tatchihin -Kirk Han -Kirklin McDonald -KJ Tsanaktsidis -Klaus Post -Kodie Goodwin -Koichi Shiraishi -Koki Ide -Koki Tomoshige -Komu Wairagu -Konstantin -Konstantin Shaposhnikov -Koya IWAMURA -Kris Kwiatkowski -Kris Nova -Kris Rousey -Krishna Birla -Kristopher Watts -Krzysztof Dąbrowski -Kshitij Saraogi -Kun Li -Kunpei Sakai -Kuntal Majumder -Kush Patel -Kyle Consalus -Kyle Isom -Kyle Jones -Kyle Lemons -Kyle Nusbaum -Kyle Shannon -Kyle Spiers -Kyle Wood -Kyohei Kadota -Kyrylo Silin -L Campbell -Lai Jiangshan -Lajos Papp -Lakshay Garg -Lann Martin -Lanre Adelowo -Lapo Luchini -Larry Clapp -Larry Hosken -Lars Jeppesen -Lars Lehtonen -Lars Wiegman -Larz Conwell -Laurent Voisin -Laurie Clark-Michalek -LE Manh Cuong -Lee Hinman -Lee Packham -Lehner Florian -Leigh McCulloch -Leo Antunes -Leo Rudberg -Leon Klingele -Leonard Wang -Leonardo Comelli -Leonel Quinteros -Lev Shamardin -Lewin Bormann -Lewis Waddicor -Li-Yu Yu -Liam Haworth -Lily Chung -Lingchao Xin -Lion Yang -Liz Rice -Lize Cai -Lloyd Dewolf -Lluís Batlle i Rossell -Lorenz Bauer -Lorenz Brun -Lorenz Nickel -Lorenzo Masini -Lorenzo Stoakes -Louis Kruger -Luan Santos -Lubomir I. Ivanov -Luca Bruno -Luca Greco -Luca Spiller -Lucas Bremgartner -Lucas Clemente -Lucien Stuker -Lucio De Re -Ludi Rehak -Luigi Riefolo -Luit van Drongelen -Luka Zakrajšek -Luka Zitnik -Lukasz Milewski -Luke Champine -Luke Curley -Luke Granger-Brown -Luke Shumaker -Luke Young -Luna Duclos -Luuk van Dijk -Lyle Franklin -Lynn Boger -Ma Peiqi -Maarten Bezemer -Maciej Dębski -Madhu Rajanna -Magnus Hiie -Mahdi Hosseini Moghaddam -Maia Lee -Maicon Costa -Mak Kolybabi -Maksym Trykur -Mal Curtis -Manfred Touron -Manigandan Dharmalingam -Manish Goregaokar -Manlio Perillo -Manoj Dayaram -Mansour Rahimi -Manu Garg -Manu S Ajith -Manuel Mendez -Marat Khabibullin -Marc Sanmiquel -Marc Weistroff -Marc-Antoine Ruel -Marcel Edmund Franke -Marcel van Lohuizen -Marcelo Cantos -Marcelo E. Magallon -Marco Gazerro -Marco Hennings -Marcus Weiner -Marcus Willock -Marga Manterola -Mariano Cano -Marin Bašić -Mario Arranz -Marius A. Eriksen -Marius Nuennerich -Mark Adams -Mark Bucciarelli -Mark Dain -Mark Glines -Mark Hansen -Mark Harrison -Mark Jeffery -Mark Percival -Mark Pulford -Mark Rushakoff -Mark Ryan -Mark Severson -Mark Theunissen -Mark Villacampa -Mark Wolfe -Mark Zavislak -Marko Juhani Silokunnas -Marko Kevac -Marko Kungla -Marko Mikulicic -Marko Mudrinic -Marko Tiikkaja -Markus Duft -Markus Sonderegger -Markus Zimmermann -Marten Seemann -Martin Asquino -Martin Bertschler -Martin Garton -Martin Habbecke -Martin Hamrle -Martin Hoefling -Martin Kreichgauer -Martin Kunc -Martin Lindhe -Martin Möhrmann -Martin Neubauer -Martin Olsen -Martin Olsson -Martin Probst -Martin Sucha -Martin Tournoij -Martins Sipenko -Martynas Budriūnas -Marvin Stenger -Marwan Sulaiman -Maryan Hratson -Masahiro Furudate -Masahiro Wakame -Masaki Yoshida -Masaya Watanabe -Mat Byczkowski -Mat Ryer -Máté Gulyás -Matej Baćo -Mateus Amin -Mateusz Czapliński -Matheus Alcantara -Mathias Beke -Mathias Hall-Andersen -Mathias Leppich -Mathieu Lonjaret -Mats Lidell -Matt Aimonetti -Matt Blair -Matt Bostock -Matt Brown -Matt Dee -Matt Drollette -Matt Harden -Matt Jibson -Matt Joiner -Matt Jones -Matt Juran -Matt Layher -Matt Masurka -Matt Pearring -Matt Reiferson -Matt Robenolt -Matt Strong -Matt T. Proud -Matt Williams -Matthew Brennan -Matthew Broberg -Matthew Cottingham -Matthew Dempsky -Matthew Denton -Matthew Holt -Matthew Horsnell -Matthew Waters -Matthias Dötsch -Matthias Frei -Matthieu Hauglustaine -Matthieu Olivier -Matthijs Kooijman -Mattias Appelgren -Mauricio Alvarado -Max Drosdo.www -Max Riveiro -Max Schmitt -Max Semenik -Max Ushakov -Maxim Eryomenko -Maxim Khitrov -Maxim Pimenov -Maxim Pugachev -Maxim Ushakov -Maxime de Roucy -Máximo Cuadros Ortiz -Maxwell Krohn -Maya Rashish -Mayank Kumar -Mehrad Sadeghi <2012.linkinpark@gmail.com> -Meir Fischer -Meng Zhuo -Mhd Sulhan -Mia Zhu -Micah Stetson -Michael Anthony Knyszek -Michael Brandenburg -Michael Chaten -Michael Cook -Michael Darakananda -Michael Dorner -Michael Edwards -Michael Elkins -Michael Ellis -Michael Fraenkel -Michael Fromberger -Michael Gehring -Michael Henderson -Michael Hendricks -Michael Hoisie -Michael Hudson-Doyle -Michael Kasch -Michael Käufl -Michael Kelly -Michaël Lévesque-Dion -Michael Lewis -Michael MacInnis -Michael Marineau -Michael Matloob -Michael McConville -Michael McGreevy -Michael McLoughlin -Michael Munday -Michael Pearson -Michael Piatek -Michael Pratt -Michael Schaller -Michael Schurter -Michael Shields -Michael Stapelberg -Michael Steinert -Michael T. Jones -Michael Teichgräber -Michael Traver -Michael Vetter -Michael Vogt -Michail Kargakis -Michal Bohuslávek -Michal Cierniak -Michał Derkacz -Michal Franc -Michal Hruby -Michał Łowicki -Michal Pristas -Michal Rostecki -Michal Stokluska -Michalis Kargakis -Michel Lespinasse -Michel Levieux -Michele Di Pede -Mickael Kerjean -Mickey Reiss -Miek Gieben -Miguel Acero -Miguel Mendez -Miguel Molina -Mihai Borobocea -Mihai Moldovan -Mihai Todor -Mihail Minaev -Mikael Tillenius -Mike Andrews -Mike Appleby -Mike Danese -Mike Houston -Mike Kabischev -Mike Rosset -Mike Samuel -Mike Solomon -Mike Strosaker -Mike Tsao -Mike Wiacek -Mikhail Faraponov <11322032+moredure@users.noreply.github.com> -Mikhail Fesenko -Mikhail Gusarov -Mikhail Panchenko -Miki Tebeka -Mikio Hara -Mikkel Krautz -Mikołaj Baranowski -Milan Knezevic -Milan Patel -Milutin Jovanović -MinJae Kwon -Miquel Sabaté Solà -Mirko Hansen -Miroslav Genov -Misty De Meo -Mohamed Attahri -Mohit Agarwal -Mohit kumar Bajoria -Mohit Verma -Momchil Velikov -Monis Khan -Monty Taylor -Moritz Fain -Moriyoshi Koizumi -Morten Siebuhr -Môshe van der Sterre -Mostafa Solati -Mostyn Bramley-Moore -Mrunal Patel -Muhammad Falak R Wani -Muhammad Hamza Farrukh -Muhammed Uluyol -Muir Manders -Mukesh Sharma -Mura Li -Mykhailo Lesyk -Nahum Shalman -Naman Aggarwal -Naman Gera -Nan Deng -Nao Yonashiro -Naoki Kanatani -Natanael Copa -Nate Wilkinson -Nathan Cantelmo -Nathan Caza -Nathan Dias -Nathan Fiscaletti -Nathan Humphreys -Nathan John Youngman -Nathan Otterness -Nathan P Finch -Nathan VanBenschoten -Nathan Youngman -Nathan(yinian) Hu -Nathaniel Cook -Naveen Kumar Sangi -Neeilan Selvalingam -Neelesh Chandola -Nehal J Wani -Neil Alexander -Neil Lyons -Neuman Vong -Neven Sajko -Nevins Bartolomeo -Niall Sheridan -Nic Day -Nicholas Asimov -Nicholas Katsaros -Nicholas Maniscalco -Nicholas Ng -Nicholas Presta -Nicholas Sullivan -Nicholas Waples -Nick Anthony -Nick Cooper -Nick Craig-Wood -Nick Harper -Nick Kubala -Nick Leli -Nick Miyake -Nick Patavalis -Nick Petroni -Nick Robinson -Nick Sherron -Nick Smolin -Nicolas BRULEZ -Nicolas Kaiser -Nicolas Owens -Nicolas S. Dade -Niek Sanders -Niels Widger -Nigel Kerr -Nigel Tao -Nik Nyby -Nikhil Benesch -Nikita Gillmann -Nikita Kryuchkov -Nikita Melekhin -Nikita Vanyasin -Niklas Schnelle -Niko Dziemba -Nikolay Turpitko -Nikson Kanti Paul -Nils Larsgård -Nir Soffer -Niranjan Godbole -Nishanth Shanmugham -Noah Campbell -Noah Goldman -Noah Santschi-Cooney -Noble Johnson -Nodir Turakulov -Noel Georgi -Nooras Saba -Norberto Lopes -Norman B. Lancaster -Nuno Cruces -Obei Sideg -Obeyda Djeffal -Odin Ugedal -Oleg Bulatov -Oleg Vakheta -Oleku Konko -Oling Cat -Oliver Hookins -Oliver Powell -Oliver Stenbom -Oliver Tan -Oliver Tonnhofer -Olivier Antoine -Olivier Duperray -Olivier Mengué -Olivier Poitrey -Olivier Saingre -Olivier Wulveryck -Omar Jarjur -Onkar Jadhav -Ori Bernstein -Ori Rawlings -Oryan Moshe -Osamu TONOMORI -Oscar Söderlund -Özgür Kesim -Pablo Caderno -Pablo Lalloni -Pablo Rozas Larraondo -Pablo Santiago Blum de Aguiar -Padraig Kitterick -Pallat Anchaleechamaikorn -Pan Chenglong <1004907659@qq.com> -Panos Georgiadis -Pantelis Sampaziotis -Paolo Giarrusso -Paolo Martini -Parker Moore -Parminder Singh -Pascal Dierich -Pascal S. de Kloe -Paschalis Tsilias -Pasi Tähkäpää -Pat Moroney -Patrick Barker -Patrick Crosby -Patrick Gavlin -Patrick Gundlach -Patrick Higgins -Patrick Jones -Patrick Lee -Patrick Mézard -Patrick Mylund Nielsen -Patrick Pelletier -Patrick Riley -Patrick Smith -Patrik Lundin -Patrik Nyblom -Paul A Querna -Paul Borman -Paul Boyd -Paul Chang -Paul D. Weber -Paul Davis <43160081+Pawls@users.noreply.github.com> -Paul E. Murphy -Paul Forgey -Paul Hammond -Paul Hankin -Paul Jolly -Paul Lalonde -Paul M Furley -Paul Marks -Paul Meyer -Paul Nasrat -Paul PISCUC -Paul Querna -Paul Rosania -Paul Ruest -Paul Sbarra -Paul Smith -Paul Tyng -Paul van Brouwershaven -Paul Wankadia -Paulo Casaretto -Paulo Flabiano Smorigo -Paulo Gomes -Pavel Kositsyn -Pavel Paulau -Pavel Watson -Pavel Zinovkin -Pavlo Sumkin -Pawel Knap -Pawel Szczur -Paweł Szulik -Pedro Lopez Mareque -Pei Xian Chee -Pei-Ming Wu -Pen Tree -Peng Gao -Percy Wegmann -Perry Abbott -Petar Dambovaliev -Petar Maymounkov -Peter Armitage -Peter Bourgon -Peter Collingbourne -Peter Conerly -Peter Dotchev -Peter Froehlich -Peter Gonda -Peter Hoyes -Peter Kleiweg -Peter McKenzie -Peter Moody -Peter Morjan -Peter Mundy -Peter Nguyen -Péter Surányi -Péter Szabó -Péter Szilágyi -Peter Teichman -Peter Tseng -Peter Waldschmidt -Peter Waller -Peter Weinberger -Peter Williams -Peter Wu -Peter Zhang -Petr Jediný -Petrica Voicu -Phil Pearl -Phil Pennock -Philip Børgesen -Philip Brown -Philip Hofer -Philip K. Warren -Philip Nelson -Philipp Sauter -Philipp Stephani -Phillip Campbell <15082+phillc@users.noreply.github.com> -Pierre Carru -Pierre Durand -Pierre Prinetti -Pierre Roullon -Piers -Pieter Droogendijk -Pietro Gagliardi -Piyush Mishra -Plekhanov Maxim -Poh Zi How -Polina Osadcha -Pontus Leitzler -Povilas Versockas -Prajwal Koirala <16564273+Prajwal-Koirala@users.noreply.github.com> -Prasanga Siripala -Prasanna Swaminathan -Prashant Agrawal -Prashant Varanasi -Praveen Kumar -Pravendra Singh -Preetam Jinka -Pure White -Qais Patankar -Qiuxuan Zhu -Quan Tran -Quan Yong Zhai -Quentin Perez -Quentin Renard -Quentin Smith -Quey-Liang Kao -Quim Muntal -Quinn Slack -Quinten Yearsley -Quoc-Viet Nguyen -Rabin Gaire -Radek Simko -Radek Sohlich -Radu Berinde -Rafal Jeczalik -Raghavendra Nagaraj -Rahul Bajaj -Rahul Chaudhry -Rahul Wadhwani -Raif S. Naffah -Rajat Goel -Rajath Agasthya -Rajender Reddy Kompally -Ralph Corderoy -Ramazan AYYILDIZ -Ramesh Dharan -Randy Reddig -Raph Levien -Raphael Geronimi -Raul Silvera -Ravil Bikbulatov -RaviTeja Pothana -Ray Tung -Ray Wu -Raymond Kazlauskas -Rebecca Stambler -Reilly Watson -Reinaldo de Souza Jr -Remi Gillig -Rémy Oudompheng -Ren Ogaki -Rens Rikkerink -Rhys Hiltner -Ricardo Padilha -Ricardo Pchevuzinske Katz -Ricardo Seriani -Rich Hong -Richard Barnes -Richard Crowley -Richard Dingwall -Richard Eric Gavaletz -Richard Gibson -Richard Miller -Richard Musiol -Richard Pickering -Richard Ulmer -Richard Wilkes -Rick Arnold -Rick Hudson -Rick Sayre -Rijnard van Tonder -Riku Voipio -Riley Avron -Risto Jaakko Saarelma -Rob Earhart -Rob Findley -Rob Norman -Rob Phoenix -Rob Pike -Robert Ayrapetyan -Robert Burke -Robert Daniel Kortschak -Robert Dinu -Robert Engels -Robert Figueiredo -Robert Griesemer -Robert Hencke -Robert Iannucci -Robert Kuska -Robert Obryk -Robert Sesek -Robert Snedegar -Robert Stepanek -Robert van Gent -Robert-André Mauchin -Roberto Clapis -Roberto Selbach -Robin Eklind -Robin Zhong -Rodolfo Carvalho -Rodolfo Rodriguez -Rodrigo Moraes de Oliveira -Rodrigo Rafael Monti Kochenburger -Roger Pau Monné -Roger Peppe -Rohan Challa -Rohan Verma -Rohith Ravi -Roi Martin -Roland Illig -Roland Shoemaker -Romain Baugue -Roman Budnikov -Roman Kollár -Roman Shchekin -Ron Hashimoto -Ron Minnich -Ronnie Ebrin -Ross Chater -Ross Kinsey -Ross Light -Ross Smith II -Rowan Marshall -Rowan Worth -Rudi Kramer -Rui Ueyama -Ruixin Bao -Ruslan Andreev -Ruslan Nigmatullin -Russ Cox -Russell Haering -Ryan Bagwell -Ryan Barrett -Ryan Boehning -Ryan Brown -Ryan Canty -Ryan Dahl -Ryan Hitchman -Ryan Kohler -Ryan Leung -Ryan Lower -Ryan Roden-Corrent -Ryan Seys -Ryan Slade -Ryan Zhang -Ryoichi KATO -Ryoya Sekino -Ryuji Iwata -Ryuma Yoshida -Ryuzo Yamamoto -S.Çağlar Onur -Sabin Mihai Rapan -Sad Pencil -Sai Cheemalapati -Sai Kiran Dasika -Sakeven Jiang -Salaheddin M. Mahmud -Salmān Aljammāz -Sam Arnold -Sam Boyer -Sam Chen -Sam Cross -Sam Ding -Sam Hug -Sam Thorogood -Sam Whited -Sam Xie -Sameer Ajmani -Sami Commerot -Sami Pönkänen -Samuel Kelemen -Samuel Tan -Samuele Pedroni -San Ye -Sander van Harmelen -Sanjay Menakuru -Santhosh Kumar Tekuri -Santiago De la Cruz <51337247+xhit@users.noreply.github.com> -Sarah Adams -Sardorbek Pulatov -Sascha Brawer -Sasha Lionheart -Sasha Sobol -Satoru Kitaguchi -Scott Barron -Scott Bell -Scott Cotton -Scott Crunkleton -Scott Ferguson -Scott Lawrence -Scott Mansfield -Scott Ragan -Scott Schwartz -Scott Van Woudenberg -Sean Burford -Sean Chen -Sean Chittenden -Sean Christopherson -Sean Dolphin -Sean Harger -Sean Harrington -Sean Hildebrand -Sean Liao -Sean Rees -Sebastiaan van Stijn -Sebastian Chlopecki -Sebastian Kinne -Sebastian Schmidt -Sebastien Binet -Sébastien Paolacci -Sebastien Williams-Wynn -Segev Finer -Seiji Takahashi -Sergei Lemeshkin -Sergei Skorobogatov -Sergei Zagurskii -Sergey 'SnakE' Gromov -Sergey Arseev -Sergey Dobrodey -Sergey Frolov -Sergey Glushchenko -Sergey Ivanov -Sergey Kacheev -Sergey Lukjanov -Sergey Mishin -Sergey Mudrik -Sergey Semin -Sergey Yanykin -Sergio Luis O. B. Correia -Sergiusz Bazanski -Serhat Giydiren -Serhii Aheienko -Seth Hoenig -Seth Vargo -Shaba Abhiram -Shahar Kohanim -Shailesh Suryawanshi -Shamil Garatuev -Shamim Akhtar -Shane Hansen -Shang Jian Ding -Shaozhen Ding -Shaquille Que -Shaquille Wyan Que -Shaun Dunning -Shawn Elliott -Shawn Ledbetter -Shawn Smith -Shawn Walker-Salas -Shenghou Ma -Shengjing Zhu -Shengyu Zhang -Shi Han Ng -ShihCheng Tu -Shijie Hao -Shin Fan -Shinji Tanaka -Shinnosuke Sawada <6warashi9@gmail.com> -Shintaro Kaneko -Shivakumar GN -Shivani Singhal -Shivansh Rai -Shivashis Padhi -Shoshin Nikita -Shota Sugiura -Shuai Tan -Shubham Sharma -Shuhei Takahashi -Shun Fan -Silvan Jegen -Simão Gomes Viana -Simarpreet Singh -Simon Drake -Simon Ferquel -Simon Frei -Simon Jefford -Simon Law -Simon Rawet -Simon Rozman -Simon Ser -Simon Thulbourn -Simon Whitehead -Sina Siadat -Sjoerd Siebinga -Sokolov Yura -Song Gao -Song Lim -Songjiayang -Songlin Jiang -Soojin Nam -Søren L. Hansen -Sparrow Li -Spencer Kocot -Spencer Nelson -Spencer Tung -Spenser Black -Spring Mc -Srdjan Petrovic -Sridhar Venkatakrishnan -Srinidhi Kaushik -StalkR -Stan Hu -Stan Schwertly -Stanislav Afanasev -Steeve Morin -Stefan Baebler -Stefan Nilsson -Stepan Shabalin -Stephan Klatt -Stephan Renatus -Stephan Zuercher -Stéphane Travostino -Stephen Lewis -Stephen Lu -Stephen Ma -Stephen McQuay -Stephen Searles -Stephen Weinberg -Steve Francia -Steve Gilbert -Steve LoFurno -Steve McCoy -Steve Mynott -Steve Newman -Steve Phillips -Steve Streeting -Steve Traut -Steven Buss -Steven Elliot Harris -Steven Erenst -Steven Hartland -Steven Littiebrant -Steven Maude -Steven Wilkin -Stuart Jansen -Subham Sarkar -Sue Spence -Sugu Sougoumarane -Suharsh Sivakumar -Sukrit Handa -Sunny -Suriyaa Sundararuban -Suvaditya Sur -Suyash -Suzy Mueller -Sven Almgren -Sven Blumenstein -Sven Lee -Sven Taute -Sylvain Zimmer -Syohei YOSHIDA -Szabolcs Nagy -Taavi Kivisik -Tad Fisher -Tad Glines -Tadas Valiukas -Tadeo Kondrak -Taesu Pyo -Tai Le -Taj Khattra -Takashi Matsuo -Takashi Mima -Takayoshi Nishida -Takeshi YAMANASHI <9.nashi@gmail.com> -Takuto Ikuta -Takuya Ueda -Tal Shprecher -Tamás Gulácsi -Tamir Duberstein -Tao Qingyun -Tao Shen -Tao Wang -Tarmigan Casebolt -Taro Aoki -Taru Karttunen -Tatsuhiro Tsujikawa -Tatsuya Kaneko -Taufiq Rahman -Teague Cole -Ted Kornish -Tejasvi Nareddy -Terin Stock -Terrel Shumway -Tetsuo Kiso -Than McIntosh -Thanabodee Charoenpiriyakij -Thanatat Tamtan -The Hatsune Daishi -Thiago Avelino -Thiago Fransosi Farina -Thom Wiggers -Thomas Alan Copeland -Thomas Bonfort -Thomas Bouldin -Thomas Bruyelle -Thomas Bushnell, BSG -Thomas de Zeeuw -Thomas Desrosiers -Thomas Habets -Thomas Kappler -Thomas Meson -Thomas Symborski -Thomas Wanielista -Thorben Krueger -Thordur Bjornsson -Tiago Peczenyj -Tiago Queiroz -Tianji Wu -Tianon Gravi -Tilman Dilo -Tim Cooijmans -Tim Cooper -Tim Ebringer -Tim Heckman -Tim Henderson -Tim Hockin -Tim King -Tim Möhlmann -Tim Swast -Tim Wright -Tim Xu -Timmy Douglas -Timo Savola -Timo Truyts -Timothy Gu -Timothy Studd -Tipp Moseley -Tiwei Bie -Tobias Assarsson -Tobias Columbus -Tobias Klauser -Tobias Kohlbau -Toby Burress -Todd Kulesza -Todd Neal -Todd Wang -Tom Anthony -Tom Bergan -Tom Freudenberg -Tom Heng -Tom Lanyon -Tom Levy -Tom Limoncelli -Tom Linford -Tom Panton -Tom Parkin -Tom Payne -Tom Szymanski -Tom Thorogood -Tom Wilkie -Tom Zierbock -Tomas Dabasinskas -Tommy Schaefer -Tomohiro Kusumoto -Tomoya Ishizaki -Tonis Tiigi -Tony Reix -Tony Walker -Tooru Takahashi -Tor Andersson -Torben Schinke -Tormod Erevik Lea -Toshihiro Shiino -Toshiki Shima -Totoro W -Travis Bischel -Travis Cline -Trevor Dixon -Trevor Strohman -Trey Lawrence -Trey Roessig -Trey Tacon -Tristan Amini -Tristan Colgate -Tristan Ooohry -Tristan Rice -Troels Thomsen -Trong Bui -Trung Nguyen -Tsuji Daishiro -Tudor Golubenco -Tugdual Saunier -Tuo Shan -Tyler Bui-Palsulich -Tyler Bunnell -Tyler Treat -Tyson Andre -Tzach Shabtay -Tzu-Chiao Yeh -Tzu-Jung Lee -Udalov Max -Uddeshya Singh -Ugorji Nwoke -Ulf Holm Nielsen -Ulrich Kunitz -Umang Parmar -Uriel Mangado -Urvil Patel -Utkarsh Dixit <53217283+utkarsh-extc@users.noreply.github.com> -Uttam C Pawar -Vadim Grek -Vadim Vygonets -Val Polouchkine -Valentin Vidic -Vaughn Iverson -Vee Zhang -Vega Garcia Luis Alfonso -Venil Noronha -Veselkov Konstantin -Viacheslav Poturaev -Victor Chudnovsky -Victor Michel -Victor Vrantchan -Vignesh Ramachandra -Vikas Kedia -Ville Skyttä -Vincent Ambo -Vincent Batts -Vincent Vanackere -Vinu Rajashekhar -Vish Subramanian -Vishal Dalwadi -Vishvananda Ishaya -Visweswara R -Vitaly Zdanevich -Vitor De Mario -Vivek Sekhar -Vivek V -Vivian Liang -Vlad Krasnov -Vladimir Evgrafov -Vladimir Kovpak -Vladimir Kuzmin -Vladimir Mihailenco -Vladimir Nikishenko -Vladimir Stefanovic -Vladimir Varankin -Vojtech Bocek -Volker Dobler -Volodymyr Paprotski -Vyacheslav Pachkov -W. Trevor King -Wade Simmons -Wagner Riffel -Walt Della -Walter Poupore -Wander Lairson Costa -Wang Xuerui -Warren Fernandes -Wayne Ashley Berry -Wayne Zuo -Wedson Almeida Filho -Weerasak Chongnguluam -Wèi Cōngruì -Wei Fu -Wei Guangjing -Wei Xiao -Wei Xikai -Weichao Tang -Weilu Jia -Weixie Cui <523516579@qq.com> -Wembley G. Leach, Jr -Wen Yang -Wenlei (Frank) He -Wenzel Lowe -Wil Selwood -Wilfried Teiken -Will Beason -Will Chan -Will Faught -Will Morrow -Will Norris -Will Storey -Willem van der Schyff -William Chan -William Chang -William Josephson -William Langford -William Orr -William Poussier -Wisdom Omuya -Wu Yunzhou -Xi Ruoyao -Xia Bin -Xiangdong Ji -Xiaodong Liu -Xing Gao <18340825824@163.com> -Xing Xing -Xingqang Bai -Xu Fei -Xudong Zhang -Xudong Zheng <7pkvm5aw@slicealias.com> -Xuyang Kang -Yamagishi Kazutoshi -Yan Zou -Yang Hau -Yang Tian -Yann Hodique -Yann Kerhervé -Yann Salaün -Yannic Bonenberger -Yao Zhang -Yaron de Leeuw -Yaroslav Vorobiov -Yasha Bubnov -Yasser Abdolmaleki -Yasuharu Goto -Yasuhiro Matsumoto -Yasutaka Shinzaki -Yasuyuki Oka -Yazen Shunnar -Yestin Sun -Yesudeep Mangalapilly -Yissakhar Z. Beck -Yo-An Lin -Yohei Takeda -Yongjian Xu -Yorman Arias -Yoshiyuki Kanno -Yoshiyuki Mineo -Yosuke Akatsuka -Youfu Zhang -Yu Heng Zhang -Yu Xuan Zhang -Yu, Li-Yu -Yuichi Kishimoto -Yuichi Nishiwaki -Yuji Yaginuma -Yuki Ito -Yuki OKUSHI -Yuki Osaki -Yuki Yugui Sonoda -Yukihiro Nishinaka <6elpinal@gmail.com> -YunHao Zhang -YunQiang Su -Yuntao Wang -Yury Smolsky -Yusuke Kagiwada -Yuusei Kuwana -Yuval Pavel Zholkover -Yves Junqueira -Zac Bergquist -Zach Bintliff -Zach Gershman -Zach Hoffman -Zach Jones -Zachary Amsden -Zachary Burkett -Zachary Gershman -Zaiyang Li -Zak -Zakatell Kanda -Zellyn Hunter -Zev Goldstein -Zhang Boyang -Zheng Dayu -Zheng Xu -Zhengyu He -Zhi Zheng -Zhongpeng Lin -Zhongtao Chen -Zhongwei Yao -Zhou Guangyuan -Zhou Peng -Ziad Hatahet -Ziheng Liu -Zizhao Zhang -Zorion Arrizabalaga -Zvonimir Pavlinovic -Zyad A. Ali -Максадбек Ахмедов -Максим Федосеев -Роман Хавроненко -Тарас Буник -Фахриддин Балтаев -张嵩 -申习之 diff --git a/doc/go1.19.html b/doc/go1.19.html deleted file mode 100644 index 53c11bd26e8361ec5441426368e7ff77b62c3316..0000000000000000000000000000000000000000 --- a/doc/go1.19.html +++ /dev/null @@ -1,919 +0,0 @@ - - - -

DRAFT RELEASE NOTES — Introduction to Go 1.19

-

- - Go 1.19 is not yet released. These are work-in-progress - release notes. Go 1.19 is expected to be released in August 2022. - -

- -

Changes to the language

- -

- There is only one small change to the language, - a very small correction - to the scope of type parameters in method declarations. - Existing programs are unaffected. -

- -

Memory Model

- -

- The Go memory model has been revised to align Go with - the memory model used by C, C++, Java, JavaScript, Rust, and Swift. - Go only provides sequentially consistent atomics, not any of the more relaxed forms found in other languages. - Along with the memory model update, - Go 1.19 introduces new types in the sync/atomic package - that make it easier to use atomic values, such as - atomic.Int64 - and - atomic.Pointer[T]. -

- -

Ports

- -

Loongson 64-bit

-

- Go 1.19 adds support for the Loongson 64-bit architecture LoongArch - on Linux (GOOS=linux, GOARCH=loong64). -

- -

RISC-V

-

- The riscv64 port now supports passing function arguments - and result using registers. Benchmarking shows typical performance - improvements of 10% or more on riscv64. -

- -

Tools

- -

Doc Comments

- -

-Go 1.19 adds support for links, lists, and clearer headings in doc comments. -As part of this change, gofmt -now reformats doc comments to make their rendered meaning clearer. -See “Go Doc Comments” -for syntax details and descriptions of common mistakes now highlighted by gofmt. -As another part of this change, the new package go/doc/comment -provides parsing and reformatting of doc comments -as well as support for rendering them to HTML, Markdown, and text. -

- -

New unix build constraint

- -

- The build constraint unix is now recognized - in //go:build lines. The constraint is satisfied - if the target operating system, also known as GOOS, is - a Unix or Unix-like system. For the 1.19 release it is satisfied - if GOOS is one of - aix, android, darwin, - dragonfly, freebsd, hurd, - illumos, ios, linux, - netbsd, openbsd, or solaris. - In future releases the unix constraint may match - additional newly supported operating systems. -

- -

Go command

- - -

- The -trimpath flag, if set, is now included in the build settings - stamped into Go binaries by go build, and can be - examined using - go version -m - or debug.ReadBuildInfo. -

-

- go generate now sets the GOROOT - environment variable explicitly in the generator's environment, so that - generators can locate the correct GOROOT even if built - with -trimpath. -

- -

- go test and go generate now place - GOROOT/bin at the beginning of the PATH used for the - subprocess, so tests and generators that execute the go command - will resolve it to same GOROOT. -

- -

- go env now quotes entries that contain spaces in - the CGO_CFLAGS, CGO_CPPFLAGS, CGO_CXXFLAGS, CGO_FFLAGS, CGO_LDFLAGS, - and GOGCCFLAGS variables it reports. -

- -

- The go command now caches information necessary to load some modules, - which should result in a speed-up of some go list invocations. -

- -

Vet

- -

- The vet checker “errorsas” now reports when - errors.As is called - with a second argument of type *error, - a common mistake. -

- -

Runtime

- -

- The runtime now includes support for a soft memory limit. This memory limit - includes the Go heap and all other memory managed by the runtime, and - excludes external memory sources such as mappings of the binary itself, - memory managed in other languages, and memory held by the operating system on - behalf of the Go program. This limit may be managed via - runtime/debug.SetMemoryLimit - or the equivalent - GOMEMLIMIT - environment variable. The limit works in conjunction with - runtime/debug.SetGCPercent - / GOGC, - and will be respected even if GOGC=off, allowing Go programs to - always make maximal use of their memory limit, improving resource efficiency - in some cases. See the GC guide for - a detailed guide explaining the soft memory limit in more detail, as well as - a variety of common use-cases and scenarios. Please note that small memory - limits, on the order of tens of megabytes or less, are less likely to be - respected due to external latency factors, such as OS scheduling. See - issue 52433 for more details. Larger - memory limits, on the order of hundreds of megabytes or more, are stable and - production-ready. -

- -

- In order to limit the effects of GC thrashing when the program's live heap - size approaches the soft memory limit, the Go runtime also attempts to limit - total GC CPU utilization to 50%, excluding idle time, choosing to use more - memory over preventing application progress. In practice, we expect this limit - to only play a role in exceptional cases, and the new - runtime metric - /gc/limiter/last-enabled:gc-cycle reports when this last - occurred. -

- -

- The runtime now schedules many fewer GC worker goroutines on idle operating - system threads when the application is idle enough to force a periodic GC - cycle. -

- -

- The runtime will now allocate initial goroutine stacks based on the historic - average stack usage of goroutines. This avoids some of the early stack growth - and copying needed in the average case in exchange for at most 2x wasted - space on below-average goroutines. -

- -

- On Unix operating systems, Go programs that import package - os now automatically increase the open file limit - (RLIMIT_NOFILE) to the maximum allowed value; - that is, they change the soft limit to match the hard limit. - This corrects artificially low limits set on some systems for compatibility with very old C programs using the - select system call. - Go programs are not helped by that limit, and instead even simple programs like gofmt - often ran out of file descriptors on such systems when processing many files in parallel. - One impact of this change is that Go programs that in turn execute very old C programs in child processes - may run those programs with too high a limit. - This can be corrected by setting the hard limit before invoking the Go program. -

- -

- Unrecoverable fatal errors (such as concurrent map writes, or unlock of - unlocked mutexes) now print a simpler traceback excluding runtime metadata - (equivalent to a fatal panic) unless GOTRACEBACK=system or - crash. Runtime-internal fatal error tracebacks always include - full metadata regardless of the value of GOTRACEBACK -

- -

- Support for debugger-injected function calls has been added on ARM64, - enabling users to call functions from their binary in an interactive - debugging session when using a debugger that is updated to make use of this - functionality. -

- -

- The address sanitizer support added in Go 1.18 - now handles function arguments and global variables more precisely. -

- -

Compiler

- -

- The compiler now uses - a jump - table to implement large integer and string switch statements. - Performance improvements for the switch statement vary but can be - on the order of 20% faster. - (GOARCH=amd64 and GOARCH=arm64 only) -

-

- The Go compiler now requires the -p=importpath flag to - build a linkable object file. This is already supplied by - the go command and by Bazel. Any other build systems - that invoke the Go compiler directly will need to make sure they - pass this flag as well. -

- -

Assembler

-

- Like the compiler, the assembler now requires the - -p=importpath flag to build a linkable object file. - This is already supplied by the go command. Any other - build systems that invoke the Go assembler directly will need to - make sure they pass this flag as well. -

- -

Linker

-

- On ELF platforms, the linker now emits compressed DWARF sections in - the standard gABI format (SHF_COMPRESSED), instead of - the legacy .zdebug format. -

- -

Core library

- -

New atomic types

- -

- The sync/atomic package defines new atomic types - Bool, - Int32, - Int64, - Uint32, - Uint64, - Uintptr, and - Pointer. - These types hide the underlying values so that all accesses are forced to use - the atomic APIs. - Pointer also avoids - the need to convert to - unsafe.Pointer at call sites. - Int64 and - Uint64 are - automatically aligned to 64-bit boundaries in structs and allocated data, - even on 32-bit systems. -

- -

PATH lookups

- -

- - Command and - LookPath no longer - allow results from a PATH search to be found relative to the current directory. - This removes a common source of security problems - but may also break existing programs that depend on using, say, exec.Command("prog") - to run a binary named prog (or, on Windows, prog.exe) in the current directory. - See the os/exec package documentation for - information about how best to update such programs. -

- -

- On Windows, Command and LookPath now respect the - NoDefaultCurrentDirectoryInExePath - environment variable, making it possible to disable - the default implicit search of “.” in PATH lookups on Windows systems. -

- -

Minor changes to the library

-

- As always, there are various minor changes and updates to the library, - made with the Go 1 promise of compatibility - in mind. - There are also various performance improvements, not enumerated here. -

- -
archive/zip
-
-

- Reader - now ignores non-ZIP data at the start of a ZIP file, matching most other implementations. - This is necessary to read some Java JAR files, among other uses. -

-
-
- -
crypto/rand
-
-

- Read no longer buffers - random data obtained from the operating system between calls. -

- -

- On Plan 9, Read has been reimplemented, replacing the ANSI - X9.31 algorithm with fast key erasure. -

-
-
- -
crypto/tls
-
-

- The tls10default GODEBUG option has been - removed. It is still possible to enable TLS 1.0 client-side by setting - Config.MinVersion. -

- -

- The TLS server and client now reject duplicate extensions in TLS - handshakes, as required by RFC 5246, Section 7.4.1.4 and RFC 8446, Section - 4.2. -

-
-
- -
crypto/x509
-
-

- CreateCertificate - no longer supports creating certificates with SignatureAlgorithm - set to MD5WithRSA. -

- -

- CreateCertificate no longer accepts negative serial numbers. -

- -

- ParseCertificate - and ParseCertificateRequest - now reject certificates and CSRs which contain duplicate extensions. -

- -

- The new CertPool.Clone - and CertPool.Equal - methods allow cloning a CertPool and checking the equality of two - CertPools respectively. -

- -

- The new function ParseRevocationList - provides a faster, safer to use CRL parser which returns a - RevocationList. - To support this addition, RevocationList adds new fields - RawIssuer, Signature, - AuthorityKeyId, and Extensions. - - The new method RevocationList.CheckSignatureFrom - checks that the signature on a CRL is a valid signature from a - Certificate. - - With the new CRL functionality, the existing functions - ParseCRL and - ParseDERCRL are deprecated. - Additionally the method Certificate.CheckCRLSignature - is deprecated. -

- -

- When building paths, Certificate.Verify - now considers certificates to be equal when the subjects, public keys, and SANs - are all equal. Before, it required byte-for-byte equality. -

-
-
- -
crypto/x509/pkix
-
-

- The types CertificateList and - TBSCertificateList - have been deprecated. The new crypto/x509 CRL functionality - should be used instead. -

-
-
- -
debug
-
-

- The new EM_LONGARCH and R_LARCH_* constants - support the loong64 port. -

-
-
- -
debug/pe
-
-

- The new File.COFFSymbolReadSectionDefAux - method, which returns a COFFSymbolAuxFormat5, - provides access to COMDAT information in PE file sections. - These are supported by new IMAGE_COMDAT_* and IMAGE_SCN_* constants. -

-
-
- -
encoding/binary
-
-

- The new interface - AppendByteOrder - provides efficient methods for appending a uint16, uint32, or uint64 - to a byte slice. - BigEndian and - LittleEndian now implement this interface. -

-

- Similarly, the new functions - AppendUvarint and - AppendVarint - are efficient appending versions of - PutUvarint and - PutVarint. -

-
-
- -
encoding/csv
-
-

- The new method - Reader.InputOffset - reports the reader's current input position as a byte offset, - analogous to encoding/json's - Decoder.InputOffset. -

-
-
- -
encoding/xml
-
-

- The new method - Decoder.InputPos - reports the reader's current input position as a line and column, - analogous to encoding/csv's - Decoder.FieldPos. -

-
-
- -
flag
-
-

- The new function - TextVar - defines a flag with a value implementing - encoding.TextUnmarshaler, - allowing command-line flag variables to have types such as - big.Int, - netip.Addr, and - time.Time. -

-
-
- -
fmt
-
-

- The new functions - Append, - Appendf, and - Appendln - append formatted data to byte slices. -

-
-
- -
go/parser
-
-

- The parser now recognizes ~x as a unary expression with operator - token.TILDE, - allowing better error recovery when a type constraint such as ~int is used in an incorrect context. -

-
-
- -
go/types
-
-

- The new methods Func.Origin - and Var.Origin return the - corresponding Object of the - generic type for synthetic Func - and Var objects created during type - instantiation. -

-

- It is no longer possible to produce an infinite number of distinct-but-identical - Named type instantiations via - recursive calls to - Named.Underlying or - Named.Method. -

-
-
- - -
hash/maphash
-
-

- The new functions - Bytes - and - String - provide an efficient way hash a single byte slice or string. - They are equivalent to using the more general - Hash - with a single write, but they avoid setup overhead for small inputs. -

-
-
- -
html/template
-
-

- The type FuncMap - is now an alias for - text/template's FuncMap - instead of its own named type. - This allows writing code that operates on a FuncMap from either setting. -

-
-
- -
image/draw
-
-

- Draw with the - Src operator preserves - non-premultiplied-alpha colors when destination and source images are - both image.NRGBA - or both image.NRGBA64. - This reverts a behavior change accidentally introduced by a Go 1.18 - library optimization; the code now matches the behavior in Go 1.17 and earlier. -

-
-
- -
io
-
-

- NopCloser's result now implements - WriterTo - whenever its input does. -

- -

- MultiReader's result now implements - WriterTo unconditionally. - If any underlying reader does not implement WriterTo, - it is simulated appropriately. -

-
-
- -
mime
-
-

- On Windows only, the mime package now ignores a registry entry - recording that the extension .js should have MIME - type text/plain. This is a common unintentional - misconfiguration on Windows systems. The effect is - that .js will have the default MIME - type text/javascript; charset=utf-8. - Applications that expect text/plain on Windows must - now explicitly call - AddExtensionType. -

-
-
- -
net
-
-

- The pure Go resolver will now use EDNS(0) to include a suggested - maximum reply packet length, permitting reply packets to contain - up to 1232 bytes (the previous maximum was 512). - In the unlikely event that this causes problems with a local DNS - resolver, setting the environment variable - GODEBUG=netdns=cgo to use the cgo-based resolver - should work. - Please report any such problems on the - issue tracker. -

- -

- When a net package function or method returns an "I/O timeout" - error, the error will now satisfy errors.Is(err, - context.DeadlineExceeded). When a net package function - returns an "operation was canceled" error, the error will now - satisfy errors.Is(err, context.Canceled). - These changes are intended to make it easier for code to test - for cases in which a context cancellation or timeout causes a net - package function or method to return an error, while preserving - backward compatibility for error messages. -

- -

- Resolver.PreferGo - is now implemented on Windows and Plan 9. It previously only worked on Unix - platforms. Combined with - Dialer.Resolver and - Resolver.Dial, it's now - possible to write portable programs and be in control of all DNS name lookups - when dialing. -

- -

- The net package now has initial support for the netgo - build tag on Windows. When used, the package uses the Go DNS client (as used - by Resolver.PreferGo) instead of asking Windows for - DNS results. The upstream DNS server it discovers from Windows - may not yet be correct with complex system network configurations, however. -

-
-
- -
net/http
-
-

- ResponseWriter.WriteHeader - now supports sending user-defined 1xx informational headers. -

- -

- The io.ReadCloser returned by - MaxBytesReader - will now return the defined error type - MaxBytesError - when its read limit is exceeded. -

- -

- The HTTP client will handle a 3xx response without a - Location header by returning it to the caller, - rather than treating it as an error. -

-
-
- -
net/url
-
-

- The new - JoinPath - function and - URL.JoinPath - method create a new URL by joining a list of path - elements. -

-

- The URL type now distinguishes between URLs with no - authority and URLs with an empty authority. For example, - http:///path has an empty authority (host), - while http:/path has none. -

-

- The new URL field - OmitHost is set to true when a - URL has an empty authority. -

- -
-
- -
os/exec
-
-

- A Cmd with a non-empty Dir field - and nil Env now implicitly sets the PWD environment - variable for the subprocess to match Dir. -

-

- The new method Cmd.Environ reports the - environment that would be used to run the command, including the - implicitly set PWD variable. -

-
-
- -
reflect
-
-

- The method Value.Bytes - now accepts addressable arrays in addition to slices. -

-

- The methods Value.Len - and Value.Cap - now successfully operate on a pointer to an array and return the length of that array, - to match what the builtin - len and cap functions do. -

-
-
- -
regexp/syntax
-
-

- Go 1.18 release candidate 1, Go 1.17.8, and Go 1.16.15 included a security fix - to the regular expression parser, making it reject very deeply nested expressions. - Because Go patch releases do not introduce new API, - the parser returned syntax.ErrInternalError in this case. - Go 1.19 adds a more specific error, syntax.ErrNestingDepth, - which the parser now returns instead. -

-
-
- -
runtime
-
-

- The GOROOT function now returns the empty string - (instead of "go") when the binary was built with - the -trimpath flag set and the GOROOT - variable is not set in the process environment. -

-
-
- -
runtime/metrics
-
-

- The new /sched/gomaxprocs:threads - metric reports - the current - runtime.GOMAXPROCS - value. -

- -

- The new /cgo/go-to-c-calls:calls - metric - reports the total number of calls made from Go to C. This metric is - identical to the - runtime.NumCgoCall - function. -

- -

- The new /gc/limiter/last-enabled:gc-cycle - metric - reports the last GC cycle when the GC CPU limiter was enabled. See the - runtime notes for details about the GC CPU limiter. -

-
-
- -
runtime/pprof
-
-

- Stop-the-world pause times have been significantly reduced when - collecting goroutine profiles, reducing the overall latency impact to the - application. -

- -

- MaxRSS is now reported in heap profiles for all Unix - operating systems (it was previously only reported for - GOOS=android, darwin, ios, and - linux). -

-
-
- -
runtime/race
-
-

- The race detector has been upgraded to use thread sanitizer - version v3 on all supported platforms - except windows/amd64 - and openbsd/amd64, which remain on v2. - Compared to v2, it is now typically 1.5x to 2x faster, uses half - as much memory, and it supports an unlimited number of - goroutines. - On Linux, the race detector now requires at least glibc version 2.17. -

- -

- The race detector is now supported on GOARCH=s390x. -

- -

- Race detector support for openbsd/amd64 has been - removed from thread sanitizer upstream, so it is unlikely to - ever be updated from v2. -

-
-
- -
runtime/trace
-
-

- When tracing and the - CPU profiler are - enabled simultaneously, the execution trace includes CPU profile - samples as instantaneous events. -

-
-
- -
sort
-
-

- The sorting algorithm has been rewritten to use - pattern-defeating quicksort, which - is faster for several common scenarios. -

-

- The new function - Find - is like - Search - but often easier to use: it returns an additional boolean reporting whether an equal value was found. -

-
-
- -
strconv
-
-

- Quote - and related functions now quote the rune U+007F as \x7f, - not \u007f, - for consistency with other ASCII values. -

-
-
- -
syscall
-
-

- On PowerPC (GOARCH=ppc64, ppc64le), - Syscall, - Syscall6, - RawSyscall, and - RawSyscall6 - now always return 0 for return value r2 instead of an - undefined value. -

- -

- On AIX and Solaris, Getrusage is now defined. -

-
-
- -
time
-
-

- The new method - Duration.Abs - provides a convenient and safe way to take the absolute value of a duration, - converting −2⁶³ to 2⁶³−1. - (This boundary case can happen as the result of subtracting a recent time from the zero time.) -

-

- The new method - Time.ZoneBounds - returns the start and end times of the time zone in effect at a given time. - It can be used in a loop to enumerate all the known time zone transitions at a given location. -

-
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/misc/cgo/test/setgid2_linux.go b/misc/cgo/test/setgid2_linux.go index 9069cff334368a6a2333dd8762fe255b2d661f28..438f5ae512d5fd94d2b73b7782f0cd0393945d8a 100644 --- a/misc/cgo/test/setgid2_linux.go +++ b/misc/cgo/test/setgid2_linux.go @@ -20,10 +20,7 @@ "testing" ) func testSetgidStress(t *testing.T) { - var N = 1000 - if testing.Short() { - N = 50 - } + const N = 50 ch := make(chan int, N) for i := 0; i < N; i++ { go func() { diff --git a/misc/cgo/testcshared/cshared_test.go b/misc/cgo/testcshared/cshared_test.go index e4898778be80ed9c9ea07d205b064bfd086be070..7fbcff24dd7ce57df4c6d0d756321be11ef739c5 100644 --- a/misc/cgo/testcshared/cshared_test.go +++ b/misc/cgo/testcshared/cshared_test.go @@ -151,16 +151,22 @@ // Directory where cgo headers and outputs will be installed. // The installation directory format varies depending on the platform. output, err := exec.Command("go", "list", "-buildmode=c-shared", - "-installsuffix", "testcshared", "-f", "{{.Target}}", - "./libgo").CombinedOutput() + "runtime/cgo").CombinedOutput() if err != nil { log.Panicf("go list failed: %v\n%s", err, output) } - target := string(bytes.TrimSpace(output)) - libgoname = filepath.Base(target) - installdir = filepath.Dir(target) - libSuffix = strings.TrimPrefix(filepath.Ext(target), ".") + runtimeCgoTarget := string(bytes.TrimSpace(output)) + libSuffix = strings.TrimPrefix(filepath.Ext(runtimeCgoTarget), ".") + + defer func() { + if installdir != "" { + err := os.RemoveAll(installdir) + if err != nil { + log.Panic(err) + } + } + }() return m.Run() } @@ -284,8 +290,13 @@ return fmt.Errorf("command failed: %v\n%v\n%s\n", args, err, out) } // Generate a C header file for libgo itself. - args = []string{"go", "install", "-buildmode=c-shared", - "-installsuffix", "testcshared", "./libgo"} + installdir, err = os.MkdirTemp("", "testcshared") + if err != nil { + return err + } + libgoname = "libgo." + libSuffix + + args = []string{"go", "build", "-buildmode=c-shared", "-o", filepath.Join(installdir, libgoname), "./libgo"} cmd = exec.Command(args[0], args[1:]...) out, err = cmd.CombinedOutput() if err != nil { @@ -373,6 +384,7 @@ headersOnce.Do(func() { headersErr = createHeaders() }) if headersErr != nil { + t.Helper() t.Fatal(headersErr) } } @@ -705,12 +717,15 @@ copyFile(t, filepath.Join(tmpdir, "src", "testcshared", "go.mod"), "go.mod") copyFile(t, filepath.Join(tmpdir, "src", "testcshared", "libgo", "libgo.go"), filepath.Join("libgo", "libgo.go")) copyFile(t, filepath.Join(tmpdir, "src", "testcshared", "p", "p.go"), filepath.Join("p", "p.go")) - env := append(os.Environ(), "GOPATH="+tmpdir, "GOBIN="+filepath.Join(tmpdir, "bin")) - buildcmd := []string{"go", "install", "-x", "-buildmode=c-shared", "-installsuffix", "testcshared", "./libgo"} cmd := exec.Command(buildcmd[0], buildcmd[1:]...) cmd.Dir = filepath.Join(tmpdir, "src", "testcshared") + env := append(cmd.Environ(), + "GOPATH="+tmpdir, + "GOBIN="+filepath.Join(tmpdir, "bin"), + "GO111MODULE=off", // 'go install' only works in GOPATH mode + ) cmd.Env = env t.Log(buildcmd) out, err := cmd.CombinedOutput() diff --git a/misc/cgo/testplugin/plugin_test.go b/misc/cgo/testplugin/plugin_test.go index e8587e69ba826e9942ceb85b922aff01a30c583e..285681018ab0aabb624628a2a37b39d34610361b 100644 --- a/misc/cgo/testplugin/plugin_test.go +++ b/misc/cgo/testplugin/plugin_test.go @@ -307,6 +307,12 @@ func TestIssue52937(t *testing.T) { goCmd(t, "build", "-buildmode=plugin", "-o", "issue52937.so", "./issue52937/main.go") } +func TestIssue53989(t *testing.T) { + goCmd(t, "build", "-buildmode=plugin", "-o", "issue53989.so", "./issue53989/plugin.go") + goCmd(t, "build", "-o", "issue53989.exe", "./issue53989/main.go") + run(t, "./issue53989.exe") +} + func TestForkExec(t *testing.T) { // Issue 38824: importing the plugin package causes it hang in forkExec on darwin. diff --git a/misc/cgo/testplugin/testdata/issue53989/main.go b/misc/cgo/testplugin/testdata/issue53989/main.go new file mode 100644 index 0000000000000000000000000000000000000000..6907dfd858096ced64e6be526ab5d5681a75d0eb --- /dev/null +++ b/misc/cgo/testplugin/testdata/issue53989/main.go @@ -0,0 +1,32 @@ +// Copyright 2022 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 53989: the use of jump table caused a function +// from the plugin jumps in the middle of the function +// to the function with the same name in the main +// executable. As these two functions may be compiled +// differently as plugin needs to be PIC, this causes +// crash. + +package main + +import ( + "plugin" + + "testplugin/issue53989/p" +) + +func main() { + p.Square(7) // call the function in main executable + + p, err := plugin.Open("issue53989.so") + if err != nil { + panic(err) + } + f, err := p.Lookup("Square") + if err != nil { + panic(err) + } + f.(func(int))(7) // call the plugin one +} diff --git a/misc/cgo/testplugin/testdata/issue53989/p/p.go b/misc/cgo/testplugin/testdata/issue53989/p/p.go new file mode 100644 index 0000000000000000000000000000000000000000..02567c1cee07bb7ef57e4630c39f7af399f1349a --- /dev/null +++ b/misc/cgo/testplugin/testdata/issue53989/p/p.go @@ -0,0 +1,52 @@ +// Copyright 2022 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. + +package p + +import ( + "fmt" + "runtime" +) + +var y int + +//go:noinline +func Square(x int) { + var pc0, pc1 [1]uintptr + runtime.Callers(1, pc0[:]) // get PC at entry + + // a switch using jump table + switch x { + case 1: + y = 1 + case 2: + y = 4 + case 3: + y = 9 + case 4: + y = 16 + case 5: + y = 25 + case 6: + y = 36 + case 7: + y = 49 + case 8: + y = 64 + default: + panic("too large") + } + + // check PC is in the same function + runtime.Callers(1, pc1[:]) + if pc1[0] < pc0[0] || pc1[0] > pc0[0]+1000000 { + fmt.Printf("jump across DSO boundary. pc0=%x, pc1=%x\n", pc0[0], pc1[0]) + panic("FAIL") + } + + if y != x*x { + fmt.Printf("x=%d y=%d!=%d\n", x, y, x*x) + panic("FAIL") + } +} diff --git a/misc/cgo/testplugin/testdata/issue53989/plugin.go b/misc/cgo/testplugin/testdata/issue53989/plugin.go new file mode 100644 index 0000000000000000000000000000000000000000..a753ee4419d735d9267e0ce3f37b9679e4172562 --- /dev/null +++ b/misc/cgo/testplugin/testdata/issue53989/plugin.go @@ -0,0 +1,13 @@ +// Copyright 2022 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. + +package main + +import "testplugin/issue53989/p" + +func Square(x int) { // export Square for plugin + p.Square(x) +} + +func main() {} diff --git a/misc/cgo/testshared/shared_test.go b/misc/cgo/testshared/shared_test.go index 024f084da55195945414c84d4e933976fdcd666f..756c4baa6b3a7ffdab14e36f5399b972c9fe477a 100644 --- a/misc/cgo/testshared/shared_test.go +++ b/misc/cgo/testshared/shared_test.go @@ -108,6 +108,15 @@ if !*testWork { defer os.RemoveAll(workDir) } + // -buildmode=shared fundamentally does not work in module mode. + // (It tries to share package dependencies across builds, but in module mode + // each module has its own distinct set of dependency versions.) + // We would like to eliminate it (see https://go.dev/issue/47788), + // but first need to figure out a replacement that covers the small subset + // of use-cases where -buildmode=shared still works today. + // For now, run the tests in GOPATH mode only. + os.Setenv("GO111MODULE", "off") + // Some tests need to edit the source in GOPATH, so copy this directory to a // temporary directory and chdir to that. gopath := filepath.Join(workDir, "gopath") diff --git a/src/bytes/reader.go b/src/bytes/reader.go index 5946cf9780b0e170f3398429958c1ae30a3a0952..81c22aa0295d6d04a08a63f47b38d4c75659044b 100644 --- a/src/bytes/reader.go +++ b/src/bytes/reader.go @@ -32,8 +32,7 @@ } // Size returns the original length of the underlying byte slice. // Size is the number of bytes available for reading via ReadAt. -// The returned value is always the same and is not affected by calls -// to any other method. +// The result is unaffected by any method calls except Reset. func (r *Reader) Size() int64 { return int64(len(r.s)) } // Read implements the io.Reader interface. diff --git a/src/cmd/cgo/out.go b/src/cmd/cgo/out.go index d6740028da9162ec8d9befaa848d565698e278f7..119eca2be79e8cce2d3787573c5164d4fa7cc2b7 100644 --- a/src/cmd/cgo/out.go +++ b/src/cmd/cgo/out.go @@ -1653,10 +1653,18 @@ // It is the caller's responsibility to arrange for it to be // freed, such as by calling C.free (be sure to include stdlib.h // if C.free is needed). func _Cfunc_CString(s string) *_Ctype_char { + if len(s)+1 <= 0 { + panic("string too large") + } p := _cgo_cmalloc(uint64(len(s)+1)) - pp := (*[1<<30]byte)(p) - copy(pp[:], s) - pp[len(s)] = 0 + sliceHeader := struct { + p unsafe.Pointer + len int + cap int + }{p, len(s)+1, len(s)+1} + b := *(*[]byte)(unsafe.Pointer(&sliceHeader)) + copy(b, s) + b[len(s)] = 0 return (*_Ctype_char)(p) } ` @@ -1670,8 +1678,13 @@ // freed, such as by calling C.free (be sure to include stdlib.h // if C.free is needed). func _Cfunc_CBytes(b []byte) unsafe.Pointer { p := _cgo_cmalloc(uint64(len(b))) - pp := (*[1<<30]byte)(p) - copy(pp[:], b) + sliceHeader := struct { + p unsafe.Pointer + len int + cap int + }{p, len(b), len(b)} + s := *(*[]byte)(unsafe.Pointer(&sliceHeader)) + copy(s, b) return p } ` diff --git a/src/cmd/compile/doc.go b/src/cmd/compile/doc.go index b8862f62cf11739b0cba9a087a2192eddb8eb277..60e12630c5580eb217d4f51c71fb5a7c5a7fd346 100644 --- a/src/cmd/compile/doc.go +++ b/src/cmd/compile/doc.go @@ -68,9 +68,6 @@ Halt with a stack trace at the first error detected. -importcfg file Read import configuration from file. In the file, set importmap, packagefile to specify import resolution. - -importmap old=new - Interpret import "old" as import "new" during compilation. - The option may be repeated to add multiple mappings. -installsuffix suffix Look for packages in $GOROOT/pkg/$GOOS_$GOARCH_suffix instead of $GOROOT/pkg/$GOOS_$GOARCH. diff --git a/src/cmd/compile/internal/amd64/versions_test.go b/src/cmd/compile/internal/amd64/versions_test.go index 2ac6e95c91a5c877111668f6caed1ee99f9055c5..b6411a1cb0d2fe8f853d35608fdd300f30cfcad4 100644 --- a/src/cmd/compile/internal/amd64/versions_test.go +++ b/src/cmd/compile/internal/amd64/versions_test.go @@ -242,12 +242,31 @@ // Note: we include *q, *l, and plain opcodes here. // go tool objdump doesn't include a [QL] on popcnt instructions, until CL 351889 // native objdump doesn't include [QL] on linux. "popcnt": {"popcntq", "popcntl", "popcnt"}, - "bmi1": {"andnq", "andnl", "andn", "blsiq", "blsil", "blsi", "blsmskq", "blsmskl", "blsmsk", "blsrq", "blsrl", "blsr", "tzcntq", "tzcntl", "tzcnt"}, - "bmi2": {"sarxq", "sarxl", "sarx", "shlxq", "shlxl", "shlx", "shrxq", "shrxl", "shrx"}, - "sse41": {"roundsd"}, - "fma": {"vfmadd231sd"}, - "movbe": {"movbeqq", "movbeq", "movbell", "movbel", "movbe"}, - "lzcnt": {"lzcntq", "lzcntl", "lzcnt"}, + "bmi1": { + "andnq", "andnl", "andn", + "blsiq", "blsil", "blsi", + "blsmskq", "blsmskl", "blsmsk", + "blsrq", "blsrl", "blsr", + "tzcntq", "tzcntl", "tzcnt", + }, + "bmi2": { + "sarxq", "sarxl", "sarx", + "shlxq", "shlxl", "shlx", + "shrxq", "shrxl", "shrx", + }, + "sse41": { + "roundsd", + "pinsrq", "pinsrl", "pinsrd", "pinsrb", "pinsr", + "pextrq", "pextrl", "pextrd", "pextrb", "pextr", + "pminsb", "pminsd", "pminuw", "pminud", // Note: ub and sw are ok. + "pmaxsb", "pmaxsd", "pmaxuw", "pmaxud", + "pmovzxbw", "pmovzxbd", "pmovzxbq", "pmovzxwd", "pmovzxwq", "pmovzxdq", + "pmovsxbw", "pmovsxbd", "pmovsxbq", "pmovsxwd", "pmovsxwq", "pmovsxdq", + "pblendvb", + }, + "fma": {"vfmadd231sd"}, + "movbe": {"movbeqq", "movbeq", "movbell", "movbel", "movbe"}, + "lzcnt": {"lzcntq", "lzcntl", "lzcnt"}, } // Test to use POPCNT instruction, if available diff --git a/src/cmd/compile/internal/base/flag.go b/src/cmd/compile/internal/base/flag.go index 4de0df21cbb7b21a029c14f0b400cd30c780422f..a363b83984785496504b2f4c8b4fd9a85035187d 100644 --- a/src/cmd/compile/internal/base/flag.go +++ b/src/cmd/compile/internal/base/flag.go @@ -100,7 +100,6 @@ EmbedCfg func(string) "help:\"read go:embed configuration from `file`\"" GenDwarfInl int "help:\"generate DWARF inline info records\"" // 0=disabled, 1=funcs, 2=funcs+formals/locals GoVersion string "help:\"required version of the runtime\"" ImportCfg func(string) "help:\"read import configuration from `file`\"" - ImportMap func(string) "help:\"add `definition` of the form source=actual to import map\"" InstallSuffix string "help:\"set pkg directory `suffix`\"" JSON string "help:\"version,file for JSON compiler/optimizer detail output\"" Lang string "help:\"Go language version source code expects\"" @@ -130,7 +129,7 @@ Patterns map[string][]string Files map[string]string } ImportDirs []string // appended to by -I - ImportMap map[string]string // set by -importmap OR -importcfg + ImportMap map[string]string // set by -importcfg PackageFile map[string]string // set by -importcfg; nil means not in use SpectreIndex bool // set by -spectre=index or -spectre=all // Whether we are adding any sort of code instrumentation, such as @@ -156,7 +155,6 @@ Flag.Dynlink = &Ctxt.Flag_dynlink Flag.EmbedCfg = readEmbedCfg Flag.GenDwarfInl = 2 Flag.ImportCfg = readImportCfg - Flag.ImportMap = addImportMap Flag.LinkShared = &Ctxt.Flag_linkshared Flag.Shared = &Ctxt.Flag_shared Flag.WB = true @@ -386,21 +384,6 @@ func addImportDir(dir string) { if dir != "" { Flag.Cfg.ImportDirs = append(Flag.Cfg.ImportDirs, dir) } -} - -func addImportMap(s string) { - if Flag.Cfg.ImportMap == nil { - Flag.Cfg.ImportMap = make(map[string]string) - } - if strings.Count(s, "=") != 1 { - log.Fatal("-importmap argument must be of the form source=actual") - } - i := strings.Index(s, "=") - source, actual := s[:i], s[i+1:] - if source == "" || actual == "" { - log.Fatal("-importmap argument must be of the form source=actual; source and actual must be non-empty") - } - Flag.Cfg.ImportMap[source] = actual } func readImportCfg(file string) { diff --git a/src/cmd/compile/internal/ir/mini.go b/src/cmd/compile/internal/ir/mini.go index 98c0ffa5b069912d75f22eca964039d6f84244f3..48f5eccf34f988e53092a558e8f66699476ba7bd 100644 --- a/src/cmd/compile/internal/ir/mini.go +++ b/src/cmd/compile/internal/ir/mini.go @@ -3,6 +3,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. //go:generate go run -mod=mod mknode.go +// Note: see comment at top of mknode.go package ir diff --git a/src/cmd/compile/internal/ir/mknode.go b/src/cmd/compile/internal/ir/mknode.go index 5a0aaadf16fa66ed864cf1903b8688620293d6e5..af8869d1225a1105a33b40f7d8915f4a375d533b 100644 --- a/src/cmd/compile/internal/ir/mknode.go +++ b/src/cmd/compile/internal/ir/mknode.go @@ -5,6 +5,12 @@ //go:build ignore // +build ignore +// Note: this program must be run with the GOROOT +// environment variable set to the root of this tree. +// GOROOT=... +// cd $GOROOT/src/cmd/compile/internal/ir +// ../../../../../bin/go run -mod=mod mknode.go + package main import ( @@ -154,6 +160,9 @@ typ = slice.Elem() } tmpl, what := singleTmpl, types.TypeString(typ, types.RelativeTo(irPkg)) + if what == "go/constant.Value" { + return false + } if implementsNode(typ) { if slice != nil { helper := strings.TrimPrefix(what, "*") + "s" diff --git a/src/cmd/compile/internal/noder/stencil.go b/src/cmd/compile/internal/noder/stencil.go index 1534a1fa49ccfd3b4c475839e340baafa68b7ec0..280f7cdf1c0e2c4055cac0c2371592b19b37cfae 100644 --- a/src/cmd/compile/internal/noder/stencil.go +++ b/src/cmd/compile/internal/noder/stencil.go @@ -623,7 +623,7 @@ nameNode.Func.Dcl = nameNode.Func.Inl.Dcl } } -// getInstantiation gets the instantiantion and dictionary of the function or method nameNode +// getInstantiation gets the instantiation and dictionary of the function or method nameNode // with the type arguments shapes. If the instantiated function is not already // cached, then it calls genericSubst to create the new instantiation. func (g *genInst) getInstantiation(nameNode *ir.Name, shapes []*types.Type, isMeth bool) *instInfo { @@ -1357,7 +1357,7 @@ m = convertUsingDictionary(info, info.dictParam, m.Pos(), mce.X, m, m.Type()) } case ir.ODOTTYPE, ir.ODOTTYPE2: dt := m.(*ir.TypeAssertExpr) - if !dt.Type().HasShape() && !dt.X.Type().HasShape() { + if !dt.Type().HasShape() && !(dt.X.Type().HasShape() && !dt.X.Type().IsEmptyInterface()) { break } var rtype, itab ir.Node diff --git a/src/cmd/compile/internal/ssa/rewrite.go b/src/cmd/compile/internal/ssa/rewrite.go index d41772ad8a0b3cd853bdc383091ca1bd0c50ab1f..05fb2f2776436078228e19f9ca1db6ec92d60b21 100644 --- a/src/cmd/compile/internal/ssa/rewrite.go +++ b/src/cmd/compile/internal/ssa/rewrite.go @@ -1959,5 +1959,6 @@ func makeJumpTableSym(b *Block) *obj.LSym { s := base.Ctxt.Lookup(fmt.Sprintf("%s.jump%d", b.Func.fe.LSym(), b.ID)) s.Set(obj.AttrDuplicateOK, true) + s.Set(obj.AttrLocal, true) return s } diff --git a/src/cmd/compile/internal/ssagen/ssa.go b/src/cmd/compile/internal/ssagen/ssa.go index a7778d37fb39200b00f297d8140dacb38b3b8322..2ee027092e9369ddc87342377379a011f49126a6 100644 --- a/src/cmd/compile/internal/ssagen/ssa.go +++ b/src/cmd/compile/internal/ssagen/ssa.go @@ -1496,6 +1496,10 @@ case ir.OLABEL: n := n.(*ir.LabelStmt) sym := n.Label + if sym.IsBlank() { + // Nothing to do because the label isn't targetable. See issue 52278. + break + } lab := s.label(sym) // The label might already have a target block via a goto. diff --git a/src/cmd/compile/internal/types/size.go b/src/cmd/compile/internal/types/size.go index 68b9ac3ff3ff7f3c1fff8898e6d36d247a63e33d..d034808132da06941ac62ce1628e141b9ed86787 100644 --- a/src/cmd/compile/internal/types/size.go +++ b/src/cmd/compile/internal/types/size.go @@ -169,6 +169,8 @@ maxalign = 1 } // Special case: sync/atomic.align64 is an empty struct we recognize // as a signal that the struct it contains must be 64-bit-aligned. + // + // This logic is duplicated in go/types and cmd/compile/internal/types2. if isStruct && t.NumFields() == 0 && t.Sym() != nil && t.Sym().Name == "align64" && isAtomicStdPkg(t.Sym().Pkg) { maxalign = 8 } diff --git a/src/cmd/compile/internal/types2/sizes.go b/src/cmd/compile/internal/types2/sizes.go index 6133e15924927f9f07e4793dbe34f0f619a00e52..4da309461f3974f3e97708896d875e35c3688350 100644 --- a/src/cmd/compile/internal/types2/sizes.go +++ b/src/cmd/compile/internal/types2/sizes.go @@ -53,6 +53,17 @@ // spec: "For a variable x of array type: unsafe.Alignof(x) // is the same as unsafe.Alignof(x[0]), but at least 1." return s.Alignof(t.elem) case *Struct: + if len(t.fields) == 0 && isSyncAtomicAlign64(T) { + // Special case: sync/atomic.align64 is an + // empty struct we recognize as a signal that + // the struct it contains must be + // 64-bit-aligned. + // + // This logic is equivalent to the logic in + // cmd/compile/internal/types/size.go:calcStructOffset + return 8 + } + // spec: "For a variable x of struct type: unsafe.Alignof(x) // is the largest of the values unsafe.Alignof(x.f) for each // field f of x, but at least 1." @@ -91,6 +102,18 @@ if a > s.MaxAlign { return s.MaxAlign } return a +} + +func isSyncAtomicAlign64(T Type) bool { + named, ok := T.(*Named) + if !ok { + return false + } + obj := named.Obj() + return obj.Name() == "align64" && + obj.Pkg() != nil && + (obj.Pkg().Path() == "sync/atomic" || + obj.Pkg().Path() == "runtime/internal/atomic") } func (s *StdSizes) Offsetsof(fields []*Var) []int64 { diff --git a/src/cmd/compile/internal/types2/sizes_test.go b/src/cmd/compile/internal/types2/sizes_test.go index c9a4942bed80c6f6fe902c7ce678a801570bb0f0..824ec838e2c3392948d59eaf30d60e2228282060 100644 --- a/src/cmd/compile/internal/types2/sizes_test.go +++ b/src/cmd/compile/internal/types2/sizes_test.go @@ -14,12 +14,15 @@ ) // findStructType typechecks src and returns the first struct type encountered. func findStructType(t *testing.T, src string) *types2.Struct { + return findStructTypeConfig(t, src, &types2.Config{}) +} + +func findStructTypeConfig(t *testing.T, src string, conf *types2.Config) *types2.Struct { f, err := parseSrc("x.go", src) if err != nil { t.Fatal(err) } info := types2.Info{Types: make(map[syntax.Expr]types2.TypeAndValue)} - var conf types2.Config _, err = conf.Check("x", []*syntax.File{f}, &info) if err != nil { t.Fatal(err) @@ -105,3 +108,39 @@ _ = conf.Sizes.Sizeof(tv.Type) _ = conf.Sizes.Alignof(tv.Type) } } + +// Issue #53884. +func TestAtomicAlign(t *testing.T) { + const src = ` +package main + +import "sync/atomic" + +var s struct { + x int32 + y atomic.Int64 + z int64 +} +` + + want := []int64{0, 8, 16} + for _, arch := range []string{"386", "amd64"} { + t.Run(arch, func(t *testing.T) { + conf := types2.Config{ + Importer: defaultImporter(), + Sizes: types2.SizesFor("gc", arch), + } + ts := findStructTypeConfig(t, src, &conf) + var fields []*types2.Var + // Make a copy manually :( + for i := 0; i < ts.NumFields(); i++ { + fields = append(fields, ts.Field(i)) + } + + offsets := conf.Sizes.Offsetsof(fields) + if offsets[0] != want[0] || offsets[1] != want[1] || offsets[2] != want[2] { + t.Errorf("OffsetsOf(%v) = %v want %v", ts, offsets, want) + } + }) + } +} diff --git a/src/cmd/dist/test.go b/src/cmd/dist/test.go index 846d0c0d85e7158b2850237f4907156082ca6924..da5b17980bcece2b44eb31ead125db8dd4cb85bc 100644 --- a/src/cmd/dist/test.go +++ b/src/cmd/dist/test.go @@ -542,7 +542,7 @@ t.tests = append(t.tests, distTest{ name: testName, heading: "GOMAXPROCS=2 runtime -cpu=1,2,4 -quick", fn: func(dt *distTest) error { - cmd := t.addCmd(dt, "src", t.goTest(), t.timeout(300), "runtime", "-cpu=1,2,4", "-quick") + cmd := t.addCmd(dt, "src", t.goTest(), "-short=true", t.timeout(300), "runtime", "-cpu=1,2,4", "-quick") // We set GOMAXPROCS=2 in addition to -cpu=1,2,4 in order to test runtime bootstrap code, // creation of first goroutines and first garbage collections in the parallel setting. setEnv(cmd, "GOMAXPROCS", "2") @@ -1720,7 +1720,7 @@ // will be marked as "skipped" in this case. func raceDetectorSupported(goos, goarch string) bool { switch goos { case "linux": - return goarch == "amd64" || goarch == "ppc64le" || goarch == "arm64" + return goarch == "amd64" || goarch == "ppc64le" || goarch == "arm64" || goarch == "s390x" case "darwin": return goarch == "amd64" || goarch == "arm64" case "freebsd", "netbsd", "openbsd", "windows": diff --git a/src/cmd/go/alldocs.go b/src/cmd/go/alldocs.go index db6372642ac01719d0820aa87274b91e8db64312..a3c1fecb91b6dda01c78ccb91176899d8cb9acf0 100644 --- a/src/cmd/go/alldocs.go +++ b/src/cmd/go/alldocs.go @@ -1708,7 +1708,7 @@ // test caching explicitly is to use -count=1. Tests that open files within // the package's source root (usually $GOPATH) or that consult environment // variables only match future runs in which the files and environment // variables are unchanged. A cached test result is treated as executing -// in no time at all,so a successful package test result will be cached and +// in no time at all, so a successful package test result will be cached and // reused regardless of -timeout setting. // // In addition to the build flags, the flags handled by 'go test' itself are: diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go index c100316f478edd0e54901b1baefdd4c41996cbb2..a0082a31641c004a020893891a0ffa9965b9b97c 100644 --- a/src/cmd/go/go_test.go +++ b/src/cmd/go/go_test.go @@ -991,21 +991,6 @@ tg.runGit(repoDir, "remote", "set-url", "origin", "https://"+importPath+".git") tg.run("get", "-d", "-u", importPath) } -func TestIssue16471(t *testing.T) { - testenv.MustHaveExternalNetwork(t) - testenv.MustHaveExecPath(t, "git") - - tg := testgo(t) - defer tg.cleanup() - tg.parallel() - tg.tempDir("src") - tg.setenv("GOPATH", tg.path(".")) - tg.must(os.MkdirAll(tg.path("src/rsc.io/go-get-issue-10952"), 0755)) - tg.runGit(tg.path("src/rsc.io"), "clone", "https://github.com/zombiezen/go-get-issue-10952") - tg.runFail("get", "-u", "rsc.io/go-get-issue-10952") - tg.grepStderr("rsc.io/go-get-issue-10952 is a custom import path for https://github.com/rsc/go-get-issue-10952, but .* is checked out from https://github.com/zombiezen/go-get-issue-10952", "did not detect updated import path") -} - // Test git clone URL that uses SCP-like syntax and custom import path checking. func TestIssue11457(t *testing.T) { testenv.MustHaveExternalNetwork(t) diff --git a/src/cmd/go/internal/modcmd/download.go b/src/cmd/go/internal/modcmd/download.go index a5fc63ed26da62c3b302d9e459b5a6915450932e..0b50afb668adccb824a3dbb612134155c3abecc0 100644 --- a/src/cmd/go/internal/modcmd/download.go +++ b/src/cmd/go/internal/modcmd/download.go @@ -206,12 +206,13 @@ type token struct{} sem := make(chan token, runtime.GOMAXPROCS(0)) infos, infosErr := modload.ListModules(ctx, args, 0, *downloadReuse) - if !haveExplicitArgs { + if !haveExplicitArgs && modload.WorkFilePath() == "" { // 'go mod download' is sometimes run without arguments to pre-populate the - // module cache. It may fetch modules that aren't needed to build packages - // in the main module. This is usually not intended, so don't save sums for - // downloaded modules (golang.org/issue/45332). We do still fix - // inconsistencies in go.mod though. + // module cache. In modules that aren't at go 1.17 or higher, it may fetch + // modules that aren't needed to build packages in the main module. This is + // usually not intended, so don't save sums for downloaded modules + // (golang.org/issue/45332). We do still fix inconsistencies in go.mod + // though. // // TODO(#45551): In the future, report an error if go.mod or go.sum need to // be updated after loading the build list. This may require setting @@ -282,8 +283,19 @@ // 'go mod download mod@version' is a useful way to add a sum without using // 'go get mod@version', which may have other side effects. We print this in // some error message hints. // - // Don't save sums for 'go mod download' without arguments; see comment above. - if haveExplicitArgs { + // If we're in workspace mode, update go.work.sum with checksums for all of + // the modules we downloaded that aren't already recorded. Since a requirement + // in one module may upgrade a dependency of another, we can't be sure that + // the import graph matches the import graph of any given module in isolation, + // so we may end up needing to load packages from modules that wouldn't + // otherwise be relevant. + // + // TODO(#44435): If we adjust the set of modules downloaded in workspace mode, + // we may also need to adjust the logic for saving checksums here. + // + // Don't save sums for 'go mod download' without arguments unless we're in + // workspace mode; see comment above. + if haveExplicitArgs || modload.WorkFilePath() != "" { if err := modload.WriteGoMod(ctx); err != nil { base.Errorf("go: %v", err) } diff --git a/src/cmd/go/internal/modfetch/codehost/codehost.go b/src/cmd/go/internal/modfetch/codehost/codehost.go index 8eaf254b44739b204c4bac90c301030131f16f31..747022759e6a4edc75232d5c4daf6c842c89070c 100644 --- a/src/cmd/go/internal/modfetch/codehost/codehost.go +++ b/src/cmd/go/internal/modfetch/codehost/codehost.go @@ -247,7 +247,7 @@ } lockfile = dir + ".lock" if cfg.BuildX { - fmt.Fprintf(os.Stderr, "# lock %s", lockfile) + fmt.Fprintf(os.Stderr, "# lock %s\n", lockfile) } unlock, err := lockedfile.MutexAt(lockfile).Lock() diff --git a/src/cmd/go/internal/modfetch/coderepo.go b/src/cmd/go/internal/modfetch/coderepo.go index b934e362a4ae69d3427189ed8b863a2bfb56fb9a..8fb0035f8c0f608f5afeac436ee86ddf18dd267b 100644 --- a/src/cmd/go/internal/modfetch/coderepo.go +++ b/src/cmd/go/internal/modfetch/coderepo.go @@ -792,7 +792,7 @@ // (except I/O error) until we rule out v2/go.mod. file1 := path.Join(r.codeDir, "go.mod") gomod1, err1 := r.code.ReadFile(rev, file1, codehost.MaxGoMod) if err1 != nil && !os.IsNotExist(err1) { - return "", "", nil, fmt.Errorf("reading %s/%s at revision %s: %v", r.pathPrefix, file1, rev, err1) + return "", "", nil, fmt.Errorf("reading %s/%s at revision %s: %v", r.codeRoot, file1, rev, err1) } mpath1 := modfile.ModulePath(gomod1) found1 := err1 == nil && (isMajor(mpath1, r.pathMajor) || r.canReplaceMismatchedVersionDueToBug(mpath1)) @@ -810,7 +810,7 @@ dir2 := path.Join(r.codeDir, r.pathMajor[1:]) file2 = path.Join(dir2, "go.mod") gomod2, err2 := r.code.ReadFile(rev, file2, codehost.MaxGoMod) if err2 != nil && !os.IsNotExist(err2) { - return "", "", nil, fmt.Errorf("reading %s/%s at revision %s: %v", r.pathPrefix, file2, rev, err2) + return "", "", nil, fmt.Errorf("reading %s/%s at revision %s: %v", r.codeRoot, file2, rev, err2) } mpath2 := modfile.ModulePath(gomod2) found2 := err2 == nil && isMajor(mpath2, r.pathMajor) @@ -823,9 +823,9 @@ return rev, dir2, gomod2, nil } if err2 == nil { if mpath2 == "" { - return "", "", nil, fmt.Errorf("%s/%s is missing module path at revision %s", r.pathPrefix, file2, rev) + return "", "", nil, fmt.Errorf("%s/%s is missing module path at revision %s", r.codeRoot, file2, rev) } - return "", "", nil, fmt.Errorf("%s/%s has non-...%s module path %q at revision %s", r.pathPrefix, file2, r.pathMajor, mpath2, rev) + return "", "", nil, fmt.Errorf("%s/%s has non-...%s module path %q at revision %s", r.codeRoot, file2, r.pathMajor, mpath2, rev) } } diff --git a/src/cmd/go/internal/modindex/read.go b/src/cmd/go/internal/modindex/read.go index 38ddfec70fb53d7dde07be097ee3e72f854fa040..707f17e1ab56147069d8dccbe078eaf236a0fa03 100644 --- a/src/cmd/go/internal/modindex/read.go +++ b/src/cmd/go/internal/modindex/read.go @@ -139,6 +139,9 @@ } if !errors.Is(err, errNotFromModuleCache) { return nil, err } + if cfg.BuildContext.Compiler == "gccgo" && str.HasPathPrefix(modroot, cfg.GOROOTsrc) { + return nil, err // gccgo has no sources for GOROOT packages. + } return openIndexPackage(modroot, pkgdir) } diff --git a/src/cmd/go/internal/modload/build.go b/src/cmd/go/internal/modload/build.go index e983e0ae0cf61783dbf3ff393dfedccb3a7fe2bb..555d4b3c631e54f643603ce9e63c309f50aa31d0 100644 --- a/src/cmd/go/internal/modload/build.go +++ b/src/cmd/go/internal/modload/build.go @@ -131,9 +131,14 @@ } info, err := Query(ctx, m.Path, "upgrade", m.Version, CheckAllowed) var noVersionErr *NoMatchingVersionError - if errors.Is(err, fs.ErrNotExist) || errors.As(err, &noVersionErr) { + if errors.Is(err, ErrDisallowed) || + errors.Is(err, fs.ErrNotExist) || + errors.As(err, &noVersionErr) { // Ignore "not found" and "no matching version" errors. // This means the proxy has no matching version or no versions at all. + // + // Ignore "disallowed" errors. This means the current version is + // excluded or retracted and there are no higher allowed versions. // // We should report other errors though. An attacker that controls the // network shouldn't be able to hide versions by interfering with diff --git a/src/cmd/go/internal/modload/buildlist.go b/src/cmd/go/internal/modload/buildlist.go index 5b8d6051f32269768c3e61c6534df1490d527faa..cde4953afa225047c4d0e685eb64044b38b98fbf 100644 --- a/src/cmd/go/internal/modload/buildlist.go +++ b/src/cmd/go/internal/modload/buildlist.go @@ -397,7 +397,6 @@ hasDepsInAll := make(map[string]bool) seen := map[module.Version]bool{} for _, m := range roots { hasDepsInAll[m.Path] = true - seen[m] = true } // This loop will terminate because it will call enqueue on each version of // each dependency of the modules in hasDepsInAll at most once (and only @@ -406,11 +405,11 @@ for { needsEnqueueing := map[module.Version]bool{} for p := range hasDepsInAll { m := module.Version{Path: p, Version: mg.g.Selected(p)} - reqs, ok := mg.g.RequiredBy(m) - if !ok { + if !seen[m] { needsEnqueueing[m] = true continue } + reqs, _ := mg.g.RequiredBy(m) for _, r := range reqs { s := module.Version{Path: r.Path, Version: mg.g.Selected(r.Path)} if cmpVersion(s.Version, r.Version) > 0 && !seen[s] { diff --git a/src/cmd/go/internal/test/test.go b/src/cmd/go/internal/test/test.go index 058906d9b8e18e84a9e453b64ede3c997b3add58..aa5e41e0043801312b1e8bdb42622482772c77fc 100644 --- a/src/cmd/go/internal/test/test.go +++ b/src/cmd/go/internal/test/test.go @@ -132,7 +132,7 @@ test caching explicitly is to use -count=1. Tests that open files within the package's source root (usually $GOPATH) or that consult environment variables only match future runs in which the files and environment variables are unchanged. A cached test result is treated as executing -in no time at all,so a successful package test result will be cached and +in no time at all, so a successful package test result will be cached and reused regardless of -timeout setting. In addition to the build flags, the flags handled by 'go test' itself are: diff --git a/src/cmd/go/testdata/mod/example.com_retract_noupgrade_v1.0.0.txt b/src/cmd/go/testdata/mod/example.com_retract_noupgrade_v1.0.0.txt new file mode 100644 index 0000000000000000000000000000000000000000..466afc576577c4a54271c9acf6fd2618ce9cfa9d --- /dev/null +++ b/src/cmd/go/testdata/mod/example.com_retract_noupgrade_v1.0.0.txt @@ -0,0 +1,9 @@ +-- .mod -- +module example.com/retract/noupgrade + +go 1.19 + +retract v1.0.0 // bad + +-- .info -- +{"Version":"v1.0.0"} diff --git a/src/cmd/go/testdata/script/build_overlay.txt b/src/cmd/go/testdata/script/build_overlay.txt index 56e812f44b29e7eb943f4302a17a4aeb825582bb..70cd7f8c7abf11229c5994d0b132cca7d5531301 100644 --- a/src/cmd/go/testdata/script/build_overlay.txt +++ b/src/cmd/go/testdata/script/build_overlay.txt @@ -47,19 +47,23 @@ go build -overlay overlay.json -o main_call_asm$GOEXE ./call_asm exec ./main_call_asm$GOEXE ! stdout . -# Change the contents of a file in the overlay and ensure that makes the target stale -go install -overlay overlay.json ./test_cache -go list -overlay overlay.json -f '{{.Stale}}' ./test_cache -stdout '^false$' -cp overlay/test_cache_different.go overlay/test_cache.go -go list -overlay overlay.json -f '{{.Stale}}' ./test_cache -stdout '^true$' - [cgo] go list -compiled -overlay overlay.json -f '{{range .CompiledGoFiles}}{{. | printf "%s\n"}}{{end}}' ./cgo_hello_replace [cgo] cp stdout compiled_cgo_sources.txt [cgo] go run ../print_line_comments.go compiled_cgo_sources.txt [cgo] stdout $GOPATH[/\\]src[/\\]m[/\\]cgo_hello_replace[/\\]cgo_hello_replace.go [cgo] ! stdout $GOPATH[/\\]src[/\\]m[/\\]overlay[/\\]hello.c + +# Change the contents of a file in the overlay and ensure that makes the target stale +env OLD_GOCACHE=$GOCACHE +env GOCACHE=$WORK/cache # use a fresh cache so that multiple runs of the test don't interfere +go build -x -overlay overlay.json ./test_cache +stderr '(compile|gccgo)( |\.exe).*test_cache.go' +go build -x -overlay overlay.json ./test_cache +! stderr '(compile|gccgo)( |\.exe).*test_cache.go' # cached +cp overlay/test_cache_different.go overlay/test_cache.go +go build -x -overlay overlay.json ./test_cache +stderr '(compile|gccgo)( |\.exe).*test_cache.go' # not cached +env CACHE=$OLD_GOCACHE # Run same tests but with gccgo. env GO111MODULE=off diff --git a/src/cmd/go/testdata/script/get_issue16471.txt b/src/cmd/go/testdata/script/get_issue16471.txt new file mode 100644 index 0000000000000000000000000000000000000000..2a2225a444da9787fc3fb97471891e3cf87e0699 --- /dev/null +++ b/src/cmd/go/testdata/script/get_issue16471.txt @@ -0,0 +1,22 @@ +[!net] skip +[!exec:git] skip + +env GO111MODULE=off + +cd rsc.io/go-get-issue-10952 + +exec git init +exec git add foo.go +exec git config user.name Gopher +exec git config user.email gopher@golang.org +exec git commit -a -m 'initial commit' +exec git remote add origin https://github.com/golang/go-get-issue-10952 + +exec git status + +! go get -x -u rsc.io/go-get-issue-10952 +stderr '^package rsc.io/go-get-issue-10952: rsc\.io/go-get-issue-10952 is a custom import path for https://github.com/rsc/go-get-issue-10952, but .* is checked out from https://github.com/golang/go-get-issue-10952$' + +-- rsc.io/go-get-issue-10952/foo.go -- +// Junk package to test go get. +package foo diff --git a/src/cmd/go/testdata/script/mod_download_issue51114.txt b/src/cmd/go/testdata/script/mod_download_issue51114.txt new file mode 100644 index 0000000000000000000000000000000000000000..92479c6dd3cd0a6db2e9a8fafb1ba14980acad65 --- /dev/null +++ b/src/cmd/go/testdata/script/mod_download_issue51114.txt @@ -0,0 +1,21 @@ +[short] skip +[!exec:git] skip +[!net] skip +[!linux] skip # Uses XDG_CONFIG_HOME + +env GIT_CONFIG_GLOBAL=$WORK/.gitconfig +env GOPROXY=direct + +! go mod download +stderr '^go: github\.com/golang/notexist/subdir@v0.1.0: reading github\.com/golang/notexist/subdir/go\.mod at revision subdir/v0\.1\.0: ' + +-- go.mod -- +module test + +go 1.18 + +require github.com/golang/notexist/subdir v0.1.0 + +-- $WORK/.gitconfig -- +[url "git@github.com:"] + insteadOf = https://github.com/ diff --git a/src/cmd/go/testdata/script/mod_download_private_vcs.txt b/src/cmd/go/testdata/script/mod_download_private_vcs.txt index e126793907241b65c6de002dc3cb200f37dd2fea..da9fe0290b7a4d955ec22c300a8e0ce7aa772274 100644 --- a/src/cmd/go/testdata/script/mod_download_private_vcs.txt +++ b/src/cmd/go/testdata/script/mod_download_private_vcs.txt @@ -22,22 +22,18 @@ stderr '^If this is a private repository, see https://golang.org/doc/faq#git_https for additional information.$' ! stderr 'unknown revision' ! stdout . -[!linux] stop # Needs XDG_CONFIG_HOME. [!exec:false] stop # Test that Git clone errors will be shown to the user instead of a generic # "unknown revision" error. To do this we want to force git ls-remote to return # an error we don't already have special handling for. See golang/go#42751. -# -# Set XDG_CONFIG_HOME to tell Git where to look for the git config file listed -# below, which turns on ssh. -env XDG_CONFIG_HOME=$TMPDIR +env HOME=$WORK${/}home${/}gopher env GIT_SSH_COMMAND=false ! go install github.com/golang/nonexist@master stderr 'fatal: Could not read from remote repository.' ! stderr 'unknown revision' ! stdout . --- $TMPDIR/git/config -- +-- $WORK/home/gopher/.gitconfig -- [url "git@github.com:"] - insteadOf = https://github.com/ + insteadOf = https://github.com/ diff --git a/src/cmd/go/testdata/script/mod_retract_noupgrade.txt b/src/cmd/go/testdata/script/mod_retract_noupgrade.txt new file mode 100644 index 0000000000000000000000000000000000000000..67de79f42d51a215faa51a74e279e5322e644b9a --- /dev/null +++ b/src/cmd/go/testdata/script/mod_retract_noupgrade.txt @@ -0,0 +1,11 @@ +go list -m -u example.com/retract/noupgrade +stdout '^example.com/retract/noupgrade v1.0.0 \(retracted\)$' + +-- go.mod -- +module use + +go 1.19 + +require example.com/retract/noupgrade v1.0.0 +-- go.sum -- +example.com/retract/noupgrade v1.0.0/go.mod h1:q2/HnBejUQ83RcUo4stf2U++/Zr9R/Ky3BsodjKBkQ4= diff --git a/src/cmd/go/testdata/script/test_fuzz_cache.txt b/src/cmd/go/testdata/script/test_fuzz_cache.txt index 552966b06bdd706ac7e9fdd9bef1128357a1e30c..19fb764add7a415511d59f0784a2b42e91ecf076 100644 --- a/src/cmd/go/testdata/script/test_fuzz_cache.txt +++ b/src/cmd/go/testdata/script/test_fuzz_cache.txt @@ -17,15 +17,12 @@ go clean -cache exists $GOCACHE/fuzz # 'go clean -fuzzcache' should delete the fuzz cache but not the build cache. -go list -f {{.Stale}} ./empty -stdout true -go install ./empty -go list -f {{.Stale}} ./empty -stdout false +go build -x ./empty +stderr '(compile|gccgo)( |\.exe).*empty.go' go clean -fuzzcache ! exists $GOCACHE/fuzz -go list -f {{.Stale}} ./empty -stdout false +go build -x ./empty +! stderr '(compile|gccgo)( |\.exe).*empty.go' # Fuzzing indicates that one new interesting value was found with an empty # corpus, and the total size of the cache is now 1. diff --git a/src/cmd/go/testdata/script/work_goproxy_off.txt b/src/cmd/go/testdata/script/work_goproxy_off.txt new file mode 100644 index 0000000000000000000000000000000000000000..0a602e3d7bd88c594cf013d5fb4035f1054ecaad --- /dev/null +++ b/src/cmd/go/testdata/script/work_goproxy_off.txt @@ -0,0 +1,59 @@ +go work init +go work use . ./sub + +# Verify that the go.mod files for both modules in the workspace are tidy, +# and add missing go.sum entries as needed. + +cp go.mod go.mod.orig +go mod tidy +cmp go.mod go.mod.orig + +cd sub +cp go.mod go.mod.orig +go mod tidy +cmp go.mod go.mod.orig +cd .. + +go list -m all +stdout '^rsc\.io/quote v1\.5\.1$' +stdout '^rsc\.io/sampler v1\.3\.1$' + +# Now remove the module dependencies from the module cache. +# Because one module upgrades a transitive dependency needed by another, +# listing the modules in the workspace should error out. + +go clean -modcache +env GOPROXY=off +! go list -m all +stderr '^go: rsc.io/sampler@v1.3.0: module lookup disabled by GOPROXY=off$' + +-- example.go -- +package example + +import _ "rsc.io/sampler" +-- go.mod -- +module example + +go 1.19 + +require rsc.io/sampler v1.3.0 + +require ( + golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c // indirect + rsc.io/testonly v1.0.0 // indirect +) +-- sub/go.mod -- +module example/sub + +go 1.19 + +require rsc.io/quote v1.5.1 + +require ( + golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c // indirect + rsc.io/sampler v1.3.1 // indirect +) +-- sub/sub.go -- +package example + +import _ "rsc.io/quote" diff --git a/src/cmd/go/testdata/script/work_why_download_graph.txt b/src/cmd/go/testdata/script/work_why_download_graph.txt index 7964c914a2c5a25aae95ae75c0d705ff02aad451..8f1aeddf47106d3abc51ba45610853ed0fab3164 100644 --- a/src/cmd/go/testdata/script/work_why_download_graph.txt +++ b/src/cmd/go/testdata/script/work_why_download_graph.txt @@ -7,13 +7,19 @@ exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.2.mod exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.2.zip ! exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.0.info ! exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.0.mod +grep '^rsc\.io/quote v1\.5\.2/go\.mod h1:' go.work.sum +grep '^rsc\.io/quote v1\.5\.2 h1:' go.work.sum +go clean -modcache +rm go.work.sum go mod download exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.2.info exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.2.mod exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.2.zip ! exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.0.info ! exists $GOPATH/pkg/mod/cache/download/rsc.io/quote/@v/v1.5.0.mod +grep '^rsc\.io/quote v1\.5\.2/go\.mod h1:' go.work.sum +grep '^rsc\.io/quote v1\.5\.2 h1:' go.work.sum go mod why rsc.io/quote stdout '# rsc.io/quote\nexample.com/a\nrsc.io/quote' @@ -25,8 +31,8 @@ -- go.work -- go 1.18 use ( - ./a - ./b + ./a + ./b ) -- a/go.mod -- go 1.18 diff --git a/src/crypto/internal/nistec/p224_sqrt.go b/src/crypto/internal/nistec/p224_sqrt.go index ac4d761bf555f4de82460fe1b0e113a132d3ce88..9a35cea6aac4e8020ab3050ffedac65bd9f80ef2 100644 --- a/src/crypto/internal/nistec/p224_sqrt.go +++ b/src/crypto/internal/nistec/p224_sqrt.go @@ -19,7 +19,7 @@ // p224SqrtCandidate sets r to a square root candidate for x. r and x must not overlap. func p224SqrtCandidate(r, x *fiat.P224Element) { // Since p = 1 mod 4, we can't use the exponentiation by (p + 1) / 4 like // for the other primes. Instead, implement a variation of Tonelli–Shanks. - // The contant-time implementation is adapted from Thomas Pornin's ecGFp5. + // The constant-time implementation is adapted from Thomas Pornin's ecGFp5. // // https://github.com/pornin/ecgfp5/blob/82325b965/rust/src/field.rs#L337-L385 diff --git a/src/debug/gosym/symtab.go b/src/debug/gosym/symtab.go index 4e63f1cdf705ef1f4d90e2cd52414c326842c43a..afc67198c3ffe041cfb33f87a9f18ba049602e75 100644 --- a/src/debug/gosym/symtab.go +++ b/src/debug/gosym/symtab.go @@ -86,7 +86,7 @@ } // Find the first dot after pathend (or from the beginning, if there was // no slash in name). l := strings.Index(name[pathend:], ".") - // Find the last dot after pathend (or the beginnng). + // Find the last dot after pathend (or the beginning). r := strings.LastIndex(name[pathend:], ".") if l == -1 || r == -1 || l == r { // There is no receiver if we didn't find two distinct dots after pathend. diff --git a/src/encoding/gob/gobencdec_test.go b/src/encoding/gob/gobencdec_test.go index 3d49887c016767805c704a398c37b86fd5520b0c..6fefd3675664b68e04fbf60df08a7a02ff61d9a9 100644 --- a/src/encoding/gob/gobencdec_test.go +++ b/src/encoding/gob/gobencdec_test.go @@ -798,7 +798,7 @@ t.Errorf("decoded to %v, want 1.2.3.4", ip.String()) } } -func TestIngoreDepthLimit(t *testing.T) { +func TestIgnoreDepthLimit(t *testing.T) { // We don't test the actual depth limit because it requires building an // extremely large message, which takes quite a while. oldNestingDepth := maxIgnoreNestingDepth diff --git a/src/encoding/xml/read_test.go b/src/encoding/xml/read_test.go index 58d1eddb6123f054eeb6fead8f30e1720df72f53..35385c64909b7397f7ac3d66afe02c01f1371c5f 100644 --- a/src/encoding/xml/read_test.go +++ b/src/encoding/xml/read_test.go @@ -9,7 +9,6 @@ "bytes" "errors" "io" "reflect" - "runtime" "strings" "testing" "time" @@ -1112,8 +1111,8 @@ } } func TestCVE202230633(t *testing.T) { - if runtime.GOARCH == "wasm" { - t.Skip("causes memory exhaustion on js/wasm") + if testing.Short() { + t.Skip("test requires significant memory") } defer func() { p := recover() diff --git a/src/go/build/build.go b/src/go/build/build.go index bfe3f444ca714bfbd49b946a79ae11ac89124bf8..dfb37b8f3435a68f2ec1b2d808c2a1cee4c313b9 100644 --- a/src/go/build/build.go +++ b/src/go/build/build.go @@ -715,6 +715,9 @@ } tried.goroot = dir } if ctxt.Compiler == "gccgo" && goroot.IsStandardPackage(ctxt.GOROOT, ctxt.Compiler, path) { + // TODO(bcmills): Setting p.Dir here is misleading, because gccgo + // doesn't actually load its standard-library packages from this + // directory. See if we can leave it unset. p.Dir = ctxt.joinPath(ctxt.GOROOT, "src", path) p.Goroot = true p.Root = ctxt.GOROOT diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go index 84cc9de8e786e067315861c0cdeda50b764dfc0a..141fdb9fbd8584339664f5ee50a55116a72ac5aa 100644 --- a/src/go/build/deps_test.go +++ b/src/go/build/deps_test.go @@ -177,7 +177,11 @@ unicode, fmt !< net, os, os/signal; os/signal, STR < path/filepath - < io/ioutil, os/exec; + < io/ioutil; + + os < internal/godebug; + + path/filepath, internal/godebug < os/exec; io/ioutil, os/exec, os/signal < OS; @@ -186,8 +190,6 @@ reflect !< OS; OS < golang.org/x/sys/cpu; - - os < internal/godebug; # FMT is OS (which includes string routines) plus reflect and fmt. # It does not include package log, which should be avoided in core packages. diff --git a/src/go/parser/parser_test.go b/src/go/parser/parser_test.go index 1a46c878663478c02673baaf07172f64577c15ef..0c278924c9ba6080d6a07f746b002dbf00f3313b 100644 --- a/src/go/parser/parser_test.go +++ b/src/go/parser/parser_test.go @@ -10,7 +10,6 @@ "fmt" "go/ast" "go/token" "io/fs" - "runtime" "strings" "testing" ) @@ -653,8 +652,8 @@ return x[:start], x[start+len("«") : end], x[end+len("»"):] } func TestParseDepthLimit(t *testing.T) { - if runtime.GOARCH == "wasm" { - t.Skip("causes call stack exhaustion on js/wasm") + if testing.Short() { + t.Skip("test requires significant memory") } for _, tt := range parseDepthTests { for _, size := range []string{"small", "big"} { @@ -699,9 +698,6 @@ } } func TestScopeDepthLimit(t *testing.T) { - if runtime.GOARCH == "wasm" { - t.Skip("causes call stack exhaustion on js/wasm") - } for _, tt := range parseDepthTests { if !tt.scope { continue diff --git a/src/go/types/sizes.go b/src/go/types/sizes.go index 7b67dca2b8b3ff63ddfbd354fb066aae00d0944d..cb5253b453270c3f029274147eaa09a7b675ebde 100644 --- a/src/go/types/sizes.go +++ b/src/go/types/sizes.go @@ -53,6 +53,17 @@ // spec: "For a variable x of array type: unsafe.Alignof(x) // is the same as unsafe.Alignof(x[0]), but at least 1." return s.Alignof(t.elem) case *Struct: + if len(t.fields) == 0 && isSyncAtomicAlign64(T) { + // Special case: sync/atomic.align64 is an + // empty struct we recognize as a signal that + // the struct it contains must be + // 64-bit-aligned. + // + // This logic is equivalent to the logic in + // cmd/compile/internal/types/size.go:calcStructOffset + return 8 + } + // spec: "For a variable x of struct type: unsafe.Alignof(x) // is the largest of the values unsafe.Alignof(x.f) for each // field f of x, but at least 1." @@ -91,6 +102,18 @@ if a > s.MaxAlign { return s.MaxAlign } return a +} + +func isSyncAtomicAlign64(T Type) bool { + named, ok := T.(*Named) + if !ok { + return false + } + obj := named.Obj() + return obj.Name() == "align64" && + obj.Pkg() != nil && + (obj.Pkg().Path() == "sync/atomic" || + obj.Pkg().Path() == "runtime/internal/atomic") } func (s *StdSizes) Offsetsof(fields []*Var) []int64 { diff --git a/src/go/types/sizes_test.go b/src/go/types/sizes_test.go index 539b4e37c17e3ad4d9a98f05e66ecf606c3a2f22..740072f1dc31ef536792209d1e3411d1024d647c 100644 --- a/src/go/types/sizes_test.go +++ b/src/go/types/sizes_test.go @@ -17,13 +17,16 @@ ) // findStructType typechecks src and returns the first struct type encountered. func findStructType(t *testing.T, src string) *types.Struct { + return findStructTypeConfig(t, src, &types.Config{}) +} + +func findStructTypeConfig(t *testing.T, src string, conf *types.Config) *types.Struct { fset := token.NewFileSet() f, err := parser.ParseFile(fset, "x.go", src, 0) if err != nil { t.Fatal(err) } info := types.Info{Types: make(map[ast.Expr]types.TypeAndValue)} - var conf types.Config _, err = conf.Check("x", fset, []*ast.File{f}, &info) if err != nil { t.Fatal(err) @@ -110,3 +113,39 @@ _ = conf.Sizes.Sizeof(tv.Type) _ = conf.Sizes.Alignof(tv.Type) } } + +// Issue #53884. +func TestAtomicAlign(t *testing.T) { + const src = ` +package main + +import "sync/atomic" + +var s struct { + x int32 + y atomic.Int64 + z int64 +} +` + + want := []int64{0, 8, 16} + for _, arch := range []string{"386", "amd64"} { + t.Run(arch, func(t *testing.T) { + conf := types.Config{ + Importer: importer.Default(), + Sizes: types.SizesFor("gc", arch), + } + ts := findStructTypeConfig(t, src, &conf) + var fields []*types.Var + // Make a copy manually :( + for i := 0; i < ts.NumFields(); i++ { + fields = append(fields, ts.Field(i)) + } + + offsets := conf.Sizes.Offsetsof(fields) + if offsets[0] != want[0] || offsets[1] != want[1] || offsets[2] != want[2] { + t.Errorf("OffsetsOf(%v) = %v want %v", ts, offsets, want) + } + }) + } +} diff --git a/src/image/jpeg/reader_test.go b/src/image/jpeg/reader_test.go index bf07fadede5390a19a19e03206fd9b0e0fba9d5a..6fdb6c44490319f0a482943ba9507d1c1fa99801 100644 --- a/src/image/jpeg/reader_test.go +++ b/src/image/jpeg/reader_test.go @@ -13,6 +13,7 @@ "image/color" "io" "math/rand" "os" + "runtime/debug" "strings" "testing" "time" @@ -247,18 +248,16 @@ "\xac\xe7\x3d\x80\xa9\xcc\x87\x34\xb3\x37\xfa\x2b\x9f\x6a\xad\x63" + "\x20\x36\x9f\x78\x64\x75\xe6\xab\x7d\xb2\xde\x29\x70\xd3\x20\x27" + "\xde\xaf\xa4\xf0\xca\x9f\x24\xa8\xdf\x46\xa8\x24\x84\x96\xe3\x77" + "\xf9\x2e\xe0\x0a\x62\x7f\xdf\xd9" - c := make(chan error, 1) - go func() { - _, err := Decode(strings.NewReader(input)) - c <- err - }() - select { - case err := <-c: - if err == nil { - t.Fatalf("got nil error, want non-nil") - } - case <-time.After(3 * time.Second): - t.Fatalf("timed out") + + timer := time.AfterFunc(30*time.Second, func() { + debug.SetTraceback("all") + panic("TestLargeImageWithShortData stuck in Decode") + }) + defer timer.Stop() + + _, err := Decode(strings.NewReader(input)) + if err == nil { + t.Fatalf("got nil error, want non-nil") } } diff --git a/src/internal/fuzz/mem.go b/src/internal/fuzz/mem.go index d6d45be20ef3885487b4e7eee4c3a5dae2c3d994..a5c3b02242e380aac9163d12e00bbdc42dac8bcc 100644 --- a/src/internal/fuzz/mem.go +++ b/src/internal/fuzz/mem.go @@ -50,7 +50,7 @@ // rawInMem is true if the region holds raw bytes, which occurs during // minimization. If true after the worker fails during minimization, this // indicates that an unrecoverable error occurred, and the region can be - // used to retrive the raw bytes that caused the error. + // used to retrieve the raw bytes that caused the error. rawInMem bool } diff --git a/src/math/big/floatmarsh.go b/src/math/big/floatmarsh.go index d1c1dab069178f2861d990f5a1adfff617473544..990e085abe8d053c4c170dbac474753f63e3dd6a 100644 --- a/src/math/big/floatmarsh.go +++ b/src/math/big/floatmarsh.go @@ -8,6 +8,7 @@ package big import ( "encoding/binary" + "errors" "fmt" ) @@ -67,6 +68,9 @@ // Other side sent a nil or default value. *z = Float{} return nil } + if len(buf) < 6 { + return errors.New("Float.GobDecode: buffer too small") + } if buf[0] != floatGobVersion { return fmt.Errorf("Float.GobDecode: encoding version %d not supported", buf[0]) @@ -83,6 +87,9 @@ z.neg = b&1 != 0 z.prec = binary.BigEndian.Uint32(buf[2:]) if z.form == finite { + if len(buf) < 10 { + return errors.New("Float.GobDecode: buffer too small for finite form float") + } z.exp = int32(binary.BigEndian.Uint32(buf[6:])) z.mant = z.mant.setBytes(buf[10:]) } diff --git a/src/math/big/floatmarsh_test.go b/src/math/big/floatmarsh_test.go index c056d78b8008cd338f72241a168bfe7d866d4fd7..401f45a51fe7e046f08e13ef76d581701fa7cede 100644 --- a/src/math/big/floatmarsh_test.go +++ b/src/math/big/floatmarsh_test.go @@ -137,3 +137,15 @@ } } } } + +func TestFloatGobDecodeShortBuffer(t *testing.T) { + for _, tc := range [][]byte{ + []byte{0x1, 0x0, 0x0, 0x0}, + []byte{0x1, 0xfa, 0x0, 0x0, 0x0, 0x0}, + } { + err := NewFloat(0).GobDecode(tc) + if err == nil { + t.Error("expected GobDecode to return error for malformed input") + } + } +} diff --git a/src/math/big/ratmarsh.go b/src/math/big/ratmarsh.go index fbc7b6002d9509459d2c5bc7f5bf2b86564d4810..56102e845b779cdfeae226989fda09dc10aaa686 100644 --- a/src/math/big/ratmarsh.go +++ b/src/math/big/ratmarsh.go @@ -45,12 +45,18 @@ // Other side sent a nil or default value. *z = Rat{} return nil } + if len(buf) < 5 { + return errors.New("Rat.GobDecode: buffer too small") + } b := buf[0] if b>>1 != ratGobVersion { return fmt.Errorf("Rat.GobDecode: encoding version %d not supported", b>>1) } const j = 1 + 4 i := j + binary.BigEndian.Uint32(buf[j-4:j]) + if len(buf) < int(i) { + return errors.New("Rat.GobDecode: buffer too small") + } z.a.neg = b&1 != 0 z.a.abs = z.a.abs.setBytes(buf[j:i]) z.b.abs = z.b.abs.setBytes(buf[i:]) diff --git a/src/math/big/ratmarsh_test.go b/src/math/big/ratmarsh_test.go index 351d109f8d849a378ee5b73c952e3b7b416cac5d..55a9878bb871b1166317f99514c5ec8a8f80bdca 100644 --- a/src/math/big/ratmarsh_test.go +++ b/src/math/big/ratmarsh_test.go @@ -123,3 +123,15 @@ } } } } + +func TestRatGobDecodeShortBuffer(t *testing.T) { + for _, tc := range [][]byte{ + []byte{0x2}, + []byte{0x2, 0x0, 0x0, 0x0, 0xff}, + } { + err := NewRat(1, 2).GobDecode(tc) + if err == nil { + t.Error("expected GobDecode to return error for malformed input") + } + } +} diff --git a/src/net/http/client.go b/src/net/http/client.go index 490349f7bd01a3916877e91ecad40325a99d0e0c..992817c0f5fede5ababab0bc20ede1e7dc5c1c7e 100644 --- a/src/net/http/client.go +++ b/src/net/http/client.go @@ -896,7 +896,7 @@ // 303 (See Other) // 307 (Temporary Redirect) // 308 (Permanent Redirect) // -// # Head is a wrapper around DefaultClient.Head +// Head is a wrapper around DefaultClient.Head. // // To make a request with a specified context.Context, use NewRequestWithContext // and DefaultClient.Do. diff --git a/src/net/http/header.go b/src/net/http/header.go index 6437f2d2c07529a35a2268fc0ef7fde404835d5b..e0b342c63cbd94046f83915786844aaf7f1def53 100644 --- a/src/net/http/header.go +++ b/src/net/http/header.go @@ -43,7 +43,8 @@ // Get gets the first value associated with the given key. If // there are no values associated with the key, Get returns "". // It is case insensitive; textproto.CanonicalMIMEHeaderKey is -// used to canonicalize the provided key. To use non-canonical keys, +// used to canonicalize the provided key. Get assumes that all +// keys are stored in canonical form. To use non-canonical keys, // access the map directly. func (h Header) Get(key string) string { return textproto.MIMEHeader(h).Get(key) diff --git a/src/net/ipsock_posix.go b/src/net/ipsock_posix.go index 9a961b96ab252407f724490d4a5ebd969cd7503f..7bb66f2d6cce3d814c9a840f813c978b3597733e 100644 --- a/src/net/ipsock_posix.go +++ b/src/net/ipsock_posix.go @@ -215,8 +215,12 @@ func addrPortToSockaddrInet6(ap netip.AddrPort) (syscall.SockaddrInet6, error) { // ipToSockaddrInet6 has special handling here for zero length slices. // We do not, because netip has no concept of a generic zero IP address. + // + // addr is allowed to be an IPv4 address, because As16 will convert it + // to an IPv4-mapped IPv6 address. + // The error message is kept consistent with ipToSockaddrInet6. addr := ap.Addr() - if !addr.Is6() { + if !addr.IsValid() { return syscall.SockaddrInet6{}, &AddrError{Err: "non-IPv6 address", Addr: addr.String()} } sa := syscall.SockaddrInet6{ diff --git a/src/net/udpsock.go b/src/net/udpsock.go index 6d29a39edfcfcb389401e6bba22841a5f6605390..e30624dea5a74e6a6db33c3dec5076ee00d22a99 100644 --- a/src/net/udpsock.go +++ b/src/net/udpsock.go @@ -164,6 +164,10 @@ return n, addr, err } // ReadFromUDPAddrPort acts like ReadFrom but returns a netip.AddrPort. +// +// If c is bound to an unspecified address, the returned +// netip.AddrPort's address might be an IPv4-mapped IPv6 address. +// Use netip.Addr.Unmap to get the address without the IPv6 prefix. func (c *UDPConn) ReadFromUDPAddrPort(b []byte) (n int, addr netip.AddrPort, err error) { if !c.ok() { return 0, netip.AddrPort{}, syscall.EINVAL diff --git a/src/net/udpsock_test.go b/src/net/udpsock_test.go index f8acf6a028a04fe757ebcbb9c2a91653faa9b07b..4fa74752b946dbf0d8bf2ceeb400444d2572673e 100644 --- a/src/net/udpsock_test.go +++ b/src/net/udpsock_test.go @@ -9,6 +9,7 @@ import ( "errors" "internal/testenv" + "net/netip" "os" "reflect" "runtime" @@ -622,3 +623,45 @@ if len(soldaddr.IP) != 4 { t.Error("returned UDPAddr is not IPv4") } } + +// TestIPv6WriteMsgUDPAddrPortTargetAddrIPVersion verifies that +// WriteMsgUDPAddrPort accepts IPv4, IPv4-mapped IPv6, and IPv6 target addresses +// on a UDPConn listening on "::". +func TestIPv6WriteMsgUDPAddrPortTargetAddrIPVersion(t *testing.T) { + if !supportsIPv6() { + t.Skip("IPv6 is not supported") + } + + switch runtime.GOOS { + case "openbsd": + // OpenBSD's IPv6 sockets are always IPv6-only, according to the man page: + // https://man.openbsd.org/ip6#IPV6_V6ONLY + t.Skipf("skipping on %v", runtime.GOOS) + } + + conn, err := ListenUDP("udp", nil) + if err != nil { + t.Fatal(err) + } + defer conn.Close() + + daddr4 := netip.AddrPortFrom(netip.MustParseAddr("127.0.0.1"), 12345) + daddr4in6 := netip.AddrPortFrom(netip.MustParseAddr("::ffff:127.0.0.1"), 12345) + daddr6 := netip.AddrPortFrom(netip.MustParseAddr("::1"), 12345) + buf := make([]byte, 8) + + _, _, err = conn.WriteMsgUDPAddrPort(buf, nil, daddr4) + if err != nil { + t.Fatal(err) + } + + _, _, err = conn.WriteMsgUDPAddrPort(buf, nil, daddr4in6) + if err != nil { + t.Fatal(err) + } + + _, _, err = conn.WriteMsgUDPAddrPort(buf, nil, daddr6) + if err != nil { + t.Fatal(err) + } +} diff --git a/src/os/exec/dot_test.go b/src/os/exec/dot_test.go index e2d2dba7a5bb3ada55da8b105b799a32f18acbd3..306f98cbaaa4754e9c34acd7aad5d8b69e1a226d 100644 --- a/src/os/exec/dot_test.go +++ b/src/os/exec/dot_test.go @@ -56,40 +56,58 @@ origPath := os.Getenv(pathVar) // Add "." to PATH so that exec.LookPath looks in the current directory on all systems. // And try to trick it with "../testdir" too. - for _, dir := range []string{".", "../testdir"} { - t.Run(pathVar+"="+dir, func(t *testing.T) { - t.Setenv(pathVar, dir+string(filepath.ListSeparator)+origPath) - good := dir + "/execabs-test" - if found, err := LookPath(good); err != nil || !strings.HasPrefix(found, good) { - t.Fatalf(`LookPath(%#q) = %#q, %v, want "%s...", nil`, good, found, err, good) - } - if runtime.GOOS == "windows" { - good = dir + `\execabs-test` - if found, err := LookPath(good); err != nil || !strings.HasPrefix(found, good) { - t.Fatalf(`LookPath(%#q) = %#q, %v, want "%s...", nil`, good, found, err, good) - } - } + for _, errdot := range []string{"1", "0"} { + t.Run("GODEBUG=execerrdot="+errdot, func(t *testing.T) { + t.Setenv("GODEBUG", "execerrdot="+errdot) + for _, dir := range []string{".", "../testdir"} { + t.Run(pathVar+"="+dir, func(t *testing.T) { + t.Setenv(pathVar, dir+string(filepath.ListSeparator)+origPath) + good := dir + "/execabs-test" + if found, err := LookPath(good); err != nil || !strings.HasPrefix(found, good) { + t.Fatalf(`LookPath(%#q) = %#q, %v, want "%s...", nil`, good, found, err, good) + } + if runtime.GOOS == "windows" { + good = dir + `\execabs-test` + if found, err := LookPath(good); err != nil || !strings.HasPrefix(found, good) { + t.Fatalf(`LookPath(%#q) = %#q, %v, want "%s...", nil`, good, found, err, good) + } + } - if _, err := LookPath("execabs-test"); err == nil { - t.Fatalf("LookPath didn't fail when finding a non-relative path") - } else if !errors.Is(err, ErrDot) { - t.Fatalf("LookPath returned unexpected error: want Is ErrDot, got %q", err) - } + _, err := LookPath("execabs-test") + if errdot == "1" { + if err == nil { + t.Fatalf("LookPath didn't fail when finding a non-relative path") + } else if !errors.Is(err, ErrDot) { + t.Fatalf("LookPath returned unexpected error: want Is ErrDot, got %q", err) + } + } else { + if err != nil { + t.Fatalf("LookPath failed unexpectedly: %v", err) + } + } - cmd := Command("execabs-test") - if cmd.Err == nil { - t.Fatalf("Command didn't fail when finding a non-relative path") - } else if !errors.Is(cmd.Err, ErrDot) { - t.Fatalf("Command returned unexpected error: want Is ErrDot, got %q", cmd.Err) - } - cmd.Err = nil + cmd := Command("execabs-test") + if errdot == "1" { + if cmd.Err == nil { + t.Fatalf("Command didn't fail when finding a non-relative path") + } else if !errors.Is(cmd.Err, ErrDot) { + t.Fatalf("Command returned unexpected error: want Is ErrDot, got %q", cmd.Err) + } + cmd.Err = nil + } else { + if cmd.Err != nil { + t.Fatalf("Command failed unexpectedly: %v", err) + } + } - // Clearing cmd.Err should let the execution proceed, - // and it should fail because it's not a valid binary. - if err := cmd.Run(); err == nil { - t.Fatalf("Run did not fail: expected exec error") - } else if errors.Is(err, ErrDot) { - t.Fatalf("Run returned unexpected error ErrDot: want error like ENOEXEC: %q", err) + // Clearing cmd.Err should let the execution proceed, + // and it should fail because it's not a valid binary. + if err := cmd.Run(); err == nil { + t.Fatalf("Run did not fail: expected exec error") + } else if errors.Is(err, ErrDot) { + t.Fatalf("Run returned unexpected error ErrDot: want error like ENOEXEC: %q", err) + } + }) } }) } diff --git a/src/os/exec/exec.go b/src/os/exec/exec.go index 57d18420bbdcc905de69a8d9ae494a7ee54d3c7c..737aaab6a7dc3a3a5f829ee120a8fbd97c7c3eb8 100644 --- a/src/os/exec/exec.go +++ b/src/os/exec/exec.go @@ -80,6 +80,11 @@ // if err := cmd.Run(); err != nil { // log.Fatal(err) // } // +// Setting the environment variable GODEBUG=execerrdot=0 +// disables generation of ErrDot entirely, temporarily restoring the pre-Go 1.19 +// behavior for programs that are unable to apply more targeted fixes. +// A future version of Go may remove support for this variable. +// // Before adding such overrides, make sure you understand the // security implications of doing so. // See https://go.dev/blog/path-security for more information. diff --git a/src/os/exec/lp_plan9.go b/src/os/exec/lp_plan9.go index 68224814d12c47c05f10f6ab855251cfe25fa69c..092684f03a236b6a8f89f97ff042205ad6dc724c 100644 --- a/src/os/exec/lp_plan9.go +++ b/src/os/exec/lp_plan9.go @@ -6,6 +6,7 @@ package exec import ( "errors" + "internal/godebug" "io/fs" "os" "path/filepath" @@ -53,7 +54,7 @@ path := os.Getenv("path") for _, dir := range filepath.SplitList(path) { path := filepath.Join(dir, file) if err := findExecutable(path); err == nil { - if !filepath.IsAbs(path) { + if !filepath.IsAbs(path) && godebug.Get("execerrdot") != "0" { return path, &Error{file, ErrDot} } return path, nil diff --git a/src/os/exec/lp_unix.go b/src/os/exec/lp_unix.go index 983320566366c237bd0b84696684be30b23447a1..b2b412c96b6f9cbefd578975dfc465343003302a 100644 --- a/src/os/exec/lp_unix.go +++ b/src/os/exec/lp_unix.go @@ -8,6 +8,7 @@ package exec import ( "errors" + "internal/godebug" "io/fs" "os" "path/filepath" @@ -56,7 +57,7 @@ dir = "." } path := filepath.Join(dir, file) if err := findExecutable(path); err == nil { - if !filepath.IsAbs(path) { + if !filepath.IsAbs(path) && godebug.Get("execerrdot") != "0" { return path, &Error{file, ErrDot} } return path, nil diff --git a/src/os/exec/lp_windows.go b/src/os/exec/lp_windows.go index da047585ebda5e5ecc0c31fc95b1e87c19e1be42..ec45db7459bc56fcc4cd23b9a04c4b5989197c1f 100644 --- a/src/os/exec/lp_windows.go +++ b/src/os/exec/lp_windows.go @@ -6,6 +6,7 @@ package exec import ( "errors" + "internal/godebug" "io/fs" "os" "path/filepath" @@ -102,6 +103,9 @@ dotErr error ) if _, found := syscall.Getenv("NoDefaultCurrentDirectoryInExePath"); !found { if f, err := findExecutable(filepath.Join(".", file), exts); err == nil { + if godebug.Get("execerrdot") == "0" { + return f, nil + } dotf, dotErr = f, &Error{file, ErrDot} } } @@ -124,7 +128,7 @@ return dotf, dotErr } } - if !filepath.IsAbs(f) { + if !filepath.IsAbs(f) && godebug.Get("execerrdot") != "0" { return f, &Error{file, ErrDot} } return f, nil diff --git a/src/runtime/asm_arm64.s b/src/runtime/asm_arm64.s index f593b4a78b9106336342b7970156b2daa5690c0d..7836ba1d96c01588a4aac93c23930d5587c2149a 100644 --- a/src/runtime/asm_arm64.s +++ b/src/runtime/asm_arm64.s @@ -107,8 +107,18 @@ DATA runtime·mainPC+0(SB)/8,$runtime·main(SB) GLOBL runtime·mainPC(SB),RODATA,$8 +// Windows ARM64 needs an immediate 0xf000 argument. +// See go.dev/issues/53837. +#define BREAK \ +#ifdef GOOS_windows \ + BRK $0xf000 \ +#else \ + BRK \ +#endif \ + + TEXT runtime·breakpoint(SB),NOSPLIT|NOFRAME,$0-0 - BRK + BREAK RET TEXT runtime·asminit(SB),NOSPLIT|NOFRAME,$0-0 @@ -1325,7 +1335,7 @@ // Set R20 to 8 and invoke BRK. The debugger should get the // reason a call can't be injected from SP+8 and resume execution. MOVD $8, R20 - BRK + BREAK JMP restore good: @@ -1374,7 +1384,7 @@ MOVD R0, 8(RSP) MOVD $20, R0 MOVD R0, 16(RSP) // length of debugCallFrameTooLarge string MOVD $8, R20 - BRK + BREAK JMP restore restore: @@ -1383,7 +1393,7 @@ // // Set R20 to 16 and invoke BRK. The debugger should restore // all registers except for PC and RSP and resume execution. MOVD $16, R20 - BRK + BREAK // We must not modify flags after this point. // Restore pointer-containing registers, which may have been @@ -1414,9 +1424,9 @@ #define DEBUG_CALL_FN(NAME,MAXSIZE) \ TEXT NAME(SB),WRAPPER,$MAXSIZE-0; \ NO_LOCAL_POINTERS; \ MOVD $0, R20; \ - BRK; \ + BREAK; \ MOVD $1, R20; \ - BRK; \ + BREAK; \ RET DEBUG_CALL_FN(debugCall32<>, 32) DEBUG_CALL_FN(debugCall64<>, 64) @@ -1439,7 +1449,7 @@ MOVD R0, 8(RSP) MOVD val_data+8(FP), R0 MOVD R0, 16(RSP) MOVD $2, R20 - BRK + BREAK RET // Note: these functions use a special calling convention to save generated code space. diff --git a/src/runtime/cgo/gcc_linux_amd64.c b/src/runtime/cgo/gcc_linux_amd64.c index c25e7e769ba23ddae032e510b1c062dd776f1f6c..fb164c1a1df03ac1c98ed94affff1266c6b30549 100644 --- a/src/runtime/cgo/gcc_linux_amd64.c +++ b/src/runtime/cgo/gcc_linux_amd64.c @@ -44,7 +44,9 @@ fatalf("malloc failed: %s", strerror(errno)); } pthread_attr_init(attr); pthread_attr_getstacksize(attr, &size); - g->stacklo = (uintptr)&size - size + 4096; + g->stacklo = (uintptr)__builtin_frame_address(0) - size + 4096; + if (g->stacklo >= g->stackhi) + fatalf("bad stack bounds: lo=%p hi=%p\n", g->stacklo, g->stackhi); pthread_attr_destroy(attr); free(attr); diff --git a/src/runtime/chan.go b/src/runtime/chan.go index 993af7063b98d75dc917e7d6475ad63620462b7e..ca516ad9e8b8489086a879d8285c3d5c2d30860f 100644 --- a/src/runtime/chan.go +++ b/src/runtime/chan.go @@ -780,7 +780,7 @@ q.last = nil } else { y.prev = nil q.first = y - sgp.next = nil // mark as removed (see dequeueSudog) + sgp.next = nil // mark as removed (see dequeueSudoG) } // if a goroutine was put on this queue because of a diff --git a/src/runtime/mgcpacer.go b/src/runtime/mgcpacer.go index ac3446db3682fe78949f2d05ae90f0bac918dd82..2d9fd277486ee4025d8be0d3079a6f5201a6f18c 100644 --- a/src/runtime/mgcpacer.go +++ b/src/runtime/mgcpacer.go @@ -439,7 +439,26 @@ c.dedicatedMarkTime = 0 c.fractionalMarkTime = 0 c.idleMarkTime = 0 c.markStartTime = markStartTime - c.triggered = c.heapLive + + // TODO(mknyszek): This is supposed to be the actual trigger point for the heap, but + // causes regressions in memory use. The cause is that the PI controller used to smooth + // the cons/mark ratio measurements tends to flail when using the less accurate precomputed + // trigger for the cons/mark calculation, and this results in the controller being more + // conservative about steady-states it tries to find in the future. + // + // This conservatism is transient, but these transient states tend to matter for short-lived + // programs, especially because the PI controller is overdamped, partially because it is + // configured with a relatively large time constant. + // + // Ultimately, I think this is just two mistakes piled on one another: the choice of a swingy + // smoothing function that recalls a fairly long history (due to its overdamped time constant) + // coupled with an inaccurate cons/mark calculation. It just so happens this works better + // today, and it makes it harder to change things in the future. + // + // This is described in #53738. Fix this for #53892 by changing back to the actual trigger + // point and simplifying the smoothing function. + heapTrigger, heapGoal := c.trigger() + c.triggered = heapTrigger // Compute the background mark utilization goal. In general, // this may not come out exactly. We round the number of @@ -501,7 +520,6 @@ // throughout the cycle. c.revise() if debug.gcpacertrace > 0 { - heapGoal := c.heapGoal() assistRatio := c.assistWorkPerByte.Load() print("pacer: assist ratio=", assistRatio, " (scan ", gcController.heapScan>>20, " MB in ", diff --git a/src/runtime/mprof.go b/src/runtime/mprof.go index 6bf3ddda8ce307dbe13401b293c71a6977b06245..99a67b9a3abd0b800d54481f60a1809aa38fd312 100644 --- a/src/runtime/mprof.go +++ b/src/runtime/mprof.go @@ -947,7 +947,7 @@ // field set to goroutineProfileSatisfied. goroutineProfile.active = true goroutineProfile.records = p goroutineProfile.labels = labels - // The finializer goroutine needs special handling because it can vary over + // The finalizer goroutine needs special handling because it can vary over // time between being a user goroutine (eligible for this profile) and a // system goroutine (to be excluded). Pick one before restarting the world. if fing != nil { diff --git a/src/runtime/runtime_test.go b/src/runtime/runtime_test.go index 0bdd01b0861bc8491e47396d0640834f0cd26226..018a8dbaa68f54bb576c34547820ba39ebfd9a41 100644 --- a/src/runtime/runtime_test.go +++ b/src/runtime/runtime_test.go @@ -18,7 +18,12 @@ "time" "unsafe" ) -var flagQuick = flag.Bool("quick", false, "skip slow tests, for second run in all.bash") +// flagQuick is set by the -quick option to skip some relatively slow tests. +// This is used by the cmd/dist test runtime:cpu124. +// The cmd/dist test passes both -test.short and -quick; +// there are tests that only check testing.Short, and those tests will +// not be skipped if only -quick is used. +var flagQuick = flag.Bool("quick", false, "skip slow tests, for cmd/dist test runtime:cpu124") func init() { // We're testing the runtime, so make tracebacks show things diff --git a/src/runtime/string.go b/src/runtime/string.go index 5ab0ac3a86a696319ceb7cdbadc03794ce1e9c79..359a5658c5acf78b1bc98cd0a88f96021d27376e 100644 --- a/src/runtime/string.go +++ b/src/runtime/string.go @@ -432,7 +432,7 @@ // suffix. Acceptable suffixes include one of // - KiB, MiB, GiB, TiB which represent binary IEC/ISO 80000 units, or // - B, which just represents bytes. // -// Returns an int64 because that's what its callers want and recieve, +// Returns an int64 because that's what its callers want and receive, // but the result is always non-negative. func parseByteCount(s string) (int64, bool) { // The empty string is not valid. diff --git a/src/runtime/testdata/testprog/vdso.go b/src/runtime/testdata/testprog/vdso.go index d2a300d8f2004c9e6f6a2f7f66777664f32863a7..b18bc74a064e23de9d380c7bb90d778c991be79e 100644 --- a/src/runtime/testdata/testprog/vdso.go +++ b/src/runtime/testdata/testprog/vdso.go @@ -2,7 +2,7 @@ // Copyright 2019 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. -// Invoke signal hander in the VDSO context (see issue 32912). +// Invoke signal handler in the VDSO context (see issue 32912). package main diff --git a/src/runtime/time.go b/src/runtime/time.go index aec39083b47b95d5e6b45952390af9eab5ee30d6..80b0bfb72c26eaa42f05e7d419d9b58199b8241e 100644 --- a/src/runtime/time.go +++ b/src/runtime/time.go @@ -397,7 +397,11 @@ } if i == 0 { updateTimer0When(pp) } - atomic.Xadd(&pp.numTimers, -1) + n := atomic.Xadd(&pp.numTimers, -1) + if n == 0 { + // If there are no timers, then clearly none are modified. + atomic.Store64(&pp.timerModifiedEarliest, 0) + } return smallestChanged } @@ -421,7 +425,11 @@ if last > 0 { siftdownTimer(pp.timers, 0) } updateTimer0When(pp) - atomic.Xadd(&pp.numTimers, -1) + n := atomic.Xadd(&pp.numTimers, -1) + if n == 0 { + // If there are no timers, then clearly none are modified. + atomic.Store64(&pp.timerModifiedEarliest, 0) + } } // modtimer modifies an existing timer. diff --git a/src/time/format.go b/src/time/format.go index 5f696189ff114ff0cc6204a04f69a4b3d71b33ea..8431ff89b45360571b3d4bc681cae894e0544af1 100644 --- a/src/time/format.go +++ b/src/time/format.go @@ -53,10 +53,10 @@ // the reference time is echoed verbatim during Format and expected to appear // verbatim in the input to Parse. // // Year: "2006" "06" -// Month: "Jan" "January" -// Textual day of the week: "Mon" "Monday" -// Numeric day of the month: "2" "_2" "02" -// Numeric day of the year: "__2" "002" +// Month: "Jan" "January" "01" "1" +// Day of the week: "Mon" "Monday" +// Day of the month: "2" "_2" "02" +// Day of the year: "__2" "002" // Hour: "15" "3" "03" (PM or AM) // Minute: "4" "04" // Second: "5" "05" diff --git a/src/time/format_test.go b/src/time/format_test.go index ab72fae32318191a834957c1c925f07559dd553e..9ae2b8017a3bb5e9df8e6fdfa0dd0d058b43d0bd 100644 --- a/src/time/format_test.go +++ b/src/time/format_test.go @@ -116,6 +116,13 @@ {"StampMilli", StampMilli, "Feb 4 21:00:57.012"}, {"StampMicro", StampMicro, "Feb 4 21:00:57.012345"}, {"StampNano", StampNano, "Feb 4 21:00:57.012345600"}, {"YearDay", "Jan 2 002 __2 2", "Feb 4 035 35 4"}, + {"Year", "2006 6 06 _6 __6 ___6", "2009 6 09 _6 __6 ___6"}, + {"Month", "Jan January 1 01 _1", "Feb February 2 02 _2"}, + {"DayOfMonth", "2 02 _2 __2", "4 04 4 35"}, + {"DayOfWeek", "Mon Monday", "Wed Wednesday"}, + {"Hour", "15 3 03 _3", "21 9 09 _9"}, + {"Minute", "4 04 _4", "0 00 _0"}, + {"Second", "5 05 _5", "57 57 _57"}, } func TestFormat(t *testing.T) { diff --git a/src/unsafe/unsafe.go b/src/unsafe/unsafe.go index da15902b293595772499539e8037396bd90667c3..5051b3ee9fe2e25c78a554df7481917bf5bd0975 100644 --- a/src/unsafe/unsafe.go +++ b/src/unsafe/unsafe.go @@ -189,13 +189,18 @@ // The size does not include any memory possibly referenced by x. // For instance, if x is a slice, Sizeof returns the size of the slice // descriptor, not the size of the memory referenced by the slice. // For a struct, the size includes any padding introduced by field alignment. -// The return value of Sizeof is a Go constant. +// The return value of Sizeof is a Go constant if the type of the argument x +// does not have variable size. +// (A type has variable size if it is a type parameter or if it is an array +// or struct type with elements of variable size). func Sizeof(x ArbitraryType) uintptr // Offsetof returns the offset within the struct of the field represented by x, // which must be of the form structValue.field. In other words, it returns the // number of bytes between the start of the struct and the start of the field. -// The return value of Offsetof is a Go constant. +// The return value of Offsetof is a Go constant if the type of the argument x +// does not have variable size. +// (See the description of [Sizeof] for a definition of variable sized types.) func Offsetof(x ArbitraryType) uintptr // Alignof takes an expression x of any type and returns the required alignment @@ -206,7 +211,9 @@ // As a special case, if a variable s is of struct type and f is a field // within that struct, then Alignof(s.f) will return the required alignment // of a field of that type within a struct. This case is the same as the // value returned by reflect.TypeOf(s.f).FieldAlign(). -// The return value of Alignof is a Go constant. +// The return value of Alignof is a Go constant if the type of the argument +// does not have variable size. +// (See the description of [Sizeof] for a definition of variable sized types.) func Alignof(x ArbitraryType) uintptr // The function Add adds len to ptr and returns the updated pointer diff --git a/test/fixedbugs/issue52278.go b/test/fixedbugs/issue52278.go index 56169e687144f08c778da825451e930394334164..147b6530373922aeacc5a700bb42663589c284cc 100644 --- a/test/fixedbugs/issue52278.go +++ b/test/fixedbugs/issue52278.go @@ -1,4 +1,4 @@ -// compile +// compile -d=ssa/check/on // Copyright 2022 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style diff --git a/test/run.go b/test/run.go index cb1622ccc9763d3504ce09efce109ea72662e2c4..b2902f190c357e1158bf3fa8083472db5f39617e 100644 --- a/test/run.go +++ b/test/run.go @@ -58,7 +58,7 @@ CGO_ENABLED string } var env = func() (res envVars) { - cmd := exec.Command("go", "env", "-json") + cmd := exec.Command(goTool(), "env", "-json") stdout, err := cmd.StdoutPipe() if err != nil { log.Fatal("StdoutPipe:", err) @@ -710,6 +710,22 @@ } if tempDirIsGOPATH { cmd.Env = append(cmd.Env, "GOPATH="+t.tempDir) } + // Put the bin directory of the GOROOT that built this program + // first in the path. This ensures that tests that use the "go" + // tool use the same one that built this program. This ensures + // that if you do "../bin/go run run.go" in this directory, all + // the tests that start subprocesses that "go tool compile" or + // whatever, use ../bin/go as their go tool, not whatever happens + // to be first in the user's path. + path := os.Getenv("PATH") + newdir := filepath.Join(runtime.GOROOT(), "bin") + if path != "" { + path = newdir + string(filepath.ListSeparator) + path + } else { + path = newdir + } + cmd.Env = append(cmd.Env, "PATH="+path) + cmd.Env = append(cmd.Env, runenv...) var err error diff --git a/test/typeparam/issue53762.go b/test/typeparam/issue53762.go new file mode 100644 index 0000000000000000000000000000000000000000..4d959888544daf7696f1062e63bc64fdc9b53ab0 --- /dev/null +++ b/test/typeparam/issue53762.go @@ -0,0 +1,18 @@ +// compile + +// Copyright 2022 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. + +package main + +type Value[T any] interface { +} + +func use[T any](v Value[T]) { + _, _ = v.(int) +} + +func main() { + use(Value[int](1)) +}