From cbc69e89b17188b3633bafa9d6e6c44f7f1a2ec0 Mon Sep 17 00:00:00 2001 From: Andrew Date: Tue, 11 Aug 2020 11:03:03 -0400 Subject: [PATCH] [release-branch.go1.15] all: merge master into release-branch.go1.15 5c7748dc9d doc/go1.15: encoding/json's CL 191783 was reverted 5ff5b3c557 doc/go1.15: remove draft notice 5ae1d62ee3 CONTRIBUTORS: update for the Go 1.15 release 7ad776dda5 doc/go1.15: document crypto/tls permanent error a93a4c1780 runtime: make nanotime1 reentrant Updates #40697 Change-Id: Ie39896ee6304544cc9e9c1938bdf176f1dcf8766 Reviewed-on: https://go-review.googlesource.com/c/go/+/247900 Run-TryBot: Andrew Bonventre Reviewed-by: Dmitri Shuralyov Reviewed-by: Carlos Amedee TryBot-Result: Gobot Gobot --- CONTRIBUTORS | 131 ++++++++++++++++++++++++++++++++ doc/go1.15.html | 34 ++++++--- src/runtime/sys_linux_386.s | 38 ++++++++- src/runtime/sys_linux_amd64.s | 56 +++++++++----- src/runtime/sys_linux_arm.s | 36 ++++++++- src/runtime/sys_linux_arm64.s | 34 ++++++++- src/runtime/sys_linux_mips64x.s | 38 ++++++++- src/runtime/sys_linux_ppc64x.s | 40 +++++++++- 8 files changed, 361 insertions(+), 46 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 798002cfb5..cebc92f53f 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -31,6 +31,7 @@ Aaron Cannon Aaron France Aaron Jacobs Aaron Kemp +Aaron Patterson Aaron Stein Aaron Torres Aaron Zinman @@ -58,6 +59,7 @@ Adrian Hesketh Adrian Nos Adrian O'Grady Adrien Bustany +Adrien Delorme Adrien Petel Aécio Júnior Aeneas Rekkas (arekkas) @@ -114,6 +116,7 @@ Alex Zhirov Alexander Demakin Alexander Döring Alexander F Rødseth +Alexander Greim Alexander Guz Alexander Kauer Alexander Kucherenko @@ -122,6 +125,7 @@ Alexander Lourier Alexander Menzhinsky Alexander Morozov Alexander Neumann +Alexander Nohe Alexander Orlov Alexander Pantyukhin Alexander Polcyn @@ -149,6 +153,7 @@ Alexey Semenyuk Alexis Hildebrandt Alexis Hunt Alexis Imperial-Legrand +Ali Farooq Ali Rizvi-Santiago Aliaksandr Valialkin Alif Rachmawadi @@ -156,14 +161,17 @@ Allan Simon Allen Li Alok Menghrajani Aman Gupta +Amarjeet Anand Amir Mohammad Saied Amr Mohammed Amrut Joshi +An Long An Xiao Anand K. Mistry Anders Pearson Anderson Queiroz André Carvalho +André Martins Andre Nathan Andrea Nodari Andrea Spadaccini @@ -187,9 +195,11 @@ Andrew Braunstein Andrew Bursavich Andrew Ekstedt Andrew Etter +Andrew G. Morgan Andrew Gerrand Andrew Harding Andrew Jackura +Andrew Louis Andrew Lutomirski Andrew Medvedev Andrew Pilloud @@ -219,6 +229,7 @@ Andy Lindeman Andy Maloney Andy Pan Andy Walker +Andy Wang Andzej Maciusovic Anfernee Yongkun Gui Angelo Bulfone @@ -226,6 +237,7 @@ Anh Hai Trinh Anit Gandhi Ankit Goyal Anmol Sethi +Annirudh Prasad Anschel Schaffer-Cohen Anthony Alves Anthony Canino @@ -239,15 +251,18 @@ Anthony Woods Antoine GIRARD Antoine Martin Anton Gyllenberg +Anton Kuklin Antonin Amand Antonio Antelo Antonio Bibiano Antonio Huete Jimenez Antonio Murdaca Antonio Troina +Anze Kolar Aofei Sheng Apisak Darakananda Aram Hăvărneanu +Araragi Hokuto Arash Bina Arda Güçlü Areski Belaid @@ -273,6 +288,7 @@ Audrius Butkevicius Augusto Roman Aulus Egnatius Varialus Aurélien Rainone +Aurélio A. Heckert Austin Clements Avi Flax awaw fumin @@ -315,6 +331,7 @@ Benoit Sigoure Berengar Lehr Berkant Ipek <41230766+0xbkt@users.noreply.github.com> Bharath Thiruveedula +Bhavin Gandhi Bill Neubauer Bill O'Farrell Bill Prin @@ -322,6 +339,7 @@ Bill Thiede Bill Zissimopoulos Billie Harold Cleek Billy Lynch +Billy Zaelani Malik Bjørn Erik Pedersen Bjorn Tillenius Bjorn Tipling @@ -331,12 +349,15 @@ Blake Mesdag Blake Mizerany Blixt Bob Briski +Bob McNaughton Bob Potter Bobby DeSimone Bobby Powers +Boqin Qin Boris Nagaev Borja Clemente Brad Burch +Brad Erickson Brad Fitzpatrick Brad Garcia Brad Jones @@ -351,6 +372,7 @@ Brandon Bennett Brandon Gilmore Brandon Philips Brandon Ryan +Brayden Cloud Brendan Daniel Tracey Brendan O'Dea Brett Cannon @@ -390,6 +412,7 @@ Carlos Castillo Carlos Cirello Carlos Eduardo Carlos Eduardo Seo +Carlos Iriarte Carlos Souza Carolyn Van Slyck Carrie Bynon @@ -405,6 +428,7 @@ Chad Rosier ChaiShushan Changkun Ou Channing Kimble-Brown +Chao Xu Charles Fenwick Elliott Charles Kenney Charles L. Dorian @@ -426,6 +450,7 @@ Chris Howey Chris Hundt Chris Jones Chris Kastorff +Chris Le Roy Chris Lennert Chris Liles Chris Manghane @@ -475,6 +500,7 @@ Conrad Meyer Conrado Gouvea Constantin Konstantinidis Corey Thomasson +Corne van der Plas Cosmos Nicolaou Costin Chirvasuta Craig Citro @@ -506,9 +532,11 @@ Daniel Ingram Daniel Johansson Daniel Kerwin Daniel Krech +Daniel Kumor Daniel Langner Daniel Lidén Daniel Lublin +Daniel Mangum Daniel Martí Daniel Morsing Daniel Nadasi @@ -519,6 +547,8 @@ Daniel Speichert Daniel Theophanes Daniel Upton Daniela Petruzalek +Danish Dua +Danish Prakash Danny Rosseau Daria Kolistratova Darien Raymond @@ -542,6 +572,7 @@ David Brophy David Bürgin <676c7473@gmail.com> David Calavera David Carlier +David Carter David Chase David Covert David Crawshaw @@ -550,6 +581,7 @@ David Finkel David Forsythe David G. Andersen David Glasser +David Golden David Heuschmann David Howden David Hubbard @@ -574,6 +606,7 @@ David Volquartz Lebech David Wimmer Davies Liu Davor Kapsa +Dean Eigenmann <7621705+decanus@users.noreply.github.com> Dean Prichard Deepak Jois Denis Bernard @@ -619,6 +652,7 @@ Dmitry Mottl Dmitry Neverov Dmitry Savintsev Dmitry Yakunin +Doga Fincan Domas Tamašauskas Domen Ipavec Dominic Green @@ -642,6 +676,7 @@ Dustin Sallings Dustin Shields-Cloues Dvir Volk Dylan Waits +Ed Schouten Edan Bedrik <3d4nb3@gmail.com> Eddie Scholtz Eden Li @@ -659,11 +694,13 @@ Elena Grahovac Eli Bendersky Elias Naur Elliot Morrison-Reed +Ellison Leão Emerson Lin Emil Hessman Emil Mursalimov Emilien Kenler Emmanuel Odeke +Emrecan Bati Eno Compton Eoghan Sherry Eric Biggers @@ -682,6 +719,7 @@ Eric Rescorla Eric Roshan-Eisner Eric Rutherford Eric Rykwalder +Erick Tryzelaar Erik Aigner Erik Dubbelboer Erik St. Martin @@ -694,6 +732,7 @@ Esko Luontola Ethan Burns Ethan Miller Euan Kemp +Eugene Formanenko Eugene Kalinin Evan Broder Evan Brown @@ -705,6 +744,7 @@ Evan Kroske Evan Martin Evan Phoenix Evan Shaw +Evgeniy Kulikov Evgeniy Polyakov Ewan Chou Ewan Valentine @@ -725,8 +765,10 @@ Fedor Indutny Fedor Korotkiy Felipe Oliveira Felix Bünemann +Felix Cornelius <9767036+fcornelius@users.noreply.github.com> Felix Geisendörfer Felix Kollmann +Ferenc Szabo Filip Gruszczyński Filip Haglund Filip Stanis @@ -774,6 +816,7 @@ Gary Elliott Gaurish Sharma Gautham Thambidorai Gauthier Jolly +Gawen Arab Geert-Johan Riemer Genevieve Luyt Gengliang Wang @@ -795,6 +838,7 @@ Gianguido Sora` Gideon Jan-Wessel Redelinghuys Giles Lean Giovanni Bajo +GitHub User @aca (50316549) GitHub User @ajnirp (1688456) GitHub User @ajz01 (4744634) GitHub User @alkesh26 (1019076) @@ -805,12 +849,18 @@ 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 @cncal (23520240) GitHub User @DQNEO (188741) +GitHub User @Dreamacro (8615343) GitHub User @dupoxy (1143957) 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 @hengwu0 (41297446) <41297446+hengwu0@users.noreply.github.com> GitHub User @itchyny (375258) GitHub User @jinmiaoluo (39730824) @@ -820,11 +870,13 @@ GitHub User @kc1212 (1093806) GitHub User @Kropekk (13366453) GitHub User @linguohua (3434367) GitHub User @LotusFenn (13775899) +GitHub User @ly303550688 (11519839) GitHub User @madiganz (18340029) GitHub User @maltalex (10195391) 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 @pityonline (438222) GitHub User @po3rin (29445112) @@ -836,6 +888,7 @@ GitHub User @shogo-ma (9860598) GitHub User @skanehira (7888591) GitHub User @tatsumack (4510569) GitHub User @tell-k (26263) +GitHub User @tennashi (10219626) GitHub User @uhei (2116845) GitHub User @uropek (39370426) GitHub User @utkarsh-extc (53217283) @@ -861,6 +914,7 @@ Greg Thelen Greg Ward Grégoire Delattre Gregory Man +Gregory Petrosyan Guilherme Caruso Guilherme Garnier Guilherme Goncalves @@ -917,6 +971,7 @@ Hitoshi Mitake Holden Huang Hong Ruiqi Hongfei Tan +Horacio Duran Horst Rutter Hossein Sheikh Attar Howard Zhang @@ -927,6 +982,7 @@ Huan Du Hugues Bruant Huy Le Hyang-Ah Hana Kim +Hyoyoung Chang Ian Cottrell Ian Davis Ian Gudger @@ -986,6 +1042,7 @@ Jake B Jakob Borg Jakob Weisblat Jakub Čajka +Jakub Kaczmarzyk Jakub Ryszard Czarnowicz Jamal Carvalho James Aguilar @@ -1032,6 +1089,7 @@ Jan Steinke Jan Ziak <0xe2.0x9a.0x9b@gmail.com> Jani Monoses Jannis Andrija Schnitzer +Jared Allard Jared Culp Jaroslavas Počepko Jason A. Donenfeld @@ -1086,8 +1144,11 @@ Jerrin Shaji George Jess Frazelle Jesse Szwedko Jesús Espino +Jia Zhan +Jiacai Liu Jianing Yu Jianqiao Li +Jie Ma Jihyun Yu Jim Cote Jim Kingdon @@ -1135,6 +1196,7 @@ John Howard Palevich John Jeffery John Jenkins John Leidegren +John McCabe John Moore John Newlin John Papandriopoulos @@ -1146,6 +1208,7 @@ John Tuley John Weldon Johnny Luo Jon Chen +Jon Johnson Jonas Bernoulli Jonathan Allie Jonathan Amsterdam @@ -1165,6 +1228,7 @@ Jonathon Lacher Jongmin Kim Joonas Kuorilehto Joop Kiefte +Jordan Christiansen Jordan Krage Jordan Lewis Jordan Liggitt @@ -1177,6 +1241,7 @@ Josa Gesell Jose Luis Vázquez González Joseph Bonneau Joseph Holsten +Josh Baum Josh Bleecher Snyder Josh Chorlton Josh Deprez @@ -1185,8 +1250,10 @@ Josh Hoak Josh Holland Josh Roppo Josh Varga +Joshua Bezaleel Abednego Joshua Boelter Joshua Chase +Joshua Crowgey Joshua M. Clulow Joshua Rubin Josselin Costanzi @@ -1265,6 +1332,7 @@ Kenji Yano Kenneth Shaw Kenny Grant Kenta Mori +Kerollos Magdy Ketan Parmar Kevan Swanberg Kevin Ballard @@ -1277,10 +1345,14 @@ Kevin Malachowski Kevin Ruffin Kevin Vu Kevin Zita +Keyan Pishdadian +Kezhu Wang +Khosrow Moossavi Kieran Colford Kim Shrier Kim Yongbin Kir Kolyshkin +Kirill Korotaev Kirill Motkov Kirill Smelkov Kirill Tatchihin @@ -1308,6 +1380,7 @@ Kyle Consalus Kyle Isom Kyle Jones Kyle Lemons +Kyle Nusbaum Kyle Shannon Kyle Spiers Kyle Wood @@ -1339,6 +1412,8 @@ Leonardo Comelli Leonel Quinteros Lev Shamardin Lewin Bormann +Liam Haworth +Lily Chung Lion Yang Liz Rice Lloyd Dewolf @@ -1396,6 +1471,7 @@ Marcel van Lohuizen Marcelo Cantos Marcelo E. Magallon Marco Hennings +Marcus Weiner Marcus Willock Marga Manterola Mariano Cano @@ -1426,6 +1502,7 @@ Markus Duft Markus Sonderegger Markus Zimmermann Marten Seemann +Martin Asquino Martin Bertschler Martin Garton Martin Habbecke @@ -1449,6 +1526,7 @@ Maryan Hratson Masahiro Furudate Masahiro Wakame Masaki Yoshida +Masaya Watanabe Mat Byczkowski Mat Ryer Máté Gulyás @@ -1495,6 +1573,7 @@ Max Ushakov Maxim Eryomenko Maxim Khitrov Maxim Pimenov +Maxim Pugachev Maxim Ushakov Maxime de Roucy Máximo Cuadros Ortiz @@ -1549,6 +1628,7 @@ Michal Bohuslávek Michal Cierniak Michał Derkacz Michal Franc +Michał Łowicki Michal Pristas Michal Rostecki Michalis Kargakis @@ -1556,6 +1636,7 @@ Michel Lespinasse Mickael Kerjean Mickey Reiss Miek Gieben +Miguel Acero Miguel Mendez Miguel Molina Mihai Borobocea @@ -1582,6 +1663,7 @@ Mikio Hara Mikkel Krautz Mikołaj Baranowski Milan Knezevic +Milan Patel Milutin Jovanović MinJae Kwon Miquel Sabaté Solà @@ -1603,8 +1685,10 @@ Mrunal Patel Muhammad Falak R Wani Muhammed Uluyol Muir Manders +Mukesh Sharma Mura Li Mykhailo Lesyk +Naman Aggarwal Nan Deng Nao Yonashiro Naoki Kanatani @@ -1612,6 +1696,7 @@ Nate Wilkinson Nathan Cantelmo Nathan Caza Nathan Dias +Nathan Fiscaletti Nathan Humphreys Nathan John Youngman Nathan Otterness @@ -1621,6 +1706,7 @@ Nathan Youngman Nathan(yinian) Hu Nathaniel Cook Naveen Kumar Sangi +Neeilan Selvalingam Neelesh Chandola Neil Lyons Neuman Vong @@ -1661,17 +1747,20 @@ Nikita Vanyasin Niklas Schnelle Niko Dziemba Nikolay Turpitko +Nikson Kanti Paul Nils Larsgård Nir Soffer Niranjan Godbole Nishanth Shanmugham Noah Campbell +Noah Goldman Noble Johnson Nodir Turakulov Noel Georgi Norberto Lopes Norman B. Lancaster Nuno Cruces +Obeyda Djeffal Odin Ugedal Oleg Bulatov Oleg Vakheta @@ -1689,6 +1778,7 @@ Omar Jarjur Oryan Moshe Osamu TONOMORI Özgür Kesim +Pablo Caderno Pablo Lalloni Pablo Rozas Larraondo Pablo Santiago Blum de Aguiar @@ -1702,6 +1792,8 @@ Parker Moore Parminder Singh Pascal Dierich Pascal S. de Kloe +Paschalis Tsilias +Pasi Tähkäpää Pat Moroney Patrick Barker Patrick Crosby @@ -1718,6 +1810,7 @@ Paul A Querna Paul Borman Paul Boyd Paul Chang +Paul D. Weber Paul Hammond Paul Hankin Paul Jolly @@ -1743,8 +1836,10 @@ Pavel Zinovkin Pavlo Sumkin Pawel Knap Pawel Szczur +Pei Xian Chee Percy Wegmann Perry Abbott +Petar Dambovaliev Petar Maymounkov Peter Armitage Peter Bourgon @@ -1781,6 +1876,7 @@ Philip Hofer Philip K. Warren Philip Nelson Philipp Stephani +Pierre Carru Pierre Durand Pierre Prinetti Pierre Roullon @@ -1789,11 +1885,14 @@ Pieter Droogendijk Pietro Gagliardi Piyush Mishra Plekhanov Maxim +Polina Osadcha Pontus Leitzler +Povilas Versockas Prasanga Siripala Prasanna Swaminathan Prashant Agrawal Prashant Varanasi +Praveen Kumar Pravendra Singh Preetam Jinka Pure White @@ -1804,6 +1903,7 @@ Quan Yong Zhai Quentin Perez Quentin Renard Quentin Smith +Quey-Liang Kao Quinn Slack Quinten Yearsley Quoc-Viet Nguyen @@ -1831,6 +1931,7 @@ Reilly Watson Reinaldo de Souza Jr Remi Gillig Rémy Oudompheng +Ren Ogaki Rens Rikkerink Rhys Hiltner Ricardo Padilha @@ -1842,6 +1943,8 @@ Richard Eric Gavaletz Richard Gibson Richard Miller Richard Musiol +Richard Ulmer +Richard Wilkes Rick Arnold Rick Hudson Rick Sayre @@ -1860,6 +1963,7 @@ Robert Figueiredo Robert Griesemer Robert Hencke Robert Iannucci +Robert Kuska Robert Obryk Robert Sesek Robert Snedegar @@ -1878,6 +1982,7 @@ Roger Pau Monné Roger Peppe Rohan Challa Rohan Verma +Rohith Ravi Roland Illig Roland Shoemaker Romain Baugue @@ -1887,6 +1992,7 @@ Roman Shchekin Ron Hashimoto Ron Minnich Ross Chater +Ross Kinsey Ross Light Ross Smith II Rowan Marshall @@ -1921,6 +2027,8 @@ Sakeven Jiang Salmān Aljammāz Sam Arnold Sam Boyer +Sam Chen +Sam Cross Sam Ding Sam Hug Sam Thorogood @@ -1972,6 +2080,7 @@ Sergey 'SnakE' Gromov Sergey Arseev Sergey Dobrodey Sergey Frolov +Sergey Glushchenko Sergey Ivanov Sergey Lukjanov Sergey Mishin @@ -1987,7 +2096,9 @@ Seth Vargo Shahar Kohanim Shamil Garatuev Shane Hansen +Shang Jian Ding Shaozhen Ding +Shaquille Wyan Que Shaun Dunning Shawn Elliott Shawn Ledbetter @@ -2008,6 +2119,7 @@ Shubham Sharma Shun Fan Silvan Jegen Simarpreet Singh +Simon Drake Simon Ferquel Simon Jefford Simon Rawet @@ -2018,6 +2130,8 @@ Sina Siadat Sjoerd Siebinga Sokolov Yura Song Gao +Soojin Nam +Søren L. Hansen Spencer Kocot Spencer Nelson Spencer Tung @@ -2074,6 +2188,7 @@ Taavi Kivisik Tad Fisher Tad Glines Tadas Valiukas +Tadeo Kondrak Taesu Pyo Tai Le Taj Khattra @@ -2083,6 +2198,7 @@ Takeshi YAMANASHI <9.nashi@gmail.com> Takuto Ikuta Takuya Ueda Tal Shprecher +Tamás Gulácsi Tamir Duberstein Tao Qingyun Tao Shen @@ -2102,6 +2218,7 @@ Tetsuo Kiso Than McIntosh Thanabodee Charoenpiriyakij Thanatat Tamtan +The Hatsune Daishi Thiago Avelino Thiago Fransosi Farina Thomas Alan Copeland @@ -2128,9 +2245,11 @@ Tim Ebringer Tim Heckman Tim Henderson Tim Hockin +Tim Möhlmann Tim Swast Tim Wright Tim Xu +Timmy Douglas Timo Savola Timo Truyts Timothy Studd @@ -2149,6 +2268,7 @@ Tom Lanyon Tom Levy Tom Limoncelli Tom Linford +Tom Parkin Tom Payne Tom Szymanski Tom Thorogood @@ -2162,6 +2282,7 @@ Tony Reix Tony Walker Tooru Takahashi Tor Andersson +Torben Schinke Tormod Erevik Lea Toshihiro Shiino Toshiki Shima @@ -2178,12 +2299,15 @@ Tristan Ooohry Tristan Rice Troels Thomsen Trung Nguyen +Tsuji Daishiro Tudor Golubenco Tugdual Saunier Tuo Shan Tyler Bui-Palsulich Tyler Bunnell Tyler Treat +Tyson Andre +Tzach Shabtay Tzu-Jung Lee Udalov Max Ugorji Nwoke @@ -2217,6 +2341,7 @@ Visweswara R Vitaly Zdanevich Vitor De Mario Vivek Sekhar +Vivian Liang Vlad Krasnov Vladimir Evgrafov Vladimir Kovpak @@ -2231,6 +2356,7 @@ Volodymyr Paprotski W. Trevor King Wade Simmons Wagner Riffel +Walt Della Walter Poupore Wander Lairson Costa Wang Xuerui @@ -2274,12 +2400,15 @@ 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 @@ -2298,6 +2427,7 @@ Yoshiyuki Mineo Yosuke Akatsuka Yu Heng Zhang Yu Xuan Zhang +Yuichi Kishimoto Yuichi Nishiwaki Yuji Yaginuma Yuki OKUSHI @@ -2318,6 +2448,7 @@ Zak Zakatell Kanda Zellyn Hunter Zev Goldstein +Zhang Boyang Zheng Dayu Zheng Xu Zhengyu He diff --git a/doc/go1.15.html b/doc/go1.15.html index 17e442d4c6..8872d71138 100644 --- a/doc/go1.15.html +++ b/doc/go1.15.html @@ -14,13 +14,21 @@ Do not send CLs removing the interior tags from such phrases. main ul li { margin: 0.5em 0; } -

DRAFT RELEASE NOTES — Introduction to Go 1.15

+

Introduction to Go 1.15

- - Go 1.15 is not yet released. These are work-in-progress - release notes. Go 1.15 is expected to be released in August 2020. - + The latest Go release, version 1.15, arrives six months after Go 1.14. + Most of its changes are in the implementation of the toolchain, runtime, and libraries. + As always, the release maintains the Go 1 promise of compatibility. + We expect almost all Go programs to continue to compile and run as before. +

+ +

+ Go 1.15 includes substantial improvements to the linker, + improves allocation for small objects at high core counts, and + deprecates X.509 CommonName. + GOPROXY now supports skipping proxies that return errors and + a new embedded tzdata package has been added.

Changes to the language

@@ -524,6 +532,17 @@ Do not send CLs removing the interior tags from such phrases. fields OCSPResponse and SignedCertificateTimestamps are now repopulated on client-side resumed connections.

+ +

+ tls.Conn + now returns an opaque error on permanently broken connections, wrapping + the temporary + net.Error. To access the + original net.Error, use + errors.As (or + errors.Unwrap) instead of a + type assertion. +

@@ -638,11 +657,6 @@ Do not send CLs removing the interior tags from such phrases.
encoding/json
-

- Decoding a JSON array into a slice no longer reuses any existing slice elements, - following the rules that the package documentation already stated. -

-

The package now has an internal limit to the maximum depth of nesting when decoding. This reduces the possibility that a diff --git a/src/runtime/sys_linux_386.s b/src/runtime/sys_linux_386.s index 1b28098ad9..5b9b638ad7 100644 --- a/src/runtime/sys_linux_386.s +++ b/src/runtime/sys_linux_386.s @@ -222,7 +222,7 @@ TEXT runtime·mincore(SB),NOSPLIT,$0-16 RET // func walltime1() (sec int64, nsec int32) -TEXT runtime·walltime1(SB), NOSPLIT, $0-12 +TEXT runtime·walltime1(SB), NOSPLIT, $8-12 // We don't know how much stack space the VDSO code will need, // so switch to g0. @@ -233,6 +233,13 @@ TEXT runtime·walltime1(SB), NOSPLIT, $0-12 MOVL g_m(AX), SI // SI unchanged by C code. // Set vdsoPC and vdsoSP for SIGPROF traceback. + // Save the old values on stack and restore them on exit, + // so this function is reentrant. + MOVL m_vdsoPC(SI), CX + MOVL m_vdsoSP(SI), DX + MOVL CX, 0(SP) + MOVL DX, 4(SP) + LEAL sec+0(FP), DX MOVL -4(DX), CX MOVL CX, m_vdsoPC(SI) @@ -276,7 +283,15 @@ finish: MOVL 12(SP), BX // nsec MOVL BP, SP // Restore real SP - MOVL $0, m_vdsoSP(SI) + // Restore vdsoPC, vdsoSP + // We don't worry about being signaled between the two stores. + // If we are not in a signal handler, we'll restore vdsoSP to 0, + // and no one will care about vdsoPC. If we are in a signal handler, + // we cannot receive another signal. + MOVL 4(SP), CX + MOVL CX, m_vdsoSP(SI) + MOVL 0(SP), CX + MOVL CX, m_vdsoPC(SI) // sec is in AX, nsec in BX MOVL AX, sec_lo+0(FP) @@ -286,7 +301,7 @@ finish: // int64 nanotime(void) so really // void nanotime(int64 *nsec) -TEXT runtime·nanotime1(SB), NOSPLIT, $0-8 +TEXT runtime·nanotime1(SB), NOSPLIT, $8-8 // Switch to g0 stack. See comment above in runtime·walltime. MOVL SP, BP // Save old SP; BP unchanged by C code. @@ -296,6 +311,13 @@ TEXT runtime·nanotime1(SB), NOSPLIT, $0-8 MOVL g_m(AX), SI // SI unchanged by C code. // Set vdsoPC and vdsoSP for SIGPROF traceback. + // Save the old values on stack and restore them on exit, + // so this function is reentrant. + MOVL m_vdsoPC(SI), CX + MOVL m_vdsoSP(SI), DX + MOVL CX, 0(SP) + MOVL DX, 4(SP) + LEAL ret+0(FP), DX MOVL -4(DX), CX MOVL CX, m_vdsoPC(SI) @@ -332,7 +354,15 @@ finish: MOVL 12(SP), BX // nsec MOVL BP, SP // Restore real SP - MOVL $0, m_vdsoSP(SI) + // Restore vdsoPC, vdsoSP + // We don't worry about being signaled between the two stores. + // If we are not in a signal handler, we'll restore vdsoSP to 0, + // and no one will care about vdsoPC. If we are in a signal handler, + // we cannot receive another signal. + MOVL 4(SP), CX + MOVL CX, m_vdsoSP(SI) + MOVL 0(SP), CX + MOVL CX, m_vdsoPC(SI) // sec is in AX, nsec in BX // convert to DX:AX nsec diff --git a/src/runtime/sys_linux_amd64.s b/src/runtime/sys_linux_amd64.s index 58d3bc54b4..fe9c6bce85 100644 --- a/src/runtime/sys_linux_amd64.s +++ b/src/runtime/sys_linux_amd64.s @@ -206,7 +206,7 @@ TEXT runtime·mincore(SB),NOSPLIT,$0-28 // func walltime1() (sec int64, nsec int32) // non-zero frame-size means bp is saved and restored -TEXT runtime·walltime1(SB),NOSPLIT,$8-12 +TEXT runtime·walltime1(SB),NOSPLIT,$16-12 // We don't know how much stack space the VDSO code will need, // so switch to g0. // In particular, a kernel configured with CONFIG_OPTIMIZE_INLINING=n @@ -221,6 +221,13 @@ TEXT runtime·walltime1(SB),NOSPLIT,$8-12 MOVQ g_m(AX), BX // BX unchanged by C code. // Set vdsoPC and vdsoSP for SIGPROF traceback. + // Save the old values on stack and restore them on exit, + // so this function is reentrant. + MOVQ m_vdsoPC(BX), CX + MOVQ m_vdsoSP(BX), DX + MOVQ CX, 0(SP) + MOVQ DX, 8(SP) + LEAQ sec+0(FP), DX MOVQ -8(DX), CX MOVQ CX, m_vdsoPC(BX) @@ -244,8 +251,17 @@ noswitch: CALL AX MOVQ 0(SP), AX // sec MOVQ 8(SP), DX // nsec +ret: MOVQ BP, SP // Restore real SP - MOVQ $0, m_vdsoSP(BX) + // Restore vdsoPC, vdsoSP + // We don't worry about being signaled between the two stores. + // If we are not in a signal handler, we'll restore vdsoSP to 0, + // and no one will care about vdsoPC. If we are in a signal handler, + // we cannot receive another signal. + MOVQ 8(SP), CX + MOVQ CX, m_vdsoSP(BX) + MOVQ 0(SP), CX + MOVQ CX, m_vdsoPC(BX) MOVQ AX, sec+0(FP) MOVL DX, nsec+8(FP) RET @@ -257,15 +273,10 @@ fallback: MOVQ 0(SP), AX // sec MOVL 8(SP), DX // usec IMULQ $1000, DX - MOVQ BP, SP // Restore real SP - MOVQ $0, m_vdsoSP(BX) - MOVQ AX, sec+0(FP) - MOVL DX, nsec+8(FP) - RET + JMP ret // func nanotime1() int64 -// non-zero frame-size means bp is saved and restored -TEXT runtime·nanotime1(SB),NOSPLIT,$8-8 +TEXT runtime·nanotime1(SB),NOSPLIT,$16-8 // Switch to g0 stack. See comment above in runtime·walltime. MOVQ SP, BP // Save old SP; BP unchanged by C code. @@ -275,6 +286,13 @@ TEXT runtime·nanotime1(SB),NOSPLIT,$8-8 MOVQ g_m(AX), BX // BX unchanged by C code. // Set vdsoPC and vdsoSP for SIGPROF traceback. + // Save the old values on stack and restore them on exit, + // so this function is reentrant. + MOVQ m_vdsoPC(BX), CX + MOVQ m_vdsoSP(BX), DX + MOVQ CX, 0(SP) + MOVQ DX, 8(SP) + LEAQ ret+0(FP), DX MOVQ -8(DX), CX MOVQ CX, m_vdsoPC(BX) @@ -298,8 +316,17 @@ noswitch: CALL AX MOVQ 0(SP), AX // sec MOVQ 8(SP), DX // nsec +ret: MOVQ BP, SP // Restore real SP - MOVQ $0, m_vdsoSP(BX) + // Restore vdsoPC, vdsoSP + // We don't worry about being signaled between the two stores. + // If we are not in a signal handler, we'll restore vdsoSP to 0, + // and no one will care about vdsoPC. If we are in a signal handler, + // we cannot receive another signal. + MOVQ 8(SP), CX + MOVQ CX, m_vdsoSP(BX) + MOVQ 0(SP), CX + MOVQ CX, m_vdsoPC(BX) // sec is in AX, nsec in DX // return nsec in AX IMULQ $1000000000, AX @@ -313,15 +340,8 @@ fallback: CALL AX MOVQ 0(SP), AX // sec MOVL 8(SP), DX // usec - MOVQ BP, SP // Restore real SP - MOVQ $0, m_vdsoSP(BX) IMULQ $1000, DX - // sec is in AX, nsec in DX - // return nsec in AX - IMULQ $1000000000, AX - ADDQ DX, AX - MOVQ AX, ret+0(FP) - RET + JMP ret TEXT runtime·rtsigprocmask(SB),NOSPLIT,$0-28 MOVL how+0(FP), DI diff --git a/src/runtime/sys_linux_arm.s b/src/runtime/sys_linux_arm.s index e103da56dc..475f52344c 100644 --- a/src/runtime/sys_linux_arm.s +++ b/src/runtime/sys_linux_arm.s @@ -242,7 +242,7 @@ TEXT runtime·mincore(SB),NOSPLIT,$0 MOVW R0, ret+12(FP) RET -TEXT runtime·walltime1(SB),NOSPLIT,$0-12 +TEXT runtime·walltime1(SB),NOSPLIT,$8-12 // We don't know how much stack space the VDSO code will need, // so switch to g0. @@ -252,6 +252,13 @@ TEXT runtime·walltime1(SB),NOSPLIT,$0-12 MOVW g_m(g), R5 // R5 is unchanged by C code. // Set vdsoPC and vdsoSP for SIGPROF traceback. + // Save the old values on stack and restore them on exit, + // so this function is reentrant. + MOVW m_vdsoPC(R5), R1 + MOVW m_vdsoSP(R5), R2 + MOVW R1, 4(R13) + MOVW R2, 8(R13) + MOVW LR, m_vdsoPC(R5) MOVW R13, m_vdsoSP(R5) @@ -312,8 +319,15 @@ finish: MOVW 12(R13), R2 // nsec MOVW R4, R13 // Restore real SP - MOVW $0, R1 + // Restore vdsoPC, vdsoSP + // We don't worry about being signaled between the two stores. + // If we are not in a signal handler, we'll restore vdsoSP to 0, + // and no one will care about vdsoPC. If we are in a signal handler, + // we cannot receive another signal. + MOVW 8(R13), R1 MOVW R1, m_vdsoSP(R5) + MOVW 4(R13), R1 + MOVW R1, m_vdsoPC(R5) MOVW R0, sec_lo+0(FP) MOVW R1, sec_hi+4(FP) @@ -321,7 +335,7 @@ finish: RET // int64 nanotime1(void) -TEXT runtime·nanotime1(SB),NOSPLIT,$0-8 +TEXT runtime·nanotime1(SB),NOSPLIT,$8-8 // Switch to g0 stack. See comment above in runtime·walltime. // Save old SP. Use R13 instead of SP to avoid linker rewriting the offsets. @@ -330,6 +344,13 @@ TEXT runtime·nanotime1(SB),NOSPLIT,$0-8 MOVW g_m(g), R5 // R5 is unchanged by C code. // Set vdsoPC and vdsoSP for SIGPROF traceback. + // Save the old values on stack and restore them on exit, + // so this function is reentrant. + MOVW m_vdsoPC(R5), R1 + MOVW m_vdsoSP(R5), R2 + MOVW R1, 4(R13) + MOVW R2, 8(R13) + MOVW LR, m_vdsoPC(R5) MOVW R13, m_vdsoSP(R5) @@ -390,8 +411,15 @@ finish: MOVW 12(R13), R2 // nsec MOVW R4, R13 // Restore real SP - MOVW $0, R4 + // Restore vdsoPC, vdsoSP + // We don't worry about being signaled between the two stores. + // If we are not in a signal handler, we'll restore vdsoSP to 0, + // and no one will care about vdsoPC. If we are in a signal handler, + // we cannot receive another signal. + MOVW 8(R13), R4 MOVW R4, m_vdsoSP(R5) + MOVW 4(R13), R4 + MOVW R4, m_vdsoPC(R5) MOVW $1000000000, R3 MULLU R0, R3, (R1, R0) diff --git a/src/runtime/sys_linux_arm64.s b/src/runtime/sys_linux_arm64.s index b23e3b9a11..198a5bacef 100644 --- a/src/runtime/sys_linux_arm64.s +++ b/src/runtime/sys_linux_arm64.s @@ -214,6 +214,13 @@ TEXT runtime·walltime1(SB),NOSPLIT,$24-12 MOVD g_m(g), R21 // R21 = m // Set vdsoPC and vdsoSP for SIGPROF traceback. + // Save the old values on stack and restore them on exit, + // so this function is reentrant. + MOVD m_vdsoPC(R21), R2 + MOVD m_vdsoSP(R21), R3 + MOVD R2, 8(RSP) + MOVD R3, 16(RSP) + MOVD LR, m_vdsoPC(R21) MOVD R20, m_vdsoSP(R21) @@ -269,7 +276,15 @@ finish: MOVD 8(RSP), R5 // nsec MOVD R20, RSP // restore SP - MOVD $0, m_vdsoSP(R21) // clear vdsoSP + // Restore vdsoPC, vdsoSP + // We don't worry about being signaled between the two stores. + // If we are not in a signal handler, we'll restore vdsoSP to 0, + // and no one will care about vdsoPC. If we are in a signal handler, + // we cannot receive another signal. + MOVD 16(RSP), R1 + MOVD R1, m_vdsoSP(R21) + MOVD 8(RSP), R1 + MOVD R1, m_vdsoPC(R21) MOVD R3, sec+0(FP) MOVW R5, nsec+8(FP) @@ -282,6 +297,13 @@ TEXT runtime·nanotime1(SB),NOSPLIT,$24-8 MOVD g_m(g), R21 // R21 = m // Set vdsoPC and vdsoSP for SIGPROF traceback. + // Save the old values on stack and restore them on exit, + // so this function is reentrant. + MOVD m_vdsoPC(R21), R2 + MOVD m_vdsoSP(R21), R3 + MOVD R2, 8(RSP) + MOVD R3, 16(RSP) + MOVD LR, m_vdsoPC(R21) MOVD R20, m_vdsoSP(R21) @@ -337,7 +359,15 @@ finish: MOVD 8(RSP), R5 // nsec MOVD R20, RSP // restore SP - MOVD $0, m_vdsoSP(R21) // clear vdsoSP + // Restore vdsoPC, vdsoSP + // We don't worry about being signaled between the two stores. + // If we are not in a signal handler, we'll restore vdsoSP to 0, + // and no one will care about vdsoPC. If we are in a signal handler, + // we cannot receive another signal. + MOVD 16(RSP), R1 + MOVD R1, m_vdsoSP(R21) + MOVD 8(RSP), R1 + MOVD R1, m_vdsoPC(R21) // sec is in R3, nsec in R5 // return nsec in R3 diff --git a/src/runtime/sys_linux_mips64x.s b/src/runtime/sys_linux_mips64x.s index 6668a0fd86..afad056d06 100644 --- a/src/runtime/sys_linux_mips64x.s +++ b/src/runtime/sys_linux_mips64x.s @@ -214,13 +214,20 @@ TEXT runtime·mincore(SB),NOSPLIT|NOFRAME,$0-28 RET // func walltime1() (sec int64, nsec int32) -TEXT runtime·walltime1(SB),NOSPLIT,$16 +TEXT runtime·walltime1(SB),NOSPLIT,$16-12 MOVV R29, R16 // R16 is unchanged by C code MOVV R29, R1 MOVV g_m(g), R17 // R17 = m // Set vdsoPC and vdsoSP for SIGPROF traceback. + // Save the old values on stack and restore them on exit, + // so this function is reentrant. + MOVV m_vdsoPC(R17), R2 + MOVV m_vdsoSP(R17), R3 + MOVV R2, 8(R29) + MOVV R3, 16(R29) + MOVV R31, m_vdsoPC(R17) MOVV R29, m_vdsoSP(R17) @@ -249,7 +256,15 @@ finish: MOVV 8(R29), R5 // nsec MOVV R16, R29 // restore SP - MOVV R0, m_vdsoSP(R17) // clear vdsoSP + // Restore vdsoPC, vdsoSP + // We don't worry about being signaled between the two stores. + // If we are not in a signal handler, we'll restore vdsoSP to 0, + // and no one will care about vdsoPC. If we are in a signal handler, + // we cannot receive another signal. + MOVV 16(R29), R1 + MOVV R1, m_vdsoSP(R17) + MOVV 8(R29), R1 + MOVV R1, m_vdsoPC(R17) MOVV R3, sec+0(FP) MOVW R5, nsec+8(FP) @@ -260,13 +275,20 @@ fallback: SYSCALL JMP finish -TEXT runtime·nanotime1(SB),NOSPLIT,$16 +TEXT runtime·nanotime1(SB),NOSPLIT,$16-8 MOVV R29, R16 // R16 is unchanged by C code MOVV R29, R1 MOVV g_m(g), R17 // R17 = m // Set vdsoPC and vdsoSP for SIGPROF traceback. + // Save the old values on stack and restore them on exit, + // so this function is reentrant. + MOVV m_vdsoPC(R17), R2 + MOVV m_vdsoSP(R17), R3 + MOVV R2, 8(R29) + MOVV R3, 16(R29) + MOVV R31, m_vdsoPC(R17) MOVV R29, m_vdsoSP(R17) @@ -295,7 +317,15 @@ finish: MOVV 8(R29), R5 // nsec MOVV R16, R29 // restore SP - MOVV R0, m_vdsoSP(R17) // clear vdsoSP + // Restore vdsoPC, vdsoSP + // We don't worry about being signaled between the two stores. + // If we are not in a signal handler, we'll restore vdsoSP to 0, + // and no one will care about vdsoPC. If we are in a signal handler, + // we cannot receive another signal. + MOVV 16(R29), R1 + MOVV R1, m_vdsoSP(R17) + MOVV 8(R29), R1 + MOVV R1, m_vdsoPC(R17) // sec is in R3, nsec in R5 // return nsec in R3 diff --git a/src/runtime/sys_linux_ppc64x.s b/src/runtime/sys_linux_ppc64x.s index 8629fe3233..fd69ee70a5 100644 --- a/src/runtime/sys_linux_ppc64x.s +++ b/src/runtime/sys_linux_ppc64x.s @@ -185,7 +185,7 @@ TEXT runtime·mincore(SB),NOSPLIT|NOFRAME,$0-28 RET // func walltime1() (sec int64, nsec int32) -TEXT runtime·walltime1(SB),NOSPLIT,$16 +TEXT runtime·walltime1(SB),NOSPLIT,$16-12 MOVD R1, R15 // R15 is unchanged by C code MOVD g_m(g), R21 // R21 = m @@ -196,6 +196,13 @@ TEXT runtime·walltime1(SB),NOSPLIT,$16 BEQ fallback // Set vdsoPC and vdsoSP for SIGPROF traceback. + // Save the old values on stack and restore them on exit, + // so this function is reentrant. + MOVD m_vdsoPC(R21), R4 + MOVD m_vdsoSP(R21), R5 + MOVD R4, 32(R1) + MOVD R5, 40(R1) + MOVD LR, R14 MOVD R14, m_vdsoPC(R21) MOVD R15, m_vdsoSP(R21) @@ -214,11 +221,20 @@ noswitch: MOVD R1, R4 BL (CTR) // Call from VDSO MOVD $0, R0 // Restore R0 - MOVD R0, m_vdsoSP(R21) // Clear vdsoSP MOVD 0(R1), R3 // sec MOVD 8(R1), R5 // nsec MOVD R15, R1 // Restore SP + // Restore vdsoPC, vdsoSP + // We don't worry about being signaled between the two stores. + // If we are not in a signal handler, we'll restore vdsoSP to 0, + // and no one will care about vdsoPC. If we are in a signal handler, + // we cannot receive another signal. + MOVD 40(R1), R6 + MOVD R6, m_vdsoSP(R21) + MOVD 32(R1), R6 + MOVD R6, m_vdsoPC(R21) + finish: MOVD R3, sec+0(FP) MOVW R5, nsec+8(FP) @@ -232,7 +248,7 @@ fallback: MOVD 40(R1), R5 JMP finish -TEXT runtime·nanotime1(SB),NOSPLIT,$16 +TEXT runtime·nanotime1(SB),NOSPLIT,$16-8 MOVD $1, R3 // CLOCK_MONOTONIC MOVD R1, R15 // R15 is unchanged by C code @@ -243,6 +259,13 @@ TEXT runtime·nanotime1(SB),NOSPLIT,$16 BEQ fallback // Set vdsoPC and vdsoSP for SIGPROF traceback. + // Save the old values on stack and restore them on exit, + // so this function is reentrant. + MOVD m_vdsoPC(R21), R4 + MOVD m_vdsoSP(R21), R5 + MOVD R4, 32(R1) + MOVD R5, 40(R1) + MOVD LR, R14 // R14 is unchanged by C code MOVD R14, m_vdsoPC(R21) MOVD R15, m_vdsoSP(R21) @@ -261,11 +284,20 @@ noswitch: MOVD R1, R4 BL (CTR) // Call from VDSO MOVD $0, R0 // Restore R0 - MOVD $0, m_vdsoSP(R21) // Clear vdsoSP MOVD 0(R1), R3 // sec MOVD 8(R1), R5 // nsec MOVD R15, R1 // Restore SP + // Restore vdsoPC, vdsoSP + // We don't worry about being signaled between the two stores. + // If we are not in a signal handler, we'll restore vdsoSP to 0, + // and no one will care about vdsoPC. If we are in a signal handler, + // we cannot receive another signal. + MOVD 40(R1), R6 + MOVD R6, m_vdsoSP(R21) + MOVD 32(R1), R6 + MOVD R6, m_vdsoPC(R21) + finish: // sec is in R3, nsec in R5 // return nsec in R3 -- 2.48.1