diff options
author | Dmitri Shuralyov <dmitshur@golang.org> | 2021-08-12 14:04:50 -0400 |
---|---|---|
committer | Dmitri Shuralyov <dmitshur@golang.org> | 2021-08-12 14:04:53 -0400 |
commit | eb5a7b505029efce0259aa0615d13b00c2475b43 (patch) | |
tree | fbe59fe73f759498f149ad3ee374806ce817a82f | |
parent | 72ab3ff68b1ec894fe5599ec82b8849f3baa9d94 (diff) | |
parent | 5805efc78e11e54c2c887ae10f277b09bbf81cf4 (diff) | |
download | go-eb5a7b505029efce0259aa0615d13b00c2475b43.tar.gz go-eb5a7b505029efce0259aa0615d13b00c2475b43.zip |
[release-branch.go1.17] all: merge master (5805efc) into release-branch.go1.17
Merge List:
+ 2021-08-12 5805efc78e doc/go1.17: remove draft notice
+ 2021-08-12 39634e7dae CONTRIBUTORS: update for the Go 1.17 release
+ 2021-08-12 095bb790e1 os/exec: re-enable LookPathTest/16
+ 2021-08-11 dea23e9ca8 src/make.*: make --no-clean flag a no-op that prints a warning
+ 2021-08-11 d4c0ed26ac doc/go1.17: linker passes -I to extld as -Wl,--dynamic-linker
+ 2021-08-10 1f9c9d8530 doc: use "high address/low address" instead of "top/bottom"
+ 2021-08-09 f1dce319ff cmd/go: with -mod=vendor, don't panic if there are duplicate requirements
+ 2021-08-09 7aeaad5c86 runtime/cgo: when using msan explicitly unpoison cgoCallers
+ 2021-08-08 507cc341ec doc: add example for conversion from slice expressions to array ptr
+ 2021-08-07 891547e2d4 doc/go1.17: fix a typo introduced in CL 335135
+ 2021-08-06 8eaf4d16bc make.bash: do not overwrite GO_LDSO if already set
+ 2021-08-06 63b968f4f8 doc/go1.17: clarify Modules changes
+ 2021-08-06 70546f6404 runtime: allow arm64 SEH to be called if illegal instruction
+ 2021-08-05 fd45e267c2 runtime: warn that KeepAlive is not an unsafe.Pointer workaround
+ 2021-08-04 6e738868a7 net/http: speed up and deflake TestCancelRequestWhenSharingConnection
+ 2021-08-02 8a7ee4c51e io/fs: don't use absolute path in DirEntry.Name doc
Change-Id: Ie9ce48bf4e99457cde966c5f972b04140468fcf0
-rw-r--r-- | CONTRIBUTORS | 136 | ||||
-rw-r--r-- | doc/asm.html | 8 | ||||
-rw-r--r-- | doc/go1.17.html | 89 | ||||
-rw-r--r-- | doc/go_spec.html | 1 | ||||
-rw-r--r-- | misc/cgo/testsanitizers/msan_test.go | 1 | ||||
-rw-r--r-- | misc/cgo/testsanitizers/testdata/msan8.go | 109 | ||||
-rw-r--r-- | src/cmd/dist/build.go | 7 | ||||
-rw-r--r-- | src/cmd/go/internal/modload/buildlist.go | 19 | ||||
-rw-r--r-- | src/cmd/go/internal/modload/init.go | 39 | ||||
-rw-r--r-- | src/cmd/go/testdata/script/mod_tidy_lazy_self.txt | 17 | ||||
-rw-r--r-- | src/cmd/go/testdata/script/mod_vendor_redundant_requirement.txt | 29 | ||||
-rw-r--r-- | src/cmd/internal/obj/textflag.go | 4 | ||||
-rw-r--r-- | src/io/fs/fs.go | 2 | ||||
-rwxr-xr-x | src/make.bash | 12 | ||||
-rw-r--r-- | src/make.bat | 20 | ||||
-rwxr-xr-x | src/make.rc | 7 | ||||
-rw-r--r-- | src/net/http/transport_test.go | 77 | ||||
-rw-r--r-- | src/os/exec/lp_windows_test.go | 3 | ||||
-rw-r--r-- | src/runtime/cgo/gcc_traceback.c | 20 | ||||
-rw-r--r-- | src/runtime/mfinal.go | 4 | ||||
-rw-r--r-- | src/runtime/signal_windows.go | 11 | ||||
-rw-r--r-- | src/runtime/textflag.h | 4 |
22 files changed, 492 insertions, 127 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index ee50a4c049a..1984d44c537 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -33,6 +33,7 @@ Aaron Jacobs <jacobsa@google.com> Aaron Jensen <jensen.aaro@gmail.com> Aaron Kemp <kemp.aaron@gmail.com> Aaron Patterson <tenderlove@ruby-lang.org> +Aaron Sheah <aaronsheah@gmail.com> Aaron Stein <aaronstein12@gmail.com> Aaron Torres <tcboox@gmail.com> Aaron Zinman <aaron@azinman.com> @@ -47,6 +48,7 @@ Adam Harvey <aharvey@php.net> Adam Kisala <adam.kisala@gmail.com> Adam Langley <agl@golang.org> Adam Medzinski <adam.medzinski@gmail.com> +Adam Mitha <adam.mitha@gmail.com> Adam Shannon <adamkshannon@gmail.com> Adam Shelton <aashelt90@gmail.com> Adam Sindelar <adamsh@google.com> @@ -54,6 +56,8 @@ Adam Thomason <athomason@gmail.com> Adam Williams <pwnfactory@gmail.com> Adam Woodbeck <adam@woodbeck.net> Adarsh Ravichandran <adarshravichandran91@gmail.com> +Adel Rodríguez <adel.rodriguez@leftfieldlabs.com> +Adin Scannell <ascannell@google.com> Aditya Harindar <aditya.harindar@gmail.com> Aditya Mukerjee <dev@chimeracoder.net> Adrian Hesketh <adrianhesketh@hushmail.com> @@ -68,6 +72,7 @@ Afanasev Stanislav <phpprogger@gmail.com> Agis Anastasopoulos <agis.anast@gmail.com> Agniva De Sarker <agnivade@yahoo.co.in> Ahmed W. Mones <oneofone@gmail.com> +Ahmet Aktürk <aakturk000@gmail.com> Ahmet Alp Balkan <ahmetb@google.com> Ahmet Soormally <ahmet@mangomm.co.uk> Ahmy Yulrizka <yulrizka@gmail.com> @@ -92,11 +97,13 @@ Alberto Bertogli <albertito@blitiri.com.ar> Alberto Donizetti <alb.donizetti@gmail.com> Alberto García Hierro <alberto@garciahierro.com> <alberto.garcia.hierro@gmail.com> Alec Benzer <alec.benzer@gmail.com> +Alejandro García Montoro <alejandro.garciamontoro@gmail.com> Aleksa Sarai <cyphar@cyphar.com> Aleksandar Dezelin <dezelin@gmail.com> Aleksandr Lukinykh <a.lukinykh@xsolla.com> Aleksandr Razumov <ar@cydev.ru> Alekseev Artem <a.artem060@gmail.com> +Aleksei Tirman <aleksei.tirman@jetbrains.com> Alessandro Arzilli <alessandro.arzilli@gmail.com> Alessandro Baffa <alessandro.baffa@gmail.com> Alex A Skinner <alex@lx.lc> @@ -165,6 +172,7 @@ Ali Rizvi-Santiago <arizvisa@gmail.com> Aliaksandr Valialkin <valyala@gmail.com> Alice Merrick <amerrick@google.com> Alif Rachmawadi <subosito@gmail.com> +Allan Guwatudde <guwats10@gmail.com> Allan Simon <allan.simon@supinfo.com> Allen Li <ayatane@google.com> Alok Menghrajani <alok.menghrajani@gmail.com> @@ -172,6 +180,7 @@ Alwin Doss <alwindoss84@gmail.com> Aman Gupta <aman@tmm1.net> Amarjeet Anand <amarjeetanandsingh@gmail.com> Amir Mohammad Saied <amir@gluegadget.com> +Amit Kumar <mittalmailbox@gmail.com> Amr Mohammed <merodiro@gmail.com> Amrut Joshi <amrut.joshi@gmail.com> An Long <aisk1988@gmail.com> @@ -185,6 +194,7 @@ André Carvalho <asantostc@gmail.com> André Martins <aanm90@gmail.com> Andre Nathan <andrenth@gmail.com> Andrea Nodari <andrea.nodari91@gmail.com> +Andrea Simonini <andrea.simonini@gmail.com> Andrea Spadaccini <spadaccio@google.com> Andreas Auernhammer <aead@mail.de> Andreas Jellinghaus <andreas@ionisiert.de> <anj@google.com> @@ -244,6 +254,7 @@ Andy Pan <panjf2000@gmail.com> <panjf2000@golangcn.org> <i@andypan.me> Andy Walker <walkeraj@gmail.com> Andy Wang <cbeuw.andy@gmail.com> Andy Williams <andy@andy.xyz> +Andy Zhao <andyzhao@google.com> Andzej Maciusovic <andzej.maciusovic@gmail.com> Anfernee Yongkun Gui <anfernee.gui@gmail.com> Angelo Bulfone <mbulfone@gmail.com> @@ -269,6 +280,7 @@ Anton Kuklin <anton.a.kuklin@gmail.com> Antonin Amand <antonin.amand@gmail.com> Antonio Antelo <aantelov87@gmail.com> Antonio Bibiano <antbbn@gmail.com> +Antonio Garcia <garcia.olais@gmail.com> Antonio Huete Jimenez <tuxillo@quantumachine.net> Antonio Murdaca <runcom@redhat.com> Antonio Troina <thoeni@gmail.com> @@ -292,8 +304,10 @@ Artem Khvastunov <artem.khvastunov@jetbrains.com> Artem Kolin <artemkaxboy@gmail.com> Arthur Fabre <arthur@arthurfabre.com> Arthur Khashaev <arthur@khashaev.ru> +Artur M. Wolff <artur.m.wolff@gmail.com> Artyom Pervukhin <artyom.pervukhin@gmail.com> Arvindh Rajesh Tamilmani <art@a-30.net> +Ashish Bhate <ab.listsubs@gmail.com> Ashish Gandhi <ag@ashishgandhi.org> Asim Shankar <asimshankar@gmail.com> Assel Meher <asselmeher@gmail.com> @@ -325,6 +339,7 @@ Baokun Lee <nototon@gmail.com> <bk@golangcn.org> Barnaby Keene <accounts@southcla.ws> Bartosz Grzybowski <melkorm@gmail.com> Bartosz Oler <brtsz@google.com> +Bassam Ojeil <bojeil@google.com> Bastian Ike <bastian.ike@gmail.com> Ben Burkert <ben@benburkert.com> Ben Cartwright-Cox <Ben@Benjojo.co.uk> @@ -332,6 +347,7 @@ Ben Eitzen <eitzenb@golang.org> Ben Fried <ben.fried@gmail.com> Ben Haines <bhainesva@gmail.com> Ben Hoyt <benhoyt@gmail.com> +Ben Hutchings <ben.hutchings@essensium.com> Ben Kraft <benkraft@khanacademy.org> Ben Laurie <ben@links.org> <benl@google.com> Ben Lubar <ben.lubar@gmail.com> @@ -430,6 +446,7 @@ Carl Henrik Lunde <chlunde@ifi.uio.no> Carl Jackson <carl@stripe.com> Carl Johnson <me@carlmjohnson.net> Carl Mastrangelo <notcarl@google.com> +Carl Menezes <carleeto@gmail.com> Carl Shapiro <cshapiro@google.com> <cshapiro@golang.org> Carlisia Campos <carlisia@grokkingtech.io> Carlo Alberto Ferraris <cafxx@strayorange.com> @@ -443,6 +460,7 @@ Carlos Iriarte <ciriarte@gmail.com> Carlos Souza <carloshrsouza@gmail.com> Carolyn Van Slyck <me@carolynvanslyck.com> Carrie Bynon <cbynon@gmail.com> +Carson Hoffman <c@rsonhoffman.com> Cary Hull <chull@google.com> Case Nelson <case.nelson@gmail.com> Casey Callendrello <squeed@gmail.com> @@ -462,6 +480,7 @@ Charles Kenney <charlesc.kenney@gmail.com> Charles L. Dorian <cldorian@gmail.com> Charles Lee <zombie.fml@gmail.com> Charles Weill <weill@google.com> +Charlie Moog <moogcharlie@gmail.com> Charlotte Brandhorst-Satzkorn <catzkorn@gmail.com> Chauncy Cullitan <chauncyc@google.com> Chen Zhidong <njutczd@gmail.com> @@ -516,6 +535,7 @@ Christopher Nelson <nadiasvertex@gmail.com> Christopher Nielsen <m4dh4tt3r@gmail.com> Christopher Redden <christopher.redden@gmail.com> Christopher Swenson <cswenson@google.com> +Christopher Thomas <53317512+chrisssthomas@users.noreply.github.com> Christopher Wedgwood <cw@f00f.org> Christos Zoulas <christos@zoulas.com> <zoulasc@gmail.com> Christy Perez <christy@linux.vnet.ibm.com> @@ -541,6 +561,8 @@ Cosmos Nicolaou <cnicolaou@google.com> Costin Chirvasuta <ctin@google.com> Craig Citro <craigcitro@google.com> Cristian Staretu <unclejacksons@gmail.com> +Cristo García <cgg.code@gmail.com> +cui fliter <imcusg@gmail.com> Cuihtlauac ALVARADO <cuihtlauac.alvarado@orange.com> Cuong Manh Le <cuong@orijtech.com> Curtis La Graff <curtis@lagraff.me> @@ -560,6 +582,7 @@ Dan Callahan <dan.callahan@gmail.com> Dan Harrington <harringtond@google.com> Dan Jacques <dnj@google.com> Dan Johnson <computerdruid@google.com> +Dan McArdle <dmcardle@google.com> Dan Peterson <dpiddy@gmail.com> Dan Pupius <dan@medium.com> Dan Scales <danscales@google.com> @@ -611,6 +634,7 @@ Dave Russell <forfuncsake@gmail.com> David Anderson <danderson@google.com> David Barnett <dbarnett@google.com> David Benjamin <davidben@google.com> +David Black <dblack@atlassian.com> David Bond <davidsbond93@gmail.com> David Brophy <dave@brophy.uk> David Bürgin <676c7473@gmail.com> @@ -654,6 +678,7 @@ Davor Kapsa <davor.kapsa@gmail.com> Dean Eigenmann <7621705+decanus@users.noreply.github.com> Dean Prichard <dean.prichard@gmail.com> Deepak Jois <deepak.jois@gmail.com> +Deepak S <deepakspavoodath@gmail.com> Denis Bernard <db047h@gmail.com> Denis Brandolini <denis.brandolini@gmail.com> Denis Isaev <idenx@yandex.com> @@ -676,8 +701,10 @@ Dhiru Kholia <dhiru.kholia@gmail.com> Dhruvdutt Jadhav <dhruvdutt.jadhav@gmail.com> Di Xiao <dixiao@google.com> Didier Spezia <didier.06@gmail.com> +Diego Medina <fmpwizard@gmail.com> Diego Siqueira <diego9889@gmail.com> Dieter Plaetinck <dieter@raintank.io> +Dilyn Corner <dilyn.corner@gmail.com> Dimitri Sokolyuk <sokolyuk@gmail.com> Dimitri Tcaciuc <dtcaciuc@gmail.com> Dina Garmash <dgrmsh@gmail.com> @@ -714,6 +741,7 @@ Doug Fawley <dfawley@google.com> Douglas Danger Manley <doug.manley@gmail.com> Drew Flower <drewvanstone@gmail.com> Drew Hintz <adhintz@google.com> +Drew Richardson <drewrichardson@gmail.com> Duco van Amstel <duco.vanamstel@gmail.com> Duncan Holm <mail@frou.org> Dustin Carlino <dcarlino@google.com> @@ -735,6 +763,7 @@ Egon Elbre <egonelbre@gmail.com> Ehren Kret <ehren.kret@gmail.com> Eitan Adler <lists@eitanadler.com> Eivind Uggedal <eivind@uggedal.com> +El Mostafa Idrassi <el.mostafa.idrassi@gmail.com> Elbert Fliek <efliek@gmail.com> Eldar Rakhimberdin <ibeono@gmail.com> Elena Grahovac <elena@grahovac.me> @@ -742,6 +771,7 @@ Eli Bendersky <eliben@google.com> Elias Naur <mail@eliasnaur.com> <elias.naur@gmail.com> Elliot Morrison-Reed <elliotmr@gmail.com> Ellison Leão <ellisonleao@gmail.com> +Elvina Yakubova <elvinayakubova@gmail.com> Emerson Lin <linyintor@gmail.com> Emil Bektimirov <lefelys@gmail.com> Emil Hessman <emil@hessman.se> @@ -767,6 +797,7 @@ Eric Rescorla <ekr@rtfm.com> Eric Roshan-Eisner <eric.d.eisner@gmail.com> Eric Rutherford <erutherford@gmail.com> Eric Rykwalder <e.rykwalder@gmail.com> +Eric Wang <wangchaogo1990@gmail.com> Erick Tryzelaar <etryzelaar@google.com> Erik Aigner <aigner.erik@gmail.com> Erik Dubbelboer <erik@dubbelboer.com> @@ -778,6 +809,7 @@ Ernest Chiang <ernest_chiang@htc.com> Erwin Oegema <blablaechthema@hotmail.com> Esko Luontola <esko.luontola@gmail.com> Ethan Burns <eaburns@google.com> +Ethan Hur <ethan0311@gmail.com> Ethan Miller <eamiller@us.ibm.com> Euan Kemp <euank@euank.com> Eugene Formanenko <mo4islona@gmail.com> @@ -818,6 +850,7 @@ Felix Cornelius <9767036+fcornelius@users.noreply.github.com> Felix Geisendörfer <haimuiba@gmail.com> Felix Kollmann <fk@konsorten.de> Ferenc Szabo <frncmx@gmail.com> +Fernandez Ludovic <lfernandez.dev@gmail.com> Filip Gruszczyński <gruszczy@gmail.com> Filip Haglund <drathier@users.noreply.github.com> Filip Stanis <fstanis@google.com> @@ -858,6 +891,7 @@ Gabriel Nelle <tehsphinx@web.de> Gabriel Nicolas Avellaneda <avellaneda.gabriel@gmail.com> Gabriel Rosenhouse <rosenhouse@gmail.com> Gabriel Russell <gabriel.russell@gmail.com> +Gabriel Vasile <gabriel.vasile0793@gmail.com> Gareth Paul Jones <gpj@foursquare.com> Garret Kelly <gdk@google.com> Garrick Evans <garrick@google.com> @@ -891,6 +925,8 @@ Gianguido Sora` <g.sora4@gmail.com> Gideon Jan-Wessel Redelinghuys <gjredelinghuys@gmail.com> Giles Lean <giles.lean@pobox.com> Giovanni Bajo <rasky@develer.com> +GitHub User @180909 (70465953) <734461790@qq.com> +GitHub User @6543 (24977596) <6543@obermui.de> GitHub User @aca (50316549) <acadx0@gmail.com> GitHub User @ajnirp (1688456) <ajnirp@users.noreply.github.com> GitHub User @ajz01 (4744634) <ajzdenek@gmail.com> @@ -904,10 +940,12 @@ GitHub User @bontequero (2674999) <bontequero@gmail.com> GitHub User @cch123 (384546) <buaa.cch@gmail.com> GitHub User @chainhelen (7046329) <chainhelen@gmail.com> GitHub User @chanxuehong (3416908) <chanxuehong@gmail.com> +GitHub User @Cluas (10056928) <Cluas@live.cn> GitHub User @cncal (23520240) <flycalvin@qq.com> GitHub User @DQNEO (188741) <dqneoo@gmail.com> GitHub User @Dreamacro (8615343) <chuainian@gmail.com> GitHub User @dupoxy (1143957) <dupoxy@users.noreply.github.com> +GitHub User @EndlessCheng (7086966) <loli.con@qq.com> GitHub User @erifan (31343225) <eric.fang@arm.com> GitHub User @esell (9735165) <eujon.sellers@gmail.com> GitHub User @fatedier (7346661) <fatedier@gmail.com> @@ -916,12 +954,15 @@ GitHub User @geedchin (11672310) <geedchin@gmail.com> GitHub User @GrigoriyMikhalkin (3637857) <grigoriymikhalkin@gmail.com> GitHub User @hengwu0 (41297446) <41297446+hengwu0@users.noreply.github.com> GitHub User @hitzhangjie (3725760) <hit.zhangjie@gmail.com> +GitHub User @hqpko (13887251) <whaibin01@hotmail.com> GitHub User @itchyny (375258) <itchyny@hatena.ne.jp> GitHub User @jinmiaoluo (39730824) <jinmiaoluo@icloud.com> GitHub User @jopbrown (6345470) <msshane2008@gmail.com> GitHub User @kazyshr (30496953) <kazyshr0301@gmail.com> GitHub User @kc1212 (1093806) <kc1212@users.noreply.github.com> +GitHub User @komisan19 (18901496) <komiyama6219@gmail.com> GitHub User @Kropekk (13366453) <kamilkropiewnicki@gmail.com> +GitHub User @lhl2617 (33488131) <l.h.lee2617@gmail.com> GitHub User @linguohua (3434367) <lghchinaidea@gmail.com> GitHub User @LotusFenn (13775899) <fenn.lotus@gmail.com> GitHub User @ly303550688 (11519839) <yang.liu636@gmail.com> @@ -936,10 +977,14 @@ GitHub User @OlgaVlPetrova (44112727) <OVPpetrova@gmail.com> GitHub User @pityonline (438222) <pityonline@gmail.com> GitHub User @po3rin (29445112) <abctail30@gmail.com> GitHub User @pokutuna (57545) <popopopopokutuna@gmail.com> +GitHub User @povsister (11040951) <pov@mahou-shoujo.moe> GitHub User @pytimer (17105586) <lixin20101023@gmail.com> +GitHub User @qcrao (7698088) <qcrao91@gmail.com> GitHub User @ramenjuniti (32011829) <ramenjuniti@gmail.com> GitHub User @saitarunreddy (21041941) <saitarunreddypalla@gmail.com> +GitHub User @SataQiu (9354727) <shidaqiu2018@gmail.com> GitHub User @shogo-ma (9860598) <Choroma194@gmail.com> +GitHub User @sivchari (55221074) <shibuuuu5@gmail.com> GitHub User @skanehira (7888591) <sho19921005@gmail.com> GitHub User @soolaugust (10558124) <soolaugust@gmail.com> GitHub User @surechen (7249331) <surechen17@gmail.com> @@ -947,9 +992,12 @@ GitHub User @tatsumack (4510569) <tatsu.mack@gmail.com> GitHub User @tell-k (26263) <ffk2005@gmail.com> GitHub User @tennashi (10219626) <tennashio@gmail.com> GitHub User @uhei (2116845) <uhei@users.noreply.github.com> +GitHub User @uji (49834542) <ujiprog@gmail.com> +GitHub User @unbyte (5772358) <i@shangyes.net> GitHub User @uropek (39370426) <uropek@gmail.com> GitHub User @utkarsh-extc (53217283) <utkarsh.extc@gmail.com> GitHub User @witchard (4994659) <witchard@hotmail.co.uk> +GitHub User @wolf1996 (5901874) <ksgiv37@gmail.com> GitHub User @yah01 (12216890) <kagaminehuan@gmail.com> GitHub User @yuanhh (1298735) <yuan415030@gmail.com> GitHub User @zikaeroh (48577114) <zikaeroh@gmail.com> @@ -962,6 +1010,7 @@ Glenn Brown <glennb@google.com> Glenn Lewis <gmlewis@google.com> Gordon Klaus <gordon.klaus@gmail.com> Gordon Tyler <gordon@doxxx.net> +Grace Han <hgrace503@gmail.com> Graham King <graham4king@gmail.com> Graham Miller <graham.miller@gmail.com> Grant Griffiths <ggp493@gmail.com> @@ -977,10 +1026,12 @@ Guilherme Caruso <gui.martinscaruso@gmail.com> Guilherme Garnier <guilherme.garnier@gmail.com> Guilherme Goncalves <guilhermeaugustosg@gmail.com> Guilherme Rezende <guilhermebr@gmail.com> +Guilherme Souza <32180229+gqgs@users.noreply.github.com> Guillaume J. Charmes <guillaume@charmes.net> Guillaume Sottas <guillaumesottas@gmail.com> Günther Noack <gnoack@google.com> Guobiao Mei <meiguobiao@gmail.com> +Guodong Li <guodongli@google.com> Guoliang Wang <iamwgliang@gmail.com> Gustav Paul <gustav.paul@gmail.com> Gustav Westling <gustav@westling.xyz> @@ -995,6 +1046,7 @@ HAMANO Tsukasa <hamano@osstech.co.jp> Han-Wen Nienhuys <hanwen@google.com> Hang Qian <hangqian90@gmail.com> Hanjun Kim <hallazzang@gmail.com> +Hanlin He <hanling.he@gmail.com> Hanlin Shi <shihanlin9@gmail.com> Haoran Luo <haoran.luo@chaitin.com> Haosdent Huang <haosdent@gmail.com> @@ -1026,18 +1078,19 @@ Herbie Ong <herbie@google.com> Heschi Kreinick <heschi@google.com> Hidetatsu Yaginuma <ygnmhdtt@gmail.com> Hilko Bengen <bengen@hilluzination.de> +Himanshu Kishna Srivastava <28himanshu@gmail.com> Hiroaki Nakamura <hnakamur@gmail.com> Hiromichi Ema <ema.hiro@gmail.com> Hironao OTSUBO <motemen@gmail.com> Hiroshi Ioka <hirochachacha@gmail.com> Hitoshi Mitake <mitake.hitoshi@gmail.com> Holden Huang <ttyh061@gmail.com> -Songlin Jiang <hollowman@hollowman.ml> Hong Ruiqi <hongruiqi@gmail.com> Hongfei Tan <feilengcui008@gmail.com> Horacio Duran <horacio.duran@gmail.com> Horst Rutter <hhrutter@gmail.com> Hossein Sheikh Attar <hattar@google.com> +Hossein Zolfi <hossein.zolfi@gmail.com> Howard Zhang <howard.zhang@arm.com> Hsin Tsao <tsao@google.com> Hsin-Ho Yeh <yhh92u@gmail.com> @@ -1054,11 +1107,14 @@ Ian Haken <ihaken@netflix.com> Ian Kent <iankent85@gmail.com> Ian Lance Taylor <iant@golang.org> Ian Leue <ian@appboy.com> +Ian Mckay <iann0036@gmail.com> Ian Tay <iantay@google.com> +Ian Woolf <btw515wolf2@gmail.com> Ian Zapolsky <ianzapolsky@gmail.com> Ibrahim AshShohail <ibra.sho@gmail.com> Icarus Sparry <golang@icarus.freeuk.com> Iccha Sethi <icchasethi@gmail.com> +Ichinose Shogo <shogo82148@gmail.com> Idora Shinatose <idora.shinatose@gmail.com> Ignacio Hagopian <jsign.uy@gmail.com> Igor Bernstein <igorbernstein@google.com> @@ -1068,6 +1124,7 @@ Igor Vashyst <ivashyst@gmail.com> Igor Zhilianin <igor.zhilianin@gmail.com> Ikko Ashimine <eltociear@gmail.com> Illya Yalovyy <yalovoy@gmail.com> +Ilya Chukov <56119080+Elias506@users.noreply.github.com> Ilya Sinelnikov <sidhmangh@gmail.com> Ilya Tocar <ilya.tocar@intel.com> INADA Naoki <songofacandy@gmail.com> @@ -1122,6 +1179,7 @@ James Cowgill <James.Cowgill@imgtec.com> James Craig Burley <james-github@burleyarch.com> James David Chalfant <james.chalfant@gmail.com> James Eady <jmeady@google.com> +James Fennell <jpfennell@google.com> James Fysh <james.fysh@gmail.com> James Gray <james@james4k.com> James Hartig <fastest963@gmail.com> @@ -1178,6 +1236,7 @@ Jason Wangsadinata <jwangsadinata@gmail.com> Javier Kohen <jkohen@google.com> Javier Revillas <jrevillas@massivedynamic.io> Javier Segura <javism@gmail.com> +Jay Chen <chenjie@chenjie.info> Jay Conrod <jayconrod@google.com> Jay Lee <BusyJayLee@gmail.com> Jay Taylor <outtatime@gmail.com> @@ -1200,6 +1259,7 @@ Jeff Johnson <jrjohnson@google.com> Jeff R. Allen <jra@nella.org> <jeff.allen@gmail.com> Jeff Sickel <jas@corpus-callosum.com> Jeff Wendling <jeff@spacemonkey.com> +Jeff Widman <jeff@jeffwidman.com> Jeffrey H <jeffreyh192@gmail.com> Jelte Fennema <github-tech@jeltef.nl> Jens Frederich <jfrederich@gmail.com> @@ -1210,6 +1270,7 @@ Jeremy Faller <jeremy@golang.org> Jeremy Jackins <jeremyjackins@gmail.com> Jeremy Jay <jeremy@pbnjay.com> Jeremy Schlatter <jeremy.schlatter@gmail.com> +Jero Bado <tokidokitalkyou@gmail.com> Jeroen Bobbeldijk <jerbob92@gmail.com> Jeroen Simonetti <jeroen@simonetti.nl> Jérôme Doucet <jerdct@gmail.com> @@ -1251,6 +1312,8 @@ Joe Richey <joerichey@google.com> Joe Shaw <joe@joeshaw.org> Joe Sylve <joe.sylve@gmail.com> Joe Tsai <joetsai@digital-static.net> +Joel Courtney <euphemize@gmail.com> +Joel Ferrier <joelferrier@google.com> Joel Sing <joel@sing.id.au> <jsing@google.com> Joël Stemmer <jstemmer@google.com> Joel Stemmer <stemmertech@gmail.com> @@ -1260,7 +1323,9 @@ Johan Euphrosine <proppy@google.com> Johan Jansson <johan.jansson@iki.fi> Johan Knutzen <johan@senri.se> Johan Sageryd <j@1616.se> +Johannes Huning <johannes.huning@gmail.com> John Asmuth <jasmuth@gmail.com> +John Bampton <jbampton@gmail.com> John Beisley <huin@google.com> John C Barstow <jbowtie@amathaine.com> John DeNero <denero@google.com> @@ -1269,6 +1334,7 @@ John Gibb <johngibb@gmail.com> John Gilik <john@jgilik.com> John Graham-Cumming <jgc@jgc.org> <jgrahamc@gmail.com> John Howard Palevich <jack.palevich@gmail.com> +John Jago <johnjago@protonmail.com> John Jeffery <jjeffery@sp.com.au> John Jenkins <twodopeshaggy@gmail.com> John Leidegren <john.leidegren@gmail.com> @@ -1320,6 +1386,7 @@ Josa Gesell <josa@gesell.me> Jose Luis Vázquez González <josvazg@gmail.com> Joseph Bonneau <jcb@google.com> Joseph Holsten <joseph@josephholsten.com> +Joseph Morag <sefim96@gmail.com> Josh Baum <joshbaum@google.com> Josh Bleecher Snyder <josharian@gmail.com> Josh Chorlton <jchorlton@gmail.com> @@ -1327,12 +1394,14 @@ Josh Deprez <josh.deprez@gmail.com> Josh Goebel <dreamer3@gmail.com> Josh Hoak <jhoak@google.com> Josh Holland <jrh@joshh.co.uk> +Josh Rickmar <jrick@companyzero.com> Josh Roppo <joshroppo@gmail.com> Josh Varga <josh.varga@gmail.com> Joshua Bezaleel Abednego <joshua.bezaleel@gmail.com> Joshua Boelter <joshua.boelter@intel.com> Joshua Chase <jcjoshuachase@gmail.com> Joshua Crowgey <jcrowgey@uw.edu> +Joshua Harshman <joshgreyhat@gmail.com> Joshua M. Clulow <josh.clulow@joyent.com> Joshua Rubin <joshua@rubixconsulting.com> Josselin Costanzi <josselin@costanzi.fr> @@ -1353,6 +1422,7 @@ Julie Qiu <julie@golang.org> Julien Kauffmann <julien.kauffmann@freelan.org> Julien Salleyron <julien.salleyron@gmail.com> Julien Schmidt <google@julienschmidt.com> +Julien Tant <julien@craftyx.fr> Julio Montes <julio.montes@intel.com> Jun Zhang <jim.zoumo@gmail.com> Junchen Li <junchen.li@arm.com> @@ -1419,10 +1489,12 @@ Kenta Mori <zoncoen@gmail.com> Kerollos Magdy <kerolloz@yahoo.com> Ketan Parmar <ketanbparmar@gmail.com> Kevan Swanberg <kevswanberg@gmail.com> +Kevin Albertson <kevin.albertson@mongodb.com> Kevin Ballard <kevin@sb.org> Kevin Burke <kev@inburke.com> Kévin Dunglas <dunglas@gmail.com> Kevin Gillette <extemporalgenome@gmail.com> +Kevin Herro <kevin109104@gmail.com> Kevin Kirsche <kev.kirsche@gmail.com> Kevin Klues <klueska@gmail.com> <klueska@google.com> Kevin Malachowski <chowski@google.com> @@ -1457,6 +1529,7 @@ Koya IWAMURA <kiwamura0314@gmail.com> Kris Kwiatkowski <kris@cloudflare.com> Kris Nova <kris@nivenly.com> Kris Rousey <krousey@google.com> +Krishna Birla <krishnabirla16@gmail.com> Kristopher Watts <traetox@gmail.com> Krzysztof Dąbrowski <krzysdabro@live.com> Kshitij Saraogi <kshitijsaraogi@gmail.com> @@ -1480,6 +1553,7 @@ Lajos Papp <lalyos@yahoo.com> Lakshay Garg <lakshay.garg.1996@gmail.com> Lann Martin <lannm@google.com> Lanre Adelowo <yo@lanre.wtf> +Lapo Luchini <lapo@lapo.it> Larry Clapp <larry@theclapp.org> Larry Hosken <lahosken@golang.org> Lars Jeppesen <jeppesen.lars@gmail.com> @@ -1496,6 +1570,7 @@ Leigh McCulloch <leighmcc@gmail.com> Leo Antunes <leo@costela.net> Leo Rudberg <ljr@google.com> Leon Klingele <git@leonklingele.de> +Leonard Wang <wangdeyu0907@gmail.com> Leonardo Comelli <leonardo.comelli@gmail.com> Leonel Quinteros <leonel.quinteros@gmail.com> Lev Shamardin <shamardin@gmail.com> @@ -1506,7 +1581,9 @@ Lily Chung <lilithkchung@gmail.com> Lingchao Xin <douglarek@gmail.com> Lion Yang <lion@aosc.xyz> Liz Rice <liz@lizrice.com> +Lize Cai <lizzzcai1@gmail.com> Lloyd Dewolf <foolswisdom@gmail.com> +Lluís Batlle i Rossell <viric@viric.name> Lorenz Bauer <lmb@cloudflare.com> Lorenz Brun <lorenz@brun.one> Lorenz Nickel <mail@lorenznickel.de> @@ -1531,6 +1608,7 @@ Lukasz Milewski <lmmilewski@gmail.com> Luke Champine <luke.champine@gmail.com> Luke Curley <qpingu@gmail.com> Luke Granger-Brown <git@lukegb.com> +Luke Shumaker <lukeshu@datawire.io> Luke Young <bored-engineer@users.noreply.github.com> Luna Duclos <luna.duclos@palmstonegames.com> Luuk van Dijk <lvd@golang.org> <lvd@google.com> @@ -1550,6 +1628,7 @@ Mal Curtis <mal@mal.co.nz> Manfred Touron <m@42.am> Manigandan Dharmalingam <manigandan.jeff@gmail.com> Manish Goregaokar <manishsmail@gmail.com> +Manlio Perillo <manlio.perillo@gmail.com> Manoj Dayaram <platform-dev@moovweb.com> <manoj.dayaram@moovweb.com> Mansour Rahimi <rahimi.mnr@gmail.com> Manu Garg <manugarg@google.com> @@ -1646,6 +1725,8 @@ Matt Joiner <anacrolix@gmail.com> Matt Jones <mrjones@google.com> Matt Juran <thepciet@gmail.com> Matt Layher <mdlayher@gmail.com> +Matt Masurka <masurka@google.com> +Matt Pearring <broskies@google.com> Matt Reiferson <mreiferson@gmail.com> Matt Robenolt <matt@ydekproductions.com> Matt Strong <mstrong1341@gmail.com> @@ -1659,9 +1740,12 @@ Matthew Denton <mdenton@skyportsystems.com> Matthew Holt <Matthew.Holt+git@gmail.com> Matthew Horsnell <matthew.horsnell@gmail.com> Matthew Waters <mwwaters@gmail.com> +Matthias Frei <matthias.frei@inf.ethz.ch> Matthieu Hauglustaine <matt.hauglustaine@gmail.com> Matthieu Olivier <olivier.matthieu@gmail.com> Matthijs Kooijman <matthijs@stdin.nl> +Mattias Appelgren <mattias@ppelgren.se> +Mauricio Alvarado <mauricio.alvarado@leftfieldlabs.com> Max Drosdo.www <g1ran1q@gmail.com> Max Riveiro <kavu13@gmail.com> Max Schmitt <max@schmitt.mx> @@ -1677,9 +1761,11 @@ Máximo Cuadros Ortiz <mcuadros@gmail.com> Maxwell Krohn <themax@gmail.com> Maya Rashish <maya@NetBSD.org> Mayank Kumar <krmayankk@gmail.com> +Mehrad Sadeghi <2012.linkinpark@gmail.com> Meir Fischer <meirfischer@gmail.com> Meng Zhuo <mengzhuo1203@gmail.com> <mzh@golangcn.org> Mhd Sulhan <m.shulhan@gmail.com> +Mia Zhu <CrystalZhu1025getu@gmail.com> Micah Stetson <micah.stetson@gmail.com> Michael Anthony Knyszek <mknyszek@google.com> Michael Brandenburg <mbrandenburg@bolste.com> @@ -1730,8 +1816,10 @@ Michal Franc <lam.michal.franc@gmail.com> Michał Łowicki <mlowicki@gmail.com> Michal Pristas <michal.pristas@gmail.com> Michal Rostecki <mrostecki@suse.de> +Michal Stokluska <mstoklus@redhat.com> Michalis Kargakis <michaliskargakis@gmail.com> Michel Lespinasse <walken@google.com> +Michel Levieux <mlevieux42@gmail.com> Michele Di Pede <michele.di.pede@gmail.com> Mickael Kerjean <mickael.kerjean@gmail.com> Mickey Reiss <mickeyreiss@gmail.com> @@ -1790,7 +1878,9 @@ Muir Manders <muir@mnd.rs> Mukesh Sharma <sharma.mukesh439@gmail.com> Mura Li <mura_li@castech.com.tw> Mykhailo Lesyk <mikhail@lesyk.org> +Nahum Shalman <nahamu@gmail.com> Naman Aggarwal <aggarwal.nam@gmail.com> +Naman Gera <namangera15@gmail.com> Nan Deng <monnand@gmail.com> Nao Yonashiro <owan.orisano@gmail.com> Naoki Kanatani <k12naoki@gmail.com> @@ -1818,6 +1908,7 @@ Neven Sajko <nsajko@gmail.com> Nevins Bartolomeo <nevins.bartolomeo@gmail.com> Niall Sheridan <nsheridan@gmail.com> Nic Day <nic.day@me.com> +Nicholas Asimov <nicholas@asimov.me> Nicholas Katsaros <nick@nickkatsaros.com> Nicholas Maniscalco <nicholas@maniscalco.com> Nicholas Ng <nickng@nickng.io> @@ -1847,6 +1938,7 @@ Nik Nyby <nnyby@columbia.edu> Nikhil Benesch <nikhil.benesch@gmail.com> Nikita Gillmann <nikita@n0.is> <ng0@n0.is> Nikita Kryuchkov <nkryuchkov10@gmail.com> +Nikita Melekhin <nimelehin@gmail.com> Nikita Vanyasin <nikita.vanyasin@gmail.com> Niklas Schnelle <niklas.schnelle@gmail.com> Niko Dziemba <niko@dziemba.com> @@ -1858,6 +1950,7 @@ Niranjan Godbole <niranjan8192@gmail.com> Nishanth Shanmugham <nishanth.gerrard@gmail.com> Noah Campbell <noahcampbell@gmail.com> Noah Goldman <noahg34@gmail.com> +Noah Santschi-Cooney <noah@santschi-cooney.ch> Noble Johnson <noblepoly@gmail.com> Nodir Turakulov <nodir@google.com> Noel Georgi <git@frezbo.com> @@ -1894,6 +1987,7 @@ Pablo Rozas Larraondo <pablo.larraondo@anu.edu.au> Pablo Santiago Blum de Aguiar <scorphus@gmail.com> Padraig Kitterick <padraigkitterick@gmail.com> Pallat Anchaleechamaikorn <yod.pallat@gmail.com> +Pan Chenglong <1004907659@qq.com> Panos Georgiadis <pgeorgiadis@suse.de> Pantelis Sampaziotis <psampaz@gmail.com> Paolo Giarrusso <p.giarrusso@gmail.com> @@ -1947,6 +2041,7 @@ Paulo Casaretto <pcasaretto@gmail.com> Paulo Flabiano Smorigo <pfsmorigo@linux.vnet.ibm.com> Paulo Gomes <paulo.gomes.uk@gmail.com> Pavel Paulau <pavel.paulau@gmail.com> +Pavel Watson <watsonpavel@gmail.com> Pavel Zinovkin <pavel.zinovkin@gmail.com> Pavlo Sumkin <ymkins@gmail.com> Pawel Knap <pawelknap88@gmail.com> @@ -1954,6 +2049,8 @@ Pawel Szczur <filemon@google.com> Paweł Szulik <pawel.szulik@intel.com> Pei Xian Chee <luciolas1991@gmail.com> Pei-Ming Wu <p408865@gmail.com> +Pen Tree <appletree2479@outlook.com> +Peng Gao <peng.gao.dut@gmail.com> Percy Wegmann <ox.to.a.cart@gmail.com> Perry Abbott <perry.j.abbott@gmail.com> Petar Dambovaliev <petar.atanasov.1987@gmail.com> @@ -1992,6 +2089,7 @@ Philip Brown <phil@bolthole.com> Philip Hofer <phofer@umich.edu> Philip K. Warren <pkwarren@gmail.com> Philip Nelson <me@pnelson.ca> +Philipp Sauter <sauterp@protonmail.com> Philipp Stephani <phst@google.com> Phillip Campbell <15082+phillc@users.noreply.github.com> Pierre Carru <pierre.carru@eshard.com> @@ -2007,6 +2105,7 @@ Poh Zi How <poh.zihow@gmail.com> Polina Osadcha <polliosa@google.com> Pontus Leitzler <leitzler@gmail.com> Povilas Versockas <p.versockas@gmail.com> +Prajwal Koirala <16564273+Prajwal-Koirala@users.noreply.github.com> Prasanga Siripala <pj@pjebs.com.au> Prasanna Swaminathan <prasanna@mediamath.com> Prashant Agrawal <prashant.a.vjti@gmail.com> @@ -2027,11 +2126,13 @@ Quim Muntal <quimmuntal@gmail.com> Quinn Slack <sqs@sourcegraph.com> Quinten Yearsley <qyearsley@chromium.org> Quoc-Viet Nguyen <afelion@gmail.com> +Rabin Gaire <rabingaire20@gmail.com> Radek Simko <radek.simko@gmail.com> Radek Sohlich <sohlich@gmail.com> Radu Berinde <radu@cockroachlabs.com> Rafal Jeczalik <rjeczalik@gmail.com> Raghavendra Nagaraj <jamdagni86@gmail.com> +Rahul Bajaj <rahulrb0509@gmail.com> Rahul Chaudhry <rahulchaudhry@chromium.org> Rahul Wadhwani <rahulwadhwani21@gmail.com> Raif S. Naffah <go@naffah-raif.name> @@ -2041,12 +2142,14 @@ Rajender Reddy Kompally <rajenderreddykompally@gmail.com> Ralph Corderoy <ralph@inputplus.co.uk> Ramazan AYYILDIZ <rayyildiz@gmail.com> Ramesh Dharan <dharan@google.com> +Randy Reddig <randy@alta.software> Raph Levien <raph@google.com> Raphael Geronimi <raphael.geronimi@gmail.com> Raul Silvera <rsilvera@google.com> Ravil Bikbulatov <weeellz12@gmail.com> RaviTeja Pothana <ravi.tezu@gmail.com> Ray Tung <rtung@thoughtworks.com> +Ray Wu <ray@liftoff.io> Raymond Kazlauskas <raima220@gmail.com> Rebecca Stambler <rstambler@golang.org> Reilly Watson <reillywatson@gmail.com> @@ -2066,6 +2169,7 @@ Richard Eric Gavaletz <gavaletz@gmail.com> Richard Gibson <richard.gibson@gmail.com> Richard Miller <miller.research@gmail.com> Richard Musiol <mail@richard-musiol.de> <neelance@gmail.com> +Richard Pickering <richard.pickering@hotmail.co.uk> Richard Ulmer <codesoap@mailbox.org> Richard Wilkes <wilkes@me.com> Rick Arnold <rickarnoldjr@gmail.com> @@ -2124,6 +2228,7 @@ Rowan Worth <sqweek@gmail.com> Rudi Kramer <rudi.kramer@gmail.com> Rui Ueyama <ruiu@google.com> Ruixin Bao <ruixin.bao@ibm.com> +Ruslan Andreev <ruslan.andreev@huawei.com> Ruslan Nigmatullin <elessar@dropbox.com> Russ Cox <rsc@golang.org> Russell Haering <russellhaering@gmail.com> @@ -2141,6 +2246,7 @@ Ryan Seys <ryan@ryanseys.com> Ryan Slade <ryanslade@gmail.com> Ryan Zhang <ryan.zhang@docker.com> Ryoichi KATO <ryo1kato@gmail.com> +Ryoya Sekino <ryoyasekino1993@gmail.com> Ryuji Iwata <qt.luigi@gmail.com> Ryuma Yoshida <ryuma.y1117@gmail.com> Ryuzo Yamamoto <ryuzo.yamamoto@gmail.com> @@ -2176,8 +2282,10 @@ Sardorbek Pulatov <sardorbek.pulatov@outlook.com> Sascha Brawer <sascha@brawer.ch> Sasha Lionheart <lionhearts@google.com> Sasha Sobol <sasha@scaledinference.com> +Satoru Kitaguchi <rule.the.fate.myfirststory@gmail.com> Scott Barron <scott.barron@github.com> Scott Bell <scott@sctsm.com> +Scott Cotton <scott@mindowl.com> Scott Crunkleton <crunk1@gmail.com> Scott Ferguson <scottwferg@gmail.com> Scott Lawrence <bytbox@gmail.com> @@ -2191,6 +2299,7 @@ Sean Chittenden <seanc@joyent.com> Sean Christopherson <sean.j.christopherson@intel.com> Sean Dolphin <Sean.Dolphin@kpcompass.com> Sean Harger <sharger@google.com> +Sean Harrington <sean.harrington@leftfieldlabs.com> Sean Hildebrand <seanwhildebrand@gmail.com> Sean Liao <seankhliao@gmail.com> Sean Rees <sean@erifax.org> @@ -2212,6 +2321,7 @@ Sergey Dobrodey <sergey.dobrodey@synesis.ru> Sergey Frolov <sfrolov@google.com> Sergey Glushchenko <gsserge@gmail.com> Sergey Ivanov <ser1325@gmail.com> +Sergey Kacheev <S.Kacheev@gmail.com> Sergey Lukjanov <me@slukjanov.name> Sergey Mishin <sergeymishine@gmail.com> Sergey Mudrik <sergey.mudrik@gmail.com> @@ -2223,6 +2333,7 @@ Serhat Giydiren <serhatgiydiren@gmail.com> Serhii Aheienko <serhii.aheienko@gmail.com> Seth Hoenig <seth.a.hoenig@gmail.com> Seth Vargo <sethvargo@gmail.com> +Shaba Abhiram <shabarivas.abhiram@gmail.com> Shahar Kohanim <skohanim@gmail.com> Shailesh Suryawanshi <ss.shailesh28@gmail.com> Shamil Garatuev <garatuev@gmail.com> @@ -2250,9 +2361,13 @@ Shivakumar GN <shivakumar.gn@gmail.com> Shivani Singhal <shivani.singhal2804@gmail.com> Shivansh Rai <shivansh@freebsd.org> Shivashis Padhi <shivashispadhi@gmail.com> +Shoshin Nikita <shoshin_nikita@fastmail.com> +Shota Sugiura <s.shota.710.3506@gmail.com> Shubham Sharma <shubham.sha12@gmail.com> +Shuhei Takahashi <nya@chromium.org> Shun Fan <sfan@google.com> Silvan Jegen <s.jegen@gmail.com> +Simão Gomes Viana <simaogmv@gmail.com> Simarpreet Singh <simar@linux.com> Simon Drake <simondrake1990@gmail.com> Simon Ferquel <simon.ferquel@docker.com> @@ -2267,13 +2382,16 @@ Sina Siadat <siadat@gmail.com> Sjoerd Siebinga <sjoerd.siebinga@gmail.com> Sokolov Yura <funny.falcon@gmail.com> Song Gao <song@gao.io> +Song Lim <songlim327@gmail.com> Songjiayang <songjiayang1@gmail.com> +Songlin Jiang <hollowman@hollowman.ml> Soojin Nam <jsunam@gmail.com> Søren L. Hansen <soren@linux2go.dk> Sparrow Li <liyuancylx@gmail.com> Spencer Kocot <spencerkocot@gmail.com> Spencer Nelson <s@spenczar.com> Spencer Tung <spencertung@google.com> +Spenser Black <spenserblack01@gmail.com> Spring Mc <heresy.mc@gmail.com> Srdjan Petrovic <spetrovic@google.com> Sridhar Venkatakrishnan <sridhar@laddoo.net> @@ -2324,6 +2442,7 @@ Suyash <dextrous93@gmail.com> Suzy Mueller <suzmue@golang.org> Sven Almgren <sven@tras.se> Sven Blumenstein <svbl@google.com> +Sven Lee <lee1300394324@gmail.com> Sven Taute <sven.taute@gmail.com> Sylvain Zimmer <sylvain@sylvainzimmer.com> Syohei YOSHIDA <syohex@gmail.com> @@ -2406,12 +2525,14 @@ Tiwei Bie <tiwei.btw@antgroup.com> Tobias Assarsson <tobias.assarsson@gmail.com> Tobias Columbus <tobias.columbus@gmail.com> <tobias.columbus@googlemail.com> Tobias Klauser <tklauser@distanz.ch> +Tobias Kohlbau <tobias@kohlbau.de> Toby Burress <kurin@google.com> Todd Kulesza <tkulesza@google.com> Todd Neal <todd@tneal.org> Todd Wang <toddwang@gmail.com> Tom Anthony <git@tomanthony.co.uk> Tom Bergan <tombergan@google.com> +Tom Freudenberg <tom.freudenberg@4commerce.de> Tom Heng <zhm20070928@gmail.com> Tom Lanyon <tomlanyon@google.com> Tom Levy <tomlevy93@gmail.com> @@ -2440,6 +2561,7 @@ Toshiki Shima <hayabusa1419@gmail.com> Totoro W <tw19881113@gmail.com> Travis Bischel <travis.bischel@gmail.com> Travis Cline <travis.cline@gmail.com> +Trevor Dixon <trevordixon@gmail.com> Trevor Strohman <trevor.strohman@gmail.com> Trey Lawrence <lawrence.trey@gmail.com> Trey Roessig <trey.roessig@gmail.com> @@ -2463,6 +2585,7 @@ Tzach Shabtay <tzachshabtay@gmail.com> Tzu-Chiao Yeh <su3g4284zo6y7@gmail.com> Tzu-Jung Lee <roylee17@currant.com> Udalov Max <re.udalov@gmail.com> +Uddeshya Singh <singhuddeshyaofficial@gmail.com> Ugorji Nwoke <ugorji@gmail.com> Ulf Holm Nielsen <doktor@dyregod.dk> Ulrich Kunitz <uli.kunitz@gmail.com> @@ -2475,6 +2598,7 @@ Vadim Grek <vadimprog@gmail.com> Vadim Vygonets <unixdj@gmail.com> Val Polouchkine <vpolouch@justin.tv> Valentin Vidic <vvidic@valentin-vidic.from.hr> +Vaughn Iverson <vsivsi@yahoo.com> Vee Zhang <veezhang@126.com> <vveezhang@gmail.com> Vega Garcia Luis Alfonso <vegacom@gmail.com> Venil Noronha <veniln@vmware.com> @@ -2491,6 +2615,7 @@ Vincent Batts <vbatts@hashbangbash.com> <vbatts@gmail.com> Vincent Vanackere <vincent.vanackere@gmail.com> Vinu Rajashekhar <vinutheraj@gmail.com> Vish Subramanian <vish@google.com> +Vishal Dalwadi <dalwadivishal26@gmail.com> Vishvananda Ishaya <vishvananda@gmail.com> Visweswara R <r.visweswara@gmail.com> Vitaly Zdanevich <zdanevich.vitaly@ya.ru> @@ -2542,6 +2667,7 @@ Willem van der Schyff <willemvds@gmail.com> William Chan <willchan@chromium.org> William Chang <mr.williamchang@gmail.com> William Josephson <wjosephson@gmail.com> +William Langford <wlangfor@gmail.com> William Orr <will@worrbase.com> <ay1244@gmail.com> William Poussier <william.poussier@gmail.com> Wisdom Omuya <deafgoat@gmail.com> @@ -2550,6 +2676,7 @@ Xi Ruoyao <xry23333@gmail.com> Xia Bin <snyh@snyh.org> Xiangdong Ji <xiangdong.ji@arm.com> Xiaodong Liu <teaofmoli@gmail.com> +Xing Gao <18340825824@163.com> Xing Xing <mikespook@gmail.com> Xingqang Bai <bxq2011hust@qq.com> Xu Fei <badgangkiller@gmail.com> @@ -2571,6 +2698,7 @@ Yasha Bubnov <girokompass@gmail.com> Yasser Abdolmaleki <yasser@yasser.ca> Yasuharu Goto <matope.ono@gmail.com> Yasuhiro Matsumoto <mattn.jp@gmail.com> +Yasutaka Shinzaki <shinzaki@yasu26.tech> Yasuyuki Oka <yasuyk@gmail.com> Yazen Shunnar <yazen.shunnar@gmail.com> Yestin Sun <ylh@pdx.edu> @@ -2583,14 +2711,18 @@ Yorman Arias <cixtords@gmail.com> Yoshiyuki Kanno <nekotaroh@gmail.com> <yoshiyuki.kanno@stoic.co.jp> Yoshiyuki Mineo <yoshiyuki.mineo@gmail.com> Yosuke Akatsuka <yosuke.akatsuka@gmail.com> +Youfu Zhang <zhangyoufu@gmail.com> Yu Heng Zhang <annita.zhang@cn.ibm.com> Yu Xuan Zhang <zyxsh@cn.ibm.com> +Yu, Li-Yu <afg984@gmail.com> Yuichi Kishimoto <yk2220s@gmail.com> Yuichi Nishiwaki <yuichi.nishiwaki@gmail.com> Yuji Yaginuma <yuuji.yaginuma@gmail.com> +Yuki Ito <mrno110y@gmail.com> Yuki OKUSHI <huyuumi.dev@gmail.com> Yuki Yugui Sonoda <yugui@google.com> Yukihiro Nishinaka <6elpinal@gmail.com> +YunQiang Su <syq@debian.org> Yury Smolsky <yury@smolsky.by> Yusuke Kagiwada <block.rxckin.beats@gmail.com> Yuusei Kuwana <kuwana@kumama.org> @@ -2599,6 +2731,7 @@ Yves Junqueira <yvesj@google.com> <yves.junqueira@gmail.com> Zac Bergquist <zbergquist99@gmail.com> Zach Bintliff <zbintliff@gmail.com> Zach Gershman <zachgersh@gmail.com> +Zach Hoffman <zrhoffman@apache.org> Zach Jones <zachj1@gmail.com> Zachary Amsden <zach@thundertoken.com> Zachary Gershman <zgershman@pivotal.io> @@ -2617,6 +2750,7 @@ Zhou Peng <p@ctriple.cn> Ziad Hatahet <hatahet@gmail.com> Ziheng Liu <lzhfromustc@gmail.com> Zorion Arrizabalaga <zorionk@gmail.com> +Zvonimir Pavlinovic <zpavlinovic@google.com> Zyad A. Ali <zyad.ali.me@gmail.com> Максадбек Ахмедов <a.maksadbek@gmail.com> Максим Федосеев <max.faceless.frei@gmail.com> diff --git a/doc/asm.html b/doc/asm.html index d5788000861..51f85eb9482 100644 --- a/doc/asm.html +++ b/doc/asm.html @@ -166,7 +166,7 @@ jumps and branches. </li> <li> -<code>SP</code>: Stack pointer: top of stack. +<code>SP</code>: Stack pointer: the highest address within the local stack frame. </li> </ul> @@ -216,7 +216,7 @@ If a Go prototype does not name its result, the expected assembly name is <code> The <code>SP</code> pseudo-register is a virtual stack pointer used to refer to frame-local variables and the arguments being prepared for function calls. -It points to the top of the local stack frame, so references should use negative offsets +It points to the highest address within the local stack frame, so references should use negative offsets in the range [−framesize, 0): <code>x-8(SP)</code>, <code>y-4(SP)</code>, and so on. </p> @@ -409,7 +409,7 @@ The linker will choose one of the duplicates to use. (For <code>TEXT</code> items.) Don't insert the preamble to check if the stack must be split. The frame for the routine, plus anything it calls, must fit in the -spare space at the top of the stack segment. +spare space remaining in the current stack segment. Used to protect routines such as the stack splitting code itself. </li> <li> @@ -460,7 +460,7 @@ Only valid on functions that declare a frame size of 0. <code>TOPFRAME</code> = 2048 <br> (For <code>TEXT</code> items.) -Function is the top of the call stack. Traceback should stop at this function. +Function is the outermost frame of the call stack. Traceback should stop at this function. </li> </ul> diff --git a/doc/go1.17.html b/doc/go1.17.html index 48811e6b679..b65d13a0403 100644 --- a/doc/go1.17.html +++ b/doc/go1.17.html @@ -14,13 +14,13 @@ Do not send CLs removing the interior tags from such phrases. main ul li { margin: 0.5em 0; } </style> -<h2 id="introduction">DRAFT RELEASE NOTES — Introduction to Go 1.17</h2> +<h2 id="introduction">Introduction to Go 1.17</h2> <p> - <strong> - Go 1.17 is not yet released. These are work-in-progress - release notes. Go 1.17 is expected to be released in August 2021. - </strong> + The latest Go release, version 1.17, arrives six months after <a href="/doc/go1.16">Go 1.16</a>. + Most of its changes are in the implementation of the toolchain, runtime, and libraries. + As always, the release maintains the Go 1 <a href="/doc/go1compat">promise of compatibility</a>. + We expect almost all Go programs to continue to compile and run as before. </p> <h2 id="language">Changes to the language</h2> @@ -134,35 +134,54 @@ Do not send CLs removing the interior tags from such phrases. <h3 id="go-command">Go command</h3> -<h4 id="lazy-loading">Lazy module loading</h4> +<a id="lazy-loading"><!-- for existing links only --></a> +<h4 id="graph-pruning">Pruned module graphs in <code>go 1.17</code> modules</h4> <p><!-- golang.org/issue/36460 --> + If a module specifies <code>go</code> <code>1.17</code> or higher, the module + graph includes only the <em>immediate</em> dependencies of + other <code>go</code> <code>1.17</code> modules, not their full transitive + dependencies. (See <a href="/ref/mod#graph-pruning">Module graph pruning</a> + for more detail.) +</p> + +<p> + For the <code>go</code> command to correctly resolve transitive imports using + the pruned module graph, the <code>go.mod</code> file for each module needs to + include more detail about the transitive dependencies relevant to that module. If a module specifies <code>go</code> <code>1.17</code> or higher in its - <code>go.mod</code> file, its transitive requirements are now loaded lazily, - avoiding the need to download or read <code>go.mod</code> files for - otherwise-irrelevant dependencies. To support lazy loading, in Go 1.17 modules - the <code>go</code> command maintains <em>explicit</em> requirements in - the <code>go.mod</code> file for every dependency that provides any package - transitively imported by any package or test within the module. - See <a href="https://golang.org/design/36460-lazy-module-loading">the design - document</a> for more detail. - <!-- TODO(bcmills): replace the design-doc link with proper documentation. --> + <code>go.mod</code> file, its <code>go.mod</code> file now contains an + explicit <a href="/ref/mod#go-mod-file-require"><code>require</code> + directive</a> for every module that provides a transitively-imported package. + (In previous versions, the <code>go.mod</code> file typically only included + explicit requirements for <em>directly</em>-imported packages.) +<p> + +<p> + Since the expanded <code>go.mod</code> file needed for module graph pruning + includes all of the dependencies needed to load the imports of any package in + the main module, if the main module specifies + <code>go</code> <code>1.17</code> or higher the <code>go</code> tool no longer + reads (or even downloads) <code>go.mod</code> files for dependencies if they + are not needed in order to complete the requested command. + (See <a href="/ref/mod#lazy-loading">Lazy loading</a>.) </p> <p><!-- golang.org/issue/45965 --> - Because the number of additional explicit requirements in the go.mod file may - be substantial, in a Go 1.17 module the newly-added requirements - on <em>indirect</em> dependencies are maintained in a - separate <code>require</code> block from the block containing direct - dependencies. + Because the number of explicit requirements may be substantially larger in an + expanded Go 1.17 <code>go.mod</code> file, the newly-added requirements + on <em>indirect</em> dependencies in a <code>go</code> <code>1.17</code> + module are maintained in a separate <code>require</code> block from the block + containing direct dependencies. </p> <p><!-- golang.org/issue/45094 --> - To facilitate the upgrade to lazy loading, the - <code>go</code> <code>mod</code> <code>tidy</code> subcommand now supports - a <code>-go</code> flag to set or change the <code>go</code> version in - the <code>go.mod</code> file. To enable lazy loading for an existing module - without changing the selected versions of its dependencies, run: + To facilitate the upgrade to Go 1.17 pruned module graphs, the + <a href="/ref/mod#go-mod-tidy"><code>go</code> <code>mod</code> <code>tidy</code></a> + subcommand now supports a <code>-go</code> flag to set or change + the <code>go</code> version in the <code>go.mod</code> file. To convert + the <code>go.mod</code> file for an existing module to Go 1.17 without + changing the selected versions of its dependencies, run: </p> <pre> @@ -199,10 +218,10 @@ Do not send CLs removing the interior tags from such phrases. </p> <p><!-- golang.org/issue/46366 --> - The <code>go</code> <code>mod</code> <code>graph</code> subcommand also - supports the <code>-go</code> flag, which causes it to report the graph as - seen by the indicated Go version, showing dependencies that may otherwise be - pruned out by lazy loading. + The <a href="/ref/mod#go-mod-graph"><code>go</code> <code>mod</code> <code>graph</code></a> + subcommand also supports the <code>-go</code> flag, which causes it to report + the graph as seen by the indicated Go version, showing dependencies that may + otherwise be pruned out. </p> <h4 id="module-deprecation-comments">Module deprecation comments</h4> @@ -270,7 +289,8 @@ Do not send CLs removing the interior tags from such phrases. <p><!-- golang.org/issue/36876 --> If the main module specifies <code>go</code> <code>1.17</code> or higher, - <code>go</code> <code>mod</code> <code>vendor</code> now annotates + <a href="/ref/mod#go-mod-vendor"><code>go</code> <code>mod</code> <code>vendor</code></a> + now annotates <code>vendor/modules.txt</code> with the <code>go</code> version indicated by each vendored module in its own <code>go.mod</code> file. The annotated version is used when building the module's packages from vendored source code. @@ -468,6 +488,15 @@ func Foo() bool { and compare functions by code pointer. </p> +<h3 id="link">Linker</h3> + +<p><!-- CL 310349 --> + When the linker uses external linking mode, which is the default + when linking a program that uses cgo, and the linker is invoked + with a <code>-I</code> option, the option will now be passed to the + external linker as a <code>-Wl,--dynamic-linker</code> option. +</p> + <h2 id="library">Core library</h2> <h3 id="runtime/cgo"><a href="/pkg/runtime/cgo">Cgo</a></h3> diff --git a/doc/go_spec.html b/doc/go_spec.html index 0e14a1f3b63..fd5fee46eb2 100644 --- a/doc/go_spec.html +++ b/doc/go_spec.html @@ -4329,6 +4329,7 @@ a <a href="#Run_time_panics">run-time panic</a> occurs. <pre> s := make([]byte, 2, 4) s0 := (*[0]byte)(s) // s0 != nil +s1 := (*[1]byte)(s[1:]) // &s1[0] == &s[1] s2 := (*[2]byte)(s) // &s2[0] == &s[0] s4 := (*[4]byte)(s) // panics: len([4]byte) > len(s) diff --git a/misc/cgo/testsanitizers/msan_test.go b/misc/cgo/testsanitizers/msan_test.go index 2a3494fbfc1..5ee9947a585 100644 --- a/misc/cgo/testsanitizers/msan_test.go +++ b/misc/cgo/testsanitizers/msan_test.go @@ -42,6 +42,7 @@ func TestMSAN(t *testing.T) { {src: "msan5.go"}, {src: "msan6.go"}, {src: "msan7.go"}, + {src: "msan8.go"}, {src: "msan_fail.go", wantErr: true}, } for _, tc := range cases { diff --git a/misc/cgo/testsanitizers/testdata/msan8.go b/misc/cgo/testsanitizers/testdata/msan8.go new file mode 100644 index 00000000000..1cb5c5677fa --- /dev/null +++ b/misc/cgo/testsanitizers/testdata/msan8.go @@ -0,0 +1,109 @@ +// Copyright 2021 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 + +/* +#include <pthread.h> +#include <signal.h> +#include <stdint.h> + +#include <sanitizer/msan_interface.h> + +// cgoTracebackArg is the type of the argument passed to msanGoTraceback. +struct cgoTracebackArg { + uintptr_t context; + uintptr_t sigContext; + uintptr_t* buf; + uintptr_t max; +}; + +// msanGoTraceback is registered as the cgo traceback function. +// This will be called when a signal occurs. +void msanGoTraceback(void* parg) { + struct cgoTracebackArg* arg = (struct cgoTracebackArg*)(parg); + arg->buf[0] = 0; +} + +// msanGoWait will be called with all registers undefined as far as +// msan is concerned. It just waits for a signal. +// Because the registers are msan-undefined, the signal handler will +// be invoked with all registers msan-undefined. +__attribute__((noinline)) +void msanGoWait(unsigned long a1, unsigned long a2, unsigned long a3, unsigned long a4, unsigned long a5, unsigned long a6) { + sigset_t mask; + + sigemptyset(&mask); + sigsuspend(&mask); +} + +// msanGoSignalThread is the thread ID of the msanGoLoop thread. +static pthread_t msanGoSignalThread; + +// msanGoSignalThreadSet is used to record that msanGoSignalThread +// has been initialized. This is accessed atomically. +static int32_t msanGoSignalThreadSet; + +// uninit is explicitly poisoned, so that we can make all registers +// undefined by calling msanGoWait. +static unsigned long uninit; + +// msanGoLoop loops calling msanGoWait, with the arguments passed +// such that msan thinks that they are undefined. msan permits +// undefined values to be used as long as they are not used to +// for conditionals or for memory access. +void msanGoLoop() { + int i; + + msanGoSignalThread = pthread_self(); + __atomic_store_n(&msanGoSignalThreadSet, 1, __ATOMIC_SEQ_CST); + + // Force uninit to be undefined for msan. + __msan_poison(&uninit, sizeof uninit); + for (i = 0; i < 100; i++) { + msanGoWait(uninit, uninit, uninit, uninit, uninit, uninit); + } +} + +// msanGoReady returns whether msanGoSignalThread is set. +int msanGoReady() { + return __atomic_load_n(&msanGoSignalThreadSet, __ATOMIC_SEQ_CST) != 0; +} + +// msanGoSendSignal sends a signal to the msanGoLoop thread. +void msanGoSendSignal() { + pthread_kill(msanGoSignalThread, SIGWINCH); +} +*/ +import "C" + +import ( + "runtime" + "time" +) + +func main() { + runtime.SetCgoTraceback(0, C.msanGoTraceback, nil, nil) + + c := make(chan bool) + go func() { + defer func() { c <- true }() + C.msanGoLoop() + }() + + for C.msanGoReady() == 0 { + time.Sleep(time.Microsecond) + } + +loop: + for { + select { + case <-c: + break loop + default: + C.msanGoSendSignal() + time.Sleep(time.Microsecond) + } + } +} diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go index 1abb03bcc56..bec17696f30 100644 --- a/src/cmd/dist/build.go +++ b/src/cmd/dist/build.go @@ -1263,14 +1263,19 @@ func cmdbootstrap() { timelog("start", "dist bootstrap") defer timelog("end", "dist bootstrap") - var noBanner bool + var noBanner, noClean bool var debug bool flag.BoolVar(&rebuildall, "a", rebuildall, "rebuild all") flag.BoolVar(&debug, "d", debug, "enable debugging of bootstrap process") flag.BoolVar(&noBanner, "no-banner", noBanner, "do not print banner") + flag.BoolVar(&noClean, "no-clean", noClean, "print deprecation warning") xflagparse(0) + if noClean { + xprintf("warning: --no-clean is deprecated and has no effect; use 'go install std cmd' instead\n") + } + // Set GOPATH to an internal directory. We shouldn't actually // need to store files here, since the toolchain won't // depend on modules outside of vendor directories, but if diff --git a/src/cmd/go/internal/modload/buildlist.go b/src/cmd/go/internal/modload/buildlist.go index 604a57b4373..bf695673167 100644 --- a/src/cmd/go/internal/modload/buildlist.go +++ b/src/cmd/go/internal/modload/buildlist.go @@ -191,6 +191,19 @@ func (rs *Requirements) rootSelected(path string) (version string, ok bool) { return "", false } +// hasRedundantRoot returns true if the root list contains multiple requirements +// of the same module or a requirement on any version of the main module. +// Redundant requirements should be pruned, but they may influence version +// selection. +func (rs *Requirements) hasRedundantRoot() bool { + for i, m := range rs.rootModules { + if m.Path == Target.Path || (i > 0 && m.Path == rs.rootModules[i-1].Path) { + return true + } + } + return false +} + // Graph returns the graph of module requirements loaded from the current // root modules (as reported by RootModules). // @@ -882,6 +895,12 @@ func updateLazyRoots(ctx context.Context, direct map[string]bool, rs *Requiremen // and (trivially) version. if !rootsUpgraded { + if cfg.BuildMod != "mod" { + // The only changes to the root set (if any) were to remove duplicates. + // The requirements are consistent (if perhaps redundant), so keep the + // original rs to preserve its ModuleGraph. + return rs, nil + } // The root set has converged: every root going into this iteration was // already at its selected version, although we have have removed other // (redundant) roots for the same path. diff --git a/src/cmd/go/internal/modload/init.go b/src/cmd/go/internal/modload/init.go index a8cbd9fe16d..45f724d5e36 100644 --- a/src/cmd/go/internal/modload/init.go +++ b/src/cmd/go/internal/modload/init.go @@ -449,13 +449,22 @@ func loadModFile(ctx context.Context) (rs *Requirements, needCommit bool) { } setDefaultBuildMod() // possibly enable automatic vendoring - rs = requirementsFromModFile(ctx) - + rs = requirementsFromModFile() if cfg.BuildMod == "vendor" { readVendorList() checkVendorConsistency() rs.initVendor(vendorList) } + if rs.hasRedundantRoot() { + // If any module path appears more than once in the roots, we know that the + // go.mod file needs to be updated even though we have not yet loaded any + // transitive dependencies. + rs, err = updateRoots(ctx, rs.direct, rs, nil, nil, false) + if err != nil { + base.Fatalf("go: %v", err) + } + } + if index.goVersionV == "" { // TODO(#45551): Do something more principled instead of checking // cfg.CmdName directly here. @@ -530,7 +539,12 @@ func CreateModFile(ctx context.Context, modPath string) { base.Fatalf("go: %v", err) } - commitRequirements(ctx, modFileGoVersion(), requirementsFromModFile(ctx)) + rs := requirementsFromModFile() + rs, err = updateRoots(ctx, rs.direct, rs, nil, nil, false) + if err != nil { + base.Fatalf("go: %v", err) + } + commitRequirements(ctx, modFileGoVersion(), rs) // Suggest running 'go mod tidy' unless the project is empty. Even if we // imported all the correct requirements above, we're probably missing @@ -641,9 +655,8 @@ func initTarget(m module.Version) { // requirementsFromModFile returns the set of non-excluded requirements from // the global modFile. -func requirementsFromModFile(ctx context.Context) *Requirements { +func requirementsFromModFile() *Requirements { roots := make([]module.Version, 0, len(modFile.Require)) - mPathCount := map[string]int{Target.Path: 1} direct := map[string]bool{} for _, r := range modFile.Require { if index != nil && index.exclude[r.Mod] { @@ -656,28 +669,12 @@ func requirementsFromModFile(ctx context.Context) *Requirements { } roots = append(roots, r.Mod) - mPathCount[r.Mod.Path]++ if !r.Indirect { direct[r.Mod.Path] = true } } module.Sort(roots) rs := newRequirements(modDepthFromGoVersion(modFileGoVersion()), roots, direct) - - // If any module path appears more than once in the roots, we know that the - // go.mod file needs to be updated even though we have not yet loaded any - // transitive dependencies. - for _, n := range mPathCount { - if n > 1 { - var err error - rs, err = updateRoots(ctx, rs.direct, rs, nil, nil, false) - if err != nil { - base.Fatalf("go: %v", err) - } - break - } - } - return rs } diff --git a/src/cmd/go/testdata/script/mod_tidy_lazy_self.txt b/src/cmd/go/testdata/script/mod_tidy_lazy_self.txt index ffcea186035..9abbabd2ebe 100644 --- a/src/cmd/go/testdata/script/mod_tidy_lazy_self.txt +++ b/src/cmd/go/testdata/script/mod_tidy_lazy_self.txt @@ -2,18 +2,13 @@ # 'go mod tidy' should not panic if the main module initially # requires an older version of itself. +# A module may require an older version of itself without error. This is +# inconsistent (the required version is never selected), but we still get +# a reproducible build list. +go list -m all +stdout '^golang.org/issue/46078$' -# A module that explicitly requires an older version of itself should be -# rejected as inconsistent: we enforce that every explicit requirement is the -# selected version of its module path, but the selected version of the main -# module is always itself — not some explicit version. - -! go list -m all -stderr '^go: updates to go\.mod needed; to update it:\n\tgo mod tidy$' - - -# The suggested 'go mod tidy' command should succeed (not crash). - +# 'go mod tidy' should fix this (and not crash). go mod tidy diff --git a/src/cmd/go/testdata/script/mod_vendor_redundant_requirement.txt b/src/cmd/go/testdata/script/mod_vendor_redundant_requirement.txt new file mode 100644 index 00000000000..3f6f5c5276b --- /dev/null +++ b/src/cmd/go/testdata/script/mod_vendor_redundant_requirement.txt @@ -0,0 +1,29 @@ +# 'go list -mod=vendor' should succeed even when go.mod contains redundant +# requirements. Verifies #47565. +go list -mod=vendor + +-- go.mod -- +module m + +go 1.17 + +require example.com/m v0.0.0 +require example.com/m v0.0.0 + +replace example.com/m v0.0.0 => ./m +-- m/go.mod -- +module example.com/m + +go 1.17 +-- m/m.go -- +package m +-- use.go -- +package use + +import _ "example.com/m" +-- vendor/example.com/m/m.go -- +package m +-- vendor/modules.txt -- +# example.com/m v0.0.0 => ./m +## explicit; go 1.17 +example.com/m diff --git a/src/cmd/internal/obj/textflag.go b/src/cmd/internal/obj/textflag.go index 881e1922031..5ae75027c2f 100644 --- a/src/cmd/internal/obj/textflag.go +++ b/src/cmd/internal/obj/textflag.go @@ -49,8 +49,8 @@ const ( // Function can call reflect.Type.Method or reflect.Type.MethodByName. REFLECTMETHOD = 1024 - // Function is the top of the call stack. Call stack unwinders should stop - // at this function. + // Function is the outermost frame of the call stack. Call stack unwinders + // should stop at this function. TOPFRAME = 2048 // Function is an ABI wrapper. diff --git a/src/io/fs/fs.go b/src/io/fs/fs.go index e1be32478e0..e603afadb0b 100644 --- a/src/io/fs/fs.go +++ b/src/io/fs/fs.go @@ -86,7 +86,7 @@ type File interface { type DirEntry interface { // Name returns the name of the file (or subdirectory) described by the entry. // This name is only the final element of the path (the base name), not the entire path. - // For example, Name would return "hello.go" not "/home/gopher/hello.go". + // For example, Name would return "hello.go" not "home/gopher/hello.go". Name() string // IsDir reports whether the entry describes a directory. diff --git a/src/make.bash b/src/make.bash index 4fb13f62758..7986125a06f 100755 --- a/src/make.bash +++ b/src/make.bash @@ -130,8 +130,8 @@ if [ "$(uname -s)" = "GNU/kFreeBSD" ]; then export CGO_ENABLED=0 fi -# Test which linker/loader our system is using -if type readelf >/dev/null 2>&1; then +# Test which linker/loader our system is using, if GO_LDSO is not set. +if [ -z "$GO_LDSO" ] && type readelf >/dev/null 2>&1; then if echo "int main() { return 0; }" | ${CC:-cc} -o ./test-musl-ldso -x c - >/dev/null 2>&1; then LDSO=$(readelf -l ./test-musl-ldso | grep 'interpreter:' | sed -e 's/^.*interpreter: \(.*\)[]]/\1/') >/dev/null 2>&1 [ -z "$LDSO" ] || export GO_LDSO="$LDSO" @@ -203,16 +203,10 @@ if [ "$1" = "--dist-tool" ]; then exit 0 fi -buildall="-a" -if [ "$1" = "--no-clean" ]; then - buildall="" - shift -fi - # Run dist bootstrap to complete make.bash. # Bootstrap installs a proper cmd/dist, built with the new toolchain. # Throw ours, built with Go 1.4, away after bootstrap. -./cmd/dist/dist bootstrap $buildall $vflag $GO_DISTFLAGS "$@" +./cmd/dist/dist bootstrap -a $vflag $GO_DISTFLAGS "$@" rm -f ./cmd/dist/dist # DO NOT ADD ANY NEW CODE HERE. diff --git a/src/make.bat b/src/make.bat index b4a8e708490..8f2825b09a9 100644 --- a/src/make.bat +++ b/src/make.bat @@ -112,20 +112,20 @@ if x%2==x--dist-tool goto copydist if x%3==x--dist-tool goto copydist
if x%4==x--dist-tool goto copydist
-set buildall=-a
-if x%1==x--no-clean set buildall=
-if x%2==x--no-clean set buildall=
-if x%3==x--no-clean set buildall=
-if x%4==x--no-clean set buildall=
-if x%1==x--no-banner set buildall=%buildall% --no-banner
-if x%2==x--no-banner set buildall=%buildall% --no-banner
-if x%3==x--no-banner set buildall=%buildall% --no-banner
-if x%4==x--no-banner set buildall=%buildall% --no-banner
+set bootstrapflags=
+if x%1==x--no-clean set bootstrapflags=--no-clean
+if x%2==x--no-clean set bootstrapflags=--no-clean
+if x%3==x--no-clean set bootstrapflags=--no-clean
+if x%4==x--no-clean set bootstrapflags=--no-clean
+if x%1==x--no-banner set bootstrapflags=%bootstrapflags% --no-banner
+if x%2==x--no-banner set bootstrapflags=%bootstrapflags% --no-banner
+if x%3==x--no-banner set bootstrapflags=%bootstrapflags% --no-banner
+if x%4==x--no-banner set bootstrapflags=%bootstrapflags% --no-banner
:: Run dist bootstrap to complete make.bash.
:: Bootstrap installs a proper cmd/dist, built with the new toolchain.
:: Throw ours, built with Go 1.4, away after bootstrap.
-.\cmd\dist\dist.exe bootstrap %vflag% %buildall%
+.\cmd\dist\dist.exe bootstrap -a %vflag% %bootstrapflags%
if errorlevel 1 goto fail
del .\cmd\dist\dist.exe
goto end
diff --git a/src/make.rc b/src/make.rc index f5e57e97556..7bdc7dea1c1 100755 --- a/src/make.rc +++ b/src/make.rc @@ -92,15 +92,10 @@ if(~ $1 --dist-tool){ exit } -buildall = -a -if(~ $1 --no-clean) { - buildall = () - shift -} # Run dist bootstrap to complete make.bash. # Bootstrap installs a proper cmd/dist, built with the new toolchain. # Throw ours, built with Go 1.4, away after bootstrap. -./cmd/dist/dist bootstrap $vflag $buildall $* +./cmd/dist/dist bootstrap -a $vflag $* rm -f ./cmd/dist/dist # DO NOT ADD ANY NEW CODE HERE. diff --git a/src/net/http/transport_test.go b/src/net/http/transport_test.go index 690e0c299d2..eeaa4926445 100644 --- a/src/net/http/transport_test.go +++ b/src/net/http/transport_test.go @@ -6441,10 +6441,11 @@ func TestErrorWriteLoopRace(t *testing.T) { // Test that a new request which uses the connection of an active request // cannot cause it to be canceled as well. func TestCancelRequestWhenSharingConnection(t *testing.T) { - if testing.Short() { - t.Skip("skipping in short mode") - } + reqc := make(chan chan struct{}, 2) ts := httptest.NewServer(HandlerFunc(func(w ResponseWriter, req *Request) { + ch := make(chan struct{}, 1) + reqc <- ch + <-ch w.Header().Add("Content-Length", "0") })) defer ts.Close() @@ -6456,34 +6457,58 @@ func TestCancelRequestWhenSharingConnection(t *testing.T) { var wg sync.WaitGroup - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + wg.Add(1) + putidlec := make(chan chan struct{}) + go func() { + defer wg.Done() + ctx := httptrace.WithClientTrace(context.Background(), &httptrace.ClientTrace{ + PutIdleConn: func(error) { + // Signal that the idle conn has been returned to the pool, + // and wait for the order to proceed. + ch := make(chan struct{}) + putidlec <- ch + <-ch + }, + }) + req, _ := NewRequestWithContext(ctx, "GET", ts.URL, nil) + res, err := client.Do(req) + if err == nil { + res.Body.Close() + } + if err != nil { + t.Errorf("request 1: got err %v, want nil", err) + } + }() - for i := 0; i < 10; i++ { - wg.Add(1) - go func() { - defer wg.Done() - for ctx.Err() == nil { - reqctx, reqcancel := context.WithCancel(ctx) - go reqcancel() - req, _ := NewRequestWithContext(reqctx, "GET", ts.URL, nil) - res, err := client.Do(req) - if err == nil { - res.Body.Close() - } - } - }() - } + // Wait for the first request to receive a response and return the + // connection to the idle pool. + r1c := <-reqc + close(r1c) + idlec := <-putidlec - for ctx.Err() == nil { - req, _ := NewRequest("GET", ts.URL, nil) - if res, err := client.Do(req); err != nil { - t.Errorf("unexpected: %p %v", req, err) - break - } else { + wg.Add(1) + cancelctx, cancel := context.WithCancel(context.Background()) + go func() { + defer wg.Done() + req, _ := NewRequestWithContext(cancelctx, "GET", ts.URL, nil) + res, err := client.Do(req) + if err == nil { res.Body.Close() } - } + if !errors.Is(err, context.Canceled) { + t.Errorf("request 2: got err %v, want Canceled", err) + } + }() + // Wait for the second request to arrive at the server, and then cancel + // the request context. + r2c := <-reqc cancel() + + // Give the cancelation a moment to take effect, and then unblock the first request. + time.Sleep(1 * time.Millisecond) + close(idlec) + + close(r2c) wg.Wait() } diff --git a/src/os/exec/lp_windows_test.go b/src/os/exec/lp_windows_test.go index f834ffede03..bbf6a9b7f13 100644 --- a/src/os/exec/lp_windows_test.go +++ b/src/os/exec/lp_windows_test.go @@ -312,9 +312,6 @@ func TestLookPath(t *testing.T) { // Run all tests. for i, test := range lookPathTests { t.Run(fmt.Sprint(i), func(t *testing.T) { - if i == 16 { - t.Skip("golang.org/issue/44379") - } dir := filepath.Join(tmp, "d"+strconv.Itoa(i)) err := os.Mkdir(dir, 0700) if err != nil { diff --git a/src/runtime/cgo/gcc_traceback.c b/src/runtime/cgo/gcc_traceback.c index d86331c583a..6e9470c43c2 100644 --- a/src/runtime/cgo/gcc_traceback.c +++ b/src/runtime/cgo/gcc_traceback.c @@ -7,6 +7,14 @@ #include <stdint.h> #include "libcgo.h" +#ifndef __has_feature +#define __has_feature(x) 0 +#endif + +#if __has_feature(memory_sanitizer) +#include <sanitizer/msan_interface.h> +#endif + // Call the user's traceback function and then call sigtramp. // The runtime signal handler will jump to this code. // We do it this way so that the user's traceback function will be called @@ -19,6 +27,18 @@ x_cgo_callers(uintptr_t sig, void *info, void *context, void (*cgoTraceback)(str arg.SigContext = (uintptr_t)(context); arg.Buf = cgoCallers; arg.Max = 32; // must match len(runtime.cgoCallers) + +#if __has_feature(memory_sanitizer) + // This function is called directly from the signal handler. + // The arguments are passed in registers, so whether msan + // considers cgoCallers to be initialized depends on whether + // it considers the appropriate register to be initialized. + // That can cause false reports in rare cases. + // Explicitly unpoison the memory to avoid that. + // See issue #47543 for more details. + __msan_unpoison(&arg, sizeof arg); +#endif + (*cgoTraceback)(&arg); sigtramp(sig, info, context); } diff --git a/src/runtime/mfinal.go b/src/runtime/mfinal.go index fd318d49a8d..c134a0f22d8 100644 --- a/src/runtime/mfinal.go +++ b/src/runtime/mfinal.go @@ -466,6 +466,10 @@ okarg: // Without the KeepAlive call, the finalizer could run at the start of // syscall.Read, closing the file descriptor before syscall.Read makes // the actual system call. +// +// Note: KeepAlive should only be used to prevent finalizers from +// running prematurely. In particular, when used with unsafe.Pointer, +// the rules for valid uses of unsafe.Pointer still apply. func KeepAlive(x interface{}) { // Introduce a use of x that the compiler can't eliminate. // This makes sure x is alive on entry. We need x to be alive diff --git a/src/runtime/signal_windows.go b/src/runtime/signal_windows.go index f2ce24d735c..b720ddcf164 100644 --- a/src/runtime/signal_windows.go +++ b/src/runtime/signal_windows.go @@ -183,6 +183,17 @@ func lastcontinuehandler(info *exceptionrecord, r *context, gp *g) int32 { return _EXCEPTION_CONTINUE_SEARCH } + // VEH is called before SEH, but arm64 MSVC DLLs use SEH to trap + // illegal instructions during runtime initialization to determine + // CPU features, so if we make it to the last handler and we're + // arm64 and it's an illegal instruction and this is coming from + // non-Go code, then assume it's this runtime probing happen, and + // pass that onward to SEH. + if GOARCH == "arm64" && info.exceptioncode == _EXCEPTION_ILLEGAL_INSTRUCTION && + (r.ip() < firstmoduledata.text || firstmoduledata.etext < r.ip()) { + return _EXCEPTION_CONTINUE_SEARCH + } + winthrow(info, r, gp) return 0 // not reached } diff --git a/src/runtime/textflag.h b/src/runtime/textflag.h index e727208cd03..214075e360c 100644 --- a/src/runtime/textflag.h +++ b/src/runtime/textflag.h @@ -32,8 +32,8 @@ #define NOFRAME 512 // Function can call reflect.Type.Method or reflect.Type.MethodByName. #define REFLECTMETHOD 1024 -// Function is the top of the call stack. Call stack unwinders should stop -// at this function. +// Function is the outermost frame of the call stack. Call stack unwinders +// should stop at this function. #define TOPFRAME 2048 // Function is an ABI wrapper. #define ABIWRAPPER 4096 |