| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852 |
- +++++++++++
- Python News
- +++++++++++
- What's New in Python 3.7.7 final?
- =================================
- *Release date: 2020-03-10*
- Library
- -------
- - bpo-13487: Avoid a possible *"RuntimeError: dictionary changed size during
- iteration"* from :func:`inspect.getmodule` when it tried to loop through
- :attr:`sys.modules`.
- Documentation
- -------------
- - bpo-17422: The language reference no longer restricts default class
- namespaces to dicts only.
- What's New in Python 3.7.7 release candidate 1?
- ===============================================
- *Release date: 2020-03-04*
- Security
- --------
- - bpo-39401: Avoid unsafe load of ``api-ms-win-core-path-l1-1-0.dll`` at
- startup on Windows 7.
- Core and Builtins
- -----------------
- - bpo-39776: Fix race condition where threads created by PyGILState_Ensure()
- could get a duplicate id.
- This affects consumers of tstate->id like the contextvar caching
- machinery, which could return invalid cached objects under heavy thread
- load (observed in embedded scenarios).
- - bpo-39778: Fixed a crash due to incorrect handling of weak references in
- ``collections.OrderedDict`` classes. Patch by Pablo Galindo.
- - bpo-39382: Fix a use-after-free in the single inheritance path of
- ``issubclass()``, when the ``__bases__`` of an object has a single
- reference, and so does its first item. Patch by Yonatan Goldschmidt.
- - bpo-39606: Fix regression caused by fix for bpo-39386, that prevented
- calling ``aclose`` on an async generator that had already been closed or
- exhausted.
- - bpo-39510: Fix segfault in ``readinto()`` method on closed BufferedReader.
- - bpo-39453: Fixed a possible crash in :meth:`list.__contains__` when a list
- is changed during comparing items. Patch by Dong-hee Na.
- - bpo-39427: Document all possibilities for the ``-X`` options in the
- command line help section. Patch by Pablo Galindo.
- - bpo-39421: Fix possible crashes when operating with the functions in the
- :mod:`heapq` module and custom comparison operators.
- - bpo-39386: Prevent double awaiting of async iterator.
- - bpo-38588: Fix possible crashes in dict and list when calling
- :c:func:`PyObject_RichCompareBool`.
- - bpo-39031: When parsing an "elif" node, lineno and col_offset of the node
- now point to the "elif" keyword and not to its condition, making it
- consistent with the "if" node. Patch by Lysandros Nikolaou.
- - bpo-38610: Fix possible crashes in several list methods by holding strong
- references to list elements when calling
- :c:func:`PyObject_RichCompareBool`.
- Library
- -------
- - bpo-39794: Add --without-decimal-contextvar build option. This enables a
- thread-local rather than a coroutine local context.
- - bpo-39769: The :func:`compileall.compile_dir` function's *ddir* parameter
- and the compileall command line flag `-d` no longer write the wrong
- pathname to the generated pyc file for submodules beneath the root of the
- directory tree being compiled. This fixes a regression introduced with
- Python 3.5.
- - bpo-30566: Fix :exc:`IndexError` when trying to decode an invalid string
- with punycode codec.
- - bpo-39649: Remove obsolete check for `__args__` in
- bdb.Bdb.format_stack_entry.
- - bpo-27657: The original fix for bpo-27657, "Fix urlparse() with numeric
- paths" (GH-16839) included in 3.7.6, inadvertently introduced a behavior
- change that broke several third-party packages relying on the original
- undefined parsing behavior. The change is reverted in 3.7.7, restoring the
- behavior of 3.7.5 and earlier releases.
- - bpo-21016: The :mod:`pydoc` and :mod:`trace` modules now use the
- :mod:`sysconfig` module to get the path to the Python standard library, to
- support uncommon installation path like ``/usr/lib64/python3.9/`` on
- Fedora. Patch by Jan Matějek.
- - bpo-39548: Fix handling of header in
- :class:`urllib.request.AbstractDigestAuthHandler` when the optional
- ``qop`` parameter is not present.
- - bpo-39450: Striped whitespace from docstring before returning it from
- :func:`unittest.case.shortDescription`.
- - bpo-39493: Mark ``typing.IO.closed`` as a property
- - bpo-39485: Fix a bug in :func:`unittest.mock.create_autospec` that would
- complain about the wrong number of arguments for custom descriptors
- defined in an extension module returning functions.
- - bpo-39430: Fixed race condition in lazy imports in :mod:`tarfile`.
- - bpo-39389: Write accurate compression level metadata in :mod:`gzip`
- archives, rather than always signaling maximum compression.
- - bpo-39274: ``bool(fraction.Fraction)`` now returns a boolean even if
- (numerator != 0) does not return a boolean (ex: numpy number).
- - bpo-39242: Updated the Gmane domain from news.gmane.org to news.gmane.io
- which is used for examples of :class:`~nntplib.NNTP` news reader server
- and nntplib tests.
- - bpo-39152: Fix ttk.Scale.configure([name]) to return configuration tuple
- for name or all options. Giovanni Lombardo contributed part of the patch.
- - bpo-39198: If an exception were to be thrown in `Logger.isEnabledFor`
- (say, by asyncio timeouts or stopit) , the `logging` global lock may not
- be released appropriately, resulting in deadlock. This change wraps that
- block of code with `try...finally` to ensure the lock is released.
- - bpo-39191: Perform a check for running loop before starting a new task in
- ``loop.run_until_complete()`` to fail fast; it prevents the side effect of
- new task spawning before exception raising.
- - bpo-38871: Correctly parenthesize filter-based statements that contain
- lambda expressions in mod:`lib2to3`. Patch by Dong-hee Na.
- - bpo-39142: A change was made to logging.config.dictConfig to avoid
- converting instances of named tuples to ConvertingTuple. It's assumed that
- named tuples are too specialised to be treated like ordinary tuples; if a
- user of named tuples requires ConvertingTuple functionality, they will
- have to implement that themselves in their named tuple class.
- - bpo-38971: Open issue in the BPO indicated a desire to make the
- implementation of codecs.open() at parity with io.open(), which implements
- a try/except to assure file stream gets closed before an exception is
- raised.
- - bpo-39057: :func:`urllib.request.proxy_bypass_environment` now ignores
- leading dots and no longer ignores a trailing newline.
- - bpo-39056: Fixed handling invalid warning category in the -W option. No
- longer import the re module if it is not needed.
- - bpo-39055: :func:`base64.b64decode` with ``validate=True`` raises now a
- binascii.Error if the input ends with a single ``\n``.
- - bpo-38878: Fixed __subclasshook__ of :class:`os.PathLike` to return a
- correct result upon inheritence. Patch by Bar Harel.
- - bpo-35182: Fixed :func:`Popen.communicate` subsequent call crash when the
- child process has already closed any piped standard stream, but still
- continues to be running. Patch by Andriy Maletsky.
- - bpo-38473: Use signature from inner mock for autospecced methods attached
- with :func:`unittest.mock.attach_mock`. Patch by Karthikeyan Singaravelan.
- - bpo-38293: Add :func:`copy.copy` and :func:`copy.deepcopy` support to
- :func:`property` objects.
- - bpo-37953: In :mod:`typing`, improved the ``__hash__`` and ``__eq__``
- methods for :class:`ForwardReferences`.
- - bpo-36406: Handle namespace packages in :mod:`doctest`. Patch by
- Karthikeyan Singaravelan.
- Documentation
- -------------
- - bpo-13790: Change 'string' to 'specification' in format doc.
- - bpo-39530: Fix misleading documentation about mixed-type numeric
- comparisons.
- - bpo-17422: The language reference now specifies restrictions on class
- namespaces. Adapted from a patch by Ethan Furman.
- - bpo-39654: In pyclbr doc, update 'class' to 'module' where appropriate and
- add readmodule comment. Patch by Hakan Çelik.
- - bpo-39392: Explain that when filling with turtle, overlap regions may be
- left unfilled.
- - bpo-39381: Mention in docs that :func:`asyncio.get_event_loop` implicitly
- creates new event loop only if called from the main thread.
- - bpo-38918: Add an entry for ``__module__`` in the "function" & "method"
- sections of the `inspect docs types and members table
- <https://docs.python.org/3/library/inspect.html#types-and-members>`_
- - bpo-3530: In the :mod:`ast` module documentation, fix a misleading
- ``NodeTransformer`` example and add advice on when to use the
- ``fix_missing_locations`` function.
- Tests
- -----
- - bpo-38546: Fix test_ressources_gced_in_workers() of
- test_concurrent_futures: explicitly stop the manager to prevent leaking a
- child process running in the background after the test completes.
- Build
- -----
- - bpo-39144: The ctags and etags build targets both include Modules/_ctypes
- and Python standard library source files.
- Windows
- -------
- - bpo-38597: :mod:`distutils` will no longer statically link
- :file:`vcruntime140.dll` when a redistributable version is unavailable.
- All future releases of CPython will include a copy of this DLL to ensure
- distributed extensions can continue to load.
- - bpo-38380: Update Windows builds to use SQLite 3.31.1
- - bpo-39439: Reduce overhead when using multiprocessing in a Windows virtual
- environment
- - bpo-39185: The build.bat script has additional options for very-quiet
- output (-q) and very-verbose output (-vv)
- macOS
- -----
- - bpo-38380: Update macOS builds to use SQLite 3.31.1
- IDLE
- ----
- - bpo-39781: Selecting code context lines no longer causes a jump.
- - bpo-39663: Add tests for pyparse find_good_parse_start().
- - bpo-39600: In the font configuration window, remove duplicated font names.
- - bpo-30780: Add remaining configdialog tests for buttons and highlights and
- keys tabs.
- - bpo-39388: IDLE Settings Cancel button now cancels pending changes
- - bpo-39050: Make IDLE Settings dialog Help button work again.
- - bpo-34118: Tag memoryview, range, and tuple as classes, the same as list,
- etcetera, in the library manual built-in functions list.
- - bpo-38792: Close an IDLE shell calltip if a :exc:`KeyboardInterrupt` or
- shell restart occurs. Patch by Zackery Spytz.
- - bpo-32989: Add tests for editor newline_and_indent_event method. Remove
- dead code from pyparse find_good_parse_start method.
- What's New in Python 3.7.6 final?
- =================================
- *Release date: 2019-12-18*
- macOS
- -----
- - bpo-38295: Prevent failure of test_relative_path in test_py_compile on
- macOS Catalina.
- What's New in Python 3.7.6 release candidate 1?
- ===============================================
- *Release date: 2019-12-11*
- Security
- --------
- - bpo-38945: Newline characters have been escaped when performing uu
- encoding to prevent them from overflowing into to content section of the
- encoded file. This prevents malicious or accidental modification of data
- during the decoding process.
- - bpo-37228: Due to significant security concerns, the *reuse_address*
- parameter of :meth:`asyncio.loop.create_datagram_endpoint` is no longer
- supported. This is because of the behavior of ``SO_REUSEADDR`` in UDP. For
- more details, see the documentation for
- ``loop.create_datagram_endpoint()``. (Contributed by Kyle Stanley, Antoine
- Pitrou, and Yury Selivanov in :issue:`37228`.)
- - bpo-38804: Fixes a ReDoS vulnerability in :mod:`http.cookiejar`. Patch by
- Ben Caller.
- Core and Builtins
- -----------------
- - bpo-38673: In REPL mode, don't switch to PS2 if the line starts with
- comment or whitespace. Based on work by Batuhan Taşkaya.
- - bpo-38535: Fixed line numbers and column offsets for AST nodes for calls
- without arguments in decorators.
- - bpo-38379: When cyclic garbage collection (gc) runs finalizers that
- resurrect unreachable objects, the current gc run ends, without collecting
- any cyclic trash. However, the statistics reported by ``collect()`` and
- ``get_stats()`` claimed that all cyclic trash found was collected, and
- that the resurrected objects were collected. Changed the stats to report
- that none were collected.
- - bpo-35409: Ignore GeneratorExit exceptions when throwing an exception into
- the aclose coroutine of an asynchronous generator.
- Library
- -------
- - bpo-39006: Fix asyncio when the ssl module is missing: only check for
- ssl.SSLSocket instance if the ssl module is available.
- - bpo-38979: Return class from ``ContextVar.__class_getitem__`` to simplify
- subclassing.
- - bpo-38986: Make repr of C accelerated TaskWakeupMethWrapper the same as of
- pure Python version.
- - bpo-33684: Fix ``json.tool`` failed to read a JSON file with non-ASCII
- characters when locale encoding is not UTF-8.
- - bpo-26730: Fix ``SpooledTemporaryFile.rollover()`` might corrupt the file
- when it is in text mode. Patch by Serhiy Storchaka.
- - bpo-37838: :meth:`typing.get_type_hints` properly handles functions
- decorated with :meth:`functools.wraps`.
- - bpo-38821: Fix unhandled exceptions in :mod:`argparse` when
- internationalizing error messages for arguments with ``nargs`` set to
- special (non-integer) values. Patch by Federico Bond.
- - bpo-38820: Make Python compatible with OpenSSL 3.0.0.
- :func:`ssl.SSLSocket.getpeercert` no longer returns IPv6 addresses with a
- trailing new line.
- - bpo-38785: Prevent asyncio from crashing if parent ``__init__`` is not
- called from a constructor of object derived from ``asyncio.Future``.
- - bpo-27805: Allow opening pipes and other non-seekable files in append mode
- with :func:`open`.
- - bpo-38686: Added support for multiple ``qop`` values in
- :class:`urllib.request.AbstractDigestAuthHandler`.
- - bpo-38334: Fixed seeking backward on an encrypted
- :class:`zipfile.ZipExtFile`.
- - bpo-31202: The case the result of :func:`pathlib.WindowsPath.glob` matches
- now the case of the pattern for literal parts.
- - bpo-38109: Add missing :data:`stat.S_IFDOOR`, :data:`stat.S_IFPORT`,
- :data:`stat.S_IFWHT`, :func:`stat.S_ISDOOR`, :func:`stat.S_ISPORT`, and
- :func:`stat.S_ISWHT` values to the Python implementation of :mod:`stat`.
- - bpo-38422: Clarify docstrings of pathlib suffix(es)
- - bpo-38405: Nested subclasses of :class:`typing.NamedTuple` are now
- pickleable.
- - bpo-38332: Prevent :exc:`KeyError` thrown by :func:`_encoded_words.decode`
- when given an encoded-word with invalid content-type encoding from
- propagating all the way to :func:`email.message.get`.
- - bpo-38341: Add :exc:`smtplib.SMTPNotSupportedError` to the :mod:`smtplib`
- exported names.
- - bpo-13153: OS native encoding is now used for converting between Python
- strings and Tcl objects. This allows to display, copy and paste to
- clipboard emoji and other non-BMP characters. Converting strings from Tcl
- to Python and back now never fails (except MemoryError).
- - bpo-36993: Improve error reporting for corrupt zip files with bad zip64
- extra data. Patch by Daniel Hillier.
- - bpo-36952: Starting with Python 3.3, importing ABCs from
- :mod:`collections` is deprecated, and import should be done from
- :mod:`collections.abc`. Still being able to import from :mod:`collections`
- was marked for removal in 3.8, but has been delayed to 3.9; documentation
- and ``DeprecationWarning`` clarified.
- - bpo-36820: Break cycle generated when saving an exception in socket.py,
- codeop.py and dyld.py as they keep alive not only the exception but user
- objects through the ``__traceback__`` attribute. Patch by Mario Corchero.
- - bpo-34776: Fix dataclasses to support forward references in type
- annotations
- - bpo-33348: lib2to3 now recognizes expressions after ``*`` and `**` like in
- ``f(*[] or [])``.
- - bpo-27657: Fix urllib.parse.urlparse() with numeric paths. A string like
- "path:80" is no longer parsed as a path but as a scheme ("path") and a
- path ("80").
- Documentation
- -------------
- - bpo-38351: Modernize :mod:`email` examples from %-formatting to f-strings.
- - bpo-38592: Add Brazilian Portuguese to the language switcher at Python
- Documentation website.
- - bpo-38294: Add list of no-longer-escaped chars to re.escape documentation
- Tests
- -----
- - bpo-38547: Fix test_pty: if the process is the session leader, closing the
- master file descriptor raises a SIGHUP signal: simply ignore SIGHUP when
- running the tests.
- - bpo-38965: Fix test_faulthandler on GCC 10. Use the "volatile" keyword in
- ``faulthandler._stack_overflow()`` to prevent tail call optimization on
- any compiler, rather than relying on compiler specific pragma.
- - bpo-38669: Raise :exc:`TypeError` when passing target as a string with
- :meth:`unittest.mock.patch.object`.
- - bpo-35998: Fix a race condition in test_asyncio.test_start_tls_server_1().
- Previously, there was a race condition between the test main() function
- which replaces the protocol and the test ServerProto protocol which sends
- ANSWER once it gets HELLO. Now, only the test main() function is
- responsible to send data, ServerProto no longer sends data.
- - bpo-37531: On timeout, regrtest no longer attempts to call
- ``popen.communicate()`` again: it can hang until all child processes using
- stdout and stderr pipes completes. Kill the worker process and ignores its
- output. Change also the faulthandler timeout of the main process from 1
- minute to 5 minutes, for Python slowest buildbots.
- Build
- -----
- - bpo-37404: :mod:`asyncio` now raises :exc:`TyperError` when calling
- incompatible methods with an :class:`ssl.SSLSocket` socket. Patch by Ido
- Michael.
- - bpo-38809: On Windows, build scripts will now recognize and use python.exe
- from an active virtual env.
- - bpo-37415: Fix stdatomic.h header check for ICC compiler: the ICC
- implementation lacks atomic_uintptr_t type which is needed by Python.
- Windows
- -------
- - bpo-38589: Fixes HTML Help shortcut when Windows is not installed to C
- drive
- IDLE
- ----
- - bpo-38944: Excape key now closes IDLE completion windows. Patch by Johnny
- Najera.
- - bpo-38943: Fix IDLE autocomplete windows not always appearing on some
- systems. Patch by Johnny Najera.
- - bpo-38862: 'Strip Trailing Whitespace' on the Format menu removes extra
- newlines at the end of non-shell files.
- - bpo-26353: Stop adding newline when saving an IDLE shell window.
- - bpo-38636: Fix IDLE Format menu tab toggle and file indent width. These
- functions (default shortcuts Alt-T and Alt-U) were mistakenly disabled in
- 3.7.5 and 3.8.0.
- - bpo-4630: Add an option to toggle IDLE's cursor blink for shell, editor,
- and output windows. See Settings, General, Window Preferences, Cursor
- Blink. Patch by Zachary Spytz.
- - bpo-38598: Do not try to compile IDLE shell or output windows
- - bpo-36698: IDLE no longer fails when write non-encodable characters to
- stderr. It now escapes them with a backslash, as the regular Python
- interpreter. Added the ``errors`` field to the standard streams.
- Tools/Demos
- -----------
- - bpo-38118: Update Valgrind suppression file to ignore a false alarm in
- :c:func:`PyUnicode_Decode` when using GCC builtin strcmp().
- - bpo-38347: pathfix.py: Assume all files that end on '.py' are Python
- scripts when working recursively.
- C API
- -----
- - bpo-38540: Fixed possible leak in :c:func:`PyArg_Parse` and similar
- functions for format units ``"es#"`` and ``"et#"`` when the macro
- :c:macro:`PY_SSIZE_T_CLEAN` is not defined.
- - bpo-38395: Fix a crash in :class:`weakref.proxy` objects due to incorrect
- lifetime management when calling some associated methods that may delete
- the last reference to object being referenced by the proxy. Patch by Pablo
- Galindo.
- What's New in Python 3.7.5 final?
- =================================
- *Release date: 2019-10-14*
- Library
- -------
- - bpo-38368: Prevent ctypes crash when handling arrays in structs/unions.
- - bpo-38449: Revert GH-15522, which introduces a regression in
- :meth:`mimetypes.guess_type` due to improper handling of filenames as
- urls.
- Windows
- -------
- - bpo-38344: Fix syntax in activate.bat.
- What's New in Python 3.7.5 release candidate 1?
- ===============================================
- *Release date: 2019-10-01*
- Security
- --------
- - bpo-38243: Escape the server title of
- :class:`xmlrpc.server.DocXMLRPCServer` when rendering the document page as
- HTML. (Contributed by Dong-hee Na in :issue:`38243`.)
- - bpo-38174: Update vendorized expat library version to 2.2.8, which
- resolves CVE-2019-15903.
- - bpo-37764: Fixes email._header_value_parser.get_unstructured going into an
- infinite loop for a specific case in which the email header does not have
- trailing whitespace, and the case in which it contains an invalid encoded
- word. Patch by Ashwin Ramaswami.
- - bpo-37461: Fix an infinite loop when parsing specially crafted email
- headers. Patch by Abhilash Raj.
- - bpo-34155: Fix parsing of invalid email addresses with more than one ``@``
- (e.g. a@b@c.com.) to not return the part before 2nd ``@`` as valid email
- address. Patch by maxking & jpic.
- Core and Builtins
- -----------------
- - bpo-36871: Improve error handling for the assert_has_calls method of
- mocks. Fixed a bug where any errors encountered while binding the expected
- calls to the mock's spec were silently swallowed, leading to misleading
- error output.
- - bpo-38013: Allow to call ``async_generator_athrow().throw(...)`` even for
- non-started async generator helper. It fixes annoying warning at the end
- of :func:`asyncio.run` call.
- - bpo-38124: Fix an off-by-one error in PyState_AddModule that could cause
- out-of-bounds memory access.
- - bpo-36946: Fix possible signed integer overflow when handling slices.
- Patch by hongweipeng.
- - bpo-37409: Ensure explicit relative imports from interactive sessions and
- scripts (having no parent package) always raise ImportError, rather than
- treating the current module as the package. Patch by Ben Lewis.
- - bpo-36311: Decoding bytes objects larger than 2GiB is faster and no longer
- fails when a multibyte characters spans a chunk boundary.
- - bpo-37467: Fix :func:`sys.excepthook` and :c:func:`PyErr_Display` if a
- filename is a bytes string. For example, for a SyntaxError exception where
- the filename attribute is a bytes string.
- - bpo-37417: :meth:`bytearray.extend` now correctly handles errors that
- arise during iteration. Patch by Brandt Bucher.
- - bpo-20523: ``pdb.Pdb`` supports ~/.pdbrc in Windows 7. Patch by Tim Hopper
- and Dan Lidral-Porter.
- Library
- -------
- - bpo-38019: Correctly handle pause/resume reading of closed asyncio unix
- pipe.
- - bpo-38216: Allow the rare code that wants to send invalid http requests
- from the `http.client` library a way to do so. The fixes for bpo-30458
- led to breakage for some projects that were relying on this ability to
- test their own behavior in the face of bad requests.
- - bpo-38191: Constructor of :class:`~typing.NamedTuple` type now accepts
- arbitrary keyword argument names, including "cls", "self", "typename" and
- "fields".
- - bpo-38185: Fixed case-insensitive string comparison in
- :class:`sqlite3.Row` indexing.
- - bpo-38175: Fix a memory leak in comparison of :class:`sqlite3.Row`
- objects.
- - bpo-33936: _hashlib no longer calls obsolete OpenSSL initialization
- function with OpenSSL 1.1.0+.
- - bpo-34706: Preserve subclassing in inspect.Signature.from_callable.
- - bpo-38059: inspect.py now uses sys.exit() instead of exit()
- - bpo-38006: weakref.WeakValueDictionary defines a local remove() function
- used as callback for weak references. This function was created with a
- closure. Modify the implementation to avoid the closure.
- - bpo-34410: Fixed a crash in the :func:`tee` iterator when re-enter it.
- RuntimeError is now raised in this case.
- - bpo-37965: Fix C compiler warning caused by
- distutils.ccompiler.CCompiler.has_function.
- - bpo-36205: Fix the rusage implementation of time.process_time() to
- correctly report the sum of the system and user CPU time.
- - bpo-22347: Update mimetypes.guess_type to allow proper parsing of URLs
- with only a host name. Patch by Dong-hee Na.
- - bpo-37950: Fix :func:`ast.dump` when call with incompletely initialized
- node.
- - bpo-37915: Fix a segmentation fault that appeared when comparing instances
- of ``datetime.timezone`` and ``datetime.tzinfo`` objects. Patch by Pablo
- Galindo.
- - bpo-37885: venv: Don't generate unset variable warning on deactivate.
- - bpo-37868: Fix dataclasses.is_dataclass when given an instance that never
- raises AttributeError in __getattr__. That is, an object that returns
- something for __dataclass_fields__ even if it's not a dataclass.
- - bpo-37811: Fix ``socket`` module's ``socket.connect(address)`` function
- being unable to establish connection in case of interrupted system call.
- The problem was observed on all OSes which ``poll(2)`` system call can
- take only non-negative integers and -1 as a timeout value.
- - bpo-21131: Fix ``faulthandler.register(chain=True)`` stack. faulthandler
- now allocates a dedicated stack of ``SIGSTKSZ*2`` bytes, instead of just
- ``SIGSTKSZ`` bytes. Calling the previous signal handler in faulthandler
- signal handler uses more than ``SIGSTKSZ`` bytes of stack memory on some
- platforms.
- - bpo-34621: Fixed unpickle-ability in older Python versions (<3.7) of UUID
- objects with ``is_safe`` set to ``SafeUUID.unknown``.
- - bpo-37738: Fix the implementation of curses ``addch(str, color_pair)``:
- pass the color pair to ``setcchar()``, instead of always passing 0 as the
- color pair.
- - bpo-37723: Fix performance regression on regular expression parsing with
- huge character sets. Patch by Yann Vaginay.
- - bpo-32178: Fix IndexError in :mod:`email` package when trying to parse
- invalid address fields starting with ``:``.
- - bpo-37685: Fixed comparisons of :class:`datetime.timedelta` and
- :class:`datetime.timezone`.
- - bpo-37695: Correct :func:`curses.unget_wch` error message. Patch by
- Anthony Sottile.
- - bpo-29553: Fixed :meth:`argparse.ArgumentParser.format_usage` for mutually
- exclusive groups. Patch by Andrew Nester.
- - bpo-37664: Update wheels bundled with ensurepip (pip 19.2.3 and setuptools
- 41.2.0)
- - bpo-37642: Allowed the pure Python implementation of
- :class:`datetime.timezone` to represent sub-minute offsets close to
- minimum and maximum boundaries, specifically in the ranges (23:59, 24:00)
- and (-23:59, 24:00). Patch by Ngalim Siregar
- - bpo-37491: Fix ``IndexError`` when parsing email headers with unexpectedly
- ending bare-quoted string value. Patch by Abhilash Raj.
- - bpo-18378: Recognize "UTF-8" as a valid value for LC_CTYPE in
- locale._parse_localename.
- - bpo-37579: Return :exc:`NotImplemented` in Python implementation of
- ``__eq__`` for :class:`~datetime.timedelta` and :class:`~datetime.time`
- when the other object being compared is not of the same type to match C
- implementation. Patch by Karthikeyan Singaravelan.
- - bpo-21478: Record calls to parent when autospecced object is attached to a
- mock using :func:`unittest.mock.attach_mock`. Patch by Karthikeyan
- Singaravelan.
- - bpo-37531: "python3 -m test -jN --timeout=TIMEOUT" now kills a worker
- process if it runs longer than *TIMEOUT* seconds.
- - bpo-37482: Fix serialization of display name in originator or destination
- address fields with both encoded words and special chars.
- - bpo-37424: Fixes a possible hang when using a timeout on
- `subprocess.run()` while capturing output. If the child process spawned
- its own children or otherwise connected its stdout or stderr handles with
- another process, we could hang after the timeout was reached and our child
- was killed when attempting to read final output from the pipes.
- - bpo-37421: Fix :func:`multiprocessing.util.get_temp_dir` finalizer: clear
- also the 'tempdir' configuration of the current process, so next call to
- ``get_temp_dir()`` will create a new temporary directory, rather than
- reusing the removed temporary directory.
- - bpo-37420: :func:`os.sched_setaffinity` now correctly handles errors that
- arise during iteration over its ``mask`` argument. Patch by Brandt Bucher.
- - bpo-29412: Fix IndexError in parsing a header value ending unexpectedly.
- Patch by Abhilash Raj.
- - bpo-37372: Fix error unpickling datetime.time objects from Python 2 with
- seconds>=24. Patch by Justin Blanchard.
- - bpo-27860: Fix ``IPv4Interface`` and ``IPv6Interface`` didn't accept
- string mask when the argument is tuple.
- - bpo-33972: Email with single part but content-type set to ``multipart/*``
- doesn't raise AttributeError anymore.
- - bpo-21872: Fix :mod:`lzma`: module decompresses data incompletely. When
- decompressing a FORMAT_ALONE format file, and it doesn't have the end
- marker, sometimes the last one to dozens bytes can't be output. Patch by
- Ma Lin.
- - bpo-12144: Ensure cookies with ``expires`` attribute are handled in
- :meth:`CookieJar.make_cookies`.
- - bpo-37163: :func:`dataclasses.replace` now supports the field named "obj".
- - bpo-36871: Ensure method signature is used instead of constructor
- signature of a class while asserting mock object against method calls.
- Patch by Karthikeyan Singaravelan.
- - bpo-36564: Fix infinite loop in email header folding logic that would be
- triggered when an email policy's max_line_length is not long enough to
- include the required markup and any values in the message. Patch by Paul
- Ganssle
- - bpo-35168: :attr:`shlex.shlex.punctuation_chars` is now a read-only
- property.
- - bpo-20504: Fixes a bug in :mod:`cgi` module when a multipart/form-data
- request has no `Content-Length` header.
- - bpo-4963: Fixed non-deterministic behavior related to mimetypes extension
- mapping and module reinitialization.
- Documentation
- -------------
- - bpo-26868: Fix example usage of :c:func:`PyModule_AddObject` to properly
- handle errors.
- - bpo-37979: Added a link to dateutil.parser.isoparse in the
- datetime.fromisoformat documentation. Patch by Paul Ganssle
- - bpo-37937: Mention ``frame.f_trace`` in :func:`sys.settrace` docs.
- - bpo-37726: Stop recommending getopt in the tutorial for command line
- argument parsing and promote argparse.
- - bpo-32910: Remove implementation-specific behaviour of how venv's
- Deactivate works.
- - bpo-37256: Fix wording of arguments for :class:`Request` in
- :mod:`urllib.request`
- - bpo-37284: Add a brief note to indicate that any new
- ``sys.implementation`` required attributes must go through the PEP
- process.
- - bpo-30088: Documented that :class:`mailbox.Maildir` constructor doesn't
- attempt to verify the maildir folder layout correctness. Patch by
- Sviatoslav Sydorenko.
- - bpo-37487: Fix PyList_GetItem index description to include 0.
- - bpo-37478: Added possible exceptions to the description of os.chdir().
- - bpo-37004: In the documentation for difflib, a note was added explicitly
- warning that the results of SequenceMatcher's ratio method may depend on
- the order of the input strings.
- - bpo-35803: Document and test that ``tempfile`` functions may accept a
- :term:`path-like object` for the ``dir`` argument. Patch by Anthony
- Sottile.
- - bpo-34293: Fix the Doc/Makefile regarding PAPER environment variable and
- PDF builds
- Tests
- -----
- - bpo-38239: Fix test_gdb for Link Time Optimization (LTO) builds.
- - bpo-38275: test_ssl now handles disabled TLS/SSL versions better.
- OpenSSL's crypto policy and run-time settings are recognized and tests for
- disabled versions are skipped. Tests also accept more TLS minimum_versions
- for platforms that override OpenSSL's default with strict settings.
- - bpo-38271: The private keys for test_ssl were encrypted with 3DES in
- traditional PKCS#5 format. 3DES and the digest algorithm of PKCS#5 are
- blocked by some strict crypto policies. Use PKCS#8 format with AES256
- encryption instead.
- - bpo-37123: Multiprocessing test test_mymanager() now also expects
- -SIGTERM, not only exitcode 0. BaseManager._finalize_manager() sends
- SIGTERM to the manager process if it takes longer than 1 second to stop,
- which happens on slow buildbots.
- - bpo-38212: Multiprocessing tests: increase
- test_queue_feeder_donot_stop_onexc() timeout from 1 to 60 seconds.
- - bpo-38117: Test with OpenSSL 1.1.1d
- - bpo-37805: Add tests for json.dump(..., skipkeys=True). Patch by Dong-hee
- Na.
- - bpo-37531: Enhance regrtest multiprocess timeout: write a message when
- killing a worker process, catch popen.kill() and popen.wait() exceptions,
- put a timeout on the second call to popen.communicate().
- - bpo-37335: Improve locale coercion tests by using codec lookup instead of
- more fragile replace().
- - bpo-37411: Fix test_wsgiref.testEnviron() to no longer depend on the
- environment variables (don't fail if "X" variable is set).
- - bpo-37400: Fix test_os.test_chown(): use os.getgroups() rather than
- grp.getgrall() to get groups. Rename also the test to test_chown_gid().
- - bpo-37359: Add --cleanup option to python3 -m test to remove
- ``test_python_*`` directories of previous failed jobs. Add "make
- cleantest" to run ``python3 -m test --cleanup``.
- - bpo-37362: test_gdb no longer fails if it gets an "unexpected" message on
- stderr: it now ignores stderr. The purpose of test_gdb is to test that
- python-gdb.py commands work as expected, not to test gdb.
- - bpo-36919: Make ``test_source_encoding.test_issue2301`` implementation
- independent. The test will work now for both CPython and IronPython.
- - bpo-34720: Assert m_state != NULL to mimic GC traversal functions that do
- not correctly handle module creation when the module state has not been
- created.
- - bpo-34347: Fix ``test_utf8_mode.test_cmd_line`` for AIX. Patch by M. Felt
- Build
- -----
- - bpo-38301: In Solaris family, we must be sure to use ``-D_REENTRANT``.
- Patch by Jesús Cea Avión.
- - bpo-36002: Locate ``llvm-profdata`` and ``llvm-ar`` binaries using
- ``AC_PATH_TOOL`` rather than ``AC_PATH_TARGET_TOOL``.
- - bpo-37936: The :file:`.gitignore` file no longer applies to any files that
- are in fact tracked in the Git repository. Patch by Greg Price.
- Windows
- -------
- - bpo-38117: Update bundled OpenSSL to 1.1.1d
- - bpo-36634: venv activate.bat now works when the existing variables contain
- double quote characters.
- - bpo-38087: Fix case sensitivity in test_pathlib and test_ntpath.
- - bpo-38088: Fixes distutils not finding vcruntime140.dll with only the v142
- toolset installed.
- - bpo-37283: Ensure command-line and unattend.xml setting override
- previously detected states in Windows installer.
- - bpo-37705: Improve the implementation of ``winerror_to_errno()``.
- - bpo-37549: :func:`os.dup` no longer fails for standard streams on Windows
- 7.
- - bpo-37702: Fix memory leak on Windows in creating an SSLContext object or
- running urllib.request.urlopen('https://...').
- - bpo-10945: Officially drop support for creating bdist_wininst installers
- on non-Windows systems.
- - bpo-37445: Include the ``FORMAT_MESSAGE_IGNORE_INSERTS`` flag in
- ``FormatMessageW()`` calls.
- - bpo-37380: Don't collect unfinished processes with ``subprocess._active``
- on Windows to cleanup later. Patch by Ruslan Kuprieiev.
- - bpo-32587: Make :data:`winreg.REG_MULTI_SZ` support zero-length strings.
- macOS
- -----
- - bpo-38117: Updated OpenSSL to 1.1.1d in macOS installer.
- - bpo-38089: Move Azure Pipelines to latest VM versions and make macOS tests
- optional
- IDLE
- ----
- - bpo-35379: When exiting IDLE, catch any AttributeError. One happens when
- EditorWindow.close is called twice. Printing a traceback, when IDLE is
- run from a terminal, is useless and annoying.
- - bpo-38183: To avoid problems, test_idle ignores the user config directory.
- It no longer tries to create or access .idlerc or any files within. Users
- must run IDLE to discover problems with saving settings.
- - bpo-38077: IDLE no longer adds 'argv' to the user namespace when
- initializing it. This bug only affected 3.7.4 and 3.8.0b2 to 3.8.0b4.
- - bpo-38041: Shell restart lines now fill the window width, always start
- with '=', and avoid wrapping unnecessarily. The line will still wrap if
- the included file name is long relative to the width.
- - bpo-35771: To avoid occasional spurious test_idle failures on slower
- machines, increase the ``hover_delay`` in test_tooltip.
- - bpo-37824: Properly handle user input warnings in IDLE shell. Cease
- turning SyntaxWarnings into SyntaxErrors.
- - bpo-37929: IDLE Settings dialog now closes properly when there is no shell
- window.
- - bpo-37902: Add mousewheel scrolling for IDLE module, path, and stack
- browsers. Patch by George Zhang.
- - bpo-37849: Fixed completions list appearing too high or low when shown
- above the current line.
- - bpo-36419: Refactor IDLE autocomplete and improve testing.
- - bpo-37748: Reorder the Run menu. Put the most common choice, Run Module,
- at the top.
- - bpo-37692: Improve highlight config sample with example shell interaction
- and better labels for shell elements.
- - bpo-37628: Settings dialog no longer expands with font size.
- - bpo-37627: Initialize the Customize Run dialog with the command line
- arguments most recently entered before. The user can optionally edit
- before submitting them.
- - bpo-33610: Fix code context not showing the correct context when first
- toggled on.
- - bpo-37530: Optimize code context to reduce unneeded background activity.
- Font and highlight changes now occur along with text changes instead of
- after a random delay.
- - bpo-27452: Cleanup ``config.py`` by inlining ``RemoveFile`` and
- simplifying the handling of ``file`` in ``CreateConfigHandlers``.
- - bpo-37325: Fix tab focus traversal order for help source and custom run
- dialogs.
- - bpo-17535: Add optional line numbers for IDLE editor windows. Windows
- open without line numbers unless set otherwise in the General tab of the
- configuration dialog.
- - bpo-26806: To compensate for stack frames added by IDLE and avoid possible
- problems with low recursion limits, add 30 to limits in the user code
- execution process. Subtract 30 when reporting recursion limits to make
- this addition mostly transparent.
- - bpo-36390: Gather Format menu functions into format.py. Combine
- paragraph.py, rstrip.py, and format methods from editor.py.
- Tools/Demos
- -----------
- - bpo-37803: pdb's ``--help`` and ``--version`` long options now work.
- - bpo-37675: 2to3 now works when run from a zipped standard library.
- What's New in Python 3.7.4 final?
- =================================
- *Release date: 2019-07-08*
- Core and Builtins
- -----------------
- - bpo-37500: Due to unintended side effects, revert the change introduced by
- :issue:`1875` in 3.7.4rc1 to check for syntax errors in dead conditional
- code blocks.
- Documentation
- -------------
- - bpo-37149: Replace the dead link to the Tkinter 8.5 reference by John
- Shipman, New Mexico Tech, with a link to the archive.org copy.
- What's New in Python 3.7.4 release candidate 2?
- ===============================================
- *Release date: 2019-07-02*
- Security
- --------
- - bpo-37463: ssl.match_hostname() no longer accepts IPv4 addresses with
- additional text after the address and only quad-dotted notation without
- trailing whitespaces. Some inet_aton() implementations ignore whitespace
- and all data after whitespace, e.g. '127.0.0.1 whatever'.
- Core and Builtins
- -----------------
- - bpo-24214: Improved support of the surrogatepass error handler in the
- UTF-8 and UTF-16 incremental decoders.
- Library
- -------
- - bpo-37440: http.client now enables TLS 1.3 post-handshake authentication
- for default context or if a cert_file is passed to HTTPSConnection.
- - bpo-37437: Update vendorized expat version to 2.2.7.
- - bpo-37428: SSLContext.post_handshake_auth = True no longer sets
- SSL_VERIFY_POST_HANDSHAKE verify flag for client connections. Although the
- option is documented as ignored for clients, OpenSSL implicitly enables
- cert chain validation when the flag is set.
- - bpo-32627: Fix compile error when ``_uuid`` headers conflicting included.
- Windows
- -------
- - bpo-37369: Fixes path for :data:`sys.executable` when running from the
- Microsoft Store.
- - bpo-35360: Update Windows builds to use SQLite 3.28.0.
- macOS
- -----
- - bpo-34602: Avoid test suite failures on macOS by no longer calling
- resource.setrlimit to increase the process stack size limit at runtime.
- The runtime change is no longer needed since the interpreter is being
- built with a larger default stack size.
- What's New in Python 3.7.4 release candidate 1?
- ===============================================
- *Release date: 2019-06-18*
- Security
- --------
- - bpo-35907: CVE-2019-9948: Avoid file reading by disallowing
- ``local-file://`` and ``local_file://`` URL schemes in
- ``URLopener().open()`` and ``URLopener().retrieve()`` of
- :mod:`urllib.request`.
- - bpo-36742: Fixes mishandling of pre-normalization characters in
- urlsplit().
- - bpo-30458: Address CVE-2019-9740 by disallowing URL paths with embedded
- whitespace or control characters through into the underlying http client
- request. Such potentially malicious header injection URLs now cause an
- http.client.InvalidURL exception to be raised.
- - bpo-33529: Prevent fold function used in email header encoding from
- entering infinite loop when there are too many non-ASCII characters in a
- header.
- - bpo-35755: :func:`shutil.which` now uses ``os.confstr("CS_PATH")`` if
- available and if the :envvar:`PATH` environment variable is not set.
- Remove also the current directory from :data:`posixpath.defpath`. On Unix,
- :func:`shutil.which` and the :mod:`subprocess` module no longer search the
- executable in the current directory if the :envvar:`PATH` environment
- variable is not set.
- Core and Builtins
- -----------------
- - bpo-37269: Fix a bug in the peephole optimizer that was not treating
- correctly constant conditions with binary operators. Patch by Pablo
- Galindo.
- - bpo-37219: Remove errorneous optimization for empty set differences.
- - bpo-26423: Fix possible overflow in ``wrap_lenfunc()`` when ``sizeof(long)
- < sizeof(Py_ssize_t)`` (e.g., 64-bit Windows).
- - bpo-36829: :c:func:`PyErr_WriteUnraisable` now displays the exception even
- if displaying the traceback failed. Moreover, hold a strong reference to
- :data:`sys.stderr` while using it. Document that an exception must be set
- when calling :c:func:`PyErr_WriteUnraisable`.
- - bpo-36907: Fix a crash when calling a C function with a keyword dict
- (``f(**kwargs)``) and changing the dict ``kwargs`` while that function is
- running.
- - bpo-36946: Fix possible signed integer overflow when handling slices.
- - bpo-27987: ``PyGC_Head`` structure is aligned to ``long double``. This is
- needed to ensure GC-ed objects are aligned properly. Patch by Inada
- Naoki.
- - bpo-1875: A :exc:`SyntaxError` is now raised if a code blocks that will be
- optimized away (e.g. if conditions that are always false) contains syntax
- errors. Patch by Pablo Galindo. (Reverted in 3.7.4 final by
- :issue:`37500`.)
- - bpo-28866: Avoid caching attributes of classes which type defines mro() to
- avoid a hard cache invalidation problem.
- - bpo-27639: Correct return type for UserList slicing operations. Patch by
- Michael Blahay, Erick Cervantes, and vaultah
- - bpo-32849: Fix Python Initialization code on FreeBSD to detect properly
- when stdin file descriptor (fd 0) is invalid.
- - bpo-27987: pymalloc returns memory blocks aligned by 16 bytes, instead of
- 8 bytes, on 64-bit platforms to conform x86-64 ABI. Recent compilers
- assume this alignment more often. Patch by Inada Naoki.
- - bpo-36504: Fix signed integer overflow in _ctypes.c's
- ``PyCArrayType_new()``.
- - bpo-20844: Fix running script with encoding cookie and LF line ending may
- fail on Windows.
- - bpo-24214: Fixed support of the surrogatepass error handler in the UTF-8
- incremental decoder.
- - bpo-36459: Fix a possible double ``PyMem_FREE()`` due to tokenizer.c's
- ``tok_nextc()``.
- - bpo-36433: Fixed TypeError message in classmethoddescr_call.
- - bpo-36430: Fix a possible reference leak in :func:`itertools.count`.
- - bpo-36440: Include node names in ``ParserError`` messages, instead of
- numeric IDs. Patch by A. Skrobov.
- - bpo-36421: Fix a possible double decref in _ctypes.c's
- ``PyCArrayType_new()``.
- - bpo-36256: Fix bug in parsermodule when parsing a state in a DFA that has
- two or more arcs with labels of the same type. Patch by Pablo Galindo.
- - bpo-36236: At Python initialization, the current directory is no longer
- prepended to :data:`sys.path` if it has been removed.
- - bpo-36262: Fix an unlikely memory leak on conversion from string to float
- in the function ``_Py_dg_strtod()`` used by ``float(str)``,
- ``complex(str)``, :func:`pickle.load`, :func:`marshal.load`, etc.
- - bpo-36218: Fix a segfault occuring when sorting a list of heterogeneous
- values. Patch contributed by Rémi Lapeyre and Elliot Gorokhovsky.
- - bpo-36035: Added fix for broken symlinks in combination with pathlib
- - bpo-18372: Add missing :c:func:`PyObject_GC_Track` calls in the
- :mod:`pickle` module. Patch by Zackery Spytz.
- - bpo-34408: Prevent a null pointer dereference and resource leakage in
- ``PyInterpreterState_New()``.
- Library
- -------
- - bpo-37280: Use threadpool for reading from file for sendfile fallback
- mode.
- - bpo-37279: Fix asyncio sendfile support when sendfile sends extra data in
- fallback mode.
- - bpo-19865: :func:`ctypes.create_unicode_buffer()` now also supports
- non-BMP characters on platforms with 16-bit :c:type:`wchar_t` (for
- example, Windows and AIX).
- - bpo-35922: Fix :meth:`RobotFileParser.crawl_delay` and
- :meth:`RobotFileParser.request_rate` to return ``None`` rather than raise
- :exc:`AttributeError` when no relevant rule is defined in the robots.txt
- file. Patch by Rémi Lapeyre.
- - bpo-36607: Eliminate :exc:`RuntimeError` raised by
- :func:`asyncio.all_tasks()` if internal tasks weak set is changed by
- another thread during iteration.
- - bpo-36402: Fix a race condition at Python shutdown when waiting for
- threads. Wait until the Python thread state of all non-daemon threads get
- deleted (join all non-daemon threads), rather than just wait until
- non-daemon Python threads complete.
- - bpo-34886: Fix an unintended ValueError from :func:`subprocess.run` when
- checking for conflicting `input` and `stdin` or `capture_output` and
- `stdout` or `stderr` args when they were explicitly provided but with
- `None` values within a passed in `**kwargs` dict rather than as passed
- directly by name. Patch contributed by Rémi Lapeyre.
- - bpo-37173: The exception message for ``inspect.getfile()`` now correctly
- reports the passed class rather than the builtins module.
- - bpo-12639: :meth:`msilib.Directory.start_component()` no longer fails if
- *keyfile* is not ``None``.
- - bpo-36520: Lengthy email headers with UTF-8 characters are now properly
- encoded when they are folded. Patch by Jeffrey Kintscher.
- - bpo-37054: Fix destructor :class:`_pyio.BytesIO` and
- :class:`_pyio.TextIOWrapper`: initialize their ``_buffer`` attribute as
- soon as possible (in the class body), because it's used by ``__del__()``
- which calls ``close()``.
- - bpo-30835: Fixed a bug in email parsing where a message with invalid bytes
- in content-transfer-encoding of a multipart message can cause an
- AttributeError. Patch by Andrew Donnellan.
- - bpo-37035: Don't log OSError based exceptions if a fatal error has
- occurred in asyncio transport. Peer can generate almost any OSError, user
- cannot avoid these exceptions by fixing own code. Errors are still
- propagated to user code, it's just logging them is pointless and pollute
- asyncio logs.
- - bpo-37008: Add support for calling :func:`next` with the mock resulting
- from :func:`unittest.mock.mock_open`
- - bpo-27737: Allow whitespace only header encoding in ``email.header`` - by
- Batuhan Taskaya
- - bpo-36969: PDB command `args` now display keyword only arguments. Patch
- contributed by Rémi Lapeyre.
- - bpo-36983: Add missing names to ``typing.__all__``: ``ChainMap``,
- ``ForwardRef``, ``OrderedDict`` - by Anthony Sottile.
- - bpo-21315: Email headers containing RFC2047 encoded words are parsed
- despite the missing whitespace, and a defect registered. Also missing
- trailing whitespace after encoded words is now registered as a defect.
- - bpo-33524: Fix the folding of email header when the max_line_length is 0
- or None and the header contains non-ascii characters. Contributed by
- Licht Takeuchi (@Licht-T).
- - bpo-24564: :func:`shutil.copystat` now ignores :const:`errno.EINVAL` on
- :func:`os.setxattr` which may occur when copying files on filesystems
- without extended attributes support.
- Original patch by Giampaolo Rodola, updated by Ying Wang.
- - bpo-36845: Added validation of integer prefixes to the construction of IP
- networks and interfaces in the ipaddress module.
- - bpo-35545: Fix asyncio discarding IPv6 scopes when ensuring hostname
- resolutions internally
- - bpo-35070: posix.getgrouplist() now works correctly when the user belongs
- to NGROUPS_MAX supplemental groups. Patch by Jeffrey Kintscher.
- - bpo-24538: In `shutil.copystat()`, first copy extended file attributes and
- then file permissions, since extended attributes can only be set on the
- destination while it is still writeable.
- - bpo-33110: Handle exceptions raised by functions added by
- concurrent.futures add_done_callback correctly when the Future has already
- completed.
- - bpo-26903: Limit `max_workers` in `ProcessPoolExecutor` to 61 to work
- around a WaitForMultipleObjects limitation.
- - bpo-36813: Fix :class:`~logging.handlers.QueueListener` to call
- ``queue.task_done()`` upon stopping. Patch by Bar Harel.
- - bpo-36734: Fix compilation of ``faulthandler.c`` on HP-UX. Initialize
- ``stack_t current_stack`` to zero using ``memset()``.
- - bpo-29183: Fix double exceptions in :class:`wsgiref.handlers.BaseHandler`
- by calling its :meth:`~wsgiref.handlers.BaseHandler.close` method only
- when no exception is raised.
- - bpo-36650: The C version of functools.lru_cache() was treating calls with
- an empty ``**kwargs`` dictionary as being distinct from calls with no
- keywords at all. This did not result in an incorrect answer, but it did
- trigger an unexpected cache miss.
- - bpo-28552: Fix :mod:`distutils.sysconfig` if :data:`sys.executable` is
- ``None`` or an empty string: use :func:`os.getcwd` to initialize
- ``project_base``. Fix also the distutils build command: don't use
- :data:`sys.executable` if it is ``None`` or an empty string.
- - bpo-35755: :func:`shutil.which` and
- :func:`distutils.spawn.find_executable` now use ``os.confstr("CS_PATH")``
- if available instead of :data:`os.defpath`, if the ``PATH`` environment
- variable is not set. Moreover, don't use ``os.confstr("CS_PATH")`` nor
- :data:`os.defpath` if the ``PATH`` environment variable is set to an empty
- string.
- - bpo-36613: Fix :mod:`asyncio` wait() not removing callback if exception
- - bpo-36598: Fix ``isinstance`` check for Mock objects with spec when the
- code is executed under tracing. Patch by Karthikeyan Singaravelan.
- - bpo-36533: Reinitialize logging.Handler locks in forked child processes
- instead of attempting to acquire them all in the parent before forking
- only to be released in the child process. The acquire/release pattern was
- leading to deadlocks in code that has implemented any form of chained
- logging handlers that depend upon one another as the lock acquision order
- cannot be guaranteed.
- - bpo-36522: If *debuglevel* is set to >0 in :mod:`http.client`, print all
- values for headers with multiple values for the same header name. Patch by
- Matt Houglum.
- - bpo-36492: Arbitrary keyword arguments (even with names "self" and "func")
- can now be passed to some functions which should accept arbitrary keyword
- arguments and pass them to other function (for example partialmethod(),
- TestCase.addCleanup() and Profile.runcall()) if the required arguments are
- passed as positional arguments.
- - bpo-36434: Errors during writing to a ZIP file no longer prevent to
- properly close it.
- - bpo-34745: Fix :mod:`asyncio` ssl memory issues caused by circular
- references
- - bpo-36321: collections.namedtuple() misspelled the name of an attribute.
- To be consistent with typing.NamedTuple, the attribute name should have
- been "_field_defaults" instead of "_fields_defaults". For backwards
- compatibility, both spellings are now created. The misspelled version may
- be removed in the future.
- - bpo-36272: :mod:`logging` does not silently ignore RecursionError anymore.
- Patch contributed by Rémi Lapeyre.
- - bpo-36235: Fix ``CFLAGS`` in ``customize_compiler()`` of
- ``distutils.sysconfig``: when the ``CFLAGS`` environment variable is
- defined, don't override ``CFLAGS`` variable with the ``OPT`` variable
- anymore. Initial patch written by David Malcolm.
- - bpo-35125: Asyncio: Remove inner callback on outer cancellation in shield
- - bpo-35802: Clean up code which checked presence of ``os.stat`` /
- ``os.lstat`` / ``os.chmod`` which are always present. Patch by Anthony
- Sottile.
- - bpo-23078: Add support for :func:`classmethod` and :func:`staticmethod` to
- :func:`unittest.mock.create_autospec`. Initial patch by Felipe Ochoa.
- - bpo-35721: Fix :meth:`asyncio.SelectorEventLoop.subprocess_exec()` leaks
- file descriptors if ``Popen`` fails and called with
- ``stdin=subprocess.PIPE``. Patch by Niklas Fiekas.
- - bpo-35726: QueueHandler.prepare() now makes a copy of the record before
- modifying and enqueueing it, to avoid affecting other handlers in the
- chain.
- - bpo-31855: :func:`unittest.mock.mock_open` results now respects the
- argument of read([size]). Patch contributed by Rémi Lapeyre.
- - bpo-35082: Don't return deleted attributes when calling dir on a
- :class:`unittest.mock.Mock`.
- - bpo-34547: :class:`wsgiref.handlers.BaseHandler` now handles abrupt client
- connection terminations gracefully. Patch by Petter Strandmark.
- - bpo-34424: Fix serialization of messages containing encoded strings when
- the policy.linesep is set to a multi-character string. Patch by Jens
- Troeger.
- - bpo-33361: Fix a bug in :class:`codecs.StreamRecoder` where seeking might
- leave old data in a buffer and break subsequent read calls. Patch by Ammar
- Askar.
- - bpo-31922: :meth:`asyncio.AbstractEventLoop.create_datagram_endpoint`: Do
- not connect UDP socket when broadcast is allowed. This allows to receive
- replies after a UDP broadcast.
- - bpo-22102: Added support for ZIP files with disks set to 0. Such files are
- commonly created by builtin tools on Windows when use ZIP64 extension.
- Patch by Francisco Facioni.
- - bpo-27141: Added a ``__copy__()`` to ``collections.UserList`` and
- ``collections.UserDict`` in order to correctly implement shallow copying
- of the objects. Patch by Bar Harel.
- - bpo-31829: ``\r``, ``\0`` and ``\x1a`` (end-of-file on Windows) are now
- escaped in protocol 0 pickles of Unicode strings. This allows to load them
- without loss from files open in text mode in Python 2.
- - bpo-31292: Fix ``setup.py check --restructuredtext`` for files containing
- ``include`` directives.
- - bpo-23395: ``_thread.interrupt_main()`` now avoids setting the Python
- error status if the ``SIGINT`` signal is ignored or not handled by Python.
- Documentation
- -------------
- - bpo-34903: Documented that in :meth:`datetime.datetime.strptime()`, the
- leading zero in some two-digit formats is optional. Patch by Mike Gleen.
- - bpo-36984: Improve version added references in ``typing`` module - by
- Anthony Sottile.
- - bpo-36868: What's new now mentions SSLContext.hostname_checks_common_name
- instead of SSLContext.host_flags.
- - bpo-36783: Added C API Documentation for Time_FromTimeAndFold and
- PyDateTime_FromDateAndTimeAndFold as per PEP 495. Patch by Edison
- Abahurire.
- - bpo-30840: Document relative imports
- - bpo-36523: Add docstring for io.IOBase.writelines().
- - bpo-36425: New documentation translation: `Simplified Chinese
- <https://docs.python.org/zh-cn/>`_.
- - bpo-36157: Added Documention for PyInterpreterState_Main().
- - bpo-36138: Improve documentation about converting datetime.timedelta to
- scalars.
- - bpo-22865: Add detail to the documentation on the `pty.spawn` function.
- - bpo-35581: @typing.type_check_only now allows type stubs to mark functions
- and classes not available during runtime.
- - bpo-35564: Explicitly set master_doc variable in conf.py for compliance
- with Sphinx 2.0
- - bpo-10536: Enhance the gettext docs. Patch by Éric Araujo
- - bpo-32995: Added the context variable in glossary.
- - bpo-33832: Add glossary entry for 'magic method'.
- - bpo-33482: Make `codecs.StreamRecoder.writelines` take a list of bytes.
- - bpo-25735: Added documentation for func factorial to indicate that returns
- integer values
- Tests
- -----
- - bpo-35998: Avoid TimeoutError in test_asyncio: test_start_tls_server_1()
- - bpo-37153: ``test_venv.test_mutiprocessing()`` now explicitly calls
- ``pool.terminate()`` to wait until the pool completes.
- - bpo-37081: Test with OpenSSL 1.1.1c
- - bpo-36915: The main regrtest process now always removes all temporary
- directories of worker processes even if they crash or if they are killed
- on KeyboardInterrupt (CTRL+c).
- - bpo-36719: "python3 -m test -jN ..." now continues the execution of next
- tests when a worker process crash (CHILD_ERROR state). Previously, the
- test suite stopped immediately. Use --failfast to stop at the first error.
- - bpo-36816: Update Lib/test/selfsigned_pythontestdotnet.pem to match
- self-signed.pythontest.net's new TLS certificate.
- - bpo-35925: Skip httplib and nntplib networking tests when they would
- otherwise fail due to a modern OS or distro with a default OpenSSL policy
- of rejecting connections to servers with weak certificates.
- - bpo-36719: regrtest now always detects uncollectable objects. Previously,
- the check was only enabled by ``--findleaks``. The check now also works
- with ``-jN/--multiprocess N``. ``--findleaks`` becomes a deprecated alias
- to ``--fail-env-changed``.
- - bpo-36725: When using mulitprocessing mode (-jN), regrtest now better
- reports errors if a worker process fails, and it exits immediately on a
- worker thread failure or when interrupted.
- - bpo-36454: Change test_time.test_monotonic() to test only the lower bound
- of elapsed time after a sleep command rather than the upper bound. This
- prevents unnecessary test failures on slow buildbots. Patch by Victor
- Stinner.
- - bpo-36629: Fix ``test_imap4_host_default_value()`` of ``test_imaplib``:
- catch also :data:`errno.ENETUNREACH` error.
- - bpo-36611: Fix ``test_sys.test_getallocatedblocks()`` when
- :mod:`tracemalloc` is enabled.
- - bpo-36560: Fix reference leak hunting in regrtest: compute also deltas (of
- reference count, allocated memory blocks, file descriptor count) during
- warmup, to ensure that everything is initialized before starting to hunt
- reference leaks.
- - bpo-36565: Fix reference hunting (``python3 -m test -R 3:3``) when Python
- has no built-in abc module.
- - bpo-36436: Fix ``_testcapi.pymem_buffer_overflow()``: handle memory
- allocation failure.
- Build
- -----
- - bpo-36605: ``make tags`` and ``make TAGS`` now also parse
- ``Modules/_io/*.c`` and ``Modules/_io/*.h``.
- - bpo-36508: ``python-config --ldflags`` no longer includes flags of the
- ``LINKFORSHARED`` variable. The ``LINKFORSHARED`` variable must only be
- used to build executables.
- Windows
- -------
- - bpo-34631: Updated OpenSSL to 1.1.1c in Windows installer
- - bpo-37267: On Windows, :func:`os.dup` no longer creates an inheritable fd
- when handling a character file.
- - bpo-36779: Ensure ``time.tzname`` is correct on Windows when the active
- code page is set to CP_UTF7 or CP_UTF8.
- - bpo-36965: include of STATUS_CONTROL_C_EXIT without depending on MSC
- compiler
- - bpo-36649: Remove trailing spaces for registry keys when installed via the
- Store.
- - bpo-34144: Fixed activate.bat to correctly update codepage when chcp.com
- returns dots in output. Patch by Lorenz Mende.
- - bpo-35941: enum_certificates function of the ssl module now returns
- certificates from all available certificate stores inside windows in a
- query instead of returning only certificates from the system wide
- certificate store. This includes certificates from these certificate
- stores: local machine, local machine enterprise, local machine group
- policy, current user, current user group policy, services, users.
- ssl.enum_crls() function is changed in the same way to return all
- certificate revocation lists inside the windows certificate revocation
- list stores.
- - bpo-36441: Fixes creating a venv when debug binaries are installed.
- - bpo-36312: Fixed decoders for the following code pages: 50220, 50221,
- 50222, 50225, 50227, 50229, 57002 through 57011, 65000 and 42.
- - bpo-36010: Add the venv standard library module to the nuget distribution
- for Windows.
- - bpo-34060: Report system load when running test suite on Windows. Patch by
- Ammar Askar. Based on prior work by Jeremy Kloth.
- macOS
- -----
- - bpo-35360: Update macOS installer to use SQLite 3.28.0.
- - bpo-34631: Updated OpenSSL to 1.1.1c in macOS installer.
- - bpo-36231: Support building Python on macOS without /usr/include
- installed. As of macOS 10.14, system header files are only available
- within an SDK provided by either the Command Line Tools or the Xcode app.
- - bpo-34602: Avoid failures setting macOS stack resource limit with
- resource.setrlimit. This reverts an earlier fix for bpo-18075 which forced
- a non-default stack size when building the interpreter executable on
- macOS.
- IDLE
- ----
- - bpo-37321: Both subprocess connection error messages now refer to the
- 'Startup failure' section of the IDLE doc.
- - bpo-37177: Properly 'attach' search dialogs to their main window so that
- they behave like other dialogs and do not get hidden behind their main
- window.
- - bpo-37039: Adjust "Zoom Height" to individual screens by momemtarily
- maximizing the window on first use with a particular screen. Changing
- screen settings may invalidate the saved height. While a window is
- maximized, "Zoom Height" has no effect.
- - bpo-35763: Make calltip reminder about '/' meaning positional-only less
- obtrusive by only adding it when there is room on the first line.
- - bpo-5680: Add 'Run... Customized' to the Run menu to run a module with
- customized settings. Any 'command line arguments' entered are added to
- sys.argv. One can suppress the normal Shell main module restart.
- - bpo-35610: Replace now redundant .context_use_ps1 with .prompt_last_line.
- This finishes change started in bpo-31858.
- - bpo-37038: Make idlelib.run runnable; add test clause.
- - bpo-36958: Print any argument other than None or int passed to SystemExit
- or sys.exit().
- - bpo-13102: When saving a file, call os.fsync() so bits are flushed to e.g.
- USB drive.
- - bpo-36429: Fix starting IDLE with pyshell. Add idlelib.pyshell alias at
- top; remove pyshell alias at bottom. Remove obsolete __name__=='__main__'
- command.
- - bpo-36405: Use dict unpacking in idlelib.
- - bpo-36396: Remove fgBg param of idlelib.config.GetHighlight(). This param
- was only used twice and changed the return type.
- - bpo-23205: For the grep module, add tests for findfiles, refactor
- findfiles to be a module-level function, and refactor findfiles to use
- os.walk.
- - bpo-23216: Add docstrings to IDLE search modules.
- - bpo-30348: Increase test coverage of idlelib.autocomplete by 30%.
- - bpo-32411: In browser.py, remove extraneous sorting by line number since
- dictionary was created in line number order.
- Tools/Demos
- -----------
- - bpo-14546: Fix the argument handling in Tools/scripts/lll.py.
- - bpo-32217: Fix freeze script on Windows.
- C API
- -----
- - bpo-28805: The :const:`METH_FASTCALL` calling convention has been
- documented.
- - bpo-37170: Fix the cast on error in
- :c:func:`PyLong_AsUnsignedLongLongMask()`.
- - bpo-36389: Change the value of ``CLEANBYTE``, ``DEADDYTE`` and
- ``FORBIDDENBYTE`` internal constants used by debug hooks on Python memory
- allocators (:c:func:`PyMem_SetupDebugHooks` function). Byte patterns
- ``0xCB``, ``0xDB`` and ``0xFB`` have been replaced with ``0xCD``, ``0xDD``
- and ``0xFD`` to use the same values than Windows CRT debug ``malloc()``
- and ``free()``.
- What's New in Python 3.7.3 final?
- =================================
- *Release date: 2019-03-25*
- There were no new changes in version 3.7.3.
- What's New in Python 3.7.3 release candidate 1?
- ===============================================
- *Release date: 2019-03-12*
- Security
- --------
- - bpo-36216: Changes urlsplit() to raise ValueError when the URL contains
- characters that decompose under IDNA encoding (NFKC-normalization) into
- characters that affect how the URL is parsed.
- - bpo-35746: [CVE-2019-5010] Fix a NULL pointer deref in ssl module. The
- cert parser did not handle CRL distribution points with empty DP or URI
- correctly. A malicious or buggy certificate can result into segfault.
- Vulnerability (TALOS-2018-0758) reported by Colin Read and Nicolas Edet of
- Cisco.
- - bpo-35121: Don't send cookies of domain A without Domain attribute to
- domain B when domain A is a suffix match of domain B while using a
- cookiejar with :class:`http.cookiejar.DefaultCookiePolicy` policy. Patch
- by Karthikeyan Singaravelan.
- Core and Builtins
- -----------------
- - bpo-35942: The error message emitted when returning invalid types from
- ``__fspath__`` in interfaces that allow passing :class:`~os.PathLike`
- objects has been improved and now it does explain the origin of the error.
- - bpo-35992: Fix ``__class_getitem__()`` not being called on a class with a
- custom non-subscriptable metaclass.
- - bpo-35991: Fix a potential double free in Modules/_randommodule.c.
- - bpo-35961: Fix a crash in slice_richcompare(): use strong references
- rather than stolen references for the two temporary internal tuples.
- - bpo-31506: Clarify the errors reported when ``object.__new__`` and
- ``object.__init__`` receive more than one argument. Contributed by Sanyam
- Khurana.
- - bpo-35720: Fixed a minor memory leak in pymain_parse_cmdline_impl function
- in Modules/main.c
- - bpo-35623: Fix a crash when sorting very long lists. Patch by Stephan
- Hohe.
- - bpo-35214: clang Memory Sanitizer build instrumentation was added to work
- around false positives from posix, socket, time, test_io, and
- test_faulthandler.
- - bpo-35560: Fix an assertion error in :func:`format` in debug build for
- floating point formatting with "n" format, zero padding and small width.
- Release build is not impacted. Patch by Karthikeyan Singaravelan.
- - bpo-35552: Format characters ``%s`` and ``%V`` in
- :c:func:`PyUnicode_FromFormat` and ``%s`` in :c:func:`PyBytes_FromFormat`
- no longer read memory past the limit if *precision* is specified.
- - bpo-35504: Fix segfaults and :exc:`SystemError`\ s when deleting certain
- attributes. Patch by Zackery Spytz.
- - bpo-33989: Fix a possible crash in :meth:`list.sort` when sorting objects
- with ``ob_type->tp_richcompare == NULL``. Patch by Zackery Spytz.
- Library
- -------
- - bpo-35931: The :mod:`pdb` ``debug`` command now gracefully handles all
- exceptions.
- - bpo-36251: Fix format strings used for stderrprinter and re.Match reprs.
- Patch by Stephan Hohe.
- - bpo-35807: Update ensurepip to install pip 19.0.3 and setuptools 40.8.0.
- - bpo-36179: Fix two unlikely reference leaks in _hashopenssl. The leaks
- only occur in out-of-memory cases.
- - bpo-35178: Ensure custom :func:`warnings.formatwarning` function can
- receive `line` as positional argument. Based on patch by Tashrif Billah.
- - bpo-36106: Resolve potential name clash with libm's sinpi(). Patch by
- Dmitrii Pasechnik.
- - bpo-35512: :func:`unittest.mock.patch.dict` used as a decorator with
- string target resolves the target during function call instead of during
- decorator construction. Patch by Karthikeyan Singaravelan.
- - bpo-36091: Clean up reference to async generator in Lib/types. Patch by
- Henry Chen.
- - bpo-35899: Enum has been fixed to correctly handle empty strings and
- strings with non-Latin characters (ie. 'α', 'א') without crashing.
- Original patch contributed by Maxwell. Assisted by Stéphane Wirtel.
- - bpo-35918: Removed broken ``has_key`` method from
- multiprocessing.managers.SyncManager.dict. Contributed by Rémi Lapeyre.
- - bpo-35960: Fix :func:`dataclasses.field` throwing away empty mapping
- objects passed as metadata.
- - bpo-35847: RISC-V needed the CTYPES_PASS_BY_REF_HACK. Fixes ctypes
- Structure test_pass_by_value.
- - bpo-35780: Fix lru_cache() errors arising in recursive, reentrant, or
- multi-threaded code. These errors could result in orphan links and in the
- cache being trapped in a state with fewer than the specified maximum
- number of links. Fix handling of negative maxsize which should have been
- treated as zero. Fix errors in toggling the "full" status flag. Fix
- misordering of links when errors are encountered. Sync-up the C code and
- pure Python code for the space saving path in functions with a single
- positional argument. In this common case, the space overhead of an lru
- cache entry is reduced by almost half. Fix counting of cache misses. In
- error cases, the miss count was out of sync with the actual number of
- times the underlying user function was called.
- - bpo-23846: :class:`asyncio.ProactorEventLoop` now catches and logs send
- errors when the self-pipe is full.
- - bpo-34323: :mod:`asyncio`: Enhance ``IocpProactor.close()`` log: wait 1
- second before the first log, then log every second. Log also the number of
- seconds since ``close()`` was called.
- - bpo-34294: re module, fix wrong capturing groups in rare cases.
- :func:`re.search`, :func:`re.findall`, :func:`re.sub` and other functions
- that scan through string looking for a match, should reset capturing
- groups between two match attempts. Patch by Ma Lin.
- - bpo-35717: Fix KeyError exception raised when using enums and compile.
- Patch contributed by Rémi Lapeyre.
- - bpo-35699: Fixed detection of Visual Studio Build Tools 2017 in distutils
- - bpo-32710: Fix memory leaks in asyncio ProactorEventLoop on overlapped
- operation failure.
- - bpo-32710: Fix a memory leak in asyncio in the ProactorEventLoop when
- ``ReadFile()`` or ``WSASend()`` overlapped operation fail immediately:
- release the internal buffer.
- - bpo-35682: Fix ``asyncio.ProactorEventLoop.sendfile()``: don't attempt to
- set the result of an internal future if it's already done.
- - bpo-35283: Add a pending deprecated warning for the
- :meth:`threading.Thread.isAlive` method. Patch by Dong-hee Na.
- - bpo-35643: Fixed a SyntaxWarning: invalid escape sequence in
- Modules/_sha3/cleanup.py. Patch by Mickaël Schoentgen.
- - bpo-35615: :mod:`weakref`: Fix a RuntimeError when copying a
- WeakKeyDictionary or a WeakValueDictionary, due to some keys or values
- disappearing while iterating.
- - bpo-28503: The `crypt` module now internally uses the `crypt_r()` library
- function instead of `crypt()` when available.
- - bpo-35121: Don't set cookie for a request when the request path is a
- prefix match of the cookie's path attribute but doesn't end with "/".
- Patch by Karthikeyan Singaravelan.
- - bpo-35585: Speed-up building enums by value, e.g. http.HTTPStatus(200).
- - bpo-21478: Calls to a child function created with
- :func:`unittest.mock.create_autospec` should propagate to the parent.
- Patch by Karthikeyan Singaravelan.
- - bpo-35513: :class:`~unittest.runner.TextTestRunner` of
- :mod:`unittest.runner` now uses :func:`time.perf_counter` rather than
- :func:`time.time` to measure the execution time of a test:
- :func:`time.time` can go backwards, whereas :func:`time.perf_counter` is
- monotonic.
- - bpo-35502: Fixed reference leaks in
- :class:`xml.etree.ElementTree.TreeBuilder` in case of unfinished building
- of the tree (in particular when an error was raised during parsing XML).
- - bpo-31446: Copy command line that was passed to CreateProcessW since this
- function can change the content of the input buffer.
- - bpo-20239: Allow repeated assignment deletion of
- :class:`unittest.mock.Mock` attributes. Patch by Pablo Galindo.
- - bpo-17185: Set ``__signature__`` on mock for :mod:`inspect` to get
- signature. Patch by Karthikeyan Singaravelan.
- - bpo-10496: :func:`~distutils.utils.check_environ` of
- :mod:`distutils.utils` now catches :exc:`KeyError` on calling
- :func:`pwd.getpwuid`: don't create the ``HOME`` environment variable in
- this case.
- - bpo-35066: Previously, calling the strftime() method on a datetime object
- with a trailing '%' in the format string would result in an exception.
- However, this only occured when the datetime C module was being used; the
- python implementation did not match this behavior. Datetime is now PEP-399
- compliant, and will not throw an exception on a trailing '%'.
- - bpo-24746: Avoid stripping trailing whitespace in doctest fancy diff.
- Orignial patch by R. David Murray & Jairo Trad. Enhanced by Sanyam
- Khurana.
- - bpo-35198: Fix C++ extension compilation on AIX
- - bpo-28441: On Cygwin and MinGW, ensure that ``sys.executable`` always
- includes the full filename in the path, including the ``.exe`` suffix
- (unless it is a symbolic link).
- - bpo-34572: Fix C implementation of pickle.loads to use importlib's locking
- mechanisms, and thereby avoid using partially-loaded modules. Patch by Tim
- Burgess.
- - bpo-33687: Fix the call to ``os.chmod()`` for ``uu.decode()`` if a mode is
- given or decoded. Patch by Timo Furrer.
- - bpo-32146: Document the interaction between frozen executables and the
- spawn and forkserver start methods in multiprocessing.
- Documentation
- -------------
- - bpo-36083: Fix formatting of --check-hash-based-pycs options in the
- manpage Synopsis.
- - bpo-34764: Improve example of iter() with 2nd sentinel argument.
- - bpo-21314: A new entry was added to the Core Language Section of the
- Programming FAQ, which explaines the usage of slash(/) in the signature of
- a function. Patch by Lysandros Nikolaou
- - bpo-22062: Update documentation and docstrings for pathlib. Original patch
- by Mike Short.
- Tests
- -----
- - bpo-36234: test_posix.PosixUidGidTests: add tests for invalid uid/gid type
- (str). Initial patch written by David Malcolm.
- - bpo-29571: Fix ``test_re.test_locale_flag()``: use
- ``locale.getpreferredencoding()`` rather than ``locale.getlocale()`` to
- get the locale encoding. With some locales, ``locale.getlocale()`` returns
- the wrong encoding. On Windows, set temporarily the ``LC_CTYPE`` locale to
- the user preferred encoding to ensure that it uses the ANSI code page, to
- be consistent with ``locale.getpreferredencoding()``.
- - bpo-36123: Fix race condition in test_socket.
- - bpo-27313: Avoid test_ttk_guionly ComboboxTest failure with macOS Cocoa
- Tk.
- - bpo-36019: Add test.support.TEST_HTTP_URL and replace references of
- http://www.example.com by this new constant. Contributed by Stéphane
- Wirtel.
- - bpo-36037: Fix test_ssl for strict OpenSSL configuration like RHEL8 strict
- crypto policy. Use older TLS version for minimum TLS version of the server
- SSL context if needed, to test TLS version older than default minimum TLS
- version.
- - bpo-35505: Make test_imap4_host_default_value independent on whether the
- local IMAP server is running.
- - bpo-35917: multiprocessing: provide unit tests for SyncManager and
- SharedMemoryManager classes + all the shareable types which are supposed
- to be supported by them. (patch by Giampaolo Rodola)
- - bpo-35772: Fix sparse file tests of test_tarfile on ppc64 with the tmpfs
- filesystem. Fix the function testing if the filesystem supports sparse
- files: create a file which contains data and "holes", instead of creating
- a file which contains no data. tmpfs effective block size is a page size
- (tmpfs lives in the page cache). RHEL uses 64 KiB pages on aarch64, ppc64,
- ppc64le, only s390x and x86_64 use 4 KiB pages, whereas the test punch
- holes of 4 KiB.
- - bpo-35045: Make ssl tests less strict and also accept TLSv1 as system
- default. The changes unbreaks test_min_max_version on Fedora 29.
- - bpo-31731: Fix a race condition in ``check_interrupted_write()`` of
- test_io: create directly the thread with SIGALRM signal blocked, rather
- than blocking the signal later from the thread. Previously, it was
- possible that the thread gets the signal before the signal is blocked.
- - bpo-35424: Fix test_multiprocessing_main_handling: use
- :class:`multiprocessing.Pool` with a context manager and then explicitly
- join the pool.
- - bpo-35519: Rename :mod:`test.bisect` module to :mod:`test.bisect_cmd` to
- avoid conflict with :mod:`bisect` module when running directly a test like
- ``./python Lib/test/test_xmlrpc.py``.
- - bpo-35513: Replace :func:`time.time` with :func:`time.monotonic` in tests
- to measure time delta.
- - bpo-34279: :func:`test.support.run_unittest` no longer raise
- :exc:`TestDidNotRun` if the test result contains skipped tests. The
- exception is now only raised if no test have been run and no test have
- been skipped.
- - bpo-35412: Add testcase to ``test_future4``: check unicode literal.
- - bpo-26704: Added test demonstrating double-patching of an instance method.
- Patch by Anthony Sottile.
- Build
- -----
- - bpo-34691: The _contextvars module is now built into the core Python
- library on Windows.
- - bpo-35683: Improved Azure Pipelines build steps and now verifying layouts
- correctly
- - bpo-35642: Remove asynciomodule.c from pythoncore.vcxproj
- - bpo-35550: Fix incorrect Solaris #ifdef checks to look for __sun && __SVR4
- instead of sun when compiling.
- Windows
- -------
- - bpo-24643: Fix name collisions due to ``#define timezone _timezone`` in
- PC/pyconfig.h.
- - bpo-35692: ``pathlib`` no longer raises when checking file and directory
- existence on drives that are not ready
- - bpo-35872: Uses the base Python executable when invoking venv in a virtual
- environment
- - bpo-35873: Prevents venv paths being inherited by child processes
- - bpo-35299: Fix sysconfig detection of the source directory and distutils
- handling of pyconfig.h during PGO profiling
- - bpo-32560: The ``py`` launcher now forwards its ``STARTUPINFO`` structure
- to child processes.
- - bpo-35854: Fix EnvBuilder and --symlinks in venv on Windows
- - bpo-35811: Avoid propagating venv settings when launching via py.exe
- - bpo-35797: Fix default executable used by the multiprocessing module
- - bpo-29734: Fix handle leaks in os.stat on Windows.
- - bpo-35596: Use unchecked PYCs for the embeddable distro to avoid zipimport
- restrictions.
- - bpo-35596: Fix vcruntime140.dll being added to embeddable distro multiple
- times.
- - bpo-35402: Update Windows build to use Tcl and Tk 8.6.9
- - bpo-33316: PyThread_release_lock always fails
- - bpo-1104: Correctly handle string length in
- ``msilib.SummaryInfo.GetProperty()`` to prevent it from truncating the
- last character.
- IDLE
- ----
- - bpo-36176: Fix IDLE autocomplete & calltip popup colors. Prevent conflicts
- with Linux dark themes (and slightly darken calltip background).
- - bpo-36152: Remove colorizer.ColorDelegator.close_when_done and the
- corresponding argument of .close(). In IDLE, both have always been None
- or False since 2007.
- - bpo-32129: Avoid blurry IDLE application icon on macOS with Tk 8.6. Patch
- by Kevin Walzer.
- - bpo-24310: IDLE -- Document settings dialog font tab sample.
- - bpo-36096: Refactor class variables to instance variables in colorizer.
- - bpo-35833: Revise IDLE doc for control codes sent to Shell. Add a code
- example block.
- - bpo-35770: IDLE macosx deletes Options => Configure IDLE. It previously
- deleted Window => Zoom Height by mistake. (Zoom Height is now on the
- Options menu). On Mac, the settings dialog is accessed via Preferences on
- the IDLE menu.
- - bpo-35769: Change IDLE's new file name from 'Untitled' to 'untitled'
- - bpo-35689: Add docstrings and unittests for colorizer.py.
- - bpo-35660: Fix imports in idlelib.window.
- - bpo-35641: Proper format `calltip` when the function has no docstring.
- - bpo-33987: Use ttk Frame for ttk widgets.
- - bpo-34055: Fix erroneous 'smart' indents and newlines in IDLE Shell.
- - bpo-35591: Find Selection now works when selection not found.
- - bpo-35196: Speed up squeezer line counting.
- - bpo-35598: Update config_key: use PEP 8 names and ttk widgets, make some
- objects global, and add tests.
- - bpo-28097: Add Previous/Next History entries to Shell menu.
- - bpo-35208: Squeezer now properly counts wrapped lines before newlines.
- - bpo-35555: Gray out Code Context menu entry when it's not applicable.
- - bpo-35521: Document the IDLE editor code context feature. Add some
- internal references within the IDLE doc.
- - bpo-22703: The Code Context menu label now toggles between Show/Hide Code
- Context. The Zoom Height menu now toggles between Zoom/Restore Height.
- Zoom Height has moved from the Window menu to the Options menu.
- Tools/Demos
- -----------
- - bpo-35132: Fix py-list and py-bt commands of python-gdb.py on gdb7.
- C API
- -----
- - bpo-33817: Fixed :c:func:`_PyBytes_Resize` for empty bytes objects.
- What's New in Python 3.7.2 final?
- =================================
- *Release date: 2018-12-23*
- Library
- -------
- - bpo-31715: Associate ``.mjs`` file extension with
- ``application/javascript`` MIME Type.
- Build
- -----
- - bpo-35499: ``make profile-opt`` no longer replaces ``CFLAGS_NODIST`` with
- ``CFLAGS``. It now adds profile-guided optimization (PGO) flags to
- ``CFLAGS_NODIST``: existing ``CFLAGS_NODIST`` flags are kept.
- - bpo-35257: Avoid leaking the linker flags from Link Time Optimizations
- (LTO) into distutils when compiling C extensions.
- C API
- -----
- - bpo-35259: Conditionally declare :c:func:`Py_FinalizeEx()` (new in 3.6)
- based on Py_LIMITED_API. Patch by Arthur Neufeld.
- What's New in Python 3.7.2 release candidate 1?
- ===============================================
- *Release date: 2018-12-11*
- Security
- --------
- - bpo-34812: The :option:`-I` command line option (run Python in isolated
- mode) is now also copied by the :mod:`multiprocessing` and
- :mod:`distutils` modules when spawning child processes. Previously, only
- :option:`-E` and :option:`-s` options (enabled by :option:`-I`) were
- copied.
- - bpo-34791: The xml.sax and xml.dom.domreg no longer use environment
- variables to override parser implementations when
- sys.flags.ignore_environment is set by -E or -I arguments.
- Core and Builtins
- -----------------
- - bpo-35444: Fixed error handling in pickling methods when fail to look up
- builtin "getattr".
- - bpo-35436: Fix various issues with memory allocation error handling.
- Patch by Zackery Spytz.
- - bpo-35357: Internal attributes' names of unittest.mock._Call and
- unittest.mock.MagicProxy (name, parent & from_kall) are now prefixed with
- _mock_ in order to prevent clashes with widely used object attributes.
- Fixed minor typo in test function name.
- - bpo-35372: Fixed the code page decoder for input longer than 2 GiB
- containing undecodable bytes.
- - bpo-35336: Fix PYTHONCOERCECLOCALE=1 environment variable: only coerce the
- C locale if the LC_CTYPE locale is "C".
- - bpo-33954: For :meth:`str.format`, :meth:`float.__format__` and
- :meth:`complex.__format__` methods for non-ASCII decimal point when using
- the "n" formatter.
- - bpo-35269: Fix a possible segfault involving a newly-created coroutine.
- Patch by Zackery Spytz.
- - bpo-35214: Fixed an out of bounds memory access when parsing a truncated
- unicode escape sequence at the end of a string such as ``'\N'``. It would
- read one byte beyond the end of the memory allocation.
- - bpo-35214: The interpreter and extension modules have had annotations
- added so that they work properly under clang's Memory Sanitizer. A new
- configure flag --with-memory-sanitizer has been added to make test builds
- of this nature easier to perform.
- - bpo-35193: Fix an off by one error in the bytecode peephole optimizer
- where it could read bytes beyond the end of bounds of an array when
- removing unreachable code. This bug was present in every release of Python
- 3.6 and 3.7 until now.
- - bpo-29341: Clarify in the docstrings of :mod:`os` methods that path-like
- objects are also accepted as input parameters.
- - bpo-35050: :mod:`socket`: Fix off-by-one bug in length check for
- ``AF_ALG`` name and type.
- - bpo-34974: :class:`bytes` and :class:`bytearray` constructors no longer
- convert unexpected exceptions (e.g. :exc:`MemoryError` and
- :exc:`KeyboardInterrupt`) to :exc:`TypeError`.
- - bpo-34973: Fixed crash in :func:`bytes` when the :class:`list` argument is
- mutated while it is iterated.
- - bpo-34824: Fix a possible null pointer dereference in Modules/_ssl.c.
- Patch by Zackery Spytz.
- - bpo-1621: Do not assume signed integer overflow behavior (C undefined
- behavior) when performing set hash table resizing.
- Library
- -------
- - bpo-35052: Fix xml.dom.minidom cloneNode() on a document with an entity:
- pass the correct arguments to the user data handler of an entity.
- - bpo-35330: When a :class:`Mock` instance was used to wrap an object, if
- `side_effect` is used in one of the mocks of it methods, don't call the
- original implementation and return the result of using the side effect the
- same way that it is done with return_value.
- - bpo-34172: Revert the fix for this issue previously released in 3.7.1
- pending further investigation: Fix a reference issue inside
- multiprocessing.Pool that caused the pool to remain alive if it was
- deleted without being closed or terminated explicitly.
- - bpo-10496: :func:`posixpath.expanduser` now returns the input *path*
- unchanged if the ``HOME`` environment variable is not set and the current
- user has no home directory (if the current user identifier doesn't exist
- in the password database). This change fix the :mod:`site` module if the
- current user doesn't exist in the password database (if the user has no
- home directory).
- - bpo-35310: Fix a bug in :func:`select.select` where, in some cases, the
- file descriptor sequences were returned unmodified after a signal
- interruption, even though the file descriptors might not be ready yet.
- :func:`select.select` will now always return empty lists if a timeout has
- occurred. Patch by Oran Avraham.
- - bpo-35380: Enable TCP_NODELAY on Windows for proactor asyncio event loop.
- - bpo-35341: Add generic version of ``collections.OrderedDict`` to the
- ``typing`` module. Patch by Ismo Toijala.
- - bpo-35371: Fixed possible crash in ``os.utime()`` on Windows when pass
- incorrect arguments.
- - bpo-27903: Fix ``ResourceWarning`` in :func:`platform.dist` on SuSE and
- Caldera OpenLinux. Patch by Ville Skyttä.
- - bpo-35308: Fix regression in ``webbrowser`` where default browsers may be
- preferred over browsers in the ``BROWSER`` environment variable.
- - bpo-28604: :func:`locale.localeconv` now sets temporarily the ``LC_CTYPE``
- locale to the ``LC_MONETARY`` locale if the two locales are different and
- monetary strings are non-ASCII. This temporary change affects other
- threads.
- - bpo-35277: Update ensurepip to install pip 18.1 and setuptools 40.6.2.
- - bpo-35226: Recursively check arguments when testing for equality of
- :class:`unittest.mock.call` objects and add note that tracking of
- parameters used to create ancestors of mocks in ``mock_calls`` is not
- possible.
- - bpo-29564: The warnings module now suggests to enable tracemalloc if the
- source is specified, the tracemalloc module is available, but tracemalloc
- is not tracing memory allocations.
- - bpo-35189: Modify the following fnctl function to retry if interrupted by
- a signal (EINTR): flock, lockf, fnctl
- - bpo-35062: Fix incorrect parsing of
- :class:`_io.IncrementalNewlineDecoder`'s *translate* argument.
- - bpo-35079: Improve difflib.SequenceManager.get_matching_blocks doc by
- adding 'non-overlapping' and changing '!=' to '<'.
- - bpo-35017: :meth:`socketserver.BaseServer.serve_forever` now exits
- immediately if it's :meth:`~socketserver.BaseServer.shutdown` method is
- called while it is polling for new events.
- - bpo-31047: Fix ``ntpath.abspath`` regression where it didn't remove a
- trailing separator on Windows. Patch by Tim Graham.
- - bpo-34794: Fixed a leak in Tkinter when pass the Python wrapper around
- Tcl_Obj back to Tcl/Tk.
- - bpo-35008: Fixed references leaks when call the ``__setstate__()`` method
- of :class:`xml.etree.ElementTree.Element` in the C implementation for
- already initialized element.
- - bpo-23420: Verify the value for the parameter '-s' of the cProfile CLI.
- Patch by Robert Kuska
- - bpo-33947: dataclasses now handle recursive reprs without raising
- RecursionError.
- - bpo-16965: The :term:`2to3` :2to3fixer:`execfile` fixer now opens the file
- with mode ``'rb'``. Patch by Zackery Spytz.
- - bpo-34966: :mod:`pydoc` now supports aliases not only to methods defined
- in the end class, but also to inherited methods. The docstring is not
- duplicated for aliases.
- - bpo-34941: Methods ``find()``, ``findtext()`` and ``findall()`` of the
- ``Element`` class in the :mod:`xml.etree.ElementTree` module are now able
- to find children which are instances of ``Element`` subclasses.
- - bpo-34936: Fix ``TclError`` in ``tkinter.Spinbox.selection_element()``.
- Patch by Juliette Monsel.
- - bpo-34866: Adding ``max_num_fields`` to ``cgi.FieldStorage`` to make DOS
- attacks harder by limiting the number of ``MiniFieldStorage`` objects
- created by ``FieldStorage``.
- - bpo-34022: The :envvar:`SOURCE_DATE_EPOCH` environment variable no longer
- overrides the value of the *invalidation_mode* argument to
- :func:`py_compile.compile`, and determines its default value instead.
- - bpo-34738: ZIP files created by :mod:`distutils` will now include entries
- for directories.
- - bpo-31177: Fix bug that prevented using :meth:`reset_mock
- <unittest.mock.Mock.reset_mock>` on mock instances with deleted attributes
- - bpo-34536: `Enum._missing_`: raise `ValueError` if None returned and
- `TypeError` if non-member is returned.
- - bpo-34604: Fix possible mojibake in the error message of `pwd.getpwnam`
- and `grp.getgrnam` using string representation because of invisible
- characters or trailing whitespaces. Patch by William Grzybowski.
- - bpo-34574: OrderedDict iterators are not exhausted during pickling
- anymore. Patch by Sergey Fedoseev.
- - bpo-34052: :meth:`sqlite3.Connection.create_aggregate`,
- :meth:`sqlite3.Connection.create_function`,
- :meth:`sqlite3.Connection.set_authorizer`,
- :meth:`sqlite3.Connection.set_progress_handler` methods raises TypeError
- when unhashable objects are passed as callable. These methods now don't
- pass such objects to SQLite API. Previous behavior could lead to
- segfaults. Patch by Sergey Fedoseev.
- - bpo-29877: compileall: import ProcessPoolExecutor only when needed,
- preventing hangs on low resource platforms
- - bpo-22005: Implemented unpickling instances of
- :class:`~datetime.datetime`, :class:`~datetime.date` and
- :class:`~datetime.time` pickled by Python 2. ``encoding='latin1'`` should
- be used for successful decoding.
- Documentation
- -------------
- - bpo-35089: Remove mention of ``typing.io`` and ``typing.re``. Their types
- should be imported from ``typing`` directly.
- - bpo-35038: Fix the documentation about an unexisting `f_restricted`
- attribute in the frame object. Patch by Stéphane Wirtel
- - bpo-35044: Fix the documentation with the role ``exc`` for the
- appropriated exception. Patch by Stéphane Wirtel
- - bpo-35035: Rename documentation for :mod:`email.utils` to
- ``email.utils.rst``.
- - bpo-34967: Use app.add_object_type() instead of the deprecated Sphinx
- function app.description_unit()
- - bpo-11233: Create availability directive for documentation. Original
- patch by Georg Brandl.
- - bpo-33594: Document ``getargspec``, ``from_function`` and ``from_builtin``
- as deprecated in their respective docstring, and include version since
- deprecation in DeprecationWarning message.
- - bpo-32613: Update the faq/windows.html to use the py command from PEP 397
- instead of python.
- Tests
- -----
- - bpo-33725: test_multiprocessing_fork may crash on recent versions of
- macOS. Until the issue is resolved, skip the test on macOS.
- - bpo-35352: Modify test_asyncio to use the certificate set from the test
- directory.
- - bpo-35317: Fix ``mktime()`` overflow error in ``test_email``: run
- ``test_localtime_daylight_true_dst_true()`` and
- ``test_localtime_daylight_false_dst_true()`` with a specific timezone.
- - bpo-21263: After several reports that test_gdb does not work properly on
- macOS and since gdb is not shipped by default anymore, test_gdb is now
- skipped on macOS when LLVM Clang has been used to compile Python. Patch by
- Lysandros Nikolaou
- - bpo-34279: regrtest issue a warning when no tests have been executed in a
- particular test file. Also, a new final result state is issued if no test
- have been executed across all test files. Patch by Pablo Galindo.
- Build
- -----
- - bpo-35296: The Windows installer (MSI) now also install internal header
- files (``Include/internal/`` subdirectory).
- - bpo-35351: When building Python with clang and LTO, LTO flags are no
- longer passed into CFLAGS to build third-party C extensions through
- distutils.
- - bpo-35139: Fix a compiler error when statically linking `pyexpat` in
- `Modules/Setup`.
- - bpo-35011: Restores the use of pyexpatns.h to isolate our embedded copy of
- the expat C library so that its symbols do not conflict at link or dynamic
- loading time with an embedding application or other extension modules with
- their own version of libexpat.
- - bpo-28015: Have --with-lto works correctly with clang.
- - bpo-33015: Fix an undefined behaviour in the pthread implementation of
- :c:func:`PyThread_start_new_thread`: add a function wrapper to always
- return ``NULL``.
- Windows
- -------
- - bpo-35401: Updates Windows build to OpenSSL 1.1.0j
- - bpo-34977: venv on Windows will now use a python.exe redirector rather
- than copying the actual binaries from the base environment.
- - bpo-34977: Adds support for building a Windows App Store package
- - bpo-35067: Remove _distutils_findvs module and use vswhere.exe instead.
- - bpo-34532: Fixes exit code of list version arguments for py.exe.
- - bpo-32890: Fix usage of GetLastError() instead of errno in os.execve() and
- os.truncate().
- macOS
- -----
- - bpo-35402: Update macOS installer to use Tcl/Tk 8.6.9.1. [NOTE: This
- change was reverted for the released python.org 3.7.2 macOS installers due
- to regressions found in Tk 8.6.9.1. For now, the installers provide
- Tcl/Tk 8.6.8.]
- - bpo-35401: Update macOS installer to use OpenSSL 1.1.0j.
- - bpo-35025: Properly guard the use of the ``CLOCK_GETTIME`` et al. macros
- in ``timemodule`` on macOS.
- - bpo-24658: On macOS, fix reading from and writing into a file with a size
- larger than 2 GiB.
- IDLE
- ----
- - bpo-35213: Where appropriate, use 'macOS' in idlelib.
- - bpo-34864: On macOS, warn if the system preference "Prefer tabs when
- opening documents" is set to "Always".
- - bpo-34864: Document two IDLE on MacOS issues. The System Preferences Dock
- "prefer tabs always" setting disables some IDLE features. Menus are a bit
- different than as described for Windows and Linux.
- - bpo-35202: Remove unused imports from lib/idlelib
- - bpo-33000: Document that IDLE's shell has no line limit. A program that
- runs indefinitely can overfill memory.
- - bpo-23220: Explain how IDLE's Shell displays output.
- - bpo-35099: Improve the doc about IDLE running user code. The section is
- renamed from "IDLE -- console differences" is renamed "Running user code".
- It mostly covers the implications of using custom sys.stdxxx objects.
- - bpo-35097: Add IDLE doc subsection explaining editor windows. Topics
- include opening, title and status bar, .py* extension, and running.
- - bpo-35093: Document the IDLE document viewer in the IDLE doc. Add a
- paragraph in "Help and preferences", "Help sources" subsection.
- - bpo-35088: Update idlelib.help.copy_string docstring. We now use git and
- backporting instead of hg and forward merging.
- - bpo-35087: Update idlelib help files for the current doc build. The main
- change is the elimination of chapter-section numbers.
- Tools/Demos
- -----------
- - bpo-34989: python-gdb.py now handles errors on computing the line number
- of a Python frame.
- C API
- -----
- - bpo-35322: Fix memory leak in :c:func:`PyUnicode_EncodeLocale` and
- :c:func:`PyUnicode_EncodeFSDefault` on error handling.
- - bpo-35296: ``make install`` now also installs the internal API:
- ``Include/internal/*.h`` header files.
- - bpo-34725: Adds _Py_SetProgramFullPath so embedders may override
- sys.executable
- What's New in Python 3.7.1 final?
- =================================
- *Release date: 2018-10-20*
- Library
- -------
- - bpo-34970: Protect tasks weak set manipulation in ``asyncio.all_tasks()``
- What's New in Python 3.7.1 release candidate 2?
- ===============================================
- *Release date: 2018-10-13*
- Core and Builtins
- -----------------
- - bpo-34879: Fix a possible null pointer dereference in bytesobject.c.
- Patch by Zackery Spytz.
- - bpo-34854: Fixed a crash in compiling string annotations containing a
- lambda with a keyword-only argument that doesn't have a default value.
- - bpo-34320: Fix ``dict(od)`` didn't copy iteration order of OrderedDict.
- Library
- -------
- - bpo-34769: Fix for async generators not finalizing when event loop is in
- debug mode and garbage collector runs in another thread.
- - bpo-34922: Fixed integer overflow in the :meth:`~hashlib.shake.digest()`
- and :meth:`~hashlib.shake.hexdigest()` methods for the SHAKE algorithm in
- the :mod:`hashlib` module.
- - bpo-34909: Enum: fix grandchildren subclassing when parent mixed with
- concrete data types.
- - bpo-34900: Fixed :meth:`unittest.TestCase.debug` when used to call test
- methods with subtests. Patch by Bruno Oliveira.
- - bpo-34871: Fix inspect module polluted ``sys.modules`` when parsing
- ``__text_signature__`` of callable.
- - bpo-34872: Fix self-cancellation in C implementation of asyncio.Task
- - bpo-34819: Use a monotonic clock to compute timeouts in
- :meth:`Executor.map` and :func:`as_completed`, in order to prevent
- timeouts from deviating when the system clock is adjusted.
- - bpo-34521: Use :func:`socket.CMSG_SPACE` to calculate ancillary data size
- instead of :func:`socket.CMSG_LEN` in
- :func:`multiprocessing.reduction.recvfds` as :rfc:`3542` requires the use
- of the former for portable applications.
- - bpo-34334: In :class:`QueueHandler`, clear `exc_text` from
- :class:`LogRecord` to prevent traceback from being written twice.
- - bpo-6721: Acquire the logging module's commonly used internal locks while
- fork()ing to avoid deadlocks in the child process.
- - bpo-34172: Fix a reference issue inside multiprocessing.Pool that caused
- the pool to remain alive if it was deleted without being closed or
- terminated explicitly.
- Documentation
- -------------
- - bpo-32174: chm document displays non-ASCII charaters properly on some MBCS
- Windows systems.
- Tests
- -----
- - bpo-32962: Fixed test_gdb when Python is compiled with flags -mcet
- -fcf-protection -O0.
- macOS
- -----
- - bpo-34370: Revert to using the released Tk 8.6.8 with macOS installers
- instead of the Tk 8.6.x development snapshot used with 3.7.1rc1 and
- 3.6.7rc1. The snapshot introduced at least one significant regression
- (bpo-34927).
- C API
- -----
- - bpo-34910: Ensure that :c:func:`PyObject_Print` always returns ``-1`` on
- error. Patch by Zackery Spytz.
- What's New in Python 3.7.1 release candidate 1?
- ===============================================
- *Release date: 2018-09-26*
- Security
- --------
- - bpo-17239: The xml.sax and xml.dom.minidom parsers no longer processes
- external entities by default. External DTD and ENTITY declarations no
- longer load files or create network connections.
- - bpo-34623: CVE-2018-14647: The C accelerated _elementtree module now
- initializes hash randomization salt from _Py_HashSecret instead of
- libexpat's default CSPRNG.
- - bpo-34405: Updated to OpenSSL 1.1.0i for Windows builds.
- - bpo-33871: Fixed sending the part of the file in :func:`os.sendfile` on
- macOS. Using the *trailers* argument could cause sending more bytes from
- the input file than was specified.
- - bpo-32533: Fixed thread-safety of error handling in _ssl.
- Core and Builtins
- -----------------
- - bpo-34783: Fix a crash with musl libc (on Alpine Linux) when the script
- filename specified on the command line doesn't exist.
- - bpo-34762: Fix contextvars C API to use PyObject* pointer types.
- - bpo-34735: Fix a memory leak in Modules/timemodule.c. Patch by Zackery
- Spytz.
- - bpo-34588: Fix an off-by-one in the recursive call pruning feature of
- traceback formatting.
- - bpo-34485: Standard streams like sys.stdout now use the "surrogateescape"
- error handler, instead of "strict", on the POSIX locale (when the C locale
- is not coerced and the UTF-8 Mode is disabled).
- - bpo-34485: Fix the error handler of standard streams like sys.stdout:
- PYTHONIOENCODING=":" is now ignored instead of setting the error handler
- to "strict".
- - bpo-34527: On FreeBSD, Py_DecodeLocale() and Py_EncodeLocale() now also
- forces the ASCII encoding if the LC_CTYPE locale is "POSIX", not only if
- the LC_CTYPE locale is "C".
- - bpo-34527: The UTF-8 Mode is now also enabled by the "POSIX" locale, not
- only by the "C" locale.
- - bpo-34400: Fix undefined behavior in parsetok.c. Patch by Zackery Spytz.
- - bpo-34377: Update valgrind suppression list to use
- ``_PyObject_Free``/``_PyObject_Realloc`` instead of
- ``PyObject_Free``/``PyObject_Realloc``.
- - bpo-34170: -X dev: it is now possible to override the memory allocator
- using PYTHONMALLOC even if the developer mode is enabled.
- - bpo-34126: Fix crashes when profiling certain invalid calls of unbound
- methods. Patch by Jeroen Demeyer.
- - bpo-24618: Fixed reading invalid memory when create the code object with
- too small varnames tuple or too large argument counts.
- - bpo-34068: In :meth:`io.IOBase.close`, ensure that the
- :attr:`~io.IOBase.closed` attribute is not set with a live exception.
- Patch by Zackery Spytz and Serhiy Storchaka.
- - bpo-34087: Fix buffer overflow while converting unicode to numeric values.
- - bpo-34080: Fixed a memory leak in the compiler when it raised some
- uncommon errors during tokenizing.
- - bpo-34066: Disabled interruption by Ctrl-C between calling ``open()`` and
- entering a **with** block in ``with open()``.
- - bpo-34042: Fix dict.copy() to maintain correct total refcount (as reported
- by sys.gettotalrefcount()).
- - bpo-33985: Implement contextvars.ContextVar.name attribute.
- - bpo-33956: Update vendored Expat library copy to version 2.2.5.
- - bpo-24596: Decref the module object in :c:func:`PyRun_SimpleFileExFlags`
- before calling :c:func:`PyErr_Print()`. Patch by Zackery Spytz.
- - bpo-33451: Close directly executed pyc files before calling
- ``PyEval_EvalCode()``.
- - bpo-33824: Fix "LC_ALL=C python3.7 -V": reset properly the command line
- parser when the encoding changes after reading the Python configuration.
- - bpo-25750: Fix rare Python crash due to bad refcounting in
- ``type_getattro()`` if a descriptor deletes itself from the class. Patch
- by Jeroen Demeyer.
- - bpo-31902: Fix the ``col_offset`` attribute for ast nodes
- ``ast.AsyncFor``, ``ast.AsyncFunctionDef``, and ``ast.AsyncWith``.
- Previously, ``col_offset`` pointed to the keyword after ``async``.
- - bpo-25862: Fix assertion failures in the ``tell()`` method of
- ``io.TextIOWrapper``. Patch by Zackery Spytz.
- - bpo-31577: Fix a crash in `os.utime()` in case of a bad ns argument. Patch
- by Oren Milman.
- Library
- -------
- - bpo-29577: Support multiple mixin classes when creating Enums.
- - bpo-34670: Add SSLContext.post_handshake_auth and
- SSLSocket.verify_client_post_handshake for TLS 1.3's post handshake
- authentication feature.
- - bpo-34658: Fix a rare interpreter unhandled exception state SystemError
- only seen when using subprocess with a preexec_fn while an after_parent
- handler has been registered with os.register_at_fork and the fork system
- call fails.
- - bpo-34652: Ensure :func:`os.lchmod` is never defined on Linux.
- - bpo-34363: dataclasses.asdict() and .astuple() now handle namedtuples
- correctly.
- - bpo-34625: Update vendorized expat library version to 2.2.6.
- - bpo-34621: Fix un/pickling compatbility of uuid.UUID objects with older
- versions of Python (<3.7).
- - bpo-32270: The subprocess module no longer mistakenly closes redirected
- fds even when they were in pass_fds when outside of the default {0, 1, 2}
- set.
- - bpo-34610: Fixed iterator of :class:`multiprocessing.managers.DictProxy`.
- - bpo-34421: Fix distutils logging for non-ASCII strings. This caused
- installation issues on Windows.
- - bpo-34604: Fix possible mojibake in the error message of `pwd.getpwnam`
- and `grp.getgrnam`. Patch by William Grzybowski.
- - bpo-34530: ``distutils.spawn.find_executable()`` now falls back on
- :data:`os.defpath` if the ``PATH`` environment variable is not set.
- - bpo-34282: Fix enum members getting shadowed by parent attributes.
- - bpo-34563: On Windows, fix multiprocessing.Connection for very large read:
- fix _winapi.PeekNamedPipe() and _winapi.ReadFile() for read larger than
- INT_MAX (usually 2^31-1).
- - bpo-34558: Correct typo in Lib/ctypes/_aix.py
- - bpo-34515: Fix parsing non-ASCII identifiers in
- :mod:`lib2to3.pgen2.tokenize` (PEP 3131).
- - bpo-13312: Avoids a possible integer underflow (undefined behavior) in the
- time module's year handling code when passed a very low negative year
- value.
- - bpo-34472: Improved compatibility for streamed files in :mod:`zipfile`.
- Previously an optional signature was not being written and certain ZIP
- applications were not supported. Patch by Silas Sewell.
- - bpo-34454: Fix the .fromisoformat() methods of datetime types crashing
- when given unicode with non-UTF-8-encodable code points. Specifically,
- datetime.fromisoformat() now accepts surrogate unicode code points used as
- the separator. Report and tests by Alexey Izbyshev, patch by Paul Ganssle.
- - bpo-6700: Fix inspect.getsourcelines for module level frames/tracebacks.
- Patch by Vladimir Matveev.
- - bpo-34171: Running the :mod:`trace` module no longer creates the
- ``trace.cover`` file.
- - bpo-34441: Fix crash when an ``ABC``-derived class with invalid
- ``__subclasses__`` is passed as the second argument to
- :func:`issubclass()`. Patch by Alexey Izbyshev.
- - bpo-34341: Appending to the ZIP archive with the ZIP64 extension no longer
- grows the size of extra fields of existing entries.
- - bpo-34333: Fix %-formatting in :meth:`pathlib.PurePath.with_suffix` when
- formatting an error message.
- - bpo-18540: The :class:`imaplib.IMAP4` and :class:`imaplib.IMAP4_SSL`
- classes now resolve to the local host IP correctly when the default value
- of *host* parameter (``''``) is used.
- - bpo-34246: :meth:`smtplib.SMTP.send_message` no longer modifies the
- content of the *mail_options* argument. Patch by Pablo S. Blum de Aguiar.
- - bpo-31047: Fix ``ntpath.abspath`` for invalid paths on windows. Patch by
- Franz Woellert.
- - bpo-34263: asyncio's event loop will not pass timeouts longer than one day
- to epoll/select etc.
- - bpo-34035: Fix several AttributeError in zipfile seek() methods. Patch by
- Mickaël Schoentgen.
- - bpo-32215: Fix performance regression in :mod:`sqlite3` when a DML
- statement appeared in a different line than the rest of the SQL query.
- - bpo-34251: Restore ``msilib.Win64`` to preserve backwards compatibility
- since it's already used by :mod:`distutils`' ``bdist_msi`` command.
- - bpo-19891: Ignore errors caused by missing / non-writable homedir while
- writing history during exit of an interactive session. Patch by Anthony
- Sottile.
- - bpo-34213: Allow frozen dataclasses to have a field named "object".
- Previously this conflicted with an internal use of "object".
- - bpo-21446: The :2to3fixer:`reload` fixer now uses :func:`importlib.reload`
- instead of deprecated :func:`imp.reload`.
- - bpo-940286: pydoc's ``Helper.showtopic()`` method now prints the cross
- references of a topic correctly.
- - bpo-34164: :func:`base64.b32decode` could raise UnboundLocalError or
- OverflowError for incorrect padding. Now it always raises
- :exc:`base64.Error` in these cases.
- - bpo-33729: Fixed issues with arguments parsing in :mod:`hashlib`.
- - bpo-34108: Remove extraneous CR in 2to3 refactor.
- - bpo-27494: Reverted :issue:`27494`. 2to3 rejects now a trailing comma in
- generator expressions.
- - bpo-33967: functools.singledispatch now raises TypeError instead of
- IndexError when no positional arguments are passed.
- - bpo-34056: Ensure the loader shim created by ``imp.load_module`` always
- returns bytes from its ``get_data()`` function. This fixes using
- ``imp.load_module`` with :pep:`552` hash-based pycs.
- - bpo-34054: The multiprocessing module now uses the monotonic clock
- :func:`time.monotonic` instead of the system clock :func:`time.time` to
- implement timeout.
- - bpo-34044: ``subprocess.Popen`` now copies the *startupinfo* argument to
- leave it unchanged: it will modify the copy, so that the same
- ``STARTUPINFO`` object can be used multiple times.
- - bpo-34010: Fixed a performance regression for reading streams with
- tarfile. The buffered read should use a list, instead of appending to a
- bytes object.
- - bpo-34019: webbrowser: Correct the arguments passed to Opera Browser when
- opening a new URL using the ``webbrowser`` module. Patch by Bumsik Kim.
- - bpo-33978: Closed existing logging handlers before reconfiguration via
- fileConfig and dictConfig. Patch by Karthikeyan Singaravelan.
- - bpo-14117: Make minor tweaks to turtledemo. The 'wikipedia' example is now
- 'rosette', decribing what it draws. The 'penrose' print output is
- reduced. The'1024' output of 'tree' is eliminated.
- - bpo-33974: Fixed passing lists and tuples of strings containing special
- characters ``"``, ``\``, ``{``, ``}`` and ``\n`` as options to
- :mod:`~tkinter.ttk` widgets.
- - bpo-27500: Fix getaddrinfo to resolve IPv6 addresses correctly.
- - bpo-24567: Improve random.choices() to handle subnormal input weights that
- could occasionally trigger an IndexError.
- - bpo-33871: Fixed integer overflow in :func:`os.readv`, :func:`os.writev`,
- :func:`os.preadv` and :func:`os.pwritev` and in :func:`os.sendfile` with
- *headers* or *trailers* arguments (on BSD-based OSes and macOS).
- - bpo-33899: Tokenize module now implicitly emits a NEWLINE when provided
- with input that does not have a trailing new line. This behavior now
- matches what the C tokenizer does internally. Contributed by Ammar Askar.
- - bpo-33916: bz2 and lzma: When Decompressor.__init__() is called twice,
- free the old lock to not leak memory.
- - bpo-32568: Make select.epoll() and its documentation consistent regarding
- *sizehint* and *flags*.
- - bpo-33833: Fixed bug in asyncio where ProactorSocketTransport logs
- AssertionError if force closed during write.
- - bpo-33663: Convert content length to string before putting to header.
- - bpo-26544: Fixed implementation of :func:`platform.libc_ver`. It almost
- always returned version '2.9' for glibc.
- - bpo-33805: Improve error message of dataclasses.replace() when an InitVar
- is not specified
- - bpo-27397: Make email module properly handle invalid-length base64
- strings.
- - bpo-33476: Fix _header_value_parser.py when address group is missing final
- ';'. Contributed by Enrique Perez-Terron
- - bpo-31014: Fixed creating a controller for :mod:`webbrowser` when a user
- specifies a path to an entry in the BROWSER environment variable. Based
- on patch by John Still.
- - bpo-33365: Print the header values besides the header keys instead just
- the header keys if *debuglevel* is set to >0 in :mod:`http.client`. Patch
- by Marco Strigl.
- - bpo-32933: :func:`unittest.mock.mock_open` now supports iteration over the
- file contents. Patch by Tony Flury.
- - bpo-33336: ``imaplib`` now allows ``MOVE`` command in ``IMAP4.uid()`` (RFC
- 6851: IMAP MOVE Extension) and potentially as a name of supported method
- of ``IMAP4`` object.
- - bpo-31608: Raise a ``TypeError`` instead of crashing if a
- ``collections.deque`` subclass returns a non-deque from ``__new__``. Patch
- by Oren Milman.
- - bpo-29456: Fix bugs in hangul normalization: u1176, u11a7 and u11c3
- Documentation
- -------------
- - bpo-34790: Document how passing coroutines to asyncio.wait() can be
- confusing.
- - bpo-28617: Fixed info in the stdtypes docs concerning the types that
- support membership tests.
- - bpo-34065: Fix wrongly written basicConfig documentation markup syntax
- - bpo-33460: replaced ellipsis with correct error codes in tutorial chapter
- 3.
- - bpo-33847: Add '@' operator entry to index.
- - bpo-25041: Document ``AF_PACKET`` in the :mod:`socket` module.
- Tests
- -----
- - bpo-34537: Fix ``test_gdb.test_strings()`` when ``LC_ALL=C`` and GDB was
- compiled with Python 3.6 or earlier.
- - bpo-34587: test_socket: Remove RDSTest.testCongestion(). The test tries to
- fill the receiver's socket buffer and expects an error. But the RDS
- protocol doesn't require that. Moreover, the Linux implementation of RDS
- expects that the producer of the messages reduces its rate, it's not the
- role of the receiver to trigger an error. The test fails on Fedora 28 by
- design, so just remove it.
- - bpo-34661: Fix test_shutil if unzip doesn't support -t.
- - bpo-34200: Fixed non-deterministic flakiness of test_pkg by not using the
- scary test.support.module_cleanup() logic to save and restore sys.modules
- contents between test cases.
- - bpo-34594: Fix usage of hardcoded ``errno`` values in the tests.
- - bpo-34542: Use 3072 RSA keys and SHA-256 signature for test certs and
- keys.
- - bpo-11193: Remove special condition for AIX in
- `test_subprocess.test_undecodable_env`
- - bpo-34490: On AIX with AF_UNIX family sockets getsockname() does not
- provide 'sockname', so skip calls to transport.get_extra_info('sockname')
- - bpo-34391: Fix ftplib test for TLS 1.3 by reading from data socket.
- - bpo-34399: Update all RSA keys and DH params to use at least 2048 bits.
- - bpo-33746: Fix test_unittest when run in verbose mode.
- - bpo-33901: Fix test_dbm_gnu on macOS with gdbm 1.15: add a larger value to
- make sure that the file size changes.
- - bpo-33873: Fix a bug in ``regrtest`` that caused an extra test to run if
- --huntrleaks/-R was used. Exit with error in case that invalid parameters
- are specified to --huntrleaks/-R (at least one warmup run and one
- repetition must be used).
- - bpo-32663: Making sure the `SMTPUTF8SimTests` class of tests gets run in
- test_smtplib.py.
- Build
- -----
- - bpo-34710: Fixed SSL module build with OpenSSL & pedantic CFLAGS.
- - bpo-34582: Add JUnit XML output for regression tests and update Azure
- DevOps builds.
- - bpo-34555: Fix for case where it was not possible to have both
- ``HAVE_LINUX_VM_SOCKETS_H`` and ``HAVE_SOCKADDR_ALG`` be undefined.
- - bpo-34121: Fix detection of C11 atomic support on clang.
- - bpo-30345: Add -g to LDFLAGS when compiling with LTO to get debug symbols.
- - bpo-33648: The --with-c-locale-warning configuration flag has been
- removed. It has had no effect for about a year.
- Windows
- -------
- - bpo-34770: Fix a possible null pointer dereference in pyshellext.cpp.
- - bpo-34603: Fix returning structs from functions produced by MSVC
- - bpo-34581: Guard MSVC-specific code in socketmodule.c with ``#ifdef
- _MSC_VER``.
- - bpo-34062: Fixed the '--list' and '--list-paths' arguments for the py.exe
- launcher
- - bpo-34225: Ensure INCLUDE and LIB directories do not end with a backslash.
- - bpo-34006: Revert line length limit for Windows help docs. The line-length
- limit is not needed because the pages appear in a separate app rather than
- on a browser tab. It can also interact badly with the DPI setting.
- - bpo-31546: Restore running PyOS_InputHook while waiting for user input at
- the prompt. The restores integration of interactive GUI windows (such as
- Matplotlib figures) with the prompt on Windows.
- - bpo-30237: Output error when ReadConsole is canceled by
- CancelSynchronousIo instead of crashing.
- - bpo-29097: Fix bug where :meth:`datetime.fromtimestamp` erronously throws
- an :exc:`OSError` on Windows for values between 0 and 86400. Patch by
- Ammar Askar.
- macOS
- -----
- - bpo-34370: Have macOS 10.9+ installer builds for 3.7.1rc and 3.6.7rc use a
- development snapshot of Tk 8.6 (post-8.6.8) to mitigate certain scroller
- issues seen with IDLE and tkinter apps.
- - bpo-34405: Update to OpenSSL 1.1.0i for macOS installer builds.
- - bpo-33635: In macOS stat on some file descriptors (/dev/fd/3 f.e) will
- result in bad file descriptor OSError. Guard against this exception was
- added in is_dir, is_file and similar methods. DirEntry.is_dir can also
- throw this exception so _RecursiveWildcardSelector._iterate_directories
- was also extended with the same error ignoring pattern.
- - bpo-31903: In :mod:`_scproxy`, drop the GIL when calling into
- ``SystemConfiguration`` to avoid deadlocks.
- IDLE
- ----
- - bpo-34548: Use configured color theme for read-only text views.
- - bpo-1529353: Enable "squeezing" of long outputs in the shell, to avoid
- performance degradation and to clean up the history without losing it.
- Squeezed outputs may be copied, viewed in a separate window, and
- "unsqueezed".
- - bpo-34047: Fixed mousewheel scrolling direction on macOS.
- - bpo-34275: Make IDLE calltips always visible on Mac. Some MacOS-tk
- combinations need .update_idletasks(). Patch by Kevin Walzer.
- - bpo-34120: Fix unresponsiveness after closing certain windows and dialogs.
- - bpo-33975: Avoid small type when running htests. Since part of the purpose
- of human-viewed tests is to determine that widgets look right, it is
- important that they look the same for testing as when running IDLE.
- - bpo-33905: Add test for idlelib.stackview.StackBrowser.
- - bpo-33924: Change mainmenu.menudefs key 'windows' to 'window'. Every other
- menudef key is lowercase version of main menu entry.
- - bpo-33906: Rename idlelib.windows as window Match Window on the main menu
- and remove last plural module name.
- - bpo-33917: Fix and document idlelib/idle_test/template.py. The revised
- file compiles, runs, and tests OK. idle_test/README.txt explains how to
- use it to create new IDLE test files.
- - bpo-33904: IDLE: In rstrip, rename class RstripExtension as Rstrip
- - bpo-33907: For consistency and clarity, rename an IDLE module and classes.
- Module calltips and its class CallTips are now calltip and Calltip. In
- module calltip_w, class CallTip is now CalltipWindow.
- - bpo-33856: Add "help" in the welcome message of IDLE
- - bpo-33839: IDLE: refactor ToolTip and CallTip and add documentation and
- tests
- - bpo-33855: Minimally test all IDLE modules. Add missing files, import
- module, instantiate classes, and check coverage. Check existing files.
- Tools/Demos
- -----------
- - bpo-32962: python-gdb now catches ``UnicodeDecodeError`` exceptions when
- calling ``string()``.
- - bpo-32962: python-gdb now catches ValueError on read_var(): when Python
- has no debug symbols for example.
- C API
- -----
- - bpo-34247: Fix Py_Initialize() regression introduced in 3.7.0: read
- environment variables like PYTHONOPTIMIZE.
- - bpo-23927: Fixed :exc:`SystemError` in
- :c:func:`PyArg_ParseTupleAndKeywords` when the ``w*`` format unit is used
- for optional parameter.
- - bpo-34008: Py_Main() can again be called after Py_Initialize(), as in
- Python 3.6.
- What's New in Python 3.7.0 final?
- =================================
- *Release date: 2018-06-27*
- Library
- -------
- - bpo-33851: Fix :func:`ast.get_docstring` for a node that lacks a
- docstring.
- C API
- -----
- - bpo-33932: Calling Py_Initialize() twice does nothing, instead of failing
- with a fatal error: restore the Python 3.6 behaviour.
- What's New in Python 3.7.0 release candidate 1?
- ===============================================
- *Release date: 2018-06-12*
- Core and Builtins
- -----------------
- - bpo-33803: Fix a crash in hamt.c caused by enabling GC tracking for an
- object that hadn't all of its fields set to NULL.
- - bpo-33706: Fix a crash in Python initialization when parsing the command
- line options. Thanks Christoph Gohlke for the bug report and the fix!
- - bpo-30654: Fixed reset of the SIGINT handler to SIG_DFL on interpreter
- shutdown even when there was a custom handler set previously. Patch by
- Philipp Kerling.
- - bpo-31849: Fix signed/unsigned comparison warning in pyhash.c.
- Library
- -------
- - bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. Patch by
- Steve Weber.
- - bpo-33812: Datetime instance d with non-None tzinfo, but with
- d.tzinfo.utcoffset(d) returning None is now treated as naive by the
- astimezone() method.
- - bpo-30805: Avoid race condition with debug logging
- - bpo-33694: asyncio: Fix a race condition causing data loss on
- pause_reading()/resume_reading() when using the ProactorEventLoop.
- - bpo-32493: Correct test for ``uuid_enc_be`` availability in
- ``configure.ac``. Patch by Michael Felt.
- - bpo-33792: Add asyncio.WindowsSelectorEventLoopPolicy and
- asyncio.WindowsProactorEventLoopPolicy.
- - bpo-33778: Update ``unicodedata``'s database to Unicode version 11.0.0.
- - bpo-33770: improve base64 exception message for encoded inputs of invalid
- length
- - bpo-33769: asyncio/start_tls: Fix error message; cancel callbacks in case
- of an unhandled error; mark SSLTransport as closed if it is aborted.
- - bpo-33767: The concatenation (``+``) and repetition (``*``) sequence
- operations now raise :exc:`TypeError` instead of :exc:`SystemError` when
- performed on :class:`mmap.mmap` objects. Patch by Zackery Spytz.
- - bpo-33734: asyncio/ssl: Fix AttributeError, increase default handshake
- timeout
- - bpo-11874: Use a better regex when breaking usage into wrappable parts.
- Avoids bogus assertion errors from custom metavar strings.
- - bpo-33582: Emit a deprecation warning for inspect.formatargspec
- Documentation
- -------------
- - bpo-33409: Clarified the relationship between PEP 538's
- PYTHONCOERCECLOCALE and PEP 540's PYTHONUTF8 mode.
- - bpo-33736: Improve the documentation of :func:`asyncio.open_connection`,
- :func:`asyncio.start_server` and their UNIX socket counterparts.
- - bpo-31432: Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED
- flags for ssl.SSLContext.verify_mode.
- Build
- -----
- - bpo-5755: Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from
- ``OPT``. This option emitted annoying warnings when building extension
- modules written in C++.
- Windows
- -------
- - bpo-33720: Reduces maximum marshal recursion depth on release builds.
- IDLE
- ----
- - bpo-33656: On Windows, add API call saying that tk scales for DPI. On
- Windows 8.1+ or 10, with DPI compatibility properties of the Python binary
- unchanged, and a monitor resolution greater than 96 DPI, this should make
- text and lines sharper. It should otherwise have no effect.
- - bpo-33768: Clicking on a context line moves that line to the top of the
- editor window.
- - bpo-33763: IDLE: Use read-only text widget for code context instead of
- label widget.
- - bpo-33664: Scroll IDLE editor text by lines. Previously, the mouse wheel
- and scrollbar slider moved text by a fixed number of pixels, resulting in
- partial lines at the top of the editor box. The change also applies to
- the shell and grep output windows, but not to read-only text views.
- - bpo-33679: Enable theme-specific color configuration for Code Context. Use
- the Highlights tab to see the setting for built-in themes or add settings
- to custom themes.
- - bpo-33642: Display up to maxlines non-blank lines for Code Context. If
- there is no current context, show a single blank line.
- What's New in Python 3.7.0 beta 5?
- ==================================
- *Release date: 2018-05-30*
- Core and Builtins
- -----------------
- - bpo-33622: Fixed a leak when the garbage collector fails to add an object
- with the ``__del__`` method or referenced by it into the
- :data:`gc.garbage` list. :c:func:`PyGC_Collect` can now be called when an
- exception is set and preserves it.
- - bpo-33509: Fix module_globals parameter of warnings.warn_explicit(): don't
- crash if module_globals is not a dict.
- - bpo-20104: The new `os.posix_spawn` added in 3.7.0b1 was removed as we are
- still working on what the API should look like. Expect this in 3.8
- instead.
- - bpo-33475: Fixed miscellaneous bugs in converting annotations to strings
- and optimized parentheses in the string representation.
- - bpo-33391: Fix a leak in set_symmetric_difference().
- - bpo-28055: Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer.
- - bpo-32911: Due to unexpected compatibility issues discovered during
- downstream beta testing, reverted :issue:`29463`. ``docstring`` field is
- removed from Module, ClassDef, FunctionDef, and AsyncFunctionDef ast nodes
- which was added in 3.7a1. Docstring expression is restored as a first
- statement in their body. Based on patch by Inada Naoki.
- - bpo-21983: Fix a crash in `ctypes.cast()` in case the type argument is a
- ctypes structured data type. Patch by Eryk Sun and Oren Milman.
- Library
- -------
- - bpo-32751: When cancelling the task due to a timeout,
- :meth:`asyncio.wait_for` will now wait until the cancellation is complete.
- - bpo-32684: Fix gather to propagate cancellation of itself even with
- return_exceptions.
- - bpo-33654: Support protocol type switching in SSLTransport.set_protocol().
- - bpo-33674: Pause the transport as early as possible to further reduce the
- risk of data_received() being called before connection_made().
- - bpo-33674: Fix a race condition in SSLProtocol.connection_made() of
- asyncio.sslproto: start immediately the handshake instead of using
- call_soon(). Previously, data_received() could be called before the
- handshake started, causing the handshake to hang or fail.
- - bpo-31647: Fixed bug where calling write_eof() on a
- _SelectorSocketTransport after it's already closed raises AttributeError.
- - bpo-32610: Make asyncio.all_tasks() return only pending tasks.
- - bpo-32410: Avoid blocking on file IO in sendfile fallback code
- - bpo-33469: Fix RuntimeError after closing loop that used run_in_executor
- - bpo-33672: Fix Task.__repr__ crash with Cython's bogus coroutines
- - bpo-33654: Fix transport.set_protocol() to support switching between
- asyncio.Protocol and asyncio.BufferedProtocol. Fix loop.start_tls() to
- work with asyncio.BufferedProtocols.
- - bpo-33652: Pickles of type variables and subscripted generics are now
- future-proof and compatible with older Python versions.
- - bpo-32493: Fixed :func:`uuid.uuid1` on FreeBSD.
- - bpo-33618: Finalize and document preliminary and experimental TLS 1.3
- support with OpenSSL 1.1.1
- - bpo-33623: Fix possible SIGSGV when asyncio.Future is created in __del__
- - bpo-30877: Fixed a bug in the Python implementation of the JSON decoder
- that prevented the cache of parsed strings from clearing after finishing
- the decoding. Based on patch by c-fos.
- - bpo-33570: Change TLS 1.3 cipher suite settings for compatibility with
- OpenSSL 1.1.1-pre6 and newer. OpenSSL 1.1.1 will have TLS 1.3 ciphers
- enabled by default.
- - bpo-28556: Do not simplify arguments to `typing.Union`. Now
- `Union[Manager, Employee]` is not simplified to `Employee` at runtime.
- Such simplification previously caused several bugs and limited
- possibilities for introspection.
- - bpo-33540: Add a new ``block_on_close`` class attribute to
- ``ForkingMixIn`` and ``ThreadingMixIn`` classes of :mod:`socketserver`.
- - bpo-33548: tempfile._candidate_tempdir_list should consider common TEMP
- locations
- - bpo-33109: argparse subparsers are once again not required by default,
- reverting the change in behavior introduced by bpo-26510 in 3.7.0a2.
- - bpo-33536: dataclasses.make_dataclass now checks for invalid field names
- and duplicate fields. Also, added a check for invalid field
- specifications.
- - bpo-33542: Prevent ``uuid.get_node`` from using a DUID instead of a MAC on
- Windows. Patch by Zvi Effron
- - bpo-26819: Fix race condition with `ReadTransport.resume_reading` in
- Windows proactor event loop.
- - Fix failure in `typing.get_type_hints()` when ClassVar was provided as a
- string forward reference.
- - bpo-33505: Optimize asyncio.ensure_future() by reordering if checks: 1.17x
- faster.
- - bpo-33497: Add errors param to cgi.parse_multipart and make an encoding in
- FieldStorage use the given errors (needed for Twisted). Patch by Amber
- Brown.
- - bpo-33495: Change dataclasses.Fields repr to use the repr of each of its
- members, instead of str. This makes it more clear what each field
- actually represents. This is especially true for the 'type' member.
- - bpo-33453: Fix dataclasses to work if using literal string type
- annotations or if using PEP 563 "Postponed Evaluation of Annotations".
- Only specific string prefixes are detected for both ClassVar ("ClassVar"
- and "typing.ClassVar") and InitVar ("InitVar" and "dataclasses.InitVar").
- - bpo-28556: Minor fixes in typing module: add annotations to
- ``NamedTuple.__new__``, pass ``*args`` and ``**kwds`` in
- ``Generic.__new__``. Original PRs by Paulius Šarka and Chad Dombrova.
- - bpo-20087: Updated alias mapping with glibc 2.27 supported locales.
- - bpo-33422: Fix trailing quotation marks getting deleted when looking up
- byte/string literals on pydoc. Patch by Andrés Delfino.
- - bpo-28167: The function ``platform.linux_distribution`` and
- ``platform.dist`` now trigger a ``DeprecationWarning`` and have been
- marked for removal in Python 3.8
- - bpo-33197: Update error message when constructing invalid
- inspect.Parameters Patch by Dong-hee Na.
- - bpo-33263: Fix FD leak in `_SelectorSocketTransport` Patch by Vlad
- Starostin.
- - bpo-32861: The urllib.robotparser's ``__str__`` representation now
- includes wildcard entries and the "Crawl-delay" and "Request-rate" fields.
- Patch by Michael Lazar.
- - bpo-32257: The ssl module now contains OP_NO_RENEGOTIATION constant,
- available with OpenSSL 1.1.0h or 1.1.1.
- - bpo-16865: Support arrays >=2GiB in :mod:`ctypes`. Patch by Segev Finer.
- Documentation
- -------------
- - bpo-23859: Document that `asyncio.wait()` does not cancel its futures on
- timeout.
- - bpo-32436: Document PEP 567 changes to asyncio.
- - bpo-33604: Update HMAC md5 default to a DeprecationWarning, bump removal
- to 3.8.
- - bpo-33503: Fix broken pypi link
- - bpo-33421: Add missing documentation for ``typing.AsyncContextManager``.
- Tests
- -----
- - bpo-33655: Ignore test_posix_fallocate failures on BSD platforms that
- might be due to running on ZFS.
- - bpo-32604: Remove the _xxsubinterpreters module (meant for testing) and
- associated helpers. This module was originally added recently in 3.7b1.
- Build
- -----
- - bpo-33614: Ensures module definition files for the stable ABI on Windows
- are correctly regenerated.
- - bpo-33522: Enable CI builds on Visual Studio Team Services at
- https://python.visualstudio.com/cpython
- - bpo-33012: Add ``-Wno-cast-function-type`` for gcc 8 for silencing
- warnings about function casts like casting to PyCFunction in method
- definition lists.
- macOS
- -----
- - bpo-13631: The .editrc file in user's home directory is now processed
- correctly during the readline initialization through editline emulation on
- macOS.
- IDLE
- ----
- - bpo-33628: IDLE: Cleanup codecontext.py and its test.
- - bpo-33564: IDLE's code context now recognizes async as a block opener.
- - bpo-32831: Add docstrings and tests for codecontext.
- What's New in Python 3.7.0 beta 4?
- ==================================
- *Release date: 2018-05-02*
- Core and Builtins
- -----------------
- - bpo-33363: Raise a SyntaxError for ``async with`` and ``async for``
- statements outside of async functions.
- - bpo-33128: Fix a bug that causes PathFinder to appear twice on
- sys.meta_path. Patch by Pablo Galindo Salgado.
- - bpo-33312: Fixed clang ubsan (undefined behavior sanitizer) warnings in
- dictobject.c by adjusting how the internal struct _dictkeysobject shared
- keys structure is declared.
- - bpo-33231: Fix potential memory leak in ``normalizestring()``.
- - bpo-33205: Change dict growth function from
- ``round_up_to_power_2(used*2+hashtable_size/2)`` to
- ``round_up_to_power_2(used*3)``. Previously, dict is shrinked only when
- ``used == 0``. Now dict has more chance to be shrinked.
- - bpo-29922: Improved error messages in 'async with' when ``__aenter__()``
- or ``__aexit__()`` return non-awaitable object.
- - bpo-33199: Fix ``ma_version_tag`` in dict implementation is uninitialized
- when copying from key-sharing dict.
- Library
- -------
- - bpo-33281: Fix ctypes.util.find_library regression on macOS.
- - bpo-33383: Fixed crash in the get() method of the :mod:`dbm.ndbm` database
- object when it is called with a single argument.
- - bpo-33329: Fix multiprocessing regression on newer glibcs
- - bpo-991266: Fix quoting of the ``Comment`` attribute of
- :class:`http.cookies.SimpleCookie`.
- - bpo-33131: Upgrade bundled version of pip to 10.0.1.
- - bpo-33308: Fixed a crash in the :mod:`parser` module when converting an ST
- object to a tree of tuples or lists with ``line_info=False`` and
- ``col_info=True``.
- - bpo-33266: lib2to3 now recognizes ``rf'...'`` strings.
- - bpo-11594: Ensure line-endings are respected when using lib2to3.
- - bpo-33254: Have :func:`importlib.resources.contents` and
- :meth:`importlib.abc.ResourceReader.contents` return an :term:`iterable`
- instead of an :term:`iterator`.
- - bpo-33256: Fix display of ``<module>`` call in the html produced by
- ``cgitb.html()``. Patch by Stéphane Blondon.
- - bpo-33185: Fixed regression when running pydoc with the :option:`-m`
- switch. (The regression was introduced in 3.7.0b3 by the resolution of
- :issue:`33053`)
- This fix also changed pydoc to add ``os.getcwd()`` to :data:`sys.path`
- when necessary, rather than adding ``"."``.
- - bpo-33169: Delete entries of ``None`` in :data:`sys.path_importer_cache`
- when :meth:`importlib.machinery.invalidate_caches` is called.
- - bpo-33217: Deprecate looking up non-Enum objects in Enum classes and Enum
- members (will raise :exc:`TypeError` in 3.8+).
- - bpo-33203: ``random.Random.choice()`` now raises ``IndexError`` for empty
- sequences consistently even when called from subclasses without a
- ``getrandbits()`` implementation.
- - bpo-33224: Update difflib.mdiff() for PEP 479. Convert an uncaught
- StopIteration in a generator into a return-statement.
- - bpo-33209: End framing at the end of C implementation of
- :func:`pickle.Pickler.dump`.
- - bpo-20104: Improved error handling and fixed a reference leak in
- :func:`os.posix_spawn()`.
- - bpo-33175: In dataclasses, Field.__set_name__ now looks up the
- __set_name__ special method on the class, not the instance, of the default
- value.
- - bpo-33097: Raise RuntimeError when ``executor.submit`` is called during
- interpreter shutdown.
- - bpo-31908: Fix output of cover files for ``trace`` module command-line
- tool. Previously emitted cover files only when ``--missing`` option was
- used. Patch by Michael Selik.
- Documentation
- -------------
- - bpo-33378: Add Korean language switcher for https://docs.python.org/3/
- - bpo-33276: Clarify that the ``__path__`` attribute on modules cannot be
- just any value.
- - bpo-33201: Modernize documentation for writing C extension types.
- - bpo-33195: Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document.
- ``Py_UNICODE`` related APIs are deprecated since Python 3.3, but it is
- missed in the document.
- - bpo-8243: Add a note about curses.addch and curses.addstr exception
- behavior when writing outside a window, or pad.
- - bpo-32337: Update documentation related with ``dict`` order.
- Tests
- -----
- - bpo-33358: Fix ``test_embed.test_pre_initialization_sys_options()`` when
- the interpreter is built with ``--enable-shared``.
- Build
- -----
- - bpo-33394: Enable the verbose build for extension modules, when GNU make
- is passed macros on the command line.
- - bpo-33393: Update config.guess and config.sub files.
- - bpo-33377: Add new triplets for mips r6 and riscv variants (used in
- extension suffixes).
- - bpo-32232: By default, modules configured in `Modules/Setup` are no longer
- built with `-DPy_BUILD_CORE`. Instead, modules that specifically need that
- preprocessor definition include it in their individual entries.
- - bpo-33182: The embedding tests can once again be built with clang 6.0
- Windows
- -------
- - bpo-33184: Update Windows installer to use OpenSSL 1.1.0h.
- macOS
- -----
- - bpo-33184: Update macOS installer build to use OpenSSL 1.1.0h.
- IDLE
- ----
- - bpo-21474: Update word/identifier definition from ascii to unicode. In
- text and entry boxes, this affects selection by double-click, movement
- left/right by control-left/right, and deletion left/right by
- control-BACKSPACE/DEL.
- - bpo-33204: IDLE: consistently color invalid string prefixes. A 'u' string
- prefix cannot be paired with either 'r' or 'f'. Consistently color as much
- of the prefix, starting at the right, as is valid. Revise and extend
- colorizer test.
- Tools/Demos
- -----------
- - bpo-33189: :program:`pygettext.py` now recognizes only literal strings as
- docstrings and translatable strings, and rejects bytes literals and
- f-string expressions.
- - bpo-31920: Fixed handling directories as arguments in the ``pygettext``
- script. Based on patch by Oleg Krasnikov.
- - bpo-29673: Fix pystackv and pystack gdbinit macros.
- - bpo-31583: Fix 2to3 for using with --add-suffix option but without
- --output-dir option for relative path to files in current directory.
- What's New in Python 3.7.0 beta 3?
- ==================================
- *Release date: 2018-03-29*
- Security
- --------
- - bpo-33136: Harden ssl module against LibreSSL CVE-2018-8970.
- X509_VERIFY_PARAM_set1_host() is called with an explicit namelen. A new
- test ensures that NULL bytes are not allowed.
- - bpo-33001: Minimal fix to prevent buffer overrun in os.symlink on Windows
- - bpo-32981: Regexes in difflib and poplib were vulnerable to catastrophic
- backtracking. These regexes formed potential DOS vectors (REDOS). They
- have been refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch
- by Jamie Davis.
- Core and Builtins
- -----------------
- - bpo-33053: When using the -m switch, sys.path[0] is now explicitly
- expanded as the *starting* working directory, rather than being left as
- the empty path (which allows imports from the current working directory at
- the time of the import)
- - bpo-33018: Improve consistency of errors raised by ``issubclass()`` when
- called with a non-class and an abstract base class as the first and second
- arguments, respectively. Patch by Josh Bronson.
- - bpo-33041: Fixed jumping when the function contains an ``async for`` loop.
- - bpo-33026: Fixed jumping out of "with" block by setting f_lineno.
- - bpo-33005: Fix a crash on fork when using a custom memory allocator (ex:
- using PYTHONMALLOC env var). _PyGILState_Reinit() and
- _PyInterpreterState_Enable() now use the default RAW memory allocator to
- allocate a new interpreters mutex on fork.
- - bpo-17288: Prevent jumps from 'return' and 'exception' trace events.
- - bpo-32836: Don't use temporary variables in cases of list/dict/set
- comprehensions
- Library
- -------
- - bpo-33141: Have Field objects pass through __set_name__ to their default
- values, if they have their own __set_name__.
- - bpo-33096: Allow ttk.Treeview.insert to insert iid that has a false
- boolean value. Note iid=0 and iid=False would be same. Patch by Garvit
- Khatri.
- - bpo-32873: Treat type variables and special typing forms as immutable by
- copy and pickle. This fixes several minor issues and inconsistencies, and
- improves backwards compatibility with Python 3.6.
- - bpo-33134: When computing dataclass's __hash__, use the lookup table to
- contain the function which returns the __hash__ value. This is an
- improvement over looking up a string, and then testing that string to see
- what to do.
- - bpo-33127: The ssl module now compiles with LibreSSL 2.7.1.
- - bpo-32505: Raise TypeError if a member variable of a dataclass is of type
- Field, but doesn't have a type annotation.
- - bpo-33078: Fix the failure on OSX caused by the tests relying on
- sem_getvalue
- - bpo-33116: Add 'Field' to dataclasses.__all__.
- - bpo-32896: Fix an error where subclassing a dataclass with a field that
- uses a default_factory would generate an incorrect class.
- - bpo-33100: Dataclasses: If a field has a default value that's a
- MemberDescriptorType, then it's from that field being in __slots__, not an
- actual default value.
- - bpo-32953: If a non-dataclass inherits from a frozen dataclass, allow
- attributes to be added to the derived class. Only attributes from the
- frozen dataclass cannot be assigned to. Require all dataclasses in a
- hierarchy to be either all frozen or all non-frozen.
- - bpo-33061: Add missing ``NoReturn`` to ``__all__`` in typing.py
- - bpo-33078: Fix the size handling in multiprocessing.Queue when a pickling
- error occurs.
- - bpo-33064: lib2to3 now properly supports trailing commas after ``*args``
- and ``**kwargs`` in function signatures.
- - bpo-33056: FIX properly close leaking fds in
- concurrent.futures.ProcessPoolExecutor.
- - bpo-33021: Release the GIL during fstat() calls, avoiding hang of all
- threads when calling mmap.mmap(), os.urandom(), and random.seed(). Patch
- by Nir Soffer.
- - bpo-31804: Avoid failing in multiprocessing.Process if the standard
- streams are closed or None at exit.
- - bpo-33037: Skip sending/receiving data after SSL transport closing.
- - bpo-27683: Fix a regression in :mod:`ipaddress` that result of
- :meth:`hosts` is empty when the network is constructed by a tuple
- containing an integer mask and only 1 bit left for addresses.
- - bpo-32999: Fix C implementation of ``ABC.__subclasscheck__(cls,
- subclass)`` crashed when ``subclass`` is not a type object.
- - bpo-33009: Fix inspect.signature() for single-parameter partialmethods.
- - bpo-32969: Expose several missing constants in zlib and fix corresponding
- documentation.
- - bpo-32056: Improved exceptions raised for invalid number of channels and
- sample width when read an audio file in modules :mod:`aifc`, :mod:`wave`
- and :mod:`sunau`.
- - bpo-32844: Fix wrong redirection of a low descriptor (0 or 1) to stderr in
- subprocess if another low descriptor is closed.
- - bpo-32857: In :mod:`tkinter`, ``after_cancel(None)`` now raises a
- :exc:`ValueError` instead of canceling the first scheduled function.
- Patch by Cheryl Sabella.
- - bpo-31639: http.server now exposes a ThreadedHTTPServer class and uses it
- when the module is run with ``-m`` to cope with web browsers pre-opening
- sockets.
- - bpo-27645: :class:`sqlite3.Connection` now exposes a
- :class:`~sqlite3.Connection.backup` method, if the underlying SQLite
- library is at version 3.6.11 or higher. Patch by Lele Gaifax.
- Documentation
- -------------
- - bpo-33126: Document PyBuffer_ToContiguous().
- - bpo-27212: Modify documentation for the :func:`islice` recipe to consume
- initial values up to the start index.
- - bpo-28247: Update :mod:`zipapp` documentation to describe how to make
- standalone applications.
- - bpo-18802: Documentation changes for ipaddress. Patch by Jon Foster and
- Berker Peksag.
- - bpo-27428: Update documentation to clarify that ``WindowsRegistryFinder``
- implements ``MetaPathFinder``. (Patch by Himanshu Lakhara)
- Tests
- -----
- - bpo-32872: Avoid regrtest compatibility issue with namespace packages.
- - bpo-32517: Fix failing ``test_asyncio`` on macOS 10.12.2+ due to transport
- of ``KqueueSelector`` loop was not being closed.
- - bpo-19417: Add test_bdb.py.
- Build
- -----
- - bpo-33163: Upgrade pip to 9.0.3 and setuptools to v39.0.1.
- Windows
- -------
- - bpo-33016: Fix potential use of uninitialized memory in
- nt._getfinalpathname
- - bpo-32903: Fix a memory leak in os.chdir() on Windows if the current
- directory is set to a UNC path.
- macOS
- -----
- - bpo-32726: Build and link with private copy of Tcl/Tk 8.6 for the macOS
- 10.6+ installer. The 10.9+ installer variant already does this. This
- means that the Python 3.7 provided by the python.org macOS installers no
- longer need or use any external versions of Tcl/Tk, either system-provided
- or user-installed, such as ActiveTcl.
- IDLE
- ----
- - bpo-32984: Set ``__file__`` while running a startup file. Like Python,
- IDLE optionally runs one startup file in the Shell window before
- presenting the first interactive input prompt. For IDLE, ``-s`` runs a
- file named in environmental variable :envvar:`IDLESTARTUP` or
- :envvar:`PYTHONSTARTUP`; ``-r file`` runs ``file``. Python sets
- ``__file__`` to the startup file name before running the file and unsets
- it before the first prompt. IDLE now does the same when run normally,
- without the ``-n`` option.
- - bpo-32940: Simplify and rename StringTranslatePseudoMapping in pyparse.
- Tools/Demos
- -----------
- - bpo-32885: Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disable
- automatic backup creation (files with ``~`` suffix).
- C API
- -----
- - bpo-33042: Embedding applications may once again call
- PySys_ResetWarnOptions, PySys_AddWarnOption, and PySys_AddXOption prior to
- calling Py_Initialize.
- - bpo-32374: Document that m_traverse for multi-phase initialized modules
- can be called with m_state=NULL, and add a sanity check
- What's New in Python 3.7.0 beta 2?
- ==================================
- *Release date: 2018-02-27*
- Security
- --------
- - bpo-28414: The ssl module now allows users to perform their own IDN
- en/decoding when using SNI.
- Core and Builtins
- -----------------
- - bpo-32889: Update Valgrind suppression list to account for the rename of
- ``Py_ADDRESS_IN_RANG`` to ``address_in_range``.
- - bpo-31356: Remove the new API added in bpo-31356 (gc.ensure_disabled()
- context manager).
- - bpo-32305: For namespace packages, ensure that both ``__file__`` and
- ``__spec__.origin`` are set to None.
- - bpo-32303: Make sure ``__spec__.loader`` matches ``__loader__`` for
- namespace packages.
- - bpo-32711: Fix the warning messages for Python/ast_unparse.c. Patch by
- Stéphane Wirtel
- - bpo-32583: Fix possible crashing in builtin Unicode decoders caused by
- write out-of-bound errors when using customized decode error handlers.
- Library
- -------
- - bpo-32960: For dataclasses, disallow inheriting frozen from non-frozen
- classes, and also disallow inheriting non-frozen from frozen classes. This
- restriction will be relaxed at a future date.
- - bpo-32713: Fixed tarfile.itn handling of out-of-bounds float values. Patch
- by Joffrey Fuhrer.
- - bpo-32951: Direct instantiation of SSLSocket and SSLObject objects is now
- prohibited. The constructors were never documented, tested, or designed as
- public constructors. Users were suppose to use ssl.wrap_socket() or
- SSLContext.
- - bpo-32929: Remove the tri-state parameter "hash", and add the boolean
- "unsafe_hash". If unsafe_hash is True, add a __hash__ function, but if a
- __hash__ exists, raise TypeError. If unsafe_hash is False, add a __hash__
- based on the values of eq= and frozen=. The unsafe_hash=False behavior is
- the same as the old hash=None behavior. unsafe_hash=False is the default,
- just as hash=None used to be.
- - bpo-32947: Add OP_ENABLE_MIDDLEBOX_COMPAT and test workaround for TLSv1.3
- for future compatibility with OpenSSL 1.1.1.
- - bpo-30622: The ssl module now detects missing NPN support in LibreSSL.
- - bpo-32922: dbm.open() now encodes filename with the filesystem encoding
- rather than default encoding.
- - bpo-32859: In ``os.dup2``, don't check every call whether the ``dup3``
- syscall exists or not.
- - bpo-32556: nt._getfinalpathname, nt._getvolumepathname and
- nt._getdiskusage now correctly convert from bytes.
- - bpo-25988: Emit a :exc:`DeprecationWarning` when using or importing an ABC
- directly from :mod:`collections` rather than from :mod:`collections.abc`.
- - bpo-21060: Rewrite confusing message from setup.py upload from "No dist
- file created in earlier command" to the more helpful "Must create and
- upload files in one command".
- - bpo-32852: Make sure sys.argv remains as a list when running trace.
- - bpo-31333: ``_abc`` module is added. It is a speedup module with C
- implementations for various functions and methods in ``abc``. Creating an
- ABC subclass and calling ``isinstance`` or ``issubclass`` with an ABC
- subclass are up to 1.5x faster. In addition, this makes Python start-up up
- to 10% faster.
- Note that the new implementation hides internal registry and caches,
- previously accessible via private attributes ``_abc_registry``,
- ``_abc_cache``, and ``_abc_negative_cache``. There are three debugging
- helper methods that can be used instead ``_dump_registry``,
- ``_abc_registry_clear``, and ``_abc_caches_clear``.
- - bpo-32841: Fixed `asyncio.Condition` issue which silently ignored
- cancellation after notifying and cancelling a conditional lock. Patch by
- Bar Harel.
- - bpo-32819: ssl.match_hostname() has been simplified and no longer depends
- on re and ipaddress module for wildcard and IP addresses. Error reporting
- for invalid wildcards has been improved.
- - bpo-32394: socket: Remove
- TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL flags on older version
- Windows during run-time.
- - bpo-31787: Fixed refleaks of ``__init__()`` methods in various modules.
- (Contributed by Oren Milman)
- - bpo-30157: Fixed guessing quote and delimiter in csv.Sniffer.sniff() when
- only the last field is quoted. Patch by Jake Davis.
- - bpo-32792: collections.ChainMap() preserves the order of the underlying
- mappings.
- - bpo-32775: :func:`fnmatch.translate()` no longer produces patterns which
- contain set operations. Sets starting with '[' or containing '--', '&&',
- '~~' or '||' will be interpreted differently in regular expressions in
- future versions. Currently they emit warnings. fnmatch.translate() now
- avoids producing patterns containing such sets by accident.
- - bpo-32622: Implement native fast sendfile for Windows proactor event loop.
- - bpo-32777: Fix a rare but potential pre-exec child process deadlock in
- subprocess on POSIX systems when marking file descriptors inheritable on
- exec in the child process. This bug appears to have been introduced in
- 3.4.
- - bpo-32647: The ctypes module used to depend on indirect linking for
- dlopen. The shared extension is now explicitly linked against libdl on
- platforms with dl.
- - bpo-32741: Implement ``asyncio.TimerHandle.when()`` method.
- - bpo-32691: Use mod_spec.parent when running modules with pdb
- - bpo-32734: Fixed ``asyncio.Lock()`` safety issue which allowed acquiring
- and locking the same lock multiple times, without it being free. Patch by
- Bar Harel.
- - bpo-32727: Do not include name field in SMTP envelope from address. Patch
- by Stéphane Wirtel
- - bpo-31453: Add TLSVersion constants and SSLContext.maximum_version /
- minimum_version attributes. The new API wraps OpenSSL 1.1
- https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html
- feature.
- - bpo-24334: Internal implementation details of ssl module were cleaned up.
- The SSLSocket has one less layer of indirection. Owner and session
- information are now handled by the SSLSocket and SSLObject constructor.
- Channel binding implementation has been simplified.
- - bpo-31848: Fix the error handling in Aifc_read.initfp() when the SSND
- chunk is not found. Patch by Zackery Spytz.
- - bpo-32585: Add Ttk spinbox widget to :mod:`tkinter.ttk`. Patch by Alan D
- Moore.
- - bpo-32221: Various functions returning tuple containing IPv6 addresses now
- omit ``%scope`` part since the same information is already encoded in
- *scopeid* tuple item. Especially this speeds up :func:`socket.recvfrom`
- when it receives multicast packet since useless resolving of network
- interface name is omitted.
- - bpo-30693: The TarFile class now recurses directories in a reproducible
- way.
- - bpo-30693: The ZipFile class now recurses directories in a reproducible
- way.
- Documentation
- -------------
- - bpo-28124: The ssl module function ssl.wrap_socket() has been
- de-emphasized and deprecated in favor of the more secure and efficient
- SSLContext.wrap_socket() method.
- - bpo-17232: Clarify docs for -O and -OO. Patch by Terry Reedy.
- - bpo-32436: Add documentation for the contextvars module (PEP 567).
- - bpo-32800: Update link to w3c doc for xml default namespaces.
- - bpo-11015: Update :mod:`test.support` documentation.
- - bpo-8722: Document :meth:`__getattr__` behavior when property :meth:`get`
- method raises :exc:`AttributeError`.
- - bpo-32614: Modify RE examples in documentation to use raw strings to
- prevent :exc:`DeprecationWarning` and add text to REGEX HOWTO to highlight
- the deprecation.
- - bpo-31972: Improve docstrings for `pathlib.PurePath` subclasses.
- Tests
- -----
- - bpo-31809: Add tests to verify connection with secp ECDH curves.
- Build
- -----
- - bpo-32898: Fix the python debug build when using COUNT_ALLOCS.
- Windows
- -------
- - bpo-32901: Update Tcl and Tk versions to 8.6.8
- - bpo-31966: Fixed WindowsConsoleIO.write() for writing empty data.
- - bpo-32409: Ensures activate.bat can handle Unicode contents.
- - bpo-32457: Improves handling of denormalized executable path when
- launching Python.
- - bpo-32370: Use the correct encoding for ipconfig output in the uuid
- module. Patch by Segev Finer.
- - bpo-29248: Fix :func:`os.readlink` on Windows, which was mistakenly
- treating the ``PrintNameOffset`` field of the reparse data buffer as a
- number of characters instead of bytes. Patch by Craig Holmquist and SSE4.
- macOS
- -----
- - bpo-32901: Update macOS 10.9+ installer to Tcl/Tk 8.6.8.
- IDLE
- ----
- - bpo-32916: Change ``str`` to ``code`` in pyparse.
- - bpo-32905: Remove unused code in pyparse module.
- - bpo-32874: Add tests for pyparse.
- - bpo-32837: Using the system and place-dependent default encoding for
- open() is a bad idea for IDLE's system and location-independent files.
- - bpo-32826: Add "encoding=utf-8" to open() in IDLE's test_help_about. GUI
- test test_file_buttons() only looks at initial ascii-only lines, but
- failed on systems where open() defaults to 'ascii' because readline()
- internally reads and decodes far enough ahead to encounter a non-ascii
- character in CREDITS.txt.
- - bpo-32765: Update configdialog General tab docstring to add new widgets to
- the widget list.
- Tools/Demos
- -----------
- - bpo-32222: Fix pygettext not extracting docstrings for functions with type
- annotated arguments. Patch by Toby Harradine.
- What's New in Python 3.7.0 beta 1?
- ==================================
- *Release date: 2018-01-30*
- Core and Builtins
- -----------------
- - bpo-32703: Fix coroutine's ResourceWarning when there's an active error
- set when it's being finalized.
- - bpo-32650: Pdb and other debuggers dependent on bdb.py will correctly step
- over (next command) native coroutines. Patch by Pablo Galindo.
- - bpo-28685: Optimize list.sort() and sorted() by using type specialized
- comparisons when possible.
- - bpo-32685: Improve suggestion when the Python 2 form of print statement is
- either present on the same line as the header of a compound statement or
- else terminated by a semi-colon instead of a newline. Patch by Nitish
- Chandra.
- - bpo-32697: Python now explicitly preserves the definition order of
- keyword-only parameters. It's always preserved their order, but this
- behavior was never guaranteed before; this behavior is now guaranteed and
- tested.
- - bpo-32690: The locals() dictionary now displays in the lexical order that
- variables were defined. Previously, the order was reversed.
- - bpo-32677: Add ``.isascii()`` method to ``str``, ``bytes`` and
- ``bytearray``. It can be used to test that string contains only ASCII
- characters.
- - bpo-32670: Enforce :pep:`479` for all code.
- This means that manually raising a StopIteration exception from a
- generator is prohibited for all code, regardless of whether 'from
- __future__ import generator_stop' was used or not.
- - bpo-32591: Added built-in support for tracking the origin of coroutine
- objects; see sys.set_coroutine_origin_tracking_depth and
- CoroutineType.cr_origin. This replaces the asyncio debug mode's use of
- coroutine wrapping for native coroutine objects.
- - bpo-31368: Expose preadv and pwritev system calls in the os module. Patch
- by Pablo Galindo
- - bpo-32544: ``hasattr(obj, name)`` and ``getattr(obj, name, default)`` are
- about 4 times faster than before when ``name`` is not found and ``obj``
- doesn't override ``__getattr__`` or ``__getattribute__``.
- - bpo-26163: Improved frozenset() hash to create more distinct hash values
- when faced with datasets containing many similar values.
- - bpo-32550: Remove the STORE_ANNOTATION bytecode.
- - bpo-20104: Expose posix_spawn as a low level API in the os module.
- (removed before 3.7.0rc1)
- - bpo-24340: Fixed estimation of the code stack size.
- - bpo-32436: Implement :pep:`567` Context Variables.
- - bpo-18533: ``repr()`` on a dict containing its own ``values()`` or
- ``items()`` no longer raises ``RecursionError``; OrderedDict similarly.
- Instead, use ``...``, as for other recursive structures. Patch by Ben
- North.
- - bpo-20891: Py_Initialize() now creates the GIL. The GIL is no longer
- created "on demand" to fix a race condition when PyGILState_Ensure() is
- called in a non-Python thread.
- - bpo-32028: Leading whitespace is now correctly ignored when generating
- suggestions for converting Py2 print statements to Py3 builtin print
- function calls. Patch by Sanyam Khurana.
- - bpo-31179: Make dict.copy() up to 5.5 times faster.
- - bpo-31113: Get rid of recursion in the compiler for normal control flow.
- Library
- -------
- - bpo-25988: Deprecate exposing the contents of collections.abc in the
- regular collections module.
- - bpo-31429: The default cipher suite selection of the ssl module now uses a
- blacklist approach rather than a hard-coded whitelist. Python no longer
- re-enables ciphers that have been blocked by OpenSSL security update.
- Default cipher suite selection can be configured on compile time.
- - bpo-30306: contextlib.contextmanager now releases the arguments passed to
- the underlying generator as soon as the context manager is entered.
- Previously it would keep them alive for as long as the context manager was
- alive, even when not being used as a function decorator. Patch by Martin
- Teichmann.
- - bpo-21417: Added support for setting the compression level for
- zipfile.ZipFile.
- - bpo-32251: Implement asyncio.BufferedProtocol (provisional API).
- - bpo-32513: In dataclasses, allow easier overriding of dunder methods
- without specifying decorator parameters.
- - bpo-32660: :mod:`termios` makes available ``FIONREAD``, ``FIONCLEX``,
- ``FIOCLEX``, ``FIOASYNC`` and ``FIONBIO`` also under Solaris/derivatives.
- - bpo-27931: Fix email address header parsing error when the username is an
- empty quoted string. Patch by Xiang Zhang.
- - bpo-32659: Under Solaris and derivatives, :class:`os.stat_result` provides
- a st_fstype attribute.
- - bpo-32662: Implement Server.start_serving(), Server.serve_forever(), and
- Server.is_serving() methods. Add 'start_serving' keyword parameter to
- loop.create_server() and loop.create_unix_server().
- - bpo-32391: Implement :meth:`asyncio.StreamWriter.wait_closed` and
- :meth:`asyncio.StreamWriter.is_closing` methods
- - bpo-32643: Make Task._step, Task._wakeup and Future._schedule_callbacks
- methods private.
- - bpo-32630: Refactor decimal module to use contextvars to store decimal
- context.
- - bpo-32622: Add :meth:`asyncio.AbstractEventLoop.sendfile` method.
- - bpo-32304: distutils' upload command no longer corrupts tar files ending
- with a CR byte, and no longer tries to convert CR to CRLF in any of the
- upload text fields.
- - bpo-32502: uuid.uuid1 no longer raises an exception if a 64-bit hardware
- address is encountered.
- - bpo-32596: ``concurrent.futures`` imports ``ThreadPoolExecutor`` and
- ``ProcessPoolExecutor`` lazily (using :pep:`562`). It makes ``import
- asyncio`` about 15% faster because asyncio uses only
- ``ThreadPoolExecutor`` by default.
- - bpo-31801: Add ``_ignore_`` to ``Enum`` so temporary variables can be used
- during class construction without being turned into members.
- - bpo-32576: Use queue.SimpleQueue() in places where it can be invoked from
- a weakref callback.
- - bpo-32574: Fix memory leak in asyncio.Queue, when the queue has limited
- size and it is full, the cancelation of queue.put() can cause a memory
- leak. Patch by: José Melero.
- - bpo-32521: The nis module is now compatible with new libnsl and headers
- location.
- - bpo-32467: collections.abc.ValuesView now inherits from
- collections.abc.Collection.
- - bpo-32473: Improve ABCMeta._dump_registry() output readability
- - bpo-32102: New argument ``capture_output`` for subprocess.run
- - bpo-32521: glibc has removed Sun RPC. Use replacement libtirpc headers and
- library in nis module.
- - bpo-32493: UUID module fixes build for FreeBSD/OpenBSD
- - bpo-32503: Pickling with protocol 4 no longer creates too small frames.
- - bpo-29237: Create enum for pstats sorting options
- - bpo-32454: Add close(fd) function to the socket module.
- - bpo-25942: The subprocess module is now more graceful when handling a
- Ctrl-C KeyboardInterrupt during subprocess.call, subprocess.run, or a
- Popen context manager. It now waits a short amount of time for the child
- (presumed to have also gotten the SIGINT) to exit, before continuing the
- KeyboardInterrupt exception handling. This still includes a SIGKILL in
- the call() and run() APIs, but at least the child had a chance first.
- - bpo-32433: The hmac module now has hmac.digest(), which provides an
- optimized HMAC digest.
- - bpo-28134: Sockets now auto-detect family, type and protocol from file
- descriptor by default.
- - bpo-32404: Fix bug where :meth:`datetime.datetime.fromtimestamp` did not
- call __new__ in :class:`datetime.datetime` subclasses.
- - bpo-32403: Improved speed of :class:`datetime.date` and
- :class:`datetime.datetime` alternate constructors.
- - bpo-32228: Ensure that ``truncate()`` preserves the file position (as
- reported by ``tell()``) after writes longer than the buffer size.
- - bpo-32410: Implement ``loop.sock_sendfile`` for asyncio event loop.
- - bpo-22908: Added seek and tell to the ZipExtFile class. This only works if
- the file object used to open the zipfile is seekable.
- - bpo-32373: Add socket.getblocking() method.
- - bpo-32248: Add :mod:`importlib.resources` and
- :class:`importlib.abc.ResourceReader` as the unified API for reading
- resources contained within packages. Loaders wishing to support resource
- reading must implement the :meth:`get_resource_reader()` method.
- File-based and zipimport-based loaders both implement these APIs.
- :class:`importlib.abc.ResourceLoader` is deprecated in favor of these new
- APIs.
- - bpo-32320: collections.namedtuple() now supports default values.
- - bpo-29302: Add contextlib.AsyncExitStack. Patch by Alexander Mohr and Ilya
- Kulakov.
- - bpo-31961: *Removed in Python 3.7.0b2.* The *args* argument of
- subprocess.Popen can now be a :term:`path-like object`. If *args* is given
- as a sequence, it's first element can now be a :term:`path-like object` as
- well.
- - bpo-31900: The :func:`locale.localeconv` function now sets temporarily the
- ``LC_CTYPE`` locale to the ``LC_NUMERIC`` locale to decode
- ``decimal_point`` and ``thousands_sep`` byte strings if they are non-ASCII
- or longer than 1 byte, and the ``LC_NUMERIC`` locale is different than the
- ``LC_CTYPE`` locale. This temporary change affects other threads.
- Same change for the :meth:`str.format` method when formatting a number
- (:class:`int`, :class:`float`, :class:`float` and subclasses) with the
- ``n`` type (ex: ``'{:n}'.format(1234)``).
- - bpo-31853: Use super().method instead of socket.method in SSLSocket. They
- were there most likely for legacy reasons.
- - bpo-31399: The ssl module now uses OpenSSL's X509_VERIFY_PARAM_set1_host()
- and X509_VERIFY_PARAM_set1_ip() API to verify hostname and IP addresses.
- Subject common name fallback can be disabled with
- SSLContext.hostname_checks_common_name.
- - bpo-14976: Add a queue.SimpleQueue class, an unbounded FIFO queue with a
- reentrant C implementation of put().
- Documentation
- -------------
- - bpo-32724: Add references to some commands in the documentation of Pdb.
- Patch by Stéphane Wirtel
- - bpo-32649: Complete the C API documentation, profiling and tracing part
- with the newly added per-opcode events.
- - bpo-17799: Explain real behaviour of sys.settrace and sys.setprofile and
- their C-API counterparts regarding which type of events are received in
- each function. Patch by Pablo Galindo Salgado.
- Tests
- -----
- - bpo-32721: Fix test_hashlib to not fail if the _md5 module is not built.
- - bpo-28414: Add test cases for IDNA 2003 and 2008 host names. IDNA 2003
- internationalized host names are working since bpo-31399 has landed. IDNA
- 2008 are still broken.
- - bpo-32604: Add a new "_xxsubinterpreters" extension module that exposes
- the existing subinterpreter C-API and a new cross-interpreter data sharing
- mechanism. The module is primarily intended for more thorough testing of
- the existing subinterpreter support.
- Note that the _xxsubinterpreters module has been removed in 3.7.0rc1.
- - bpo-32602: Add test certs and test for ECDSA cert and EC/RSA dual mode.
- - bpo-32549: On Travis CI, Python now Compiles and uses a local copy of
- OpenSSL 1.1.0g for testing.
- Build
- -----
- - bpo-32635: Fix segfault of the crypt module when libxcrypt is provided
- instead of libcrypt at the system.
- - bpo-32598: Use autoconf to detect OpenSSL libs, headers and supported
- features. The ax_check_openssl M4 macro uses pkg-config to locate OpenSSL
- and falls back to manual search.
- - bpo-32593: Drop support of FreeBSD 9 and older.
- - bpo-29708: If the :envvar:`SOURCE_DATE_EPOCH` environment variable is set,
- :mod:`py_compile` will always create hash-based ``.pyc`` files.
- Windows
- -------
- - bpo-32588: Create standalone _distutils_findvs module and add missing
- _queue module to installer.
- - bpo-29911: Ensure separate Modify and Uninstall buttons are displayed.
- - bpo-32507: Use app-local UCRT install rather than the proper update for
- old versions of Windows.
- macOS
- -----
- - bpo-32726: Provide an additional, more modern macOS installer variant that
- supports macOS 10.9+ systems in 64-bit mode only. Upgrade the supplied
- third-party libraries to OpenSSL 1.1.0g and to SQLite 3.22.0. The 10.9+
- installer now links with and supplies its own copy of Tcl/Tk 8.6.
- - bpo-28440: No longer add /Library/Python/3.x/site-packages to sys.path for
- macOS framework builds to avoid future conflicts.
- C API
- -----
- - bpo-32681: Fix uninitialized variable 'res' in the C implementation of
- os.dup2. Patch by Stéphane Wirtel
- - bpo-10381: Add C API access to the ``datetime.timezone`` constructor and
- ``datetime.timzone.UTC`` singleton.
- What's New in Python 3.7.0 alpha 4?
- ===================================
- *Release date: 2018-01-08*
- Core and Builtins
- -----------------
- - bpo-31975: The default warning filter list now starts with a
- "default::DeprecationWarning:__main__" entry, so deprecation warnings are
- once again shown by default in single-file scripts and at the interactive
- prompt.
- - bpo-32226: ``__class_getitem__`` is now an automatic class method.
- - bpo-32399: Add AIX uuid library support for RFC4122 using uuid_create() in
- libc.a
- - bpo-32390: Fix the compilation failure on AIX after the f_fsid field has
- been added to the object returned by os.statvfs() (issue #32143). Original
- patch by Michael Felt.
- - bpo-32379: Make MRO computation faster when a class inherits from a single
- base.
- - bpo-32259: The error message of a TypeError raised when unpack
- non-iterable is now more specific.
- - bpo-27169: The ``__debug__`` constant is now optimized out at compile
- time. This fixes also bpo-22091.
- - bpo-32329: The :option:`-R` option now turns on hash randomization when
- the :envvar:`PYTHONHASHSEED` environment variable is set to ``0``.
- Previously, the option was ignored. Moreover,
- ``sys.flags.hash_randomization`` is now properly set to 0 when hash
- randomization is turned off by ``PYTHONHASHSEED=0``.
- - bpo-30416: The optimizer is now protected from spending much time doing
- complex calculations and consuming much memory for creating large
- constants in constant folding. Increased limits for constants that can be
- produced in constant folding.
- - bpo-32282: Fix an unnecessary ifdef in the include of VersionHelpers.h in
- socketmodule on Windows.
- - bpo-30579: Implement TracebackType.__new__ to allow Python-level creation
- of traceback objects, and make TracebackType.tb_next mutable.
- - bpo-32260: Don't byte swap the input keys to the SipHash algorithm on
- big-endian platforms. This should ensure siphash gives consistent results
- across platforms.
- - bpo-31506: Improve the error message logic for object.__new__ and
- object.__init__. Patch by Sanyam Khurana.
- - bpo-20361: ``-b`` and ``-bb`` now inject ``'default::BytesWarning'`` and
- ``error::BytesWarning`` entries into ``sys.warnoptions``, ensuring that
- they take precedence over any other warning filters configured via the
- ``-W`` option or the ``PYTHONWARNINGS`` environment variable.
- - bpo-32230: `-X dev` now injects a ``'default'`` entry into
- sys.warnoptions, ensuring that it behaves identically to actually passing
- ``-Wdefault`` at the command line.
- - bpo-29240: Add a new UTF-8 mode: implementation of the :pep:`540`.
- - bpo-32226: :pep:`560`: Add support for ``__mro_entries__`` and
- ``__class_getitem__``. Implemented by Ivan Levkivskyi.
- - bpo-32225: :pep:`562`: Add support for module ``__getattr__`` and
- ``__dir__``. Implemented by Ivan Levkivskyi.
- - bpo-31901: The `atexit` module now has its callback stored per
- interpreter.
- - bpo-31650: Implement :pep:`552` (Deterministic pycs). Python now supports
- invalidating bytecode cache files bashed on a source content hash rather
- than source last-modified time.
- - bpo-29469: Move constant folding from bytecode layer to AST layer.
- Original patch by Eugene Toder.
- Library
- -------
- - bpo-32506: Now that dict is defined as keeping insertion order, drop
- OrderedDict and just use plain dict.
- - bpo-32279: Add params to dataclasses.make_dataclasses(): init, repr, eq,
- order, hash, and frozen. Pass them through to dataclass().
- - bpo-32278: Make type information optional on dataclasses.make_dataclass().
- If omitted, the string 'typing.Any' is used.
- - bpo-32499: Add dataclasses.is_dataclass(obj), which returns True if obj is
- a dataclass or an instance of one.
- - bpo-32468: Improve frame repr() to mention filename, code name and current
- line number.
- - bpo-23749: asyncio: Implement loop.start_tls()
- - bpo-32441: Return the new file descriptor (i.e., the second argument) from
- ``os.dup2``. Previously, ``None`` was always returned.
- - bpo-32422: ``functools.lru_cache`` uses less memory (3 words for each
- cached key) and takes about 1/3 time for cyclic GC.
- - bpo-31721: Prevent Python crash from happening when Future._log_traceback
- is set to True manually. Now it can only be set to False, or a ValueError
- is raised.
- - bpo-32415: asyncio: Add Task.get_loop() and Future.get_loop()
- - bpo-26133: Don't unsubscribe signals in asyncio UNIX event loop on
- interpreter shutdown.
- - bpo-32363: Make asyncio.Task.set_exception() and set_result() raise
- NotImplementedError. Task._step() and Future.__await__() raise proper
- exceptions when they are in an invalid state, instead of raising an
- AssertionError.
- - bpo-32357: Optimize asyncio.iscoroutine() and loop.create_task() for
- non-native coroutines (e.g. async/await compiled with Cython).
- 'loop.create_task(python_coroutine)' used to be 20% faster than
- 'loop.create_task(cython_coroutine)'. Now, the latter is as fast.
- - bpo-32356: asyncio.transport.resume_reading() and pause_reading() are now
- idempotent. New transport.is_reading() method is added.
- - bpo-32355: Optimize asyncio.gather(); now up to 15% faster.
- - bpo-32351: Use fastpath in asyncio.sleep if delay<0 (2x boost)
- - bpo-32348: Optimize asyncio.Future schedule/add/remove callback. The
- optimization shows 3-6% performance improvements of async/await code.
- - bpo-32331: Fix socket.settimeout() and socket.setblocking() to keep
- socket.type as is. Fix socket.socket() constructor to reset any bit flags
- applied to socket's type. This change only affects OSes that have
- SOCK_NONBLOCK and/or SOCK_CLOEXEC.
- - bpo-32248: Add :class:`importlib.abc.ResourceReader` as an ABC for loaders
- to provide a unified API for reading resources contained within packages.
- Also add :mod:`importlib.resources` as the port of
- ``importlib_resources``.
- - bpo-32311: Implement asyncio.create_task(coro) shortcut
- - bpo-32327: Convert asyncio functions that were documented as coroutines to
- coroutines. Affected functions: loop.sock_sendall, loop.sock_recv,
- loop.sock_accept, loop.getaddrinfo, loop.getnameinfo.
- - bpo-32323: :func:`urllib.parse.urlsplit()` does not convert zone-id
- (scope) to lower case for scoped IPv6 addresses in hostnames now.
- - bpo-32302: Fix bdist_wininst of distutils for CRT v142: it binary
- compatible with CRT v140.
- - bpo-29711: Fix ``stop_serving`` in asyncio proactor loop kill all
- listening servers
- - bpo-32308: :func:`re.sub()` now replaces empty matches adjacent to a
- previous non-empty match.
- - bpo-29970: Abort asyncio SSLProtocol connection if handshake not complete
- within 10s
- - bpo-32314: Implement asyncio.run().
- - bpo-17852: Revert incorrect fix based on misunderstanding of
- _Py_PyAtExit() semantics.
- - bpo-32296: Implement asyncio._get_running_loop() and get_event_loop() in
- C. This makes them 4x faster.
- - bpo-32250: Implement ``asyncio.current_task()`` and
- ``asyncio.all_tasks()``. Add helpers intended to be used by alternative
- task implementations: ``asyncio._register_task``, ``asyncio._enter_task``,
- ``asyncio._leave_task`` and ``asyncio._unregister_task``. Deprecate
- ``asyncio.Task.current_task()`` and ``asyncio.Task.all_tasks()``.
- - bpo-32255: A single empty field is now always quoted when written into a
- CSV file. This allows to distinguish an empty row from a row consisting of
- a single empty field. Patch by Licht Takeuchi.
- - bpo-32277: Raise ``NotImplementedError`` instead of ``SystemError`` on
- platforms where ``chmod(..., follow_symlinks=False)`` is not supported.
- Patch by Anthony Sottile.
- - bpo-30050: New argument warn_on_full_buffer to signal.set_wakeup_fd lets
- you control whether Python prints a warning on stderr when the wakeup fd
- buffer overflows.
- - bpo-29137: The ``fpectl`` library has been removed. It was never enabled
- by default, never worked correctly on x86-64, and it changed the Python
- ABI in ways that caused unexpected breakage of C extensions.
- - bpo-32273: Move asyncio.test_utils to test.test_asyncio.
- - bpo-32272: Remove asyncio.async() function.
- - bpo-32269: Add asyncio.get_running_loop() function.
- - bpo-32265: All class and static methods of builtin types now are correctly
- classified by inspect.classify_class_attrs() and grouped in pydoc ouput.
- Added types.ClassMethodDescriptorType for unbound class methods of builtin
- types.
- - bpo-32253: Deprecate ``yield from lock``, ``await lock``, ``with (yield
- from lock)`` and ``with await lock`` for asyncio synchronization
- primitives.
- - bpo-22589: Changed MIME type of .bmp from 'image/x-ms-bmp' to 'image/bmp'
- - bpo-32193: Convert asyncio to use *async/await* syntax. Old styled ``yield
- from`` is still supported too.
- - bpo-32206: Add support to run modules with pdb
- - bpo-32227: ``functools.singledispatch`` now supports registering
- implementations using type annotations.
- - bpo-15873: Added new alternate constructors
- :meth:`datetime.datetime.fromisoformat`,
- :meth:`datetime.time.fromisoformat` and
- :meth:`datetime.date.fromisoformat` as the inverse operation of each
- classes's respective ``isoformat`` methods.
- - bpo-32199: The getnode() ip getter now uses 'ip link' instead of 'ip link
- list'.
- - bpo-32143: os.statvfs() includes the f_fsid field from statvfs(2)
- - bpo-26439: Fix ctypes.util.find_library() for AIX by implementing
- ctypes._aix.find_library() Patch by: Michael Felt
- - bpo-31993: The pickler now uses less memory when serializing large bytes
- and str objects into a file. Pickles created with protocol 4 will require
- less memory for unpickling large bytes and str objects.
- - bpo-27456: Ensure TCP_NODELAY is set on Linux. Tests by Victor Stinner.
- - bpo-31778: ast.literal_eval() is now more strict. Addition and subtraction
- of arbitrary numbers no longer allowed.
- - bpo-31802: Importing native path module (``posixpath``, ``ntpath``) now
- works even if the ``os`` module still is not imported.
- - bpo-30241: Add contextlib.AbstractAsyncContextManager. Patch by Jelle
- Zijlstra.
- - bpo-31699: Fix deadlocks in
- :class:`concurrent.futures.ProcessPoolExecutor` when task arguments or
- results cause pickling or unpickling errors. This should make sure that
- calls to the :class:`ProcessPoolExecutor` API always eventually return.
- - bpo-15216: ``TextIOWrapper.reconfigure()`` supports changing *encoding*,
- *errors*, and *newline*.
- Documentation
- -------------
- - bpo-32418: Add get_loop() method to Server and AbstractServer classes.
- Tests
- -----
- - bpo-32252: Fix faulthandler_suppress_crash_report() used to prevent core
- dump files when testing crashes. getrlimit() returns zero on success.
- - bpo-32002: Adjust C locale coercion testing for the empty locale and POSIX
- locale cases to more readily adjust to platform dependent behaviour.
- Windows
- -------
- - bpo-19764: Implement support for `subprocess.Popen(close_fds=True)` on
- Windows. Patch by Segev Finer.
- Tools/Demos
- -----------
- - bpo-24960: 2to3 and lib2to3 can now read pickled grammar files using
- pkgutil.get_data() rather than probing the filesystem. This lets 2to3 and
- lib2to3 work when run from a zipfile.
- C API
- -----
- - bpo-32030: Py_Initialize() doesn't reset the memory allocators to default
- if the ``PYTHONMALLOC`` environment variable is not set.
- - bpo-29084: Undocumented C API for OrderedDict has been excluded from the
- limited C API. It was added by mistake and actually never worked in the
- limited C API.
- - bpo-32264: Moved the pygetopt.h header into internal/, since it has no
- public APIs.
- - bpo-32241: :c:func:`Py_SetProgramName` and :c:func:`Py_SetPythonHome` now
- take the ``const wchar *`` arguments instead of ``wchar *``.
- What's New in Python 3.7.0 alpha 3?
- ===================================
- *Release date: 2017-12-05*
- Core and Builtins
- -----------------
- - bpo-32176: co_flags.CO_NOFREE is now always set correctly by the code
- object constructor based on freevars and cellvars, rather than needing to
- be set correctly by the caller. This ensures it will be cleared
- automatically when additional cell references are injected into a modified
- code object and function.
- - bpo-10544: Yield expressions are now deprecated in comprehensions and
- generator expressions. They are still permitted in the definition of the
- outermost iterable, as that is evaluated directly in the enclosing scope.
- - bpo-32137: The repr of deeply nested dict now raises a RecursionError
- instead of crashing due to a stack overflow.
- - bpo-32096: Revert memory allocator changes in the C API: move structures
- back from _PyRuntime to Objects/obmalloc.c. The memory allocators are once
- again initialized statically, and so PyMem_RawMalloc() and
- Py_DecodeLocale() can be called before _PyRuntime_Initialize().
- - bpo-32043: Add a new "developer mode": new "-X dev" command line option to
- enable debug checks at runtime.
- - bpo-32023: SyntaxError is now correctly raised when a generator expression
- without parenthesis is used instead of an inheritance list in a class
- definition. The duplication of the parentheses can be omitted only on
- calls.
- - bpo-32012: SyntaxError is now correctly raised when a generator expression
- without parenthesis is passed as an argument, but followed by a trailing
- comma. A generator expression always needs to be directly inside a set of
- parentheses and cannot have a comma on either side.
- - bpo-28180: A new internal ``_Py_SetLocaleFromEnv(category)`` helper
- function has been added in order to improve the consistency of behaviour
- across different ``libc`` implementations (e.g. Android doesn't support
- setting the locale from the environment by default).
- - bpo-31949: Fixed several issues in printing tracebacks
- (PyTraceBack_Print()).
- * Setting sys.tracebacklimit to 0 or less now suppresses printing tracebacks.
- * Setting sys.tracebacklimit to None now causes using the default limit.
- * Setting sys.tracebacklimit to an integer larger than LONG_MAX now means using
- the limit LONG_MAX rather than the default limit.
- * Fixed integer overflows in the case of more than 2**31 traceback items on
- Windows.
- * Fixed output errors handling.
- - bpo-30696: Fix the interactive interpreter looping endlessly when no
- memory.
- - bpo-20047: Bytearray methods partition() and rpartition() now accept only
- bytes-like objects as separator, as documented. In particular they now
- raise TypeError rather of returning a bogus result when an integer is
- passed as a separator.
- - bpo-21720: BytesWarning no longer emitted when the *fromlist* argument of
- ``__import__()`` or the ``__all__`` attribute of the module contain bytes
- instances.
- - bpo-31845: Environment variables are once more read correctly at
- interpreter startup.
- - bpo-28936: Ensure that lexically first syntax error involving a parameter
- and ``global`` or ``nonlocal`` is detected first at a given scope. Patch
- by Ivan Levkivskyi.
- - bpo-31825: Fixed OverflowError in the 'unicode-escape' codec and in
- codecs.escape_decode() when decode an escaped non-ascii byte.
- - bpo-31618: The per-frame tracing logic added in 3.7a1 has been altered so
- that ``frame->f_lineno`` is updated before either ``"line"`` or
- ``"opcode"`` events are emitted. Previously, opcode events were emitted
- first, and therefore would occasionally see stale line numbers on the
- frame. The behavior of this feature has changed slightly as a result: when
- both ``f_trace_lines`` and ``f_trace_opcodes`` are enabled, line events
- now occur first.
- - bpo-28603: Print the full context/cause chain of exceptions on interpreter
- exit, even if an exception in the chain is unhashable or compares equal to
- later ones. Patch by Zane Bitter.
- - bpo-31786: Fix timeout rounding in the select module to round correctly
- negative timeouts between -1.0 and 0.0. The functions now block waiting
- for events as expected. Previously, the call was incorrectly non-blocking.
- Patch by Pablo Galindo.
- - bpo-31781: Prevent crashes when calling methods of an uninitialized
- ``zipimport.zipimporter`` object. Patch by Oren Milman.
- - bpo-30399: Standard repr() of BaseException with a single argument no
- longer contains redundant trailing comma.
- - bpo-31626: Fixed a bug in debug memory allocator. There was a write to
- freed memory after shrinking a memory block.
- - bpo-30817: `PyErr_PrintEx()` clears now the ignored exception that may be
- raised by `_PySys_SetObjectId()`, for example when no memory.
- Library
- -------
- - bpo-28556: Two minor fixes for ``typing`` module: allow shallow copying
- instances of generic classes, improve interaction of ``__init_subclass__``
- with generics. Original PRs by Ivan Levkivskyi.
- - bpo-32214: PEP 557, Data Classes. Provides a decorator which adds
- boilerplate methods to classes which use type annotations so specify
- fields.
- - bpo-27240: The header folding algorithm for the new email policies has
- been rewritten, which also fixes bpo-30788, bpo-31831, and bpo-32182. In
- particular, RFC2231 folding is now done correctly.
- - bpo-32186: io.FileIO.readall() and io.FileIO.read() now release the GIL
- when getting the file size. Fixed hang of all threads with inaccessible
- NFS server. Patch by Nir Soffer.
- - bpo-321010: Add :attr:`sys.flags.dev_mode` flag
- - bpo-32154: The ``asyncio.windows_utils.socketpair()`` function has been
- removed: use directly :func:`socket.socketpair` which is available on all
- platforms since Python 3.5 (before, it wasn't available on Windows).
- ``asyncio.windows_utils.socketpair()`` was just an alias to
- ``socket.socketpair`` on Python 3.5 and newer.
- - bpo-32089: warnings: In development (-X dev) and debug mode (pydebug
- build), use the "default" action for ResourceWarning, rather than the
- "always" action, in the default warnings filters.
- - bpo-32107: ``uuid.getnode()`` now preferentially returns universally
- administered MAC addresses if available, over locally administered MAC
- addresses. This makes a better guarantee for global uniqueness of UUIDs
- returned from ``uuid.uuid1()``. If only locally administered MAC
- addresses are available, the first such one found is returned.
- - bpo-23033: Wildcard is now supported in hostname when it is one and only
- character in the left most segment of hostname in second argument of
- :meth:`ssl.match_hostname`. Patch by Mandeep Singh.
- - bpo-12239: Make :meth:`msilib.SummaryInformation.GetProperty` return
- ``None`` when the value of property is ``VT_EMPTY``. Initial patch by
- Mark Mc Mahon.
- - bpo-28334: Use :func:`os.path.expanduser` to find the ``~/.netrc`` file in
- :class:`netrc.netrc`. If it does not exist, :exc:`FileNotFoundError` is
- raised. Patch by Dimitri Merejkowsky.
- - bpo-32121: Made ``tracemalloc.Traceback`` behave more like the traceback
- module, sorting the frames from oldest to most recent.
- ``Traceback.format()`` now accepts negative *limit*, truncating the result
- to the ``abs(limit)`` oldest frames. To get the old behaviour, one can use
- the new *most_recent_first* argument to ``Traceback.format()``. (Patch by
- Jesse Bakker.)
- - bpo-31325: Fix wrong usage of :func:`collections.namedtuple` in the
- :meth:`RobotFileParser.parse() <urllib.robotparser.RobotFileParser.parse>`
- method.
- Initial patch by Robin Wellner.
- - bpo-12382: :func:`msilib.OpenDatabase` now raises a better exception
- message when it couldn't open or create an MSI file. Initial patch by
- William Tisäter.
- - bpo-19610: ``setup()`` now warns about invalid types for some fields.
- The ``distutils.dist.Distribution`` class now warns when ``classifiers``,
- ``keywords`` and ``platforms`` fields are not specified as a list or a
- string.
- - bpo-32071: Added the ``-k`` command-line option to ``python -m unittest``
- to run only tests that match the given pattern(s).
- - bpo-10049: Added *nullcontext* no-op context manager to contextlib. This
- provides a simpler and faster alternative to ExitStack() when handling
- optional context managers.
- - bpo-28684: The new test.support.skip_unless_bind_unix_socket() decorator
- is used here to skip asyncio tests that fail because the platform lacks a
- functional bind() function for unix domain sockets (as it is the case for
- non root users on the recent Android versions that run now SELinux in
- enforcing mode).
- - bpo-32110: ``codecs.StreamReader.read(n)`` now returns not more than *n*
- characters/bytes for non-negative *n*. This makes it compatible with
- ``read()`` methods of other file-like objects.
- - bpo-27535: The warnings module doesn't leak memory anymore in the hidden
- warnings registry for the "ignore" action of warnings filters.
- warn_explicit() function doesn't add the warning key to the registry
- anymore for the "ignore" action.
- - bpo-32088: warnings: When Python is build is debug mode (``Py_DEBUG``),
- :exc:`DeprecationWarning`, :exc:`PendingDeprecationWarning` and
- :exc:`ImportWarning` warnings are now displayed by default.
- - bpo-1647489: Fixed searching regular expression patterns that could match
- an empty string. Non-empty string can now be correctly found after
- matching an empty string.
- - bpo-25054: Added support of splitting on a pattern that could match an
- empty string.
- - bpo-32072: Fixed issues with binary plists:
- * Fixed saving bytearrays.
- * Identical objects will be saved only once.
- * Equal references will be load as identical objects.
- * Added support for saving and loading recursive data structures.
- - bpo-32069: Drop legacy SSL transport from asyncio, ssl.MemoryBIO is always
- used anyway.
- - bpo-32066: asyncio: Support pathlib.Path in create_unix_connection; sock
- arg should be optional
- - bpo-32046: Updates 2to3 to convert from operator.isCallable(obj) to
- callable(obj). Patch by Dong-hee Na.
- - bpo-32018: inspect.signature should follow PEP 8, if the parameter has an
- annotation and a default value. Patch by Dong-hee Na.
- - bpo-32025: Add time.thread_time() and time.thread_time_ns()
- - bpo-32037: Integers that fit in a signed 32-bit integer will be now
- pickled with protocol 0 using the INT opcode. This will decrease the size
- of a pickle, speed up pickling and unpickling, and make these integers be
- unpickled as int instances in Python 2.
- - bpo-32034: Make asyncio.IncompleteReadError and LimitOverrunError
- pickleable.
- - bpo-32015: Fixed the looping of asyncio in the case of reconnection the
- socket during waiting async read/write from/to the socket.
- - bpo-32011: Restored support of loading marshal files with the TYPE_INT64
- code. These files can be produced in Python 2.7.
- - bpo-28369: Enhance add_reader/writer check that socket is not used by some
- transport. Before, only cases when add_reader/writer were called with an
- int FD were supported. Now the check is implemented correctly for all
- file-like objects.
- - bpo-31976: Fix race condition when flushing a file is slow, which can
- cause a segfault if closing the file from another thread.
- - bpo-31985: Formally deprecated aifc.openfp, sunau.openfp, and wave.openfp.
- Since change 7bc817d5ba917528e8bd07ec461c635291e7b06a in 1993, openfp in
- each of the three modules had been pointing to that module's open function
- as a matter of backwards compatibility, though it had been both untested
- and undocumented.
- - bpo-21862: cProfile command line now accepts `-m module_name` as an
- alternative to script path. Patch by Sanyam Khurana.
- - bpo-31970: Reduce performance overhead of asyncio debug mode.
- - bpo-31843: *database* argument of sqlite3.connect() now accepts a
- :term:`path-like object`, instead of just a string.
- - bpo-31945: Add Configurable *blocksize* to ``HTTPConnection`` and
- ``HTTPSConnection`` for improved upload throughput. Patch by Nir Soffer.
- - bpo-31943: Add a ``cancelled()`` method to :class:`asyncio.Handle`. Patch
- by Marat Sharafutdinov.
- - bpo-9678: Fixed determining the MAC address in the uuid module:
- * Using ifconfig on NetBSD and OpenBSD.
- * Using arp on Linux, FreeBSD, NetBSD and OpenBSD.
- Based on patch by Takayuki Shimizukawa.
- - bpo-30057: Fix potential missed signal in signal.signal().
- - bpo-31933: Fix Blake2 params leaf_size and node_offset on big endian
- platforms. Patch by Jack O'Connor.
- - bpo-21423: Add an initializer argument to {Process,Thread}PoolExecutor
- - bpo-31927: Fixed compilation of the socket module on NetBSD 8. Fixed
- assertion failure or reading arbitrary data when parse a AF_BLUETOOTH
- address on NetBSD and DragonFly BSD.
- - bpo-27666: Fixed stack corruption in curses.box() and curses.ungetmouse()
- when the size of types chtype or mmask_t is less than the size of C long.
- curses.box() now accepts characters as arguments. Based on patch by Steve
- Fink.
- - bpo-31917: Add 3 new clock identifiers: :data:`time.CLOCK_BOOTTIME`,
- :data:`time.CLOCK_PROF` and :data:`time.CLOCK_UPTIME`.
- - bpo-31897: plistlib now catches more errors when read binary plists and
- raises InvalidFileException instead of unexpected exceptions.
- - bpo-25720: Fix the method for checking pad state of curses WINDOW. Patch
- by Masayuki Yamamoto.
- - bpo-31893: Fixed the layout of the kqueue_event structure on OpenBSD and
- NetBSD. Fixed the comparison of the kqueue_event objects.
- - bpo-31891: Fixed building the curses module on NetBSD.
- - bpo-31884: added required constants to subprocess module for setting
- priority on windows
- - bpo-28281: Remove year (1-9999) limits on the Calendar.weekday() function.
- Patch by Mark Gollahon.
- - bpo-31702: crypt.mksalt() now allows to specify the number of rounds for
- SHA-256 and SHA-512 hashing.
- - bpo-30639: :func:`inspect.getfile` no longer computes the repr of unknown
- objects to display in an error message, to protect against badly behaved
- custom reprs.
- - bpo-30768: Fix the pthread+semaphore implementation of
- PyThread_acquire_lock_timed() when called with timeout > 0 and
- intr_flag=0: recompute the timeout if sem_timedwait() is interrupted by a
- signal (EINTR). See also the :pep:`475`.
- - bpo-31854: Add ``mmap.ACCESS_DEFAULT`` constant.
- - bpo-31834: Use optimized code for BLAKE2 only with SSSE3+. The pure SSE2
- implementation is slower than the pure C reference implementation.
- - bpo-28292: Calendar.itermonthdates() will now consistently raise an
- exception when a date falls outside of the 0001-01-01 through 9999-12-31
- range. To support applications that cannot tolerate such exceptions, the
- new methods itermonthdays3() and itermonthdays4() are added. The new
- methods return tuples and are not restricted by the range supported by
- datetime.date.
- - bpo-28564: The shutil.rmtree() function has been sped up to 20--40%. This
- was done using the os.scandir() function.
- - bpo-28416: Instances of pickle.Pickler subclass with the persistent_id()
- method and pickle.Unpickler subclass with the persistent_load() method no
- longer create reference cycles.
- - bpo-31653: Don't release the GIL if we can acquire a multiprocessing
- semaphore immediately.
- - bpo-28326: Fix multiprocessing.Process when stdout and/or stderr is closed
- or None.
- - bpo-20825: Add `subnet_of` and `superset_of` containment tests to
- :class:`ipaddress.IPv6Network` and :class:`ipaddress.IPv4Network`. Patch
- by Michel Albert and Cheryl Sabella.
- - bpo-31827: Remove the os.stat_float_times() function. It was introduced in
- Python 2.3 for backward compatibility with Python 2.2, and was deprecated
- since Python 3.1.
- - bpo-31756: Add a ``subprocess.Popen(text=False)`` keyword argument to
- `subprocess` functions to be more explicit about when the library should
- attempt to decode outputs into text. Patch by Andrew Clegg.
- - bpo-31819: Add AbstractEventLoop.sock_recv_into().
- - bpo-31457: If nested log adapters are used, the inner ``process()``
- methods are no longer omitted.
- - bpo-31457: The ``manager`` property on LoggerAdapter objects is now
- properly settable.
- - bpo-31806: Fix timeout rounding in time.sleep(), threading.Lock.acquire()
- and socket.socket.settimeout() to round correctly negative timeouts
- between -1.0 and 0.0. The functions now block waiting for events as
- expected. Previously, the call was incorrectly non-blocking. Patch by
- Pablo Galindo.
- - bpo-31803: time.clock() and time.get_clock_info('clock') now emit a
- DeprecationWarning warning.
- - bpo-31800: Extended support for parsing UTC offsets. strptime '%z' can now
- parse the output generated by datetime.isoformat, including seconds and
- microseconds.
- - bpo-28603: traceback: Fix a TypeError that occurred during printing of
- exception tracebacks when either the current exception or an exception in
- its context/cause chain is unhashable. Patch by Zane Bitter.
- - bpo-30541: Add new function to seal a mock and prevent the automatically
- creation of child mocks. Patch by Mario Corchero.
- - bpo-31784: Implement the :pep:`564`, add new 6 new functions with
- nanosecond resolution to the :mod:`time` module:
- :func:`~time.clock_gettime_ns`, :func:`~time.clock_settime_ns`,
- :func:`~time.monotonic_ns`, :func:`~time.perf_counter_ns`,
- :func:`~time.process_time_ns`, :func:`~time.time_ns`.
- - bpo-30143: 2to3 now generates a code that uses abstract collection classes
- from collections.abc rather than collections.
- - bpo-31770: Prevent a crash when calling the ``__init__()`` method of a
- ``sqlite3.Cursor`` object more than once. Patch by Oren Milman.
- - bpo-31764: Prevent a crash in ``sqlite3.Cursor.close()`` in case the
- ``Cursor`` object is uninitialized. Patch by Oren Milman.
- - bpo-31752: Fix possible crash in timedelta constructor called with custom
- integers.
- - bpo-31620: an empty asyncio.Queue now doesn't leak memory when queue.get
- pollers timeout
- - bpo-31690: Allow the flags re.ASCII, re.LOCALE, and re.UNICODE to be used
- as group flags for regular expressions.
- - bpo-30349: FutureWarning is now emitted if a regular expression contains
- character set constructs that will change semantically in the future
- (nested sets and set operations).
- - bpo-31664: Added support for the Blowfish hashing in the crypt module.
- - bpo-31632: Fix method set_protocol() of class _SSLProtocolTransport in
- asyncio module. This method was previously modifying a wrong reference to
- the protocol.
- - bpo-15037: Added a workaround for getkey() in curses for ncurses 5.7 and
- earlier.
- - bpo-31307: Allow use of bytes objects for arguments to
- :meth:`configparser.ConfigParser.read`. Patch by Vincent Michel.
- - bpo-31334: Fix ``poll.poll([timeout])`` in the ``select`` module for
- arbitrary negative timeouts on all OSes where it can only be a
- non-negative integer or -1. Patch by Riccardo Coccioli.
- - bpo-31310: multiprocessing's semaphore tracker should be launched again if
- crashed.
- - bpo-31308: Make multiprocessing's forkserver process immune to Ctrl-C and
- other user interruptions. If it crashes, restart it when necessary.
- - bpo-31245: Added support for AF_UNIX socket in asyncio
- `create_datagram_endpoint`.
- - bpo-30553: Add HTTP/2 status code 421 (Misdirected Request) to
- :class:`http.HTTPStatus`. Patch by Vitor Pereira.
- Documentation
- -------------
- - bpo-32105: Added asyncio.BaseEventLoop.connect_accepted_socket
- versionadded marker.
- Tests
- -----
- - bpo-31380: Skip test_httpservers test_undecodable_file on macOS: fails on
- APFS.
- - bpo-31705: Skip test_socket.test_sha256() on Linux kernel older than 4.5.
- The test fails with ENOKEY on kernel 3.10 (on ppc64le). A fix was merged
- into the kernel 4.5.
- - bpo-32138: Skip on Android test_faulthandler tests that raise SIGSEGV and
- remove the test.support.requires_android_level decorator.
- - bpo-32136: The runtime embedding tests have been split out from
- ``Lib/test/test_capi.py`` into a new ``Lib/test/test_embed.py`` file.
- - bpo-28668: test.support.requires_multiprocessing_queue is removed. Skip
- tests with test.support.import_module('multiprocessing.synchronize')
- instead when the semaphore implementation is broken or missing.
- - bpo-32126: Skip test_get_event_loop_new_process in
- test.test_asyncio.test_events when sem_open() is not functional.
- - bpo-31174: Fix test_tools.test_unparse: DirectoryTestCase now stores the
- names sample to always test the same files. It prevents false alarms when
- hunting reference leaks.
- Build
- -----
- - bpo-28538: Revert the previous changes, the if_nameindex structure is
- defined by Unified Headers.
- - bpo-28762: Revert the last commit, the F_LOCK macro is defined by Android
- Unified Headers.
- - bpo-29040: Support building Android with Unified Headers. The first NDK
- release to support Unified Headers is android-ndk-r14.
- - bpo-32059: ``detect_modules()`` in ``setup.py`` now also searches the
- sysroot paths when cross-compiling.
- - bpo-31957: Fixes Windows SDK version detection when building for Windows.
- - bpo-31609: Fixes quotes in PCbuild/clean.bat
- - bpo-31934: Abort the build when building out of a not clean source tree.
- - bpo-31926: Fixed Argument Clinic sometimes causing compilation errors when
- there was more than one function and/or method in a .c file with the same
- name.
- - bpo-28791: Update Windows builds to use SQLite 3.21.0.
- - bpo-28791: Update OS X installer to use SQLite 3.21.0.
- - bpo-28643: Record profile-opt build progress with stamp files.
- - bpo-31866: Finish removing support for AtheOS.
- Windows
- -------
- - bpo-1102: Return ``None`` when ``View.Fetch()`` returns
- ``ERROR_NO_MORE_ITEMS`` instead of raising ``MSIError``.
- Initial patch by Anthony Tuininga.
- - bpo-31944: Fixes Modify button in Apps and Features dialog.
- - bpo-20486: Implement the ``Database.Close()`` method to help closing MSI
- database objects.
- - bpo-31857: Make the behavior of USE_STACKCHECK deterministic in a
- multi-threaded environment.
- macOS
- -----
- - bpo-31392: Update macOS installer to use OpenSSL 1.0.2m
- IDLE
- ----
- - bpo-32207: Improve tk event exception tracebacks in IDLE. When tk event
- handling is driven by IDLE's run loop, a confusing and distracting
- queue.EMPTY traceback context is no longer added to tk event exception
- tracebacks. The traceback is now the same as when event handling is
- driven by user code. Patch based on a suggestion by Serhiy Storchaka.
- - bpo-32164: Delete unused file idlelib/tabbedpages.py. Use of TabbedPageSet
- in configdialog was replaced by ttk.Notebook.
- - bpo-32100: IDLE: Fix old and new bugs in pathbrowser; improve tests. Patch
- mostly by Cheryl Sabella.
- - bpo-31858: IDLE -- Restrict shell prompt manipulation to the shell. Editor
- and output windows only see an empty last prompt line. This simplifies
- the code and fixes a minor bug when newline is inserted. Sys.ps1, if
- present, is read on Shell start-up, but is not set or changed.
- - bpo-31860: The font sample in the IDLE configuration dialog is now
- editable. Changes persist while IDLE remains open
- - bpo-31836: Test_code_module now passes if run after test_idle, which sets
- ps1.
- The code module uses sys.ps1 if present or sets it to '>>> ' if not.
- Test_code_module now properly tests both behaviors. Ditto for ps2.
- - bpo-28603: Fix a TypeError that caused a shell restart when printing a
- traceback that includes an exception that is unhashable. Patch by Zane
- Bitter.
- - bpo-13802: Use non-Latin characters in the IDLE's Font settings sample.
- Even if one selects a font that defines a limited subset of the unicode
- Basic Multilingual Plane, tcl/tk will use other fonts that define a
- character. The expanded example give users of non-Latin characters a
- better idea of what they might see in IDLE's shell and editors.
- To make room for the expanded sample, frames on the Font tab are
- re-arranged. The Font/Tabs help explains a bit about the additions.
- Tools/Demos
- -----------
- - bpo-32159: Remove CVS and Subversion tools: remove svneol.py and
- treesync.py scripts. CPython migrated from CVS to Subversion, to
- Mercurial, and then to Git. CVS and Subversion are no longer used to
- develop CPython.
- - bpo-30722: Make redemo work with Python 3.6 and newer versions.
- Also, remove the ``LOCALE`` option since it doesn't work with string
- patterns in Python 3.
- Patch by Christoph Sarnowski.
- C API
- -----
- - bpo-20891: Fix PyGILState_Ensure(). When PyGILState_Ensure() is called in
- a non-Python thread before PyEval_InitThreads(), only call
- PyEval_InitThreads() after calling PyThreadState_New() to fix a crash.
- - bpo-32125: The ``Py_UseClassExceptionsFlag`` flag has been removed. It was
- deprecated and wasn't used anymore since Python 2.0.
- - bpo-25612: Move the current exception state from the frame object to the
- co-routine. This simplifies the interpreter and fixes a couple of obscure
- bugs caused by having swap exception state when entering or exiting a
- generator.
- - bpo-23699: Add Py_RETURN_RICHCOMPARE macro to reduce boilerplate code in
- rich comparison functions.
- - bpo-30697: The `PyExc_RecursionErrorInst` singleton is removed and
- `PyErr_NormalizeException()` does not use it anymore. This singleton is
- persistent and its members being never cleared may cause a segfault during
- finalization of the interpreter. See also issue #22898.
- What's New in Python 3.7.0 alpha 2?
- ===================================
- *Release date: 2017-10-16*
- Core and Builtins
- -----------------
- - bpo-31558: ``gc.freeze()`` is a new API that allows for moving all objects
- currently tracked by the garbage collector to a permanent generation,
- effectively removing them from future collection events. This can be used
- to protect those objects from having their PyGC_Head mutated. In effect,
- this enables great copy-on-write stability at fork().
- - bpo-31642: Restored blocking "from package import module" by setting
- sys.modules["package.module"] to None.
- - bpo-31708: Allow use of asynchronous generator expressions in synchronous
- functions.
- - bpo-31709: Drop support of asynchronous __aiter__.
- - bpo-30404: The -u option now makes the stdout and stderr streams
- unbuffered rather than line-buffered.
- - bpo-31619: Fixed a ValueError when convert a string with large number of
- underscores to integer with binary base.
- - bpo-31602: Fix an assertion failure in `zipimporter.get_source()` in case
- of a bad `zlib.decompress()`. Patch by Oren Milman.
- - bpo-31592: Fixed an assertion failure in Python parser in case of a bad
- `unicodedata.normalize()`. Patch by Oren Milman.
- - bpo-31588: Raise a `TypeError` with a helpful error message when class
- creation fails due to a metaclass with a bad ``__prepare__()`` method.
- Patch by Oren Milman.
- - bpo-31574: Importlib was instrumented with two dtrace probes to profile
- import timing.
- - bpo-31566: Fix an assertion failure in `_warnings.warn()` in case of a bad
- ``__name__`` global. Patch by Oren Milman.
- - bpo-31506: Improved the error message logic for object.__new__ and
- object.__init__.
- - bpo-31505: Fix an assertion failure in `json`, in case
- `_json.make_encoder()` received a bad `encoder()` argument. Patch by Oren
- Milman.
- - bpo-31492: Fix assertion failures in case of failing to import from a
- module with a bad ``__name__`` attribute, and in case of failing to access
- an attribute of such a module. Patch by Oren Milman.
- - bpo-31478: Fix an assertion failure in `_random.Random.seed()` in case the
- argument has a bad ``__abs__()`` method. Patch by Oren Milman.
- - bpo-31336: Speed up class creation by 10-20% by reducing the overhead in
- the necessary special method lookups. Patch by Stefan Behnel.
- - bpo-31415: Add ``-X importtime`` option to show how long each import
- takes. It can be used to optimize application's startup time. Support the
- :envvar:`PYTHONPROFILEIMPORTTIME` as an equivalent way to enable this.
- - bpo-31410: Optimized calling wrapper and classmethod descriptors.
- - bpo-31353: :pep:`553` - Add a new built-in called ``breakpoint()`` which
- calls ``sys.breakpointhook()``. By default this imports ``pdb`` and calls
- ``pdb.set_trace()``, but users may override ``sys.breakpointhook()`` to
- call whatever debugger they want. The original value of the hook is saved
- in ``sys.__breakpointhook__``.
- - bpo-17852: Maintain a list of open buffered files, flush them before
- exiting the interpreter. Based on a patch from Armin Rigo.
- - bpo-31315: Fix an assertion failure in imp.create_dynamic(), when
- spec.name is not a string. Patch by Oren Milman.
- - bpo-31311: Fix a crash in the ``__setstate__()`` method of
- `ctypes._CData`, in case of a bad ``__dict__``. Patch by Oren Milman.
- - bpo-31293: Fix crashes in true division and multiplication of a timedelta
- object by a float with a bad as_integer_ratio() method. Patch by Oren
- Milman.
- - bpo-31285: Fix an assertion failure in `warnings.warn_explicit`, when the
- return value of the received loader's get_source() has a bad splitlines()
- method. Patch by Oren Milman.
- - bpo-30406: Make ``async`` and ``await`` proper keywords, as specified in
- PEP 492.
- Library
- -------
- - bpo-30058: Fixed buffer overflow in select.kqueue.control().
- - bpo-31672: ``idpattern`` in ``string.Template`` matched some non-ASCII
- characters. Now it uses ``-i`` regular expression local flag to avoid
- non-ASCII characters.
- - bpo-31701: On Windows, faulthandler.enable() now ignores MSC and COM
- exceptions.
- - bpo-31728: Prevent crashes in `_elementtree` due to unsafe cleanup of
- `Element.text` and `Element.tail`. Patch by Oren Milman.
- - bpo-31671: Now ``re.compile()`` converts passed RegexFlag to normal int
- object before compiling. bm_regex_compile benchmark shows 14% performance
- improvements.
- - bpo-30397: The types of compiled regular objects and match objects are now
- exposed as `re.Pattern` and `re.Match`. This adds information in pydoc
- output for the re module.
- - bpo-31675: Fixed memory leaks in Tkinter's methods splitlist() and split()
- when pass a string larger than 2 GiB.
- - bpo-31673: Fixed typo in the name of Tkinter's method adderrorinfo().
- - bpo-31648: Improvements to path predicates in ElementTree:
- * Allow whitespace around predicate parts, i.e. "[a = 'text']" instead of requiring the less readable "[a='text']".
- * Add support for text comparison of the current node, like "[.='text']".
- Patch by Stefan Behnel.
- - bpo-30806: Fix the string representation of a netrc object.
- - bpo-31638: Add optional argument ``compressed`` to
- ``zipapp.create_archive``, and add option ``--compress`` to the command
- line interface of ``zipapp``.
- - bpo-25351: Avoid venv activate failures with undefined variables
- - bpo-20519: Avoid ctypes use (if possible) and improve import time for
- uuid.
- - bpo-28293: The regular expression cache is no longer completely dumped
- when it is full.
- - bpo-31596: Added pthread_getcpuclockid() to the time module
- - bpo-27494: Make 2to3 accept a trailing comma in generator expressions. For
- example, ``set(x for x in [],)`` is now allowed.
- - bpo-30347: Stop crashes when concurrently iterate over itertools.groupby()
- iterators.
- - bpo-30346: An iterator produced by itertools.groupby() iterator now
- becomes exhausted after advancing the groupby iterator.
- - bpo-31556: Cancel asyncio.wait_for future faster if timeout <= 0
- - bpo-31540: Allow passing a context object in
- :class:`concurrent.futures.ProcessPoolExecutor` constructor. Also, free
- job resources in :class:`concurrent.futures.ProcessPoolExecutor` earlier
- to improve memory usage when a worker waits for new jobs.
- - bpo-31516: ``threading.current_thread()`` should not return a dummy thread
- at shutdown.
- - bpo-31525: In the sqlite module, require the sqlite3_prepare_v2 API. Thus,
- the sqlite module now requires sqlite version at least 3.3.9.
- - bpo-26510: argparse subparsers are now required by default. This matches
- behaviour in Python 2. For optional subparsers, use the new parameter
- ``add_subparsers(required=False)``. Patch by Anthony Sottile. (As of
- 3.7.0rc1, the default was changed to not required as had been the case
- since Python 3.3.)
- - bpo-27541: Reprs of subclasses of some collection and iterator classes
- (`bytearray`, `array.array`, `collections.deque`,
- `collections.defaultdict`, `itertools.count`, `itertools.repeat`) now
- contain actual type name insteads of hardcoded name of the base class.
- - bpo-31351: python -m ensurepip now exits with non-zero exit code if pip
- bootstrapping has failed.
- - bpo-31389: ``pdb.set_trace()`` now takes an optional keyword-only argument
- ``header``. If given, this is printed to the console just before debugging
- begins.
- Documentation
- -------------
- - bpo-31537: Fix incorrect usage of ``get_history_length`` in readline
- documentation example code. Patch by Brad Smith.
- - bpo-30085: The operator functions without double underscores are preferred
- for clarity. The one with underscores are only kept for
- back-compatibility.
- Build
- -----
- - bpo-31696: Improve compiler version information in :data:`sys.version`
- when Python is built with Clang.
- - bpo-31625: Stop using ranlib on static libraries. Instead, we assume ar
- supports the 's' flag.
- - bpo-31624: Remove support for BSD/OS.
- - bpo-22140: Prevent double substitution of prefix in python-config.sh.
- - bpo-31569: Correct PCBuild/ case to PCbuild/ in build scripts and
- documentation.
- - bpo-31536: Avoid wholesale rebuild after `make regen-all` if nothing
- changed.
- IDLE
- ----
- - bpo-31460: Simplify the API of IDLE's Module Browser.
- Passing a widget instead of an flist with a root widget opens the option
- of creating a browser frame that is only part of a window. Passing a full
- file name instead of pieces assumed to come from a .py file opens the
- possibility of browsing python files that do not end in .py.
- - bpo-31649: IDLE - Make _htest, _utest parameters keyword only.
- - bpo-31559: Remove test order dependence in idle_test.test_browser.
- - bpo-31459: Rename IDLE's module browser from Class Browser to Module
- Browser. The original module-level class and method browser became a
- module browser, with the addition of module-level functions, years ago.
- Nested classes and functions were added yesterday. For
- back-compatibility, the virtual event <<open-class-browser>>, which
- appears on the Keys tab of the Settings dialog, is not changed. Patch by
- Cheryl Sabella.
- - bpo-31500: Default fonts now are scaled on HiDPI displays.
- - bpo-1612262: IDLE module browser now shows nested classes and functions.
- Original patches for code and tests by Guilherme Polo and Cheryl Sabella,
- respectively.
- C API
- -----
- - bpo-28280: Make `PyMapping_Keys()`, `PyMapping_Values()` and
- `PyMapping_Items()` always return a `list` (rather than a `list` or a
- `tuple`). Patch by Oren Milman.
- - bpo-31532: Fix memory corruption due to allocator mix in getpath.c between
- Py_GetPath() and Py_SetPath()
- - bpo-25658: Implement PEP 539 for Thread Specific Storage (TSS) API: it is
- a new Thread Local Storage (TLS) API to CPython which would supersede use
- of the existing TLS API within the CPython interpreter, while deprecating
- the existing API. PEP written by Erik M. Bray, patch by Masayuki Yamamoto.
- What's New in Python 3.7.0 alpha 1?
- ===================================
- *Release date: 2017-09-19*
- Security
- --------
- - bpo-29781: SSLObject.version() now correctly returns None when handshake
- over BIO has not been performed yet.
- - bpo-29505: Add fuzz tests for float(str), int(str), unicode(str); for
- oss-fuzz.
- - bpo-30947: Upgrade libexpat embedded copy from version 2.2.1 to 2.2.3 to
- get security fixes.
- - bpo-30730: Prevent environment variables injection in subprocess on
- Windows. Prevent passing other environment variables and command
- arguments.
- - bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple
- security vulnerabilities including: CVE-2017-9233 (External entity
- infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix),
- CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and
- CVE-2012-0876 (Counter hash flooding with SipHash). Note: the
- CVE-2016-5300 (Use os-specific entropy sources like getrandom) doesn't
- impact Python, since Python already gets entropy from the OS to set the
- expat secret using ``XML_SetHashSalt()``.
- - bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For
- example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the
- ``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an
- authentication (``login@host``).
- - bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes of
- CVE-2016-0718 and CVE-2016-4472. See
- https://sourceforge.net/p/expat/bugs/537/ for more information.
- Core and Builtins
- -----------------
- - bpo-31490: Fix an assertion failure in `ctypes` class definition, in case
- the class has an attribute whose name is specified in ``_anonymous_`` but
- not in ``_fields_``. Patch by Oren Milman.
- - bpo-31471: Fix an assertion failure in `subprocess.Popen()` on Windows, in
- case the env argument has a bad keys() method. Patch by Oren Milman.
- - bpo-31418: Fix an assertion failure in `PyErr_WriteUnraisable()` in case
- of an exception with a bad ``__module__`` attribute. Patch by Oren Milman.
- - bpo-31416: Fix assertion failures in case of a bad warnings.filters or
- warnings.defaultaction. Patch by Oren Milman.
- - bpo-28411: Change direct usage of PyInterpreterState.modules to
- PyImport_GetModuleDict(). Also introduce more uniformity in other code
- that deals with sys.modules. This helps reduce complications when working
- on sys.modules.
- - bpo-28411: Switch to the abstract API when dealing with
- ``PyInterpreterState.modules``. This allows later support for all dict
- subclasses and other Mapping implementations. Also add a
- ``PyImport_GetModule()`` function to reduce a bunch of duplicated code.
- - bpo-31411: Raise a TypeError instead of SystemError in case
- warnings.onceregistry is not a dictionary. Patch by Oren Milman.
- - bpo-31344: For finer control of tracing behaviour when testing the
- interpreter, two new frame attributes have been added to control the
- emission of particular trace events: ``f_trace_lines`` (``True`` by
- default) to turn off per-line trace events; and ``f_trace_opcodes``
- (``False`` by default) to turn on per-opcode trace events.
- - bpo-31373: Fix several possible instances of undefined behavior due to
- floating-point demotions.
- - bpo-30465: Location information (``lineno`` and ``col_offset``) in
- f-strings is now (mostly) correct. This fixes tools like flake8 from
- showing warnings on the wrong line (typically the first line of the file).
- - bpo-30860: Consolidate CPython's global runtime state under a single
- struct. This improves discoverability of the runtime state.
- - bpo-31347: Fix possible undefined behavior in _PyObject_FastCall_Prepend.
- - bpo-31343: Include sys/sysmacros.h for major(), minor(), and makedev().
- GNU C libray plans to remove the functions from sys/types.h.
- - bpo-31291: Fix an assertion failure in `zipimport.zipimporter.get_data` on
- Windows, when the return value of ``pathname.replace('/','\\')`` isn't a
- string. Patch by Oren Milman.
- - bpo-31271: Fix an assertion failure in the write() method of
- `io.TextIOWrapper`, when the encoder doesn't return a bytes object. Patch
- by Oren Milman.
- - bpo-31243: Fix a crash in some methods of `io.TextIOWrapper`, when the
- decoder's state is invalid. Patch by Oren Milman.
- - bpo-30721: ``print`` now shows correct usage hint for using Python 2
- redirection syntax. Patch by Sanyam Khurana.
- - bpo-31070: Fix a race condition in importlib _get_module_lock().
- - bpo-30747: Add a non-dummy implementation of _Py_atomic_store and
- _Py_atomic_load on MSVC.
- - bpo-31095: Fix potential crash during GC caused by ``tp_dealloc`` which
- doesn't call ``PyObject_GC_UnTrack()``.
- - bpo-31071: Avoid masking original TypeError in call with * unpacking when
- other arguments are passed.
- - bpo-30978: str.format_map() now passes key lookup exceptions through.
- Previously any exception was replaced with a KeyError exception.
- - bpo-30808: Use _Py_atomic API for concurrency-sensitive signal state.
- - bpo-30876: Relative import from unloaded package now reimports the package
- instead of failing with SystemError. Relative import from non-package now
- fails with ImportError rather than SystemError.
- - bpo-30703: Improve signal delivery.
- Avoid using Py_AddPendingCall from signal handler, to avoid calling
- signal-unsafe functions. The tests I'm adding here fail without the rest
- of the patch, on Linux and OS X. This means our signal delivery logic had
- defects (some signals could be lost).
- - bpo-30765: Avoid blocking in pthread_mutex_lock() when
- PyThread_acquire_lock() is asked not to block.
- - bpo-31161: Make sure the 'Missing parentheses' syntax error message is
- only applied to SyntaxError, not to subclasses. Patch by Martijn Pieters.
- - bpo-30814: Fixed a race condition when import a submodule from a package.
- - bpo-30736: The internal unicodedata database has been upgraded to Unicode
- 10.0.
- - bpo-30604: Move co_extra_freefuncs from per-thread to per-interpreter to
- avoid crashes.
- - bpo-30597: ``print`` now shows expected input in custom error message when
- used as a Python 2 statement. Patch by Sanyam Khurana.
- - bpo-30682: Removed a too-strict assertion that failed for certain
- f-strings, such as eval("f'\\\n'") and eval("f'\\\r'").
- - bpo-30501: The compiler now produces more optimal code for complex
- condition expressions in the "if", "while" and "assert" statement, the
- "if" expression, and generator expressions and comprehensions.
- - bpo-28180: Implement PEP 538 (legacy C locale coercion). This means that
- when a suitable coercion target locale is available, both the core
- interpreter and locale-aware C extensions will assume the use of UTF-8 as
- the default text encoding, rather than ASCII.
- - bpo-30486: Allows setting cell values for __closure__. Patch by Lisa
- Roach.
- - bpo-30537: itertools.islice now accepts integer-like objects (having an
- __index__ method) as start, stop, and slice arguments
- - bpo-25324: Tokens needed for parsing in Python moved to C. ``COMMENT``,
- ``NL`` and ``ENCODING``. This way the tokens and tok_names in the token
- module don't get changed when you import the tokenize module.
- - bpo-29104: Fixed parsing backslashes in f-strings.
- - bpo-27945: Fixed various segfaults with dict when input collections are
- mutated during searching, inserting or comparing. Based on patches by
- Duane Griffin and Tim Mitchell.
- - bpo-25794: Fixed type.__setattr__() and type.__delattr__() for
- non-interned attribute names. Based on patch by Eryk Sun.
- - bpo-30039: If a KeyboardInterrupt happens when the interpreter is in the
- middle of resuming a chain of nested 'yield from' or 'await' calls, it's
- now correctly delivered to the innermost frame.
- - bpo-28974: ``object.__format__(x, '')`` is now equivalent to ``str(x)``
- rather than ``format(str(self), '')``.
- - bpo-30024: Circular imports involving absolute imports with binding a
- submodule to a name are now supported.
- - bpo-12414: sys.getsizeof() on a code object now returns the sizes which
- includes the code struct and sizes of objects which it references. Patch
- by Dong-hee Na.
- - bpo-29839: len() now raises ValueError rather than OverflowError if
- __len__() returned a large negative integer.
- - bpo-11913: README.rst is now included in the list of distutils standard
- READMEs and therefore included in source distributions.
- - bpo-29914: Fixed default implementations of __reduce__ and
- __reduce_ex__(). object.__reduce__() no longer takes arguments,
- object.__reduce_ex__() now requires one argument.
- - bpo-29949: Fix memory usage regression of set and frozenset object.
- - bpo-29935: Fixed error messages in the index() method of tuple, list and
- deque when pass indices of wrong type.
- - bpo-29816: Shift operation now has less opportunity to raise
- OverflowError. ValueError always is raised rather than OverflowError for
- negative counts. Shifting zero with non-negative count always returns
- zero.
- - bpo-24821: Fixed the slowing down to 25 times in the searching of some
- unlucky Unicode characters.
- - bpo-29102: Add a unique ID to PyInterpreterState. This makes it easier to
- identify each subinterpreter.
- - bpo-29894: The deprecation warning is emitted if __complex__ returns an
- instance of a strict subclass of complex. In a future versions of Python
- this can be an error.
- - bpo-29859: Show correct error messages when any of the pthread_* calls in
- thread_pthread.h fails.
- - bpo-29849: Fix a memory leak when an ImportError is raised during from
- import.
- - bpo-28856: Fix an oversight that %b format for bytes should support
- objects follow the buffer protocol.
- - bpo-29723: The ``sys.path[0]`` initialization change for bpo-29139 caused
- a regression by revealing an inconsistency in how sys.path is initialized
- when executing ``__main__`` from a zipfile, directory, or other import
- location. The interpreter now consistently avoids ever adding the import
- location's parent directory to ``sys.path``, and ensures no other
- ``sys.path`` entries are inadvertently modified when inserting the import
- location named on the command line.
- - bpo-29568: Escaped percent "%%" in the format string for classic string
- formatting no longer allows any characters between two percents.
- - bpo-29714: Fix a regression that bytes format may fail when containing
- zero bytes inside.
- - bpo-29695: bool(), float(), list() and tuple() no longer take keyword
- arguments. The first argument of int() can now be passes only as
- positional argument.
- - bpo-28893: Set correct __cause__ for errors about invalid awaitables
- returned from __aiter__ and __anext__.
- - bpo-28876: ``bool(range)`` works even if ``len(range)`` raises
- :exc:`OverflowError`.
- - bpo-29683: Fixes to memory allocation in _PyCode_SetExtra. Patch by Brian
- Coleman.
- - bpo-29684: Fix minor regression of PyEval_CallObjectWithKeywords. It
- should raise TypeError when kwargs is not a dict. But it might cause segv
- when args=NULL and kwargs is not a dict.
- - bpo-28598: Support __rmod__ for subclasses of str being called before
- str.__mod__. Patch by Martijn Pieters.
- - bpo-29607: Fix stack_effect computation for CALL_FUNCTION_EX. Patch by
- Matthieu Dartiailh.
- - bpo-29602: Fix incorrect handling of signed zeros in complex constructor
- for complex subclasses and for inputs having a __complex__ method. Patch
- by Serhiy Storchaka.
- - bpo-29347: Fixed possibly dereferencing undefined pointers when creating
- weakref objects.
- - bpo-29463: Add ``docstring`` field to Module, ClassDef, FunctionDef, and
- AsyncFunctionDef ast nodes. docstring is not first stmt in their body
- anymore. It affects ``co_firstlineno`` and ``co_lnotab`` of code object
- for module and class. (Reverted in :issue:`32911`.)
- - bpo-29438: Fixed use-after-free problem in key sharing dict.
- - bpo-29546: Set the 'path' and 'name' attribute on ImportError for ``from
- ... import ...``.
- - bpo-29546: Improve from-import error message with location
- - bpo-29478: If max_line_length=None is specified while using the Compat32
- policy, it is no longer ignored. Patch by Mircea Cosbuc.
- - bpo-29319: Prevent RunMainFromImporter overwriting sys.path[0].
- - bpo-29337: Fixed possible BytesWarning when compare the code objects.
- Warnings could be emitted at compile time.
- - bpo-29327: Fixed a crash when pass the iterable keyword argument to
- sorted().
- - bpo-29034: Fix memory leak and use-after-free in os module
- (path_converter).
- - bpo-29159: Fix regression in bytes(x) when x.__index__() raises Exception.
- - bpo-29049: Call _PyObject_GC_TRACK() lazily when calling Python function.
- Calling function is up to 5% faster.
- - bpo-28927: bytes.fromhex() and bytearray.fromhex() now ignore all ASCII
- whitespace, not only spaces. Patch by Robert Xiao.
- - bpo-28932: Do not include <sys/random.h> if it does not exist.
- - bpo-25677: Correct the positioning of the syntax error caret for indented
- blocks. Based on patch by Michael Layzell.
- - bpo-29000: Fixed bytes formatting of octals with zero padding in alternate
- form.
- - bpo-18896: Python function can now have more than 255 parameters.
- collections.namedtuple() now supports tuples with more than 255 elements.
- - bpo-28596: The preferred encoding is UTF-8 on Android. Patch written by
- Chi Hsuan Yen.
- - bpo-22257: Clean up interpreter startup (see PEP 432).
- - bpo-26919: On Android, operating system data is now always encoded/decoded
- to/from UTF-8, instead of the locale encoding to avoid inconsistencies
- with os.fsencode() and os.fsdecode() which are already using UTF-8.
- - bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy
- bug triggerable by a monkey-patched len() function.
- - bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must
- not convert combined table into split table. Patch written by INADA Naoki.
- - bpo-28739: f-string expressions are no longer accepted as docstrings and
- by ast.literal_eval() even if they do not include expressions.
- - bpo-28512: Fixed setting the offset attribute of SyntaxError by
- PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().
- - bpo-28918: Fix the cross compilation of xxlimited when Python has been
- built with Py_DEBUG defined.
- - bpo-23722: Rather than silently producing a class that doesn't support
- zero-argument ``super()`` in methods, failing to pass the new
- ``__classcell__`` namespace entry up to ``type.__new__`` now results in a
- ``DeprecationWarning`` and a class that supports zero-argument
- ``super()``.
- - bpo-28797: Modifying the class __dict__ inside the __set_name__ method of
- a descriptor that is used inside that class no longer prevents calling the
- __set_name__ method of other descriptors.
- - bpo-28799: Remove the ``PyEval_GetCallStats()`` function and deprecate the
- untested and undocumented ``sys.callstats()`` function. Remove the
- ``CALL_PROFILE`` special build: use the :func:`sys.setprofile` function,
- :mod:`cProfile` or :mod:`profile` to profile function calls.
- - bpo-12844: More than 255 arguments can now be passed to a function.
- - bpo-28782: Fix a bug in the implementation ``yield from`` when checking if
- the next instruction is YIELD_FROM. Regression introduced by WORDCODE
- (issue #26647).
- - bpo-28774: Fix error position of the unicode error in ASCII and Latin1
- encoders when a string returned by the error handler contains multiple
- non-encodable characters (non-ASCII for the ASCII codec, characters out of
- the U+0000-U+00FF range for Latin1).
- - bpo-28731: Optimize _PyDict_NewPresized() to create correct size dict.
- Improve speed of dict literal with constant keys up to 30%.
- - bpo-28532: Show sys.version when -V option is supplied twice.
- - bpo-27100: The with-statement now checks for __enter__ before it checks
- for __exit__. This gives less confusing error messages when both methods
- are missing. Patch by Jonathan Ellington.
- - bpo-28746: Fix the set_inheritable() file descriptor method on platforms
- that do not have the ioctl FIOCLEX and FIONCLEX commands.
- - bpo-26920: Fix not getting the locale's charset upon initializing the
- interpreter, on platforms that do not have langinfo.
- - bpo-28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
- when decode astral characters. Patch by Xiang Zhang.
- - bpo-28665: Improve speed of the STORE_DEREF opcode by 40%.
- - bpo-19398: Extra slash no longer added to sys.path components in case of
- empty compile-time PYTHONPATH components.
- - bpo-28621: Sped up converting int to float by reusing faster bits counting
- implementation. Patch by Adrian Wielgosik.
- - bpo-28580: Optimize iterating split table values. Patch by Xiang Zhang.
- - bpo-28583: PyDict_SetDefault didn't combine split table when needed. Patch
- by Xiang Zhang.
- - bpo-28128: Deprecation warning for invalid str and byte escape sequences
- now prints better information about where the error occurs. Patch by
- Serhiy Storchaka and Eric Smith.
- - bpo-28509: dict.update() no longer allocate unnecessary large memory.
- - bpo-28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug
- build.
- - bpo-28517: Fixed of-by-one error in the peephole optimizer that caused
- keeping unreachable code.
- - bpo-28214: Improved exception reporting for problematic __set_name__
- attributes.
- - bpo-23782: Fixed possible memory leak in _PyTraceback_Add() and exception
- loss in PyTraceBack_Here().
- - bpo-28183: Optimize and cleanup dict iteration.
- - bpo-26081: Added C implementation of asyncio.Future. Original patch by
- Yury Selivanov.
- - bpo-28379: Added sanity checks and tests for PyUnicode_CopyCharacters().
- Patch by Xiang Zhang.
- - bpo-28376: The type of long range iterator is now registered as Iterator.
- Patch by Oren Milman.
- - bpo-28376: Creating instances of range_iterator by calling range_iterator
- type now is disallowed. Calling iter() on range instance is the only way.
- Patch by Oren Milman.
- - bpo-26906: Resolving special methods of uninitialized type now causes
- implicit initialization of the type instead of a fail.
- - bpo-18287: PyType_Ready() now checks that tp_name is not NULL. Original
- patch by Niklas Koep.
- - bpo-24098: Fixed possible crash when AST is changed in process of
- compiling it.
- - bpo-28201: Dict reduces possibility of 2nd conflict in hash table when
- hashes have same lower bits.
- - bpo-28350: String constants with null character no longer interned.
- - bpo-26617: Fix crash when GC runs during weakref callbacks.
- - bpo-27942: String constants now interned recursively in tuples and
- frozensets.
- - bpo-28289: ImportError.__init__ now resets not specified attributes.
- - bpo-21578: Fixed misleading error message when ImportError called with
- invalid keyword args.
- - bpo-28203: Fix incorrect type in complex(1.0, {2:3}) error message. Patch
- by Soumya Sharma.
- - bpo-28086: Single var-positional argument of tuple subtype was passed
- unscathed to the C-defined function. Now it is converted to exact tuple.
- - bpo-28214: Now __set_name__ is looked up on the class instead of the
- instance.
- - bpo-27955: Fallback on reading /dev/urandom device when the getrandom()
- syscall fails with EPERM, for example when blocked by SECCOMP.
- - bpo-28192: Don't import readline in isolated mode.
- - bpo-27441: Remove some redundant assignments to ob_size in longobject.c.
- Thanks Oren Milman.
- - bpo-27222: Clean up redundant code in long_rshift function. Thanks Oren
- Milman.
- - Upgrade internal unicode databases to Unicode version 9.0.0.
- - bpo-28131: Fix a regression in zipimport's compile_source(). zipimport
- should use the same optimization level as the interpreter.
- - bpo-28126: Replace Py_MEMCPY with memcpy(). Visual Studio can properly
- optimize memcpy().
- - bpo-28120: Fix dict.pop() for splitted dictionary when trying to remove a
- "pending key" (Not yet inserted in split-table). Patch by Xiang Zhang.
- - bpo-26182: Raise DeprecationWarning when async and await keywords are used
- as variable/attribute/class/function name.
- - bpo-26182: Fix a refleak in code that raises DeprecationWarning.
- - bpo-28721: Fix asynchronous generators aclose() and athrow() to handle
- StopAsyncIteration propagation properly.
- - bpo-26110: Speed-up method calls: add LOAD_METHOD and CALL_METHOD opcodes.
- Library
- -------
- - bpo-31499: xml.etree: Fix a crash when a parser is part of a reference
- cycle.
- - bpo-31482: ``random.seed()`` now works with bytes in version=1
- - bpo-28556: typing.get_type_hints now finds the right globalns for classes
- and modules by default (when no ``globalns`` was specified by the caller).
- - bpo-28556: Speed improvements to the ``typing`` module. Original PRs by
- Ivan Levkivskyi and Mitar.
- - bpo-31544: The C accelerator module of ElementTree ignored exceptions
- raised when looking up TreeBuilder target methods in XMLParser().
- - bpo-31234: socket.create_connection() now fixes manually a reference
- cycle: clear the variable storing the last exception on success.
- - bpo-31457: LoggerAdapter objects can now be nested.
- - bpo-31431: SSLContext.check_hostname now automatically sets
- SSLContext.verify_mode to ssl.CERT_REQUIRED instead of failing with a
- ValueError.
- - bpo-31233: socketserver.ThreadingMixIn now keeps a list of non-daemonic
- threads to wait until all these threads complete in server_close().
- - bpo-28638: Changed the implementation strategy for
- collections.namedtuple() to substantially reduce the use of exec() in
- favor of precomputed methods. As a result, the *verbose* parameter and
- *_source* attribute are no longer supported. The benefits include 1)
- having a smaller memory footprint for applications using multiple named
- tuples, 2) faster creation of the named tuple class (approx 4x to 6x
- depending on how it is measured), and 3) minor speed-ups for instance
- creation using __new__, _make, and _replace. (The primary patch
- contributor is Jelle Zijlstra with further improvements by INADA Naoki,
- Serhiy Storchaka, and Raymond Hettinger.)
- - bpo-31400: Improves SSL error handling to avoid losing error numbers.
- - bpo-27629: Make return types of SSLContext.wrap_bio() and
- SSLContext.wrap_socket() customizable.
- - bpo-28958: ssl.SSLContext() now uses OpenSSL error information when a
- context cannot be instantiated.
- - bpo-28182: The SSL module now raises SSLCertVerificationError when OpenSSL
- fails to verify the peer's certificate. The exception contains more
- information about the error.
- - bpo-27340: SSLSocket.sendall() now uses memoryview to create slices of
- data. This fixes support for all bytes-like object. It is also more
- efficient and avoids costly copies.
- - bpo-14191: A new function
- ``argparse.ArgumentParser.parse_intermixed_args`` provides the ability to
- parse command lines where there user intermixes options and positional
- arguments.
- - bpo-31178: Fix string concatenation bug in rare error path in the
- subprocess module
- - bpo-31350: Micro-optimize :func:`asyncio._get_running_loop` to become up
- to 10% faster.
- - bpo-31170: expat: Update libexpat from 2.2.3 to 2.2.4. Fix copying of
- partial characters for UTF-8 input (libexpat bug 115):
- https://github.com/libexpat/libexpat/issues/115
- - bpo-29136: Add TLS 1.3 cipher suites and OP_NO_TLSv1_3.
- - bpo-1198569: ``string.Template`` subclasses can optionally define
- ``braceidpattern`` if they want to specify different placeholder patterns
- inside and outside the braces. If None (the default) it falls back to
- ``idpattern``.
- - bpo-31326: concurrent.futures.ProcessPoolExecutor.shutdown() now
- explicitly closes the call queue. Moreover, shutdown(wait=True) now also
- join the call queue thread, to prevent leaking a dangling thread.
- - bpo-27144: The ``map()`` and ``as_completed()`` iterators in
- ``concurrent.futures`` now avoid keeping a reference to yielded objects.
- - bpo-31281: Fix ``fileinput.FileInput(files, inplace=True)`` when ``files``
- contain ``pathlib.Path`` objects.
- - bpo-10746: Fix ctypes producing wrong PEP 3118 type codes for integer
- types.
- - bpo-27584: ``AF_VSOCK`` has been added to the socket interface which
- allows communication between virtual machines and their host.
- - bpo-22536: The subprocess module now sets the filename when
- FileNotFoundError is raised on POSIX systems due to the executable or cwd
- not being found.
- - bpo-29741: Update some methods in the _pyio module to also accept integer
- types. Patch by Oren Milman.
- - bpo-31249: concurrent.futures: WorkItem.run() used by ThreadPoolExecutor
- now breaks a reference cycle between an exception object and the WorkItem
- object.
- - bpo-31247: xmlrpc.server now explicitly breaks reference cycles when using
- sys.exc_info() in code handling exceptions.
- - bpo-23835: configparser: reading defaults in the ``ConfigParser()``
- constructor is now using ``read_dict()``, making its behavior consistent
- with the rest of the parser. Non-string keys and values in the defaults
- dictionary are now being implicitly converted to strings. Patch by James
- Tocknell.
- - bpo-31238: pydoc: the stop() method of the private ServerThread class now
- waits until DocServer.serve_until_quit() completes and then explicitly
- sets its docserver attribute to None to break a reference cycle.
- - bpo-5001: Many asserts in `multiprocessing` are now more informative, and
- some error types have been changed to more specific ones.
- - bpo-31109: Convert zipimport to use Argument Clinic.
- - bpo-30102: The ssl and hashlib modules now call
- OPENSSL_add_all_algorithms_noconf() on OpenSSL < 1.1.0. The function
- detects CPU features and enables optimizations on some CPU architectures
- such as POWER8. Patch is based on research from Gustavo Serra Scalet.
- - bpo-18966: Non-daemonic threads created by a multiprocessing.Process are
- now joined on child exit.
- - bpo-31183: `dis` now works with asynchronous generator and coroutine
- objects. Patch by George Collins based on diagnosis by Luciano Ramalho.
- - bpo-5001: There are a number of uninformative asserts in the
- `multiprocessing` module, as noted in issue 5001. This change fixes two of
- the most potentially problematic ones, since they are in error-reporting
- code, in the `multiprocessing.managers.convert_to_error` function. (It
- also makes more informative a ValueError message.) The only potentially
- problematic change is that the AssertionError is now a TypeError; however,
- this should also help distinguish it from an AssertionError being
- *reported* by the function/its caller (such as in issue 31169). - Patch by
- Allen W. Smith (drallensmith on github).
- - bpo-31185: Fixed miscellaneous errors in asyncio speedup module.
- - bpo-31151: socketserver.ForkingMixIn.server_close() now waits until all
- child processes completed to prevent leaking zombie processes.
- - bpo-31072: Add an ``include_file`` parameter to
- ``zipapp.create_archive()``
- - bpo-24700: Optimize array.array comparison. It is now from 10x up to 70x
- faster when comparing arrays holding values of the same integer type.
- - bpo-31135: ttk: fix the destroy() method of LabeledScale and OptionMenu
- classes. Call the parent destroy() method even if the used attribute
- doesn't exist. The LabeledScale.destroy() method now also explicitly
- clears label and scale attributes to help the garbage collector to destroy
- all widgets.
- - bpo-31107: Fix `copyreg._slotnames()` mangled attribute calculation for
- classes whose name begins with an underscore. Patch by Shane Harvey.
- - bpo-31080: Allow `logging.config.fileConfig` to accept kwargs and/or args.
- - bpo-30897: ``pathlib.Path`` objects now include an ``is_mount()`` method
- (only implemented on POSIX). This is similar to ``os.path.ismount(p)``.
- Patch by Cooper Ry Lees.
- - bpo-31061: Fixed a crash when using asyncio and threads.
- - bpo-30987: Added support for CAN ISO-TP protocol in the socket module.
- - bpo-30522: Added a ``setStream`` method to ``logging.StreamHandler`` to
- allow the stream to be set after creation.
- - bpo-30502: Fix handling of long oids in ssl. Based on patch by Christian
- Heimes.
- - bpo-5288: Support tzinfo objects with sub-minute offsets.
- - bpo-30919: Fix shared memory performance regression in multiprocessing in
- 3.x.
- Shared memory used anonymous memory mappings in 2.x, while 3.x mmaps
- actual files. Try to be careful to do as little disk I/O as possible.
- - bpo-26732: Fix too many fds in processes started with the "forkserver"
- method.
- A child process would inherit as many fds as the number of still-running
- children.
- - bpo-29403: Fix ``unittest.mock``'s autospec to not fail on method-bound
- builtin functions. Patch by Aaron Gallagher.
- - bpo-30961: Fix decrementing a borrowed reference in tracemalloc.
- - bpo-19896: Fix multiprocessing.sharedctypes to recognize typecodes ``'q'``
- and ``'Q'``.
- - bpo-30946: Remove obsolete code in readline module for platforms where GNU
- readline is older than 2.1 or where select() is not available.
- - bpo-25684: Change ``ttk.OptionMenu`` radiobuttons to be unique across
- instances of ``OptionMenu``.
- - bpo-30886: Fix multiprocessing.Queue.join_thread(): it now waits until the
- thread completes, even if the thread was started by the same process which
- created the queue.
- - bpo-29854: Fix segfault in readline when using readline's history-size
- option. Patch by Nir Soffer.
- - bpo-30794: Added multiprocessing.Process.kill method to terminate using
- the SIGKILL signal on Unix.
- - bpo-30319: socket.close() now ignores ECONNRESET error.
- - bpo-30828: Fix out of bounds write in
- `asyncio.CFuture.remove_done_callback()`.
- - bpo-30302: Use keywords in the ``repr`` of ``datetime.timedelta``.
- - bpo-30807: signal.setitimer() may disable the timer when passed a tiny
- value.
- Tiny values (such as 1e-6) are valid non-zero values for setitimer(),
- which is specified as taking microsecond-resolution intervals. However, on
- some platform, our conversion routine could convert 1e-6 into a zero
- interval, therefore disabling the timer instead of (re-)scheduling it.
- - bpo-30441: Fix bug when modifying os.environ while iterating over it
- - bpo-29585: Avoid importing ``sysconfig`` from ``site`` to improve startup
- speed. Python startup is about 5% faster on Linux and 30% faster on macOS.
- - bpo-29293: Add missing parameter "n" on
- multiprocessing.Condition.notify().
- The doc claims multiprocessing.Condition behaves like threading.Condition,
- but its notify() method lacked the optional "n" argument (to specify the
- number of sleepers to wake up) that threading.Condition.notify() accepts.
- - bpo-30532: Fix email header value parser dropping folding white space in
- certain cases.
- - bpo-30596: Add a ``close()`` method to ``multiprocessing.Process``.
- - bpo-9146: Fix a segmentation fault in _hashopenssl when standard hash
- functions such as md5 are not available in the linked OpenSSL library. As
- in some special FIPS-140 build environments.
- - bpo-29169: Update zlib to 1.2.11.
- - bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that
- contains CR or LF. Patch by Dong-hee Na.
- - bpo-30879: os.listdir() and os.scandir() now emit bytes names when called
- with bytes-like argument.
- - bpo-30746: Prohibited the '=' character in environment variable names in
- ``os.putenv()`` and ``os.spawn*()``.
- - bpo-30664: The description of a unittest subtest now preserves the order
- of keyword arguments of TestCase.subTest().
- - bpo-21071: struct.Struct.format type is now :class:`str` instead of
- :class:`bytes`.
- - bpo-29212: Fix concurrent.futures.thread.ThreadPoolExecutor threads to
- have a non repr() based thread name by default when no thread_name_prefix
- is supplied. They will now identify themselves as
- "ThreadPoolExecutor-y_n".
- - bpo-29755: Fixed the lgettext() family of functions in the gettext module.
- They now always return bytes.
- - bpo-30616: Functional API of enum allows to create empty enums. Patched by
- Dong-hee Na
- - bpo-30038: Fix race condition between signal delivery and wakeup file
- descriptor. Patch by Nathaniel Smith.
- - bpo-23894: lib2to3 now recognizes ``rb'...'`` and ``f'...'`` strings.
- - bpo-24744: pkgutil.walk_packages function now raises ValueError if *path*
- is a string. Patch by Sanyam Khurana.
- - bpo-24484: Avoid race condition in multiprocessing cleanup.
- - bpo-30589: Fix multiprocessing.Process.exitcode to return the opposite of
- the signal number when the process is killed by a signal (instead of 255)
- when using the "forkserver" method.
- - bpo-28994: The traceback no longer displayed for SystemExit raised in a
- callback registered by atexit.
- - bpo-30508: Don't log exceptions if Task/Future "cancel()" method was
- called.
- - bpo-30645: Fix path calculation in `imp.load_package()`, fixing it for
- cases when a package is only shipped with bytecodes. Patch by Alexandru
- Ardelean.
- - bpo-11822: The dis.dis() function now is able to disassemble nested code
- objects.
- - bpo-30624: selectors does not take KeyboardInterrupt and SystemExit into
- account, leaving a fd in a bad state in case of error. Patch by Giampaolo
- Rodola'.
- - bpo-30595: multiprocessing.Queue.get() with a timeout now polls its reader
- in non-blocking mode if it succeeded to acquire the lock but the acquire
- took longer than the timeout.
- - bpo-28556: Updates to typing module: Add generic AsyncContextManager, add
- support for ContextManager on all versions. Original PRs by Jelle Zijlstra
- and Ivan Levkivskyi
- - bpo-30605: re.compile() no longer raises a BytesWarning when compiling a
- bytes instance with misplaced inline modifier. Patch by Roy Williams.
- - bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl
- implementation. Patch by Michaël Sghaïer.
- - bpo-29743: Closing transport during handshake process leaks open socket.
- Patch by Nikolay Kim
- - bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu
- Sornay.
- - bpo-30014: modify() method of poll(), epoll() and devpoll() based classes
- of selectors module is around 10% faster. Patch by Giampaolo Rodola'.
- - bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore
- EINVAL on stdin.write() if the child process is still running but closed
- the pipe.
- - bpo-30463: Addded empty __slots__ to abc.ABC. This allows subclassers to
- deny __dict__ and __weakref__ creation. Patch by Aaron Hall.
- - bpo-30520: Loggers are now pickleable.
- - bpo-30557: faulthandler now correctly filters and displays exception codes
- on Windows
- - bpo-30526: Add TextIOWrapper.reconfigure() and a
- TextIOWrapper.write_through attribute.
- - bpo-30245: Fix possible overflow when organize struct.pack_into error
- message. Patch by Yuan Liu.
- - bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot
- handle IPv6 addresses.
- - bpo-16500: Allow registering at-fork handlers.
- - bpo-30470: Deprecate invalid ctypes call protection on Windows. Patch by
- Mariatta Wijaya.
- - bpo-30414: multiprocessing.Queue._feed background running thread do not
- break from main loop on exception.
- - bpo-30003: Fix handling escape characters in HZ codec. Based on patch by
- Ma Lin.
- - bpo-30149: inspect.signature() now supports callables with
- variable-argument parameters wrapped with partialmethod. Patch by Dong-hee
- Na.
- - bpo-30436: importlib.find_spec() raises ModuleNotFoundError instead of
- AttributeError if the specified parent module is not a package (i.e. lacks
- a __path__ attribute).
- - bpo-30301: Fix AttributeError when using SimpleQueue.empty() under *spawn*
- and *forkserver* start methods.
- - bpo-30375: Warnings emitted when compile a regular expression now always
- point to the line in the user code. Previously they could point into
- inners of the re module if emitted from inside of groups or conditionals.
- - bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error
- (code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted.
- This error occurs sometimes on SSL connections.
- - bpo-29196: Removed previously deprecated in Python 2.4 classes Plist, Dict
- and _InternalDict in the plistlib module. Dict values in the result of
- functions readPlist() and readPlistFromBytes() are now normal dicts. You
- no longer can use attribute access to access items of these dictionaries.
- - bpo-9850: The :mod:`macpath` is now deprecated and will be removed in
- Python 3.8.
- - bpo-30299: Compiling regular expression in debug mode on CPython now
- displays the compiled bytecode in human readable form.
- - bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is running
- coroutine and the coroutine returned without any more ``await``.
- - bpo-30266: contextlib.AbstractContextManager now supports
- anti-registration by setting __enter__ = None or __exit__ = None,
- following the pattern introduced in bpo-25958. Patch by Jelle Zijlstra.
- - bpo-30340: Enhanced regular expressions optimization. This increased the
- performance of matching some patterns up to 25 times.
- - bpo-30298: Weaken the condition of deprecation warnings for inline
- modifiers. Now allowed several subsequential inline modifiers at the start
- of the pattern (e.g. ``'(?i)(?s)...'``). In verbose mode whitespaces and
- comments now are allowed before and between inline modifiers (e.g. ``'(?x)
- (?i) (?s)...'``).
- - bpo-30285: Optimized case-insensitive matching and searching of regular
- expressions.
- - bpo-29990: Fix range checking in GB18030 decoder. Original patch by Ma
- Lin.
- - bpo-29979: rewrite cgi.parse_multipart, reusing the FieldStorage class and
- making its results consistent with those of FieldStorage for
- multipart/form-data requests. Patch by Pierre Quentel.
- - bpo-30243: Removed the __init__ methods of _json's scanner and encoder.
- Misusing them could cause memory leaks or crashes. Now scanner and
- encoder objects are completely initialized in the __new__ methods.
- - bpo-30215: Compiled regular expression objects with the re.LOCALE flag no
- longer depend on the locale at compile time. Only the locale at matching
- time affects the result of matching.
- - bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process
- when Ctrl-C is received.
- - bpo-30103: binascii.b2a_uu() and uu.encode() now support using ``'`'`` as
- zero instead of space.
- - bpo-28556: Various updates to typing module: add typing.NoReturn type, use
- WrapperDescriptorType, minor bug-fixes. Original PRs by Jim
- Fasarakis-Hilliard and Ivan Levkivskyi.
- - bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux.
- - bpo-30228: The seek() and tell() methods of io.FileIO now set the internal
- seekable attribute to avoid one syscall on open() (in buffered or text
- mode).
- - bpo-30190: unittest's assertAlmostEqual and assertNotAlmostEqual provide a
- better message in case of failure which includes the difference between
- left and right arguments. (patch by Giampaolo Rodola')
- - bpo-30101: Add support for curses.A_ITALIC.
- - bpo-29822: inspect.isabstract() now works during __init_subclass__. Patch
- by Nate Soares.
- - bpo-29960: Preserve generator state when _random.Random.setstate() raises
- an exception. Patch by Bryan Olson.
- - bpo-30070: Fixed leaks and crashes in errors handling in the parser
- module.
- - bpo-22352: Column widths in the output of dis.dis() are now adjusted for
- large line numbers and instruction offsets.
- - bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when
- readline() or __next__() respectively return non-sizeable object. Fixed
- possible other errors caused by not checking results of PyObject_Size(),
- PySequence_Size(), or PyMapping_Size().
- - bpo-30218: Fix PathLike support for shutil.unpack_archive. Patch by Jelle
- Zijlstra.
- - bpo-10076: Compiled regular expression and match objects in the re module
- now support copy.copy() and copy.deepcopy() (they are considered atomic).
- - bpo-30068: _io._IOBase.readlines will check if it's closed first when hint
- is present.
- - bpo-29694: Fixed race condition in pathlib mkdir with flags parents=True.
- Patch by Armin Rigo.
- - bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in
- contextlib.contextmanager. Patch by Siddharth Velankar.
- - bpo-26187: Test that sqlite3 trace callback is not called multiple times
- when schema is changing. Indirectly fixed by switching to use
- sqlite3_prepare_v2() in bpo-9303. Patch by Aviv Palivoda.
- - bpo-30017: Allowed calling the close() method of the zip entry writer
- object multiple times. Writing to a closed writer now always produces a
- ValueError.
- - bpo-29998: Pickling and copying ImportError now preserves name and path
- attributes.
- - bpo-29995: re.escape() now escapes only regex special characters.
- - bpo-29962: Add math.remainder operation, implementing remainder as
- specified in IEEE 754.
- - bpo-29649: Improve struct.pack_into() exception messages for problems with
- the buffer size and offset. Patch by Andrew Nester.
- - bpo-29654: Support If-Modified-Since HTTP header (browser cache). Patch
- by Pierre Quentel.
- - bpo-29931: Fixed comparison check for ipaddress.ip_interface objects.
- Patch by Sanjay Sundaresan.
- - bpo-29953: Fixed memory leaks in the replace() method of datetime and time
- objects when pass out of bound fold argument.
- - bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering
- long runs of empty iterables.
- - bpo-10030: Sped up reading encrypted ZIP files by 2 times.
- - bpo-29204: Element.getiterator() and the html parameter of XMLParser()
- were deprecated only in the documentation (since Python 3.2 and 3.4
- correspondintly). Now using them emits a deprecation warning.
- - bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions
- and wrong types.
- - bpo-25996: Added support of file descriptors in os.scandir() on Unix.
- os.fwalk() is sped up by 2 times by using os.scandir().
- - bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an
- exception at the very first of an iterable may swallow the exception or
- make the program hang. Patch by Davin Potts and Xiang Zhang.
- - bpo-23890: unittest.TestCase.assertRaises() now manually breaks a
- reference cycle to not keep objects alive longer than expected.
- - bpo-29901: The zipapp module now supports general path-like objects, not
- just pathlib.Path.
- - bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True) when
- the OS gives priority to errors such as EACCES over EEXIST.
- - bpo-29861: Release references to tasks, their arguments and their results
- as soon as they are finished in multiprocessing.Pool.
- - bpo-19930: The mode argument of os.makedirs() no longer affects the file
- permission bits of newly-created intermediate-level directories.
- - bpo-29884: faulthandler: Restore the old sigaltstack during teardown.
- Patch by Christophe Zeitouny.
- - bpo-25455: Fixed crashes in repr of recursive buffered file-like objects.
- - bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords
- are not strings. Patch by Michael Seifert.
- - bpo-8256: Fixed possible failing or crashing input() if attributes
- "encoding" or "errors" of sys.stdin or sys.stdout are not set or are not
- strings.
- - bpo-28692: Using non-integer value for selecting a plural form in gettext
- is now deprecated.
- - bpo-26121: Use C library implementation for math functions erf() and
- erfc().
- - bpo-29619: os.stat() and os.DirEntry.inode() now convert inode (st_ino)
- using unsigned integers.
- - bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting
- big intables (objects that have __int__) as elements.
- - bpo-29645: Speed up importing the webbrowser module.
- webbrowser.register() is now thread-safe.
- - bpo-28231: The zipfile module now accepts path-like objects for external
- paths.
- - bpo-26915: index() and count() methods of collections.abc.Sequence now
- check identity before checking equality when do comparisons.
- - bpo-28682: Added support for bytes paths in os.fwalk().
- - bpo-29728: Add new :data:`socket.TCP_NOTSENT_LOWAT` (Linux 3.12) constant.
- Patch by Nathaniel J. Smith.
- - bpo-29623: Allow use of path-like object as a single argument in
- ConfigParser.read(). Patch by David Ellis.
- - bpo-9303: Migrate sqlite3 module to _v2 API. Patch by Aviv Palivoda.
- - bpo-28963: Fix out of bound iteration in
- asyncio.Future.remove_done_callback implemented in C.
- - bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes
- before all pipes are closed.
- - bpo-29271: Fix Task.current_task and Task.all_tasks implemented in C to
- accept None argument as their pure Python implementation.
- - bpo-29703: Fix asyncio to support instantiation of new event loops in
- child processes.
- - bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other
- exception) to exception(s) raised in the dispatched methods. Patch by Petr
- Motejlek.
- - bpo-7769: Method register_function() of
- xmlrpc.server.SimpleXMLRPCDispatcher and its subclasses can now be used as
- a decorator.
- - bpo-29376: Fix assertion error in threading._DummyThread.is_alive().
- - bpo-28624: Add a test that checks that cwd parameter of Popen() accepts
- PathLike objects. Patch by Sayan Chowdhury.
- - bpo-28518: Start a transaction implicitly before a DML statement. Patch by
- Aviv Palivoda.
- - bpo-29742: get_extra_info() raises exception if get called on closed ssl
- transport. Patch by Nikolay Kim.
- - bpo-16285: urllib.parse.quote is now based on RFC 3986 and hence includes
- '~' in the set of characters that is not quoted by default. Patch by
- Christian Theune and Ratnadeep Debnath.
- - bpo-29532: Altering a kwarg dictionary passed to functools.partial() no
- longer affects a partial object after creation.
- - bpo-29110: Fix file object leak in aifc.open() when file is given as a
- filesystem path and is not in valid AIFF format. Patch by Anthony Zhang.
- - bpo-22807: Add uuid.SafeUUID and uuid.UUID.is_safe to relay information
- from the platform about whether generated UUIDs are generated with a
- multiprocessing safe method.
- - bpo-29576: Improve some deprecations in importlib. Some deprecated methods
- now emit DeprecationWarnings and have better descriptive messages.
- - bpo-29534: Fixed different behaviour of Decimal.from_float() for _decimal
- and _pydecimal. Thanks Andrew Nester.
- - bpo-10379: locale.format_string now supports the 'monetary' keyword
- argument, and locale.format is deprecated.
- - bpo-29851: importlib.reload() now raises ModuleNotFoundError if the module
- lacks a spec.
- - bpo-28556: Various updates to typing module: typing.Counter,
- typing.ChainMap, improved ABC caching, etc. Original PRs by Jelle
- Zijlstra, Ivan Levkivskyi, Manuel Krebber, and Łukasz Langa.
- - bpo-29100: Fix datetime.fromtimestamp() regression introduced in Python
- 3.6.0: check minimum and maximum years.
- - bpo-29416: Prevent infinite loop in pathlib.Path.mkdir
- - bpo-29444: Fixed out-of-bounds buffer access in the group() method of the
- match object. Based on patch by WGH.
- - bpo-29377: Add WrapperDescriptorType, MethodWrapperType, and
- MethodDescriptorType built-in types to types module. Original patch by
- Manuel Krebber.
- - bpo-29218: Unused install_misc command is now removed. It has been
- documented as unused since 2000. Patch by Eric N. Vander Weele.
- - bpo-29368: The extend() method is now called instead of the append()
- method when unpickle collections.deque and other list-like objects. This
- can speed up unpickling to 2 times.
- - bpo-29338: The help of a builtin or extension class now includes the
- constructor signature if __text_signature__ is provided for the class.
- - bpo-29335: Fix subprocess.Popen.wait() when the child process has exited
- to a stopped instead of terminated state (ex: when under ptrace).
- - bpo-29290: Fix a regression in argparse that help messages would wrap at
- non-breaking spaces.
- - bpo-28735: Fixed the comparison of mock.MagickMock with mock.ANY.
- - bpo-29197: Removed deprecated function ntpath.splitunc().
- - bpo-29210: Removed support of deprecated argument "exclude" in
- tarfile.TarFile.add().
- - bpo-29219: Fixed infinite recursion in the repr of uninitialized
- ctypes.CDLL instances.
- - bpo-29192: Removed deprecated features in the http.cookies module.
- - bpo-29193: A format string argument for string.Formatter.format() is now
- positional-only.
- - bpo-29195: Removed support of deprecated undocumented keyword arguments in
- methods of regular expression objects.
- - bpo-28969: Fixed race condition in C implementation of
- functools.lru_cache. KeyError could be raised when cached function with
- full cache was simultaneously called from differen threads with the same
- uncached arguments.
- - bpo-20804: The unittest.mock.sentinel attributes now preserve their
- identity when they are copied or pickled.
- - bpo-29142: In urllib.request, suffixes in no_proxy environment variable
- with leading dots could match related hostnames again (e.g. .b.c matches
- a.b.c). Patch by Milan Oberkirch.
- - bpo-28961: Fix unittest.mock._Call helper: don't ignore the name parameter
- anymore. Patch written by Jiajun Huang.
- - bpo-15812: inspect.getframeinfo() now correctly shows the first line of a
- context. Patch by Sam Breese.
- - bpo-28985: Update authorizer constants in sqlite3 module. Patch by
- Dingyuan Wang.
- - bpo-29079: Prevent infinite loop in pathlib.resolve() on Windows
- - bpo-13051: Fixed recursion errors in large or resized
- curses.textpad.Textbox. Based on patch by Tycho Andersen.
- - bpo-9770: curses.ascii predicates now work correctly with negative
- integers.
- - bpo-28427: old keys should not remove new values from WeakValueDictionary
- when collecting from another thread.
- - bpo-28923: Remove editor artifacts from Tix.py.
- - bpo-28871: Fixed a crash when deallocate deep ElementTree.
- - bpo-19542: Fix bugs in WeakValueDictionary.setdefault() and
- WeakValueDictionary.pop() when a GC collection happens in another thread.
- - bpo-20191: Fixed a crash in resource.prlimit() when passing a sequence
- that doesn't own its elements as limits.
- - bpo-16255: subprocess.Popen uses /system/bin/sh on Android as the shell,
- instead of /bin/sh.
- - bpo-28779: multiprocessing.set_forkserver_preload() would crash the
- forkserver process if a preloaded module instantiated some multiprocessing
- objects such as locks.
- - bpo-26937: The chown() method of the tarfile.TarFile class does not fail
- now when the grp module cannot be imported, as for example on Android
- platforms.
- - bpo-28847: dbm.dumb now supports reading read-only files and no longer
- writes the index file when it is not changed. A deprecation warning is
- now emitted if the index file is missed and recreated in the 'r' and 'w'
- modes (will be an error in future Python releases).
- - bpo-27030: Unknown escapes consisting of ``'\'`` and an ASCII letter in
- re.sub() replacement templates regular expressions now are errors.
- - bpo-28835: Fix a regression introduced in warnings.catch_warnings(): call
- warnings.showwarning() if it was overridden inside the context manager.
- - bpo-27172: To assist with upgrades from 2.7, the previously documented
- deprecation of ``inspect.getfullargspec()`` has been reversed. This
- decision may be revisited again after the Python 2.7 branch is no longer
- officially supported.
- - bpo-28740: Add sys.getandroidapilevel(): return the build time API version
- of Android as an integer. Function only available on Android.
- - bpo-26273: Add new :data:`socket.TCP_CONGESTION` (Linux 2.6.13) and
- :data:`socket.TCP_USER_TIMEOUT` (Linux 2.6.37) constants. Patch written by
- Omar Sandoval.
- - bpo-28752: Restored the __reduce__() methods of datetime objects.
- - bpo-28727: Regular expression patterns, _sre.SRE_Pattern objects created
- by re.compile(), become comparable (only x==y and x!=y operators). This
- change should fix the issue #18383: don't duplicate warning filters when
- the warnings module is reloaded (thing usually only done in unit tests).
- - bpo-20572: Remove the subprocess.Popen.wait endtime parameter. It was
- deprecated in 3.4 and undocumented prior to that.
- - bpo-25659: In ctypes, prevent a crash calling the from_buffer() and
- from_buffer_copy() methods on abstract classes like Array.
- - bpo-28548: In the "http.server" module, parse the protocol version if
- possible, to avoid using HTTP 0.9 in some error responses.
- - bpo-19717: Makes Path.resolve() succeed on paths that do not exist. Patch
- by Vajrasky Kok
- - bpo-28563: Fixed possible DoS and arbitrary code execution when handle
- plural form selections in the gettext module. The expression parser now
- supports exact syntax supported by GNU gettext.
- - bpo-28387: Fixed possible crash in _io.TextIOWrapper deallocator when the
- garbage collector is invoked in other thread. Based on patch by Sebastian
- Cufre.
- - bpo-27517: LZMA compressor and decompressor no longer raise exceptions if
- given empty data twice. Patch by Benjamin Fogle.
- - bpo-28549: Fixed segfault in curses's addch() with ncurses6.
- - bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
- file with compression before trying to open it without compression.
- Otherwise it had 50% chance failed with ignore_zeros=True.
- - bpo-23262: The webbrowser module now supports Firefox 36+ and derived
- browsers. Based on patch by Oleg Broytman.
- - bpo-24241: The webbrowser in an X environment now prefers using the
- default browser directly. Also, the webbrowser register() function now has
- a documented 'preferred' argument, to specify browsers to be returned by
- get() with no arguments. Patch by David Steele
- - bpo-27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused
- by representing the scale as float value internally in Tk. tkinter.IntVar
- now works if float value is set to underlying Tk variable.
- - bpo-28255: calendar.TextCalendar.prweek() no longer prints a space after a
- weeks's calendar. calendar.TextCalendar.pryear() no longer prints
- redundant newline after a year's calendar. Based on patch by Xiang Zhang.
- - bpo-28255: calendar.TextCalendar.prmonth() no longer prints a space at the
- start of new line after printing a month's calendar. Patch by Xiang
- Zhang.
- - bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces.
- Based on patch by Kaarle Ritvanen.
- - bpo-28353: os.fwalk() no longer fails on broken links.
- - bpo-28430: Fix iterator of C implemented asyncio.Future doesn't accept
- non-None value is passed to it.send(val).
- - bpo-27025: Generated names for Tkinter widgets now start by the "!" prefix
- for readability.
- - bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a
- workaround to Tix library bug.
- - bpo-28488: shutil.make_archive() no longer adds entry "./" to ZIP archive.
- - bpo-25953: re.sub() now raises an error for invalid numerical group
- reference in replacement template even if the pattern is not found in the
- string. Error message for invalid group reference now includes the group
- index and the position of the reference. Based on patch by SilentGhost.
- - bpo-28469: timeit now uses the sequence 1, 2, 5, 10, 20, 50,... instead of
- 1, 10, 100,... for autoranging.
- - bpo-28115: Command-line interface of the zipfile module now uses argparse.
- Added support of long options.
- - bpo-18219: Optimize csv.DictWriter for large number of columns. Patch by
- Mariatta Wijaya.
- - bpo-28448: Fix C implemented asyncio.Future didn't work on Windows.
- - bpo-23214: In the "io" module, the argument to BufferedReader and
- BytesIO's read1() methods is now optional and can be -1, matching the
- BufferedIOBase specification.
- - bpo-28480: Fix error building socket module when multithreading is
- disabled.
- - bpo-28240: timeit: remove ``-c/--clock`` and ``-t/--time`` command line
- options which were deprecated since Python 3.3.
- - bpo-28240: timeit now repeats the benchmarks 5 times instead of only 3 to
- make benchmarks more reliable.
- - bpo-28240: timeit autorange now uses a single loop iteration if the
- benchmark takes less than 10 seconds, instead of 10 iterations. "python3
- -m timeit -s 'import time' 'time.sleep(1)'" now takes 4 seconds instead of
- 40 seconds.
- - Distutils.sdist now looks for README and setup.py files with case
- sensitivity. This behavior matches that found in Setuptools 6.0 and later.
- See `setuptools 100 <https://github.com/pypa/setuptools/issues/100>`_ for
- rationale.
- - bpo-24452: Make webbrowser support Chrome on Mac OS X. Patch by Ned
- Batchelder.
- - bpo-20766: Fix references leaked by pdb in the handling of SIGINT
- handlers.
- - bpo-27998: Fixed bytes path support in os.scandir() on Windows. Patch by
- Eryk Sun.
- - bpo-28317: The disassembler now decodes FORMAT_VALUE argument.
- - bpo-28380: unittest.mock Mock autospec functions now properly support
- assert_called, assert_not_called, and assert_called_once.
- - bpo-28229: lzma module now supports pathlib.
- - bpo-28321: Fixed writing non-BMP characters with binary format in
- plistlib.
- - bpo-28225: bz2 module now supports pathlib. Initial patch by Ethan
- Furman.
- - bpo-28227: gzip now supports pathlib. Patch by Ethan Furman.
- - bpo-28332: Deprecated silent truncations in socket.htons and socket.ntohs.
- Original patch by Oren Milman.
- - bpo-27358: Optimized merging var-keyword arguments and improved error
- message when passing a non-mapping as a var-keyword argument.
- - bpo-28257: Improved error message when passing a non-iterable as a
- var-positional argument. Added opcode BUILD_TUPLE_UNPACK_WITH_CALL.
- - bpo-28322: Fixed possible crashes when unpickle itertools objects from
- incorrect pickle data. Based on patch by John Leitch.
- - bpo-28228: imghdr now supports pathlib.
- - bpo-28226: compileall now supports pathlib.
- - bpo-28314: Fix function declaration (C flags) for the getiterator() method
- of xml.etree.ElementTree.Element.
- - bpo-28148: Stop using localtime() and gmtime() in the time module.
- Introduced platform independent _PyTime_localtime API that is similar to
- POSIX localtime_r, but available on all platforms. Patch by Ed Schouten.
- - bpo-28253: Fixed calendar functions for extreme months: 0001-01 and
- 9999-12.
- Methods itermonthdays() and itermonthdays2() are reimplemented so that
- they don't call itermonthdates() which can cause datetime.date
- under/overflow.
- - bpo-28275: Fixed possible use after free in the decompress() methods of
- the LZMADecompressor and BZ2Decompressor classes. Original patch by John
- Leitch.
- - bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation()
- if pass invalid string-like object as a name. Patch by Xiang Zhang.
- - bpo-18844: random.choices() now has k as a keyword-only argument to
- improve the readability of common cases and come into line with the
- signature used in other languages.
- - bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py.
- Patch by Madison May.
- - bpo-27611: Fixed support of default root window in the tkinter.tix module.
- Added the master parameter in the DisplayStyle constructor.
- - bpo-27348: In the traceback module, restore the formatting of exception
- messages like "Exception: None". This fixes a regression introduced in
- 3.5a2.
- - bpo-25651: Allow falsy values to be used for msg parameter of subTest().
- - bpo-27778: Fix a memory leak in os.getrandom() when the getrandom() is
- interrupted by a signal and a signal handler raises a Python exception.
- - bpo-28200: Fix memory leak on Windows in the os module (fix
- path_converter() function).
- - bpo-25400: RobotFileParser now correctly returns default values for
- crawl_delay and request_rate. Initial patch by Peter Wirtz.
- - bpo-27932: Prevent memory leak in win32_ver().
- - Fix UnboundLocalError in socket._sendfile_use_sendfile.
- - bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of
- os.stat(). Patch by Eryk Sun.
- - bpo-22493: Warning message emitted by using inline flags in the middle of
- regular expression now contains a (truncated) regex pattern. Patch by Tim
- Graham.
- - bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an
- empty bytestring is passed.
- - bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.
- - bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by
- Gergely Imreh and Markus Holtermann.
- - bpo-28114: Fix a crash in parse_envlist() when env contains byte strings.
- Patch by Eryk Sun.
- - bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and
- binascii.a2b_qp().
- - bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by
- Kevin Conway.
- - bpo-28174: Handle when SO_REUSEPORT isn't properly supported. Patch by
- Seth Michael Larson.
- - bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by
- iceboy.
- - bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.
- - bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.
- - bpo-27759: Fix selectors incorrectly retain invalid file descriptors.
- Patch by Mark Williams.
- - bpo-28325: Remove vestigial MacOS 9 macurl2path module and its tests.
- - bpo-28368: Refuse monitoring processes if the child watcher has no loop
- attached. Patch by Vincent Michel.
- - bpo-28369: Raise RuntimeError when transport's FD is used with add_reader,
- add_writer, etc.
- - bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг
- Марк.
- - bpo-28371: Deprecate passing asyncio.Handles to run_in_executor.
- - bpo-28372: Fix asyncio to support formatting of non-python coroutines.
- - bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг
- Марк.
- - bpo-27972: Prohibit Tasks to await on themselves.
- - bpo-24142: Reading a corrupt config file left configparser in an invalid
- state. Original patch by Florian Höch.
- - bpo-29581: ABCMeta.__new__ now accepts ``**kwargs``, allowing abstract
- base classes to use keyword parameters in __init_subclass__. Patch by Nate
- Soares.
- - bpo-25532: inspect.unwrap() will now only try to unwrap an object
- sys.getrecursionlimit() times, to protect against objects which create a
- new object on every attribute access.
- - bpo-30177: path.resolve(strict=False) no longer cuts the path after the
- first element not present in the filesystem. Patch by Antoine Pietri.
- Documentation
- -------------
- - bpo-31294: Fix incomplete code snippet in the ZeroMQSocketListener and
- ZeroMQSocketHandler examples and adapt them to Python 3.
- - bpo-21649: Add RFC 7525 and Mozilla server side TLS links to SSL
- documentation.
- - bpo-31128: Allow the pydoc server to bind to arbitrary hostnames.
- - bpo-30803: Clarify doc on truth value testing. Original patch by Peter
- Thomassen.
- - bpo-30176: Add missing attribute related constants in curses
- documentation.
- - bpo-30052: the link targets for :func:`bytes` and :func:`bytearray` are
- now their respective type definitions, rather than the corresponding
- builtin function entries. Use :ref:`bytes <func-bytes>` and
- :ref:`bytearray <func-bytearray>` to reference the latter.
- In order to ensure this and future cross-reference updates are applied
- automatically, the daily documentation builds now disable the default
- output caching features in Sphinx.
- - bpo-26985: Add missing info of code object in inspect documentation.
- - bpo-19824: Improve the documentation for, and links to, template strings
- by emphasizing their utility for internationalization, and by clarifying
- some usage constraints. (See also: bpo-20314, bpo-12518)
- - bpo-28929: Link the documentation to its source file on GitHub.
- - bpo-25008: Document smtpd.py as effectively deprecated and add a pointer
- to aiosmtpd, a third-party asyncio-based replacement.
- - bpo-26355: Add canonical header link on each page to corresponding major
- version of the documentation. Patch by Matthias Bussonnier.
- - bpo-29349: Fix Python 2 syntax in code for building the documentation.
- - bpo-23722: The data model reference and the porting section in the 3.6
- What's New guide now cover the additional ``__classcell__`` handling
- needed for custom metaclasses to fully support PEP 487 and zero-argument
- ``super()``.
- - bpo-28513: Documented command-line interface of zipfile.
- Tests
- -----
- - bpo-29639: test.support.HOST is now "localhost", a new HOSTv4 constant has
- been added for your ``127.0.0.1`` needs, similar to the existing HOSTv6
- constant.
- - bpo-31320: Silence traceback in test_ssl
- - bpo-31346: Prefer PROTOCOL_TLS_CLIENT and PROTOCOL_TLS_SERVER protocols
- for SSLContext.
- - bpo-25674: Remove sha256.tbs-internet.com ssl test
- - bpo-30715: Address ALPN callback changes for OpenSSL 1.1.0f. The latest
- version behaves like OpenSSL 1.0.2 and no longer aborts handshake.
- - bpo-30822: regrtest: Exclude tzdata from regrtest --all. When running the
- test suite using --use=all / -u all, exclude tzdata since it makes
- test_datetime too slow (15-20 min on some buildbots) which then times out
- on some buildbots. Fix also regrtest command line parser to allow passing
- -u extralargefile to run test_zipfile64.
- - bpo-30695: Add the `set_nomemory(start, stop)` and `remove_mem_hooks()`
- functions to the _testcapi module.
- - bpo-30357: test_thread: setUp() now uses support.threading_setup() and
- support.threading_cleanup() to wait until threads complete to avoid random
- side effects on following tests. Initial patch written by Grzegorz
- Grzywacz.
- - bpo-30197: Enhanced functions swap_attr() and swap_item() in the
- test.support module. They now work when delete replaced attribute or item
- inside the with statement. The old value of the attribute or item (or
- None if it doesn't exist) now will be assigned to the target of the "as"
- clause, if there is one.
- - bpo-24932: Use proper command line parsing in _testembed
- - bpo-28950: Disallow -j0 to be combined with -T/-l in regrtest command line
- arguments.
- - bpo-28683: Fix the tests that bind() a unix socket and raise
- PermissionError on Android for a non-root user.
- - bpo-26936: Fix the test_socket failures on Android - getservbyname(),
- getservbyport() and getaddrinfo() are broken on some Android API levels.
- - bpo-28666: Now test.support.rmtree is able to remove unwritable or
- unreadable directories.
- - bpo-23839: Various caches now are cleared before running every test file.
- - bpo-26944: Fix test_posix for Android where 'id -G' is entirely wrong or
- missing the effective gid.
- - bpo-28409: regrtest: fix the parser of command line arguments.
- - bpo-28217: Adds _testconsole module to test console input.
- - bpo-26939: Add the support.setswitchinterval() function to fix
- test_functools hanging on the Android armv7 qemu emulator.
- Build
- -----
- - bpo-31354: Allow --with-lto to be used on all builds, not just `make
- profile-opt`.
- - bpo-31370: Remove support for building --without-threads.
- This option is not really useful anymore in the 21st century. Removing
- lots of conditional paths allows us to simplify the code base, including
- in difficult to maintain low-level internal code.
- - bpo-31341: Per PEP 11, support for the IRIX operating system was removed.
- - bpo-30854: Fix compile error when compiling --without-threads. Patch by
- Masayuki Yamamoto.
- - bpo-30687: Locate msbuild.exe on Windows when building rather than
- vcvarsall.bat
- - bpo-20210: Support the *disabled* marker in Setup files. Extension modules
- listed after this marker are not built at all, neither by the Makefile nor
- by setup.py.
- - bpo-29941: Add ``--with-assertions`` configure flag to explicitly enable C
- ``assert()`` checks. Defaults to off. ``--with-pydebug`` implies
- ``--with-assertions``.
- - bpo-28787: Fix out-of-tree builds of Python when configured with
- ``--with--dtrace``.
- - bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``,
- ``make install`` and some other make targets when configured with
- ``--enable-optimizations``.
- - bpo-23404: Don't regenerate generated files based on file modification
- time anymore: the action is now explicit. Replace ``make touch`` with
- ``make regen-all``.
- - bpo-29643: Fix ``--enable-optimization`` didn't work.
- - bpo-27593: sys.version and the platform module python_build(),
- python_branch(), and python_revision() functions now use git information
- rather than hg when building from a repo.
- - bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k.
- - bpo-27659: Prohibit implicit C function declarations: use
- ``-Werror=implicit-function-declaration`` when possible (GCC and Clang,
- but it depends on the compiler version). Patch written by Chi Hsuan Yen.
- - bpo-29384: Remove old Be OS helper scripts.
- - bpo-26851: Set Android compilation and link flags.
- - bpo-28768: Fix implicit declaration of function _setmode. Patch by
- Masayuki Yamamoto
- - bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat
- - bpo-23903: Added missed names to PC/python3.def.
- - bpo-28762: lockf() is available on Android API level 24, but the F_LOCK
- macro is not defined in android-ndk-r13.
- - bpo-28538: Fix the compilation error that occurs because if_nameindex() is
- available on Android API level 24, but the if_nameindex structure is not
- defined.
- - bpo-20211: Do not add the directory for installing C header files and the
- directory for installing object code libraries to the cross compilation
- search paths. Original patch by Thomas Petazzoni.
- - bpo-28849: Do not define sys.implementation._multiarch on Android.
- - bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and
- Michael Haubenwallner.
- - bpo-26359: Rename --with-optimiations to --enable-optimizations.
- - bpo-28444: Fix missing extensions modules when cross compiling.
- - bpo-28208: Update Windows build and OS X installers to use SQLite 3.14.2.
- - bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.
- - bpo-21124: Fix building the _struct module on Cygwin by passing ``NULL``
- instead of ``&PyType_Type`` to PyVarObject_HEAD_INIT. Patch by Masayuki
- Yamamoto.
- - bpo-13756: Fix building extensions modules on Cygwin. Patch by Roumen
- Petrov, based on original patch by Jason Tishler.
- - bpo-21085: Add configure check for siginfo_t.si_band, which Cygwin does
- not provide. Patch by Masayuki Yamamoto with review and rebase by Erik
- Bray.
- - bpo-28258: Fixed build with Estonian locale (python-config and distclean
- targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis.
- - bpo-26661: setup.py now detects system libffi with multiarch wrapper.
- - bpo-27979: A full copy of libffi is no longer bundled for use when
- building _ctypes on non-OSX UNIX platforms. An installed copy of libffi
- is now required when building _ctypes on such platforms.
- - bpo-15819: Remove redundant include search directory option for building
- outside the source tree.
- - bpo-28676: Prevent missing 'getentropy' declaration warning on macOS.
- Patch by Gareth Rees.
- Windows
- -------
- - bpo-31392: Update Windows build to use OpenSSL 1.1.0f
- - bpo-30389: Adds detection of Visual Studio 2017 to distutils on Windows.
- - bpo-31358: zlib is no longer bundled in the CPython source, instead it is
- downloaded on demand just like bz2, lzma, OpenSSL, Tcl/Tk, and SQLite.
- - bpo-31340: Change to building with MSVC v141 (included with Visual Studio
- 2017)
- - bpo-30581: os.cpu_count() now returns the correct number of processors on
- Windows when the number of logical processors is greater than 64.
- - bpo-30916: Pre-build OpenSSL, Tcl and Tk and include the binaries in the
- build.
- - bpo-30731: Add a missing xmlns to python.manifest so that it matches the
- schema.
- - bpo-30291: Allow requiring 64-bit interpreters from py.exe using -64
- suffix. Contributed by Steve (Gadget) Barnes.
- - bpo-30362: Adds list options (-0, -0p) to py.exe launcher. Contributed by
- Steve Barnes.
- - bpo-23451: Fix socket deprecation warnings in socketmodule.c. Patch by
- Segev Finer.
- - bpo-30450: The build process on Windows no longer depends on Subversion,
- instead pulling external code from GitHub via a Python script. If Python
- 3.6 is not found on the system (via ``py -3.6``), NuGet is used to
- download a copy of 32-bit Python.
- - bpo-29579: Removes readme.txt from the installer.
- - bpo-25778: winreg does not truncate string correctly (Patch by Eryk Sun)
- - bpo-28896: Deprecate WindowsRegistryFinder and disable it by default
- - bpo-28522: Fixes mishandled buffer reallocation in getpathp.c
- - bpo-28402: Adds signed catalog files for stdlib on Windows.
- - bpo-28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by Eryk
- Sun)
- - bpo-28251: Improvements to help manuals on Windows.
- - bpo-28110: launcher.msi has different product codes between 32-bit and
- 64-bit
- - bpo-28161: Opening CON for write access fails
- - bpo-28162: WindowsConsoleIO readall() fails if first line starts with
- Ctrl+Z
- - bpo-28163: WindowsConsoleIO fileno() passes wrong flags to _open_osfhandle
- - bpo-28164: _PyIO_get_console_type fails for various paths
- - bpo-28137: Renames Windows path file to ._pth
- - bpo-28138: Windows ._pth file should allow import site
- IDLE
- ----
- - bpo-31493: IDLE code context -- fix code update and font update timers.
- Canceling timers prevents a warning message when test_idle completes.
- - bpo-31488: IDLE - Update non-key options in former extension classes. When
- applying configdialog changes, call .reload for each feature class. Change
- ParenMatch so updated options affect existing instances attached to
- existing editor windows.
- - bpo-31477: IDLE - Improve rstrip entry in doc. Strip trailing whitespace
- strips more than blank spaces. Multiline string literals are not skipped.
- - bpo-31480: IDLE - make tests pass with zzdummy extension disabled by
- default.
- - bpo-31421: Document how IDLE runs tkinter programs. IDLE calls tcl/tk
- update in the background in order to make live
- interaction and experimentation with tkinter applications much easier.
- - bpo-31414: IDLE -- fix tk entry box tests by deleting first. Adding to an
- int entry is not the same as deleting and inserting because int('') will
- fail.
- - bpo-31051: Rearrange IDLE configdialog GenPage into Window, Editor, and
- Help sections.
- - bpo-30617: IDLE - Add docstrings and tests for outwin subclass of editor.
- Move some data and functions from the class to module level. Patch by
- Cheryl Sabella.
- - bpo-31287: IDLE - Do not modify tkinter.message in test_configdialog.
- - bpo-27099: Convert IDLE's built-in 'extensions' to regular features.
- About 10 IDLE features were implemented as supposedly optional extensions.
- Their different behavior could be confusing or worse for users and not
- good for maintenance. Hence the conversion.
- The main difference for users is that user configurable key bindings for
- builtin features are now handled uniformly. Now, editing a binding in a
- keyset only affects its value in the keyset. All bindings are defined
- together in the system-specific default keysets in config-extensions.def.
- All custom keysets are saved as a whole in config-extension.cfg. All take
- effect as soon as one clicks Apply or Ok.
- The affected events are '<<force-open-completions>>', '<<expand-word>>',
- '<<force-open-calltip>>', '<<flash-paren>>', '<<format-paragraph>>',
- '<<run-module>>', '<<check-module>>', and '<<zoom-height>>'. Any (global)
- customizations made before 3.6.3 will not affect their keyset-specific
- customization after 3.6.3. and vice versa.
- Initial patch by Charles Wohlganger.
- - bpo-31206: IDLE: Factor HighPage(Frame) class from ConfigDialog. Patch by
- Cheryl Sabella.
- - bpo-31001: Add tests for configdialog highlight tab. Patch by Cheryl
- Sabella.
- - bpo-31205: IDLE: Factor KeysPage(Frame) class from ConfigDialog. The
- slightly modified tests continue to pass. Patch by Cheryl Sabella.
- - bpo-31130: IDLE -- stop leaks in test_configdialog. Initial patch by
- Victor Stinner.
- - bpo-31002: Add tests for configdialog keys tab. Patch by Cheryl Sabella.
- - bpo-19903: IDLE: Calltips use `inspect.signature` instead of
- `inspect.getfullargspec`. This improves calltips for builtins converted to
- use Argument Clinic. Patch by Louie Lu.
- - bpo-31083: IDLE - Add an outline of a TabPage class in configdialog.
- Update existing classes to match outline. Initial patch by Cheryl Sabella.
- - bpo-31050: Factor GenPage(Frame) class from ConfigDialog. The slightly
- modified tests continue to pass. Patch by Cheryl Sabella.
- - bpo-31004: IDLE - Factor FontPage(Frame) class from ConfigDialog.
- Slightly modified tests continue to pass. Fix General tests. Patch mostly
- by Cheryl Sabella.
- - bpo-30781: IDLE - Use ttk widgets in ConfigDialog. Patches by Terry Jan
- Reedy and Cheryl Sabella.
- - bpo-31060: IDLE - Finish rearranging methods of ConfigDialog Grouping
- methods pertaining to each tab and the buttons will aid writing tests and
- improving the tabs and will enable splitting the groups into classes.
- - bpo-30853: IDLE -- Factor a VarTrace class out of ConfigDialog.
- Instance tracers manages pairs consisting of a tk variable and a callback
- function. When tracing is turned on, setting the variable calls the
- function. Test coverage for the new class is 100%.
- - bpo-31003: IDLE: Add more tests for General tab.
- - bpo-30993: IDLE - Improve configdialog font page and tests.
- In configdialog: Document causal pathways in create_font_tab docstring.
- Simplify some attribute names. Move set_samples calls to var_changed_font
- (idea from Cheryl Sabella). Move related functions to positions after the
- create widgets function.
- In test_configdialog: Fix test_font_set so not order dependent. Fix
- renamed test_indent_scale so it tests the widget. Adjust tests for
- movement of set_samples call. Add tests for load functions. Put all font
- tests in one class and tab indent tests in another. Except for two lines,
- these tests completely cover the related functions.
- - bpo-30981: IDLE -- Add more configdialog font page tests.
- - bpo-28523: IDLE: replace 'colour' with 'color' in configdialog.
- - bpo-30917: Add tests for idlelib.config.IdleConf. Increase coverage from
- 46% to 96%. Patch by Louie Lu.
- - bpo-30934: Document coverage details for idlelib tests.
- * Add section to idlelib/idle-test/README.txt.
- * Include check that branches are taken both ways.
- * Exclude IDLE-specific code that does not run during unit tests.
- - bpo-30913: IDLE: Document ConfigDialog tk Vars, methods, and widgets in
- docstrings This will facilitate improving the dialog and splitting up the
- class. Original patch by Cheryl Sabella.
- - bpo-30899: IDLE: Add tests for ConfigParser subclasses in config. Patch by
- Louie Lu.
- - bpo-30881: IDLE: Add docstrings to browser.py. Patch by Cheryl Sabella.
- - bpo-30851: IDLE: Remove unused variables in configdialog. One is a
- duplicate, one is set but cannot be altered by users. Patch by Cheryl
- Sabella.
- - bpo-30870: IDLE: In Settings dialog, select font with Up, Down keys as
- well as mouse. Initial patch by Louie Lu.
- - bpo-8231: IDLE: call config.IdleConf.GetUserCfgDir only once.
- - bpo-30779: IDLE: Factor ConfigChanges class from configdialog, put in
- config; test. * In config, put dump test code in a function; run it and
- unittest in 'if __name__ == '__main__'. * Add class config.ConfigChanges
- based on changes_class_v4.py on bpo issue. * Add class
- test_config.ChangesTest, partly using configdialog_tests_v1.py. * Revise
- configdialog to use ConfigChanges; see tracker msg297804. * Revise
- test_configdialog to match configdialog changes. * Remove configdialog
- functions unused or moved to ConfigChanges. Cheryl Sabella contributed
- parts of the patch.
- - bpo-30777: IDLE: configdialog - Add docstrings and fix comments. Patch by
- Cheryl Sabella.
- - bpo-30495: IDLE: Improve textview with docstrings, PEP8 names, and more
- tests. Patch by Cheryl Sabella.
- - bpo-30723: IDLE: Make several improvements to parenmatch. Add 'parens'
- style to highlight both opener and closer. Make 'default' style, which is
- not default, a synonym for 'opener'. Make time-delay work the same with
- all styles. Add help for config dialog extensions tab, including help for
- parenmatch. Add new tests. Original patch by Charles Wohlganger.
- - bpo-30674: IDLE: add docstrings to grep module. Patch by Cheryl Sabella
- - bpo-21519: IDLE's basic custom key entry dialog now detects duplicates
- properly. Original patch by Saimadhav Heblikar.
- - bpo-29910: IDLE no longer deletes a character after commenting out a
- region by a key shortcut. Add ``return 'break'`` for this and other
- potential conflicts between IDLE and default key bindings.
- - bpo-30728: Review and change idlelib.configdialog names. Lowercase method
- and attribute names. Replace 'colour' with 'color', expand overly cryptic
- names, delete unneeded underscores. Replace ``import *`` with specific
- imports. Patches by Cheryl Sabella.
- - bpo-6739: IDLE: Verify user-entered key sequences by trying to bind them
- with tk. Add tests for all 3 validation functions. Original patch by G
- Polo. Tests added by Cheryl Sabella.
- - bpo-15786: Fix several problems with IDLE's autocompletion box. The
- following should now work: clicking on selection box items; using the
- scrollbar; selecting an item by hitting Return. Hangs on MacOSX should no
- longer happen. Patch by Louie Lu.
- - bpo-25514: Add doc subsubsection about IDLE failure to start. Popup
- no-connection message directs users to this section.
- - bpo-30642: Fix reference leaks in IDLE tests. Patches by Louie Lu and
- Terry Jan Reedy.
- - bpo-30495: Add docstrings for textview.py and use PEP8 names. Patches by
- Cheryl Sabella and Terry Jan Reedy.
- - bpo-30290: Help-about: use pep8 names and add tests. Increase coverage to
- 100%. Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy.
- - bpo-30303: Add _utest option to textview; add new tests. Increase coverage
- to 100%. Patches by Louie Lu and Terry Jan Reedy.
- - bpo-29071: IDLE colors f-string prefixes (but not invalid ur prefixes).
- - bpo-28572: Add 10% to coverage of IDLE's test_configdialog. Update and
- augment description of the configuration system.
- Tools/Demos
- -----------
- - bpo-30983: gdb integration commands (py-bt, etc.) work on optimized shared
- builds now, too. PEP 523 introduced _PyEval_EvalFrameDefault which
- inlines PyEval_EvalFrameEx on non-debug shared builds. This broke the
- ability to use py-bt, py-up, and a few other Python-specific gdb
- integrations. The problem is fixed by only looking for
- _PyEval_EvalFrameDefault frames in python-gdb.py. Original patch by Bruno
- "Polaco" Penteado.
- - bpo-29748: Added the slice index converter in Argument Clinic.
- - bpo-24037: Argument Clinic now uses the converter `bool(accept={int})`
- rather than `int` for semantical booleans. This avoids repeating the
- default value for Python and C and will help in converting to `bool` in
- future.
- - bpo-29367: python-gdb.py now supports also ``method-wrapper``
- (``wrapperobject``) objects.
- - bpo-28023: Fix python-gdb.py didn't support new dict implementation.
- - bpo-15369: The pybench and pystone microbenchmark have been removed from
- Tools. Please use the new Python benchmark suite
- https://github.com/python/performance which is more reliable and includes
- a portable version of pybench working on Python 2 and Python 3.
- - bpo-28102: The zipfile module CLI now prints usage to stderr. Patch by
- Stephen J. Turnbull.
- C API
- -----
- - bpo-31338: Added the ``Py_UNREACHABLE()`` macro for code paths which are
- never expected to be reached. This and a few other useful macros are now
- documented in the C API manual.
- - bpo-30832: Remove own implementation for thread-local storage.
- CPython has provided the own implementation for thread-local storage (TLS)
- on Python/thread.c, it's used in the case which a platform has not
- supplied native TLS. However, currently all supported platforms (Windows
- and pthreads) have provided native TLS and defined the Py_HAVE_NATIVE_TLS
- macro with unconditional in any case.
- - bpo-30708: PyUnicode_AsWideCharString() now raises a ValueError if the
- second argument is NULL and the wchar_t\* string contains null characters.
- - bpo-16500: Deprecate PyOS_AfterFork() and add PyOS_BeforeFork(),
- PyOS_AfterFork_Parent() and PyOS_AfterFork_Child().
- - bpo-6532: The type of results of PyThread_start_new_thread() and
- PyThread_get_thread_ident(), and the id parameter of
- PyThreadState_SetAsyncExc() changed from "long" to "unsigned long".
- - bpo-27867: Function PySlice_GetIndicesEx() is deprecated and replaced with
- a macro if Py_LIMITED_API is not set or set to the value between
- 0x03050400 and 0x03060000 (not including) or 0x03060100 or higher. Added
- functions PySlice_Unpack() and PySlice_AdjustIndices().
- - bpo-29083: Fixed the declaration of some public API functions.
- PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in
- limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and
- Py_BuildValue() were not available in limited API of version < 3.3 when
- PY_SSIZE_T_CLEAN is defined.
- - bpo-28769: The result of PyUnicode_AsUTF8AndSize() and PyUnicode_AsUTF8()
- is now of type ``const char *`` rather of ``char *``.
- - bpo-29058: All stable API extensions added after Python 3.2 are now
- available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of
- the minimum Python version supporting this API.
- - bpo-28822: The index parameters *start* and *end* of PyUnicode_FindChar()
- are now adjusted to behave like ``str[start:end]``.
- - bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.
- - bpo-28761: The fields name and doc of structures PyMemberDef, PyGetSetDef,
- PyStructSequence_Field, PyStructSequence_Desc, and wrapperbase are now of
- type ``const char *`` rather of ``char *``.
- - bpo-28748: Private variable _Py_PackageContext is now of type ``const char
- *`` rather of ``char *``.
- - bpo-19569: Compiler warnings are now emitted if use most of deprecated
- functions.
- - bpo-28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(),
- PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and
- PyUnicode_AsEncodedUnicode().
- What's New in Python 3.6.6 final?
- =================================
- *Release date: 2018-06-27*
- There were no new changes in version 3.6.6.
- What's New in Python 3.6.6 release candidate 1?
- ===============================================
- *Release date: 2018-06-11*
- Core and Builtins
- -----------------
- - bpo-33786: Fix asynchronous generators to handle GeneratorExit in athrow()
- correctly
- - bpo-30654: Fixed reset of the SIGINT handler to SIG_DFL on interpreter
- shutdown even when there was a custom handler set previously. Patch by
- Philipp Kerling.
- - bpo-33622: Fixed a leak when the garbage collector fails to add an object
- with the ``__del__`` method or referenced by it into the
- :data:`gc.garbage` list. :c:func:`PyGC_Collect` can now be called when an
- exception is set and preserves it.
- - bpo-31849: Fix signed/unsigned comparison warning in pyhash.c.
- - bpo-33391: Fix a leak in set_symmetric_difference().
- - bpo-28055: Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer.
- - bpo-33231: Fix potential memory leak in ``normalizestring()``.
- - bpo-29922: Improved error messages in 'async with' when ``__aenter__()``
- or ``__aexit__()`` return non-awaitable object.
- - bpo-33199: Fix ``ma_version_tag`` in dict implementation is uninitialized
- when copying from key-sharing dict.
- - bpo-33041: Fixed jumping when the function contains an ``async for`` loop.
- - bpo-32282: Fix an unnecessary ifdef in the include of VersionHelpers.h in
- socketmodule on Windows.
- - bpo-21983: Fix a crash in `ctypes.cast()` in case the type argument is a
- ctypes structured data type. Patch by Eryk Sun and Oren Milman.
- Library
- -------
- - bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. Patch by
- Steve Weber.
- - bpo-33812: Datetime instance d with non-None tzinfo, but with
- d.tzinfo.utcoffset(d) returning None is now treated as naive by the
- astimezone() method.
- - bpo-30805: Avoid race condition with debug logging
- - bpo-33767: The concatenation (``+``) and repetition (``*``) sequence
- operations now raise :exc:`TypeError` instead of :exc:`SystemError` when
- performed on :class:`mmap.mmap` objects. Patch by Zackery Spytz.
- - bpo-32684: Fix gather to propagate cancellation of itself even with
- return_exceptions.
- - bpo-33674: Fix a race condition in SSLProtocol.connection_made() of
- asyncio.sslproto: start immediately the handshake instead of using
- call_soon(). Previously, data_received() could be called before the
- handshake started, causing the handshake to hang or fail.
- - bpo-31647: Fixed bug where calling write_eof() on a
- _SelectorSocketTransport after it's already closed raises AttributeError.
- - bpo-33672: Fix Task.__repr__ crash with Cython's bogus coroutines
- - bpo-33469: Fix RuntimeError after closing loop that used run_in_executor
- - bpo-11874: Use a better regex when breaking usage into wrappable parts.
- Avoids bogus assertion errors from custom metavar strings.
- - bpo-30877: Fixed a bug in the Python implementation of the JSON decoder
- that prevented the cache of parsed strings from clearing after finishing
- the decoding. Based on patch by c-fos.
- - bpo-33548: tempfile._candidate_tempdir_list should consider common TEMP
- locations
- - bpo-33542: Prevent ``uuid.get_node`` from using a DUID instead of a MAC on
- Windows. Patch by Zvi Effron
- - bpo-26819: Fix race condition with `ReadTransport.resume_reading` in
- Windows proactor event loop.
- - bpo-28556: Minor fixes in typing module: add annotations to
- ``NamedTuple.__new__``, pass ``*args`` and ``**kwds`` in
- ``Generic.__new__``. Original PRs by Paulius Šarka and Chad Dombrova.
- - bpo-20087: Updated alias mapping with glibc 2.27 supported locales.
- - bpo-33422: Fix trailing quotation marks getting deleted when looking up
- byte/string literals on pydoc. Patch by Andrés Delfino.
- - bpo-33197: Update error message when constructing invalid
- inspect.Parameters Patch by Dong-hee Na.
- - bpo-33383: Fixed crash in the get() method of the :mod:`dbm.ndbm` database
- object when it is called with a single argument.
- - bpo-33329: Fix multiprocessing regression on newer glibcs
- - bpo-991266: Fix quoting of the ``Comment`` attribute of
- :class:`http.cookies.SimpleCookie`.
- - bpo-33131: Upgrade bundled version of pip to 10.0.1.
- - bpo-33308: Fixed a crash in the :mod:`parser` module when converting an ST
- object to a tree of tuples or lists with ``line_info=False`` and
- ``col_info=True``.
- - bpo-33263: Fix FD leak in `_SelectorSocketTransport` Patch by Vlad
- Starostin.
- - bpo-33256: Fix display of ``<module>`` call in the html produced by
- ``cgitb.html()``. Patch by Stéphane Blondon.
- - bpo-33203: ``random.Random.choice()`` now raises ``IndexError`` for empty
- sequences consistently even when called from subclasses without a
- ``getrandbits()`` implementation.
- - bpo-33224: Update difflib.mdiff() for PEP 479. Convert an uncaught
- StopIteration in a generator into a return-statement.
- - bpo-33209: End framing at the end of C implementation of
- :func:`pickle.Pickler.dump`.
- - bpo-32861: The urllib.robotparser's ``__str__`` representation now
- includes wildcard entries and the "Crawl-delay" and "Request-rate" fields.
- Patch by Michael Lazar.
- - bpo-33096: Allow ttk.Treeview.insert to insert iid that has a false
- boolean value. Note iid=0 and iid=False would be same. Patch by Garvit
- Khatri.
- - bpo-33127: The ssl module now compiles with LibreSSL 2.7.1.
- - bpo-33021: Release the GIL during fstat() calls, avoiding hang of all
- threads when calling mmap.mmap(), os.urandom(), and random.seed(). Patch
- by Nir Soffer.
- - bpo-27683: Fix a regression in :mod:`ipaddress` that result of
- :meth:`hosts` is empty when the network is constructed by a tuple
- containing an integer mask and only 1 bit left for addresses.
- - bpo-32844: Fix wrong redirection of a low descriptor (0 or 1) to stderr in
- subprocess if another low descriptor is closed.
- - bpo-31908: Fix output of cover files for ``trace`` module command-line
- tool. Previously emitted cover files only when ``--missing`` option was
- used. Patch by Michael Selik.
- - bpo-31457: If nested log adapters are used, the inner ``process()``
- methods are no longer omitted.
- - bpo-16865: Support arrays >=2GiB in :mod:`ctypes`. Patch by Segev Finer.
- - bpo-31238: pydoc: the stop() method of the private ServerThread class now
- waits until DocServer.serve_until_quit() completes and then explicitly
- sets its docserver attribute to None to break a reference cycle.
- Documentation
- -------------
- - bpo-33503: Fix broken pypi link
- - bpo-33421: Add missing documentation for ``typing.AsyncContextManager``.
- - bpo-33378: Add Korean language switcher for https://docs.python.org/3/
- - bpo-33276: Clarify that the ``__path__`` attribute on modules cannot be
- just any value.
- - bpo-33201: Modernize documentation for writing C extension types.
- - bpo-33195: Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document.
- ``Py_UNICODE`` related APIs are deprecated since Python 3.3, but it is
- missed in the document.
- - bpo-33126: Document PyBuffer_ToContiguous().
- - bpo-27212: Modify documentation for the :func:`islice` recipe to consume
- initial values up to the start index.
- - bpo-28247: Update :mod:`zipapp` documentation to describe how to make
- standalone applications.
- - bpo-18802: Documentation changes for ipaddress. Patch by Jon Foster and
- Berker Peksag.
- - bpo-27428: Update documentation to clarify that ``WindowsRegistryFinder``
- implements ``MetaPathFinder``. (Patch by Himanshu Lakhara)
- - bpo-8243: Add a note about curses.addch and curses.addstr exception
- behavior when writing outside a window, or pad.
- - bpo-31432: Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED
- flags for ssl.SSLContext.verify_mode.
- Tests
- -----
- - bpo-33655: Ignore test_posix_fallocate failures on BSD platforms that
- might be due to running on ZFS.
- - bpo-19417: Add test_bdb.py.
- Build
- -----
- - bpo-5755: Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from
- ``OPT``. This option emitted annoying warnings when building extension
- modules written in C++.
- - bpo-33614: Ensures module definition files for the stable ABI on Windows
- are correctly regenerated.
- - bpo-33522: Enable CI builds on Visual Studio Team Services at
- https://python.visualstudio.com/cpython
- - bpo-33012: Add ``-Wno-cast-function-type`` for gcc 8 for silencing
- warnings about function casts like casting to PyCFunction in method
- definition lists.
- - bpo-33394: Enable the verbose build for extension modules, when GNU make
- is passed macros on the command line.
- Windows
- -------
- - bpo-33184: Update Windows installer to OpenSSL 1.0.2o.
- macOS
- -----
- - bpo-33184: Update macOS installer build to use OpenSSL 1.0.2o.
- IDLE
- ----
- - bpo-33656: On Windows, add API call saying that tk scales for DPI. On
- Windows 8.1+ or 10, with DPI compatibility properties of the Python binary
- unchanged, and a monitor resolution greater than 96 DPI, this should make
- text and lines sharper. It should otherwise have no effect.
- - bpo-33768: Clicking on a context line moves that line to the top of the
- editor window.
- - bpo-33763: IDLE: Use read-only text widget for code context instead of
- label widget.
- - bpo-33664: Scroll IDLE editor text by lines. Previously, the mouse wheel
- and scrollbar slider moved text by a fixed number of pixels, resulting in
- partial lines at the top of the editor box. The change also applies to
- the shell and grep output windows, but not to read-only text views.
- - bpo-33679: Enable theme-specific color configuration for Code Context. Use
- the Highlights tab to see the setting for built-in themes or add settings
- to custom themes.
- - bpo-33642: Display up to maxlines non-blank lines for Code Context. If
- there is no current context, show a single blank line.
- - bpo-33628: IDLE: Cleanup codecontext.py and its test.
- - bpo-33564: IDLE's code context now recognizes async as a block opener.
- - bpo-29706: IDLE now colors async and await as keywords in 3.6. They become
- full keywords in 3.7.
- - bpo-21474: Update word/identifier definition from ascii to unicode. In
- text and entry boxes, this affects selection by double-click, movement
- left/right by control-left/right, and deletion left/right by
- control-BACKSPACE/DEL.
- - bpo-33204: IDLE: consistently color invalid string prefixes. A 'u' string
- prefix cannot be paired with either 'r' or 'f'. Consistently color as much
- of the prefix, starting at the right, as is valid. Revise and extend
- colorizer test.
- - bpo-32831: Add docstrings and tests for codecontext.
- Tools/Demos
- -----------
- - bpo-33189: :program:`pygettext.py` now recognizes only literal strings as
- docstrings and translatable strings, and rejects bytes literals and
- f-string expressions.
- - bpo-31920: Fixed handling directories as arguments in the ``pygettext``
- script. Based on patch by Oleg Krasnikov.
- - bpo-29673: Fix pystackv and pystack gdbinit macros.
- - bpo-32885: Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disable
- automatic backup creation (files with ``~`` suffix).
- - bpo-31583: Fix 2to3 for using with --add-suffix option but without
- --output-dir option for relative path to files in current directory.
- C API
- -----
- - bpo-32374: Document that m_traverse for multi-phase initialized modules
- can be called with m_state=NULL, and add a sanity check
- What's New in Python 3.6.5 final?
- =================================
- *Release date: 2018-03-28*
- Tests
- -----
- - bpo-32872: Avoid regrtest compatibility issue with namespace packages.
- Build
- -----
- - bpo-33163: Upgrade pip to 9.0.3 and setuptools to v39.0.1.
- What's New in Python 3.6.5 release candidate 1?
- ===============================================
- *Release date: 2018-03-13*
- Security
- --------
- - bpo-33001: Minimal fix to prevent buffer overrun in os.symlink on Windows
- - bpo-32981: Regexes in difflib and poplib were vulnerable to catastrophic
- backtracking. These regexes formed potential DOS vectors (REDOS). They
- have been refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch
- by Jamie Davis.
- Core and Builtins
- -----------------
- - bpo-33026: Fixed jumping out of "with" block by setting f_lineno.
- - bpo-17288: Prevent jumps from 'return' and 'exception' trace events.
- - bpo-32889: Update Valgrind suppression list to account for the rename of
- ``Py_ADDRESS_IN_RANG`` to ``address_in_range``.
- - bpo-32650: Pdb and other debuggers dependent on bdb.py will correctly step
- over (next command) native coroutines. Patch by Pablo Galindo.
- - bpo-32685: Improve suggestion when the Python 2 form of print statement is
- either present on the same line as the header of a compound statement or
- else terminated by a semi-colon instead of a newline. Patch by Nitish
- Chandra.
- - bpo-32583: Fix possible crashing in builtin Unicode decoders caused by
- write out-of-bound errors when using customized decode error handlers.
- - bpo-26163: Improved frozenset() hash to create more distinct hash values
- when faced with datasets containing many similar values.
- - bpo-27169: The ``__debug__`` constant is now optimized out at compile
- time. This fixes also bpo-22091.
- - bpo-32329: ``sys.flags.hash_randomization`` is now properly set to 0 when
- hash randomization is turned off by ``PYTHONHASHSEED=0``.
- - bpo-30416: The optimizer is now protected from spending much time doing
- complex calculations and consuming much memory for creating large
- constants in constant folding.
- - bpo-18533: ``repr()`` on a dict containing its own ``values()`` or
- ``items()`` no longer raises ``RecursionError``; OrderedDict similarly.
- Instead, use ``...``, as for other recursive structures. Patch by Ben
- North.
- - bpo-32028: Leading whitespace is now correctly ignored when generating
- suggestions for converting Py2 print statements to Py3 builtin print
- function calls. Patch by Sanyam Khurana.
- - bpo-32137: The repr of deeply nested dict now raises a RecursionError
- instead of crashing due to a stack overflow.
- Library
- -------
- - bpo-33064: lib2to3 now properly supports trailing commas after ``*args``
- and ``**kwargs`` in function signatures.
- - bpo-31804: Avoid failing in multiprocessing.Process if the standard
- streams are closed or None at exit.
- - bpo-33037: Skip sending/receiving data after SSL transport closing.
- - bpo-30353: Fix ctypes pass-by-value for structs on 64-bit Cygwin/MinGW.
- - bpo-33009: Fix inspect.signature() for single-parameter partialmethods.
- - bpo-32969: Expose several missing constants in zlib and fix corresponding
- documentation.
- - bpo-32713: Fixed tarfile.itn handling of out-of-bounds float values. Patch
- by Joffrey Fuhrer.
- - bpo-30622: The ssl module now detects missing NPN support in LibreSSL.
- - bpo-32922: dbm.open() now encodes filename with the filesystem encoding
- rather than default encoding.
- - bpo-32859: In ``os.dup2``, don't check every call whether the ``dup3``
- syscall exists or not.
- - bpo-21060: Rewrite confusing message from setup.py upload from "No dist
- file created in earlier command" to the more helpful "Must create and
- upload files in one command".
- - bpo-32857: In :mod:`tkinter`, ``after_cancel(None)`` now raises a
- :exc:`ValueError` instead of canceling the first scheduled function.
- Patch by Cheryl Sabella.
- - bpo-32852: Make sure sys.argv remains as a list when running trace.
- - bpo-32841: Fixed `asyncio.Condition` issue which silently ignored
- cancellation after notifying and cancelling a conditional lock. Patch by
- Bar Harel.
- - bpo-31787: Fixed refleaks of ``__init__()`` methods in various modules.
- (Contributed by Oren Milman)
- - bpo-30157: Fixed guessing quote and delimiter in csv.Sniffer.sniff() when
- only the last field is quoted. Patch by Jake Davis.
- - bpo-32394: socket: Remove TCP_FASTOPEN, TCP_KEEPCNT flags on older version
- Windows during run-time.
- - bpo-32777: Fix a rare but potential pre-exec child process deadlock in
- subprocess on POSIX systems when marking file descriptors inheritable on
- exec in the child process. This bug appears to have been introduced in
- 3.4.
- - bpo-32647: The ctypes module used to depend on indirect linking for
- dlopen. The shared extension is now explicitly linked against libdl on
- platforms with dl.
- - bpo-32734: Fixed ``asyncio.Lock()`` safety issue which allowed acquiring
- and locking the same lock multiple times, without it being free. Patch by
- Bar Harel.
- - bpo-32727: Do not include name field in SMTP envelope from address. Patch
- by Stéphane Wirtel
- - bpo-27931: Fix email address header parsing error when the username is an
- empty quoted string. Patch by Xiang Zhang.
- - bpo-32304: distutils' upload command no longer corrupts tar files ending
- with a CR byte, and no longer tries to convert CR to CRLF in any of the
- upload text fields.
- - bpo-32502: uuid.uuid1 no longer raises an exception if a 64-bit hardware
- address is encountered.
- - bpo-31848: Fix the error handling in Aifc_read.initfp() when the SSND
- chunk is not found. Patch by Zackery Spytz.
- - bpo-32555: On FreeBSD and Solaris, os.strerror() now always decode the
- byte string from the current locale encoding, rather than using
- ASCII/surrogateescape in some cases.
- - bpo-32521: The nis module is now compatible with new libnsl and headers
- location.
- - bpo-32473: Improve ABCMeta._dump_registry() output readability
- - bpo-32521: glibc has removed Sun RPC. Use replacement libtirpc headers and
- library in nis module.
- - bpo-32228: Ensure that ``truncate()`` preserves the file position (as
- reported by ``tell()``) after writes longer than the buffer size.
- - bpo-26133: Don't unsubscribe signals in asyncio UNIX event loop on
- interpreter shutdown.
- - bpo-32185: The SSL module no longer sends IP addresses in SNI TLS
- extension on platforms with OpenSSL 1.0.2+ or inet_pton.
- - bpo-32323: :func:`urllib.parse.urlsplit()` does not convert zone-id
- (scope) to lower case for scoped IPv6 addresses in hostnames now.
- - bpo-32302: Fix bdist_wininst of distutils for CRT v142: it binary
- compatible with CRT v140.
- - bpo-32255: A single empty field is now always quoted when written into a
- CSV file. This allows to distinguish an empty row from a row consisting of
- a single empty field. Patch by Licht Takeuchi.
- - bpo-32277: Raise ``NotImplementedError`` instead of ``SystemError`` on
- platforms where ``chmod(..., follow_symlinks=False)`` is not supported.
- Patch by Anthony Sottile.
- - bpo-32199: The getnode() ip getter now uses 'ip link' instead of 'ip link
- list'.
- - bpo-27456: Ensure TCP_NODELAY is set on Linux. Tests by Victor Stinner.
- - bpo-31900: The :func:`locale.localeconv` function now sets temporarily the
- ``LC_CTYPE`` locale to the ``LC_NUMERIC`` locale to decode
- ``decimal_point`` and ``thousands_sep`` byte strings if they are non-ASCII
- or longer than 1 byte, and the ``LC_NUMERIC`` locale is different than the
- ``LC_CTYPE`` locale. This temporary change affects other threads.
- Same change for the :meth:`str.format` method when formatting a number
- (:class:`int`, :class:`float`, :class:`float` and subclasses) with the
- ``n`` type (ex: ``'{:n}'.format(1234)``).
- - bpo-31802: Importing native path module (``posixpath``, ``ntpath``) now
- works even if the ``os`` module still is not imported.
- Documentation
- -------------
- - bpo-17232: Clarify docs for -O and -OO. Patch by Terry Reedy.
- - bpo-32800: Update link to w3c doc for xml default namespaces.
- - bpo-8722: Document :meth:`__getattr__` behavior when property :meth:`get`
- method raises :exc:`AttributeError`.
- - bpo-32614: Modify RE examples in documentation to use raw strings to
- prevent :exc:`DeprecationWarning` and add text to REGEX HOWTO to highlight
- the deprecation.
- - bpo-31972: Improve docstrings for `pathlib.PurePath` subclasses.
- - bpo-17799: Explain real behaviour of sys.settrace and sys.setprofile and
- their C-API counterparts regarding which type of events are received in
- each function. Patch by Pablo Galindo Salgado.
- Tests
- -----
- - bpo-32517: Fix failing ``test_asyncio`` on macOS 10.12.2+ due to transport
- of ``KqueueSelector`` loop was not being closed.
- - bpo-32721: Fix test_hashlib to not fail if the _md5 module is not built.
- - bpo-32252: Fix faulthandler_suppress_crash_report() used to prevent core
- dump files when testing crashes. getrlimit() returns zero on success.
- - bpo-31518: Debian Unstable has disabled TLS 1.0 and 1.1 for
- SSLv23_METHOD(). Change TLS/SSL protocol of some tests to PROTOCOL_TLS or
- PROTOCOL_TLSv1_2 to make them pass on Debian.
- Build
- -----
- - bpo-32635: Fix segfault of the crypt module when libxcrypt is provided
- instead of libcrypt at the system.
- Windows
- -------
- - bpo-33016: Fix potential use of uninitialized memory in
- nt._getfinalpathname
- - bpo-32903: Fix a memory leak in os.chdir() on Windows if the current
- directory is set to a UNC path.
- - bpo-31966: Fixed WindowsConsoleIO.write() for writing empty data.
- - bpo-32409: Ensures activate.bat can handle Unicode contents.
- - bpo-32457: Improves handling of denormalized executable path when
- launching Python.
- - bpo-32370: Use the correct encoding for ipconfig output in the uuid
- module. Patch by Segev Finer.
- - bpo-29248: Fix :func:`os.readlink` on Windows, which was mistakenly
- treating the ``PrintNameOffset`` field of the reparse data buffer as a
- number of characters instead of bytes. Patch by Craig Holmquist and SSE4.
- - bpo-32588: Create standalone _distutils_findvs module.
- macOS
- -----
- - bpo-32726: Provide an additional, more modern macOS installer variant that
- supports macOS 10.9+ systems in 64-bit mode only. Upgrade the supplied
- third-party libraries to OpenSSL 1.0.2n, XZ 5.2.3, and SQLite 3.22.0. The
- 10.9+ installer now links with and supplies its own copy of Tcl/Tk 8.6.8.
- IDLE
- ----
- - bpo-32984: Set ``__file__`` while running a startup file. Like Python,
- IDLE optionally runs one startup file in the Shell window before
- presenting the first interactive input prompt. For IDLE, ``-s`` runs a
- file named in environmental variable :envvar:`IDLESTARTUP` or
- :envvar:`PYTHONSTARTUP`; ``-r file`` runs ``file``. Python sets
- ``__file__`` to the startup file name before running the file and unsets
- it before the first prompt. IDLE now does the same when run normally,
- without the ``-n`` option.
- - bpo-32940: Simplify and rename StringTranslatePseudoMapping in pyparse.
- - bpo-32916: Change ``str`` to ``code`` in pyparse.
- - bpo-32905: Remove unused code in pyparse module.
- - bpo-32874: Add tests for pyparse.
- - bpo-32837: Using the system and place-dependent default encoding for
- open() is a bad idea for IDLE's system and location-independent files.
- - bpo-32826: Add "encoding=utf-8" to open() in IDLE's test_help_about. GUI
- test test_file_buttons() only looks at initial ascii-only lines, but
- failed on systems where open() defaults to 'ascii' because readline()
- internally reads and decodes far enough ahead to encounter a non-ascii
- character in CREDITS.txt.
- - bpo-32765: Update configdialog General tab docstring to add new widgets to
- the widget list.
- Tools/Demos
- -----------
- - bpo-24960: 2to3 and lib2to3 can now read pickled grammar files using
- pkgutil.get_data() rather than probing the filesystem. This lets 2to3 and
- lib2to3 work when run from a zipfile.
- - bpo-32222: Fix pygettext not extracting docstrings for functions with type
- annotated arguments. Patch by Toby Harradine.
- C API
- -----
- - bpo-29084: Undocumented C API for OrderedDict has been excluded from the
- limited C API. It was added by mistake and actually never worked in the
- limited C API.
- What's New in Python 3.6.4 final?
- =================================
- *Release date: 2017-12-18*
- There were no new code changes in version 3.6.4 since v3.6.4rc1.
- What's New in Python 3.6.4 release candidate 1?
- ===============================================
- *Release date: 2017-12-05*
- Core and Builtins
- -----------------
- - bpo-32176: co_flags.CO_NOFREE is now always set correctly by the code
- object constructor based on freevars and cellvars, rather than needing to
- be set correctly by the caller. This ensures it will be cleared
- automatically when additional cell references are injected into a modified
- code object and function.
- - bpo-31949: Fixed several issues in printing tracebacks
- (PyTraceBack_Print()).
- * Setting sys.tracebacklimit to 0 or less now suppresses printing tracebacks.
- * Setting sys.tracebacklimit to None now causes using the default limit.
- * Setting sys.tracebacklimit to an integer larger than LONG_MAX now means using
- the limit LONG_MAX rather than the default limit.
- * Fixed integer overflows in the case of more than 2**31 traceback items on
- Windows.
- * Fixed output errors handling.
- - bpo-30696: Fix the interactive interpreter looping endlessly when no
- memory.
- - bpo-20047: Bytearray methods partition() and rpartition() now accept only
- bytes-like objects as separator, as documented. In particular they now
- raise TypeError rather of returning a bogus result when an integer is
- passed as a separator.
- - bpo-31852: Fix a segmentation fault caused by a combination of the async
- soft keyword and continuation lines.
- - bpo-21720: BytesWarning no longer emitted when the *fromlist* argument of
- ``__import__()`` or the ``__all__`` attribute of the module contain bytes
- instances.
- - bpo-31825: Fixed OverflowError in the 'unicode-escape' codec and in
- codecs.escape_decode() when decode an escaped non-ascii byte.
- - bpo-28603: Print the full context/cause chain of exceptions on interpreter
- exit, even if an exception in the chain is unhashable or compares equal to
- later ones. Patch by Zane Bitter.
- - bpo-31786: Fix timeout rounding in the select module to round correctly
- negative timeouts between -1.0 and 0.0. The functions now block waiting
- for events as expected. Previously, the call was incorrectly non-blocking.
- Patch by Pablo Galindo.
- - bpo-31642: Restored blocking "from package import module" by setting
- sys.modules["package.module"] to None.
- - bpo-31626: Fixed a bug in debug memory allocator. There was a write to
- freed memory after shrinking a memory block.
- - bpo-31619: Fixed a ValueError when convert a string with large number of
- underscores to integer with binary base.
- - bpo-31592: Fixed an assertion failure in Python parser in case of a bad
- `unicodedata.normalize()`. Patch by Oren Milman.
- - bpo-31588: Raise a `TypeError` with a helpful error message when class
- creation fails due to a metaclass with a bad ``__prepare__()`` method.
- Patch by Oren Milman.
- - bpo-31566: Fix an assertion failure in `_warnings.warn()` in case of a bad
- ``__name__`` global. Patch by Oren Milman.
- - bpo-31505: Fix an assertion failure in `json`, in case
- `_json.make_encoder()` received a bad `encoder()` argument. Patch by Oren
- Milman.
- - bpo-31492: Fix assertion failures in case of failing to import from a
- module with a bad ``__name__`` attribute, and in case of failing to access
- an attribute of such a module. Patch by Oren Milman.
- - bpo-31490: Fix an assertion failure in `ctypes` class definition, in case
- the class has an attribute whose name is specified in ``_anonymous_`` but
- not in ``_fields_``. Patch by Oren Milman.
- - bpo-31478: Fix an assertion failure in `_random.Random.seed()` in case the
- argument has a bad ``__abs__()`` method. Patch by Oren Milman.
- - bpo-31315: Fix an assertion failure in imp.create_dynamic(), when
- spec.name is not a string. Patch by Oren Milman.
- - bpo-31311: Fix a crash in the ``__setstate__()`` method of
- `ctypes._CData`, in case of a bad ``__dict__``. Patch by Oren Milman.
- - bpo-31293: Fix crashes in true division and multiplication of a timedelta
- object by a float with a bad as_integer_ratio() method. Patch by Oren
- Milman.
- - bpo-31285: Fix an assertion failure in `warnings.warn_explicit`, when the
- return value of the received loader's get_source() has a bad splitlines()
- method. Patch by Oren Milman.
- - bpo-30817: `PyErr_PrintEx()` clears now the ignored exception that may be
- raised by `_PySys_SetObjectId()`, for example when no memory.
- Library
- -------
- - bpo-28556: Two minor fixes for ``typing`` module: allow shallow copying
- instances of generic classes, improve interaction of ``__init_subclass__``
- with generics. Original PRs by Ivan Levkivskyi.
- - bpo-27240: The header folding algorithm for the new email policies has
- been rewritten, which also fixes bpo-30788, bpo-31831, and bpo-32182. In
- particular, RFC2231 folding is now done correctly.
- - bpo-32186: io.FileIO.readall() and io.FileIO.read() now release the GIL
- when getting the file size. Fixed hang of all threads with inaccessible
- NFS server. Patch by Nir Soffer.
- - bpo-12239: Make :meth:`msilib.SummaryInformation.GetProperty` return
- ``None`` when the value of property is ``VT_EMPTY``. Initial patch by
- Mark Mc Mahon.
- - bpo-31325: Fix wrong usage of :func:`collections.namedtuple` in the
- :meth:`RobotFileParser.parse() <urllib.robotparser.RobotFileParser.parse>`
- method.
- Initial patch by Robin Wellner.
- - bpo-12382: :func:`msilib.OpenDatabase` now raises a better exception
- message when it couldn't open or create an MSI file. Initial patch by
- William Tisäter.
- - bpo-32110: ``codecs.StreamReader.read(n)`` now returns not more than *n*
- characters/bytes for non-negative *n*. This makes it compatible with
- ``read()`` methods of other file-like objects.
- - bpo-32072: Fixed issues with binary plists:
- * Fixed saving bytearrays.
- * Identical objects will be saved only once.
- * Equal references will be load as identical objects.
- * Added support for saving and loading recursive data structures.
- - bpo-32034: Make asyncio.IncompleteReadError and LimitOverrunError
- pickleable.
- - bpo-32015: Fixed the looping of asyncio in the case of reconnection the
- socket during waiting async read/write from/to the socket.
- - bpo-32011: Restored support of loading marshal files with the TYPE_INT64
- code. These files can be produced in Python 2.7.
- - bpo-31970: Reduce performance overhead of asyncio debug mode.
- - bpo-9678: Fixed determining the MAC address in the uuid module:
- * Using ifconfig on NetBSD and OpenBSD.
- * Using arp on Linux, FreeBSD, NetBSD and OpenBSD.
- Based on patch by Takayuki Shimizukawa.
- - bpo-30057: Fix potential missed signal in signal.signal().
- - bpo-31933: Fix Blake2 params leaf_size and node_offset on big endian
- platforms. Patch by Jack O'Connor.
- - bpo-31927: Fixed compilation of the socket module on NetBSD 8. Fixed
- assertion failure or reading arbitrary data when parse a AF_BLUETOOTH
- address on NetBSD and DragonFly BSD.
- - bpo-27666: Fixed stack corruption in curses.box() and curses.ungetmouse()
- when the size of types chtype or mmask_t is less than the size of C long.
- curses.box() now accepts characters as arguments. Based on patch by Steve
- Fink.
- - bpo-31897: plistlib now catches more errors when read binary plists and
- raises InvalidFileException instead of unexpected exceptions.
- - bpo-25720: Fix the method for checking pad state of curses WINDOW. Patch
- by Masayuki Yamamoto.
- - bpo-31893: Fixed the layout of the kqueue_event structure on OpenBSD and
- NetBSD. Fixed the comparison of the kqueue_event objects.
- - bpo-31891: Fixed building the curses module on NetBSD.
- - bpo-28416: Instances of pickle.Pickler subclass with the persistent_id()
- method and pickle.Unpickler subclass with the persistent_load() method no
- longer create reference cycles.
- - bpo-28326: Fix multiprocessing.Process when stdout and/or stderr is closed
- or None.
- - bpo-31457: If nested log adapters are used, the inner ``process()``
- methods are no longer omitted.
- - bpo-31457: The ``manager`` property on LoggerAdapter objects is now
- properly settable.
- - bpo-31806: Fix timeout rounding in time.sleep(), threading.Lock.acquire()
- and socket.socket.settimeout() to round correctly negative timeouts
- between -1.0 and 0.0. The functions now block waiting for events as
- expected. Previously, the call was incorrectly non-blocking. Patch by
- Pablo Galindo.
- - bpo-28603: traceback: Fix a TypeError that occurred during printing of
- exception tracebacks when either the current exception or an exception in
- its context/cause chain is unhashable. Patch by Zane Bitter.
- - bpo-30058: Fixed buffer overflow in select.kqueue.control().
- - bpo-31770: Prevent a crash when calling the ``__init__()`` method of a
- ``sqlite3.Cursor`` object more than once. Patch by Oren Milman.
- - bpo-31672: ``idpattern`` in ``string.Template`` matched some non-ASCII
- characters. Now it uses ``-i`` regular expression local flag to avoid
- non-ASCII characters.
- - bpo-31764: Prevent a crash in ``sqlite3.Cursor.close()`` in case the
- ``Cursor`` object is uninitialized. Patch by Oren Milman.
- - bpo-31752: Fix possible crash in timedelta constructor called with custom
- integers.
- - bpo-31701: On Windows, faulthandler.enable() now ignores MSC and COM
- exceptions.
- - bpo-31728: Prevent crashes in `_elementtree` due to unsafe cleanup of
- `Element.text` and `Element.tail`. Patch by Oren Milman.
- - bpo-31620: an empty asyncio.Queue now doesn't leak memory when queue.get
- pollers timeout
- - bpo-31632: Fix method set_protocol() of class _SSLProtocolTransport in
- asyncio module. This method was previously modifying a wrong reference to
- the protocol.
- - bpo-31675: Fixed memory leaks in Tkinter's methods splitlist() and split()
- when pass a string larger than 2 GiB.
- - bpo-31673: Fixed typo in the name of Tkinter's method adderrorinfo().
- - bpo-30806: Fix the string representation of a netrc object.
- - bpo-15037: Added a workaround for getkey() in curses for ncurses 5.7 and
- earlier.
- - bpo-25351: Avoid venv activate failures with undefined variables
- - bpo-25532: inspect.unwrap() will now only try to unwrap an object
- sys.getrecursionlimit() times, to protect against objects which create a
- new object on every attribute access.
- - bpo-30347: Stop crashes when concurrently iterate over itertools.groupby()
- iterators.
- - bpo-31516: ``threading.current_thread()`` should not return a dummy thread
- at shutdown.
- - bpo-31351: python -m ensurepip now exits with non-zero exit code if pip
- bootstrapping has failed.
- - bpo-31482: ``random.seed()`` now works with bytes in version=1
- - bpo-31334: Fix ``poll.poll([timeout])`` in the ``select`` module for
- arbitrary negative timeouts on all OSes where it can only be a
- non-negative integer or -1. Patch by Riccardo Coccioli.
- - bpo-31310: multiprocessing's semaphore tracker should be launched again if
- crashed.
- - bpo-31308: Make multiprocessing's forkserver process immune to Ctrl-C and
- other user interruptions. If it crashes, restart it when necessary.
- Documentation
- -------------
- - bpo-32105: Added asyncio.BaseEventLoop.connect_accepted_socket
- versionadded marker.
- - bpo-31537: Fix incorrect usage of ``get_history_length`` in readline
- documentation example code. Patch by Brad Smith.
- - bpo-30085: The operator functions without double underscores are preferred
- for clarity. The one with underscores are only kept for
- back-compatibility.
- Tests
- -----
- - bpo-31380: Skip test_httpservers test_undecodable_file on macOS: fails on
- APFS.
- - bpo-31705: Skip test_socket.test_sha256() on Linux kernel older than 4.5.
- The test fails with ENOKEY on kernel 3.10 (on ppc64le). A fix was merged
- into the kernel 4.5.
- - bpo-31174: Fix test_tools.test_unparse: DirectoryTestCase now stores the
- names sample to always test the same files. It prevents false alarms when
- hunting reference leaks.
- - bpo-30695: Add the `set_nomemory(start, stop)` and `remove_mem_hooks()`
- functions to the _testcapi module.
- Build
- -----
- - bpo-32059: ``detect_modules()`` in ``setup.py`` now also searches the
- sysroot paths when cross-compiling.
- - bpo-31957: Fixes Windows SDK version detection when building for Windows.
- - bpo-31609: Fixes quotes in PCbuild/clean.bat
- - bpo-31934: Abort the build when building out of a not clean source tree.
- - bpo-31926: Fixed Argument Clinic sometimes causing compilation errors when
- there was more than one function and/or method in a .c file with the same
- name.
- - bpo-28791: Update Windows builds to use SQLite 3.21.0.
- - bpo-28791: Update OS X installer to use SQLite 3.21.0.
- - bpo-22140: Prevent double substitution of prefix in python-config.sh.
- - bpo-31536: Avoid wholesale rebuild after `make regen-all` if nothing
- changed.
- Windows
- -------
- - bpo-1102: Return ``None`` when ``View.Fetch()`` returns
- ``ERROR_NO_MORE_ITEMS`` instead of raising ``MSIError``.
- Initial patch by Anthony Tuininga.
- - bpo-31944: Fixes Modify button in Apps and Features dialog.
- macOS
- -----
- - bpo-31392: Update macOS installer to use OpenSSL 1.0.2m
- IDLE
- ----
- - bpo-32207: Improve tk event exception tracebacks in IDLE. When tk event
- handling is driven by IDLE's run loop, a confusing and distracting
- queue.EMPTY traceback context is no longer added to tk event exception
- tracebacks. The traceback is now the same as when event handling is
- driven by user code. Patch based on a suggestion by Serhiy Storchaka.
- - bpo-32164: Delete unused file idlelib/tabbedpages.py. Use of TabbedPageSet
- in configdialog was replaced by ttk.Notebook.
- - bpo-32100: IDLE: Fix old and new bugs in pathbrowser; improve tests. Patch
- mostly by Cheryl Sabella.
- - bpo-31858: IDLE -- Restrict shell prompt manipulation to the shell. Editor
- and output windows only see an empty last prompt line. This simplifies
- the code and fixes a minor bug when newline is inserted. Sys.ps1, if
- present, is read on Shell start-up, but is not set or changed.
- - bpo-31860: The font sample in the IDLE configuration dialog is now
- editable. Changes persist while IDLE remains open
- - bpo-31836: Test_code_module now passes if run after test_idle, which sets
- ps1.
- The code module uses sys.ps1 if present or sets it to '>>> ' if not.
- Test_code_module now properly tests both behaviors. Ditto for ps2.
- - bpo-28603: Fix a TypeError that caused a shell restart when printing a
- traceback that includes an exception that is unhashable. Patch by Zane
- Bitter.
- - bpo-13802: Use non-Latin characters in the IDLE's Font settings sample.
- Even if one selects a font that defines a limited subset of the unicode
- Basic Multilingual Plane, tcl/tk will use other fonts that define a
- character. The expanded example give users of non-Latin characters a
- better idea of what they might see in IDLE's shell and editors. To make
- room for the expanded sample, frames on the Font tab are re-arranged. The
- Font/Tabs help explains a bit about the additions.
- - bpo-31460: Simplify the API of IDLE's Module Browser.
- Passing a widget instead of an flist with a root widget opens the option
- of creating a browser frame that is only part of a window. Passing a full
- file name instead of pieces assumed to come from a .py file opens the
- possibility of browsing python files that do not end in .py.
- - bpo-31649: IDLE - Make _htest, _utest parameters keyword only.
- - bpo-31559: Remove test order dependence in idle_test.test_browser.
- - bpo-31459: Rename IDLE's module browser from Class Browser to Module
- Browser. The original module-level class and method browser became a
- module browser, with the addition of module-level functions, years ago.
- Nested classes and functions were added yesterday. For
- back-compatibility, the virtual event <<open-class-browser>>, which
- appears on the Keys tab of the Settings dialog, is not changed. Patch by
- Cheryl Sabella.
- - bpo-31500: Default fonts now are scaled on HiDPI displays.
- - bpo-1612262: IDLE module browser now shows nested classes and functions.
- Original patches for code and tests by Guilherme Polo and Cheryl Sabella,
- respectively.
- Tools/Demos
- -----------
- - bpo-30722: Make redemo work with Python 3.6 and newer versions.
- Also, remove the ``LOCALE`` option since it doesn't work with string
- patterns in Python 3.
- Patch by Christoph Sarnowski.
- C API
- -----
- - bpo-20891: Fix PyGILState_Ensure(). When PyGILState_Ensure() is called in
- a non-Python thread before PyEval_InitThreads(), only call
- PyEval_InitThreads() after calling PyThreadState_New() to fix a crash.
- - bpo-31532: Fix memory corruption due to allocator mix in getpath.c between
- Py_GetPath() and Py_SetPath()
- - bpo-30697: The `PyExc_RecursionErrorInst` singleton is removed and
- `PyErr_NormalizeException()` does not use it anymore. This singleton is
- persistent and its members being never cleared may cause a segfault during
- finalization of the interpreter. See also issue #22898.
- What's New in Python 3.6.3 final?
- =================================
- *Release date: 2017-10-03*
- Library
- -------
- - bpo-31641: Re-allow arbitrary iterables in
- `concurrent.futures.as_completed()`. Fixes regression in 3.6.3rc1.
- Build
- -----
- - bpo-31662: Fix typos in Windows ``uploadrelease.bat`` script. Fix Windows
- Doc build issues in ``Doc/make.bat``.
- - bpo-31423: Fix building the PDF documentation with newer versions of
- Sphinx.
- What's New in Python 3.6.3 release candidate 1?
- ===============================================
- *Release date: 2017-09-18*
- Security
- --------
- - bpo-29781: SSLObject.version() now correctly returns None when handshake
- over BIO has not been performed yet.
- - bpo-30947: Upgrade libexpat embedded copy from version 2.2.1 to 2.2.3 to
- get security fixes.
- Core and Builtins
- -----------------
- - bpo-31471: Fix an assertion failure in `subprocess.Popen()` on Windows, in
- case the env argument has a bad keys() method. Patch by Oren Milman.
- - bpo-31418: Fix an assertion failure in `PyErr_WriteUnraisable()` in case
- of an exception with a bad ``__module__`` attribute. Patch by Oren Milman.
- - bpo-31416: Fix assertion failures in case of a bad warnings.filters or
- warnings.defaultaction. Patch by Oren Milman.
- - bpo-31411: Raise a TypeError instead of SystemError in case
- warnings.onceregistry is not a dictionary. Patch by Oren Milman.
- - bpo-31373: Fix several possible instances of undefined behavior due to
- floating-point demotions.
- - bpo-30465: Location information (``lineno`` and ``col_offset``) in
- f-strings is now (mostly) correct. This fixes tools like flake8 from
- showing warnings on the wrong line (typically the first line of the file).
- - bpo-31343: Include sys/sysmacros.h for major(), minor(), and makedev().
- GNU C libray plans to remove the functions from sys/types.h.
- - bpo-31291: Fix an assertion failure in `zipimport.zipimporter.get_data` on
- Windows, when the return value of ``pathname.replace('/','\\')`` isn't a
- string. Patch by Oren Milman.
- - bpo-31271: Fix an assertion failure in the write() method of
- `io.TextIOWrapper`, when the encoder doesn't return a bytes object. Patch
- by Oren Milman.
- - bpo-31243: Fix a crash in some methods of `io.TextIOWrapper`, when the
- decoder's state is invalid. Patch by Oren Milman.
- - bpo-30721: ``print`` now shows correct usage hint for using Python 2
- redirection syntax. Patch by Sanyam Khurana.
- - bpo-31070: Fix a race condition in importlib _get_module_lock().
- - bpo-31095: Fix potential crash during GC caused by ``tp_dealloc`` which
- doesn't call ``PyObject_GC_UnTrack()``.
- - bpo-31071: Avoid masking original TypeError in call with * unpacking when
- other arguments are passed.
- - bpo-30978: str.format_map() now passes key lookup exceptions through.
- Previously any exception was replaced with a KeyError exception.
- - bpo-30808: Use _Py_atomic API for concurrency-sensitive signal state.
- - bpo-30876: Relative import from unloaded package now reimports the package
- instead of failing with SystemError. Relative import from non-package now
- fails with ImportError rather than SystemError.
- - bpo-30703: Improve signal delivery.
- Avoid using Py_AddPendingCall from signal handler, to avoid calling
- signal-unsafe functions. The tests I'm adding here fail without the rest
- of the patch, on Linux and OS X. This means our signal delivery logic had
- defects (some signals could be lost).
- - bpo-30765: Avoid blocking in pthread_mutex_lock() when
- PyThread_acquire_lock() is asked not to block.
- - bpo-31161: Make sure the 'Missing parentheses' syntax error message is
- only applied to SyntaxError, not to subclasses. Patch by Martijn Pieters.
- - bpo-30814: Fixed a race condition when import a submodule from a package.
- - bpo-30597: ``print`` now shows expected input in custom error message when
- used as a Python 2 statement. Patch by Sanyam Khurana.
- Library
- -------
- - bpo-31499: xml.etree: Fix a crash when a parser is part of a reference
- cycle.
- - bpo-28556: typing.get_type_hints now finds the right globalns for classes
- and modules by default (when no ``globalns`` was specified by the caller).
- - bpo-28556: Speed improvements to the ``typing`` module. Original PRs by
- Ivan Levkivskyi and Mitar.
- - bpo-31544: The C accelerator module of ElementTree ignored exceptions
- raised when looking up TreeBuilder target methods in XMLParser().
- - bpo-31234: socket.create_connection() now fixes manually a reference
- cycle: clear the variable storing the last exception on success.
- - bpo-31457: LoggerAdapter objects can now be nested.
- - bpo-31400: Improves SSL error handling to avoid losing error numbers.
- - bpo-28958: ssl.SSLContext() now uses OpenSSL error information when a
- context cannot be instantiated.
- - bpo-27340: SSLSocket.sendall() now uses memoryview to create slices of
- data. This fixes support for all bytes-like object. It is also more
- efficient and avoids costly copies.
- - bpo-31178: Fix string concatenation bug in rare error path in the
- subprocess module
- - bpo-31350: Micro-optimize :func:`asyncio._get_running_loop` to become up
- to 10% faster.
- - bpo-31170: expat: Update libexpat from 2.2.3 to 2.2.4. Fix copying of
- partial characters for UTF-8 input (libexpat bug 115):
- https://github.com/libexpat/libexpat/issues/115
- - bpo-29136: Add TLS 1.3 cipher suites and OP_NO_TLSv1_3.
- - bpo-29212: Fix concurrent.futures.thread.ThreadPoolExecutor threads to
- have a non repr() based thread name by default when no thread_name_prefix
- is supplied. They will now identify themselves as
- "ThreadPoolExecutor-y_n".
- - bpo-9146: Fix a segmentation fault in _hashopenssl when standard hash
- functions such as md5 are not available in the linked OpenSSL library. As
- in some special FIPS-140 build environments.
- - bpo-27144: The ``map()`` and ``as_completed()`` iterators in
- ``concurrent.futures`` now avoid keeping a reference to yielded objects.
- - bpo-10746: Fix ctypes producing wrong PEP 3118 type codes for integer
- types.
- - bpo-22536: The subprocess module now sets the filename when
- FileNotFoundError is raised on POSIX systems due to the executable or cwd
- not being found.
- - bpo-31249: concurrent.futures: WorkItem.run() used by ThreadPoolExecutor
- now breaks a reference cycle between an exception object and the WorkItem
- object.
- - bpo-31247: xmlrpc.server now explicitly breaks reference cycles when using
- sys.exc_info() in code handling exceptions.
- - bpo-30102: The ssl and hashlib modules now call
- OPENSSL_add_all_algorithms_noconf() on OpenSSL < 1.1.0. The function
- detects CPU features and enables optimizations on some CPU architectures
- such as POWER8. Patch is based on research from Gustavo Serra Scalet.
- - bpo-31185: Fixed miscellaneous errors in asyncio speedup module.
- - bpo-31135: ttk: fix the destroy() method of LabeledScale and OptionMenu
- classes. Call the parent destroy() method even if the used attribute
- doesn't exist. The LabeledScale.destroy() method now also explicitly
- clears label and scale attributes to help the garbage collector to destroy
- all widgets.
- - bpo-31107: Fix `copyreg._slotnames()` mangled attribute calculation for
- classes whose name begins with an underscore. Patch by Shane Harvey.
- - bpo-31061: Fixed a crash when using asyncio and threads.
- - bpo-30502: Fix handling of long oids in ssl. Based on patch by Christian
- Heimes.
- - bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that
- contains CR or LF. Patch by Dong-hee Na.
- - bpo-30595: multiprocessing.Queue.get() with a timeout now polls its reader
- in non-blocking mode if it succeeded to acquire the lock but the acquire
- took longer than the timeout.
- - bpo-29403: Fix ``unittest.mock``'s autospec to not fail on method-bound
- builtin functions. Patch by Aaron Gallagher.
- - bpo-30961: Fix decrementing a borrowed reference in tracemalloc.
- - bpo-25684: Change ``ttk.OptionMenu`` radiobuttons to be unique across
- instances of ``OptionMenu``.
- - bpo-30886: Fix multiprocessing.Queue.join_thread(): it now waits until the
- thread completes, even if the thread was started by the same process which
- created the queue.
- - bpo-29854: Fix segfault in readline when using readline's history-size
- option. Patch by Nir Soffer.
- - bpo-30319: socket.close() now ignores ECONNRESET error.
- - bpo-30828: Fix out of bounds write in
- `asyncio.CFuture.remove_done_callback()`.
- - bpo-30807: signal.setitimer() may disable the timer when passed a tiny
- value.
- Tiny values (such as 1e-6) are valid non-zero values for setitimer(),
- which is specified as taking microsecond-resolution intervals. However, on
- some platform, our conversion routine could convert 1e-6 into a zero
- interval, therefore disabling the timer instead of (re-)scheduling it.
- - bpo-30441: Fix bug when modifying os.environ while iterating over it
- - bpo-30532: Fix email header value parser dropping folding white space in
- certain cases.
- - bpo-30879: os.listdir() and os.scandir() now emit bytes names when called
- with bytes-like argument.
- - bpo-30746: Prohibited the '=' character in environment variable names in
- ``os.putenv()`` and ``os.spawn*()``.
- - bpo-29755: Fixed the lgettext() family of functions in the gettext module.
- They now always return bytes.
- Documentation
- -------------
- - bpo-31294: Fix incomplete code snippet in the ZeroMQSocketListener and
- ZeroMQSocketHandler examples and adapt them to Python 3.
- - bpo-21649: Add RFC 7525 and Mozilla server side TLS links to SSL
- documentation.
- - bpo-30803: Clarify doc on truth value testing. Original patch by Peter
- Thomassen.
- Tests
- -----
- - bpo-31320: Silence traceback in test_ssl
- - bpo-25674: Remove sha256.tbs-internet.com ssl test
- - bpo-30715: Address ALPN callback changes for OpenSSL 1.1.0f. The latest
- version behaves like OpenSSL 1.0.2 and no longer aborts handshake.
- - bpo-30822: regrtest: Exclude tzdata from regrtest --all. When running the
- test suite using --use=all / -u all, exclude tzdata since it makes
- test_datetime too slow (15-20 min on some buildbots) which then times out
- on some buildbots. Fix also regrtest command line parser to allow passing
- -u extralargefile to run test_zipfile64.
- Build
- -----
- - bpo-30854: Fix compile error when compiling --without-threads. Patch by
- Masayuki Yamamoto.
- Windows
- -------
- - bpo-30389: Adds detection of Visual Studio 2017 to distutils on Windows.
- - bpo-31340: Change to building with MSVC v141 (included with Visual Studio
- 2017)
- - bpo-30581: os.cpu_count() now returns the correct number of processors on
- Windows when the number of logical processors is greater than 64.
- - bpo-30731: Add a missing xmlns to python.manifest so that it matches the
- schema.
- IDLE
- ----
- - bpo-31493: IDLE code context -- fix code update and font update timers.
- Canceling timers prevents a warning message when test_idle completes.
- - bpo-31488: IDLE - Update non-key options in former extension classes. When
- applying configdialog changes, call .reload for each feature class. Change
- ParenMatch so updated options affect existing instances attached to
- existing editor windows.
- - bpo-31477: IDLE - Improve rstrip entry in doc. Strip trailing whitespace
- strips more than blank spaces. Multiline string literals are not skipped.
- - bpo-31480: IDLE - make tests pass with zzdummy extension disabled by
- default.
- - bpo-31421: Document how IDLE runs tkinter programs. IDLE calls tcl/tk
- update in the background in order to make live
- interaction and experimentation with tkinter applications much easier.
- - bpo-31414: IDLE -- fix tk entry box tests by deleting first. Adding to an
- int entry is not the same as deleting and inserting because int('') will
- fail.
- - bpo-31051: Rearrange IDLE configdialog GenPage into Window, Editor, and
- Help sections.
- - bpo-30617: IDLE - Add docstrings and tests for outwin subclass of editor.
- Move some data and functions from the class to module level. Patch by
- Cheryl Sabella.
- - bpo-31287: IDLE - Do not modify tkinter.message in test_configdialog.
- - bpo-27099: Convert IDLE's built-in 'extensions' to regular features.
- About 10 IDLE features were implemented as supposedly optional extensions.
- Their different behavior could be confusing or worse for users and not
- good for maintenance. Hence the conversion.
- The main difference for users is that user configurable key bindings for
- builtin features are now handled uniformly. Now, editing a binding in a
- keyset only affects its value in the keyset. All bindings are defined
- together in the system-specific default keysets in config-extensions.def.
- All custom keysets are saved as a whole in config-extension.cfg. All take
- effect as soon as one clicks Apply or Ok.
- The affected events are '<<force-open-completions>>', '<<expand-word>>',
- '<<force-open-calltip>>', '<<flash-paren>>', '<<format-paragraph>>',
- '<<run-module>>', '<<check-module>>', and '<<zoom-height>>'. Any (global)
- customizations made before 3.6.3 will not affect their keyset-specific
- customization after 3.6.3. and vice versa. Initial patch by Charles
- Wohlganger.
- - bpo-31206: IDLE: Factor HighPage(Frame) class from ConfigDialog. Patch by
- Cheryl Sabella.
- - bpo-31001: Add tests for configdialog highlight tab. Patch by Cheryl
- Sabella.
- - bpo-31205: IDLE: Factor KeysPage(Frame) class from ConfigDialog. The
- slightly modified tests continue to pass. Patch by Cheryl Sabella.
- - bpo-31130: IDLE -- stop leaks in test_configdialog. Initial patch by
- Victor Stinner.
- - bpo-31002: Add tests for configdialog keys tab. Patch by Cheryl Sabella.
- - bpo-19903: IDLE: Calltips use `inspect.signature` instead of
- `inspect.getfullargspec`. This improves calltips for builtins converted to
- use Argument Clinic. Patch by Louie Lu.
- - bpo-31083: IDLE - Add an outline of a TabPage class in configdialog.
- Update existing classes to match outline. Initial patch by Cheryl Sabella.
- - bpo-31050: Factor GenPage(Frame) class from ConfigDialog. The slightly
- modified tests continue to pass. Patch by Cheryl Sabella.
- - bpo-31004: IDLE - Factor FontPage(Frame) class from ConfigDialog.
- Slightly modified tests continue to pass. Fix General tests. Patch mostly
- by Cheryl Sabella.
- - bpo-30781: IDLE - Use ttk widgets in ConfigDialog. Patches by Terry Jan
- Reedy and Cheryl Sabella.
- - bpo-31060: IDLE - Finish rearranging methods of ConfigDialog Grouping
- methods pertaining to each tab and the buttons will aid writing tests and
- improving the tabs and will enable splitting the groups into classes.
- - bpo-30853: IDLE -- Factor a VarTrace class out of ConfigDialog.
- Instance tracers manages pairs consisting of a tk variable and a callback
- function. When tracing is turned on, setting the variable calls the
- function. Test coverage for the new class is 100%.
- - bpo-31003: IDLE: Add more tests for General tab.
- - bpo-30993: IDLE - Improve configdialog font page and tests.
- In configdialog: Document causal pathways in create_font_tab docstring.
- Simplify some attribute names. Move set_samples calls to var_changed_font
- (idea from Cheryl Sabella). Move related functions to positions after the
- create widgets function.
- In test_configdialog: Fix test_font_set so not order dependent. Fix
- renamed test_indent_scale so it tests the widget. Adjust tests for
- movement of set_samples call. Add tests for load functions. Put all font
- tests in one class and tab indent tests in another. Except for two lines,
- these tests completely cover the related functions.
- - bpo-30981: IDLE -- Add more configdialog font page tests.
- - bpo-28523: IDLE: replace 'colour' with 'color' in configdialog.
- - bpo-30917: Add tests for idlelib.config.IdleConf. Increase coverage from
- 46% to 96%. Patch by Louie Lu.
- - bpo-30934: Document coverage details for idlelib tests.
- * Add section to idlelib/idle-test/README.txt.
- * Include check that branches are taken both ways.
- * Exclude IDLE-specific code that does not run during unit tests.
- - bpo-30913: IDLE: Document ConfigDialog tk Vars, methods, and widgets in
- docstrings This will facilitate improving the dialog and splitting up the
- class. Original patch by Cheryl Sabella.
- - bpo-30899: IDLE: Add tests for ConfigParser subclasses in config. Patch by
- Louie Lu.
- - bpo-30881: IDLE: Add docstrings to browser.py. Patch by Cheryl Sabella.
- - bpo-30851: IDLE: Remove unused variables in configdialog. One is a
- duplicate, one is set but cannot be altered by users. Patch by Cheryl
- Sabella.
- - bpo-30870: IDLE: In Settings dialog, select font with Up, Down keys as
- well as mouse. Initial patch by Louie Lu.
- - bpo-8231: IDLE: call config.IdleConf.GetUserCfgDir only once.
- - bpo-30779: IDLE: Factor ConfigChanges class from configdialog, put in
- config; test. * In config, put dump test code in a function; run it and
- unittest in 'if __name__ == '__main__'. * Add class config.ConfigChanges
- based on changes_class_v4.py on bpo issue. * Add class
- test_config.ChangesTest, partly using configdialog_tests_v1.py. * Revise
- configdialog to use ConfigChanges; see tracker msg297804. * Revise
- test_configdialog to match configdialog changes. * Remove configdialog
- functions unused or moved to ConfigChanges. Cheryl Sabella contributed
- parts of the patch.
- - bpo-30777: IDLE: configdialog - Add docstrings and fix comments. Patch by
- Cheryl Sabella.
- - bpo-30495: IDLE: Improve textview with docstrings, PEP8 names, and more
- tests. Patch by Cheryl Sabella.
- - bpo-30723: IDLE: Make several improvements to parenmatch. Add 'parens'
- style to highlight both opener and closer. Make 'default' style, which is
- not default, a synonym for 'opener'. Make time-delay work the same with
- all styles. Add help for config dialog extensions tab, including help for
- parenmatch. Add new tests. Original patch by Charles Wohlganger.
- - bpo-30674: IDLE: add docstrings to grep module. Patch by Cheryl Sabella
- - bpo-21519: IDLE's basic custom key entry dialog now detects duplicates
- properly. Original patch by Saimadhav Heblikar.
- - bpo-29910: IDLE no longer deletes a character after commenting out a
- region by a key shortcut. Add ``return 'break'`` for this and other
- potential conflicts between IDLE and default key bindings.
- - bpo-30728: Review and change idlelib.configdialog names. Lowercase method
- and attribute names. Replace 'colour' with 'color', expand overly cryptic
- names, delete unneeded underscores. Replace ``import *`` with specific
- imports. Patches by Cheryl Sabella.
- - bpo-6739: IDLE: Verify user-entered key sequences by trying to bind them
- with tk. Add tests for all 3 validation functions. Original patch by G
- Polo. Tests added by Cheryl Sabella.
- Tools/Demos
- -----------
- - bpo-30983: gdb integration commands (py-bt, etc.) work on optimized shared
- builds now, too. PEP 523 introduced _PyEval_EvalFrameDefault which
- inlines PyEval_EvalFrameEx on non-debug shared builds. This broke the
- ability to use py-bt, py-up, and a few other Python-specific gdb
- integrations. The problem is fixed by only looking for
- _PyEval_EvalFrameDefault frames in python-gdb.py. Original patch by Bruno
- "Polaco" Penteado.
- What's New in Python 3.6.2 final?
- =================================
- *Release date: 2017-07-17*
- No changes since release candidate 2
- What's New in Python 3.6.2 release candidate 2?
- ===============================================
- *Release date: 2017-07-07*
- Security
- --------
- - bpo-30730: Prevent environment variables injection in subprocess on
- Windows. Prevent passing other environment variables and command
- arguments.
- - bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple
- security vulnerabilities including: CVE-2017-9233 (External entity
- infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix),
- CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and
- CVE-2012-0876 (Counter hash flooding with SipHash). Note: the
- CVE-2016-5300 (Use os-specific entropy sources like getrandom) doesn't
- impact Python, since Python already gets entropy from the OS to set the
- expat secret using ``XML_SetHashSalt()``.
- - bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For
- example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the
- ``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an
- authentication (``login@host``).
- What's New in Python 3.6.2 release candidate 1?
- ===============================================
- *Release date: 2017-06-17*
- Core and Builtins
- -----------------
- - bpo-30682: Removed a too-strict assertion that failed for certain
- f-strings, such as eval("f'\\\n'") and eval("f'\\\r'").
- - bpo-30604: Move co_extra_freefuncs to not be per-thread to avoid crashes
- - bpo-29104: Fixed parsing backslashes in f-strings.
- - bpo-27945: Fixed various segfaults with dict when input collections are
- mutated during searching, inserting or comparing. Based on patches by
- Duane Griffin and Tim Mitchell.
- - bpo-25794: Fixed type.__setattr__() and type.__delattr__() for
- non-interned attribute names. Based on patch by Eryk Sun.
- - bpo-30039: If a KeyboardInterrupt happens when the interpreter is in the
- middle of resuming a chain of nested 'yield from' or 'await' calls, it's
- now correctly delivered to the innermost frame.
- - bpo-12414: sys.getsizeof() on a code object now returns the sizes which
- includes the code struct and sizes of objects which it references. Patch
- by Dong-hee Na.
- - bpo-29949: Fix memory usage regression of set and frozenset object.
- - bpo-29935: Fixed error messages in the index() method of tuple, list and
- deque when pass indices of wrong type.
- - bpo-29859: Show correct error messages when any of the pthread_* calls in
- thread_pthread.h fails.
- - bpo-28876: ``bool(range)`` works even if ``len(range)`` raises
- :exc:`OverflowError`.
- - bpo-29600: Fix wrapping coroutine return values in StopIteration.
- - bpo-28856: Fix an oversight that %b format for bytes should support
- objects follow the buffer protocol.
- - bpo-29714: Fix a regression that bytes format may fail when containing
- zero bytes inside.
- - bpo-29478: If max_line_length=None is specified while using the Compat32
- policy, it is no longer ignored. Patch by Mircea Cosbuc.
- Library
- -------
- - bpo-30616: Functional API of enum allows to create empty enums. Patched by
- Dong-hee Na
- - bpo-30038: Fix race condition between signal delivery and wakeup file
- descriptor. Patch by Nathaniel Smith.
- - bpo-23894: lib2to3 now recognizes ``rb'...'`` and ``f'...'`` strings.
- - bpo-23890: unittest.TestCase.assertRaises() now manually breaks a
- reference cycle to not keep objects alive longer than expected.
- - bpo-30149: inspect.signature() now supports callables with
- variable-argument parameters wrapped with partialmethod. Patch by Dong-hee
- Na.
- - bpo-30645: Fix path calculation in imp.load_package(), fixing it for cases
- when a package is only shipped with bytecodes. Patch by Alexandru
- Ardelean.
- - bpo-29931: Fixed comparison check for ipaddress.ip_interface objects.
- Patch by Sanjay Sundaresan.
- - bpo-30605: re.compile() no longer raises a BytesWarning when compiling a
- bytes instance with misplaced inline modifier. Patch by Roy Williams.
- Security
- --------
- - bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes of
- CVE-2016-0718 and CVE-2016-4472. See
- https://sourceforge.net/p/expat/bugs/537/ for more information.
- Library
- -------
- - bpo-24484: Avoid race condition in multiprocessing cleanup (#2159)
- - bpo-28994: The traceback no longer displayed for SystemExit raised in a
- callback registered by atexit.
- - bpo-30508: Don't log exceptions if Task/Future "cancel()" method was
- called.
- - bpo-28556: Updates to typing module: Add generic AsyncContextManager, add
- support for ContextManager on all versions. Original PRs by Jelle Zijlstra
- and Ivan Levkivskyi
- - bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl
- implementation. Patch by Michaël Sghaïer.
- - bpo-29743: Closing transport during handshake process leaks open socket.
- Patch by Nikolay Kim
- - bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu
- Sornay.
- - bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore
- EINVAL on stdin.write() if the child process is still running but closed
- the pipe.
- - bpo-29822: inspect.isabstract() now works during __init_subclass__. Patch
- by Nate Soares.
- - bpo-29581: ABCMeta.__new__ now accepts ``**kwargs``, allowing abstract
- base classes to use keyword parameters in __init_subclass__. Patch by Nate
- Soares.
- - bpo-30557: faulthandler now correctly filters and displays exception codes
- on Windows
- - bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot
- handle IPv6 addresses.
- - bpo-29960: Preserve generator state when _random.Random.setstate() raises
- an exception. Patch by Bryan Olson.
- - bpo-30414: multiprocessing.Queue._feed background running thread do not
- break from main loop on exception.
- - bpo-30003: Fix handling escape characters in HZ codec. Based on patch by
- Ma Lin.
- - bpo-30301: Fix AttributeError when using SimpleQueue.empty() under *spawn*
- and *forkserver* start methods.
- - bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error
- (code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted.
- This error occurs sometimes on SSL connections.
- - bpo-30375: Warnings emitted when compile a regular expression now always
- point to the line in the user code. Previously they could point into
- inners of the re module if emitted from inside of groups or conditionals.
- - bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is running
- coroutine and the coroutine returned without any more ``await``.
- - bpo-30266: contextlib.AbstractContextManager now supports
- anti-registration by setting __enter__ = None or __exit__ = None,
- following the pattern introduced in bpo-25958. Patch by Jelle Zijlstra.
- - bpo-30298: Weaken the condition of deprecation warnings for inline
- modifiers. Now allowed several subsequential inline modifiers at the start
- of the pattern (e.g. ``'(?i)(?s)...'``). In verbose mode whitespaces and
- comments now are allowed before and between inline modifiers (e.g. ``'(?x)
- (?i) (?s)...'``).
- - bpo-29990: Fix range checking in GB18030 decoder. Original patch by Ma
- Lin.
- - bpo-26293: Change resulted because of zipfile breakage. (See also:
- bpo-29094)
- - bpo-30243: Removed the __init__ methods of _json's scanner and encoder.
- Misusing them could cause memory leaks or crashes. Now scanner and
- encoder objects are completely initialized in the __new__ methods.
- - bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process
- when Ctrl-C is received.
- - bpo-28556: Various updates to typing module: add typing.NoReturn type, use
- WrapperDescriptorType, minor bug-fixes. Original PRs by Jim
- Fasarakis-Hilliard and Ivan Levkivskyi.
- - bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux.
- - bpo-30070: Fixed leaks and crashes in errors handling in the parser
- module.
- - bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when
- readline() or __next__() respectively return non-sizeable object. Fixed
- possible other errors caused by not checking results of PyObject_Size(),
- PySequence_Size(), or PyMapping_Size().
- - bpo-30017: Allowed calling the close() method of the zip entry writer
- object multiple times. Writing to a closed writer now always produces a
- ValueError.
- - bpo-30068: _io._IOBase.readlines will check if it's closed first when hint
- is present.
- - bpo-29694: Fixed race condition in pathlib mkdir with flags parents=True.
- Patch by Armin Rigo.
- - bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in
- contextlib.contextmanager. Patch by Siddharth Velankar.
- - bpo-29998: Pickling and copying ImportError now preserves name and path
- attributes.
- - bpo-29953: Fixed memory leaks in the replace() method of datetime and time
- objects when pass out of bound fold argument.
- - bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering
- long runs of empty iterables.
- - bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions
- and wrong types.
- - bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an
- exception at the very first of an iterable may swallow the exception or
- make the program hang. Patch by Davin Potts and Xiang Zhang.
- - bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True) when
- the OS gives priority to errors such as EACCES over EEXIST.
- - bpo-29861: Release references to tasks, their arguments and their results
- as soon as they are finished in multiprocessing.Pool.
- - bpo-29884: faulthandler: Restore the old sigaltstack during teardown.
- Patch by Christophe Zeitouny.
- - bpo-25455: Fixed crashes in repr of recursive buffered file-like objects.
- - bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords
- are not strings. Patch by Michael Seifert.
- - bpo-29742: get_extra_info() raises exception if get called on closed ssl
- transport. Patch by Nikolay Kim.
- - bpo-8256: Fixed possible failing or crashing input() if attributes
- "encoding" or "errors" of sys.stdin or sys.stdout are not set or are not
- strings.
- - bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting
- big intables (objects that have __int__) as elements. Patch by Oren
- Milman.
- - bpo-28231: The zipfile module now accepts path-like objects for external
- paths.
- - bpo-26915: index() and count() methods of collections.abc.Sequence now
- check identity before checking equality when do comparisons.
- - bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other
- exception) to exception(s) raised in the dispatched methods. Patch by Petr
- Motejlek.
- - bpo-30177: path.resolve(strict=False) no longer cuts the path after the
- first element not present in the filesystem. Patch by Antoine Pietri.
- IDLE
- ----
- - bpo-15786: Fix several problems with IDLE's autocompletion box. The
- following should now work: clicking on selection box items; using the
- scrollbar; selecting an item by hitting Return. Hangs on MacOSX should no
- longer happen. Patch by Louie Lu.
- - bpo-25514: Add doc subsubsection about IDLE failure to start. Popup
- no-connection message directs users to this section.
- - bpo-30642: Fix reference leaks in IDLE tests. Patches by Louie Lu and
- Terry Jan Reedy.
- - bpo-30495: Add docstrings for textview.py and use PEP8 names. Patches by
- Cheryl Sabella and Terry Jan Reedy.
- - bpo-30290: Help-about: use pep8 names and add tests. Increase coverage to
- 100%. Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy.
- - bpo-30303: Add _utest option to textview; add new tests. Increase coverage
- to 100%. Patches by Louie Lu and Terry Jan Reedy.
- C API
- -----
- - bpo-27867: Function PySlice_GetIndicesEx() no longer replaced with a macro
- if Py_LIMITED_API is not set.
- Build
- -----
- - bpo-29941: Add ``--with-assertions`` configure flag to explicitly enable C
- ``assert()`` checks. Defaults to off. ``--with-pydebug`` implies
- ``--with-assertions``.
- - bpo-28787: Fix out-of-tree builds of Python when configured with
- ``--with--dtrace``.
- - bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``,
- ``make install`` and some other make targets when configured with
- ``--enable-optimizations``.
- - bpo-23404: Don't regenerate generated files based on file modification
- time anymore: the action is now explicit. Replace ``make touch`` with
- ``make regen-all``.
- - bpo-29643: Fix ``--enable-optimization`` didn't work.
- Documentation
- -------------
- - bpo-30176: Add missing attribute related constants in curses
- documentation.
- - bpo-30052: the link targets for :func:`bytes` and :func:`bytearray` are
- now their respective type definitions, rather than the corresponding
- builtin function entries. Use :ref:`bytes <func-bytes>` and
- :ref:`bytearray <func-bytearray>` to reference the latter.
- In order to ensure this and future cross-reference updates are applied
- automatically, the daily documentation builds now disable the default
- output caching features in Sphinx.
- - bpo-26985: Add missing info of code object in inspect documentation.
- Tools/Demos
- -----------
- - bpo-29367: python-gdb.py now supports also ``method-wrapper``
- (``wrapperobject``) objects.
- Tests
- -----
- - bpo-30357: test_thread: setUp() now uses support.threading_setup() and
- support.threading_cleanup() to wait until threads complete to avoid random
- side effects on following tests. Initial patch written by Grzegorz
- Grzywacz.
- - bpo-30197: Enhanced functions swap_attr() and swap_item() in the
- test.support module. They now work when delete replaced attribute or item
- inside the with statement. The old value of the attribute or item (or
- None if it doesn't exist) now will be assigned to the target of the "as"
- clause, if there is one.
- Windows
- -------
- - bpo-30687: Locate msbuild.exe on Windows when building rather than
- vcvarsall.bat
- - bpo-30450: The build process on Windows no longer depends on Subversion,
- instead pulling external code from GitHub via a Python script. If Python
- 3.6 is not found on the system (via ``py -3.6``), NuGet is used to
- download a copy of 32-bit Python.
- What's New in Python 3.6.1 final?
- =================================
- *Release date: 2017-03-21*
- Core and Builtins
- -----------------
- - bpo-29723: The ``sys.path[0]`` initialization change for bpo-29139 caused
- a regression by revealing an inconsistency in how sys.path is initialized
- when executing ``__main__`` from a zipfile, directory, or other import
- location. The interpreter now consistently avoids ever adding the import
- location's parent directory to ``sys.path``, and ensures no other
- ``sys.path`` entries are inadvertently modified when inserting the import
- location named on the command line.
- Build
- -----
- - bpo-27593: fix format of git information used in sys.version
- - Fix incompatible comment in python.h
- What's New in Python 3.6.1 release candidate 1?
- ===============================================
- *Release date: 2017-03-04*
- Core and Builtins
- -----------------
- - bpo-28893: Set correct __cause__ for errors about invalid awaitables
- returned from __aiter__ and __anext__.
- - bpo-29683: Fixes to memory allocation in _PyCode_SetExtra. Patch by Brian
- Coleman.
- - bpo-29684: Fix minor regression of PyEval_CallObjectWithKeywords. It
- should raise TypeError when kwargs is not a dict. But it might cause segv
- when args=NULL and kwargs is not a dict.
- - bpo-28598: Support __rmod__ for subclasses of str being called before
- str.__mod__. Patch by Martijn Pieters.
- - bpo-29607: Fix stack_effect computation for CALL_FUNCTION_EX. Patch by
- Matthieu Dartiailh.
- - bpo-29602: Fix incorrect handling of signed zeros in complex constructor
- for complex subclasses and for inputs having a __complex__ method. Patch
- by Serhiy Storchaka.
- - bpo-29347: Fixed possibly dereferencing undefined pointers when creating
- weakref objects.
- - bpo-29438: Fixed use-after-free problem in key sharing dict.
- - bpo-29319: Prevent RunMainFromImporter overwriting sys.path[0].
- - bpo-29337: Fixed possible BytesWarning when compare the code objects.
- Warnings could be emitted at compile time.
- - bpo-29327: Fixed a crash when pass the iterable keyword argument to
- sorted().
- - bpo-29034: Fix memory leak and use-after-free in os module
- (path_converter).
- - bpo-29159: Fix regression in bytes(x) when x.__index__() raises Exception.
- - bpo-28932: Do not include <sys/random.h> if it does not exist.
- - bpo-25677: Correct the positioning of the syntax error caret for indented
- blocks. Based on patch by Michael Layzell.
- - bpo-29000: Fixed bytes formatting of octals with zero padding in alternate
- form.
- - bpo-26919: On Android, operating system data is now always encoded/decoded
- to/from UTF-8, instead of the locale encoding to avoid inconsistencies
- with os.fsencode() and os.fsdecode() which are already using UTF-8.
- - bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy
- bug triggerable by a monkey-patched len() function.
- - bpo-28739: f-string expressions are no longer accepted as docstrings and
- by ast.literal_eval() even if they do not include expressions.
- - bpo-28512: Fixed setting the offset attribute of SyntaxError by
- PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().
- - bpo-28918: Fix the cross compilation of xxlimited when Python has been
- built with Py_DEBUG defined.
- - bpo-28731: Optimize _PyDict_NewPresized() to create correct size dict.
- Improve speed of dict literal with constant keys up to 30%.
- Library
- -------
- - bpo-29169: Update zlib to 1.2.11.
- - bpo-29623: Allow use of path-like object as a single argument in
- ConfigParser.read(). Patch by David Ellis.
- - bpo-28963: Fix out of bound iteration in
- asyncio.Future.remove_done_callback implemented in C.
- - bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes
- before all pipes are closed.
- - bpo-29271: Fix Task.current_task and Task.all_tasks implemented in C to
- accept None argument as their pure Python implementation.
- - bpo-29703: Fix asyncio to support instantiation of new event loops in
- child processes.
- - bpo-29376: Fix assertion error in threading._DummyThread.is_alive().
- - bpo-28624: Add a test that checks that cwd parameter of Popen() accepts
- PathLike objects. Patch by Sayan Chowdhury.
- - bpo-28518: Start a transaction implicitly before a DML statement. Patch by
- Aviv Palivoda.
- - bpo-29532: Altering a kwarg dictionary passed to functools.partial() no
- longer affects a partial object after creation.
- - bpo-29110: Fix file object leak in aifc.open() when file is given as a
- filesystem path and is not in valid AIFF format. Patch by Anthony Zhang.
- - bpo-28556: Various updates to typing module: typing.Counter,
- typing.ChainMap, improved ABC caching, etc. Original PRs by Jelle
- Zijlstra, Ivan Levkivskyi, Manuel Krebber, and Łukasz Langa.
- - bpo-29100: Fix datetime.fromtimestamp() regression introduced in Python
- 3.6.0: check minimum and maximum years.
- - bpo-29519: Fix weakref spewing exceptions during interpreter shutdown when
- used with a rare combination of multiprocessing and custom codecs.
- - bpo-29416: Prevent infinite loop in pathlib.Path.mkdir
- - bpo-29444: Fixed out-of-bounds buffer access in the group() method of the
- match object. Based on patch by WGH.
- - bpo-29335: Fix subprocess.Popen.wait() when the child process has exited
- to a stopped instead of terminated state (ex: when under ptrace).
- - bpo-29290: Fix a regression in argparse that help messages would wrap at
- non-breaking spaces.
- - bpo-28735: Fixed the comparison of mock.MagickMock with mock.ANY.
- - bpo-29316: Restore the provisional status of typing module, add
- corresponding note to documentation. Patch by Ivan L.
- - bpo-29219: Fixed infinite recursion in the repr of uninitialized
- ctypes.CDLL instances.
- - bpo-29011: Fix an important omission by adding Deque to the typing module.
- - bpo-28969: Fixed race condition in C implementation of
- functools.lru_cache. KeyError could be raised when cached function with
- full cache was simultaneously called from differen threads with the same
- uncached arguments.
- - bpo-29142: In urllib.request, suffixes in no_proxy environment variable
- with leading dots could match related hostnames again (e.g. .b.c matches
- a.b.c). Patch by Milan Oberkirch.
- - bpo-28961: Fix unittest.mock._Call helper: don't ignore the name parameter
- anymore. Patch written by Jiajun Huang.
- - bpo-29203: functools.lru_cache() now respects PEP 468 and preserves the
- order of keyword arguments. f(a=1, b=2) is now cached separately from
- f(b=2, a=1) since both calls could potentially give different results.
- - bpo-15812: inspect.getframeinfo() now correctly shows the first line of a
- context. Patch by Sam Breese.
- - bpo-29094: Offsets in a ZIP file created with extern file object and modes
- "w" and "x" now are relative to the start of the file.
- - bpo-29085: Allow random.Random.seed() to use high quality OS randomness
- rather than the pid and time.
- - bpo-29061: Fixed bug in secrets.randbelow() which would hang when given a
- negative input. Patch by Brendan Donegan.
- - bpo-29079: Prevent infinite loop in pathlib.resolve() on Windows
- - bpo-13051: Fixed recursion errors in large or resized
- curses.textpad.Textbox. Based on patch by Tycho Andersen.
- - bpo-29119: Fix weakrefs in the pure python version of
- collections.OrderedDict move_to_end() method. Contributed by Andra
- Bogildea.
- - bpo-9770: curses.ascii predicates now work correctly with negative
- integers.
- - bpo-28427: old keys should not remove new values from WeakValueDictionary
- when collecting from another thread.
- - bpo-28923: Remove editor artifacts from Tix.py.
- - bpo-29055: Neaten-up empty population error on random.choice() by
- suppressing the upstream exception.
- - bpo-28871: Fixed a crash when deallocate deep ElementTree.
- - bpo-19542: Fix bugs in WeakValueDictionary.setdefault() and
- WeakValueDictionary.pop() when a GC collection happens in another thread.
- - bpo-20191: Fixed a crash in resource.prlimit() when passing a sequence
- that doesn't own its elements as limits.
- - bpo-28779: multiprocessing.set_forkserver_preload() would crash the
- forkserver process if a preloaded module instantiated some multiprocessing
- objects such as locks.
- - bpo-28847: dbm.dumb now supports reading read-only files and no longer
- writes the index file when it is not changed.
- - bpo-26937: The chown() method of the tarfile.TarFile class does not fail
- now when the grp module cannot be imported, as for example on Android
- platforms.
- IDLE
- ----
- - bpo-29071: IDLE colors f-string prefixes (but not invalid ur prefixes).
- - bpo-28572: Add 10% to coverage of IDLE's test_configdialog. Update and
- augment description of the configuration system.
- Windows
- -------
- - bpo-29579: Removes readme.txt from the installer
- - bpo-29326: Ignores blank lines in ._pth files (Patch by Alexey Izbyshev)
- - bpo-28164: Correctly handle special console filenames (patch by Eryk Sun)
- - bpo-29409: Implement PEP 529 for io.FileIO (Patch by Eryk Sun)
- - bpo-29392: Prevent crash when passing invalid arguments into msvcrt
- module.
- - bpo-25778: winreg does not truncate string correctly (Patch by Eryk Sun)
- - bpo-28896: Deprecate WindowsRegistryFinder and disable it by default.
- C API
- -----
- - bpo-27867: Function PySlice_GetIndicesEx() is replaced with a macro if
- Py_LIMITED_API is not set or set to the value between 0x03050400 and
- 0x03060000 (not including) or 0x03060100 or higher.
- - bpo-29083: Fixed the declaration of some public API functions.
- PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in
- limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and
- Py_BuildValue() were not available in limited API of version < 3.3 when
- PY_SSIZE_T_CLEAN is defined.
- - bpo-29058: All stable API extensions added after Python 3.2 are now
- available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of
- the minimum Python version supporting this API.
- Documentation
- -------------
- - bpo-28929: Link the documentation to its source file on GitHub.
- - bpo-25008: Document smtpd.py as effectively deprecated and add a pointer
- to aiosmtpd, a third-party asyncio-based replacement.
- - bpo-26355: Add canonical header link on each page to corresponding major
- version of the documentation. Patch by Matthias Bussonnier.
- - bpo-29349: Fix Python 2 syntax in code for building the documentation.
- Tests
- -----
- - bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. Skip
- some tests of select.poll when running on macOS due to unresolved issues
- with the underlying system poll function on some macOS versions.
- - bpo-29571: to match the behaviour of the ``re.LOCALE`` flag,
- test_re.test_locale_flag now uses ``locale.getpreferredencoding(False)``
- to determine the candidate encoding for the test regex (allowing it to
- correctly skip the test when the default locale encoding is a multi-byte
- encoding)
- - bpo-28950: Disallow -j0 to be combined with -T/-l in regrtest command line
- arguments.
- - bpo-28683: Fix the tests that bind() a unix socket and raise
- PermissionError on Android for a non-root user.
- - bpo-26939: Add the support.setswitchinterval() function to fix
- test_functools hanging on the Android armv7 qemu emulator.
- Build
- -----
- - bpo-27593: sys.version and the platform module python_build(),
- python_branch(), and python_revision() functions now use git information
- rather than hg when building from a repo.
- - bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k.
- - bpo-26851: Set Android compilation and link flags.
- - bpo-28768: Fix implicit declaration of function _setmode. Patch by
- Masayuki Yamamoto
- - bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat
- - bpo-23903: Added missed names to PC/python3.def.
- - bpo-28762: lockf() is available on Android API level 24, but the F_LOCK
- macro is not defined in android-ndk-r13.
- - bpo-28538: Fix the compilation error that occurs because if_nameindex() is
- available on Android API level 24, but the if_nameindex structure is not
- defined.
- - bpo-20211: Do not add the directory for installing C header files and the
- directory for installing object code libraries to the cross compilation
- search paths. Original patch by Thomas Petazzoni.
- - bpo-28849: Do not define sys.implementation._multiarch on Android.
- What's New in Python 3.6.0 final?
- =================================
- *Release date: 2016-12-23*
- No changes since release candidate 2
- What's New in Python 3.6.0 release candidate 2?
- ===============================================
- *Release date: 2016-12-16*
- Core and Builtins
- -----------------
- - bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must
- not convert combined table into split table. Patch written by INADA Naoki.
- - bpo-28990: Fix asyncio SSL hanging if connection is closed before
- handshake is completed. (Patch by HoHo-Ho)
- Tools/Demos
- -----------
- - bpo-28770: Fix python-gdb.py for fastcalls.
- Windows
- -------
- - bpo-28896: Deprecate WindowsRegistryFinder.
- Build
- -----
- - bpo-28898: Prevent gdb build errors due to HAVE_LONG_LONG redefinition.
- What's New in Python 3.6.0 release candidate 1?
- ===============================================
- *Release date: 2016-12-06*
- Core and Builtins
- -----------------
- - bpo-23722: Rather than silently producing a class that doesn't support
- zero-argument ``super()`` in methods, failing to pass the new
- ``__classcell__`` namespace entry up to ``type.__new__`` now results in a
- ``DeprecationWarning`` and a class that supports zero-argument
- ``super()``.
- - bpo-28797: Modifying the class __dict__ inside the __set_name__ method of
- a descriptor that is used inside that class no longer prevents calling the
- __set_name__ method of other descriptors.
- - bpo-28782: Fix a bug in the implementation ``yield from`` when checking if
- the next instruction is YIELD_FROM. Regression introduced by WORDCODE
- (issue #26647).
- Library
- -------
- - bpo-27030: Unknown escapes in re.sub() replacement template are allowed
- again. But they still are deprecated and will be disabled in 3.7.
- - bpo-28835: Fix a regression introduced in warnings.catch_warnings(): call
- warnings.showwarning() if it was overriden inside the context manager.
- - bpo-27172: To assist with upgrades from 2.7, the previously documented
- deprecation of ``inspect.getfullargspec()`` has been reversed. This
- decision may be revisited again after the Python 2.7 branch is no longer
- officially supported.
- - bpo-26273: Add new :data:`socket.TCP_CONGESTION` (Linux 2.6.13) and
- :data:`socket.TCP_USER_TIMEOUT` (Linux 2.6.37) constants. Patch written by
- Omar Sandoval.
- - bpo-24142: Reading a corrupt config file left configparser in an invalid
- state. Original patch by Florian Höch.
- - bpo-28843: Fix asyncio C Task to handle exceptions __traceback__.
- C API
- -----
- - bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.
- Documentation
- -------------
- - bpo-23722: The data model reference and the porting section in the What's
- New guide now cover the additional ``__classcell__`` handling needed for
- custom metaclasses to fully support PEP 487 and zero-argument ``super()``.
- Tools/Demos
- -----------
- - bpo-28023: Fix python-gdb.py didn't support new dict implementation.
- What's New in Python 3.6.0 beta 4?
- ==================================
- *Release date: 2016-11-21*
- Core and Builtins
- -----------------
- - bpo-28532: Show sys.version when -V option is supplied twice.
- - bpo-27100: The with-statement now checks for __enter__ before it checks
- for __exit__. This gives less confusing error messages when both methods
- are missing. Patch by Jonathan Ellington.
- - bpo-28746: Fix the set_inheritable() file descriptor method on platforms
- that do not have the ioctl FIOCLEX and FIONCLEX commands.
- - bpo-26920: Fix not getting the locale's charset upon initializing the
- interpreter, on platforms that do not have langinfo.
- - bpo-28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
- when decode astral characters. Patch by Xiang Zhang.
- - bpo-19398: Extra slash no longer added to sys.path components in case of
- empty compile-time PYTHONPATH components.
- - bpo-28665: Improve speed of the STORE_DEREF opcode by 40%.
- - bpo-28583: PyDict_SetDefault didn't combine split table when needed. Patch
- by Xiang Zhang.
- - bpo-27243: Change PendingDeprecationWarning -> DeprecationWarning. As it
- was agreed in the issue, __aiter__ returning an awaitable should result in
- PendingDeprecationWarning in 3.5 and in DeprecationWarning in 3.6.
- - bpo-26182: Fix a refleak in code that raises DeprecationWarning.
- - bpo-28721: Fix asynchronous generators aclose() and athrow() to handle
- StopAsyncIteration propagation properly.
- Library
- -------
- - bpo-28752: Restored the __reduce__() methods of datetime objects.
- - bpo-28727: Regular expression patterns, _sre.SRE_Pattern objects created
- by re.compile(), become comparable (only x==y and x!=y operators). This
- change should fix the issue #18383: don't duplicate warning filters when
- the warnings module is reloaded (thing usually only done in unit tests).
- - bpo-20572: The subprocess.Popen.wait method's undocumented endtime
- parameter now raises a DeprecationWarning.
- - bpo-25659: In ctypes, prevent a crash calling the from_buffer() and
- from_buffer_copy() methods on abstract classes like Array.
- - bpo-19717: Makes Path.resolve() succeed on paths that do not exist. Patch
- by Vajrasky Kok
- - bpo-28563: Fixed possible DoS and arbitrary code execution when handle
- plural form selections in the gettext module. The expression parser now
- supports exact syntax supported by GNU gettext.
- - bpo-28387: Fixed possible crash in _io.TextIOWrapper deallocator when the
- garbage collector is invoked in other thread. Based on patch by Sebastian
- Cufre.
- - bpo-28600: Optimize loop.call_soon.
- - bpo-28613: Fix get_event_loop() return the current loop if called from
- coroutines/callbacks.
- - bpo-28634: Fix asyncio.isfuture() to support unittest.Mock.
- - bpo-26081: Fix refleak in _asyncio.Future.__iter__().throw.
- - bpo-28639: Fix inspect.isawaitable to always return bool Patch by Justin
- Mayfield.
- - bpo-28652: Make loop methods reject socket kinds they do not support.
- - bpo-28653: Fix a refleak in functools.lru_cache.
- - bpo-28703: Fix asyncio.iscoroutinefunction to handle Mock objects.
- - bpo-28704: Fix create_unix_server to support Path-like objects (PEP 519).
- - bpo-28720: Add collections.abc.AsyncGenerator.
- Documentation
- -------------
- - bpo-28513: Documented command-line interface of zipfile.
- Tests
- -----
- - bpo-28666: Now test.support.rmtree is able to remove unwritable or
- unreadable directories.
- - bpo-23839: Various caches now are cleared before running every test file.
- Build
- -----
- - bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and
- Michael Haubenwallner.
- - bpo-26359: Rename --with-optimiations to --enable-optimizations.
- - bpo-28676: Prevent missing 'getentropy' declaration warning on macOS.
- Patch by Gareth Rees.
- What's New in Python 3.6.0 beta 3?
- ==================================
- *Release date: 2016-10-31*
- Core and Builtins
- -----------------
- - bpo-28128: Deprecation warning for invalid str and byte escape sequences
- now prints better information about where the error occurs. Patch by
- Serhiy Storchaka and Eric Smith.
- - bpo-28509: dict.update() no longer allocate unnecessary large memory.
- - bpo-28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug
- build.
- - bpo-28517: Fixed of-by-one error in the peephole optimizer that caused
- keeping unreachable code.
- - bpo-28214: Improved exception reporting for problematic __set_name__
- attributes.
- - bpo-23782: Fixed possible memory leak in _PyTraceback_Add() and exception
- loss in PyTraceBack_Here().
- - bpo-28471: Fix "Python memory allocator called without holding the GIL"
- crash in socket.setblocking.
- Library
- -------
- - bpo-27517: LZMA compressor and decompressor no longer raise exceptions if
- given empty data twice. Patch by Benjamin Fogle.
- - bpo-28549: Fixed segfault in curses's addch() with ncurses6.
- - bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
- file with compression before trying to open it without compression.
- Otherwise it had 50% chance failed with ignore_zeros=True.
- - bpo-23262: The webbrowser module now supports Firefox 36+ and derived
- browsers. Based on patch by Oleg Broytman.
- - bpo-27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused
- by representing the scale as float value internally in Tk. tkinter.IntVar
- now works if float value is set to underlying Tk variable.
- - bpo-18844: The various ways of specifying weights for random.choices() now
- produce the same result sequences.
- - bpo-28255: calendar.TextCalendar().prmonth() no longer prints a space at
- the start of new line after printing a month's calendar. Patch by Xiang
- Zhang.
- - bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces.
- Based on patch by Kaarle Ritvanen.
- - bpo-28353: os.fwalk() no longer fails on broken links.
- - bpo-28430: Fix iterator of C implemented asyncio.Future doesn't accept
- non-None value is passed to it.send(val).
- - bpo-27025: Generated names for Tkinter widgets now start by the "!" prefix
- for readability.
- - bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a
- workaround to Tix library bug.
- - bpo-28488: shutil.make_archive() no longer adds entry "./" to ZIP archive.
- - bpo-25953: re.sub() now raises an error for invalid numerical group
- reference in replacement template even if the pattern is not found in the
- string. Error message for invalid group reference now includes the group
- index and the position of the reference. Based on patch by SilentGhost.
- - bpo-18219: Optimize csv.DictWriter for large number of columns. Patch by
- Mariatta Wijaya.
- - bpo-28448: Fix C implemented asyncio.Future didn't work on Windows.
- - bpo-28480: Fix error building socket module when multithreading is
- disabled.
- - bpo-24452: Make webbrowser support Chrome on Mac OS X.
- - bpo-20766: Fix references leaked by pdb in the handling of SIGINT
- handlers.
- - bpo-28492: Fix how StopIteration exception is raised in _asyncio.Future.
- - bpo-28500: Fix asyncio to handle async gens GC from another thread.
- - bpo-26923: Fix asyncio.Gather to refuse being cancelled once all children
- are done. Patch by Johannes Ebke.
- - bpo-26796: Don't configure the number of workers for default threadpool
- executor. Initial patch by Hans Lawrenz.
- - bpo-28544: Implement asyncio.Task in C.
- Windows
- -------
- - bpo-28522: Fixes mishandled buffer reallocation in getpathp.c
- Build
- -----
- - bpo-28444: Fix missing extensions modules when cross compiling.
- - bpo-28208: Update Windows build and OS X installers to use SQLite 3.14.2.
- - bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.
- Tests
- -----
- - bpo-26944: Fix test_posix for Android where 'id -G' is entirely wrong or
- missing the effective gid.
- - bpo-28409: regrtest: fix the parser of command line arguments.
- What's New in Python 3.6.0 beta 2?
- ==================================
- *Release date: 2016-10-10*
- Core and Builtins
- -----------------
- - bpo-28183: Optimize and cleanup dict iteration.
- - bpo-26081: Added C implementation of asyncio.Future. Original patch by
- Yury Selivanov.
- - bpo-28379: Added sanity checks and tests for PyUnicode_CopyCharacters().
- Patch by Xiang Zhang.
- - bpo-28376: The type of long range iterator is now registered as Iterator.
- Patch by Oren Milman.
- - bpo-28376: Creating instances of range_iterator by calling range_iterator
- type now is deprecated. Patch by Oren Milman.
- - bpo-28376: The constructor of range_iterator now checks that step is not
- 0. Patch by Oren Milman.
- - bpo-26906: Resolving special methods of uninitialized type now causes
- implicit initialization of the type instead of a fail.
- - bpo-18287: PyType_Ready() now checks that tp_name is not NULL. Original
- patch by Niklas Koep.
- - bpo-24098: Fixed possible crash when AST is changed in process of
- compiling it.
- - bpo-28201: Dict reduces possibility of 2nd conflict in hash table when
- hashes have same lower bits.
- - bpo-28350: String constants with null character no longer interned.
- - bpo-26617: Fix crash when GC runs during weakref callbacks.
- - bpo-27942: String constants now interned recursively in tuples and
- frozensets.
- - bpo-21578: Fixed misleading error message when ImportError called with
- invalid keyword args.
- - bpo-28203: Fix incorrect type in complex(1.0, {2:3}) error message. Patch
- by Soumya Sharma.
- - bpo-28086: Single var-positional argument of tuple subtype was passed
- unscathed to the C-defined function. Now it is converted to exact tuple.
- - bpo-28214: Now __set_name__ is looked up on the class instead of the
- instance.
- - bpo-27955: Fallback on reading /dev/urandom device when the getrandom()
- syscall fails with EPERM, for example when blocked by SECCOMP.
- - bpo-28192: Don't import readline in isolated mode.
- - Upgrade internal unicode databases to Unicode version 9.0.0.
- - bpo-28131: Fix a regression in zipimport's compile_source(). zipimport
- should use the same optimization level as the interpreter.
- - bpo-28126: Replace Py_MEMCPY with memcpy(). Visual Studio can properly
- optimize memcpy().
- - bpo-28120: Fix dict.pop() for splitted dictionary when trying to remove a
- "pending key" (Not yet inserted in split-table). Patch by Xiang Zhang.
- - bpo-26182: Raise DeprecationWarning when async and await keywords are used
- as variable/attribute/class/function name.
- Library
- -------
- - bpo-27998: Fixed bytes path support in os.scandir() on Windows. Patch by
- Eryk Sun.
- - bpo-28317: The disassembler now decodes FORMAT_VALUE argument.
- - bpo-26293: Fixed writing ZIP files that starts not from the start of the
- file. Offsets in ZIP file now are relative to the start of the archive in
- conforming to the specification.
- - bpo-28380: unittest.mock Mock autospec functions now properly support
- assert_called, assert_not_called, and assert_called_once.
- - bpo-27181: remove statistics.geometric_mean and defer until 3.7.
- - bpo-28229: lzma module now supports pathlib.
- - bpo-28321: Fixed writing non-BMP characters with binary format in
- plistlib.
- - bpo-28225: bz2 module now supports pathlib. Initial patch by Ethan
- Furman.
- - bpo-28227: gzip now supports pathlib. Patch by Ethan Furman.
- - bpo-27358: Optimized merging var-keyword arguments and improved error
- message when passing a non-mapping as a var-keyword argument.
- - bpo-28257: Improved error message when passing a non-iterable as a
- var-positional argument. Added opcode BUILD_TUPLE_UNPACK_WITH_CALL.
- - bpo-28322: Fixed possible crashes when unpickle itertools objects from
- incorrect pickle data. Based on patch by John Leitch.
- - bpo-28228: imghdr now supports pathlib.
- - bpo-28226: compileall now supports pathlib.
- - bpo-28314: Fix function declaration (C flags) for the getiterator() method
- of xml.etree.ElementTree.Element.
- - bpo-28148: Stop using localtime() and gmtime() in the time module.
- Introduced platform independent _PyTime_localtime API that is similar to
- POSIX localtime_r, but available on all platforms. Patch by Ed Schouten.
- - bpo-28253: Fixed calendar functions for extreme months: 0001-01 and
- 9999-12.
- Methods itermonthdays() and itermonthdays2() are reimplemented so that
- they don't call itermonthdates() which can cause datetime.date
- under/overflow.
- - bpo-28275: Fixed possible use after free in the decompress() methods of
- the LZMADecompressor and BZ2Decompressor classes. Original patch by John
- Leitch.
- - bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation()
- if pass invalid string-like object as a name. Patch by Xiang Zhang.
- - bpo-18844: random.choices() now has k as a keyword-only argument to
- improve the readability of common cases and come into line with the
- signature used in other languages.
- - bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py.
- Patch by Madison May.
- - bpo-27611: Fixed support of default root window in the tkinter.tix module.
- Added the master parameter in the DisplayStyle constructor.
- - bpo-27348: In the traceback module, restore the formatting of exception
- messages like "Exception: None". This fixes a regression introduced in
- 3.5a2.
- - bpo-25651: Allow falsy values to be used for msg parameter of subTest().
- - bpo-27778: Fix a memory leak in os.getrandom() when the getrandom() is
- interrupted by a signal and a signal handler raises a Python exception.
- - bpo-28200: Fix memory leak on Windows in the os module (fix
- path_converter() function).
- - bpo-25400: RobotFileParser now correctly returns default values for
- crawl_delay and request_rate. Initial patch by Peter Wirtz.
- - bpo-27932: Prevent memory leak in win32_ver().
- - Fix UnboundLocalError in socket._sendfile_use_sendfile.
- - bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of
- os.stat(). Patch by Eryk Sun.
- - bpo-22493: Warning message emitted by using inline flags in the middle of
- regular expression now contains a (truncated) regex pattern. Patch by Tim
- Graham.
- - bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an
- empty bytestring is passed.
- - bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.
- - bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by
- Gergely Imreh and Markus Holtermann.
- - bpo-28114: Fix a crash in parse_envlist() when env contains byte strings.
- Patch by Eryk Sun.
- - bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and
- binascii.a2b_qp().
- - bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by
- Kevin Conway.
- - bpo-28174: Handle when SO_REUSEPORT isn't properly supported. Patch by
- Seth Michael Larson.
- - bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by
- iceboy.
- - bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.
- - bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.
- - bpo-27759: Fix selectors incorrectly retain invalid file descriptors.
- Patch by Mark Williams.
- - bpo-28368: Refuse monitoring processes if the child watcher has no loop
- attached. Patch by Vincent Michel.
- - bpo-28369: Raise RuntimeError when transport's FD is used with add_reader,
- add_writer, etc.
- - bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг
- Марк.
- - bpo-28371: Deprecate passing asyncio.Handles to run_in_executor.
- - bpo-28372: Fix asyncio to support formatting of non-python coroutines.
- - bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг
- Марк.
- - bpo-27972: Prohibit Tasks to await on themselves.
- Windows
- -------
- - bpo-28402: Adds signed catalog files for stdlib on Windows.
- - bpo-28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by Eryk
- Sun)
- - bpo-28251: Improvements to help manuals on Windows.
- - bpo-28110: launcher.msi has different product codes between 32-bit and
- 64-bit
- - bpo-28161: Opening CON for write access fails
- - bpo-28162: WindowsConsoleIO readall() fails if first line starts with
- Ctrl+Z
- - bpo-28163: WindowsConsoleIO fileno() passes wrong flags to _open_osfhandle
- - bpo-28164: _PyIO_get_console_type fails for various paths
- - bpo-28137: Renames Windows path file to ._pth
- - bpo-28138: Windows ._pth file should allow import site
- C API
- -----
- - bpo-28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(),
- PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and
- PyUnicode_AsEncodedUnicode().
- Build
- -----
- - bpo-28258: Fixed build with Estonian locale (python-config and distclean
- targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis.
- - bpo-26661: setup.py now detects system libffi with multiarch wrapper.
- - bpo-15819: Remove redundant include search directory option for building
- outside the source tree.
- Tests
- -----
- - bpo-28217: Adds _testconsole module to test console input.
- What's New in Python 3.6.0 beta 1?
- ==================================
- *Release date: 2016-09-12*
- Core and Builtins
- -----------------
- - bpo-23722: The __class__ cell used by zero-argument super() is now
- initialized from type.__new__ rather than __build_class__, so class
- methods relying on that will now work correctly when called from metaclass
- methods during class creation. Patch by Martin Teichmann.
- - bpo-25221: Fix corrupted result from PyLong_FromLong(0) when Python is
- compiled with NSMALLPOSINTS = 0.
- - bpo-27080: Implement formatting support for PEP 515. Initial patch by
- Chris Angelico.
- - bpo-27199: In tarfile, expose copyfileobj bufsize to improve throughput.
- Patch by Jason Fried.
- - bpo-27948: In f-strings, only allow backslashes inside the braces (where
- the expressions are). This is a breaking change from the 3.6 alpha
- releases, where backslashes are allowed anywhere in an f-string. Also,
- require that expressions inside f-strings be enclosed within literal
- braces, and not escapes like ``f'\x7b"hi"\x7d'``.
- - bpo-28046: Remove platform-specific directories from sys.path.
- - bpo-28071: Add early-out for differencing from an empty set.
- - bpo-25758: Prevents zipimport from unnecessarily encoding a filename
- (patch by Eryk Sun)
- - bpo-25856: The __module__ attribute of extension classes and functions now
- is interned. This leads to more compact pickle data with protocol 4.
- - bpo-27213: Rework CALL_FUNCTION* opcodes to produce shorter and more
- efficient bytecode. Patch by Demur Rumed, design by Serhiy Storchaka,
- reviewed by Serhiy Storchaka and Victor Stinner.
- - bpo-26331: Implement tokenizing support for PEP 515. Patch by Georg
- Brandl.
- - bpo-27999: Make "global after use" a SyntaxError, and ditto for nonlocal.
- Patch by Ivan Levkivskyi.
- - bpo-28003: Implement PEP 525 -- Asynchronous Generators.
- - bpo-27985: Implement PEP 526 -- Syntax for Variable Annotations. Patch by
- Ivan Levkivskyi.
- - bpo-26058: Add a new private version to the builtin dict type, incremented
- at each dictionary creation and at each dictionary change. Implementation
- of the PEP 509.
- - bpo-27364: A backslash-character pair that is not a valid escape sequence
- now generates a DeprecationWarning. Patch by Emanuel Barry.
- - bpo-27350: `dict` implementation is changed like PyPy. It is more compact
- and preserves insertion order. (Concept developed by Raymond Hettinger and
- patch by Inada Naoki.)
- - bpo-27911: Remove unnecessary error checks in
- ``exec_builtin_or_dynamic()``.
- - bpo-27078: Added BUILD_STRING opcode. Optimized f-strings evaluation.
- - bpo-17884: Python now requires systems with inttypes.h and stdint.h
- - bpo-27961: Require platforms to support ``long long``. Python hasn't
- compiled without ``long long`` for years, so this is basically a
- formality.
- - bpo-27355: Removed support for Windows CE. It was never finished, and
- Windows CE is no longer a relevant platform for Python.
- - Implement PEP 523.
- - bpo-27870: A left shift of zero by a large integer no longer attempts to
- allocate large amounts of memory.
- - bpo-25402: In int-to-decimal-string conversion, improve the estimate of
- the intermediate memory required, and remove an unnecessarily strict
- overflow check. Patch by Serhiy Storchaka.
- - bpo-27214: In long_invert, be more careful about modifying object returned
- by long_add, and remove an unnecessary check for small longs. Thanks Oren
- Milman for analysis and patch.
- - bpo-27506: Support passing the bytes/bytearray.translate() "delete"
- argument by keyword.
- - bpo-27812: Properly clear out a generator's frame's backreference to the
- generator to prevent crashes in frame.clear().
- - bpo-27811: Fix a crash when a coroutine that has not been awaited is
- finalized with warnings-as-errors enabled.
- - bpo-27587: Fix another issue found by PVS-Studio: Null pointer check after
- use of 'def' in _PyState_AddModule(). Initial patch by Christian Heimes.
- - bpo-27792: The modulo operation applied to ``bool`` and other ``int``
- subclasses now always returns an ``int``. Previously the return type
- depended on the input values. Patch by Xiang Zhang.
- - bpo-26984: int() now always returns an instance of exact int.
- - bpo-25604: Fix a minor bug in integer true division; this bug could
- potentially have caused off-by-one-ulp results on platforms with
- unreliable ldexp implementations.
- - bpo-24254: Make class definition namespace ordered by default.
- - bpo-27662: Fix an overflow check in ``List_New``: the original code was
- checking against ``Py_SIZE_MAX`` instead of the correct upper bound of
- ``Py_SSIZE_T_MAX``. Patch by Xiang Zhang.
- - bpo-27782: Multi-phase extension module import now correctly allows the
- ``m_methods`` field to be used to add module level functions to instances
- of non-module types returned from ``Py_create_mod``. Patch by Xiang Zhang.
- - bpo-27936: The round() function accepted a second None argument for some
- types but not for others. Fixed the inconsistency by accepting None for
- all numeric types.
- - bpo-27487: Warn if a submodule argument to "python -m" or
- runpy.run_module() is found in sys.modules after parent packages are
- imported, but before the submodule is executed.
- - bpo-27157: Make only type() itself accept the one-argument form. Patch by
- Eryk Sun and Emanuel Barry.
- - bpo-27558: Fix a SystemError in the implementation of "raise" statement.
- In a brand new thread, raise a RuntimeError since there is no active
- exception to reraise. Patch written by Xiang Zhang.
- - bpo-28008: Implement PEP 530 -- asynchronous comprehensions.
- - bpo-27942: Fix memory leak in codeobject.c
- Library
- -------
- - bpo-28732: Fix crash in os.spawnv() with no elements in args
- - bpo-28485: Always raise ValueError for negative
- compileall.compile_dir(workers=...) parameter, even when multithreading is
- unavailable.
- - bpo-28037: Use sqlite3_get_autocommit() instead of setting
- Connection->inTransaction manually.
- - bpo-25283: Attributes tm_gmtoff and tm_zone are now available on all
- platforms in the return values of time.localtime() and time.gmtime().
- - bpo-24454: Regular expression match object groups are now accessible using
- __getitem__. "mo[x]" is equivalent to "mo.group(x)".
- - bpo-10740: sqlite3 no longer implicitly commit an open transaction before
- DDL statements.
- - bpo-17941: Add a *module* parameter to collections.namedtuple().
- - bpo-22493: Inline flags now should be used only at the start of the
- regular expression. Deprecation warning is emitted if uses them in the
- middle of the regular expression.
- - bpo-26885: xmlrpc now supports unmarshalling additional data types used by
- Apache XML-RPC implementation for numerics and None.
- - bpo-28070: Fixed parsing inline verbose flag in regular expressions.
- - bpo-19500: Add client-side SSL session resumption to the ssl module.
- - bpo-28022: Deprecate ssl-related arguments in favor of SSLContext. The
- deprecation include manual creation of SSLSocket and certfile/keyfile (or
- similar) in ftplib, httplib, imaplib, smtplib, poplib and urllib.
- - bpo-28043: SSLContext has improved default settings: OP_NO_SSLv2,
- OP_NO_SSLv3, OP_NO_COMPRESSION, OP_CIPHER_SERVER_PREFERENCE,
- OP_SINGLE_DH_USE, OP_SINGLE_ECDH_USE and HIGH ciphers without MD5.
- - bpo-24693: Changed some RuntimeError's in the zipfile module to more
- appropriate types. Improved some error messages and debugging output.
- - bpo-17909: ``json.load`` and ``json.loads`` now support binary input
- encoded as UTF-8, UTF-16 or UTF-32. Patch by Serhiy Storchaka.
- - bpo-27137: the pure Python fallback implementation of
- ``functools.partial`` now matches the behaviour of its accelerated C
- counterpart for subclassing, pickling and text representation purposes.
- Patch by Emanuel Barry and Serhiy Storchaka.
- - Fix possible integer overflows and crashes in the mmap module with unusual
- usage patterns.
- - bpo-1703178: Fix the ability to pass the --link-objects option to the
- distutils build_ext command.
- - bpo-28019: itertools.count() no longer rounds non-integer step in range
- between 1.0 and 2.0 to 1.
- - bpo-18401: Pdb now supports the 'readrc' keyword argument to control
- whether .pdbrc files should be read. Patch by Martin Matusiak and Sam
- Kimbrel.
- - bpo-25969: Update the lib2to3 grammar to handle the unpacking
- generalizations added in 3.5.
- - bpo-14977: mailcap now respects the order of the lines in the mailcap
- files ("first match"), as required by RFC 1542. Patch by Michael Lazar.
- - bpo-28082: Convert re flag constants to IntFlag.
- - bpo-28025: Convert all ssl module constants to IntEnum and IntFlags.
- SSLContext properties now return flags and enums.
- - bpo-23591: Add Flag, IntFlag, and auto() to enum module.
- - bpo-433028: Added support of modifier spans in regular expressions.
- - bpo-24594: Validates persist parameter when opening MSI database
- - bpo-17582: xml.etree.ElementTree nows preserves whitespaces in attributes
- (Patch by Duane Griffin. Reviewed and approved by Stefan Behnel.)
- - bpo-28047: Fixed calculation of line length used for the base64 CTE in the
- new email policies.
- - bpo-27576: Fix call order in OrderedDict.__init__().
- - email.generator.DecodedGenerator now supports the policy keyword.
- - bpo-28027: Remove undocumented modules from ``Lib/plat-*``: IN, CDROM,
- DLFCN, TYPES, CDIO, and STROPTS.
- - bpo-27445: Don't pass str(_charset) to MIMEText.set_payload(). Patch by
- Claude Paroz.
- - bpo-24277: The new email API is no longer provisional, and the docs have
- been reorganized and rewritten to emphasize the new API.
- - bpo-22450: urllib now includes an ``Accept: */*`` header among the default
- headers. This makes the results of REST API requests more consistent and
- predictable especially when proxy servers are involved.
- - lib2to3.pgen3.driver.load_grammar() now creates a stable cache file
- between runs given the same Grammar.txt input regardless of the hash
- randomization setting.
- - bpo-28005: Allow ImportErrors in encoding implementation to propagate.
- - bpo-26667: Support path-like objects in importlib.util.
- - bpo-27570: Avoid zero-length memcpy() etc calls with null source pointers
- in the "ctypes" and "array" modules.
- - bpo-22233: Break email header lines *only* on the RFC specified CR and LF
- characters, not on arbitrary unicode line breaks. This also fixes a bug
- in HTTP header parsing.
- - bpo-27331: The email.mime classes now all accept an optional policy
- keyword.
- - bpo-27988: Fix email iter_attachments incorrect mutation of payload list.
- - bpo-16113: Add SHA-3 and SHAKE support to hashlib module.
- - Eliminate a tautological-pointer-compare warning in _scproxy.c.
- - bpo-27776: The :func:`os.urandom` function does now block on Linux 3.17
- and newer until the system urandom entropy pool is initialized to increase
- the security. This change is part of the :pep:`524`.
- - bpo-27778: Expose the Linux ``getrandom()`` syscall as a new
- :func:`os.getrandom` function. This change is part of the :pep:`524`.
- - bpo-27691: Fix ssl module's parsing of GEN_RID subject alternative name
- fields in X.509 certs.
- - bpo-18844: Add random.choices().
- - bpo-25761: Improved error reporting about truncated pickle data in C
- implementation of unpickler. UnpicklingError is now raised instead of
- AttributeError and ValueError in some cases.
- - bpo-26798: Add BLAKE2 (blake2b and blake2s) to hashlib.
- - bpo-26032: Optimized globbing in pathlib by using os.scandir(); it is now
- about 1.5--4 times faster.
- - bpo-25596: Optimized glob() and iglob() functions in the glob module; they
- are now about 3--6 times faster.
- - bpo-27928: Add scrypt (password-based key derivation function) to hashlib
- module (requires OpenSSL 1.1.0).
- - bpo-27850: Remove 3DES from ssl module's default cipher list to counter
- measure sweet32 attack (CVE-2016-2183).
- - bpo-27766: Add ChaCha20 Poly1305 to ssl module's default cipher list.
- (Required OpenSSL 1.1.0 or LibreSSL).
- - bpo-25387: Check return value of winsound.MessageBeep.
- - bpo-27866: Add SSLContext.get_ciphers() method to get a list of all
- enabled ciphers.
- - bpo-27744: Add AF_ALG (Linux Kernel crypto) to socket module.
- - bpo-26470: Port ssl and hashlib module to OpenSSL 1.1.0.
- - bpo-11620: Fix support for SND_MEMORY in winsound.PlaySound. Based on a
- patch by Tim Lesher.
- - bpo-11734: Add support for IEEE 754 half-precision floats to the struct
- module. Based on a patch by Eli Stevens.
- - bpo-27919: Deprecated ``extra_path`` distribution option in distutils
- packaging.
- - bpo-23229: Add new ``cmath`` constants: ``cmath.inf`` and ``cmath.nan`` to
- match ``math.inf`` and ``math.nan``, and also ``cmath.infj`` and
- ``cmath.nanj`` to match the format used by complex repr.
- - bpo-27842: The csv.DictReader now returns rows of type OrderedDict.
- (Contributed by Steve Holden.)
- - Remove support for passing a file descriptor to os.access. It never worked
- but previously didn't raise.
- - bpo-12885: Fix error when distutils encounters symlink.
- - bpo-27881: Fixed possible bugs when setting
- sqlite3.Connection.isolation_level. Based on patch by Xiang Zhang.
- - bpo-27861: Fixed a crash in sqlite3.Connection.cursor() when a factory
- creates not a cursor. Patch by Xiang Zhang.
- - bpo-19884: Avoid spurious output on OS X with Gnu Readline.
- - bpo-27706: Restore deterministic behavior of random.Random().seed() for
- string seeds using seeding version 1. Allows sequences of calls to
- random() to exactly match those obtained in Python 2. Patch by Nofar
- Schnider.
- - bpo-10513: Fix a regression in Connection.commit(). Statements should not
- be reset after a commit.
- - bpo-12319: Chunked transfer encoding support added to
- http.client.HTTPConnection requests. The
- urllib.request.AbstractHTTPHandler class does not enforce a Content-Length
- header any more. If a HTTP request has a file or iterable body, but no
- Content-Length header, the library now falls back to use chunked
- transfer-encoding.
- - A new version of typing.py from https://github.com/python/typing: -
- Collection (only for 3.6) (Issue #27598) - Add FrozenSet to __all__
- (upstream #261) - fix crash in _get_type_vars() (upstream #259) - Remove
- the dict constraint in ForwardRef._eval_type (upstream #252)
- - bpo-27832: Make ``_normalize`` parameter to ``Fraction`` constuctor
- keyword-only, so that ``Fraction(2, 3, 4)`` now raises ``TypeError``.
- - bpo-27539: Fix unnormalised ``Fraction.__pow__`` result in the case of
- negative exponent and negative base.
- - bpo-21718: cursor.description is now available for queries using CTEs.
- - bpo-27819: In distutils sdists, simply produce the "gztar" (gzipped tar
- format) distributions on all platforms unless "formats" is supplied.
- - bpo-2466: posixpath.ismount now correctly recognizes mount points which
- the user does not have permission to access.
- - bpo-9998: On Linux, ctypes.util.find_library now looks in LD_LIBRARY_PATH
- for shared libraries.
- - bpo-27573: exit message for code.interact is now configurable.
- - bpo-27930: Improved behaviour of logging.handlers.QueueListener. Thanks to
- Paulo Andrade and Petr Viktorin for the analysis and patch.
- - bpo-6766: Distributed reference counting added to multiprocessing to
- support nesting of shared values / proxy objects.
- - bpo-21201: Improves readability of multiprocessing error message. Thanks
- to Wojciech Walczak for patch.
- - asyncio: Add set_protocol / get_protocol to Transports.
- - bpo-27456: asyncio: Set TCP_NODELAY by default.
- IDLE
- ----
- - bpo-15308: Add 'interrupt execution' (^C) to Shell menu. Patch by Roger
- Serwy, updated by Bayard Randel.
- - bpo-27922: Stop IDLE tests from 'flashing' gui widgets on the screen.
- - bpo-27891: Consistently group and sort imports within idlelib modules.
- - bpo-17642: add larger font sizes for classroom projection.
- - Add version to title of IDLE help window.
- - bpo-25564: In section on IDLE -- console differences, mention that using
- exec means that __builtins__ is defined for each statement.
- - bpo-27821: Fix 3.6.0a3 regression that prevented custom key sets from
- being selected when no custom theme was defined.
- C API
- -----
- - bpo-26900: Excluded underscored names and other private API from limited
- API.
- - bpo-26027: Add support for path-like objects in PyUnicode_FSConverter() &
- PyUnicode_FSDecoder().
- Tests
- -----
- - bpo-27427: Additional tests for the math module. Patch by Francisco Couzo.
- - bpo-27953: Skip math and cmath tests that fail on OS X 10.4 due to a poor
- libm implementation of tan.
- - bpo-26040: Improve test_math and test_cmath coverage and rigour. Patch by
- Jeff Allen.
- - bpo-27787: Call gc.collect() before checking each test for "dangling
- threads", since the dangling threads are weak references.
- Build
- -----
- - bpo-27566: Fix clean target in freeze makefile (patch by Lisa Roach)
- - bpo-27705: Update message in validate_ucrtbase.py
- - bpo-27976: Deprecate building _ctypes with the bundled copy of libffi on
- non-OSX UNIX platforms.
- - bpo-27983: Cause lack of llvm-profdata tool when using clang as required
- for PGO linking to be a configure time error rather than make time when
- ``--with-optimizations`` is enabled. Also improve our ability to find the
- llvm-profdata tool on MacOS and some Linuxes.
- - bpo-21590: Support for DTrace and SystemTap probes.
- - bpo-26307: The profile-opt build now applies PGO to the built-in modules.
- - bpo-26359: Add the --with-optimizations flag to turn on LTO and PGO build
- support when available.
- - bpo-27917: Set platform triplets for Android builds.
- - bpo-25825: Update references to the $(LIBPL) installation path on AIX.
- This path was changed in 3.2a4.
- - Update OS X installer to use SQLite 3.14.1 and XZ 5.2.2.
- - bpo-21122: Fix LTO builds on OS X.
- - bpo-17128: Build OS X installer with a private copy of OpenSSL. Also
- provide a sample Install Certificates command script to install a set of
- root certificates from the third-party certifi module.
- Tools/Demos
- -----------
- - bpo-27952: Get Tools/scripts/fixcid.py working with Python 3 and the
- current "re" module, avoid invalid Python backslash escapes, and fix a bug
- parsing escaped C quote signs.
- Windows
- -------
- - bpo-28065: Update xz dependency to 5.2.2 and build it from source.
- - bpo-25144: Ensures TargetDir is set before continuing with custom install.
- - bpo-1602: Windows console doesn't input or print Unicode (PEP 528)
- - bpo-27781: Change file system encoding on Windows to UTF-8 (PEP 529)
- - bpo-27731: Opt-out of MAX_PATH on Windows 10
- - bpo-6135: Adds encoding and errors parameters to subprocess.
- - bpo-27959: Adds oem encoding, alias ansi to mbcs, move aliasmbcs to codec
- lookup.
- - bpo-27982: The functions of the winsound module now accept keyword
- arguments.
- - bpo-20366: Build full text search support into SQLite on Windows.
- - bpo-27756: Adds new icons for Python files and processes on Windows.
- Designs by Cherry Wang.
- - bpo-27883: Update sqlite to 3.14.1.0 on Windows.
- What's New in Python 3.6.0 alpha 4?
- ===================================
- *Release date: 2016-08-15*
- Core and Builtins
- -----------------
- - bpo-27704: Optimized creating bytes and bytearray from byte-like objects
- and iterables. Speed up to 3 times for short objects. Original patch by
- Naoki Inada.
- - bpo-26823: Large sections of repeated lines in tracebacks are now
- abbreviated as "[Previous line repeated {count} more times]" by the
- builtin traceback rendering. Patch by Emanuel Barry.
- - bpo-27574: Decreased an overhead of parsing keyword arguments in functions
- implemented with using Argument Clinic.
- - bpo-22557: Now importing already imported modules is up to 2.5 times
- faster.
- - bpo-17596: Include <wincrypt.h> to help with Min GW building.
- - bpo-17599: On Windows, rename the privately defined REPARSE_DATA_BUFFER
- structure to avoid conflicting with the definition from Min GW.
- - bpo-27507: Add integer overflow check in bytearray.extend(). Patch by
- Xiang Zhang.
- - bpo-27581: Don't rely on wrapping for overflow check in
- PySequence_Tuple(). Patch by Xiang Zhang.
- - bpo-1621: Avoid signed integer overflow in list and tuple operations.
- Patch by Xiang Zhang.
- - bpo-27419: Standard __import__() no longer look up "__import__" in globals
- or builtins for importing submodules or "from import". Fixed a crash if
- raise a warning about unabling to resolve package from __spec__ or
- __package__.
- - bpo-27083: Respect the PYTHONCASEOK environment variable under Windows.
- - bpo-27514: Make having too many statically nested blocks a SyntaxError
- instead of SystemError.
- - bpo-27366: Implemented PEP 487 (Simpler customization of class creation).
- Upon subclassing, the __init_subclass__ classmethod is called on the base
- class. Descriptors are initialized with __set_name__ after class creation.
- Library
- -------
- - bpo-26027: Add PEP 519/__fspath__() support to the os and os.path modules.
- Includes code from Jelle Zijlstra. (See also: bpo-27524)
- - bpo-27598: Add Collections to collections.abc. Patch by Ivan Levkivskyi,
- docs by Neil Girdhar.
- - bpo-25958: Support "anti-registration" of special methods from various
- ABCs, like __hash__, __iter__ or __len__. All these (and several more)
- can be set to None in an implementation class and the behavior will be as
- if the method is not defined at all. (Previously, this mechanism existed
- only for __hash__, to make mutable classes unhashable.) Code contributed
- by Andrew Barnert and Ivan Levkivskyi.
- - bpo-16764: Support keyword arguments to zlib.decompress(). Patch by Xiang
- Zhang.
- - bpo-27736: Prevent segfault after interpreter re-initialization due to ref
- count problem introduced in code for Issue #27038 in 3.6.0a3. Patch by
- Xiang Zhang.
- - bpo-25628: The *verbose* and *rename* parameters for
- collections.namedtuple are now keyword-only.
- - bpo-12345: Add mathematical constant tau to math and cmath. See also PEP
- 628.
- - bpo-26823: traceback.StackSummary.format now abbreviates large sections of
- repeated lines as "[Previous line repeated {count} more times]" (this
- change then further affects other traceback display operations in the
- module). Patch by Emanuel Barry.
- - bpo-27664: Add to concurrent.futures.thread.ThreadPoolExecutor() the
- ability to specify a thread name prefix.
- - bpo-27181: Add geometric_mean and harmonic_mean to statistics module.
- - bpo-27573: code.interact now prints an message when exiting.
- - bpo-6422: Add autorange method to timeit.Timer objects.
- - bpo-27773: Correct some memory management errors server_hostname in
- _ssl.wrap_socket().
- - bpo-26750: unittest.mock.create_autospec() now works properly for
- subclasses of property() and other data descriptors. Removes the never
- publicly used, never documented unittest.mock.DescriptorTypes tuple.
- - bpo-26754: Undocumented support of general bytes-like objects as path in
- compile() and similar functions is now deprecated.
- - bpo-26800: Undocumented support of general bytes-like objects as paths in
- os functions is now deprecated.
- - bpo-26981: Add _order_ compatibility shim to enum.Enum for Python 2/3 code
- bases.
- - bpo-27661: Added tzinfo keyword argument to datetime.combine.
- - In the curses module, raise an error if window.getstr() or window.instr()
- is passed a negative value.
- - bpo-27783: Fix possible usage of uninitialized memory in
- operator.methodcaller.
- - bpo-27774: Fix possible Py_DECREF on unowned object in _sre.
- - bpo-27760: Fix possible integer overflow in binascii.b2a_qp.
- - bpo-27758: Fix possible integer overflow in the _csv module for large
- record lengths.
- - bpo-27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the
- HTTP_PROXY variable when REQUEST_METHOD environment is set, which
- indicates that the script is in CGI mode.
- - bpo-7063: Remove dead code from the "array" module's slice handling. Patch
- by Chuck.
- - bpo-27656: Do not assume sched.h defines any SCHED_* constants.
- - bpo-27130: In the "zlib" module, fix handling of large buffers (typically
- 4 GiB) when compressing and decompressing. Previously, inputs were
- limited to 4 GiB, and compression and decompression operations did not
- properly handle results of 4 GiB.
- - bpo-24773: Implemented PEP 495 (Local Time Disambiguation).
- - Expose the EPOLLEXCLUSIVE constant (when it is defined) in the select
- module.
- - bpo-27567: Expose the EPOLLRDHUP and POLLRDHUP constants in the select
- module.
- - bpo-1621: Avoid signed int negation overflow in the "audioop" module.
- - bpo-27533: Release GIL in nt._isdir
- - bpo-17711: Fixed unpickling by the persistent ID with protocol 0. Original
- patch by Alexandre Vassalotti.
- - bpo-27522: Avoid an unintentional reference cycle in email.feedparser.
- - bpo-27512: Fix a segfault when os.fspath() called an __fspath__() method
- that raised an exception. Patch by Xiang Zhang.
- IDLE
- ----
- - bpo-27714: text_textview and test_autocomplete now pass when re-run in the
- same process. This occurs when test_idle fails when run with the -w
- option but without -jn. Fix warning from test_config.
- - bpo-27621: Put query response validation error messages in the query box
- itself instead of in a separate messagebox. Redo tests to match. Add Mac
- OSX refinements. Original patch by Mark Roseman.
- - bpo-27620: Escape key now closes Query box as cancelled.
- - bpo-27609: IDLE: tab after initial whitespace should tab, not
- autocomplete. This fixes problem with writing docstrings at least twice
- indented.
- - bpo-27609: Explicitly return None when there are also non-None returns. In
- a few cases, reverse a condition and eliminate a return.
- - bpo-25507: IDLE no longer runs buggy code because of its tkinter imports.
- Users must include the same imports required to run directly in Python.
- - bpo-27173: Add 'IDLE Modern Unix' to the built-in key sets. Make the
- default key set depend on the platform. Add tests for the changes to the
- config module.
- - bpo-27452: add line counter and crc to IDLE configHandler test dump.
- Tests
- -----
- - bpo-25805: Skip a test in test_pkgutil as needed that doesn't work when
- ``__name__ == __main__``. Patch by SilentGhost.
- - bpo-27472: Add test.support.unix_shell as the path to the default shell.
- - bpo-27369: In test_pyexpat, avoid testing an error message detail that
- changed in Expat 2.2.0.
- - bpo-27594: Prevent assertion error when running test_ast with coverage
- enabled: ensure code object has a valid first line number. Patch suggested
- by Ivan Levkivskyi.
- Windows
- -------
- - bpo-27647: Update bundled Tcl/Tk to 8.6.6.
- - bpo-27610: Adds PEP 514 metadata to Windows installer
- - bpo-27469: Adds a shell extension to the launcher so that drag and drop
- works correctly.
- - bpo-27309: Enables proper Windows styles in python[w].exe manifest.
- Build
- -----
- - bpo-27713: Suppress spurious build warnings when updating importlib's
- bootstrap files. Patch by Xiang Zhang
- - bpo-25825: Correct the references to Modules/python.exp, which is required
- on AIX. The references were accidentally changed in 3.5.0a1.
- - bpo-27453: CPP invocation in configure must use CPPFLAGS. Patch by Chi
- Hsuan Yen.
- - bpo-27641: The configure script now inserts comments into the makefile to
- prevent the pgen and _freeze_importlib executables from being
- cross-compiled.
- - bpo-26662: Set PYTHON_FOR_GEN in configure as the Python program to be
- used for file generation during the build.
- - bpo-10910: Avoid C++ compilation errors on FreeBSD and OS X. Also update
- FreedBSD version checks for the original ctype UTF-8 workaround.
- What's New in Python 3.6.0 alpha 3?
- ===================================
- *Release date: 2016-07-11*
- Core and Builtins
- -----------------
- - bpo-27473: Fixed possible integer overflow in bytes and bytearray
- concatenations. Patch by Xiang Zhang.
- - bpo-23034: The output of a special Python build with defined COUNT_ALLOCS,
- SHOW_ALLOC_COUNT or SHOW_TRACK_COUNT macros is now off by default. It
- can be re-enabled using the "-X showalloccount" option. It now outputs to
- stderr instead of stdout.
- - bpo-27443: __length_hint__() of bytearray iterators no longer return a
- negative integer for a resized bytearray.
- - bpo-27007: The fromhex() class methods of bytes and bytearray subclasses
- now return an instance of corresponding subclass.
- Library
- -------
- - bpo-26844: Fix error message for imp.find_module() to refer to 'path'
- instead of 'name'. Patch by Lev Maximov.
- - bpo-23804: Fix SSL zero-length recv() calls to not block and not raise an
- error about unclean EOF.
- - bpo-27466: Change time format returned by http.cookie.time2netscape,
- confirming the netscape cookie format and making it consistent with
- documentation.
- - bpo-21708: Deprecated dbm.dumb behavior that differs from common dbm
- behavior: creating a database in 'r' and 'w' modes and modifying a
- database in 'r' mode.
- - bpo-26721: Change the socketserver.StreamRequestHandler.wfile attribute to
- implement BufferedIOBase. In particular, the write() method no longer does
- partial writes.
- - bpo-22115: Added methods trace_add, trace_remove and trace_info in the
- tkinter.Variable class. They replace old methods trace_variable, trace,
- trace_vdelete and trace_vinfo that use obsolete Tcl commands and might not
- work in future versions of Tcl. Fixed old tracing methods:
- trace_vdelete() with wrong mode no longer break tracing, trace_vinfo() now
- always returns a list of pairs of strings, tracing in the "u" mode now
- works.
- - bpo-26243: Only the level argument to zlib.compress() is keyword argument
- now. The first argument is positional-only.
- - bpo-27038: Expose the DirEntry type as os.DirEntry. Code patch by Jelle
- Zijlstra.
- - bpo-27186: Update os.fspath()/PyOS_FSPath() to check the return value of
- __fspath__() to be either str or bytes.
- - bpo-18726: All optional parameters of the dump(), dumps(), load() and
- loads() functions and JSONEncoder and JSONDecoder class constructors in
- the json module are now keyword-only.
- - bpo-27319: Methods selection_set(), selection_add(), selection_remove()
- and selection_toggle() of ttk.TreeView now allow passing multiple items as
- multiple arguments instead of passing them as a tuple. Deprecated
- undocumented ability of calling the selection() method with arguments.
- - bpo-27079: Fixed curses.ascii functions isblank(), iscntrl() and
- ispunct().
- - bpo-27294: Numerical state in the repr for Tkinter event objects is now
- represented as a combination of known flags.
- - bpo-27177: Match objects in the re module now support index-like objects
- as group indices. Based on patches by Jeroen Demeyer and Xiang Zhang.
- - bpo-26754: Some functions (compile() etc) accepted a filename argument
- encoded as an iterable of integers. Now only strings and byte-like objects
- are accepted.
- - bpo-26536: socket.ioctl now supports SIO_LOOPBACK_FAST_PATH. Patch by
- Daniel Stokes.
- - bpo-27048: Prevents distutils failing on Windows when environment
- variables contain non-ASCII characters
- - bpo-27330: Fixed possible leaks in the ctypes module.
- - bpo-27238: Got rid of bare excepts in the turtle module. Original patch
- by Jelle Zijlstra.
- - bpo-27122: When an exception is raised within the context being managed by
- a contextlib.ExitStack() and one of the exit stack generators catches and
- raises it in a chain, do not re-raise the original exception when exiting,
- let the new chained one through. This avoids the PEP 479 bug described in
- issue25782.
- Security
- --------
- - bpo-27278: Fix os.urandom() implementation using getrandom() on Linux.
- Truncate size to INT_MAX and loop until we collected enough random bytes,
- instead of casting a directly Py_ssize_t to int.
- Library
- -------
- - bpo-16864: sqlite3.Cursor.lastrowid now supports REPLACE statement.
- Initial patch by Alex LordThorsen.
- - bpo-26386: Fixed ttk.TreeView selection operations with item id's
- containing spaces.
- - bpo-8637: Honor a pager set by the env var MANPAGER (in preference to one
- set by the env var PAGER).
- Security
- --------
- - bpo-22636: Avoid shell injection problems with ctypes.util.find_library().
- Library
- -------
- - bpo-16182: Fix various functions in the "readline" module to use the
- locale encoding, and fix get_begidx() and get_endidx() to return code
- point indexes.
- - bpo-27392: Add loop.connect_accepted_socket(). Patch by Jim Fulton.
- IDLE
- ----
- - bpo-27477: IDLE search dialogs now use ttk widgets.
- - bpo-27173: Add 'IDLE Modern Unix' to the built-in key sets. Make the
- default key set depend on the platform. Add tests for the changes to the
- config module.
- - bpo-27452: make command line "idle-test> python test_help.py" work.
- __file__ is relative when python is started in the file's directory.
- - bpo-27452: add line counter and crc to IDLE configHandler test dump.
- - bpo-27380: IDLE: add query.py with base Query dialog and ttk widgets.
- Module had subclasses SectionName, ModuleName, and HelpSource, which are
- used to get information from users by configdialog and file =>Load Module.
- Each subclass has itw own validity checks. Using ModuleName allows users
- to edit bad module names instead of starting over. Add tests and delete
- the two files combined into the new one.
- - bpo-27372: Test_idle no longer changes the locale.
- - bpo-27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names.
- - bpo-27245: IDLE: Cleanly delete custom themes and key bindings.
- Previously, when IDLE was started from a console or by import, a cascade
- of warnings was emitted. Patch by Serhiy Storchaka.
- - bpo-24137: Run IDLE, test_idle, and htest with tkinter default root
- disabled. Fix code and tests that fail with this restriction. Fix htests
- to not create a second and redundant root and mainloop.
- - bpo-27310: Fix IDLE.app failure to launch on OS X due to vestigial import.
- C API
- -----
- - bpo-26754: PyUnicode_FSDecoder() accepted a filename argument encoded as
- an iterable of integers. Now only strings and byte-like objects are
- accepted.
- Build
- -----
- - bpo-28066: Fix the logic that searches build directories for generated
- include files when building outside the source tree.
- - bpo-27442: Expose the Android API level that python was built against, in
- sysconfig.get_config_vars() as 'ANDROID_API_LEVEL'.
- - bpo-27434: The interpreter that runs the cross-build, found in PATH, must
- now be of the same feature version (e.g. 3.6) as the source being built.
- - bpo-26930: Update Windows builds to use OpenSSL 1.0.2h.
- - bpo-23968: Rename the platform directory from plat-$(MACHDEP) to
- plat-$(PLATFORM_TRIPLET). Rename the config directory (LIBPL) from
- config-$(LDVERSION) to config-$(LDVERSION)-$(PLATFORM_TRIPLET). Install
- the platform specific _sysconfigdata module into the platform directory
- and rename it to include the ABIFLAGS.
- - Don't use largefile support for GNU/Hurd.
- Tools/Demos
- -----------
- - bpo-27332: Fixed the type of the first argument of module-level functions
- generated by Argument Clinic. Patch by Petr Viktorin.
- - bpo-27418: Fixed Tools/importbench/importbench.py.
- Documentation
- -------------
- - bpo-19489: Moved the search box from the sidebar to the header and footer
- of each page. Patch by Ammar Askar.
- - bpo-27285: Update documentation to reflect the deprecation of ``pyvenv``
- and normalize on the term "virtual environment". Patch by Steve Piercy.
- Tests
- -----
- - bpo-27027: Added test.support.is_android that is True when this is an
- Android build.
- What's New in Python 3.6.0 alpha 2?
- ===================================
- *Release date: 2016-06-13*
- Core and Builtins
- -----------------
- - bpo-27095: Simplified MAKE_FUNCTION and removed MAKE_CLOSURE opcodes.
- Patch by Demur Rumed.
- - bpo-27190: Raise NotSupportedError if sqlite3 is older than 3.3.1. Patch
- by Dave Sawyer.
- - bpo-27286: Fixed compiling BUILD_MAP_UNPACK_WITH_CALL opcode. Calling
- function with generalized unpacking (PEP 448) and conflicting keyword
- names could cause undefined behavior.
- - bpo-27140: Added BUILD_CONST_KEY_MAP opcode.
- - bpo-27186: Add support for os.PathLike objects to open() (part of PEP
- 519).
- - bpo-27066: Fixed SystemError if a custom opener (for open()) returns a
- negative number without setting an exception.
- - bpo-26983: float() now always return an instance of exact float. The
- deprecation warning is emitted if __float__ returns an instance of a
- strict subclass of float. In a future versions of Python this can be an
- error.
- - bpo-27097: Python interpreter is now about 7% faster due to optimized
- instruction decoding. Based on patch by Demur Rumed.
- - bpo-26647: Python interpreter now uses 16-bit wordcode instead of
- bytecode. Patch by Demur Rumed.
- - bpo-23275: Allow assigning to an empty target list in round brackets: () =
- iterable.
- - bpo-27243: Update the __aiter__ protocol: instead of returning an
- awaitable that resolves to an asynchronous iterator, the asynchronous
- iterator should be returned directly. Doing the former will trigger a
- PendingDeprecationWarning.
- Library
- -------
- - Comment out socket (SO_REUSEPORT) and posix (O_SHLOCK, O_EXLOCK) constants
- exposed on the API which are not implemented on GNU/Hurd. They would not
- work at runtime anyway.
- - bpo-27025: Generated names for Tkinter widgets are now more meaningful and
- recognizable.
- - bpo-25455: Fixed crashes in repr of recursive ElementTree.Element and
- functools.partial objects.
- - bpo-27294: Improved repr for Tkinter event objects.
- - bpo-20508: Improve exception message of IPv{4,6}Network.__getitem__. Patch
- by Gareth Rees.
- Security
- --------
- - bpo-26556: Update expat to 2.1.1, fixes CVE-2015-1283.
- - Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by
- Team Oststrom.
- Library
- -------
- - bpo-21386: Implement missing IPv4Address.is_global property. It was
- documented since 07a5610bae9d. Initial patch by Roger Luethi.
- - bpo-27029: Removed deprecated support of universal newlines mode from
- ZipFile.open().
- - bpo-27030: Unknown escapes consisting of ``'\'`` and an ASCII letter in
- regular expressions now are errors. The re.LOCALE flag now can be used
- only with bytes patterns.
- - bpo-27186: Add os.PathLike support to DirEntry (part of PEP 519). Initial
- patch by Jelle Zijlstra.
- - bpo-20900: distutils register command now decodes HTTP responses
- correctly. Initial patch by ingrid.
- - bpo-27186: Add os.PathLike support to pathlib, removing its provisional
- status (part of PEP 519). Initial patch by Dusty Phillips.
- - bpo-27186: Add support for os.PathLike objects to os.fsencode() and
- os.fsdecode() (part of PEP 519).
- - bpo-27186: Introduce os.PathLike and os.fspath() (part of PEP 519).
- - A new version of typing.py provides several new classes and features:
- @overload outside stubs, Reversible, DefaultDict, Text, ContextManager,
- Type[], NewType(), TYPE_CHECKING, and numerous bug fixes (note that some
- of the new features are not yet implemented in mypy or other static
- analyzers). Also classes for PEP 492 (Awaitable, AsyncIterable,
- AsyncIterator) have been added (in fact they made it into 3.5.1 but were
- never mentioned).
- - bpo-25738: Stop http.server.BaseHTTPRequestHandler.send_error() from
- sending a message body for 205 Reset Content. Also, don't send Content
- header fields in responses that don't have a body. Patch by Susumu
- Koshiba.
- - bpo-21313: Fix the "platform" module to tolerate when sys.version contains
- truncated build information.
- Security
- --------
- - bpo-26839: On Linux, :func:`os.urandom` now calls ``getrandom()`` with
- ``GRND_NONBLOCK`` to fall back on reading ``/dev/urandom`` if the urandom
- entropy pool is not initialized yet. Patch written by Colm Buckley.
- Library
- -------
- - bpo-23883: Added missing APIs to __all__ to match the documented APIs for
- the following modules: cgi, mailbox, mimetypes, plistlib and smtpd.
- Patches by Jacek Kołodziej.
- - bpo-27164: In the zlib module, allow decompressing raw Deflate streams
- with a predefined zdict. Based on patch by Xiang Zhang.
- - bpo-24291: Fix wsgiref.simple_server.WSGIRequestHandler to completely
- write data to the client. Previously it could do partial writes and
- truncate data. Also, wsgiref.handler.ServerHandler can now handle stdout
- doing partial writes, but this is deprecated.
- - bpo-21272: Use _sysconfigdata.py to initialize distutils.sysconfig.
- - bpo-19611: :mod:`inspect` now reports the implicit ``.0`` parameters
- generated by the compiler for comprehension and generator expression
- scopes as if they were positional-only parameters called ``implicit0``.
- Patch by Jelle Zijlstra.
- - bpo-26809: Add ``__all__`` to :mod:`string`. Patch by Emanuel Barry.
- - bpo-26373: subprocess.Popen.communicate now correctly ignores
- BrokenPipeError when the child process dies before .communicate() is
- called in more/all circumstances.
- - signal, socket, and ssl module IntEnum constant name lookups now return a
- consistent name for values having multiple names. Ex: signal.Signals(6)
- now refers to itself as signal.SIGALRM rather than flipping between that
- and signal.SIGIOT based on the interpreter's hash randomization seed.
- - bpo-27167: Clarify the subprocess.CalledProcessError error message text
- when the child process died due to a signal.
- - bpo-25931: Don't define socketserver.Forking* names on platforms such as
- Windows that do not support os.fork().
- - bpo-21776: distutils.upload now correctly handles HTTPError. Initial patch
- by Claudiu Popa.
- - bpo-26526: Replace custom parse tree validation in the parser module with
- a simple DFA validator.
- - bpo-27114: Fix SSLContext._load_windows_store_certs fails with
- PermissionError
- - bpo-18383: Avoid creating duplicate filters when using filterwarnings and
- simplefilter. Based on patch by Alex Shkop.
- - bpo-23026: winreg.QueryValueEx() now return an integer for REG_QWORD type.
- - bpo-26741: subprocess.Popen destructor now emits a ResourceWarning warning
- if the child process is still running.
- - bpo-27056: Optimize pickle.load() and pickle.loads(), up to 10% faster to
- deserialize a lot of small objects.
- - bpo-21271: New keyword only parameters in reset_mock call.
- IDLE
- ----
- - bpo-5124: Paste with text selected now replaces the selection on X11. This
- matches how paste works on Windows, Mac, most modern Linux apps, and ttk
- widgets. Original patch by Serhiy Storchaka.
- - bpo-24750: Switch all scrollbars in IDLE to ttk versions. Where needed,
- minimal tests are added to cover changes.
- - bpo-24759: IDLE requires tk 8.5 and availability ttk widgets. Delete now
- unneeded tk version tests and code for older versions. Add test for IDLE
- syntax colorizer.
- - bpo-27239: idlelib.macosx.isXyzTk functions initialize as needed.
- - bpo-27262: move Aqua unbinding code, which enable context menus, to
- macosx.
- - bpo-24759: Make clear in idlelib.idle_test.__init__ that the directory is
- a private implementation of test.test_idle and tool for maintainers.
- - bpo-27196: Stop 'ThemeChanged' warnings when running IDLE tests. These
- persisted after other warnings were suppressed in #20567. Apply Serhiy
- Storchaka's update_idletasks solution to four test files. Record this
- additional advice in idle_test/README.txt
- - bpo-20567: Revise idle_test/README.txt with advice about avoiding tk
- warning messages from tests. Apply advice to several IDLE tests.
- - bpo-24225: Update idlelib/README.txt with new file names and event
- handlers.
- - bpo-27156: Remove obsolete code not used by IDLE.
- - bpo-27117: Make colorizer htest and turtledemo work with dark themes. Move
- code for configuring text widget colors to a new function.
- - bpo-24225: Rename many `idlelib/*.py` and `idle_test/test_*.py` files.
- Edit files to replace old names with new names when the old name referred
- to the module rather than the class it contained. See the issue and IDLE
- section in What's New in 3.6 for more.
- - bpo-26673: When tk reports font size as 0, change to size 10. Such fonts
- on Linux prevented the configuration dialog from opening.
- - bpo-21939: Add test for IDLE's percolator. Original patch by Saimadhav
- Heblikar.
- - bpo-21676: Add test for IDLE's replace dialog. Original patch by Saimadhav
- Heblikar.
- - bpo-18410: Add test for IDLE's search dialog. Original patch by Westley
- Martínez.
- - bpo-21703: Add test for undo delegator. Patch mostly by Saimadhav
- Heblikar .
- - bpo-27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks.
- - bpo-23977: Add more asserts to test_delegator.
- Documentation
- -------------
- - bpo-16484: Change the default PYTHONDOCS URL to "https:", and fix the
- resulting links to use lowercase. Patch by Sean Rodman, test by Kaushik
- Nadikuditi.
- - bpo-24136: Document the new PEP 448 unpacking syntax of 3.5.
- - bpo-22558: Add remaining doc links to source code for Python-coded
- modules. Patch by Yoni Lavi.
- Tests
- -----
- - bpo-25285: regrtest now uses subprocesses when the -j1 command line option
- is used: each test file runs in a fresh child process. Before, the -j1
- option was ignored.
- - bpo-25285: Tools/buildbot/test.bat script now uses -j1 by default to run
- each test file in fresh child process.
- Windows
- -------
- - bpo-27064: The py.exe launcher now defaults to Python 3. The Windows
- launcher ``py.exe`` no longer prefers an installed Python 2 version over
- Python 3 by default when used interactively.
- Build
- -----
- - bpo-27229: Fix the cross-compiling pgen rule for in-tree builds. Patch by
- Xavier de Gaye.
- - bpo-26930: Update OS X 10.5+ 32-bit-only installer to build and link with
- OpenSSL 1.0.2h.
- Windows
- -------
- - bpo-17500: Remove unused and outdated icons. (See also:
- https://github.com/python/pythondotorg/issues/945)
- C API
- -----
- - bpo-27186: Add the PyOS_FSPath() function (part of PEP 519).
- - bpo-26282: PyArg_ParseTupleAndKeywords() now supports positional-only
- parameters.
- Tools/Demos
- -----------
- - bpo-26282: Argument Clinic now supports positional-only and keyword
- parameters in the same function.
- What's New in Python 3.6.0 alpha 1?
- ===================================
- *Release date: 2016-05-16*
- Core and Builtins
- -----------------
- - bpo-20041: Fixed TypeError when frame.f_trace is set to None. Patch by
- Xavier de Gaye.
- - bpo-26168: Fixed possible refleaks in failing Py_BuildValue() with the "N"
- format unit.
- - bpo-26991: Fix possible refleak when creating a function with annotations.
- - bpo-27039: Fixed bytearray.remove() for values greater than 127. Based on
- patch by Joe Jevnik.
- - bpo-23640: int.from_bytes() no longer bypasses constructors for
- subclasses.
- - bpo-27005: Optimized the float.fromhex() class method for exact float. It
- is now 2 times faster.
- - bpo-18531: Single var-keyword argument of dict subtype was passed
- unscathed to the C-defined function. Now it is converted to exact dict.
- - bpo-26811: gc.get_objects() no longer contains a broken tuple with NULL
- pointer.
- - bpo-20120: Use RawConfigParser for .pypirc parsing, removing support for
- interpolation unintentionally added with move to Python 3. Behavior no
- longer does any interpolation in .pypirc files, matching behavior in
- Python 2.7 and Setuptools 19.0.
- - bpo-26249: Memory functions of the :c:func:`PyMem_Malloc` domain
- (:c:data:`PYMEM_DOMAIN_MEM`) now use the :ref:`pymalloc allocator
- <pymalloc>` rather than system :c:func:`malloc`. Applications calling
- :c:func:`PyMem_Malloc` without holding the GIL can now crash: use
- ``PYTHONMALLOC=debug`` environment variable to validate the usage of
- memory allocators in your application.
- - bpo-26802: Optimize function calls only using unpacking like
- ``func(*tuple)`` (no other positional argument, no keyword): avoid copying
- the tuple. Patch written by Joe Jevnik.
- - bpo-26659: Make the builtin slice type support cycle collection.
- - bpo-26718: super.__init__ no longer leaks memory if called multiple times.
- NOTE: A direct call of super.__init__ is not endorsed!
- - bpo-27138: Fix the doc comment for FileFinder.find_spec().
- - bpo-27147: Mention PEP 420 in the importlib docs.
- - bpo-25339: PYTHONIOENCODING now has priority over locale in setting the
- error handler for stdin and stdout.
- - bpo-26494: Fixed crash on iterating exhausting iterators. Affected classes
- are generic sequence iterators, iterators of str, bytes, bytearray, list,
- tuple, set, frozenset, dict, OrderedDict, corresponding views and
- os.scandir() iterator.
- - bpo-26574: Optimize ``bytes.replace(b'', b'.')`` and
- ``bytearray.replace(b'', b'.')``. Patch written by Josh Snider.
- - bpo-26581: If coding cookie is specified multiple times on a line in
- Python source code file, only the first one is taken to account.
- - bpo-19711: Add tests for reloading namespace packages.
- - bpo-21099: Switch applicable importlib tests to use PEP 451 API.
- - bpo-26563: Debug hooks on Python memory allocators now raise a fatal error
- if functions of the :c:func:`PyMem_Malloc` family are called without
- holding the GIL.
- - bpo-26564: On error, the debug hooks on Python memory allocators now use
- the :mod:`tracemalloc` module to get the traceback where a memory block
- was allocated.
- - bpo-26558: The debug hooks on Python memory allocator
- :c:func:`PyObject_Malloc` now detect when functions are called without
- holding the GIL.
- - bpo-26516: Add :envvar:`PYTHONMALLOC` environment variable to set the
- Python memory allocators and/or install debug hooks.
- - bpo-26516: The :c:func:`PyMem_SetupDebugHooks` function can now also be
- used on Python compiled in release mode.
- - bpo-26516: The :envvar:`PYTHONMALLOCSTATS` environment variable can now
- also be used on Python compiled in release mode. It now has no effect if
- set to an empty string.
- - bpo-26516: In debug mode, debug hooks are now also installed on Python
- memory allocators when Python is configured without pymalloc.
- - bpo-26464: Fix str.translate() when string is ASCII and first replacements
- removes character, but next replacement uses a non-ASCII character or a
- string longer than 1 character. Regression introduced in Python 3.5.0.
- - bpo-22836: Ensure exception reports from PyErr_Display() and
- PyErr_WriteUnraisable() are sensible even when formatting them produces
- secondary errors. This affects the reports produced by
- sys.__excepthook__() and when __del__() raises an exception.
- - bpo-26302: Correct behavior to reject comma as a legal character for
- cookie names.
- - bpo-26136: Upgrade the warning when a generator raises StopIteration from
- PendingDeprecationWarning to DeprecationWarning. Patch by Anish Shah.
- - bpo-26204: The compiler now ignores all constant statements: bytes, str,
- int, float, complex, name constants (None, False, True), Ellipsis and
- ast.Constant; not only str and int. For example, ``1.0`` is now ignored in
- ``def f(): 1.0``.
- - bpo-4806: Avoid masking the original TypeError exception when using star
- (``*``) unpacking in function calls. Based on patch by Hagen Fürstenau
- and Daniel Urban.
- - bpo-26146: Add a new kind of AST node: ``ast.Constant``. It can be used by
- external AST optimizers, but the compiler does not emit directly such
- node.
- - bpo-23601: Sped-up allocation of dict key objects by using Python's small
- object allocator. (Contributed by Julian Taylor.)
- - bpo-18018: Import raises ImportError instead of SystemError if a relative
- import is attempted without a known parent package.
- - bpo-25843: When compiling code, don't merge constants if they are equal
- but have a different types. For example, ``f1, f2 = lambda: 1, lambda:
- 1.0`` is now correctly compiled to two different functions: ``f1()``
- returns ``1`` (``int``) and ``f2()`` returns ``1.0`` (``float``), even if
- ``1`` and ``1.0`` are equal.
- - bpo-26107: The format of the ``co_lnotab`` attribute of code objects
- changes to support negative line number delta.
- - bpo-26154: Add a new private _PyThreadState_UncheckedGet() function to get
- the current Python thread state, but don't issue a fatal error if it is
- NULL. This new function must be used instead of accessing directly the
- _PyThreadState_Current variable. The variable is no more exposed since
- Python 3.5.1 to hide the exact implementation of atomic C types, to avoid
- compiler issues.
- - bpo-25791: If __package__ != __spec__.parent or if neither __package__ or
- __spec__ are defined then ImportWarning is raised.
- - bpo-22995: [UPDATE] Comment out the one of the pickleability tests in
- _PyObject_GetState() due to regressions observed in Cython-based projects.
- - bpo-25961: Disallowed null characters in the type name.
- - bpo-25973: Fix segfault when an invalid nonlocal statement binds a name
- starting with two underscores.
- - bpo-22995: Instances of extension types with a state that aren't
- subclasses of list or dict and haven't implemented any pickle-related
- methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__, or
- __getstate__), can no longer be pickled. Including memoryview.
- - bpo-20440: Massive replacing unsafe attribute setting code with special
- macro Py_SETREF.
- - bpo-25766: Special method __bytes__() now works in str subclasses.
- - bpo-25421: __sizeof__ methods of builtin types now use dynamic basic size.
- This allows sys.getsize() to work correctly with their subclasses with
- __slots__ defined.
- - bpo-25709: Fixed problem with in-place string concatenation and utf-8
- cache.
- - bpo-5319: New Py_FinalizeEx() API allowing Python to set an exit status of
- 120 on failure to flush buffered streams.
- - bpo-25485: telnetlib.Telnet is now a context manager.
- - bpo-24097: Fixed crash in object.__reduce__() if slot name is freed inside
- __getattr__.
- - bpo-24731: Fixed crash on converting objects with special methods
- __bytes__, __trunc__, and __float__ returning instances of subclasses of
- bytes, int, and float to subclasses of bytes, int, and float
- correspondingly.
- - bpo-25630: Fix a possible segfault during argument parsing in functions
- that accept filesystem paths.
- - bpo-23564: Fixed a partially broken sanity check in the _posixsubprocess
- internals regarding how fds_to_pass were passed to the child. The bug had
- no actual impact as subprocess.py already avoided it.
- - bpo-25388: Fixed tokenizer crash when processing undecodable source code
- with a null byte.
- - bpo-25462: The hash of the key now is calculated only once in most
- operations in C implementation of OrderedDict.
- - bpo-22995: Default implementation of __reduce__ and __reduce_ex__ now
- rejects builtin types with not defined __new__.
- - bpo-24802: Avoid buffer overreads when int(), float(), compile(), exec()
- and eval() are passed bytes-like objects. These objects are not
- necessarily terminated by a null byte, but the functions assumed they
- were.
- - bpo-25555: Fix parser and AST: fill lineno and col_offset of "arg" node
- when compiling AST from Python objects.
- - bpo-24726: Fixed a crash and leaking NULL in repr() of OrderedDict that
- was mutated by direct calls of dict methods.
- - bpo-25449: Iterating OrderedDict with keys with unstable hash now raises
- KeyError in C implementations as well as in Python implementation.
- - bpo-25395: Fixed crash when highly nested OrderedDict structures were
- garbage collected.
- - bpo-25401: Optimize bytes.fromhex() and bytearray.fromhex(): they are now
- between 2x and 3.5x faster.
- - bpo-25399: Optimize bytearray % args using the new private _PyBytesWriter
- API. Formatting is now between 2.5 and 5 times faster.
- - bpo-25274: sys.setrecursionlimit() now raises a RecursionError if the new
- recursion limit is too low depending at the current recursion depth.
- Modify also the "lower-water mark" formula to make it monotonic. This mark
- is used to decide when the overflowed flag of the thread state is reset.
- - bpo-24402: Fix input() to prompt to the redirected stdout when
- sys.stdout.fileno() fails.
- - bpo-25349: Optimize bytes % args using the new private _PyBytesWriter API.
- Formatting is now up to 2 times faster.
- - bpo-24806: Prevent builtin types that are not allowed to be subclassed
- from being subclassed through multiple inheritance.
- - bpo-25301: The UTF-8 decoder is now up to 15 times as fast for error
- handlers: ``ignore``, ``replace`` and ``surrogateescape``.
- - bpo-24848: Fixed a number of bugs in UTF-7 decoding of misformed data.
- - bpo-25267: The UTF-8 encoder is now up to 75 times as fast for error
- handlers: ``ignore``, ``replace``, ``surrogateescape``, ``surrogatepass``.
- Patch co-written with Serhiy Storchaka.
- - bpo-25280: Import trace messages emitted in verbose (-v) mode are no
- longer formatted twice.
- - bpo-25227: Optimize ASCII and latin1 encoders with the ``surrogateescape``
- error handler: the encoders are now up to 3 times as fast. Initial patch
- written by Serhiy Storchaka.
- - bpo-25003: On Solaris 11.3 or newer, os.urandom() now uses the getrandom()
- function instead of the getentropy() function. The getentropy() function
- is blocking to generate very good quality entropy, os.urandom() doesn't
- need such high-quality entropy.
- - bpo-9232: Modify Python's grammar to allow trailing commas in the argument
- list of a function declaration. For example, "def f(\*, a = 3,): pass" is
- now legal. Patch from Mark Dickinson.
- - bpo-24965: Implement PEP 498 "Literal String Interpolation". This allows
- you to embed expressions inside f-strings, which are converted to normal
- strings at run time. Given x=3, then f'value={x}' == 'value=3'. Patch by
- Eric V. Smith.
- - bpo-26478: Fix semantic bugs when using binary operators with dictionary
- views and tuples.
- - bpo-26171: Fix possible integer overflow and heap corruption in
- zipimporter.get_data().
- - bpo-25660: Fix TAB key behaviour in REPL with readline.
- - bpo-26288: Optimize PyLong_AsDouble.
- - bpo-26289: Optimize floor and modulo division for single-digit longs.
- Microbenchmarks show 2-2.5x improvement. Built-in 'divmod' function is
- now also ~10% faster. (See also: bpo-26315)
- - bpo-25887: Raise a RuntimeError when a coroutine object is awaited more
- than once.
- Library
- -------
- - bpo-27057: Fix os.set_inheritable() on Android, ioctl() is blocked by
- SELinux and fails with EACCESS. The function now falls back to fcntl().
- Patch written by Michał Bednarski.
- - bpo-27014: Fix infinite recursion using typing.py. Thanks to Kalle Tuure!
- - bpo-27031: Removed dummy methods in Tkinter widget classes: tk_menuBar()
- and tk_bindForTraversal().
- - bpo-14132: Fix urllib.request redirect handling when the target only has a
- query string. Original fix by Ján Janech.
- - bpo-17214: The "urllib.request" module now percent-encodes non-ASCII bytes
- found in redirect target URLs. Some servers send Location header fields
- with non-ASCII bytes, but "http.client" requires the request target to be
- ASCII-encodable, otherwise a UnicodeEncodeError is raised. Based on patch
- by Christian Heimes.
- - bpo-27033: The default value of the decode_data parameter for
- smtpd.SMTPChannel and smtpd.SMTPServer constructors is changed to False.
- - bpo-27034: Removed deprecated class asynchat.fifo.
- - bpo-26870: Added readline.set_auto_history(), which can stop entries being
- automatically added to the history list. Based on patch by Tyler
- Crompton.
- - bpo-26039: zipfile.ZipFile.open() can now be used to write data into a ZIP
- file, as well as for extracting data. Patch by Thomas Kluyver.
- - bpo-26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch
- contributed by Chi Hsuan Yen.
- - bpo-22274: In the subprocess module, allow stderr to be redirected to
- stdout even when stdout is not redirected. Patch by Akira Li.
- - bpo-26807: mock_open 'files' no longer error on readline at end of file.
- Patch from Yolanda Robla.
- - bpo-25745: Fixed leaking a userptr in curses panel destructor.
- - bpo-26977: Removed unnecessary, and ignored, call to sum of squares helper
- in statistics.pvariance.
- - bpo-26002: Use bisect in statistics.median instead of a linear search.
- Patch by Upendra Kuma.
- - bpo-25974: Make use of new Decimal.as_integer_ratio() method in statistics
- module. Patch by Stefan Krah.
- - bpo-26996: Add secrets module as described in PEP 506.
- - bpo-26881: The modulefinder module now supports extended opcode arguments.
- - bpo-23815: Fixed crashes related to directly created instances of types in
- _tkinter and curses.panel modules.
- - bpo-17765: weakref.ref() no longer silently ignores keyword arguments.
- Patch by Georg Brandl.
- - bpo-26873: xmlrpc now raises ResponseError on unsupported type tags
- instead of silently return incorrect result.
- - bpo-26915: The __contains__ methods in the collections ABCs now check for
- identity before checking equality. This better matches the behavior of
- the concrete classes, allows sensible handling of NaNs, and makes it
- easier to reason about container invariants.
- - bpo-26711: Fixed the comparison of plistlib.Data with other types.
- - bpo-24114: Fix an uninitialized variable in `ctypes.util`.
- The bug only occurs on SunOS when the ctypes implementation searches for
- the `crle` program. Patch by Xiang Zhang. Tested on SunOS by Kees Bos.
- - bpo-26864: In urllib.request, change the proxy bypass host checking
- against no_proxy to be case-insensitive, and to not match unrelated host
- names that happen to have a bypassed hostname as a suffix. Patch by Xiang
- Zhang.
- - bpo-24902: Print server URL on http.server startup. Initial patch by
- Felix Kaiser.
- - bpo-25788: fileinput.hook_encoded() now supports an "errors" argument for
- passing to open. Original patch by Joseph Hackman.
- - bpo-26634: recursive_repr() now sets __qualname__ of wrapper. Patch by
- Xiang Zhang.
- - bpo-26804: urllib.request will prefer lower_case proxy environment
- variables over UPPER_CASE or Mixed_Case ones. Patch contributed by
- Hans-Peter Jansen.
- - bpo-26837: assertSequenceEqual() now correctly outputs non-stringified
- differing items (like bytes in the -b mode). This affects
- assertListEqual() and assertTupleEqual().
- - bpo-26041: Remove "will be removed in Python 3.7" from deprecation
- messages of platform.dist() and platform.linux_distribution(). Patch by
- Kumaripaba Miyurusara Athukorala.
- - bpo-26822: itemgetter, attrgetter and methodcaller objects no longer
- silently ignore keyword arguments.
- - bpo-26733: Disassembling a class now disassembles class and static
- methods. Patch by Xiang Zhang.
- - bpo-26801: Fix error handling in :func:`shutil.get_terminal_size`, catch
- :exc:`AttributeError` instead of :exc:`NameError`. Patch written by
- Emanuel Barry.
- - bpo-24838: tarfile's ustar and gnu formats now correctly calculate name
- and link field limits for multibyte character encodings like utf-8.
- Security
- --------
- - bpo-26657: Fix directory traversal vulnerability with http.server on
- Windows. This fixes a regression that was introduced in 3.3.4rc1 and
- 3.4.0rc1. Based on patch by Philipp Hagemeister.
- Library
- -------
- - bpo-26717: Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by
- Anthony Sottile.
- - bpo-26782: Add STARTUPINFO to subprocess.__all__ on Windows.
- - bpo-26404: Add context manager to socketserver. Patch by Aviv Palivoda.
- - bpo-26735: Fix :func:`os.urandom` on Solaris 11.3 and newer when reading
- more than 1,024 bytes: call ``getrandom()`` multiple times with a limit of
- 1024 bytes per call.
- - bpo-26585: Eliminate http.server._quote_html() and use
- html.escape(quote=False). Patch by Xiang Zhang.
- - bpo-26685: Raise OSError if closing a socket fails.
- - bpo-16329: Add .webm to mimetypes.types_map. Patch by Giampaolo Rodola'.
- - bpo-13952: Add .csv to mimetypes.types_map. Patch by Geoff Wilson.
- - bpo-26587: the site module now allows .pth files to specify files to be
- added to sys.path (e.g. zip files).
- - bpo-25609: Introduce contextlib.AbstractContextManager and
- typing.ContextManager.
- - bpo-26709: Fixed Y2038 problem in loading binary PLists.
- - bpo-23735: Handle terminal resizing with Readline 6.3+ by installing our
- own SIGWINCH handler. Patch by Eric Price.
- - bpo-25951: Change SSLSocket.sendall() to return None, as explicitly
- documented for plain socket objects. Patch by Aviv Palivoda.
- - bpo-26586: In http.server, respond with "413 Request header fields too
- large" if there are too many header fields to parse, rather than killing
- the connection and raising an unhandled exception. Patch by Xiang Zhang.
- - bpo-26676: Added missing XMLPullParser to ElementTree.__all__.
- - bpo-22854: Change BufferedReader.writable() and BufferedWriter.readable()
- to always return False.
- - bpo-26492: Exhausted iterator of array.array now conforms with the
- behavior of iterators of other mutable sequences: it lefts exhausted even
- if iterated array is extended.
- - bpo-26641: doctest.DocFileTest and doctest.testfile() now support packages
- (module splitted into multiple directories) for the package parameter.
- - bpo-25195: Fix a regression in mock.MagicMock. _Call is a subclass of
- tuple (changeset 3603bae63c13 only works for classes) so we need to
- implement __ne__ ourselves. Patch by Andrew Plummer.
- - bpo-26644: Raise ValueError rather than SystemError when a negative length
- is passed to SSLSocket.recv() or read().
- - bpo-23804: Fix SSL recv(0) and read(0) methods to return zero bytes
- instead of up to 1024.
- - bpo-26616: Fixed a bug in datetime.astimezone() method.
- - bpo-26637: The :mod:`importlib` module now emits an :exc:`ImportError`
- rather than a :exc:`TypeError` if :func:`__import__` is tried during the
- Python shutdown process but :data:`sys.path` is already cleared (set to
- ``None``).
- - bpo-21925: :func:`warnings.formatwarning` now catches exceptions when
- calling :func:`linecache.getline` and
- :func:`tracemalloc.get_object_traceback` to be able to log
- :exc:`ResourceWarning` emitted late during the Python shutdown process.
- - bpo-23848: On Windows, faulthandler.enable() now also installs an
- exception handler to dump the traceback of all Python threads on any
- Windows exception, not only on UNIX signals (SIGSEGV, SIGFPE, SIGABRT).
- - bpo-26530: Add C functions :c:func:`_PyTraceMalloc_Track` and
- :c:func:`_PyTraceMalloc_Untrack` to track memory blocks using the
- :mod:`tracemalloc` module. Add :c:func:`_PyTraceMalloc_GetTraceback` to
- get the traceback of an object.
- - bpo-26588: The _tracemalloc now supports tracing memory allocations of
- multiple address spaces (domains).
- - bpo-24266: Ctrl+C during Readline history search now cancels the search
- mode when compiled with Readline 7.
- - bpo-26590: Implement a safe finalizer for the _socket.socket type. It now
- releases the GIL to close the socket.
- - bpo-18787: spwd.getspnam() now raises a PermissionError if the user
- doesn't have privileges.
- - bpo-26560: Avoid potential ValueError in BaseHandler.start_response.
- Initial patch by Peter Inglesby.
- - bpo-26567: Add a new function :c:func:`PyErr_ResourceWarning` function to
- pass the destroyed object. Add a *source* attribute to
- :class:`warnings.WarningMessage`. Add warnings._showwarnmsg() which uses
- tracemalloc to get the traceback where source object was allocated.
- Security
- --------
- - bpo-26313: ssl.py _load_windows_store_certs fails if windows cert store is
- empty. Patch by Baji.
- Library
- -------
- - bpo-26569: Fix :func:`pyclbr.readmodule` and :func:`pyclbr.readmodule_ex`
- to support importing packages.
- - bpo-26499: Account for remaining Content-Length in HTTPResponse.readline()
- and read1(). Based on patch by Silent Ghost. Also document that
- HTTPResponse now supports these methods.
- - bpo-25320: Handle sockets in directories unittest discovery is scanning.
- Patch from Victor van den Elzen.
- - bpo-16181: cookiejar.http2time() now returns None if year is higher than
- datetime.MAXYEAR.
- - bpo-26513: Fixes platform module detection of Windows Server
- - bpo-23718: Fixed parsing time in week 0 before Jan 1. Original patch by
- Tamás Bence Gedai.
- - bpo-26323: Add Mock.assert_called() and Mock.assert_called_once() methods
- to unittest.mock. Patch written by Amit Saha.
- - bpo-20589: Invoking Path.owner() and Path.group() on Windows now raise
- NotImplementedError instead of ImportError.
- - bpo-26177: Fixed the keys() method for Canvas and Scrollbar widgets.
- - bpo-15068: Got rid of excessive buffering in fileinput. The bufsize
- parameter is now deprecated and ignored.
- - bpo-19475: Added an optional argument timespec to the datetime isoformat()
- method to choose the precision of the time component.
- - bpo-2202: Fix UnboundLocalError in
- AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu
- Dupuy.
- - bpo-26167: Minimized overhead in copy.copy() and copy.deepcopy().
- Optimized copying and deepcopying bytearrays, NotImplemented, slices,
- short lists, tuples, dicts, sets.
- - bpo-25718: Fixed pickling and copying the accumulate() iterator with total
- is None.
- - bpo-26475: Fixed debugging output for regular expressions with the (?x)
- flag.
- - bpo-26482: Allowed pickling recursive dequeues.
- - bpo-26335: Make mmap.write() return the number of bytes written like other
- write methods. Patch by Jakub Stasiak.
- - bpo-26457: Fixed the subnets() methods in IP network classes for the case
- when resulting prefix length is equal to maximal prefix length. Based on
- patch by Xiang Zhang.
- - bpo-26385: Remove the file if the internal open() call in
- NamedTemporaryFile() fails. Patch by Silent Ghost.
- - bpo-26402: Fix XML-RPC client to retry when the server shuts down a
- persistent connection. This was a regression related to the new
- http.client.RemoteDisconnected exception in 3.5.0a4.
- - bpo-25913: Leading ``<~`` is optional now in base64.a85decode() with
- adobe=True. Patch by Swati Jaiswal.
- - bpo-26186: Remove an invalid type check in importlib.util.LazyLoader.
- - bpo-26367: importlib.__import__() raises ImportError like
- builtins.__import__() when ``level`` is specified but without an
- accompanying package specified.
- - bpo-26309: In the "socketserver" module, shut down the request (closing
- the connected socket) when verify_request() returns false. Patch by Aviv
- Palivoda.
- - bpo-23430: Change the socketserver module to only catch exceptions raised
- from a request handler that are derived from Exception (instead of
- BaseException). Therefore SystemExit and KeyboardInterrupt no longer
- trigger the handle_error() method, and will now to stop a single-threaded
- server.
- Security
- --------
- - bpo-25939: On Windows open the cert store readonly in
- ssl.enum_certificates.
- Library
- -------
- - bpo-25995: os.walk() no longer uses FDs proportional to the tree depth.
- - bpo-25994: Added the close() method and the support of the context manager
- protocol for the os.scandir() iterator.
- - bpo-23992: multiprocessing: make MapResult not fail-fast upon exception.
- - bpo-26243: Support keyword arguments to zlib.compress(). Patch by Aviv
- Palivoda.
- - bpo-26117: The os.scandir() iterator now closes file descriptor not only
- when the iteration is finished, but when it was failed with error.
- - bpo-25949: __dict__ for an OrderedDict instance is now created only when
- needed.
- - bpo-25911: Restored support of bytes paths in os.walk() on Windows.
- - bpo-26045: Add UTF-8 suggestion to error message when posting a
- non-Latin-1 string with http.client.
- - bpo-26039: Added zipfile.ZipInfo.from_file() and zipinfo.ZipInfo.is_dir().
- Patch by Thomas Kluyver.
- - bpo-12923: Reset FancyURLopener's redirect counter even if there is an
- exception. Based on patches by Brian Brazil and Daniel Rocco.
- - bpo-25945: Fixed a crash when unpickle the functools.partial object with
- wrong state. Fixed a leak in failed functools.partial constructor. "args"
- and "keywords" attributes of functools.partial have now always types tuple
- and dict correspondingly.
- - bpo-26202: copy.deepcopy() now correctly copies range() objects with
- non-atomic attributes.
- - bpo-23076: Path.glob() now raises a ValueError if it's called with an
- invalid pattern. Patch by Thomas Nyberg.
- - bpo-19883: Fixed possible integer overflows in zipimport.
- - bpo-26227: On Windows, getnameinfo(), gethostbyaddr() and
- gethostbyname_ex() functions of the socket module now decode the hostname
- from the ANSI code page rather than UTF-8.
- - bpo-26099: The site module now writes an error into stderr if
- sitecustomize module can be imported but executing the module raise an
- ImportError. Same change for usercustomize.
- - bpo-26147: xmlrpc now works with strings not encodable with used non-UTF-8
- encoding.
- - bpo-25935: Garbage collector now breaks reference loops with OrderedDict.
- - bpo-16620: Fixed AttributeError in msilib.Directory.glob().
- - bpo-26013: Added compatibility with broken protocol 2 pickles created in
- old Python 3 versions (3.4.3 and lower).
- - bpo-26129: Deprecated accepting non-integers in grp.getgrgid().
- - bpo-25850: Use cross-compilation by default for 64-bit Windows.
- - bpo-25822: Add docstrings to the fields of urllib.parse results. Patch
- contributed by Swati Jaiswal.
- - bpo-22642: Convert trace module option parsing mechanism to argparse.
- Patch contributed by SilentGhost.
- - bpo-24705: Fix sysconfig._parse_makefile not expanding ${} vars appearing
- before $() vars.
- - bpo-26069: Remove the deprecated apis in the trace module.
- - bpo-22138: Fix mock.patch behavior when patching descriptors. Restore
- original values after patching. Patch contributed by Sean McCully.
- - bpo-25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode
- option if it is safe to do so.
- - bpo-26012: Don't traverse into symlinks for ``**`` pattern in
- pathlib.Path.[r]glob().
- - bpo-24120: Ignore PermissionError when traversing a tree with
- pathlib.Path.[r]glob(). Patch by Ulrich Petri.
- - bpo-21815: Accept ] characters in the data portion of imap responses, in
- order to handle the flags with square brackets accepted and produced by
- servers such as gmail.
- - bpo-25447: fileinput now uses sys.stdin as-is if it does not have a buffer
- attribute (restores backward compatibility).
- - bpo-25971: Optimized creating Fractions from floats by 2 times and from
- Decimals by 3 times.
- - bpo-25802: Document as deprecated the remaining implementations of
- importlib.abc.Loader.load_module().
- - bpo-25928: Add Decimal.as_integer_ratio().
- - bpo-25447: Copying the lru_cache() wrapper object now always works,
- independently from the type of the wrapped object (by returning the
- original object unchanged).
- - bpo-25768: Have the functions in compileall return booleans instead of
- ints and add proper documentation and tests for the return values.
- - bpo-24103: Fixed possible use after free in ElementTree.XMLPullParser.
- - bpo-25860: os.fwalk() no longer skips remaining directories when error
- occurs. Original patch by Samson Lee.
- - bpo-25914: Fixed and simplified OrderedDict.__sizeof__.
- - bpo-25869: Optimized deepcopying ElementTree; it is now 20 times faster.
- - bpo-25873: Optimized iterating ElementTree. Iterating elements
- Element.iter() is now 40% faster, iterating text Element.itertext() is now
- up to 2.5 times faster.
- - bpo-25902: Fixed various refcount issues in ElementTree iteration.
- - bpo-22227: The TarFile iterator is reimplemented using generator. This
- implementation is simpler that using class.
- - bpo-25638: Optimized ElementTree.iterparse(); it is now 2x faster.
- Optimized ElementTree parsing; it is now 10% faster.
- - bpo-25761: Improved detecting errors in broken pickle data.
- - bpo-25717: Restore the previous behaviour of tolerating most fstat()
- errors when opening files. This was a regression in 3.5a1, and stopped
- anonymous temporary files from working in special cases.
- - bpo-24903: Fix regression in number of arguments compileall accepts when
- '-d' is specified. The check on the number of arguments has been dropped
- completely as it never worked correctly anyway.
- - bpo-25764: In the subprocess module, preserve any exception caused by
- fork() failure when preexec_fn is used.
- - bpo-25771: Tweak the exception message for importlib.util.resolve_name()
- when 'package' isn't specified but necessary.
- - bpo-6478: _strptime's regexp cache now is reset after changing timezone
- with time.tzset().
- - bpo-14285: When executing a package with the "python -m package" option,
- and package initialization fails, a proper traceback is now reported. The
- "runpy" module now lets exceptions from package initialization pass back
- to the caller, rather than raising ImportError.
- - bpo-19771: Also in runpy and the "-m" option, omit the irrelevant message
- ". . . is a package and cannot be directly executed" if the package could
- not even be initialized (e.g. due to a bad ``*.pyc`` file).
- - bpo-25177: Fixed problem with the mean of very small and very large
- numbers. As a side effect, statistics.mean and statistics.variance should
- be significantly faster.
- - bpo-25718: Fixed copying object with state with boolean value is false.
- - bpo-10131: Fixed deep copying of minidom documents. Based on patch by
- Marian Ganisin.
- - bpo-7990: dir() on ElementTree.Element now lists properties: "tag",
- "text", "tail" and "attrib". Original patch by Santoso Wijaya.
- - bpo-25725: Fixed a reference leak in pickle.loads() when unpickling
- invalid data including tuple instructions.
- - bpo-25663: In the Readline completer, avoid listing duplicate global
- names, and search the global namespace before searching builtins.
- - bpo-25688: Fixed file leak in ElementTree.iterparse() raising an error.
- - bpo-23914: Fixed SystemError raised by unpickler on broken pickle data.
- - bpo-25691: Fixed crash on deleting ElementTree.Element attributes.
- - bpo-25624: ZipFile now always writes a ZIP_STORED header for directory
- entries. Patch by Dingyuan Wang.
- - bpo-25626: Change three zlib functions to accept sizes that fit in
- Py_ssize_t, but internally cap those sizes to UINT_MAX. This resolves a
- regression in 3.5 where GzipFile.read() failed to read chunks larger than
- 2 or 4 GiB. The change affects the zlib.Decompress.decompress()
- max_length parameter, the zlib.decompress() bufsize parameter, and the
- zlib.Decompress.flush() length parameter.
- - bpo-25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True)
- when the OS gives priority to errors such as EACCES over EEXIST.
- - bpo-25593: Change semantics of EventLoop.stop() in asyncio.
- - bpo-6973: When we know a subprocess.Popen process has died, do not allow
- the send_signal(), terminate(), or kill() methods to do anything as they
- could potentially signal a different process.
- - bpo-23883: Added missing APIs to __all__ to match the documented APIs for
- the following modules: calendar, csv, enum, fileinput, ftplib, logging,
- optparse, tarfile, threading and wave. Also added a
- test.support.check__all__() helper. Patches by Jacek Kołodziej, Mauro S.
- M. Rodrigues and Joel Taddei.
- - bpo-25590: In the Readline completer, only call getattr() once per
- attribute. Also complete names of attributes such as properties and slots
- which are listed by dir() but not yet created on an instance.
- - bpo-25498: Fix a crash when garbage-collecting ctypes objects created by
- wrapping a memoryview. This was a regression made in 3.5a1. Based on
- patch by Eryksun.
- - bpo-25584: Added "escape" to the __all__ list in the glob module.
- - bpo-25584: Fixed recursive glob() with patterns starting with ``**``.
- - bpo-25446: Fix regression in smtplib's AUTH LOGIN support.
- - bpo-18010: Fix the pydoc web server's module search function to handle
- exceptions from importing packages.
- - bpo-25554: Got rid of circular references in regular expression parsing.
- - bpo-18973: Command-line interface of the calendar module now uses argparse
- instead of optparse.
- - bpo-25510: fileinput.FileInput.readline() now returns b'' instead of '' at
- the end if the FileInput was opened with binary mode. Patch by Ryosuke
- Ito.
- - bpo-25503: Fixed inspect.getdoc() for inherited docstrings of properties.
- Original patch by John Mark Vandenberg.
- - bpo-25515: Always use os.urandom as a source of randomness in uuid.uuid4.
- - bpo-21827: Fixed textwrap.dedent() for the case when largest common
- whitespace is a substring of smallest leading whitespace. Based on patch
- by Robert Li.
- - bpo-25447: The lru_cache() wrapper objects now can be copied and pickled
- (by returning the original object unchanged).
- - bpo-25390: typing: Don't crash on Union[str, Pattern].
- - bpo-25441: asyncio: Raise error from drain() when socket is closed.
- - bpo-25410: Cleaned up and fixed minor bugs in C implementation of
- OrderedDict.
- - bpo-25411: Improved Unicode support in SMTPHandler through better use of
- the email package. Thanks to user simon04 for the patch.
- - Move the imp module from a PendingDeprecationWarning to
- DeprecationWarning.
- - bpo-25407: Remove mentions of the formatter module being removed in Python
- 3.6.
- - bpo-25406: Fixed a bug in C implementation of OrderedDict.move_to_end()
- that caused segmentation fault or hang in iterating after moving several
- items to the start of ordered dict.
- - bpo-25382: pickletools.dis() now outputs implicit memo index for the
- MEMOIZE opcode.
- - bpo-25357: Add an optional newline parameter to binascii.b2a_base64().
- base64.b64encode() uses it to avoid a memory copy.
- - bpo-24164: Objects that need calling ``__new__`` with keyword arguments,
- can now be pickled using pickle protocols older than protocol version 4.
- - bpo-25364: zipfile now works in threads disabled builds.
- - bpo-25328: smtpd's SMTPChannel now correctly raises a ValueError if both
- decode_data and enable_SMTPUTF8 are set to true.
- - bpo-16099: RobotFileParser now supports Crawl-delay and Request-rate
- extensions. Patch by Nikolay Bogoychev.
- - bpo-25316: distutils raises OSError instead of DistutilsPlatformError when
- MSVC is not installed.
- - bpo-25380: Fixed protocol for the STACK_GLOBAL opcode in
- pickletools.opcodes.
- - bpo-23972: Updates asyncio datagram create method allowing reuseport and
- reuseaddr socket options to be set prior to binding the socket. Mirroring
- the existing asyncio create_server method the reuseaddr option for
- datagram sockets defaults to True if the O/S is 'posix' (except if the
- platform is Cygwin). Patch by Chris Laws.
- - bpo-25304: Add asyncio.run_coroutine_threadsafe(). This lets you submit a
- coroutine to a loop from another thread, returning a
- concurrent.futures.Future. By Vincent Michel.
- - bpo-25232: Fix CGIRequestHandler to split the query from the URL at the
- first question mark (?) rather than the last. Patch from Xiang Zhang.
- - bpo-24657: Prevent CGIRequestHandler from collapsing slashes in the query
- part of the URL as if it were a path. Patch from Xiang Zhang.
- - bpo-25287: Don't add crypt.METHOD_CRYPT to crypt.methods if it's not
- supported. Check if it is supported, it may not be supported on OpenBSD
- for example.
- - bpo-23600: Default implementation of tzinfo.fromutc() was returning wrong
- results in some cases.
- - bpo-25203: Failed readline.set_completer_delims() no longer left the
- module in inconsistent state.
- - bpo-25011: rlcompleter now omits private and special attribute names
- unless the prefix starts with underscores.
- - bpo-25209: rlcompleter now can add a space or a colon after completed
- keyword.
- - bpo-22241: timezone.utc name is now plain 'UTC', not 'UTC-00:00'.
- - bpo-23517: fromtimestamp() and utcfromtimestamp() methods of
- datetime.datetime now round microseconds to nearest with ties going to
- nearest even integer (ROUND_HALF_EVEN), as round(float), instead of
- rounding towards -Infinity (ROUND_FLOOR).
- - bpo-23552: Timeit now warns when there is substantial (4x) variance
- between best and worst times. Patch from Serhiy Storchaka.
- - bpo-24633: site-packages/README -> README.txt.
- - bpo-24879: help() and pydoc can now list named tuple fields in the order
- they were defined rather than alphabetically. The ordering is determined
- by the _fields attribute if present.
- - bpo-24874: Improve speed of itertools.cycle() and make its pickle more
- compact.
- - Fix crash in itertools.cycle.__setstate__() when the first argument wasn't
- a list.
- - bpo-20059: urllib.parse raises ValueError on all invalid ports. Patch by
- Martin Panter.
- - bpo-24360: Improve __repr__ of argparse.Namespace() for invalid
- identifiers. Patch by Matthias Bussonnier.
- - bpo-23426: run_setup was broken in distutils. Patch from Alexander
- Belopolsky.
- - bpo-13938: 2to3 converts StringTypes to a tuple. Patch from Mark Hammond.
- - bpo-2091: open() accepted a 'U' mode string containing '+', but 'U' can
- only be used with 'r'. Patch from Jeff Balogh and John O'Connor.
- - bpo-8585: improved tests for zipimporter2. Patch from Mark Lawrence.
- - bpo-18622: unittest.mock.mock_open().reset_mock would recurse infinitely.
- Patch from Nicola Palumbo and Laurent De Buyst.
- - bpo-24426: Fast searching optimization in regular expressions now works
- for patterns that starts with capturing groups. Fast searching
- optimization now can't be disabled at compile time.
- - bpo-23661: unittest.mock side_effects can now be exceptions again. This
- was a regression vs Python 3.4. Patch from Ignacio Rossi
- - bpo-13248: Remove deprecated inspect.getmoduleinfo function.
- - bpo-25578: Fix (another) memory leak in SSLSocket.getpeercer().
- - bpo-25530: Disable the vulnerable SSLv3 protocol by default when creating
- ssl.SSLContext.
- - bpo-25569: Fix memory leak in SSLSocket.getpeercert().
- - bpo-25471: Sockets returned from accept() shouldn't appear to be
- nonblocking.
- - bpo-25319: When threading.Event is reinitialized, the underlying condition
- should use a regular lock rather than a recursive lock.
- - Skip getaddrinfo if host is already resolved. Patch by A. Jesse Jiryu
- Davis.
- - bpo-26050: Add asyncio.StreamReader.readuntil() method. Patch by Марк
- Коренберг.
- - bpo-25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X
- versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis.
- - bpo-26406: Avoid unnecessary serialization of getaddrinfo(3) calls on
- current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis.
- - bpo-26848: Fix asyncio/subprocess.communicate() to handle empty input.
- Patch by Jack O'Connor.
- - bpo-27040: Add loop.get_exception_handler method
- - bpo-27041: asyncio: Add loop.create_future method
- IDLE
- ----
- - bpo-20640: Add tests for idlelib.configHelpSourceEdit. Patch by Saimadhav
- Heblikar.
- - In the 'IDLE-console differences' section of the IDLE doc, clarify how
- running with IDLE affects sys.modules and the standard streams.
- - bpo-25507: fix incorrect change in IOBinding that prevented printing.
- Augment IOBinding htest to include all major IOBinding functions.
- - bpo-25905: Revert unwanted conversion of ' to ’ RIGHT SINGLE QUOTATION
- MARK in README.txt and open this and NEWS.txt with 'ascii'. Re-encode
- CREDITS.txt to utf-8 and open it with 'utf-8'.
- - bpo-15348: Stop the debugger engine (normally in a user process) before
- closing the debugger window (running in the IDLE process). This prevents
- the RuntimeErrors that were being caught and ignored.
- - bpo-24455: Prevent IDLE from hanging when a) closing the shell while the
- debugger is active (15347); b) closing the debugger with the [X] button
- (15348); and c) activating the debugger when already active (24455). The
- patch by Mark Roseman does this by making two changes. 1. Suspend and
- resume the gui.interaction method with the tcl vwait mechanism intended
- for this purpose (instead of root.mainloop & .quit). 2. In gui.run, allow
- any existing interaction to terminate first.
- - Change 'The program' to 'Your program' in an IDLE 'kill program?' message
- to make it clearer that the program referred to is the currently running
- user program, not IDLE itself.
- - bpo-24750: Improve the appearance of the IDLE editor window status bar.
- Patch by Mark Roseman.
- - bpo-25313: Change the handling of new built-in text color themes to better
- address the compatibility problem introduced by the addition of IDLE Dark.
- Consistently use the revised idleConf.CurrentTheme everywhere in idlelib.
- - bpo-24782: Extension configuration is now a tab in the IDLE Preferences
- dialog rather than a separate dialog. The former tabs are now a sorted
- list. Patch by Mark Roseman.
- - bpo-22726: Re-activate the config dialog help button with some content
- about the other buttons and the new IDLE Dark theme.
- - bpo-24820: IDLE now has an 'IDLE Dark' built-in text color theme. It is
- more or less IDLE Classic inverted, with a cobalt blue background.
- Strings, comments, keywords, ... are still green, red, orange, ... . To
- use it with IDLEs released before November 2015, hit the 'Save as New
- Custom Theme' button and enter a new name, such as 'Custom Dark'. The
- custom theme will work with any IDLE release, and can be modified.
- - bpo-25224: README.txt is now an idlelib index for IDLE developers and
- curious users. The previous user content is now in the IDLE doc chapter.
- 'IDLE' now means 'Integrated Development and Learning Environment'.
- - bpo-24820: Users can now set breakpoint colors in Settings -> Custom
- Highlighting. Original patch by Mark Roseman.
- - bpo-24972: Inactive selection background now matches active selection
- background, as configured by users, on all systems. Found items are now
- always highlighted on Windows. Initial patch by Mark Roseman.
- - bpo-24570: Idle: make calltip and completion boxes appear on Macs affected
- by a tk regression. Initial patch by Mark Roseman.
- - bpo-24988: Idle ScrolledList context menus (used in debugger) now work on
- Mac Aqua. Patch by Mark Roseman.
- - bpo-24801: Make right-click for context menu work on Mac Aqua. Patch by
- Mark Roseman.
- - bpo-25173: Associate tkinter messageboxes with a specific widget. For Mac
- OSX, make them a 'sheet'. Patch by Mark Roseman.
- - bpo-25198: Enhance the initial html viewer now used for Idle Help.
- Properly indent fixed-pitch text (patch by Mark Roseman). Give code
- snippet a very Sphinx-like light blueish-gray background. Re-use initial
- width and height set by users for shell and editor. When the Table of
- Contents (TOC) menu is used, put the section header at the top of the
- screen.
- - bpo-25225: Condense and rewrite Idle doc section on text colors.
- - bpo-21995: Explain some differences between IDLE and console Python.
- - bpo-22820: Explain need for *print* when running file from Idle editor.
- - bpo-25224: Doc: augment Idle feature list and no-subprocess section.
- - bpo-25219: Update doc for Idle command line options. Some were missing and
- notes were not correct.
- - bpo-24861: Most of idlelib is private and subject to change. Use
- idleib.idle.* to start Idle. See idlelib.__init__.__doc__.
- - bpo-25199: Idle: add synchronization comments for future maintainers.
- - bpo-16893: Replace help.txt with help.html for Idle doc display. The new
- idlelib/help.html is rstripped Doc/build/html/library/idle.html. It looks
- better than help.txt and will better document Idle as released. The
- tkinter html viewer that works for this file was written by Rose Roseman.
- The now unused EditorWindow.HelpDialog class and helt.txt file are
- deprecated.
- - bpo-24199: Deprecate unused idlelib.idlever with possible removal in 3.6.
- - bpo-24790: Remove extraneous code (which also create 2 & 3 conflicts).
- Documentation
- -------------
- - bpo-26736: Used HTTPS for external links in the documentation if possible.
- - bpo-6953: Rework the Readline module documentation to group related
- functions together, and add more details such as what underlying Readline
- functions and variables are accessed.
- - bpo-23606: Adds note to ctypes documentation regarding cdll.msvcrt.
- - bpo-24952: Clarify the default size argument of stack_size() in the
- "threading" and "_thread" modules. Patch from Mattip.
- - bpo-26014: Update 3.x packaging documentation: * "See also" links to the
- new docs are now provided in the legacy pages * links to setuptools
- documentation have been updated
- Tests
- -----
- - bpo-21916: Added tests for the turtle module. Patch by ingrid, Gregory
- Loyse and Jelle Zijlstra.
- - bpo-26295: When using "python3 -m test --testdir=TESTDIR", regrtest
- doesn't add "test." prefix to test module names.
- - bpo-26523: The multiprocessing thread pool (multiprocessing.dummy.Pool)
- was untested.
- - bpo-26015: Added new tests for pickling iterators of mutable sequences.
- - bpo-26325: Added test.support.check_no_resource_warning() to check that no
- ResourceWarning is emitted.
- - bpo-25940: Changed test_ssl to use its internal local server more. This
- avoids relying on svn.python.org, which recently changed root certificate.
- - bpo-25616: Tests for OrderedDict are extracted from test_collections into
- separate file test_ordered_dict.
- - bpo-25449: Added tests for OrderedDict subclasses.
- - bpo-25188: Add -P/--pgo to test.regrtest to suppress error output when
- running the test suite for the purposes of a PGO build. Initial patch by
- Alecsandru Patrascu.
- - bpo-22806: Add ``python -m test --list-tests`` command to list tests.
- - bpo-18174: ``python -m test --huntrleaks ...`` now also checks for leak of
- file descriptors. Patch written by Richard Oudkerk.
- - bpo-25260: Fix ``python -m test --coverage`` on Windows. Remove the list
- of ignored directories.
- - ``PCbuild\rt.bat`` now accepts an unlimited number of arguments to pass
- along to regrtest.py. Previously there was a limit of 9.
- - bpo-26583: Skip test_timestamp_overflow in test_import if bytecode files
- cannot be written.
- Build
- -----
- - bpo-21277: Don't try to link _ctypes with a ffi_convenience library.
- - bpo-26884: Fix linking extension modules for cross builds. Patch by Xavier
- de Gaye.
- - bpo-26932: Fixed support of RTLD_* constants defined as enum values, not
- via macros (in particular on Android). Patch by Chi Hsuan Yen.
- - bpo-22359: Disable the rules for running _freeze_importlib and pgen when
- cross-compiling. The output of these programs is normally saved with the
- source code anyway, and is still regenerated when doing a native build.
- Patch by Xavier de Gaye.
- - bpo-21668: Link audioop, _datetime, _ctypes_test modules to libm, except
- on Mac OS X. Patch written by Chi Hsuan Yen.
- - bpo-25702: A --with-lto configure option has been added that will enable
- link time optimizations at build time during a make profile-opt. Some
- compilers and toolchains are known to not produce stable code when using
- LTO, be sure to test things thoroughly before relying on it. It can
- provide a few % speed up over profile-opt alone.
- - bpo-26624: Adds validation of ucrtbase[d].dll version with warning for old
- versions.
- - bpo-17603: Avoid error about nonexistent fileblocks.o file by using a
- lower-level check for st_blocks in struct stat.
- - bpo-26079: Fixing the build output folder for tix-8.4.3.6. Patch by Bjoern
- Thiel.
- - bpo-26465: Update Windows builds to use OpenSSL 1.0.2g.
- - bpo-25348: Added ``--pgo`` and ``--pgo-job`` arguments to
- ``PCbuild\build.bat`` for building with Profile-Guided Optimization. The
- old ``PCbuild\build_pgo.bat`` script is removed.
- - bpo-25827: Add support for building with ICC to ``configure``, including a
- new ``--with-icc`` flag.
- - bpo-25696: Fix installation of Python on UNIX with make -j9.
- - bpo-24986: It is now possible to build Python on Windows without errors
- when external libraries are not available.
- - bpo-24421: Compile Modules/_math.c once, before building extensions.
- Previously it could fail to compile properly if the math and cmath builds
- were concurrent.
- - bpo-26465: Update OS X 10.5+ 32-bit-only installer to build and link with
- OpenSSL 1.0.2g.
- - bpo-26268: Update Windows builds to use OpenSSL 1.0.2f.
- - bpo-25136: Support Apple Xcode 7's new textual SDK stub libraries.
- - bpo-24324: Do not enable unreachable code warnings when using gcc as the
- option does not work correctly in older versions of gcc and has been
- silently removed as of gcc-4.5.
- Windows
- -------
- - bpo-27053: Updates make_zip.py to correctly generate library ZIP file.
- - bpo-26268: Update the prepare_ssl.py script to handle OpenSSL releases
- that don't include the contents of the include directory (that is, 1.0.2e
- and later).
- - bpo-26071: bdist_wininst created binaries fail to start and find 32bit
- Python
- - bpo-26073: Update the list of magic numbers in launcher
- - bpo-26065: Excludes venv from library when generating embeddable distro.
- - bpo-25022: Removed very outdated PC/example_nt/ directory.
- Tools/Demos
- -----------
- - bpo-26799: Fix python-gdb.py: don't get C types once when the Python code
- is loaded, but get C types on demand. The C types can change if
- python-gdb.py is loaded before the Python executable. Patch written by
- Thomas Ilsche.
- - bpo-26271: Fix the Freeze tool to properly use flags passed through
- configure. Patch by Daniel Shaulov.
- - bpo-26489: Add dictionary unpacking support to Tools/parser/unparse.py.
- Patch by Guo Ci Teo.
- - bpo-26316: Fix variable name typo in Argument Clinic.
- - bpo-25440: Fix output of python-config --extension-suffix.
- - bpo-25154: The pyvenv script has been deprecated in favour of `python3 -m
- venv`.
- C API
- -----
- - bpo-26312: SystemError is now raised in all programming bugs with using
- PyArg_ParseTupleAndKeywords(). RuntimeError did raised before in some
- programming bugs.
- - bpo-26198: ValueError is now raised instead of TypeError on buffer
- overflow in parsing "es#" and "et#" format units. SystemError is now
- raised instead of TypeError on programmatical error in parsing format
- string.
- What's New in Python 3.5.5 final?
- =================================
- *Release date: 2018-02-04*
- There were no new changes in version 3.5.5.
- What's New in Python 3.5.5 release candidate 1?
- ===============================================
- *Release date: 2018-01-23*
- Security
- --------
- - bpo-32551: The ``sys.path[0]`` initialization change for bpo-29139 caused
- a regression by revealing an inconsistency in how sys.path is initialized
- when executing ``__main__`` from a zipfile, directory, or other import
- location. This is considered a potential security issue, as it may lead to
- privileged processes unexpectedly loading code from user controlled
- directories in situations where that was not previously the case.
- The interpreter now consistently avoids ever adding the import location's
- parent directory to ``sys.path``, and ensures no other ``sys.path``
- entries are inadvertently modified when inserting the import location
- named on the command line. (Originally reported as bpo-29723 against
- Python 3.6rc1, but it was missed at the time that the then upcoming Python
- 3.5.4 release would also be affected)
- - bpo-30657: Fixed possible integer overflow in PyBytes_DecodeEscape,
- CVE-2017-1000158. Original patch by Jay Bosamiya; rebased to Python 3 by
- Miro Hrončok.
- - bpo-30947: Upgrade libexpat embedded copy from version 2.2.1 to 2.2.3 to
- get security fixes.
- Core and Builtins
- -----------------
- - bpo-31095: Fix potential crash during GC caused by ``tp_dealloc`` which
- doesn't call ``PyObject_GC_UnTrack()``.
- Library
- -------
- - bpo-32072: Fixed issues with binary plists:
- * Fixed saving bytearrays.
- * Identical objects will be saved only once.
- * Equal references will be load as identical objects.
- * Added support for saving and loading recursive data structures.
- - bpo-31170: expat: Update libexpat from 2.2.3 to 2.2.4. Fix copying of
- partial characters for UTF-8 input (libexpat bug 115):
- https://github.com/libexpat/libexpat/issues/115
- What's New in Python 3.5.4 final?
- =================================
- *Release date: 2017-08-07*
- Library
- -------
- - bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that
- contains CR or LF. Patch by Dong-hee Na.
- What's New in Python 3.5.4 release candidate 1?
- ===============================================
- *Release date: 2017-07-23*
- Security
- --------
- - bpo-30730: Prevent environment variables injection in subprocess on
- Windows. Prevent passing other environment variables and command
- arguments.
- - bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple
- security vulnerabilities including: CVE-2017-9233 (External entity
- infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix),
- CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and
- CVE-2012-0876 (Counter hash flooding with SipHash). Note: the
- CVE-2016-5300 (Use os-specific entropy sources like getrandom) doesn't
- impact Python, since Python already gets entropy from the OS to set the
- expat secret using ``XML_SetHashSalt()``.
- - bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For
- example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the
- ``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an
- authentication (``login@host``).
- - bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes of
- CVE-2016-0718 and CVE-2016-4472. See
- https://sourceforge.net/p/expat/bugs/537/ for more information.
- Core and Builtins
- -----------------
- - bpo-30876: Relative import from unloaded package now reimports the package
- instead of failing with SystemError. Relative import from non-package now
- fails with ImportError rather than SystemError.
- - bpo-30765: Avoid blocking in pthread_mutex_lock() when
- PyThread_acquire_lock() is asked not to block.
- - bpo-27945: Fixed various segfaults with dict when input collections are
- mutated during searching, inserting or comparing. Based on patches by
- Duane Griffin and Tim Mitchell.
- - bpo-25794: Fixed type.__setattr__() and type.__delattr__() for
- non-interned attribute names. Based on patch by Eryk Sun.
- - bpo-29935: Fixed error messages in the index() method of tuple, list and
- deque when pass indices of wrong type.
- - bpo-28876: ``bool(range)`` works even if ``len(range)`` raises
- :exc:`OverflowError`.
- - bpo-29600: Fix wrapping coroutine return values in StopIteration.
- - bpo-29537: Restore runtime compatibility with bytecode files generated by
- CPython 3.5.0 to 3.5.2, and adjust the eval loop to avoid the problems
- that could be caused by the malformed variant of the
- BUILD_MAP_UNPACK_WITH_CALL opcode that they may contain. Patch by Petr
- Viktorin, Serhiy Storchaka, and Nick Coghlan.
- - bpo-28598: Support __rmod__ for subclasses of str being called before
- str.__mod__. Patch by Martijn Pieters.
- - bpo-29602: Fix incorrect handling of signed zeros in complex constructor
- for complex subclasses and for inputs having a __complex__ method. Patch
- by Serhiy Storchaka.
- - bpo-29347: Fixed possibly dereferencing undefined pointers when creating
- weakref objects.
- - bpo-29438: Fixed use-after-free problem in key sharing dict.
- - bpo-29319: Prevent RunMainFromImporter overwriting sys.path[0].
- - bpo-29337: Fixed possible BytesWarning when compare the code objects.
- Warnings could be emitted at compile time.
- - bpo-29478: If max_line_length=None is specified while using the Compat32
- policy, it is no longer ignored. Patch by Mircea Cosbuc.
- Library
- -------
- - bpo-29403: Fix ``unittest.mock``'s autospec to not fail on method-bound
- builtin functions. Patch by Aaron Gallagher.
- - bpo-30961: Fix decrementing a borrowed reference in tracemalloc.
- - bpo-30886: Fix multiprocessing.Queue.join_thread(): it now waits until the
- thread completes, even if the thread was started by the same process which
- created the queue.
- - bpo-29854: Fix segfault in readline when using readline's history-size
- option. Patch by Nir Soffer.
- - bpo-30807: signal.setitimer() may disable the timer when passed a tiny
- value.
- Tiny values (such as 1e-6) are valid non-zero values for setitimer(),
- which is specified as taking microsecond-resolution intervals. However, on
- some platform, our conversion routine could convert 1e-6 into a zero
- interval, therefore disabling the timer instead of (re-)scheduling it.
- - bpo-30441: Fix bug when modifying os.environ while iterating over it
- - bpo-30532: Fix email header value parser dropping folding white space in
- certain cases.
- - bpo-29169: Update zlib to 1.2.11.
- - bpo-30879: os.listdir() and os.scandir() now emit bytes names when called
- with bytes-like argument.
- - bpo-30746: Prohibited the '=' character in environment variable names in
- ``os.putenv()`` and ``os.spawn*()``.
- - bpo-29755: Fixed the lgettext() family of functions in the gettext module.
- They now always return bytes.
- - bpo-30645: Fix path calculation in imp.load_package(), fixing it for cases
- when a package is only shipped with bytecodes. Patch by Alexandru
- Ardelean.
- - bpo-23890: unittest.TestCase.assertRaises() now manually breaks a
- reference cycle to not keep objects alive longer than expected.
- - bpo-30149: inspect.signature() now supports callables with
- variable-argument parameters wrapped with partialmethod. Patch by Dong-hee
- Na.
- - bpo-29931: Fixed comparison check for ipaddress.ip_interface objects.
- Patch by Sanjay Sundaresan.
- - bpo-24484: Avoid race condition in multiprocessing cleanup.
- - bpo-28994: The traceback no longer displayed for SystemExit raised in a
- callback registered by atexit.
- - bpo-30508: Don't log exceptions if Task/Future "cancel()" method was
- called.
- - bpo-28556: Updates to typing module: Add generic AsyncContextManager, add
- support for ContextManager on all versions. Original PRs by Jelle Zijlstra
- and Ivan Levkivskyi
- - bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl
- implementation. Patch by Michaël Sghaïer.
- - bpo-29743: Closing transport during handshake process leaks open socket.
- Patch by Nikolay Kim
- - bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu
- Sornay.
- - bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore
- EINVAL on stdin.write() if the child process is still running but closed
- the pipe.
- - bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot
- handle IPv6 addresses.
- - bpo-29960: Preserve generator state when _random.Random.setstate() raises
- an exception. Patch by Bryan Olson.
- - bpo-30414: multiprocessing.Queue._feed background running thread do not
- break from main loop on exception.
- - bpo-30003: Fix handling escape characters in HZ codec. Based on patch by
- Ma Lin.
- - bpo-30301: Fix AttributeError when using SimpleQueue.empty() under *spawn*
- and *forkserver* start methods.
- - bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error
- (code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted.
- This error occurs sometimes on SSL connections.
- - bpo-30375: Warnings emitted when compile a regular expression now always
- point to the line in the user code. Previously they could point into
- inners of the re module if emitted from inside of groups or conditionals.
- - bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is running
- coroutine and the coroutine returned without any more ``await``.
- - bpo-29990: Fix range checking in GB18030 decoder. Original patch by Ma
- Lin.
- - bpo-26293: Change resulted because of zipfile breakage. (See also:
- bpo-29094)
- - bpo-30243: Removed the __init__ methods of _json's scanner and encoder.
- Misusing them could cause memory leaks or crashes. Now scanner and
- encoder objects are completely initialized in the __new__ methods.
- - bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process
- when Ctrl-C is received.
- - bpo-28556: Various updates to typing module: add typing.NoReturn type, use
- WrapperDescriptorType, minor bug-fixes. Original PRs by Jim
- Fasarakis-Hilliard and Ivan Levkivskyi.
- - bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux.
- - bpo-30070: Fixed leaks and crashes in errors handling in the parser
- module.
- - bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when
- readline() or __next__() respectively return non-sizeable object. Fixed
- possible other errors caused by not checking results of PyObject_Size(),
- PySequence_Size(), or PyMapping_Size().
- - bpo-30068: _io._IOBase.readlines will check if it's closed first when hint
- is present.
- - bpo-29694: Fixed race condition in pathlib mkdir with flags parents=True.
- Patch by Armin Rigo.
- - bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in
- contextlib.contextmanager. Patch by Siddharth Velankar.
- - bpo-29998: Pickling and copying ImportError now preserves name and path
- attributes.
- - bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering
- long runs of empty iterables.
- - bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions
- and wrong types.
- - bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an
- exception at the very first of an iterable may swallow the exception or
- make the program hang. Patch by Davin Potts and Xiang Zhang.
- - bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True) when
- the OS gives priority to errors such as EACCES over EEXIST.
- - bpo-29861: Release references to tasks, their arguments and their results
- as soon as they are finished in multiprocessing.Pool.
- - bpo-29884: faulthandler: Restore the old sigaltstack during teardown.
- Patch by Christophe Zeitouny.
- - bpo-25455: Fixed crashes in repr of recursive buffered file-like objects.
- - bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords
- are not strings. Patch by Michael Seifert.
- - bpo-29742: get_extra_info() raises exception if get called on closed ssl
- transport. Patch by Nikolay Kim.
- - bpo-8256: Fixed possible failing or crashing input() if attributes
- "encoding" or "errors" of sys.stdin or sys.stdout are not set or are not
- strings.
- - bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting
- big intables (objects that have __int__) as elements. Patch by Oren
- Milman.
- - bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other
- exception) to exception(s) raised in the dispatched methods. Patch by Petr
- Motejlek.
- - bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes
- before all pipes are closed.
- - bpo-29703: Fix asyncio to support instantiation of new event loops in
- child processes.
- - bpo-29376: Fix assertion error in threading._DummyThread.is_alive().
- - bpo-29110: Fix file object leak in aifc.open() when file is given as a
- filesystem path and is not in valid AIFF format. Patch by Anthony Zhang.
- - bpo-28961: Fix unittest.mock._Call helper: don't ignore the name parameter
- anymore. Patch written by Jiajun Huang.
- - bpo-29532: Altering a kwarg dictionary passed to functools.partial() no
- longer affects a partial object after creation.
- - bpo-28556: Various updates to typing module: typing.Counter,
- typing.ChainMap, improved ABC caching, etc. Original PRs by Jelle
- Zijlstra, Ivan Levkivskyi, Manuel Krebber, and Łukasz Langa.
- - bpo-29100: Fix datetime.fromtimestamp() regression introduced in Python
- 3.6.0: check minimum and maximum years.
- - bpo-29519: Fix weakref spewing exceptions during interpreter shutdown when
- used with a rare combination of multiprocessing and custom codecs.
- - bpo-29416: Prevent infinite loop in pathlib.Path.mkdir
- - bpo-29444: Fixed out-of-bounds buffer access in the group() method of the
- match object. Based on patch by WGH.
- - bpo-29335: Fix subprocess.Popen.wait() when the child process has exited
- to a stopped instead of terminated state (ex: when under ptrace).
- - bpo-29290: Fix a regression in argparse that help messages would wrap at
- non-breaking spaces.
- - bpo-28735: Fixed the comparison of mock.MagickMock with mock.ANY.
- - bpo-29011: Fix an important omission by adding Deque to the typing module.
- - bpo-29219: Fixed infinite recursion in the repr of uninitialized
- ctypes.CDLL instances.
- - bpo-28969: Fixed race condition in C implementation of
- functools.lru_cache. KeyError could be raised when cached function with
- full cache was simultaneously called from differen threads with the same
- uncached arguments.
- - bpo-29142: In urllib.request, suffixes in no_proxy environment variable
- with leading dots could match related hostnames again (e.g. .b.c matches
- a.b.c). Patch by Milan Oberkirch.
- Documentation
- -------------
- - bpo-30176: Add missing attribute related constants in curses
- documentation.
- - bpo-26985: Add missing info of code object in inspect documentation.
- - bpo-28929: Link the documentation to its source file on GitHub.
- - bpo-25008: Document smtpd.py as effectively deprecated and add a pointer
- to aiosmtpd, a third-party asyncio-based replacement.
- - bpo-26355: Add canonical header link on each page to corresponding major
- version of the documentation. Patch by Matthias Bussonnier.
- - bpo-29349: Fix Python 2 syntax in code for building the documentation.
- Tests
- -----
- - bpo-30822: Fix regrtest command line parser to allow passing -u
- extralargefile to run test_zipfile64.
- - bpo-30383: regrtest: Enhance regrtest and backport features from the
- master branch.
- Add options: --coverage, --testdir, --list-tests (list test files, don't
- run them), --list-cases (list test identifiers, don't run them,
- :issue:`30523`), --matchfile (load a list of test filters from a text
- file, :issue:`30540`), --slowest (alias to --slow).
- Enhance output: add timestamp, test result, currently running tests,
- "Tests result: xxx" summary with total duration, etc.
- Fix reference leak hunting in regrtest, --huntrleaks: regrtest now warms
- up caches, create explicitly all internal singletons which are created on
- demand to prevent false positives when checking for reference leaks.
- (:issue:`30675`).
- - bpo-30357: test_thread: setUp() now uses support.threading_setup() and
- support.threading_cleanup() to wait until threads complete to avoid random
- side effects on following tests. Initial patch written by Grzegorz
- Grzywacz.
- - bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. Skip
- some tests of select.poll when running on macOS due to unresolved issues
- with the underlying system poll function on some macOS versions.
- - bpo-30197: Enhanced functions swap_attr() and swap_item() in the
- test.support module. They now work when delete replaced attribute or item
- inside the with statement. The old value of the attribute or item (or
- None if it doesn't exist) now will be assigned to the target of the "as"
- clause, if there is one.
- - bpo-29571: to match the behaviour of the ``re.LOCALE`` flag,
- test_re.test_locale_flag now uses ``locale.getpreferredencoding(False)``
- to determine the candidate encoding for the test regex (allowing it to
- correctly skip the test when the default locale encoding is a multi-byte
- encoding)
- Build
- -----
- - bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``,
- ``make install`` and some other make targets when configured with
- ``--enable-optimizations``.
- - bpo-23404: Don't regenerate generated files based on file modification
- time anymore: the action is now explicit. Replace ``make touch`` with
- ``make regen-all``.
- - bpo-29643: Fix ``--enable-optimization`` didn't work.
- Windows
- -------
- - bpo-30687: Locate msbuild.exe on Windows when building rather than
- vcvarsall.bat
- - bpo-29392: Prevent crash when passing invalid arguments into msvcrt
- module.
- C API
- -----
- - bpo-27867: Function PySlice_GetIndicesEx() is replaced with a macro if
- Py_LIMITED_API is set to the value between 0x03050400 and 0x03060000 (not
- including) or 0x03060100 or higher.
- - bpo-29083: Fixed the declaration of some public API functions.
- PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in
- limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and
- Py_BuildValue() were not available in limited API of version < 3.3 when
- PY_SSIZE_T_CLEAN is defined.
- What's New in Python 3.5.3 final?
- =================================
- *Release date: 2017-01-17*
- There were no code changes between 3.5.3rc1 and 3.5.3 final.
- What's New in Python 3.5.3 release candidate 1?
- ===============================================
- *Release date: 2017-01-02*
- Core and Builtins
- -----------------
- - bpo-29073: bytearray formatting no longer truncates on first null byte.
- - bpo-28932: Do not include <sys/random.h> if it does not exist.
- - bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must
- not convert combined table into split table.
- - bpo-25677: Correct the positioning of the syntax error caret for indented
- blocks. Based on patch by Michael Layzell.
- - bpo-29000: Fixed bytes formatting of octals with zero padding in alternate
- form.
- - bpo-28512: Fixed setting the offset attribute of SyntaxError by
- PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().
- - bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy
- bug caused by a monkey-patched len() function.
- - bpo-28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
- when decode astral characters. Patch by Xiang Zhang.
- - bpo-19398: Extra slash no longer added to sys.path components in case of
- empty compile-time PYTHONPATH components.
- - bpo-28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug
- build.
- - bpo-23782: Fixed possible memory leak in _PyTraceback_Add() and exception
- loss in PyTraceBack_Here().
- - bpo-28379: Added sanity checks and tests for PyUnicode_CopyCharacters().
- Patch by Xiang Zhang.
- - bpo-28376: The type of long range iterator is now registered as Iterator.
- Patch by Oren Milman.
- - bpo-28376: The constructor of range_iterator now checks that step is not
- 0. Patch by Oren Milman.
- - bpo-26906: Resolving special methods of uninitialized type now causes
- implicit initialization of the type instead of a fail.
- - bpo-18287: PyType_Ready() now checks that tp_name is not NULL. Original
- patch by Niklas Koep.
- - bpo-24098: Fixed possible crash when AST is changed in process of
- compiling it.
- - bpo-28350: String constants with null character no longer interned.
- - bpo-26617: Fix crash when GC runs during weakref callbacks.
- - bpo-27942: String constants now interned recursively in tuples and
- frozensets.
- - bpo-21578: Fixed misleading error message when ImportError called with
- invalid keyword args.
- - bpo-28203: Fix incorrect type in error message from ``complex(1.0,
- {2:3})``. Patch by Soumya Sharma.
- - bpo-27955: Fallback on reading /dev/urandom device when the getrandom()
- syscall fails with EPERM, for example when blocked by SECCOMP.
- - bpo-28131: Fix a regression in zipimport's compile_source(). zipimport
- should use the same optimization level as the interpreter.
- - bpo-25221: Fix corrupted result from PyLong_FromLong(0) when Python is
- compiled with NSMALLPOSINTS = 0.
- - bpo-25758: Prevents zipimport from unnecessarily encoding a filename
- (patch by Eryk Sun)
- - bpo-28189: dictitems_contains no longer swallows compare errors. (Patch by
- Xiang Zhang)
- - bpo-27812: Properly clear out a generator's frame's backreference to the
- generator to prevent crashes in frame.clear().
- - bpo-27811: Fix a crash when a coroutine that has not been awaited is
- finalized with warnings-as-errors enabled.
- - bpo-27587: Fix another issue found by PVS-Studio: Null pointer check after
- use of 'def' in _PyState_AddModule(). Initial patch by Christian Heimes.
- - bpo-26020: set literal evaluation order did not match documented
- behaviour.
- - bpo-27782: Multi-phase extension module import now correctly allows the
- ``m_methods`` field to be used to add module level functions to instances
- of non-module types returned from ``Py_create_mod``. Patch by Xiang Zhang.
- - bpo-27936: The round() function accepted a second None argument for some
- types but not for others. Fixed the inconsistency by accepting None for
- all numeric types.
- - bpo-27487: Warn if a submodule argument to "python -m" or
- runpy.run_module() is found in sys.modules after parent packages are
- imported, but before the submodule is executed.
- - bpo-27558: Fix a SystemError in the implementation of "raise" statement.
- In a brand new thread, raise a RuntimeError since there is no active
- exception to reraise. Patch written by Xiang Zhang.
- - bpo-27419: Standard __import__() no longer look up "__import__" in globals
- or builtins for importing submodules or "from import". Fixed handling an
- error of non-string package name.
- - bpo-27083: Respect the PYTHONCASEOK environment variable under Windows.
- - bpo-27514: Make having too many statically nested blocks a SyntaxError
- instead of SystemError.
- - bpo-27473: Fixed possible integer overflow in bytes and bytearray
- concatenations. Patch by Xiang Zhang.
- - bpo-27507: Add integer overflow check in bytearray.extend(). Patch by
- Xiang Zhang.
- - bpo-27581: Don't rely on wrapping for overflow check in
- PySequence_Tuple(). Patch by Xiang Zhang.
- - bpo-27443: __length_hint__() of bytearray iterators no longer return a
- negative integer for a resized bytearray.
- - bpo-27942: Fix memory leak in codeobject.c
- Library
- -------
- - bpo-15812: inspect.getframeinfo() now correctly shows the first line of a
- context. Patch by Sam Breese.
- - bpo-29094: Offsets in a ZIP file created with extern file object and modes
- "w" and "x" now are relative to the start of the file.
- - bpo-13051: Fixed recursion errors in large or resized
- curses.textpad.Textbox. Based on patch by Tycho Andersen.
- - bpo-29119: Fix weakrefs in the pure python version of
- collections.OrderedDict move_to_end() method. Contributed by Andra
- Bogildea.
- - bpo-9770: curses.ascii predicates now work correctly with negative
- integers.
- - bpo-28427: old keys should not remove new values from WeakValueDictionary
- when collecting from another thread.
- - bpo-28923: Remove editor artifacts from Tix.py.
- - bpo-28871: Fixed a crash when deallocate deep ElementTree.
- - bpo-19542: Fix bugs in WeakValueDictionary.setdefault() and
- WeakValueDictionary.pop() when a GC collection happens in another thread.
- - bpo-20191: Fixed a crash in resource.prlimit() when pass a sequence that
- doesn't own its elements as limits.
- - bpo-28779: multiprocessing.set_forkserver_preload() would crash the
- forkserver process if a preloaded module instantiated some multiprocessing
- objects such as locks.
- - bpo-28847: dbm.dumb now supports reading read-only files and no longer
- writes the index file when it is not changed.
- - bpo-25659: In ctypes, prevent a crash calling the from_buffer() and
- from_buffer_copy() methods on abstract classes like Array.
- - bpo-28732: Fix crash in os.spawnv() with no elements in args
- - bpo-28485: Always raise ValueError for negative
- compileall.compile_dir(workers=...) parameter, even when multithreading is
- unavailable.
- - bpo-28387: Fixed possible crash in _io.TextIOWrapper deallocator when the
- garbage collector is invoked in other thread. Based on patch by Sebastian
- Cufre.
- - bpo-27517: LZMA compressor and decompressor no longer raise exceptions if
- given empty data twice. Patch by Benjamin Fogle.
- - bpo-28549: Fixed segfault in curses's addch() with ncurses6.
- - bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
- file with compression before trying to open it without compression.
- Otherwise it had 50% chance failed with ignore_zeros=True.
- - bpo-23262: The webbrowser module now supports Firefox 36+ and derived
- browsers. Based on patch by Oleg Broytman.
- - bpo-27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused
- by representing the scale as float value internally in Tk. tkinter.IntVar
- now works if float value is set to underlying Tk variable.
- - bpo-28255: calendar.TextCalendar().prmonth() no longer prints a space at
- the start of new line after printing a month's calendar. Patch by Xiang
- Zhang.
- - bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces.
- Based on patch by Kaarle Ritvanen.
- - bpo-28353: os.fwalk() no longer fails on broken links.
- - bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a
- workaround to Tix library bug.
- - bpo-28488: shutil.make_archive() no longer add entry "./" to ZIP archive.
- - bpo-24452: Make webbrowser support Chrome on Mac OS X.
- - bpo-20766: Fix references leaked by pdb in the handling of SIGINT
- handlers.
- - bpo-26293: Fixed writing ZIP files that starts not from the start of the
- file. Offsets in ZIP file now are relative to the start of the archive in
- conforming to the specification.
- - bpo-28321: Fixed writing non-BMP characters with binary format in
- plistlib.
- - bpo-28322: Fixed possible crashes when unpickle itertools objects from
- incorrect pickle data. Based on patch by John Leitch.
- - Fix possible integer overflows and crashes in the mmap module with unusual
- usage patterns.
- - bpo-1703178: Fix the ability to pass the --link-objects option to the
- distutils build_ext command.
- - bpo-28253: Fixed calendar functions for extreme months: 0001-01 and
- 9999-12.
- Methods itermonthdays() and itermonthdays2() are reimplemented so that
- they don't call itermonthdates() which can cause datetime.date
- under/overflow.
- - bpo-28275: Fixed possible use after free in the decompress() methods of
- the LZMADecompressor and BZ2Decompressor classes. Original patch by John
- Leitch.
- - bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation()
- if pass invalid string-like object as a name. Patch by Xiang Zhang.
- - bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py.
- Patch by Madison May.
- - bpo-27611: Fixed support of default root window in the tkinter.tix module.
- - bpo-27348: In the traceback module, restore the formatting of exception
- messages like "Exception: None". This fixes a regression introduced in
- 3.5a2.
- - bpo-25651: Allow falsy values to be used for msg parameter of subTest().
- - bpo-27932: Prevent memory leak in win32_ver().
- - Fix UnboundLocalError in socket._sendfile_use_sendfile.
- - bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of
- os.stat(). Patch by Eryk Sun.
- - bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an
- empty bytestring is passed.
- - bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.
- - bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by
- Gergely Imreh and Markus Holtermann.
- - bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and
- binascii.a2b_qp().
- - bpo-19003: m email.generator now replaces only ``\r`` and/or ``\n`` line
- endings, per the RFC, instead of all unicode line endings.
- - bpo-28019: itertools.count() no longer rounds non-integer step in range
- between 1.0 and 2.0 to 1.
- - bpo-25969: Update the lib2to3 grammar to handle the unpacking
- generalizations added in 3.5.
- - bpo-14977: mailcap now respects the order of the lines in the mailcap
- files ("first match"), as required by RFC 1542. Patch by Michael Lazar.
- - bpo-24594: Validates persist parameter when opening MSI database
- - bpo-17582: xml.etree.ElementTree nows preserves whitespaces in attributes
- (Patch by Duane Griffin. Reviewed and approved by Stefan Behnel.)
- - bpo-28047: Fixed calculation of line length used for the base64 CTE in the
- new email policies.
- - bpo-27445: Don't pass str(_charset) to MIMEText.set_payload(). Patch by
- Claude Paroz.
- - bpo-22450: urllib now includes an ``Accept: */*`` header among the default
- headers. This makes the results of REST API requests more consistent and
- predictable especially when proxy servers are involved.
- - lib2to3.pgen3.driver.load_grammar() now creates a stable cache file
- between runs given the same Grammar.txt input regardless of the hash
- randomization setting.
- - bpo-27570: Avoid zero-length memcpy() etc calls with null source pointers
- in the "ctypes" and "array" modules.
- - bpo-22233: Break email header lines *only* on the RFC specified CR and LF
- characters, not on arbitrary unicode line breaks. This also fixes a bug
- in HTTP header parsing.
- - bpo-27988: Fix email iter_attachments incorrect mutation of payload list.
- - bpo-27691: Fix ssl module's parsing of GEN_RID subject alternative name
- fields in X.509 certs.
- - bpo-27850: Remove 3DES from ssl module's default cipher list to counter
- measure sweet32 attack (CVE-2016-2183).
- - bpo-27766: Add ChaCha20 Poly1305 to ssl module's default cipher list.
- (Required OpenSSL 1.1.0 or LibreSSL).
- - bpo-26470: Port ssl and hashlib module to OpenSSL 1.1.0.
- - Remove support for passing a file descriptor to os.access. It never worked
- but previously didn't raise.
- - bpo-12885: Fix error when distutils encounters symlink.
- - bpo-27881: Fixed possible bugs when setting
- sqlite3.Connection.isolation_level. Based on patch by Xiang Zhang.
- - bpo-27861: Fixed a crash in sqlite3.Connection.cursor() when a factory
- creates not a cursor. Patch by Xiang Zhang.
- - bpo-19884: Avoid spurious output on OS X with Gnu Readline.
- - bpo-27706: Restore deterministic behavior of random.Random().seed() for
- string seeds using seeding version 1. Allows sequences of calls to
- random() to exactly match those obtained in Python 2. Patch by Nofar
- Schnider.
- - bpo-10513: Fix a regression in Connection.commit(). Statements should not
- be reset after a commit.
- - A new version of typing.py from https://github.com/python/typing:
- Collection (only for 3.6) (Issue #27598). Add FrozenSet to __all__
- (upstream #261). Fix crash in _get_type_vars() (upstream #259). Remove the
- dict constraint in ForwardRef._eval_type (upstream #252).
- - bpo-27539: Fix unnormalised ``Fraction.__pow__`` result in the case of
- negative exponent and negative base.
- - bpo-21718: cursor.description is now available for queries using CTEs.
- - bpo-2466: posixpath.ismount now correctly recognizes mount points which
- the user does not have permission to access.
- - bpo-27773: Correct some memory management errors server_hostname in
- _ssl.wrap_socket().
- - bpo-26750: unittest.mock.create_autospec() now works properly for
- subclasses of property() and other data descriptors.
- - In the curses module, raise an error if window.getstr() or window.instr()
- is passed a negative value.
- - bpo-27783: Fix possible usage of uninitialized memory in
- operator.methodcaller.
- - bpo-27774: Fix possible Py_DECREF on unowned object in _sre.
- - bpo-27760: Fix possible integer overflow in binascii.b2a_qp.
- - bpo-27758: Fix possible integer overflow in the _csv module for large
- record lengths.
- - bpo-27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the
- HTTP_PROXY variable when REQUEST_METHOD environment is set, which
- indicates that the script is in CGI mode.
- - bpo-27656: Do not assume sched.h defines any SCHED_* constants.
- - bpo-27130: In the "zlib" module, fix handling of large buffers (typically
- 4 GiB) when compressing and decompressing. Previously, inputs were
- limited to 4 GiB, and compression and decompression operations did not
- properly handle results of 4 GiB.
- - bpo-27533: Release GIL in nt._isdir
- - bpo-17711: Fixed unpickling by the persistent ID with protocol 0. Original
- patch by Alexandre Vassalotti.
- - bpo-27522: Avoid an unintentional reference cycle in email.feedparser.
- - bpo-26844: Fix error message for imp.find_module() to refer to 'path'
- instead of 'name'. Patch by Lev Maximov.
- - bpo-23804: Fix SSL zero-length recv() calls to not block and not raise an
- error about unclean EOF.
- - bpo-27466: Change time format returned by http.cookie.time2netscape,
- confirming the netscape cookie format and making it consistent with
- documentation.
- - bpo-26664: Fix activate.fish by removing mis-use of ``$``.
- - bpo-22115: Fixed tracing Tkinter variables: trace_vdelete() with wrong
- mode no longer break tracing, trace_vinfo() now always returns a list of
- pairs of strings, tracing in the "u" mode now works.
- - Fix a scoping issue in importlib.util.LazyLoader which triggered an
- UnboundLocalError when lazy-loading a module that was already put into
- sys.modules.
- - bpo-27079: Fixed curses.ascii functions isblank(), iscntrl() and
- ispunct().
- - bpo-26754: Some functions (compile() etc) accepted a filename argument
- encoded as an iterable of integers. Now only strings and byte-like objects
- are accepted.
- - bpo-27048: Prevents distutils failing on Windows when environment
- variables contain non-ASCII characters
- - bpo-27330: Fixed possible leaks in the ctypes module.
- - bpo-27238: Got rid of bare excepts in the turtle module. Original patch
- by Jelle Zijlstra.
- - bpo-27122: When an exception is raised within the context being managed by
- a contextlib.ExitStack() and one of the exit stack generators catches and
- raises it in a chain, do not re-raise the original exception when exiting,
- let the new chained one through. This avoids the PEP 479 bug described in
- issue25782.
- Security
- --------
- - bpo-27278: Fix os.urandom() implementation using getrandom() on Linux.
- Truncate size to INT_MAX and loop until we collected enough random bytes,
- instead of casting a directly Py_ssize_t to int.
- Library
- -------
- - bpo-26386: Fixed ttk.TreeView selection operations with item id's
- containing spaces.
- Security
- --------
- - bpo-22636: Avoid shell injection problems with ctypes.util.find_library().
- Library
- -------
- - bpo-16182: Fix various functions in the "readline" module to use the
- locale encoding, and fix get_begidx() and get_endidx() to return code
- point indexes.
- - bpo-27392: Add loop.connect_accepted_socket(). Patch by Jim Fulton.
- - bpo-27930: Improved behaviour of logging.handlers.QueueListener. Thanks to
- Paulo Andrade and Petr Viktorin for the analysis and patch.
- - bpo-21201: Improves readability of multiprocessing error message. Thanks
- to Wojciech Walczak for patch.
- - bpo-27456: asyncio: Set TCP_NODELAY by default.
- - bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by
- Kevin Conway.
- - bpo-28174: Handle when SO_REUSEPORT isn't properly supported. Patch by
- Seth Michael Larson.
- - bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by
- iceboy.
- - bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.
- - bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.
- - bpo-27759: Fix selectors incorrectly retain invalid file descriptors.
- Patch by Mark Williams.
- - bpo-28368: Refuse monitoring processes if the child watcher has no loop
- attached. Patch by Vincent Michel.
- - bpo-28369: Raise RuntimeError when transport's FD is used with add_reader,
- add_writer, etc.
- - bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг
- Марк.
- - bpo-28371: Deprecate passing asyncio.Handles to run_in_executor.
- - bpo-28372: Fix asyncio to support formatting of non-python coroutines.
- - bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг
- Марк.
- - bpo-27972: Prohibit Tasks to await on themselves.
- - bpo-26923: Fix asyncio.Gather to refuse being cancelled once all children
- are done. Patch by Johannes Ebke.
- - bpo-26796: Don't configure the number of workers for default threadpool
- executor. Initial patch by Hans Lawrenz.
- - bpo-28600: Optimize loop.call_soon().
- - bpo-28613: Fix get_event_loop() return the current loop if called from
- coroutines/callbacks.
- - bpo-28639: Fix inspect.isawaitable to always return bool Patch by Justin
- Mayfield.
- - bpo-28652: Make loop methods reject socket kinds they do not support.
- - bpo-28653: Fix a refleak in functools.lru_cache.
- - bpo-28703: Fix asyncio.iscoroutinefunction to handle Mock objects.
- - bpo-24142: Reading a corrupt config file left the parser in an invalid
- state. Original patch by Florian Höch.
- - bpo-28990: Fix SSL hanging if connection is closed before handshake
- completed. (Patch by HoHo-Ho)
- IDLE
- ----
- - bpo-15308: Add 'interrupt execution' (^C) to Shell menu. Patch by Roger
- Serwy, updated by Bayard Randel.
- - bpo-27922: Stop IDLE tests from 'flashing' gui widgets on the screen.
- - Add version to title of IDLE help window.
- - bpo-25564: In section on IDLE -- console differences, mention that using
- exec means that __builtins__ is defined for each statement.
- - bpo-27714: text_textview and test_autocomplete now pass when re-run in the
- same process. This occurs when test_idle fails when run with the -w
- option but without -jn. Fix warning from test_config.
- - bpo-25507: IDLE no longer runs buggy code because of its tkinter imports.
- Users must include the same imports required to run directly in Python.
- - bpo-27452: add line counter and crc to IDLE configHandler test dump.
- - bpo-27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names.
- - bpo-27245: IDLE: Cleanly delete custom themes and key bindings.
- Previously, when IDLE was started from a console or by import, a cascade
- of warnings was emitted. Patch by Serhiy Storchaka.
- C API
- -----
- - bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.
- - bpo-26754: PyUnicode_FSDecoder() accepted a filename argument encoded as
- an iterable of integers. Now only strings and bytes-like objects are
- accepted.
- Documentation
- -------------
- - bpo-28513: Documented command-line interface of zipfile.
- Tests
- -----
- - bpo-28950: Disallow -j0 to be combined with -T/-l/-M in regrtest command
- line arguments.
- - bpo-28666: Now test.support.rmtree is able to remove unwritable or
- unreadable directories.
- - bpo-23839: Various caches now are cleared before running every test file.
- - bpo-28409: regrtest: fix the parser of command line arguments.
- - bpo-27787: Call gc.collect() before checking each test for "dangling
- threads", since the dangling threads are weak references.
- - bpo-27369: In test_pyexpat, avoid testing an error message detail that
- changed in Expat 2.2.0.
- Tools/Demos
- -----------
- - bpo-27952: Get Tools/scripts/fixcid.py working with Python 3 and the
- current "re" module, avoid invalid Python backslash escapes, and fix a bug
- parsing escaped C quote signs.
- - bpo-27332: Fixed the type of the first argument of module-level functions
- generated by Argument Clinic. Patch by Petr Viktorin.
- - bpo-27418: Fixed Tools/importbench/importbench.py.
- Windows
- -------
- - bpo-28251: Improvements to help manuals on Windows.
- - bpo-28110: launcher.msi has different product codes between 32-bit and
- 64-bit
- - bpo-25144: Ensures TargetDir is set before continuing with custom install.
- - bpo-27469: Adds a shell extension to the launcher so that drag and drop
- works correctly.
- - bpo-27309: Enabled proper Windows styles in python[w].exe manifest.
- Build
- -----
- - bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat
- - bpo-23903: Added missed names to PC/python3.def.
- - bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and
- Michael Haubenwallner.
- - bpo-26359: Rename --with-optimiations to --enable-optimizations.
- - bpo-28444: Fix missing extensions modules when cross compiling.
- - bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.
- - bpo-28258: Fixed build with Estonian locale (python-config and distclean
- targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis.
- - bpo-26661: setup.py now detects system libffi with multiarch wrapper.
- - bpo-28066: Fix the logic that searches build directories for generated
- include files when building outside the source tree.
- - bpo-15819: Remove redundant include search directory option for building
- outside the source tree.
- - bpo-27566: Fix clean target in freeze makefile (patch by Lisa Roach)
- - bpo-27705: Update message in validate_ucrtbase.py
- - bpo-27983: Cause lack of llvm-profdata tool when using clang as required
- for PGO linking to be a configure time error rather than make time when
- --with-optimizations is enabled. Also improve our ability to find the
- llvm-profdata tool on MacOS and some Linuxes.
- - bpo-26307: The profile-opt build now applies PGO to the built-in modules.
- - bpo-26359: Add the --with-optimizations configure flag.
- - bpo-27713: Suppress spurious build warnings when updating importlib's
- bootstrap files. Patch by Xiang Zhang
- - bpo-25825: Correct the references to Modules/python.exp and ld_so_aix,
- which are required on AIX. This updates references to an installation
- path that was changed in 3.2a4, and undoes changed references to the build
- tree that were made in 3.5.0a1.
- - bpo-27453: CPP invocation in configure must use CPPFLAGS. Patch by Chi
- Hsuan Yen.
- - bpo-27641: The configure script now inserts comments into the makefile to
- prevent the pgen and _freeze_importlib executables from being
- cross-compiled.
- - bpo-26662: Set PYTHON_FOR_GEN in configure as the Python program to be
- used for file generation during the build.
- - bpo-10910: Avoid C++ compilation errors on FreeBSD and OS X. Also update
- FreedBSD version checks for the original ctype UTF-8 workaround.
- - bpo-28676: Prevent missing 'getentropy' declaration warning on macOS.
- Patch by Gareth Rees.
- What's New in Python 3.5.2 final?
- =================================
- *Release date: 2016-06-26*
- Core and Builtins
- -----------------
- - bpo-26930: Update Windows builds to use OpenSSL 1.0.2h.
- Tests
- -----
- - bpo-26867: Ubuntu's openssl OP_NO_SSLv3 is forced on by default; fix test.
- IDLE
- ----
- - bpo-27365: Allow non-ascii in idlelib/NEWS.txt - minimal part for 3.5.2.
- What's New in Python 3.5.2 release candidate 1?
- ===============================================
- *Release date: 2016-06-12*
- Core and Builtins
- -----------------
- - bpo-27066: Fixed SystemError if a custom opener (for open()) returns a
- negative number without setting an exception.
- - bpo-20041: Fixed TypeError when frame.f_trace is set to None. Patch by
- Xavier de Gaye.
- - bpo-26168: Fixed possible refleaks in failing Py_BuildValue() with the "N"
- format unit.
- - bpo-26991: Fix possible refleak when creating a function with annotations.
- - bpo-27039: Fixed bytearray.remove() for values greater than 127. Patch by
- Joe Jevnik.
- - bpo-23640: int.from_bytes() no longer bypasses constructors for
- subclasses.
- - bpo-26811: gc.get_objects() no longer contains a broken tuple with NULL
- pointer.
- - bpo-20120: Use RawConfigParser for .pypirc parsing, removing support for
- interpolation unintentionally added with move to Python 3. Behavior no
- longer does any interpolation in .pypirc files, matching behavior in
- Python 2.7 and Setuptools 19.0.
- - bpo-26659: Make the builtin slice type support cycle collection.
- - bpo-26718: super.__init__ no longer leaks memory if called multiple times.
- NOTE: A direct call of super.__init__ is not endorsed!
- - bpo-25339: PYTHONIOENCODING now has priority over locale in setting the
- error handler for stdin and stdout.
- - bpo-26494: Fixed crash on iterating exhausting iterators. Affected classes
- are generic sequence iterators, iterators of str, bytes, bytearray, list,
- tuple, set, frozenset, dict, OrderedDict, corresponding views and
- os.scandir() iterator.
- - bpo-26581: If coding cookie is specified multiple times on a line in
- Python source code file, only the first one is taken to account.
- - bpo-26464: Fix str.translate() when string is ASCII and first replacements
- removes character, but next replacement uses a non-ASCII character or a
- string longer than 1 character. Regression introduced in Python 3.5.0.
- - bpo-22836: Ensure exception reports from PyErr_Display() and
- PyErr_WriteUnraisable() are sensible even when formatting them produces
- secondary errors. This affects the reports produced by
- sys.__excepthook__() and when __del__() raises an exception.
- - bpo-26302: Correct behavior to reject comma as a legal character for
- cookie names.
- - bpo-4806: Avoid masking the original TypeError exception when using star
- (``*``) unpacking in function calls. Based on patch by Hagen Fürstenau
- and Daniel Urban.
- - bpo-27138: Fix the doc comment for FileFinder.find_spec().
- - bpo-26154: Add a new private _PyThreadState_UncheckedGet() function to get
- the current Python thread state, but don't issue a fatal error if it is
- NULL. This new function must be used instead of accessing directly the
- _PyThreadState_Current variable. The variable is no more exposed since
- Python 3.5.1 to hide the exact implementation of atomic C types, to avoid
- compiler issues.
- - bpo-26194: Deque.insert() gave odd results for bounded deques that had
- reached their maximum size. Now an IndexError will be raised when
- attempting to insert into a full deque.
- - bpo-25843: When compiling code, don't merge constants if they are equal
- but have a different types. For example, ``f1, f2 = lambda: 1, lambda:
- 1.0`` is now correctly compiled to two different functions: ``f1()``
- returns ``1`` (``int``) and ``f2()`` returns ``1.0`` (``int``), even if
- ``1`` and ``1.0`` are equal.
- - bpo-22995: [UPDATE] Comment out the one of the pickleability tests in
- _PyObject_GetState() due to regressions observed in Cython-based projects.
- - bpo-25961: Disallowed null characters in the type name.
- - bpo-25973: Fix segfault when an invalid nonlocal statement binds a name
- starting with two underscores.
- - bpo-22995: Instances of extension types with a state that aren't
- subclasses of list or dict and haven't implemented any pickle-related
- methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__, or
- __getstate__), can no longer be pickled. Including memoryview.
- - bpo-20440: Massive replacing unsafe attribute setting code with special
- macro Py_SETREF.
- - bpo-25766: Special method __bytes__() now works in str subclasses.
- - bpo-25421: __sizeof__ methods of builtin types now use dynamic basic size.
- This allows sys.getsize() to work correctly with their subclasses with
- __slots__ defined.
- - bpo-25709: Fixed problem with in-place string concatenation and utf-8
- cache.
- - bpo-27147: Mention PEP 420 in the importlib docs.
- - bpo-24097: Fixed crash in object.__reduce__() if slot name is freed inside
- __getattr__.
- - bpo-24731: Fixed crash on converting objects with special methods
- __bytes__, __trunc__, and __float__ returning instances of subclasses of
- bytes, int, and float to subclasses of bytes, int, and float
- correspondingly.
- - bpo-26478: Fix semantic bugs when using binary operators with dictionary
- views and tuples.
- - bpo-26171: Fix possible integer overflow and heap corruption in
- zipimporter.get_data().
- - bpo-25660: Fix TAB key behaviour in REPL with readline.
- - bpo-25887: Raise a RuntimeError when a coroutine object is awaited more
- than once.
- - bpo-27243: Update the __aiter__ protocol: instead of returning an
- awaitable that resolves to an asynchronous iterator, the asynchronous
- iterator should be returned directly. Doing the former will trigger a
- PendingDeprecationWarning.
- Security
- --------
- - bpo-26556: Update expat to 2.1.1, fixes CVE-2015-1283.
- - Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by
- Team Oststrom
- Library
- -------
- - bpo-21386: Implement missing IPv4Address.is_global property. It was
- documented since 07a5610bae9d. Initial patch by Roger Luethi.
- - bpo-20900: distutils register command now decodes HTTP responses
- correctly. Initial patch by ingrid.
- - A new version of typing.py provides several new classes and features:
- @overload outside stubs, Reversible, DefaultDict, Text, ContextManager,
- Type[], NewType(), TYPE_CHECKING, and numerous bug fixes (note that some
- of the new features are not yet implemented in mypy or other static
- analyzers). Also classes for PEP 492 (Awaitable, AsyncIterable,
- AsyncIterator) have been added (in fact they made it into 3.5.1 but were
- never mentioned).
- - bpo-25738: Stop http.server.BaseHTTPRequestHandler.send_error() from
- sending a message body for 205 Reset Content. Also, don't send Content
- header fields in responses that don't have a body. Patch by Susumu
- Koshiba.
- - bpo-21313: Fix the "platform" module to tolerate when sys.version contains
- truncated build information.
- Security
- --------
- - bpo-26839: On Linux, :func:`os.urandom` now calls ``getrandom()`` with
- ``GRND_NONBLOCK`` to fall back on reading ``/dev/urandom`` if the urandom
- entropy pool is not initialized yet. Patch written by Colm Buckley.
- Library
- -------
- - bpo-27164: In the zlib module, allow decompressing raw Deflate streams
- with a predefined zdict. Based on patch by Xiang Zhang.
- - bpo-24291: Fix wsgiref.simple_server.WSGIRequestHandler to completely
- write data to the client. Previously it could do partial writes and
- truncate data. Also, wsgiref.handler.ServerHandler can now handle stdout
- doing partial writes, but this is deprecated.
- - bpo-26809: Add ``__all__`` to :mod:`string`. Patch by Emanuel Barry.
- - bpo-26373: subprocess.Popen.communicate now correctly ignores
- BrokenPipeError when the child process dies before .communicate() is
- called in more/all circumstances.
- - bpo-21776: distutils.upload now correctly handles HTTPError. Initial patch
- by Claudiu Popa.
- - bpo-27114: Fix SSLContext._load_windows_store_certs fails with
- PermissionError
- - bpo-18383: Avoid creating duplicate filters when using filterwarnings and
- simplefilter. Based on patch by Alex Shkop.
- - bpo-27057: Fix os.set_inheritable() on Android, ioctl() is blocked by
- SELinux and fails with EACCESS. The function now falls back to fcntl().
- Patch written by Michał Bednarski.
- - bpo-27014: Fix infinite recursion using typing.py. Thanks to Kalle Tuure!
- - bpo-14132: Fix urllib.request redirect handling when the target only has a
- query string. Original fix by Ján Janech.
- - bpo-17214: The "urllib.request" module now percent-encodes non-ASCII bytes
- found in redirect target URLs. Some servers send Location header fields
- with non-ASCII bytes, but "http.client" requires the request target to be
- ASCII-encodable, otherwise a UnicodeEncodeError is raised. Based on patch
- by Christian Heimes.
- - bpo-26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch
- contributed by Chi Hsuan Yen.
- - bpo-22274: In the subprocess module, allow stderr to be redirected to
- stdout even when stdout is not redirected. Patch by Akira Li.
- - bpo-26807: mock_open 'files' no longer error on readline at end of file.
- Patch from Yolanda Robla.
- - bpo-25745: Fixed leaking a userptr in curses panel destructor.
- - bpo-26977: Removed unnecessary, and ignored, call to sum of squares helper
- in statistics.pvariance.
- - bpo-26881: The modulefinder module now supports extended opcode arguments.
- - bpo-23815: Fixed crashes related to directly created instances of types in
- _tkinter and curses.panel modules.
- - bpo-17765: weakref.ref() no longer silently ignores keyword arguments.
- Patch by Georg Brandl.
- - bpo-26873: xmlrpc now raises ResponseError on unsupported type tags
- instead of silently return incorrect result.
- - bpo-26711: Fixed the comparison of plistlib.Data with other types.
- - bpo-24114: Fix an uninitialized variable in `ctypes.util`.
- The bug only occurs on SunOS when the ctypes implementation searches for
- the `crle` program. Patch by Xiang Zhang. Tested on SunOS by Kees Bos.
- - bpo-26864: In urllib.request, change the proxy bypass host checking
- against no_proxy to be case-insensitive, and to not match unrelated host
- names that happen to have a bypassed hostname as a suffix. Patch by Xiang
- Zhang.
- - bpo-26634: recursive_repr() now sets __qualname__ of wrapper. Patch by
- Xiang Zhang.
- - bpo-26804: urllib.request will prefer lower_case proxy environment
- variables over UPPER_CASE or Mixed_Case ones. Patch contributed by
- Hans-Peter Jansen.
- - bpo-26837: assertSequenceEqual() now correctly outputs non-stringified
- differing items (like bytes in the -b mode). This affects
- assertListEqual() and assertTupleEqual().
- - bpo-26041: Remove "will be removed in Python 3.7" from deprecation
- messages of platform.dist() and platform.linux_distribution(). Patch by
- Kumaripaba Miyurusara Athukorala.
- - bpo-26822: itemgetter, attrgetter and methodcaller objects no longer
- silently ignore keyword arguments.
- - bpo-26733: Disassembling a class now disassembles class and static
- methods. Patch by Xiang Zhang.
- - bpo-26801: Fix error handling in :func:`shutil.get_terminal_size`, catch
- :exc:`AttributeError` instead of :exc:`NameError`. Patch written by
- Emanuel Barry.
- - bpo-24838: tarfile's ustar and gnu formats now correctly calculate name
- and link field limits for multibyte character encodings like utf-8.
- Security
- --------
- - bpo-26657: Fix directory traversal vulnerability with http.server on
- Windows. This fixes a regression that was introduced in 3.3.4rc1 and
- 3.4.0rc1. Based on patch by Philipp Hagemeister.
- Library
- -------
- - bpo-26717: Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by
- Anthony Sottile.
- - bpo-26735: Fix :func:`os.urandom` on Solaris 11.3 and newer when reading
- more than 1,024 bytes: call ``getrandom()`` multiple times with a limit of
- 1024 bytes per call.
- - bpo-16329: Add .webm to mimetypes.types_map. Patch by Giampaolo Rodola'.
- - bpo-13952: Add .csv to mimetypes.types_map. Patch by Geoff Wilson.
- - bpo-26709: Fixed Y2038 problem in loading binary PLists.
- - bpo-23735: Handle terminal resizing with Readline 6.3+ by installing our
- own SIGWINCH handler. Patch by Eric Price.
- - bpo-26586: In http.server, respond with "413 Request header fields too
- large" if there are too many header fields to parse, rather than killing
- the connection and raising an unhandled exception. Patch by Xiang Zhang.
- - bpo-22854: Change BufferedReader.writable() and BufferedWriter.readable()
- to always return False.
- - bpo-25195: Fix a regression in mock.MagicMock. _Call is a subclass of
- tuple (changeset 3603bae63c13 only works for classes) so we need to
- implement __ne__ ourselves. Patch by Andrew Plummer.
- - bpo-26644: Raise ValueError rather than SystemError when a negative length
- is passed to SSLSocket.recv() or read().
- - bpo-23804: Fix SSL recv(0) and read(0) methods to return zero bytes
- instead of up to 1024.
- - bpo-26616: Fixed a bug in datetime.astimezone() method.
- - bpo-21925: :func:`warnings.formatwarning` now catches exceptions on
- ``linecache.getline(...)`` to be able to log :exc:`ResourceWarning`
- emitted late during the Python shutdown process.
- - bpo-24266: Ctrl+C during Readline history search now cancels the search
- mode when compiled with Readline 7.
- - bpo-26560: Avoid potential ValueError in BaseHandler.start_response.
- Initial patch by Peter Inglesby.
- Security
- --------
- - bpo-26313: ssl.py _load_windows_store_certs fails if windows cert store is
- empty. Patch by Baji.
- Library
- -------
- - bpo-26569: Fix :func:`pyclbr.readmodule` and :func:`pyclbr.readmodule_ex`
- to support importing packages.
- - bpo-26499: Account for remaining Content-Length in HTTPResponse.readline()
- and read1(). Based on patch by Silent Ghost. Also document that
- HTTPResponse now supports these methods.
- - bpo-25320: Handle sockets in directories unittest discovery is scanning.
- Patch from Victor van den Elzen.
- - bpo-16181: cookiejar.http2time() now returns None if year is higher than
- datetime.MAXYEAR.
- - bpo-26513: Fixes platform module detection of Windows Server
- - bpo-23718: Fixed parsing time in week 0 before Jan 1. Original patch by
- Tamás Bence Gedai.
- - bpo-20589: Invoking Path.owner() and Path.group() on Windows now raise
- NotImplementedError instead of ImportError.
- - bpo-26177: Fixed the keys() method for Canvas and Scrollbar widgets.
- - bpo-15068: Got rid of excessive buffering in the fileinput module. The
- bufsize parameter is no longer used.
- - bpo-2202: Fix UnboundLocalError in
- AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu
- Dupuy.
- - bpo-25718: Fixed pickling and copying the accumulate() iterator with total
- is None.
- - bpo-26475: Fixed debugging output for regular expressions with the (?x)
- flag.
- - bpo-26457: Fixed the subnets() methods in IP network classes for the case
- when resulting prefix length is equal to maximal prefix length. Based on
- patch by Xiang Zhang.
- - bpo-26385: Remove the file if the internal open() call in
- NamedTemporaryFile() fails. Patch by Silent Ghost.
- - bpo-26402: Fix XML-RPC client to retry when the server shuts down a
- persistent connection. This was a regression related to the new
- http.client.RemoteDisconnected exception in 3.5.0a4.
- - bpo-25913: Leading ``<~`` is optional now in base64.a85decode() with
- adobe=True. Patch by Swati Jaiswal.
- - bpo-26186: Remove an invalid type check in importlib.util.LazyLoader.
- - bpo-26367: importlib.__import__() raises SystemError like
- builtins.__import__() when ``level`` is specified but without an
- accompanying package specified.
- - bpo-26309: In the "socketserver" module, shut down the request (closing
- the connected socket) when verify_request() returns false. Patch by Aviv
- Palivoda.
- Security
- --------
- - bpo-25939: On Windows open the cert store readonly in
- ssl.enum_certificates.
- Library
- -------
- - bpo-25995: os.walk() no longer uses FDs proportional to the tree depth.
- - bpo-26117: The os.scandir() iterator now closes file descriptor not only
- when the iteration is finished, but when it was failed with error.
- - bpo-25911: Restored support of bytes paths in os.walk() on Windows.
- - bpo-26045: Add UTF-8 suggestion to error message when posting a
- non-Latin-1 string with http.client.
- - bpo-12923: Reset FancyURLopener's redirect counter even if there is an
- exception. Based on patches by Brian Brazil and Daniel Rocco.
- - bpo-25945: Fixed a crash when unpickle the functools.partial object with
- wrong state. Fixed a leak in failed functools.partial constructor. "args"
- and "keywords" attributes of functools.partial have now always types tuple
- and dict correspondingly.
- - bpo-26202: copy.deepcopy() now correctly copies range() objects with
- non-atomic attributes.
- - bpo-23076: Path.glob() now raises a ValueError if it's called with an
- invalid pattern. Patch by Thomas Nyberg.
- - bpo-19883: Fixed possible integer overflows in zipimport.
- - bpo-26227: On Windows, getnameinfo(), gethostbyaddr() and
- gethostbyname_ex() functions of the socket module now decode the hostname
- from the ANSI code page rather than UTF-8.
- - bpo-26147: xmlrpc now works with strings not encodable with used non-UTF-8
- encoding.
- - bpo-25935: Garbage collector now breaks reference loops with OrderedDict.
- - bpo-16620: Fixed AttributeError in msilib.Directory.glob().
- - bpo-26013: Added compatibility with broken protocol 2 pickles created in
- old Python 3 versions (3.4.3 and lower).
- - bpo-25850: Use cross-compilation by default for 64-bit Windows.
- - bpo-17633: Improve zipimport's support for namespace packages.
- - bpo-24705: Fix sysconfig._parse_makefile not expanding ${} vars appearing
- before $() vars.
- - bpo-22138: Fix mock.patch behavior when patching descriptors. Restore
- original values after patching. Patch contributed by Sean McCully.
- - bpo-25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode
- option if it is safe to do so.
- - bpo-26012: Don't traverse into symlinks for ``**`` pattern in
- pathlib.Path.[r]glob().
- - bpo-24120: Ignore PermissionError when traversing a tree with
- pathlib.Path.[r]glob(). Patch by Ulrich Petri.
- - bpo-25447: fileinput now uses sys.stdin as-is if it does not have a buffer
- attribute (restores backward compatibility).
- - bpo-25447: Copying the lru_cache() wrapper object now always works,
- independently from the type of the wrapped object (by returning the
- original object unchanged).
- - bpo-24103: Fixed possible use after free in ElementTree.XMLPullParser.
- - bpo-25860: os.fwalk() no longer skips remaining directories when error
- occurs. Original patch by Samson Lee.
- - bpo-25914: Fixed and simplified OrderedDict.__sizeof__.
- - bpo-25902: Fixed various refcount issues in ElementTree iteration.
- - bpo-25717: Restore the previous behaviour of tolerating most fstat()
- errors when opening files. This was a regression in 3.5a1, and stopped
- anonymous temporary files from working in special cases.
- - bpo-24903: Fix regression in number of arguments compileall accepts when
- '-d' is specified. The check on the number of arguments has been dropped
- completely as it never worked correctly anyway.
- - bpo-25764: In the subprocess module, preserve any exception caused by
- fork() failure when preexec_fn is used.
- - bpo-6478: _strptime's regexp cache now is reset after changing timezone
- with time.tzset().
- - bpo-14285: When executing a package with the "python -m package" option,
- and package initialization fails, a proper traceback is now reported. The
- "runpy" module now lets exceptions from package initialization pass back
- to the caller, rather than raising ImportError.
- - bpo-19771: Also in runpy and the "-m" option, omit the irrelevant message
- ". . . is a package and cannot be directly executed" if the package could
- not even be initialized (e.g. due to a bad ``*.pyc`` file).
- - bpo-25177: Fixed problem with the mean of very small and very large
- numbers. As a side effect, statistics.mean and statistics.variance should
- be significantly faster.
- - bpo-25718: Fixed copying object with state with boolean value is false.
- - bpo-10131: Fixed deep copying of minidom documents. Based on patch by
- Marian Ganisin.
- - bpo-25725: Fixed a reference leak in pickle.loads() when unpickling
- invalid data including tuple instructions.
- - bpo-25663: In the Readline completer, avoid listing duplicate global
- names, and search the global namespace before searching builtins.
- - bpo-25688: Fixed file leak in ElementTree.iterparse() raising an error.
- - bpo-23914: Fixed SystemError raised by unpickler on broken pickle data.
- - bpo-25691: Fixed crash on deleting ElementTree.Element attributes.
- - bpo-25624: ZipFile now always writes a ZIP_STORED header for directory
- entries. Patch by Dingyuan Wang.
- - Skip getaddrinfo if host is already resolved. Patch by A. Jesse Jiryu
- Davis.
- - bpo-26050: Add asyncio.StreamReader.readuntil() method. Patch by Марк
- Коренберг.
- - bpo-25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X
- versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis.
- - bpo-26406: Avoid unnecessary serialization of getaddrinfo(3) calls on
- current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis.
- - bpo-26848: Fix asyncio/subprocess.communicate() to handle empty input.
- Patch by Jack O'Connor.
- - bpo-27040: Add loop.get_exception_handler method
- - bpo-27041: asyncio: Add loop.create_future method
- - bpo-27223: asyncio: Fix _read_ready and _write_ready to respect
- _conn_lost. Patch by Łukasz Langa.
- - bpo-22970: asyncio: Fix inconsistency cancelling Condition.wait. Patch by
- David Coles.
- IDLE
- ----
- - bpo-5124: Paste with text selected now replaces the selection on X11. This
- matches how paste works on Windows, Mac, most modern Linux apps, and ttk
- widgets. Original patch by Serhiy Storchaka.
- - bpo-24759: Make clear in idlelib.idle_test.__init__ that the directory is
- a private implementation of test.test_idle and tool for maintainers.
- - bpo-27196: Stop 'ThemeChanged' warnings when running IDLE tests. These
- persisted after other warnings were suppressed in #20567. Apply Serhiy
- Storchaka's update_idletasks solution to four test files. Record this
- additional advice in idle_test/README.txt
- - bpo-20567: Revise idle_test/README.txt with advice about avoiding tk
- warning messages from tests. Apply advice to several IDLE tests.
- - bpo-27117: Make colorizer htest and turtledemo work with dark themes. Move
- code for configuring text widget colors to a new function.
- - bpo-26673: When tk reports font size as 0, change to size 10. Such fonts
- on Linux prevented the configuration dialog from opening.
- - bpo-21939: Add test for IDLE's percolator. Original patch by Saimadhav
- Heblikar.
- - bpo-21676: Add test for IDLE's replace dialog. Original patch by Saimadhav
- Heblikar.
- - bpo-18410: Add test for IDLE's search dialog. Original patch by Westley
- Martínez.
- - bpo-21703: Add test for IDLE's undo delegator. Original patch by Saimadhav
- Heblikar .
- - bpo-27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks.
- - bpo-23977: Add more asserts to test_delegator.
- - bpo-20640: Add tests for idlelib.configHelpSourceEdit. Patch by Saimadhav
- Heblikar.
- - In the 'IDLE-console differences' section of the IDLE doc, clarify how
- running with IDLE affects sys.modules and the standard streams.
- - bpo-25507: fix incorrect change in IOBinding that prevented printing.
- Augment IOBinding htest to include all major IOBinding functions.
- - bpo-25905: Revert unwanted conversion of ' to ’ RIGHT SINGLE QUOTATION
- MARK in README.txt and open this and NEWS.txt with 'ascii'. Re-encode
- CREDITS.txt to utf-8 and open it with 'utf-8'.
- Documentation
- -------------
- - bpo-19489: Moved the search box from the sidebar to the header and footer
- of each page. Patch by Ammar Askar.
- - bpo-24136: Document the new PEP 448 unpacking syntax of 3.5.
- - bpo-26736: Used HTTPS for external links in the documentation if possible.
- - bpo-6953: Rework the Readline module documentation to group related
- functions together, and add more details such as what underlying Readline
- functions and variables are accessed.
- - bpo-23606: Adds note to ctypes documentation regarding cdll.msvcrt.
- - bpo-25500: Fix documentation to not claim that __import__ is searched for
- in the global scope.
- - bpo-26014: Update 3.x packaging documentation: * "See also" links to the
- new docs are now provided in the legacy pages * links to setuptools
- documentation have been updated
- Tests
- -----
- - bpo-21916: Added tests for the turtle module. Patch by ingrid, Gregory
- Loyse and Jelle Zijlstra.
- - bpo-26523: The multiprocessing thread pool (multiprocessing.dummy.Pool)
- was untested.
- - bpo-26015: Added new tests for pickling iterators of mutable sequences.
- - bpo-26325: Added test.support.check_no_resource_warning() to check that no
- ResourceWarning is emitted.
- - bpo-25940: Changed test_ssl to use self-signed.pythontest.net. This
- avoids relying on svn.python.org, which recently changed root certificate.
- - bpo-25616: Tests for OrderedDict are extracted from test_collections into
- separate file test_ordered_dict.
- - bpo-26583: Skip test_timestamp_overflow in test_import if bytecode files
- cannot be written.
- Build
- -----
- - bpo-26884: Fix linking extension modules for cross builds. Patch by Xavier
- de Gaye.
- - bpo-22359: Disable the rules for running _freeze_importlib and pgen when
- cross-compiling. The output of these programs is normally saved with the
- source code anyway, and is still regenerated when doing a native build.
- Patch by Xavier de Gaye.
- - bpo-27229: Fix the cross-compiling pgen rule for in-tree builds. Patch by
- Xavier de Gaye.
- - bpo-21668: Link audioop, _datetime, _ctypes_test modules to libm, except
- on Mac OS X. Patch written by Xavier de Gaye.
- - bpo-25702: A --with-lto configure option has been added that will enable
- link time optimizations at build time during a make profile-opt. Some
- compilers and toolchains are known to not produce stable code when using
- LTO, be sure to test things thoroughly before relying on it. It can
- provide a few % speed up over profile-opt alone.
- - bpo-26624: Adds validation of ucrtbase[d].dll version with warning for old
- versions.
- - bpo-17603: Avoid error about nonexistent fileblocks.o file by using a
- lower-level check for st_blocks in struct stat.
- - bpo-26079: Fixing the build output folder for tix-8.4.3.6. Patch by Bjoern
- Thiel.
- - bpo-26465: Update Windows builds to use OpenSSL 1.0.2g.
- - bpo-24421: Compile Modules/_math.c once, before building extensions.
- Previously it could fail to compile properly if the math and cmath builds
- were concurrent.
- - bpo-25348: Added ``--pgo`` and ``--pgo-job`` arguments to
- ``PCbuild\build.bat`` for building with Profile-Guided Optimization. The
- old ``PCbuild\build_pgo.bat`` script is now deprecated, and simply calls
- ``PCbuild\build.bat --pgo %*``.
- - bpo-25827: Add support for building with ICC to ``configure``, including a
- new ``--with-icc`` flag.
- - bpo-25696: Fix installation of Python on UNIX with make -j9.
- - bpo-26930: Update OS X 10.5+ 32-bit-only installer to build and link with
- OpenSSL 1.0.2h.
- - bpo-26268: Update Windows builds to use OpenSSL 1.0.2f.
- - bpo-25136: Support Apple Xcode 7's new textual SDK stub libraries.
- - bpo-24324: Do not enable unreachable code warnings when using gcc as the
- option does not work correctly in older versions of gcc and has been
- silently removed as of gcc-4.5.
- Windows
- -------
- - bpo-27053: Updates make_zip.py to correctly generate library ZIP file.
- - bpo-26268: Update the prepare_ssl.py script to handle OpenSSL releases
- that don't include the contents of the include directory (that is, 1.0.2e
- and later).
- - bpo-26071: bdist_wininst created binaries fail to start and find 32bit
- Python
- - bpo-26073: Update the list of magic numbers in launcher
- - bpo-26065: Excludes venv from library when generating embeddable distro.
- Tools/Demos
- -----------
- - bpo-26799: Fix python-gdb.py: don't get C types once when the Python code
- is loaded, but get C types on demand. The C types can change if
- python-gdb.py is loaded before the Python executable. Patch written by
- Thomas Ilsche.
- - bpo-26271: Fix the Freeze tool to properly use flags passed through
- configure. Patch by Daniel Shaulov.
- - bpo-26489: Add dictionary unpacking support to Tools/parser/unparse.py.
- Patch by Guo Ci Teo.
- - bpo-26316: Fix variable name typo in Argument Clinic.
- Windows
- -------
- - bpo-17500: Remove unused and outdated icons. (See also:
- https://github.com/python/pythondotorg/issues/945)
- What's New in Python 3.5.1 final?
- =================================
- *Release date: 2015-12-06*
- Core and Builtins
- -----------------
- - bpo-25709: Fixed problem with in-place string concatenation and utf-8
- cache.
- Windows
- -------
- - bpo-25715: Python 3.5.1 installer shows wrong upgrade path and incorrect
- logic for launcher detection.
- What's New in Python 3.5.1 release candidate 1?
- ===============================================
- *Release date: 2015-11-22*
- Core and Builtins
- -----------------
- - bpo-25630: Fix a possible segfault during argument parsing in functions
- that accept filesystem paths.
- - bpo-23564: Fixed a partially broken sanity check in the _posixsubprocess
- internals regarding how fds_to_pass were passed to the child. The bug had
- no actual impact as subprocess.py already avoided it.
- - bpo-25388: Fixed tokenizer crash when processing undecodable source code
- with a null byte.
- - bpo-25462: The hash of the key now is calculated only once in most
- operations in C implementation of OrderedDict.
- - bpo-22995: Default implementation of __reduce__ and __reduce_ex__ now
- rejects builtin types with not defined __new__.
- - bpo-25555: Fix parser and AST: fill lineno and col_offset of "arg" node
- when compiling AST from Python objects.
- - bpo-24802: Avoid buffer overreads when int(), float(), compile(), exec()
- and eval() are passed bytes-like objects. These objects are not
- necessarily terminated by a null byte, but the functions assumed they
- were.
- - bpo-24726: Fixed a crash and leaking NULL in repr() of OrderedDict that
- was mutated by direct calls of dict methods.
- - bpo-25449: Iterating OrderedDict with keys with unstable hash now raises
- KeyError in C implementations as well as in Python implementation.
- - bpo-25395: Fixed crash when highly nested OrderedDict structures were
- garbage collected.
- - bpo-25274: sys.setrecursionlimit() now raises a RecursionError if the new
- recursion limit is too low depending at the current recursion depth.
- Modify also the "lower-water mark" formula to make it monotonic. This mark
- is used to decide when the overflowed flag of the thread state is reset.
- - bpo-24402: Fix input() to prompt to the redirected stdout when
- sys.stdout.fileno() fails.
- - bpo-24806: Prevent builtin types that are not allowed to be subclassed
- from being subclassed through multiple inheritance.
- - bpo-24848: Fixed a number of bugs in UTF-7 decoding of misformed data.
- - bpo-25280: Import trace messages emitted in verbose (-v) mode are no
- longer formatted twice.
- - bpo-25003: On Solaris 11.3 or newer, os.urandom() now uses the getrandom()
- function instead of the getentropy() function. The getentropy() function
- is blocking to generate very good quality entropy, os.urandom() doesn't
- need such high-quality entropy.
- - bpo-25182: The stdprinter (used as sys.stderr before the io module is
- imported at startup) now uses the backslashreplace error handler.
- - bpo-25131: Make the line number and column offset of set/dict literals and
- comprehensions correspond to the opening brace.
- - bpo-25150: Hide the private _Py_atomic_xxx symbols from the public
- Python.h header to fix a compilation error with OpenMP.
- PyThreadState_GET() becomes an alias to PyThreadState_Get() to avoid ABI
- incompatibilities.
- Library
- -------
- - bpo-25626: Change three zlib functions to accept sizes that fit in
- Py_ssize_t, but internally cap those sizes to UINT_MAX. This resolves a
- regression in 3.5 where GzipFile.read() failed to read chunks larger than
- 2 or 4 GiB. The change affects the zlib.Decompress.decompress()
- max_length parameter, the zlib.decompress() bufsize parameter, and the
- zlib.Decompress.flush() length parameter.
- - bpo-25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True)
- when the OS gives priority to errors such as EACCES over EEXIST.
- - bpo-25593: Change semantics of EventLoop.stop() in asyncio.
- - bpo-6973: When we know a subprocess.Popen process has died, do not allow
- the send_signal(), terminate(), or kill() methods to do anything as they
- could potentially signal a different process.
- - bpo-25590: In the Readline completer, only call getattr() once per
- attribute.
- - bpo-25498: Fix a crash when garbage-collecting ctypes objects created by
- wrapping a memoryview. This was a regression made in 3.5a1. Based on
- patch by Eryksun.
- - bpo-25584: Added "escape" to the __all__ list in the glob module.
- - bpo-25584: Fixed recursive glob() with patterns starting with ``**``.
- - bpo-25446: Fix regression in smtplib's AUTH LOGIN support.
- - bpo-18010: Fix the pydoc web server's module search function to handle
- exceptions from importing packages.
- - bpo-25554: Got rid of circular references in regular expression parsing.
- - bpo-25510: fileinput.FileInput.readline() now returns b'' instead of '' at
- the end if the FileInput was opened with binary mode. Patch by Ryosuke
- Ito.
- - bpo-25503: Fixed inspect.getdoc() for inherited docstrings of properties.
- Original patch by John Mark Vandenberg.
- - bpo-25515: Always use os.urandom as a source of randomness in uuid.uuid4.
- - bpo-21827: Fixed textwrap.dedent() for the case when largest common
- whitespace is a substring of smallest leading whitespace. Based on patch
- by Robert Li.
- - bpo-25447: The lru_cache() wrapper objects now can be copied and pickled
- (by returning the original object unchanged).
- - bpo-25390: typing: Don't crash on Union[str, Pattern].
- - bpo-25441: asyncio: Raise error from drain() when socket is closed.
- - bpo-25410: Cleaned up and fixed minor bugs in C implementation of
- OrderedDict.
- - bpo-25411: Improved Unicode support in SMTPHandler through better use of
- the email package. Thanks to user simon04 for the patch.
- - bpo-25407: Remove mentions of the formatter module being removed in Python
- 3.6.
- - bpo-25406: Fixed a bug in C implementation of OrderedDict.move_to_end()
- that caused segmentation fault or hang in iterating after moving several
- items to the start of ordered dict.
- - bpo-25364: zipfile now works in threads disabled builds.
- - bpo-25328: smtpd's SMTPChannel now correctly raises a ValueError if both
- decode_data and enable_SMTPUTF8 are set to true.
- - bpo-25316: distutils raises OSError instead of DistutilsPlatformError when
- MSVC is not installed.
- - bpo-25380: Fixed protocol for the STACK_GLOBAL opcode in
- pickletools.opcodes.
- - bpo-23972: Updates asyncio datagram create method allowing reuseport and
- reuseaddr socket options to be set prior to binding the socket. Mirroring
- the existing asyncio create_server method the reuseaddr option for
- datagram sockets defaults to True if the O/S is 'posix' (except if the
- platform is Cygwin). Patch by Chris Laws.
- - bpo-25304: Add asyncio.run_coroutine_threadsafe(). This lets you submit a
- coroutine to a loop from another thread, returning a
- concurrent.futures.Future. By Vincent Michel.
- - bpo-25232: Fix CGIRequestHandler to split the query from the URL at the
- first question mark (?) rather than the last. Patch from Xiang Zhang.
- - bpo-24657: Prevent CGIRequestHandler from collapsing slashes in the query
- part of the URL as if it were a path. Patch from Xiang Zhang.
- - bpo-24483: C implementation of functools.lru_cache() now calculates key's
- hash only once.
- - bpo-22958: Constructor and update method of weakref.WeakValueDictionary
- now accept the self and the dict keyword arguments.
- - bpo-22609: Constructor of collections.UserDict now accepts the self
- keyword argument.
- - bpo-25111: Fixed comparison of traceback.FrameSummary.
- - bpo-25262: Added support for BINBYTES8 opcode in Python implementation of
- unpickler. Highest 32 bits of 64-bit size for BINUNICODE8 and BINBYTES8
- opcodes no longer silently ignored on 32-bit platforms in C
- implementation.
- - bpo-25034: Fix string.Formatter problem with auto-numbering and nested
- format_specs. Patch by Anthon van der Neut.
- - bpo-25233: Rewrite the guts of asyncio.Queue and asyncio.Semaphore to be
- more understandable and correct.
- - bpo-25203: Failed readline.set_completer_delims() no longer left the
- module in inconsistent state.
- - bpo-23600: Default implementation of tzinfo.fromutc() was returning wrong
- results in some cases.
- - bpo-23329: Allow the ssl module to be built with older versions of
- LibreSSL.
- - Prevent overflow in _Unpickler_Read.
- - bpo-25047: The XML encoding declaration written by Element Tree now
- respects the letter case given by the user. This restores the ability to
- write encoding names in uppercase like "UTF-8", which worked in Python 2.
- - bpo-25135: Make deque_clear() safer by emptying the deque before clearing.
- This helps avoid possible reentrancy issues.
- - bpo-19143: platform module now reads Windows version from kernel32.dll to
- avoid compatibility shims.
- - bpo-25092: Fix datetime.strftime() failure when errno was already set to
- EINVAL.
- - bpo-23517: Fix rounding in fromtimestamp() and utcfromtimestamp() methods
- of datetime.datetime: microseconds are now rounded to nearest with ties
- going to nearest even integer (ROUND_HALF_EVEN), instead of being rounding
- towards minus infinity (ROUND_FLOOR). It's important that these methods
- use the same rounding mode than datetime.timedelta to keep the property:
- (datetime(1970,1,1) + timedelta(seconds=t)) ==
- datetime.utcfromtimestamp(t). It also the rounding mode used by
- round(float) for example.
- - bpo-25155: Fix datetime.datetime.now() and datetime.datetime.utcnow() on
- Windows to support date after year 2038. It was a regression introduced in
- Python 3.5.0.
- - bpo-25108: Omitted internal frames in traceback functions print_stack(),
- format_stack(), and extract_stack() called without arguments.
- - bpo-25118: Fix a regression of Python 3.5.0 in os.waitpid() on Windows.
- - bpo-24684: socket.socket.getaddrinfo() now calls
- PyUnicode_AsEncodedString() instead of calling the encode() method of the
- host, to handle correctly custom string with an encode() method which
- doesn't return a byte string. The encoder of the IDNA codec is now called
- directly instead of calling the encode() method of the string.
- - bpo-25060: Correctly compute stack usage of the BUILD_MAP opcode.
- - bpo-24857: Comparing call_args to a long sequence now correctly returns a
- boolean result instead of raising an exception. Patch by A Kaptur.
- - bpo-23144: Make sure that HTMLParser.feed() returns all the data, even
- when convert_charrefs is True.
- - bpo-24982: shutil.make_archive() with the "zip" format now adds entries
- for directories (including empty directories) in ZIP file.
- - bpo-25019: Fixed a crash caused by setting non-string key of expat parser.
- Based on patch by John Leitch.
- - bpo-16180: Exit pdb if file has syntax error, instead of trapping user in
- an infinite loop. Patch by Xavier de Gaye.
- - bpo-24891: Fix a race condition at Python startup if the file descriptor
- of stdin (0), stdout (1) or stderr (2) is closed while Python is creating
- sys.stdin, sys.stdout and sys.stderr objects. These attributes are now set
- to None if the creation of the object failed, instead of raising an
- OSError exception. Initial patch written by Marco Paolini.
- - bpo-24992: Fix error handling and a race condition (related to garbage
- collection) in collections.OrderedDict constructor.
- - bpo-24881: Fixed setting binary mode in Python implementation of FileIO on
- Windows and Cygwin. Patch from Akira Li.
- - bpo-25578: Fix (another) memory leak in SSLSocket.getpeercer().
- - bpo-25530: Disable the vulnerable SSLv3 protocol by default when creating
- ssl.SSLContext.
- - bpo-25569: Fix memory leak in SSLSocket.getpeercert().
- - bpo-25471: Sockets returned from accept() shouldn't appear to be
- nonblocking.
- - bpo-25319: When threading.Event is reinitialized, the underlying condition
- should use a regular lock rather than a recursive lock.
- - bpo-21112: Fix regression in unittest.expectedFailure on subclasses. Patch
- from Berker Peksag.
- - bpo-24764: cgi.FieldStorage.read_multi() now ignores the Content-Length
- header in part headers. Patch written by Peter Landry and reviewed by
- Pierre Quentel.
- - bpo-24913: Fix overrun error in deque.index(). Found by John Leitch and
- Bryce Darling.
- - bpo-24774: Fix docstring in http.server.test. Patch from Chiu-Hsiang Hsu.
- - bpo-21159: Improve message in
- configparser.InterpolationMissingOptionError. Patch from Łukasz Langa.
- - bpo-20362: Honour TestCase.longMessage correctly in assertRegex. Patch
- from Ilia Kurenkov.
- - bpo-23572: Fixed functools.singledispatch on classes with falsy
- metaclasses. Patch by Ethan Furman.
- - asyncio: ensure_future() now accepts awaitable objects.
- IDLE
- ----
- - bpo-15348: Stop the debugger engine (normally in a user process) before
- closing the debugger window (running in the IDLE process). This prevents
- the RuntimeErrors that were being caught and ignored.
- - bpo-24455: Prevent IDLE from hanging when a) closing the shell while the
- debugger is active (15347); b) closing the debugger with the [X] button
- (15348); and c) activating the debugger when already active (24455). The
- patch by Mark Roseman does this by making two changes. 1. Suspend and
- resume the gui.interaction method with the tcl vwait mechanism intended
- for this purpose (instead of root.mainloop & .quit). 2. In gui.run, allow
- any existing interaction to terminate first.
- - Change 'The program' to 'Your program' in an IDLE 'kill program?' message
- to make it clearer that the program referred to is the currently running
- user program, not IDLE itself.
- - bpo-24750: Improve the appearance of the IDLE editor window status bar.
- Patch by Mark Roseman.
- - bpo-25313: Change the handling of new built-in text color themes to better
- address the compatibility problem introduced by the addition of IDLE Dark.
- Consistently use the revised idleConf.CurrentTheme everywhere in idlelib.
- - bpo-24782: Extension configuration is now a tab in the IDLE Preferences
- dialog rather than a separate dialog. The former tabs are now a sorted
- list. Patch by Mark Roseman.
- - bpo-22726: Re-activate the config dialog help button with some content
- about the other buttons and the new IDLE Dark theme.
- - bpo-24820: IDLE now has an 'IDLE Dark' built-in text color theme. It is
- more or less IDLE Classic inverted, with a cobalt blue background.
- Strings, comments, keywords, ... are still green, red, orange, ... . To
- use it with IDLEs released before November 2015, hit the 'Save as New
- Custom Theme' button and enter a new name, such as 'Custom Dark'. The
- custom theme will work with any IDLE release, and can be modified.
- - bpo-25224: README.txt is now an idlelib index for IDLE developers and
- curious users. The previous user content is now in the IDLE doc chapter.
- 'IDLE' now means 'Integrated Development and Learning Environment'.
- - bpo-24820: Users can now set breakpoint colors in Settings -> Custom
- Highlighting. Original patch by Mark Roseman.
- - bpo-24972: Inactive selection background now matches active selection
- background, as configured by users, on all systems. Found items are now
- always highlighted on Windows. Initial patch by Mark Roseman.
- - bpo-24570: Idle: make calltip and completion boxes appear on Macs affected
- by a tk regression. Initial patch by Mark Roseman.
- - bpo-24988: Idle ScrolledList context menus (used in debugger) now work on
- Mac Aqua. Patch by Mark Roseman.
- - bpo-24801: Make right-click for context menu work on Mac Aqua. Patch by
- Mark Roseman.
- - bpo-25173: Associate tkinter messageboxes with a specific widget. For Mac
- OSX, make them a 'sheet'. Patch by Mark Roseman.
- - bpo-25198: Enhance the initial html viewer now used for Idle Help.
- Properly indent fixed-pitch text (patch by Mark Roseman). Give code
- snippet a very Sphinx-like light blueish-gray background. Re-use initial
- width and height set by users for shell and editor. When the Table of
- Contents (TOC) menu is used, put the section header at the top of the
- screen.
- - bpo-25225: Condense and rewrite Idle doc section on text colors.
- - bpo-21995: Explain some differences between IDLE and console Python.
- - bpo-22820: Explain need for *print* when running file from Idle editor.
- - bpo-25224: Doc: augment Idle feature list and no-subprocess section.
- - bpo-25219: Update doc for Idle command line options. Some were missing and
- notes were not correct.
- - bpo-24861: Most of idlelib is private and subject to change. Use
- idleib.idle.* to start Idle. See idlelib.__init__.__doc__.
- - bpo-25199: Idle: add synchronization comments for future maintainers.
- - bpo-16893: Replace help.txt with help.html for Idle doc display. The new
- idlelib/help.html is rstripped Doc/build/html/library/idle.html. It looks
- better than help.txt and will better document Idle as released. The
- tkinter html viewer that works for this file was written by Mark Roseman.
- The now unused EditorWindow.HelpDialog class and helt.txt file are
- deprecated.
- - bpo-24199: Deprecate unused idlelib.idlever with possible removal in 3.6.
- - bpo-24790: Remove extraneous code (which also create 2 & 3 conflicts).
- Documentation
- -------------
- - bpo-22558: Add remaining doc links to source code for Python-coded
- modules. Patch by Yoni Lavi.
- - bpo-12067: Rewrite Comparisons section in the Expressions chapter of the
- language reference. Some of the details of comparing mixed types were
- incorrect or ambiguous. NotImplemented is only relevant at a lower level
- than the Expressions chapter. Added details of comparing range() objects,
- and default behaviour and consistency suggestions for user-defined
- classes. Patch from Andy Maier.
- - bpo-24952: Clarify the default size argument of stack_size() in the
- "threading" and "_thread" modules. Patch from Mattip.
- - bpo-23725: Overhaul tempfile docs. Note deprecated status of mktemp. Patch
- from Zbigniew Jędrzejewski-Szmek.
- - bpo-24808: Update the types of some PyTypeObject fields. Patch by Joseph
- Weston.
- - bpo-22812: Fix unittest discovery examples. Patch from Pam McA'Nulty.
- Tests
- -----
- - bpo-25449: Added tests for OrderedDict subclasses.
- - bpo-25099: Make test_compileall not fail when an entry on sys.path cannot
- be written to (commonly seen in administrative installs on Windows).
- - bpo-23919: Prevents assert dialogs appearing in the test suite.
- - ``PCbuild\rt.bat`` now accepts an unlimited number of arguments to pass
- along to regrtest.py. Previously there was a limit of 9.
- Build
- -----
- - bpo-24915: Add LLVM support for PGO builds and use the test suite to
- generate the profile data. Initial patch by Alecsandru Patrascu of Intel.
- - bpo-24910: Windows MSIs now have unique display names.
- - bpo-24986: It is now possible to build Python on Windows without errors
- when external libraries are not available.
- Windows
- -------
- - bpo-25450: Updates shortcuts to start Python in installation directory.
- - bpo-25164: Changes default all-users install directory to match per-user
- directory.
- - bpo-25143: Improves installer error messages for unsupported platforms.
- - bpo-25163: Display correct directory in installer when using non-default
- settings.
- - bpo-25361: Disables use of SSE2 instructions in Windows 32-bit build
- - bpo-25089: Adds logging to installer for case where launcher is not
- selected on upgrade.
- - bpo-25165: Windows uninstallation should not remove launcher if other
- versions remain
- - bpo-25112: py.exe launcher is missing icons
- - bpo-25102: Windows installer does not precompile for -O or -OO.
- - bpo-25081: Makes Back button in installer go back to upgrade page when
- upgrading.
- - bpo-25091: Increases font size of the installer.
- - bpo-25126: Clarifies that the non-web installer will download some
- components.
- - bpo-25213: Restores requestedExecutionLevel to manifest to disable UAC
- virtualization.
- - bpo-25022: Removed very outdated PC/example_nt/ directory.
- Tools/Demos
- -----------
- - bpo-25440: Fix output of python-config --extension-suffix.
- What's New in Python 3.5.0 final?
- =================================
- *Release date: 2015-09-13*
- Build
- -----
- - bpo-25071: Windows installer should not require TargetDir parameter when
- installing quietly.
- What's New in Python 3.5.0 release candidate 4?
- ===============================================
- *Release date: 2015-09-09*
- Library
- -------
- - bpo-25029: Fixes MemoryError in test_strptime.
- Build
- -----
- - bpo-25027: Reverts partial-static build options and adds vcruntime140.dll
- to Windows installation.
- What's New in Python 3.5.0 release candidate 3?
- ===============================================
- *Release date: 2015-09-07*
- Core and Builtins
- -----------------
- - bpo-24305: Prevent import subsystem stack frames from being counted by the
- warnings.warn(stacklevel=) parameter.
- - bpo-24912: Prevent __class__ assignment to immutable built-in objects.
- - bpo-24975: Fix AST compilation for PEP 448 syntax.
- Library
- -------
- - bpo-24917: time_strftime() buffer over-read.
- - bpo-24748: To resolve a compatibility problem found with py2exe and
- pywin32, imp.load_dynamic() once again ignores previously loaded modules
- to support Python modules replacing themselves with extension modules.
- Patch by Petr Viktorin.
- - bpo-24635: Fixed a bug in typing.py where isinstance([], typing.Iterable)
- would return True once, then False on subsequent calls.
- - bpo-24989: Fixed buffer overread in BytesIO.readline() if a position is
- set beyond size. Based on patch by John Leitch.
- - bpo-24913: Fix overrun error in deque.index(). Found by John Leitch and
- Bryce Darling.
- What's New in Python 3.5.0 release candidate 2?
- ===============================================
- *Release date: 2015-08-25*
- Core and Builtins
- -----------------
- - bpo-24769: Interpreter now starts properly when dynamic loading is
- disabled. Patch by Petr Viktorin.
- - bpo-21167: NAN operations are now handled correctly when python is
- compiled with ICC even if -fp-model strict is not specified.
- - bpo-24492: A "package" lacking a __name__ attribute when trying to perform
- a ``from .. import ...`` statement will trigger an ImportError instead of
- an AttributeError.
- Library
- -------
- - bpo-24847: Removes vcruntime140.dll dependency from Tcl/Tk.
- - bpo-24839: platform._syscmd_ver raises DeprecationWarning
- - bpo-24867: Fix Task.get_stack() for 'async def' coroutines
- What's New in Python 3.5.0 release candidate 1?
- ===============================================
- *Release date: 2015-08-09*
- Core and Builtins
- -----------------
- - bpo-24667: Resize odict in all cases that the underlying dict resizes.
- Library
- -------
- - bpo-24824: Signatures of codecs.encode() and codecs.decode() now are
- compatible with pydoc.
- - bpo-24634: Importing uuid should not try to load libc on Windows
- - bpo-24798: _msvccompiler.py doesn't properly support manifests
- - bpo-4395: Better testing and documentation of binary operators. Patch by
- Martin Panter.
- - bpo-23973: Update typing.py from GitHub repo.
- - bpo-23004: mock_open() now reads binary data correctly when the type of
- read_data is bytes. Initial patch by Aaron Hill.
- - bpo-23888: Handle fractional time in cookie expiry. Patch by ssh.
- - bpo-23652: Make it possible to compile the select module against the libc
- headers from the Linux Standard Base, which do not include some EPOLL
- macros. Patch by Matt Frank.
- - bpo-22932: Fix timezones in email.utils.formatdate. Patch from Dmitry
- Shachnev.
- - bpo-23779: imaplib raises TypeError if authenticator tries to abort. Patch
- from Craig Holmquist.
- - bpo-23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch
- written by Matthieu Gautier.
- - bpo-23254: Document how to close the TCPServer listening socket. Patch
- from Martin Panter.
- - bpo-19450: Update Windows and OS X installer builds to use SQLite 3.8.11.
- - bpo-17527: Add PATCH to wsgiref.validator. Patch from Luca Sbardella.
- - bpo-24791: Fix grammar regression for call syntax: 'g(\*a or b)'.
- IDLE
- ----
- - bpo-23672: Allow Idle to edit and run files with astral chars in name.
- Patch by Mohd Sanad Zaki Rizvi.
- - bpo-24745: Idle editor default font. Switch from Courier to
- platform-sensitive TkFixedFont. This should not affect current customized
- font selections. If there is a problem, edit
- $HOME/.idlerc/config-main.cfg and remove 'fontxxx' entries from [Editor
- Window]. Patch by Mark Roseman.
- - bpo-21192: Idle editor. When a file is run, put its name in the restart
- bar. Do not print false prompts. Original patch by Adnan Umer.
- - bpo-13884: Idle menus. Remove tearoff lines. Patch by Roger Serwy.
- Documentation
- -------------
- - bpo-24129: Clarify the reference documentation for name resolution. This
- includes removing the assumption that readers will be familiar with the
- name resolution scheme Python used prior to the introduction of lexical
- scoping for function namespaces. Patch by Ivan Levkivskyi.
- - bpo-20769: Improve reload() docs. Patch by Dorian Pula.
- - bpo-23589: Remove duplicate sentence from the FAQ. Patch by Yongzhi Pan.
- - bpo-24729: Correct IO tutorial to match implementation regarding encoding
- parameter to open function.
- Tests
- -----
- - bpo-24751: When running regrtest with the ``-w`` command line option, a
- test run is no longer marked as a failure if all tests succeed when
- re-run.
- What's New in Python 3.5.0 beta 4?
- ==================================
- *Release date: 2015-07-26*
- Core and Builtins
- -----------------
- - bpo-23573: Restored optimization of bytes.rfind() and bytearray.rfind()
- for single-byte argument on Linux.
- - bpo-24569: Make PEP 448 dictionary evaluation more consistent.
- - bpo-24583: Fix crash when set is mutated while being updated.
- - bpo-24407: Fix crash when dict is mutated while being updated.
- - bpo-24619: New approach for tokenizing async/await. As a consequence, it
- is now possible to have one-line 'async def foo(): await ..' functions.
- - bpo-24687: Plug refleak on SyntaxError in function parameters annotations.
- - bpo-15944: memoryview: Allow arbitrary formats when casting to bytes.
- Patch by Martin Panter.
- Library
- -------
- - bpo-23441: rcompleter now prints a tab character instead of displaying
- possible completions for an empty word. Initial patch by Martin Sekera.
- - bpo-24683: Fixed crashes in _json functions called with arguments of
- inappropriate type.
- - bpo-21697: shutil.copytree() now correctly handles symbolic links that
- point to directories. Patch by Eduardo Seabra and Thomas Kluyver.
- - bpo-14373: Fixed segmentation fault when gc.collect() is called during
- constructing lru_cache (C implementation).
- - bpo-24695: Fix a regression in traceback.print_exception(). If
- exc_traceback is None we shouldn't print a traceback header like described
- in the documentation.
- - bpo-24620: Random.setstate() now validates the value of state last
- element.
- - bpo-22485: Fixed an issue that caused `inspect.getsource` to return
- incorrect results on nested functions.
- - bpo-22153: Improve unittest docs. Patch from Martin Panter and evilzero.
- - bpo-24580: Symbolic group references to open group in re patterns now are
- explicitly forbidden as well as numeric group references.
- - bpo-24206: Fixed __eq__ and __ne__ methods of inspect classes.
- - bpo-24631: Fixed regression in the timeit module with multiline setup.
- - bpo-18622: unittest.mock.mock_open().reset_mock would recurse infinitely.
- Patch from Nicola Palumbo and Laurent De Buyst.
- - bpo-23661: unittest.mock side_effects can now be exceptions again. This
- was a regression vs Python 3.4. Patch from Ignacio Rossi
- - bpo-24608: chunk.Chunk.read() now always returns bytes, not str.
- - bpo-18684: Fixed reading out of the buffer in the re module.
- - bpo-24259: tarfile now raises a ReadError if an archive is truncated
- inside a data segment.
- - bpo-15014: SMTP.auth() and SMTP.login() now support RFC 4954's optional
- initial-response argument to the SMTP AUTH command.
- - bpo-24669: Fix inspect.getsource() for 'async def' functions. Patch by Kai
- Groner.
- - bpo-24688: ast.get_docstring() for 'async def' functions.
- Build
- -----
- - bpo-24603: Update Windows builds and OS X 10.5 installer to use OpenSSL
- 1.0.2d.
- What's New in Python 3.5.0 beta 3?
- ==================================
- *Release date: 2015-07-05*
- Core and Builtins
- -----------------
- - bpo-24467: Fixed possible buffer over-read in bytearray. The bytearray
- object now always allocates place for trailing null byte and it's buffer
- now is always null-terminated.
- - Upgrade to Unicode 8.0.0.
- - bpo-24345: Add Py_tp_finalize slot for the stable ABI.
- - bpo-24400: Introduce a distinct type for PEP 492 coroutines; add
- types.CoroutineType, inspect.getcoroutinestate,
- inspect.getcoroutinelocals; coroutines no longer use CO_GENERATOR flag;
- sys.set_coroutine_wrapper works only for 'async def' coroutines;
- inspect.iscoroutine no longer uses collections.abc.Coroutine, it's
- intended to test for pure 'async def' coroutines only; add new opcode:
- GET_YIELD_FROM_ITER; fix generators wrapper used in types.coroutine to be
- instance of collections.abc.Generator; collections.abc.Awaitable and
- collections.abc.Coroutine can no longer be used to detect generator-based
- coroutines--use inspect.isawaitable instead.
- - bpo-24450: Add gi_yieldfrom to generators and cr_await to coroutines.
- Contributed by Benno Leslie and Yury Selivanov.
- - bpo-19235: Add new RecursionError exception. Patch by Georg Brandl.
- Library
- -------
- - bpo-21750: mock_open.read_data can now be read from each instance, as it
- could in Python 3.3.
- - bpo-24552: Fix use after free in an error case of the _pickle module.
- - bpo-24514: tarfile now tolerates number fields consisting of only
- whitespace.
- - bpo-19176: Fixed doctype() related bugs in C implementation of
- ElementTree. A deprecation warning no longer issued by XMLParser subclass
- with default doctype() method. Direct call of doctype() now issues a
- warning. Parser's doctype() now is not called if target's doctype() is
- called. Based on patch by Martin Panter.
- - bpo-20387: Restore semantic round-trip correctness in tokenize/untokenize
- for tab-indented blocks.
- - bpo-24456: Fixed possible buffer over-read in adpcm2lin() and lin2adpcm()
- functions of the audioop module.
- - bpo-24336: The contextmanager decorator now works with functions with
- keyword arguments called "func" and "self". Patch by Martin Panter.
- - bpo-24522: Fix possible integer overflow in json accelerator module.
- - bpo-24489: ensure a previously set C errno doesn't disturb cmath.polar().
- - bpo-24408: Fixed AttributeError in measure() and metrics() methods of
- tkinter.Font.
- - bpo-14373: C implementation of functools.lru_cache() now can be used with
- methods.
- - bpo-24347: Set KeyError if PyDict_GetItemWithError returns NULL.
- - bpo-24348: Drop superfluous incref/decref.
- - bpo-24359: Check for changed OrderedDict size during iteration.
- - bpo-24368: Support keyword arguments in OrderedDict methods.
- - bpo-24362: Simplify the C OrderedDict fast nodes resize logic.
- - bpo-24377: Fix a ref leak in OrderedDict.__repr__.
- - bpo-24369: Defend against key-changes during iteration.
- Tests
- -----
- - bpo-24373: _testmultiphase and xxlimited now use tp_traverse and
- tp_finalize to avoid reference leaks encountered when combining tp_dealloc
- with PyType_FromSpec (see issue #16690 for details)
- Documentation
- -------------
- - bpo-24458: Update documentation to cover multi-phase initialization for
- extension modules (PEP 489). Patch by Petr Viktorin.
- - bpo-24351: Clarify what is meant by "identifier" in the context of
- string.Template instances.
- Build
- -----
- - bpo-24432: Update Windows builds and OS X 10.5 installer to use OpenSSL
- 1.0.2c.
- What's New in Python 3.5.0 beta 2?
- ==================================
- *Release date: 2015-05-31*
- Core and Builtins
- -----------------
- - bpo-24284: The startswith and endswith methods of the str class no longer
- return True when finding the empty string and the indexes are completely
- out of range.
- - bpo-24115: Update uses of PyObject_IsTrue(), PyObject_Not(),
- PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains()
- to check for and handle errors correctly.
- - bpo-24328: Fix importing one character extension modules.
- - bpo-11205: In dictionary displays, evaluate the key before the value.
- - bpo-24285: Fixed regression that prevented importing extension modules
- from inside packages. Patch by Petr Viktorin.
- Library
- -------
- - bpo-23247: Fix a crash in the StreamWriter.reset() of CJK codecs.
- - bpo-24270: Add math.isclose() and cmath.isclose() functions as per PEP
- 485. Contributed by Chris Barker and Tal Einat.
- - bpo-5633: Fixed timeit when the statement is a string and the setup is
- not.
- - bpo-24326: Fixed audioop.ratecv() with non-default weightB argument.
- Original patch by David Moore.
- - bpo-16991: Add a C implementation of OrderedDict.
- - bpo-23934: Fix inspect.signature to fail correctly for builtin types
- lacking signature information. Initial patch by James Powell.
- What's New in Python 3.5.0 beta 1?
- ==================================
- *Release date: 2015-05-24*
- Core and Builtins
- -----------------
- - bpo-24276: Fixed optimization of property descriptor getter.
- - bpo-24268: PEP 489: Multi-phase extension module initialization. Patch by
- Petr Viktorin.
- - bpo-23955: Add pyvenv.cfg option to suppress registry/environment lookup
- for generating sys.path on Windows.
- - bpo-24257: Fixed system error in the comparison of faked
- types.SimpleNamespace.
- - bpo-22939: Fixed integer overflow in iterator object. Patch by Clement
- Rouault.
- - bpo-23985: Fix a possible buffer overrun when deleting a slice from the
- front of a bytearray and then appending some other bytes data.
- - bpo-24102: Fixed exception type checking in standard error handlers.
- - bpo-15027: The UTF-32 encoder is now 3x to 7x faster.
- - bpo-23290: Optimize set_merge() for cases where the target is empty.
- (Contributed by Serhiy Storchaka.)
- - bpo-2292: PEP 448: Additional Unpacking Generalizations.
- - bpo-24096: Make warnings.warn_explicit more robust against mutation of the
- warnings.filters list.
- - bpo-23996: Avoid a crash when a delegated generator raises an unnormalized
- StopIteration exception. Patch by Stefan Behnel.
- - bpo-23910: Optimize property() getter calls. Patch by Joe Jevnik.
- - bpo-23911: Move path-based importlib bootstrap code to a separate frozen
- module.
- - bpo-24192: Fix namespace package imports.
- - bpo-24022: Fix tokenizer crash when processing undecodable source code.
- - bpo-9951: Added a hex() method to bytes, bytearray, and memoryview.
- - bpo-22906: PEP 479: Change StopIteration handling inside generators.
- - bpo-24017: PEP 492: Coroutines with async and await syntax.
- Library
- -------
- - bpo-14373: Added C implementation of functools.lru_cache(). Based on
- patches by Matt Joiner and Alexey Kachayev.
- - bpo-24230: The tempfile module now accepts bytes for prefix, suffix and
- dir parameters and returns bytes in such situations (matching the os
- module APIs).
- - bpo-22189: collections.UserString now supports __getnewargs__(),
- __rmod__(), casefold(), format_map(), isprintable(), and maketrans().
- Patch by Joe Jevnik.
- - bpo-24244: Prevents termination when an invalid format string is
- encountered on Windows in strftime.
- - bpo-23973: PEP 484: Add the typing module.
- - bpo-23086: The collections.abc.Sequence() abstract base class added
- *start* and *stop* parameters to the index() mixin. Patch by Devin
- Jeanpierre.
- - bpo-20035: Replaced the ``tkinter._fix`` module used for setting up the
- Tcl/Tk environment on Windows with a private function in the ``_tkinter``
- module that makes no permanent changes to the environment.
- - bpo-24257: Fixed segmentation fault in sqlite3.Row constructor with faked
- cursor type.
- - bpo-15836: assertRaises(), assertRaisesRegex(), assertWarns() and
- assertWarnsRegex() assertments now check the type of the first argument to
- prevent possible user error. Based on patch by Daniel Wagner-Hall.
- - bpo-9858: Add missing method stubs to _io.RawIOBase. Patch by Laura
- Rupprecht.
- - bpo-22955: attrgetter, itemgetter and methodcaller objects in the operator
- module now support pickling. Added readable and evaluable repr for these
- objects. Based on patch by Josh Rosenberg.
- - bpo-22107: tempfile.gettempdir() and tempfile.mkdtemp() now try again when
- a directory with the chosen name already exists on Windows as well as on
- Unix. tempfile.mkstemp() now fails early if parent directory is not valid
- (not exists or is a file) on Windows.
- - bpo-23780: Improved error message in os.path.join() with single argument.
- - bpo-6598: Increased time precision and random number range in
- email.utils.make_msgid() to strengthen the uniqueness of the message ID.
- - bpo-24091: Fixed various crashes in corner cases in C implementation of
- ElementTree.
- - bpo-21931: msilib.FCICreate() now raises TypeError in the case of a bad
- argument instead of a ValueError with a bogus FCI error number. Patch by
- Jeffrey Armstrong.
- - bpo-13866: *quote_via* argument added to urllib.parse.urlencode.
- - bpo-20098: New mangle_from policy option for email, default True for
- compat32, but False for all other policies.
- - bpo-24211: The email library now supports RFC 6532: it can generate
- headers using utf-8 instead of encoded words.
- - bpo-16314: Added support for the LZMA compression in distutils.
- - bpo-21804: poplib now supports RFC 6856 (UTF8).
- - bpo-18682: Optimized pprint functions for builtin scalar types.
- - bpo-22027: smtplib now supports RFC 6531 (SMTPUTF8).
- - bpo-23488: Random generator objects now consume 2x less memory on 64-bit.
- - bpo-1322: platform.dist() and platform.linux_distribution() functions are
- now deprecated. Initial patch by Vajrasky Kok.
- - bpo-22486: Added the math.gcd() function. The fractions.gcd() function
- now is deprecated. Based on patch by Mark Dickinson.
- - bpo-24064: Property() docstrings are now writeable. (Patch by Berker
- Peksag.)
- - bpo-22681: Added support for the koi8_t encoding.
- - bpo-22682: Added support for the kz1048 encoding.
- - bpo-23796: peek and read1 methods of BufferedReader now raise ValueError
- if they called on a closed object. Patch by John Hergenroeder.
- - bpo-21795: smtpd now supports the 8BITMIME extension whenever the new
- *decode_data* constructor argument is set to False.
- - bpo-24155: optimize heapq.heapify() for better cache performance when
- heapifying large lists.
- - bpo-21800: imaplib now supports RFC 5161 (enable), RFC 6855
- (utf8/internationalized email) and automatically encodes non-ASCII
- usernames and passwords to UTF8.
- - bpo-20274: When calling a _sqlite.Connection, it now complains if passed
- any keyword arguments. Previously it silently ignored them.
- - bpo-20274: Remove ignored and erroneous "kwargs" parameters from three
- METH_VARARGS methods on _sqlite.Connection.
- - bpo-24134: assertRaises(), assertRaisesRegex(), assertWarns() and
- assertWarnsRegex() checks now emits a deprecation warning when callable is
- None or keyword arguments except msg is passed in the context manager
- mode.
- - bpo-24018: Add a collections.abc.Generator abstract base class.
- Contributed by Stefan Behnel.
- - bpo-23880: Tkinter's getint() and getdouble() now support Tcl_Obj.
- Tkinter's getdouble() now supports any numbers (in particular int).
- - bpo-22619: Added negative limit support in the traceback module. Based on
- patch by Dmitry Kazakov.
- - bpo-24094: Fix possible crash in json.encode with poorly behaved dict
- subclasses.
- - bpo-9246: On POSIX, os.getcwd() now supports paths longer than 1025 bytes.
- Patch written by William Orr.
- - bpo-17445: add difflib.diff_bytes() to support comparison of byte strings
- (fixes a regression from Python 2).
- - bpo-23917: Fall back to sequential compilation when ProcessPoolExecutor
- doesn't exist. Patch by Claudiu Popa.
- - bpo-23008: Fixed resolving attributes with boolean value is False in
- pydoc.
- - Fix asyncio issue 235: LifoQueue and PriorityQueue's put didn't increment
- unfinished tasks (this bug was introduced when JoinableQueue was merged
- with Queue).
- - bpo-23908: os functions now reject paths with embedded null character on
- Windows instead of silently truncating them.
- - bpo-23728: binascii.crc_hqx() could return an integer outside of the range
- 0-0xffff for empty data.
- - bpo-23887: urllib.error.HTTPError now has a proper repr() representation.
- Patch by Berker Peksag.
- - asyncio: New event loop APIs: set_task_factory() and get_task_factory().
- - asyncio: async() function is deprecated in favour of ensure_future().
- - bpo-24178: asyncio.Lock, Condition, Semaphore, and BoundedSemaphore
- support new 'async with' syntax. Contributed by Yury Selivanov.
- - bpo-24179: Support 'async for' for asyncio.StreamReader. Contributed by
- Yury Selivanov.
- - bpo-24184: Add AsyncIterator and AsyncIterable ABCs to collections.abc.
- Contributed by Yury Selivanov.
- - bpo-22547: Implement informative __repr__ for inspect.BoundArguments.
- Contributed by Yury Selivanov.
- - bpo-24190: Implement inspect.BoundArgument.apply_defaults() method.
- Contributed by Yury Selivanov.
- - bpo-20691: Add 'follow_wrapped' argument to
- inspect.Signature.from_callable() and inspect.signature(). Contributed by
- Yury Selivanov.
- - bpo-24248: Deprecate inspect.Signature.from_function() and
- inspect.Signature.from_builtin().
- - bpo-23898: Fix inspect.classify_class_attrs() to support attributes with
- overloaded __eq__ and __bool__. Patch by Mike Bayer.
- - bpo-24298: Fix inspect.signature() to correctly unwrap wrappers around
- bound methods.
- IDLE
- ----
- - bpo-23184: remove unused names and imports in idlelib. Initial patch by Al
- Sweigart.
- Tests
- -----
- - bpo-21520: test_zipfile no longer fails if the word 'bad' appears anywhere
- in the name of the current directory.
- - bpo-9517: Move script_helper into the support package. Patch by Christie
- Wilson.
- Documentation
- -------------
- - bpo-22155: Add File Handlers subsection with createfilehandler to tkinter
- doc. Remove obsolete example from FAQ. Patch by Martin Panter.
- - bpo-24029: Document the name binding behavior for submodule imports.
- - bpo-24077: Fix typo in man page for -I command option: -s, not -S
- Tools/Demos
- -----------
- - bpo-24000: Improved Argument Clinic's mapping of converters to legacy
- "format units". Updated the documentation to match.
- - bpo-24001: Argument Clinic converters now use accept={type} instead of
- types={'type'} to specify the types the converter accepts.
- - bpo-23330: h2py now supports arbitrary filenames in #include.
- - bpo-24031: make patchcheck now supports git checkouts, too.
- What's New in Python 3.5.0 alpha 4?
- ===================================
- *Release date: 2015-04-19*
- Core and Builtins
- -----------------
- - bpo-22980: Under Linux, GNU/KFreeBSD and the Hurd, C extensions now
- include the architecture triplet in the extension name, to make it easy to
- test builds for different ABIs in the same working tree. Under OS X, the
- extension name now includes PEP 3149-style information.
- - bpo-22631: Added Linux-specific socket constant CAN_RAW_FD_FRAMES. Patch
- courtesy of Joe Jevnik.
- - bpo-23731: Implement PEP 488: removal of .pyo files.
- - bpo-23726: Don't enable GC for user subclasses of non-GC types that don't
- add any new fields. Patch by Eugene Toder.
- - bpo-23309: Avoid a deadlock at shutdown if a daemon thread is aborted
- while it is holding a lock to a buffered I/O object, and the main thread
- tries to use the same I/O object (typically stdout or stderr). A fatal
- error is emitted instead.
- - bpo-22977: Fixed formatting Windows error messages on Wine. Patch by
- Martin Panter.
- - bpo-23466: %c, %o, %x, and %X in bytes formatting now raise TypeError on
- non-integer input.
- - bpo-24044: Fix possible null pointer dereference in list.sort in out of
- memory conditions.
- - bpo-21354: PyCFunction_New function is exposed by python DLL again.
- Library
- -------
- - bpo-23840: tokenize.open() now closes the temporary binary file on error
- to fix a resource warning.
- - bpo-16914: new debuglevel 2 in smtplib adds timestamps to debug output.
- - bpo-7159: urllib.request now supports sending auth credentials
- automatically after the first 401. This enhancement is a superset of the
- enhancement from issue #19494 and supersedes that change.
- - bpo-23703: Fix a regression in urljoin() introduced in 901e4e52b20a. Patch
- by Demian Brecht.
- - bpo-4254: Adds _curses.update_lines_cols(). Patch by Arnon Yaari
- - bpo-19933: Provide default argument for ndigits in round. Patch by
- Vajrasky Kok.
- - bpo-23193: Add a numeric_owner parameter to tarfile.TarFile.extract and
- tarfile.TarFile.extractall. Patch by Michael Vogt and Eric Smith.
- - bpo-23342: Add a subprocess.run() function than returns a CalledProcess
- instance for a more consistent API than the existing call* functions.
- - bpo-21217: inspect.getsourcelines() now tries to compute the start and end
- lines from the code object, fixing an issue when a lambda function is used
- as decorator argument. Patch by Thomas Ballinger and Allison Kaptur.
- - bpo-24521: Fix possible integer overflows in the pickle module.
- - bpo-22931: Allow '[' and ']' in cookie values.
- - The keywords attribute of functools.partial is now always a dictionary.
- - bpo-23811: Add missing newline to the PyCompileError error message. Patch
- by Alex Shkop.
- - bpo-21116: Avoid blowing memory when allocating a multiprocessing shared
- array that's larger than 50% of the available RAM. Patch by Médéric
- Boquien.
- - bpo-22982: Improve BOM handling when seeking to multiple positions of a
- writable text file.
- - bpo-23464: Removed deprecated asyncio JoinableQueue.
- - bpo-23529: Limit the size of decompressed data when reading from GzipFile,
- BZ2File or LZMAFile. This defeats denial of service attacks using
- compressed bombs (i.e. compressed payloads which decompress to a huge
- size). Patch by Martin Panter and Nikolaus Rath.
- - bpo-21859: Added Python implementation of io.FileIO.
- - bpo-23865: close() methods in multiple modules now are idempotent and more
- robust at shutdown. If they need to release multiple resources, all are
- released even if errors occur.
- - bpo-23400: Raise same exception on both Python 2 and 3 if sem_open is not
- available. Patch by Davin Potts.
- - bpo-10838: The subprocess now module includes SubprocessError and
- TimeoutError in its list of exported names for the users wild enough to
- use ``from subprocess import *``.
- - bpo-23411: Added DefragResult, ParseResult, SplitResult,
- DefragResultBytes, ParseResultBytes, and SplitResultBytes to
- urllib.parse.__all__. Patch by Martin Panter.
- - bpo-23881: urllib.request.ftpwrapper constructor now closes the socket if
- the FTP connection failed to fix a ResourceWarning.
- - bpo-23853: :meth:`socket.socket.sendall` does no more reset the socket
- timeout each time data is sent successfully. The socket timeout is now the
- maximum total duration to send all data.
- - bpo-22721: An order of multiline pprint output of set or dict containing
- orderable and non-orderable elements no longer depends on iteration order
- of set or dict.
- - bpo-15133: _tkinter.tkapp.getboolean() now supports Tcl_Obj and always
- returns bool. tkinter.BooleanVar now validates input values (accepted
- bool, int, str, and Tcl_Obj). tkinter.BooleanVar.get() now always returns
- bool.
- - bpo-10590: xml.sax.parseString() now supports string argument.
- - bpo-23338: Fixed formatting ctypes error messages on Cygwin. Patch by
- Makoto Kato.
- - bpo-15582: inspect.getdoc() now follows inheritance chains.
- - bpo-2175: SAX parsers now support a character stream of InputSource
- object.
- - bpo-16840: Tkinter now supports 64-bit integers added in Tcl 8.4 and
- arbitrary precision integers added in Tcl 8.5.
- - bpo-23834: Fix socket.sendto(), use the C Py_ssize_t type to store the
- result of sendto() instead of the C int type.
- - bpo-23618: :meth:`socket.socket.connect` now waits until the connection
- completes instead of raising :exc:`InterruptedError` if the connection is
- interrupted by signals, signal handlers don't raise an exception and the
- socket is blocking or has a timeout. :meth:`socket.socket.connect` still
- raise :exc:`InterruptedError` for non-blocking sockets.
- - bpo-21526: Tkinter now supports new boolean type in Tcl 8.5.
- - bpo-23836: Fix the faulthandler module to handle reentrant calls to its
- signal handlers.
- - bpo-23838: linecache now clears the cache and returns an empty result on
- MemoryError.
- - bpo-10395: Added os.path.commonpath(). Implemented in posixpath and
- ntpath. Based on patch by Rafik Draoui.
- - bpo-23611: Serializing more "lookupable" objects (such as unbound methods
- or nested classes) now are supported with pickle protocols < 4.
- - bpo-13583: sqlite3.Row now supports slice indexing.
- - bpo-18473: Fixed 2to3 and 3to2 compatible pickle mappings. Fixed
- ambiguous reverse mappings. Added many new mappings. Import mapping is
- no longer applied to modules already mapped with full name mapping.
- - bpo-23485: select.select() is now retried automatically with the
- recomputed timeout when interrupted by a signal, except if the signal
- handler raises an exception. This change is part of the PEP 475.
- - bpo-23752: When built from an existing file descriptor, io.FileIO() now
- only calls fstat() once. Before fstat() was called twice, which was not
- necessary.
- - bpo-23704: collections.deque() objects now support __add__, __mul__, and
- __imul__().
- - bpo-23171: csv.Writer.writerow() now supports arbitrary iterables.
- - bpo-23745: The new email header parser now handles duplicate MIME
- parameter names without error, similar to how get_param behaves.
- - bpo-22117: Fix os.utime(), it now rounds the timestamp towards minus
- infinity (-inf) instead of rounding towards zero.
- - bpo-23310: Fix MagicMock's initializer to work with __methods__, just like
- configure_mock(). Patch by Kasia Jachim.
- Build
- -----
- - bpo-23817: FreeBSD now uses "1.0" in the SOVERSION as other operating
- systems, instead of just "1".
- - bpo-23501: Argument Clinic now generates code into separate files by
- default.
- Tests
- -----
- - bpo-23799: Added test.support.start_threads() for running and cleaning up
- multiple threads.
- - bpo-22390: test.regrtest now emits a warning if temporary files or
- directories are left after running a test.
- Tools/Demos
- -----------
- - bpo-18128: pygettext now uses standard +NNNN format in the
- POT-Creation-Date header.
- - bpo-23935: Argument Clinic's understanding of format units accepting
- bytes, bytearrays, and buffers is now consistent with both the
- documentation and the implementation.
- - bpo-23944: Argument Clinic now wraps long impl prototypes at column 78.
- - bpo-20586: Argument Clinic now ensures that functions without docstrings
- have signatures.
- - bpo-23492: Argument Clinic now generates argument parsing code with
- PyArg_Parse instead of PyArg_ParseTuple if possible.
- - bpo-23500: Argument Clinic is now smarter about generating the "#ifndef"
- (empty) definition of the methoddef macro: it's only generated once, even
- if Argument Clinic processes the same symbol multiple times, and it's
- emitted at the end of all processing rather than immediately after the
- first use.
- C API
- -----
- - bpo-23998: PyImport_ReInitLock() now checks for lock allocation error
- What's New in Python 3.5.0 alpha 3?
- ===================================
- *Release date: 2015-03-28*
- Core and Builtins
- -----------------
- - bpo-23573: Increased performance of string search operations (str.find,
- str.index, str.count, the in operator, str.split, str.partition) with
- arguments of different kinds (UCS1, UCS2, UCS4).
- - bpo-23753: Python doesn't support anymore platforms without stat() or
- fstat(), these functions are always required.
- - bpo-23681: The -b option now affects comparisons of bytes with int.
- - bpo-23632: Memoryviews now allow tuple indexing (including for
- multi-dimensional memoryviews).
- - bpo-23192: Fixed generator lambdas. Patch by Bruno Cauet.
- - bpo-23629: Fix the default __sizeof__ implementation for variable-sized
- objects.
- Library
- -------
- - bpo-14260: The groupindex attribute of regular expression pattern object
- now is non-modifiable mapping.
- - bpo-23792: Ignore KeyboardInterrupt when the pydoc pager is active. This
- mimics the behavior of the standard unix pagers, and prevents pipepager
- from shutting down while the pager itself is still running.
- - bpo-23775: pprint() of OrderedDict now outputs the same representation as
- repr().
- - bpo-23765: Removed IsBadStringPtr calls in ctypes
- - bpo-22364: Improved some re error messages using regex for hints.
- - bpo-23742: ntpath.expandvars() no longer loses unbalanced single quotes.
- - bpo-21717: The zipfile.ZipFile.open function now supports 'x' (exclusive
- creation) mode.
- - bpo-21802: The reader in BufferedRWPair now is closed even when closing
- writer failed in BufferedRWPair.close().
- - bpo-23622: Unknown escapes in regular expressions that consist of ``'\'``
- and ASCII letter now raise a deprecation warning and will be forbidden in
- Python 3.6.
- - bpo-23671: string.Template now allows specifying the "self" parameter as a
- keyword argument. string.Formatter now allows specifying the "self" and
- the "format_string" parameters as keyword arguments.
- - bpo-23502: The pprint module now supports mapping proxies.
- - bpo-17530: pprint now wraps long bytes objects and bytearrays.
- - bpo-22687: Fixed some corner cases in breaking words in tetxtwrap. Got rid
- of quadratic complexity in breaking long words.
- - bpo-4727: The copy module now uses pickle protocol 4 (PEP 3154) and
- supports copying of instances of classes whose __new__ method takes
- keyword-only arguments.
- - bpo-23491: Added a zipapp module to support creating executable zip file
- archives of Python code. Registered ".pyz" and ".pyzw" extensions on
- Windows for these archives (PEP 441).
- - bpo-23657: Avoid explicit checks for str in zipapp, adding support for
- pathlib.Path objects as arguments.
- - bpo-23688: Added support of arbitrary bytes-like objects and avoided
- unnecessary copying of memoryview in gzip.GzipFile.write(). Original patch
- by Wolfgang Maier.
- - bpo-23252: Added support for writing ZIP files to unseekable streams.
- - bpo-23647: Increase imaplib's MAXLINE to accommodate modern mailbox sizes.
- - bpo-23539: If body is None, http.client.HTTPConnection.request now sets
- Content-Length to 0 for PUT, POST, and PATCH headers to avoid 411 errors
- from some web servers.
- - bpo-22351: The nntplib.NNTP constructor no longer leaves the connection
- and socket open until the garbage collector cleans them up. Patch by
- Martin Panter.
- - bpo-23704: collections.deque() objects now support methods for index(),
- insert(), and copy(). This allows deques to be registered as a
- MutableSequence and it improves their substitutability for lists.
- - bpo-23715: :func:`signal.sigwaitinfo` and :func:`signal.sigtimedwait` are
- now retried when interrupted by a signal not in the *sigset* parameter, if
- the signal handler does not raise an exception. signal.sigtimedwait()
- recomputes the timeout with a monotonic clock when it is retried.
- - bpo-23001: Few functions in modules mmap, ossaudiodev, socket, ssl, and
- codecs, that accepted only read-only bytes-like object now accept writable
- bytes-like object too.
- - bpo-23646: If time.sleep() is interrupted by a signal, the sleep is now
- retried with the recomputed delay, except if the signal handler raises an
- exception (PEP 475).
- - bpo-23136: _strptime now uniformly handles all days in week 0, including
- Dec 30 of previous year. Based on patch by Jim Carroll.
- - bpo-23700: Iterator of NamedTemporaryFile now keeps a reference to
- NamedTemporaryFile instance. Patch by Bohuslav Kabrda.
- - bpo-22903: The fake test case created by unittest.loader when it fails
- importing a test module is now picklable.
- - bpo-22181: On Linux, os.urandom() now uses the new getrandom() syscall if
- available, syscall introduced in the Linux kernel 3.17. It is more
- reliable and more secure, because it avoids the need of a file descriptor
- and waits until the kernel has enough entropy.
- - bpo-2211: Updated the implementation of the http.cookies.Morsel class.
- Setting attributes key, value and coded_value directly now is deprecated.
- update() and setdefault() now transform and check keys. Comparing for
- equality now takes into account attributes key, value and coded_value.
- copy() now returns a Morsel, not a dict. repr() now contains all
- attributes. Optimized checking keys and quoting values. Added new tests.
- Original patch by Demian Brecht.
- - bpo-18983: Allow selection of output units in timeit. Patch by Julian
- Gindi.
- - bpo-23631: Fix traceback.format_list when a traceback has been mutated.
- - bpo-23568: Add rdivmod support to MagicMock() objects. Patch by Håkan
- Lövdahl.
- - bpo-2052: Add charset parameter to HtmlDiff.make_file().
- - bpo-23668: Support os.truncate and os.ftruncate on Windows.
- - bpo-23138: Fixed parsing cookies with absent keys or values in cookiejar.
- Patch by Demian Brecht.
- - bpo-23051: multiprocessing.Pool methods imap() and imap_unordered() now
- handle exceptions raised by an iterator. Patch by Alon Diamant and Davin
- Potts.
- - bpo-23581: Add matmul support to MagicMock. Patch by Håkan Lövdahl.
- - bpo-23566: enable(), register(), dump_traceback() and
- dump_traceback_later() functions of faulthandler now accept file
- descriptors. Patch by Wei Wu.
- - bpo-22928: Disabled HTTP header injections in http.client. Original patch
- by Demian Brecht.
- - bpo-23615: Modules bz2, tarfile and tokenize now can be reloaded with
- imp.reload(). Patch by Thomas Kluyver.
- - bpo-23605: os.walk() now calls os.scandir() instead of os.listdir(). The
- usage of os.scandir() reduces the number of calls to os.stat(). Initial
- patch written by Ben Hoyt.
- Build
- -----
- - bpo-23585: make patchcheck will ensure the interpreter is built.
- Tests
- -----
- - bpo-23583: Added tests for standard IO streams in IDLE.
- - bpo-22289: Prevent test_urllib2net failures due to ftp connection timeout.
- Tools/Demos
- -----------
- - bpo-22826: The result of open() in Tools/freeze/bkfile.py is now better
- compatible with regular files (in particular it now supports the context
- management protocol).
- What's New in Python 3.5.0 alpha 2?
- ===================================
- *Release date: 2015-03-09*
- Core and Builtins
- -----------------
- - bpo-23571: PyObject_Call() and PyCFunction_Call() now raise a SystemError
- if a function returns a result and raises an exception. The SystemError is
- chained to the previous exception.
- Library
- -------
- - bpo-22524: New os.scandir() function, part of the PEP 471: "os.scandir()
- function -- a better and faster directory iterator". Patch written by Ben
- Hoyt.
- - bpo-23103: Reduced the memory consumption of IPv4Address and IPv6Address.
- - bpo-21793: BaseHTTPRequestHandler again logs response code as numeric, not
- as stringified enum. Patch by Demian Brecht.
- - bpo-23476: In the ssl module, enable OpenSSL's X509_V_FLAG_TRUSTED_FIRST
- flag on certificate stores when it is available.
- - bpo-23576: Avoid stalling in SSL reads when EOF has been reached in the
- SSL layer but the underlying connection hasn't been closed.
- - bpo-23504: Added an __all__ to the types module.
- - bpo-23563: Optimized utility functions in urllib.parse.
- - bpo-7830: Flatten nested functools.partial.
- - bpo-20204: Added the __module__ attribute to _tkinter classes.
- - bpo-19980: Improved help() for non-recognized strings. help('') now shows
- the help on str. help('help') now shows the help on help(). Original
- patch by Mark Lawrence.
- - bpo-23521: Corrected pure python implementation of timedelta division.
- Eliminated OverflowError from ``timedelta * float`` for some floats;
- Corrected rounding in timedelta true division.
- - bpo-21619: Popen objects no longer leave a zombie after exit in the with
- statement if the pipe was broken. Patch by Martin Panter.
- - bpo-22936: Make it possible to show local variables in tracebacks for both
- the traceback module and unittest.
- - bpo-15955: Add an option to limit the output size in bz2.decompress().
- Patch by Nikolaus Rath.
- - bpo-6639: Module-level turtle functions no longer raise TclError after
- closing the window.
- - bpo-814253: Group references and conditional group references now work in
- lookbehind assertions in regular expressions. (See also: bpo-9179)
- - bpo-23215: Multibyte codecs with custom error handlers that ignores errors
- consumed too much memory and raised SystemError or MemoryError. Original
- patch by Aleksi Torhamo.
- - bpo-5700: io.FileIO() called flush() after closing the file. flush() was
- not called in close() if closefd=False.
- - bpo-23374: Fixed pydoc failure with non-ASCII files when stdout encoding
- differs from file system encoding (e.g. on Mac OS).
- - bpo-23481: Remove RC4 from the SSL module's default cipher list.
- - bpo-21548: Fix pydoc.synopsis() and pydoc.apropos() on modules with empty
- docstrings.
- - bpo-22885: Fixed arbitrary code execution vulnerability in the dbm.dumb
- module. Original patch by Claudiu Popa.
- - bpo-23239: ssl.match_hostname() now supports matching of IP addresses.
- - bpo-23146: Fix mishandling of absolute Windows paths with forward slashes
- in pathlib.
- - bpo-23096: Pickle representation of floats with protocol 0 now is the same
- for both Python and C implementations.
- - bpo-19105: pprint now more efficiently uses free space at the right.
- - bpo-14910: Add allow_abbrev parameter to argparse.ArgumentParser. Patch by
- Jonathan Paugh, Steven Bethard, paul j3 and Daniel Eriksson.
- - bpo-21717: tarfile.open() now supports 'x' (exclusive creation) mode.
- - bpo-23344: marshal.dumps() is now 20-25% faster on average.
- - bpo-20416: marshal.dumps() with protocols 3 and 4 is now 40-50% faster on
- average.
- - bpo-23421: Fixed compression in tarfile CLI. Patch by wdv4758h.
- - bpo-23367: Fix possible overflows in the unicodedata module.
- - bpo-23361: Fix possible overflow in Windows subprocess creation code.
- - logging.handlers.QueueListener now takes a respect_handler_level keyword
- argument which, if set to True, will pass messages to handlers taking
- handler levels into account.
- - bpo-19705: turtledemo now has a visual sorting algorithm demo. Original
- patch from Jason Yeo.
- - bpo-23801: Fix issue where cgi.FieldStorage did not always ignore the
- entire preamble to a multipart body.
- Build
- -----
- - bpo-23445: pydebug builds now use "gcc -Og" where possible, to make the
- resulting executable faster.
- - bpo-23686: Update OS X 10.5 installer build to use OpenSSL 1.0.2a.
- C API
- -----
- - bpo-20204: Deprecation warning is now raised for builtin types without the
- __module__ attribute.
- Windows
- -------
- - bpo-23465: Implement PEP 486 - Make the Python Launcher aware of virtual
- environments. Patch by Paul Moore.
- - bpo-23437: Make user scripts directory versioned on Windows. Patch by Paul
- Moore.
- What's New in Python 3.5.0 alpha 1?
- ===================================
- *Release date: 2015-02-08*
- Core and Builtins
- -----------------
- - bpo-23285: PEP 475 - EINTR handling.
- - bpo-22735: Fix many edge cases (including crashes) involving custom mro()
- implementations.
- - bpo-22896: Avoid using PyObject_AsCharBuffer(), PyObject_AsReadBuffer()
- and PyObject_AsWriteBuffer().
- - bpo-21295: Revert some changes (issue #16795) to AST line numbers and
- column offsets that constituted a regression.
- - bpo-22986: Allow changing an object's __class__ between a dynamic type and
- static type in some cases.
- - bpo-15859: PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() and
- PyUnicode_EncodeCodePage() now raise an exception if the object is not a
- Unicode object. For PyUnicode_EncodeFSDefault(), it was already the case
- on platforms other than Windows. Patch written by Campbell Barton.
- - bpo-21408: The default __ne__() now returns NotImplemented if __eq__()
- returned NotImplemented. Original patch by Martin Panter.
- - bpo-23321: Fixed a crash in str.decode() when error handler returned
- replacement string longer than malformed input data.
- - bpo-22286: The "backslashreplace" error handlers now works with decoding
- and translating.
- - bpo-23253: Delay-load ShellExecute[AW] in os.startfile for reduced startup
- overhead on Windows.
- - bpo-22038: pyatomic.h now uses stdatomic.h or GCC built-in functions for
- atomic memory access if available. Patch written by Vitor de Lima and
- Gustavo Temple.
- - bpo-20284: %-interpolation (aka printf) formatting added for bytes and
- bytearray.
- - bpo-23048: Fix jumping out of an infinite while loop in the pdb.
- - bpo-20335: bytes constructor now raises TypeError when encoding or errors
- is specified with non-string argument. Based on patch by Renaud Blanch.
- - bpo-22834: If the current working directory ends up being set to a
- non-existent directory then import will no longer raise FileNotFoundError.
- - bpo-22869: Move the interpreter startup & shutdown code to a new dedicated
- pylifecycle.c module
- - bpo-22847: Improve method cache efficiency.
- - bpo-22335: Fix crash when trying to enlarge a bytearray to 0x7fffffff
- bytes on a 32-bit platform.
- - bpo-22653: Fix an assertion failure in debug mode when doing a reentrant
- dict insertion in debug mode.
- - bpo-22643: Fix integer overflow in Unicode case operations (upper, lower,
- title, swapcase, casefold).
- - bpo-17636: Circular imports involving relative imports are now supported.
- - bpo-22604: Fix assertion error in debug mode when dividing a complex
- number by (nan+0j).
- - bpo-21052: Do not raise ImportWarning when sys.path_hooks or sys.meta_path
- are set to None.
- - bpo-16518: Use 'bytes-like object required' in error messages that
- previously used the far more cryptic "'x' does not support the buffer
- protocol.
- - bpo-22470: Fixed integer overflow issues in "backslashreplace",
- "xmlcharrefreplace", and "surrogatepass" error handlers.
- - bpo-22540: speed up `PyObject_IsInstance` and `PyObject_IsSubclass` in the
- common case that the second argument has metaclass `type`.
- - bpo-18711: Add a new `PyErr_FormatV` function, similar to `PyErr_Format`
- but accepting a `va_list` argument.
- - bpo-22520: Fix overflow checking when generating the repr of a unicode
- object.
- - bpo-22519: Fix overflow checking in PyBytes_Repr.
- - bpo-22518: Fix integer overflow issues in latin-1 encoding.
- - bpo-16324: _charset parameter of MIMEText now also accepts
- email.charset.Charset instances. Initial patch by Claude Paroz.
- - bpo-1764286: Fix inspect.getsource() to support decorated functions. Patch
- by Claudiu Popa.
- - bpo-18554: os.__all__ includes posix functions.
- - bpo-21391: Use os.path.abspath in the shutil module.
- - bpo-11471: avoid generating a JUMP_FORWARD instruction at the end of an
- if-block if there is no else-clause. Original patch by Eugene Toder.
- - bpo-22215: Now ValueError is raised instead of TypeError when str or bytes
- argument contains not permitted null character or byte.
- - bpo-22258: Fix the internal function set_inheritable() on Illumos. This
- platform exposes the function ``ioctl(FIOCLEX)``, but calling it fails
- with errno is ENOTTY: "Inappropriate ioctl for device". set_inheritable()
- now falls back to the slower ``fcntl()`` (``F_GETFD`` and then
- ``F_SETFD``).
- - bpo-21389: Displaying the __qualname__ of the underlying function in the
- repr of a bound method.
- - bpo-22206: Using pthread, PyThread_create_key() now sets errno to ENOMEM
- and returns -1 (error) on integer overflow.
- - bpo-20184: Argument Clinic based signature introspection added for 30 of
- the builtin functions.
- - bpo-22116: C functions and methods (of the 'builtin_function_or_method'
- type) can now be weakref'ed. Patch by Wei Wu.
- - bpo-22077: Improve index error messages for bytearrays, bytes, lists, and
- tuples by adding 'or slices'. Added ', not <typename>' for bytearrays.
- Original patch by Claudiu Popa.
- - bpo-20179: Apply Argument Clinic to bytes and bytearray. Patch by Tal
- Einat.
- - bpo-22082: Clear interned strings in slotdefs.
- - Upgrade Unicode database to Unicode 7.0.0.
- - bpo-21897: Fix a crash with the f_locals attribute with closure variables
- when frame.clear() has been called.
- - bpo-21205: Add a new ``__qualname__`` attribute to generator, the
- qualified name, and use it in the representation of a generator
- (``repr(gen)``). The default name of the generator (``__name__``
- attribute) is now get from the function instead of the code. Use
- ``gen.gi_code.co_name`` to get the name of the code.
- - bpo-21669: With the aid of heuristics in SyntaxError.__init__, the parser
- now attempts to generate more meaningful (or at least more search engine
- friendly) error messages when "exec" and "print" are used as statements.
- - bpo-21642: In the conditional if-else expression, allow an integer written
- with no space between itself and the ``else`` keyword (e.g. ``True if
- 42else False``) to be valid syntax.
- - bpo-21523: Fix over-pessimistic computation of the stack effect of some
- opcodes in the compiler. This also fixes a quadratic compilation time
- issue noticeable when compiling code with a large number of "and" and "or"
- operators.
- - bpo-21418: Fix a crash in the builtin function super() when called without
- argument and without current frame (ex: embedded Python).
- - bpo-21425: Fix flushing of standard streams in the interactive
- interpreter.
- - bpo-21435: In rare cases, when running finalizers on objects in cyclic
- trash a bad pointer dereference could occur due to a subtle flaw in
- internal iteration logic.
- - bpo-21377: PyBytes_Concat() now tries to concatenate in-place when the
- first argument has a reference count of 1. Patch by Nikolaus Rath.
- - bpo-20355: -W command line options now have higher priority than the
- PYTHONWARNINGS environment variable. Patch by Arfrever.
- - bpo-21274: Define PATH_MAX for GNU/Hurd in Python/pythonrun.c.
- - bpo-20904: Support setting FPU precision on m68k.
- - bpo-21209: Fix sending tuples to custom generator objects with the yield
- from syntax.
- - bpo-21193: pow(a, b, c) now raises ValueError rather than TypeError when b
- is negative. Patch by Josh Rosenberg.
- - bpo-21176: PEP 465: Add the '@' operator for matrix multiplication.
- - bpo-21134: Fix segfault when str is called on an uninitialized
- UnicodeEncodeError, UnicodeDecodeError, or UnicodeTranslateError object.
- - bpo-19537: Fix PyUnicode_DATA() alignment under m68k. Patch by Andreas
- Schwab.
- - bpo-20929: Add a type cast to avoid shifting a negative number.
- - bpo-20731: Properly position in source code files even if they are opened
- in text mode. Patch by Serhiy Storchaka.
- - bpo-20637: Key-sharing now also works for instance dictionaries of
- subclasses. Patch by Peter Ingebretson.
- - bpo-8297: Attributes missing from modules now include the module name in
- the error text. Original patch by ysj.ray.
- - bpo-19995: %c, %o, %x, and %X now raise TypeError on non-integer input.
- - bpo-19655: The ASDL parser - used by the build process to generate code
- for managing the Python AST in C - was rewritten. The new parser is self
- contained and does not require to carry long the spark.py parser-generator
- library; spark.py was removed from the source base.
- - bpo-12546: Allow ``\x00`` to be used as a fill character when using str,
- int, float, and complex __format__ methods.
- - bpo-20480: Add ipaddress.reverse_pointer. Patch by Leon Weber.
- - bpo-13598: Modify string.Formatter to support auto-numbering of
- replacement fields. It now matches the behavior of str.format() in this
- regard. Patches by Phil Elson and Ramchandra Apte.
- - bpo-8931: Make alternate formatting ('#') for type 'c' raise an exception.
- In versions prior to 3.5, '#' with 'c' had no effect. Now specifying it is
- an error. Patch by Torsten Landschoff.
- - bpo-23165: Perform overflow checks before allocating memory in the
- _Py_char2wchar function.
- Library
- -------
- - bpo-23399: pyvenv creates relative symlinks where possible.
- - bpo-20289: cgi.FieldStorage() now supports the context management
- protocol.
- - bpo-13128: Print response headers for CONNECT requests when debuglevel >
- 0. Patch by Demian Brecht.
- - bpo-15381: Optimized io.BytesIO to make less allocations and copyings.
- - bpo-22818: Splitting on a pattern that could match an empty string now
- raises a warning. Patterns that can only match empty strings are now
- rejected.
- - bpo-23099: Closing io.BytesIO with exported buffer is rejected now to
- prevent corrupting exported buffer.
- - bpo-23326: Removed __ne__ implementations. Since fixing default __ne__
- implementation in issue #21408 they are redundant.
- - bpo-23363: Fix possible overflow in itertools.permutations.
- - bpo-23364: Fix possible overflow in itertools.product.
- - bpo-23366: Fixed possible integer overflow in itertools.combinations.
- - bpo-23369: Fixed possible integer overflow in
- _json.encode_basestring_ascii.
- - bpo-23353: Fix the exception handling of generators in
- PyEval_EvalFrameEx(). At entry, save or swap the exception state even if
- PyEval_EvalFrameEx() is called with throwflag=0. At exit, the exception
- state is now always restored or swapped, not only if why is WHY_YIELD or
- WHY_RETURN. Patch co-written with Antoine Pitrou.
- - bpo-14099: Restored support of writing ZIP files to tellable but
- non-seekable streams.
- - bpo-14099: Writing to ZipFile and reading multiple ZipExtFiles is
- threadsafe now.
- - bpo-19361: JSON decoder now raises JSONDecodeError instead of ValueError.
- - bpo-18518: timeit now rejects statements which can't be compiled outside a
- function or a loop (e.g. "return" or "break").
- - bpo-23094: Fixed readline with frames in Python implementation of pickle.
- - bpo-23268: Fixed bugs in the comparison of ipaddress classes.
- - bpo-21408: Removed incorrect implementations of __ne__() which didn't
- returned NotImplemented if __eq__() returned NotImplemented. The default
- __ne__() now works correctly.
- - bpo-19996: :class:`email.feedparser.FeedParser` now handles (malformed)
- headers with no key rather than assuming the body has started.
- - bpo-20188: Support Application-Layer Protocol Negotiation (ALPN) in the
- ssl module.
- - bpo-23133: Pickling of ipaddress objects now produces more compact and
- portable representation.
- - bpo-23248: Update ssl error codes from latest OpenSSL git master.
- - bpo-23266: Much faster implementation of ipaddress.collapse_addresses()
- when there are many non-consecutive addresses.
- - bpo-23098: 64-bit dev_t is now supported in the os module.
- - bpo-21817: When an exception is raised in a task submitted to a
- ProcessPoolExecutor, the remote traceback is now displayed in the parent
- process. Patch by Claudiu Popa.
- - bpo-15955: Add an option to limit output size when decompressing LZMA
- data. Patch by Nikolaus Rath and Martin Panter.
- - bpo-23250: In the http.cookies module, capitalize "HttpOnly" and "Secure"
- as they are written in the standard.
- - bpo-23063: In the distutils' check command, fix parsing of reST with code
- or code-block directives.
- - bpo-23209: selectors.BaseSelector.get_key() now raises a RuntimeError if
- the selector is closed. And selectors.BaseSelector.close() now clears its
- internal reference to the selector mapping to break a reference cycle.
- Initial patch written by Martin Richard. (See also: bpo-23225)
- - bpo-17911: Provide a way to seed the linecache for a PEP-302 module
- without actually loading the code.
- - bpo-17911: Provide a new object API for traceback, including the ability
- to not lookup lines at all until the traceback is actually rendered,
- without any trace of the original objects being kept alive.
- - bpo-19777: Provide a home() classmethod on Path objects. Contributed by
- Victor Salgado and Mayank Tripathi.
- - bpo-23206: Make ``json.dumps(..., ensure_ascii=False)`` as fast as the
- default case of ``ensure_ascii=True``. Patch by Naoki Inada.
- - bpo-23185: Add math.inf and math.nan constants.
- - bpo-23186: Add ssl.SSLObject.shared_ciphers() and
- ssl.SSLSocket.shared_ciphers() to fetch the client's list ciphers sent at
- handshake.
- - bpo-23143: Remove compatibility with OpenSSLs older than 0.9.8.
- - bpo-23132: Improve performance and introspection support of comparison
- methods created by functool.total_ordering.
- - bpo-19776: Add an expanduser() method on Path objects.
- - bpo-23112: Fix SimpleHTTPServer to correctly carry the query string and
- fragment when it redirects to add a trailing slash.
- - bpo-21793: Added http.HTTPStatus enums (i.e. HTTPStatus.OK,
- HTTPStatus.NOT_FOUND). Patch by Demian Brecht.
- - bpo-23093: In the io, module allow more operations to work on detached
- streams.
- - bpo-23111: In the ftplib, make ssl.PROTOCOL_SSLv23 the default protocol
- version.
- - bpo-22585: On OpenBSD 5.6 and newer, os.urandom() now calls getentropy(),
- instead of reading /dev/urandom, to get pseudo-random bytes.
- - bpo-19104: pprint now produces evaluable output for wrapped strings.
- - bpo-23071: Added missing names to codecs.__all__. Patch by Martin Panter.
- - bpo-22783: Pickling now uses the NEWOBJ opcode instead of the NEWOBJ_EX
- opcode if possible.
- - bpo-15513: Added a __sizeof__ implementation for pickle classes.
- - bpo-19858: pickletools.optimize() now aware of the MEMOIZE opcode, can
- produce more compact result and no longer produces invalid output if input
- data contains MEMOIZE opcodes together with PUT or BINPUT opcodes.
- - bpo-22095: Fixed HTTPConnection.set_tunnel with default port. The port
- value in the host header was set to "None". Patch by Demian Brecht.
- - bpo-23016: A warning no longer produces an AttributeError when the program
- is run with pythonw.exe.
- - bpo-21775: shutil.copytree(): fix crash when copying to VFAT. An exception
- handler assumed that OSError objects always have a 'winerror' attribute.
- That is not the case, so the exception handler itself raised
- AttributeError when run on Linux (and, presumably, any other non-Windows
- OS). Patch by Greg Ward.
- - bpo-1218234: Fix inspect.getsource() to load updated source of reloaded
- module. Initial patch by Berker Peksag.
- - bpo-21740: Support wrapped callables in doctest. Patch by Claudiu Popa.
- - bpo-23009: Make sure selectors.EpollSelecrtor.select() works when no FD is
- registered.
- - bpo-22959: In the constructor of http.client.HTTPSConnection, prefer the
- context's check_hostname attribute over the *check_hostname* parameter.
- - bpo-22696: Add function :func:`sys.is_finalizing` to know about
- interpreter shutdown.
- - bpo-16043: Add a default limit for the amount of data
- xmlrpclib.gzip_decode will return. This resolves CVE-2013-1753.
- - bpo-14099: ZipFile.open() no longer reopen the underlying file. Objects
- returned by ZipFile.open() can now operate independently of the ZipFile
- even if the ZipFile was created by passing in a file-like object as the
- first argument to the constructor.
- - bpo-22966: Fix __pycache__ pyc file name clobber when pyc_compile is asked
- to compile a source file containing multiple dots in the source file name.
- - bpo-21971: Update turtledemo doc and add module to the index.
- - bpo-21032: Fixed socket leak if HTTPConnection.getresponse() fails.
- Original patch by Martin Panter.
- - bpo-22407: Deprecated the use of re.LOCALE flag with str patterns or
- re.ASCII. It was newer worked.
- - bpo-22902: The "ip" command is now used on Linux to determine MAC address
- in uuid.getnode(). Pach by Bruno Cauet.
- - bpo-22960: Add a context argument to xmlrpclib.ServerProxy constructor.
- - bpo-22389: Add contextlib.redirect_stderr().
- - bpo-21356: Make ssl.RAND_egd() optional to support LibreSSL. The
- availability of the function is checked during the compilation. Patch
- written by Bernard Spil.
- - bpo-22915: SAX parser now supports files opened with file descriptor or
- bytes path.
- - bpo-22609: Constructors and update methods of mapping classes in the
- collections module now accept the self keyword argument.
- - bpo-22940: Add readline.append_history_file.
- - bpo-19676: Added the "namereplace" error handler.
- - bpo-22788: Add *context* parameter to logging.handlers.HTTPHandler.
- - bpo-22921: Allow SSLContext to take the *hostname* parameter even if
- OpenSSL doesn't support SNI.
- - bpo-22894: TestCase.subTest() would cause the test suite to be stopped
- when in failfast mode, even in the absence of failures.
- - bpo-22796: HTTP cookie parsing is now stricter, in order to protect
- against potential injection attacks.
- - bpo-22370: Windows detection in pathlib is now more robust.
- - bpo-22841: Reject coroutines in asyncio add_signal_handler(). Patch by
- Ludovic.Gasc.
- - bpo-19494: Added urllib.request.HTTPBasicPriorAuthHandler. Patch by Matej
- Cepl.
- - bpo-22578: Added attributes to the re.error class.
- - bpo-22849: Fix possible double free in the io.TextIOWrapper constructor.
- - bpo-12728: Different Unicode characters having the same uppercase but
- different lowercase are now matched in case-insensitive regular
- expressions.
- - bpo-22821: Fixed fcntl() with integer argument on 64-bit big-endian
- platforms.
- - bpo-21650: Add an `--sort-keys` option to json.tool CLI.
- - bpo-22824: Updated reprlib output format for sets to use set literals.
- Patch contributed by Berker Peksag.
- - bpo-22824: Updated reprlib output format for arrays to display empty
- arrays without an unnecessary empty list. Suggested by Serhiy Storchaka.
- - bpo-22406: Fixed the uu_codec codec incorrectly ported to 3.x. Based on
- patch by Martin Panter.
- - bpo-17293: uuid.getnode() now determines MAC address on AIX using netstat.
- Based on patch by Aivars Kalvāns.
- - bpo-22769: Fixed ttk.Treeview.tag_has() when called without arguments.
- - bpo-22417: Verify certificates by default in httplib (PEP 476).
- - bpo-22775: Fixed unpickling of http.cookies.SimpleCookie with protocol 2
- and above. Patch by Tim Graham.
- - bpo-22776: Brought excluded code into the scope of a try block in
- SysLogHandler.emit().
- - bpo-22665: Add missing get_terminal_size and SameFileError to
- shutil.__all__.
- - bpo-6623: Remove deprecated Netrc class in the ftplib module. Patch by
- Matt Chaput.
- - bpo-17381: Fixed handling of case-insensitive ranges in regular
- expressions.
- - bpo-22410: Module level functions in the re module now cache compiled
- locale-dependent regular expressions taking into account the locale.
- - bpo-22759: Query methods on pathlib.Path() (exists(), is_dir(), etc.) now
- return False when the underlying stat call raises NotADirectoryError.
- - bpo-8876: distutils now falls back to copying files when hard linking
- doesn't work. This allows use with special filesystems such as VirtualBox
- shared folders.
- - bpo-22217: Implemented reprs of classes in the zipfile module.
- - bpo-22457: Honour load_tests in the start_dir of discovery.
- - bpo-18216: gettext now raises an error when a .mo file has an unsupported
- major version number. Patch by Aaron Hill.
- - bpo-13918: Provide a locale.delocalize() function which can remove
- locale-specific number formatting from a string representing a number,
- without then converting it to a specific type. Patch by Cédric Krier.
- - bpo-22676: Make the pickling of global objects which don't have a
- __module__ attribute less slow.
- - bpo-18853: Fixed ResourceWarning in shlex.__nain__.
- - bpo-9351: Defaults set with set_defaults on an argparse subparser are no
- longer ignored when also set on the parent parser.
- - bpo-7559: unittest test loading ImportErrors are reported as import errors
- with their import exception rather than as attribute errors after the
- import has already failed.
- - bpo-19746: Make it possible to examine the errors from unittest discovery
- without executing the test suite. The new `errors` attribute on TestLoader
- exposes these non-fatal errors encountered during discovery.
- - bpo-21991: Make email.headerregistry's header 'params' attributes be
- read-only (MappingProxyType). Previously the dictionary was modifiable
- but a new one was created on each access of the attribute.
- - bpo-22638: SSLv3 is now disabled throughout the standard library. It can
- still be enabled by instantiating a SSLContext manually.
- - bpo-22641: In asyncio, the default SSL context for client connections is
- now created using ssl.create_default_context(), for stronger security.
- - bpo-17401: Include closefd in io.FileIO repr.
- - bpo-21338: Add silent mode for compileall. quiet parameters of
- compile_{dir, file, path} functions now have a multilevel value. Also, -q
- option of the CLI now have a multilevel value. Patch by Thomas Kluyver.
- - bpo-20152: Convert the array and cmath modules to Argument Clinic.
- - bpo-18643: Add socket.socketpair() on Windows.
- - bpo-22435: Fix a file descriptor leak when socketserver bind fails.
- - bpo-13096: Fixed segfault in CTypes POINTER handling of large values.
- - bpo-11694: Raise ConversionError in xdrlib as documented. Patch by Filip
- Gruszczyński and Claudiu Popa.
- - bpo-19380: Optimized parsing of regular expressions.
- - bpo-1519638: Now unmatched groups are replaced with empty strings in
- re.sub() and re.subn().
- - bpo-18615: sndhdr.what/whathdr now return a namedtuple.
- - bpo-22462: Fix pyexpat's creation of a dummy frame to make it appear in
- exception tracebacks.
- - bpo-21965: Add support for in-memory SSL to the ssl module. Patch by
- Geert Jansen.
- - bpo-21173: Fix len() on a WeakKeyDictionary when .clear() was called with
- an iterator alive.
- - bpo-11866: Eliminated race condition in the computation of names for new
- threads.
- - bpo-21905: Avoid RuntimeError in pickle.whichmodule() when sys.modules is
- mutated while iterating. Patch by Olivier Grisel.
- - bpo-11271: concurrent.futures.Executor.map() now takes a *chunksize*
- argument to allow batching of tasks in child processes and improve
- performance of ProcessPoolExecutor. Patch by Dan O'Reilly.
- - bpo-21883: os.path.join() and os.path.relpath() now raise a TypeError with
- more helpful error message for unsupported or mismatched types of
- arguments.
- - bpo-22219: The zipfile module CLI now adds entries for directories
- (including empty directories) in ZIP file.
- - bpo-22449: In the ssl.SSLContext.load_default_certs, consult the
- environmental variables SSL_CERT_DIR and SSL_CERT_FILE on Windows.
- - bpo-22508: The email.__version__ variable has been removed; the email code
- is no longer shipped separately from the stdlib, and __version__ hasn't
- been updated in several releases.
- - bpo-20076: Added non derived UTF-8 aliases to locale aliases table.
- - bpo-20079: Added locales supported in glibc 2.18 to locale alias table.
- - bpo-20218: Added convenience methods read_text/write_text and read_bytes/
- write_bytes to pathlib.Path objects.
- - bpo-22396: On 32-bit AIX platform, don't expose os.posix_fadvise() nor
- os.posix_fallocate() because their prototypes in system headers are wrong.
- - bpo-22517: When an io.BufferedRWPair object is deallocated, clear its
- weakrefs.
- - bpo-22437: Number of capturing groups in regular expression is no longer
- limited by 100.
- - bpo-17442: InteractiveInterpreter now displays the full chained traceback
- in its showtraceback method, to match the built in interactive
- interpreter.
- - bpo-23392: Added tests for marshal C API that works with FILE*.
- - bpo-10510: distutils register and upload methods now use HTML standards
- compliant CRLF line endings.
- - bpo-9850: Fixed macpath.join() for empty first component. Patch by Oleg
- Oshmyan.
- - bpo-5309: distutils' build and build_ext commands now accept a ``-j``
- option to enable parallel building of extension modules.
- - bpo-22448: Improve canceled timer handles cleanup to prevent unbound
- memory usage. Patch by Joshua Moore-Oliva.
- - bpo-22427: TemporaryDirectory no longer attempts to clean up twice when
- used in the with statement in generator.
- - bpo-22362: Forbidden ambiguous octal escapes out of range 0-0o377 in
- regular expressions.
- - bpo-20912: Now directories added to ZIP file have correct Unix and MS-DOS
- directory attributes.
- - bpo-21866: ZipFile.close() no longer writes ZIP64 central directory
- records if allowZip64 is false.
- - bpo-22278: Fix urljoin problem with relative urls, a regression observed
- after changes to issue22118 were submitted.
- - bpo-22415: Fixed debugging output of the GROUPREF_EXISTS opcode in the re
- module. Removed trailing spaces in debugging output.
- - bpo-22423: Unhandled exception in thread no longer causes unhandled
- AttributeError when sys.stderr is None.
- - bpo-21332: Ensure that ``bufsize=1`` in subprocess.Popen() selects line
- buffering, rather than block buffering. Patch by Akira Li.
- - bpo-21091: Fix API bug: email.message.EmailMessage.is_attachment is now a
- method.
- - bpo-21079: Fix email.message.EmailMessage.is_attachment to return the
- correct result when the header has parameters as well as a value.
- - bpo-22247: Add NNTPError to nntplib.__all__.
- - bpo-22366: urllib.request.urlopen will accept a context object
- (SSLContext) as an argument which will then be used for HTTPS connection.
- Patch by Alex Gaynor.
- - bpo-4180: The warnings registries are now reset when the filters are
- modified.
- - bpo-22419: Limit the length of incoming HTTP request in wsgiref server to
- 65536 bytes and send a 414 error code for higher lengths. Patch
- contributed by Devin Cook.
- - Lax cookie parsing in http.cookies could be a security issue when combined
- with non-standard cookie handling in some Web browsers. Reported by
- Sergey Bobrov.
- - bpo-20537: logging methods now accept an exception instance as well as a
- Boolean value or exception tuple. Thanks to Yury Selivanov for the patch.
- - bpo-22384: An exception in Tkinter callback no longer crashes the program
- when it is run with pythonw.exe.
- - bpo-22168: Prevent turtle AttributeError with non-default Canvas on OS X.
- - bpo-21147: sqlite3 now raises an exception if the request contains a null
- character instead of truncating it. Based on patch by Victor Stinner.
- - bpo-13968: The glob module now supports recursive search in subdirectories
- using the ``**`` pattern.
- - bpo-21951: Fixed a crash in Tkinter on AIX when called Tcl command with
- empty string or tuple argument.
- - bpo-21951: Tkinter now most likely raises MemoryError instead of crash if
- the memory allocation fails.
- - bpo-22338: Fix a crash in the json module on memory allocation failure.
- - bpo-12410: imaplib.IMAP4 now supports the context management protocol.
- Original patch by Tarek Ziadé.
- - bpo-21270: We now override tuple methods in mock.call objects so that they
- can be used as normal call attributes.
- - bpo-16662: load_tests() is now unconditionally run when it is present in a
- package's __init__.py. TestLoader.loadTestsFromModule() still accepts
- use_load_tests, but it is deprecated and ignored. A new keyword-only
- attribute `pattern` is added and documented. Patch given by Robert
- Collins, tweaked by Barry Warsaw.
- - bpo-22226: First letter no longer is stripped from the "status" key in the
- result of Treeview.heading().
- - bpo-19524: Fixed resource leak in the HTTP connection when an invalid
- response is received. Patch by Martin Panter.
- - bpo-20421: Add a .version() method to SSL sockets exposing the actual
- protocol version in use.
- - bpo-19546: configparser exceptions no longer expose implementation
- details. Chained KeyErrors are removed, which leads to cleaner tracebacks.
- Patch by Claudiu Popa.
- - bpo-22051: turtledemo no longer reloads examples to re-run them.
- Initialization of variables and gui setup should be done in main(), which
- is called each time a demo is run, but not on import.
- - bpo-21933: Turtledemo users can change the code font size with a menu
- selection or control(command) '-' or '+' or control-mousewheel. Original
- patch by Lita Cho.
- - bpo-21597: The separator between the turtledemo text pane and the drawing
- canvas can now be grabbed and dragged with a mouse. The code text pane
- can be widened to easily view or copy the full width of the text. The
- canvas can be widened on small screens. Original patches by Jan Kanis and
- Lita Cho.
- - bpo-18132: Turtledemo buttons no longer disappear when the window is
- shrunk. Original patches by Jan Kanis and Lita Cho.
- - bpo-22043: time.monotonic() is now always available.
- ``threading.Lock.acquire()``, ``threading.RLock.acquire()`` and socket
- operations now use a monotonic clock, instead of the system clock, when a
- timeout is used.
- - bpo-21527: Add a default number of workers to ThreadPoolExecutor equal to
- 5 times the number of CPUs. Patch by Claudiu Popa.
- - bpo-22216: smtplib now resets its state more completely after a quit. The
- most obvious consequence of the previous behavior was a STARTTLS failure
- during a connect/starttls/quit/connect/starttls sequence.
- - bpo-22098: ctypes' BigEndianStructure and LittleEndianStructure now define
- an empty __slots__ so that subclasses don't always get an instance dict.
- Patch by Claudiu Popa.
- - bpo-22185: Fix an occasional RuntimeError in threading.Condition.wait()
- caused by mutation of the waiters queue without holding the lock. Patch
- by Doug Zongker.
- - bpo-22287: On UNIX, _PyTime_gettimeofday() now uses
- clock_gettime(CLOCK_REALTIME) if available. As a side effect, Python now
- depends on the librt library on Solaris and on Linux (only with glibc
- older than 2.17).
- - bpo-22182: Use e.args to unpack exceptions correctly in
- distutils.file_util.move_file. Patch by Claudiu Popa.
- - The webbrowser module now uses subprocess's start_new_session=True rather
- than a potentially risky preexec_fn=os.setsid call.
- - bpo-22042: signal.set_wakeup_fd(fd) now raises an exception if the file
- descriptor is in blocking mode.
- - bpo-16808: inspect.stack() now returns a named tuple instead of a tuple.
- Patch by Daniel Shahaf.
- - bpo-22236: Fixed Tkinter images copying operations in NoDefaultRoot mode.
- - bpo-2527: Add a *globals* argument to timeit functions, in order to
- override the globals namespace in which the timed code is executed. Patch
- by Ben Roberts.
- - bpo-22118: Switch urllib.parse to use RFC 3986 semantics for the
- resolution of relative URLs, rather than RFCs 1808 and 2396. Patch by
- Demian Brecht.
- - bpo-21549: Added the "members" parameter to TarFile.list().
- - bpo-19628: Allow compileall recursion depth to be specified with a -r
- option.
- - bpo-15696: Add a __sizeof__ implementation for mmap objects on Windows.
- - bpo-22068: Avoided reference loops with Variables and Fonts in Tkinter.
- - bpo-22165: SimpleHTTPRequestHandler now supports undecodable file names.
- - bpo-15381: Optimized line reading in io.BytesIO.
- - bpo-8797: Raise HTTPError on failed Basic Authentication immediately.
- Initial patch by Sam Bull.
- - bpo-20729: Restored the use of lazy iterkeys()/itervalues()/iteritems() in
- the mailbox module.
- - bpo-21448: Changed FeedParser feed() to avoid O(N**2) behavior when
- parsing long line. Original patch by Raymond Hettinger.
- - bpo-22184: The functools LRU Cache decorator factory now gives an earlier
- and clearer error message when the user forgets the required parameters.
- - bpo-17923: glob() patterns ending with a slash no longer match non-dirs on
- AIX. Based on patch by Delhallt.
- - bpo-21725: Added support for RFC 6531 (SMTPUTF8) in smtpd.
- - bpo-22176: Update the ctypes module's libffi to v3.1. This release adds
- support for the Linux AArch64 and POWERPC ELF ABIv2 little endian
- architectures.
- - bpo-5411: Added support for the "xztar" format in the shutil module.
- - bpo-21121: Don't force 3rd party C extensions to be built with
- -Werror=declaration-after-statement.
- - bpo-21975: Fixed crash when using uninitialized sqlite3.Row (in particular
- when unpickling pickled sqlite3.Row). sqlite3.Row is now initialized in
- the __new__() method.
- - bpo-20170: Convert posixmodule to use Argument Clinic.
- - bpo-21539: Add an *exists_ok* argument to `Pathlib.mkdir()` to mimic
- `mkdir -p` and `os.makedirs()` functionality. When true, ignore
- FileExistsErrors. Patch by Berker Peksag.
- - bpo-22127: Bypass IDNA for pure-ASCII host names in the socket module (in
- particular for numeric IPs).
- - bpo-21047: set the default value for the *convert_charrefs* argument of
- HTMLParser to True. Patch by Berker Peksag.
- - Add an __all__ to html.entities.
- - bpo-15114: the strict mode and argument of HTMLParser, HTMLParser.error,
- and the HTMLParserError exception have been removed.
- - bpo-22085: Dropped support of Tk 8.3 in Tkinter.
- - bpo-21580: Now Tkinter correctly handles bytes arguments passed to Tk. In
- particular this allows initializing images from binary data.
- - bpo-22003: When initialized from a bytes object, io.BytesIO() now defers
- making a copy until it is mutated, improving performance and memory use on
- some use cases. Patch by David Wilson.
- - bpo-22018: On Windows, signal.set_wakeup_fd() now also supports sockets. A
- side effect is that Python depends to the WinSock library.
- - bpo-22054: Add os.get_blocking() and os.set_blocking() functions to get
- and set the blocking mode of a file descriptor (False if the O_NONBLOCK
- flag is set, True otherwise). These functions are not available on
- Windows.
- - bpo-17172: Make turtledemo start as active on OS X even when run with
- subprocess. Patch by Lita Cho.
- - bpo-21704: Fix build error for _multiprocessing when semaphores are not
- available. Patch by Arfrever Frehtes Taifersar Arahesis.
- - bpo-20173: Convert sha1, sha256, sha512 and md5 to ArgumentClinic. Patch
- by Vajrasky Kok.
- - Fix repr(_socket.socket) on Windows 64-bit: don't fail with OverflowError
- on closed socket. repr(socket.socket) already works fine.
- - bpo-22033: Reprs of most Python implemented classes now contain actual
- class name instead of hardcoded one.
- - bpo-21947: The dis module can now disassemble generator-iterator objects
- based on their gi_code attribute. Patch by Clement Rouault.
- - bpo-16133: The asynchat.async_chat.handle_read() method now ignores
- BlockingIOError exceptions.
- - bpo-22044: Fixed premature DECREF in call_tzinfo_method. Patch by Tom
- Flanagan.
- - bpo-19884: readline: Disable the meta modifier key if stdout is not a
- terminal to not write the ANSI sequence ``"\033[1034h"`` into stdout. This
- sequence is used on some terminal (ex: TERM=xterm-256color") to enable
- support of 8 bit characters.
- - bpo-4350: Removed a number of out-of-dated and non-working for a long time
- Tkinter methods.
- - bpo-6167: Scrollbar.activate() now returns the name of active element if
- the argument is not specified. Scrollbar.set() now always accepts only 2
- arguments.
- - bpo-15275: Clean up and speed up the ntpath module.
- - bpo-21888: plistlib's load() and loads() now work if the fmt parameter is
- specified.
- - bpo-22032: __qualname__ instead of __name__ is now always used to format
- fully qualified class names of Python implemented classes.
- - bpo-22031: Reprs now always use hexadecimal format with the "0x" prefix
- when contain an id in form " at 0x...".
- - bpo-22018: signal.set_wakeup_fd() now raises an OSError instead of a
- ValueError on ``fstat()`` failure.
- - bpo-21044: tarfile.open() now handles fileobj with an integer 'name'
- attribute. Based on patch by Antoine Pietri.
- - bpo-21966: Respect -q command-line option when code module is ran.
- - bpo-19076: Don't pass the redundant 'file' argument to self.error().
- - bpo-16382: Improve exception message of warnings.warn() for bad category.
- Initial patch by Phil Elson.
- - bpo-21932: os.read() now uses a :c:func:`Py_ssize_t` type instead of
- :c:type:`int` for the size to support reading more than 2 GB at once. On
- Windows, the size is truncated to INT_MAX. As any call to os.read(), the
- OS may read less bytes than the number of requested bytes.
- - bpo-21942: Fixed source file viewing in pydoc's server mode on Windows.
- - bpo-11259: asynchat.async_chat().set_terminator() now raises a ValueError
- if the number of received bytes is negative.
- - bpo-12523: asynchat.async_chat.push() now raises a TypeError if it doesn't
- get a bytes string
- - bpo-21707: Add missing kwonlyargcount argument to
- ModuleFinder.replace_paths_in_code().
- - bpo-20639: calling Path.with_suffix('') allows removing the suffix again.
- Patch by July Tikhonov.
- - bpo-21714: Disallow the construction of invalid paths using
- Path.with_name(). Original patch by Antony Lee.
- - bpo-15014: Added 'auth' method to smtplib to make implementing auth
- mechanisms simpler, and used it internally in the login method.
- - bpo-21151: Fixed a segfault in the winreg module when ``None`` is passed
- as a ``REG_BINARY`` value to SetValueEx. Patch by John Ehresman.
- - bpo-21090: io.FileIO.readall() does not ignore I/O errors anymore. Before,
- it ignored I/O errors if at least the first C call read() succeed.
- - bpo-5800: headers parameter of wsgiref.headers.Headers is now optional.
- Initial patch by Pablo Torres Navarrete and SilentGhost.
- - bpo-21781: ssl.RAND_add() now supports strings longer than 2 GB.
- - bpo-21679: Prevent extraneous fstat() calls during open(). Patch by
- Bohuslav Kabrda.
- - bpo-21863: cProfile now displays the module name of C extension functions,
- in addition to their own name.
- - bpo-11453: asyncore: emit a ResourceWarning when an unclosed file_wrapper
- object is destroyed. The destructor now closes the file if needed. The
- close() method can now be called twice: the second call does nothing.
- - bpo-21858: Better handling of Python exceptions in the sqlite3 module.
- - bpo-21476: Make sure the email.parser.BytesParser TextIOWrapper is
- discarded after parsing, so the input file isn't unexpectedly closed.
- - bpo-20295: imghdr now recognizes OpenEXR format images.
- - bpo-21729: Used the "with" statement in the dbm.dumb module to ensure
- files closing. Patch by Claudiu Popa.
- - bpo-21491: socketserver: Fix a race condition in child processes reaping.
- - bpo-21719: Added the ``st_file_attributes`` field to os.stat_result on
- Windows.
- - bpo-21832: Require named tuple inputs to be exact strings.
- - bpo-21722: The distutils "upload" command now exits with a non-zero return
- code when uploading fails. Patch by Martin Dengler.
- - bpo-21723: asyncio.Queue: support any type of number (ex: float) for the
- maximum size. Patch written by Vajrasky Kok.
- - bpo-21711: support for "site-python" directories has now been removed from
- the site module (it was deprecated in 3.4).
- - bpo-17552: new socket.sendfile() method allowing a file to be sent over a
- socket by using high-performance os.sendfile() on UNIX. Patch by Giampaolo
- Rodola'.
- - bpo-18039: dbm.dump.open() now always creates a new database when the flag
- has the value 'n'. Patch by Claudiu Popa.
- - bpo-21326: Add a new is_closed() method to asyncio.BaseEventLoop.
- run_forever() and run_until_complete() methods of asyncio.BaseEventLoop
- now raise an exception if the event loop was closed.
- - bpo-21766: Prevent a security hole in CGIHTTPServer by URL unquoting paths
- before checking for a CGI script at that path.
- - bpo-21310: Fixed possible resource leak in failed open().
- - bpo-21256: Printout of keyword args should be in deterministic order in a
- mock function call. This will help to write better doctests.
- - bpo-21677: Fixed chaining nonnormalized exceptions in io close() methods.
- - bpo-11709: Fix the pydoc.help function to not fail when sys.stdin is not a
- valid file.
- - bpo-21515: tempfile.TemporaryFile now uses os.O_TMPFILE flag is available.
- - bpo-13223: Fix pydoc.writedoc so that the HTML documentation for methods
- that use 'self' in the example code is generated correctly.
- - bpo-21463: In urllib.request, fix pruning of the FTP cache.
- - bpo-21618: The subprocess module could fail to close open fds that were
- inherited by the calling process and already higher than POSIX resource
- limits would otherwise allow. On systems with a functioning /proc/self/fd
- or /dev/fd interface the max is now ignored and all fds are closed.
- - bpo-20383: Introduce importlib.util.module_from_spec() as the preferred
- way to create a new module.
- - bpo-21552: Fixed possible integer overflow of too long string lengths in
- the tkinter module on 64-bit platforms.
- - bpo-14315: The zipfile module now ignores extra fields in the central
- directory that are too short to be parsed instead of letting a
- struct.unpack error bubble up as this "bad data" appears in many real
- world zip files in the wild and is ignored by other zip tools.
- - bpo-13742: Added "key" and "reverse" parameters to heapq.merge(). (First
- draft of patch contributed by Simon Sapin.)
- - bpo-21402: tkinter.ttk now works when default root window is not set.
- - bpo-3015: _tkinter.create() now creates tkapp object with wantobject=1 by
- default.
- - bpo-10203: sqlite3.Row now truly supports sequence protocol. In
- particular it supports reverse() and negative indices. Original patch by
- Claudiu Popa.
- - bpo-18807: If copying (no symlinks) specified for a venv, then the python
- interpreter aliases (python, python3) are now created by copying rather
- than symlinking.
- - bpo-20197: Added support for the WebP image type in the imghdr module.
- Patch by Fabrice Aneche and Claudiu Popa.
- - bpo-21513: Speedup some properties of IP addresses (IPv4Address,
- IPv6Address) such as .is_private or .is_multicast.
- - bpo-21137: Improve the repr for threading.Lock() and its variants by
- showing the "locked" or "unlocked" status. Patch by Berker Peksag.
- - bpo-21538: The plistlib module now supports loading of binary plist files
- when reference or offset size is not a power of two.
- - bpo-21455: Add a default backlog to socket.listen().
- - bpo-21525: Most Tkinter methods which accepted tuples now accept lists
- too.
- - bpo-22166: With the assistance of a new internal _codecs._forget_codec
- helping function, test_codecs now clears the encoding caches to avoid the
- appearance of a reference leak
- - bpo-22236: Tkinter tests now don't reuse default root window. New root
- window is created for every test class.
- - bpo-10744: Fix PEP 3118 format strings on ctypes objects with a nontrivial
- shape.
- - bpo-20826: Optimize ipaddress.collapse_addresses().
- - bpo-21487: Optimize ipaddress.summarize_address_range() and
- ipaddress.{IPv4Network,IPv6Network}.subnets().
- - bpo-21486: Optimize parsing of netmasks in ipaddress.IPv4Network and
- ipaddress.IPv6Network.
- - bpo-13916: Disallowed the surrogatepass error handler for non UTF-\*
- encodings.
- - bpo-20998: Fixed re.fullmatch() of repeated single character pattern with
- ignore case. Original patch by Matthew Barnett.
- - bpo-21075: fileinput.FileInput now reads bytes from standard stream if
- binary mode is specified. Patch by Sam Kimbrel.
- - bpo-19775: Add a samefile() method to pathlib Path objects. Initial patch
- by Vajrasky Kok.
- - bpo-21226: Set up modules properly in PyImport_ExecCodeModuleObject (and
- friends).
- - bpo-21398: Fix a unicode error in the pydoc pager when the documentation
- contains characters not encodable to the stdout encoding.
- - bpo-16531: ipaddress.IPv4Network and ipaddress.IPv6Network now accept an
- (address, netmask) tuple argument, so as to easily construct network
- objects from existing addresses.
- - bpo-21156: importlib.abc.InspectLoader.source_to_code() is now a
- staticmethod.
- - bpo-21424: Simplified and optimized heaqp.nlargest() and nmsmallest() to
- make fewer tuple comparisons.
- - bpo-21396: Fix TextIOWrapper(..., write_through=True) to not force a
- flush() on the underlying binary stream. Patch by akira.
- - bpo-18314: Unlink now removes junctions on Windows. Patch by Kim Gräsman
- - bpo-21088: Bugfix for curses.window.addch() regression in 3.4.0. In
- porting to Argument Clinic, the first two arguments were reversed.
- - bpo-21407: _decimal: The module now supports function signatures.
- - bpo-10650: Remove the non-standard 'watchexp' parameter from the
- Decimal.quantize() method in the Python version. It had never been
- present in the C version.
- - bpo-21469: Reduced the risk of false positives in robotparser by checking
- to make sure that robots.txt has been read or does not exist prior to
- returning True in can_fetch().
- - bpo-19414: Have the OrderedDict mark deleted links as unusable. This gives
- an early failure if the link is deleted during iteration.
- - bpo-21421: Add __slots__ to the MappingViews ABC. Patch by Josh Rosenberg.
- - bpo-21101: Eliminate double hashing in the C speed-up code for
- collections.Counter().
- - bpo-21321: itertools.islice() now releases the reference to the source
- iterator when the slice is exhausted. Patch by Anton Afanasyev.
- - bpo-21057: TextIOWrapper now allows the underlying binary stream's read()
- or read1() method to return an arbitrary bytes-like object (such as a
- memoryview). Patch by Nikolaus Rath.
- - bpo-20951: SSLSocket.send() now raises either SSLWantReadError or
- SSLWantWriteError on a non-blocking socket if the operation would block.
- Previously, it would return 0. Patch by Nikolaus Rath.
- - bpo-13248: removed previously deprecated asyncore.dispatcher __getattr__
- cheap inheritance hack.
- - bpo-9815: assertRaises now tries to clear references to local variables in
- the exception's traceback.
- - bpo-19940: ssl.cert_time_to_seconds() now interprets the given time string
- in the UTC timezone (as specified in RFC 5280), not the local timezone.
- - bpo-13204: Calling sys.flags.__new__ would crash the interpreter, now it
- raises a TypeError.
- - bpo-19385: Make operations on a closed dbm.dumb database always raise the
- same exception.
- - bpo-21207: Detect when the os.urandom cached fd has been closed or
- replaced, and open it anew.
- - bpo-21291: subprocess's Popen.wait() is now thread safe so that multiple
- threads may be calling wait() or poll() on a Popen instance at the same
- time without losing the Popen.returncode value.
- - bpo-21127: Path objects can now be instantiated from str subclass
- instances (such as ``numpy.str_``).
- - bpo-15002: urllib.response object to use _TemporaryFileWrapper (and
- _TemporaryFileCloser) facility. Provides a better way to handle file
- descriptor close. Patch contributed by Christian Theune.
- - bpo-12220: mindom now raises a custom ValueError indicating it doesn't
- support spaces in URIs instead of letting a 'split' ValueError bubble up.
- - bpo-21068: The ssl.PROTOCOL* constants are now enum members.
- - bpo-21276: posixmodule: Don't define USE_XATTRS on KFreeBSD and the Hurd.
- - bpo-21262: New method assert_not_called for Mock. It raises AssertionError
- if the mock has been called.
- - bpo-21238: New keyword argument `unsafe` to Mock. It raises
- `AttributeError` incase of an attribute startswith assert or assret.
- - bpo-20896: ssl.get_server_certificate() now uses PROTOCOL_SSLv23, not
- PROTOCOL_SSLv3, for maximum compatibility.
- - bpo-21239: patch.stopall() didn't work deterministically when the same
- name was patched more than once.
- - bpo-21203: Updated fileConfig and dictConfig to remove inconsistencies.
- Thanks to Jure Koren for the patch.
- - bpo-21222: Passing name keyword argument to mock.create_autospec now
- works.
- - bpo-21197: Add lib64 -> lib symlink in venvs on 64-bit non-OS X POSIX.
- - bpo-17498: Some SMTP servers disconnect after certain errors, violating
- strict RFC conformance. Instead of losing the error code when we issue
- the subsequent RSET, smtplib now returns the error code and defers raising
- the SMTPServerDisconnected error until the next command is issued.
- - bpo-17826: setting an iterable side_effect on a mock function created by
- create_autospec now works. Patch by Kushal Das.
- - bpo-7776: Fix ``Host:`` header and reconnection when using
- http.client.HTTPConnection.set_tunnel(). Patch by Nikolaus Rath.
- - bpo-20968: unittest.mock.MagicMock now supports division. Patch by
- Johannes Baiter.
- - bpo-21529: Fix arbitrary memory access in JSONDecoder.raw_decode with a
- negative second parameter. Bug reported by Guido Vranken. (See also:
- CVE-2014-4616)
- - bpo-21169: getpass now handles non-ascii characters that the input stream
- encoding cannot encode by re-encoding using the replace error handler.
- - bpo-21171: Fixed undocumented filter API of the rot13 codec. Patch by
- Berker Peksag.
- - bpo-20539: Improved math.factorial error message for large positive inputs
- and changed exception type (OverflowError -> ValueError) for large
- negative inputs.
- - bpo-21172: isinstance check relaxed from dict to collections.Mapping.
- - bpo-21155: asyncio.EventLoop.create_unix_server() now raises a ValueError
- if path and sock are specified at the same time.
- - bpo-21136: Avoid unnecessary normalization of Fractions resulting from
- power and other operations. Patch by Raymond Hettinger.
- - bpo-17621: Introduce importlib.util.LazyLoader.
- - bpo-21076: signal module constants were turned into enums. Patch by
- Giampaolo Rodola'.
- - bpo-20636: Improved the repr of Tkinter widgets.
- - bpo-19505: The items, keys, and values views of OrderedDict now support
- reverse iteration using reversed().
- - bpo-21149: Improved thread-safety in logging cleanup during interpreter
- shutdown. Thanks to Devin Jeanpierre for the patch.
- - bpo-21058: Fix a leak of file descriptor in
- :func:`tempfile.NamedTemporaryFile`, close the file descriptor if
- :func:`io.open` fails
- - bpo-21200: Return None from pkgutil.get_loader() when __spec__ is missing.
- - bpo-21013: Enhance ssl.create_default_context() when used for server side
- sockets to provide better security by default.
- - bpo-20145: `assertRaisesRegex` and `assertWarnsRegex` now raise a
- TypeError if the second argument is not a string or compiled regex.
- - bpo-20633: Replace relative import by absolute import.
- - bpo-20980: Stop wrapping exception when using ThreadPool.
- - bpo-21082: In os.makedirs, do not set the process-wide umask. Note this
- changes behavior of makedirs when exist_ok=True.
- - bpo-20990: Fix issues found by pyflakes for multiprocessing.
- - bpo-21015: SSL contexts will now automatically select an elliptic curve
- for ECDH key exchange on OpenSSL 1.0.2 and later, and otherwise default to
- "prime256v1".
- - bpo-21000: Improve the command-line interface of json.tool.
- - bpo-20995: Enhance default ciphers used by the ssl module to enable better
- security and prioritize perfect forward secrecy.
- - bpo-20884: Don't assume that __file__ is defined on importlib.__init__.
- - bpo-21499: Ignore __builtins__ in several test_importlib.test_api tests.
- - bpo-20627: xmlrpc.client.ServerProxy is now a context manager.
- - bpo-19165: The formatter module now raises DeprecationWarning instead of
- PendingDeprecationWarning.
- - bpo-13936: Remove the ability of datetime.time instances to be considered
- false in boolean contexts.
- - bpo-18931: selectors module now supports /dev/poll on Solaris. Patch by
- Giampaolo Rodola'.
- - bpo-19977: When the ``LC_TYPE`` locale is the POSIX locale (``C`` locale),
- :py:data:`sys.stdin` and :py:data:`sys.stdout` are now using the
- ``surrogateescape`` error handler, instead of the ``strict`` error
- handler.
- - bpo-20574: Implement incremental decoder for cp65001 code (Windows code
- page 65001, Microsoft UTF-8).
- - bpo-20879: Delay the initialization of encoding and decoding tables for
- base32, ascii85 and base85 codecs in the base64 module, and delay the
- initialization of the unquote_to_bytes() table of the urllib.parse module,
- to not waste memory if these modules are not used.
- - bpo-19157: Include the broadcast address in the usuable hosts for IPv6 in
- ipaddress.
- - bpo-11599: When an external command (e.g. compiler) fails, distutils now
- prints out the whole command line (instead of just the command name) if
- the environment variable DISTUTILS_DEBUG is set.
- - bpo-4931: distutils should not produce unhelpful "error: None" messages
- anymore. distutils.util.grok_environment_error is kept but doc-deprecated.
- - bpo-20875: Prevent possible gzip "'read' is not defined" NameError. Patch
- by Claudiu Popa.
- - bpo-11558: ``email.message.Message.attach`` now returns a more useful
- error message if ``attach`` is called on a message for which
- ``is_multipart`` is False.
- - bpo-20283: RE pattern methods now accept the string keyword parameters as
- documented. The pattern and source keyword parameters are left as
- deprecated aliases.
- - bpo-20778: Fix modulefinder to work with bytecode-only modules.
- - bpo-20791: copy.copy() now doesn't make a copy when the input is a bytes
- object. Initial patch by Peter Otten.
- - bpo-19748: On AIX, time.mktime() now raises an OverflowError for year
- outsize range [1902; 2037].
- - bpo-19573: inspect.signature: Use enum for parameter kind constants.
- - bpo-20726: inspect.signature: Make Signature and Parameter picklable.
- - bpo-17373: Add inspect.Signature.from_callable method.
- - bpo-20378: Improve repr of inspect.Signature and inspect.Parameter.
- - bpo-20816: Fix inspect.getcallargs() to raise correct TypeError for
- missing keyword-only arguments. Patch by Jeremiah Lowin.
- - bpo-20817: Fix inspect.getcallargs() to fail correctly if more than 3
- arguments are missing. Patch by Jeremiah Lowin.
- - bpo-6676: Ensure a meaningful exception is raised when attempting to parse
- more than one XML document per pyexpat xmlparser instance. (Original
- patches by Hirokazu Yamamoto and Amaury Forgeot d'Arc, with suggested
- wording by David Gutteridge)
- - bpo-21117: Fix inspect.signature to better support functools.partial. Due
- to the specifics of functools.partial implementation,
- positional-or-keyword arguments passed as keyword arguments become
- keyword-only.
- - bpo-20334: inspect.Signature and inspect.Parameter are now hashable.
- Thanks to Antony Lee for bug reports and suggestions.
- - bpo-15916: doctest.DocTestSuite returns an empty unittest.TestSuite
- instead of raising ValueError if it finds no tests
- - bpo-21209: Fix asyncio.tasks.CoroWrapper to workaround a bug in yield-from
- implementation in CPythons prior to 3.4.1.
- - asyncio: Add gi_{frame,running,code} properties to CoroWrapper (upstream
- issue #163).
- - bpo-21311: Avoid exception in _osx_support with non-standard compiler
- configurations. Patch by John Szakmeister.
- - bpo-11571: Ensure that the turtle window becomes the topmost window when
- launched on OS X.
- - bpo-21801: Validate that __signature__ is None or an instance of
- Signature.
- - bpo-21923: Prevent AttributeError in
- distutils.sysconfig.customize_compiler due to possible uninitialized
- _config_vars.
- - bpo-21323: Fix http.server to again handle scripts in CGI subdirectories,
- broken by the fix for security issue #19435. Patch by Zach Byrne.
- - bpo-22733: Fix ffi_prep_args not zero-extending argument values correctly
- on 64-bit Windows.
- - bpo-23302: Default to TCP_NODELAY=1 upon establishing an HTTPConnection.
- Removed use of hard-coded MSS as it's an optimization that's no longer
- needed with Nagle disabled.
- IDLE
- ----
- - bpo-20577: Configuration of the max line length for the FormatParagraph
- extension has been moved from the General tab of the Idle preferences
- dialog to the FormatParagraph tab of the Config Extensions dialog. Patch
- by Tal Einat.
- - bpo-16893: Update Idle doc chapter to match current Idle and add new
- information.
- - bpo-3068: Add Idle extension configuration dialog to Options menu. Changes
- are written to HOME/.idlerc/config-extensions.cfg. Original patch by Tal
- Einat.
- - bpo-16233: A module browser (File : Class Browser, Alt+C) requires an
- editor window with a filename. When Class Browser is requested otherwise,
- from a shell, output window, or 'Untitled' editor, Idle no longer displays
- an error box. It now pops up an Open Module box (Alt+M). If a valid name
- is entered and a module is opened, a corresponding browser is also opened.
- - bpo-4832: Save As to type Python files automatically adds .py to the name
- you enter (even if your system does not display it). Some systems
- automatically add .txt when type is Text files.
- - bpo-21986: Code objects are not normally pickled by the pickle module. To
- match this, they are no longer pickled when running under Idle.
- - bpo-17390: Adjust Editor window title; remove 'Python', move version to
- end.
- - bpo-14105: Idle debugger breakpoints no longer disappear when inserting or
- deleting lines.
- - bpo-17172: Turtledemo can now be run from Idle. Currently, the entry is on
- the Help menu, but it may move to Run. Patch by Ramchandra Apt and Lita
- Cho.
- - bpo-21765: Add support for non-ascii identifiers to HyperParser.
- - bpo-21940: Add unittest for WidgetRedirector. Initial patch by Saimadhav
- Heblikar.
- - bpo-18592: Add unittest for SearchDialogBase. Patch by Phil Webster.
- - bpo-21694: Add unittest for ParenMatch. Patch by Saimadhav Heblikar.
- - bpo-21686: add unittest for HyperParser. Original patch by Saimadhav
- Heblikar.
- - bpo-12387: Add missing upper(lower)case versions of default Windows key
- bindings for Idle so Caps Lock does not disable them. Patch by Roger
- Serwy.
- - bpo-21695: Closing a Find-in-files output window while the search is still
- in progress no longer closes Idle.
- - bpo-18910: Add unittest for textView. Patch by Phil Webster.
- - bpo-18292: Add unittest for AutoExpand. Patch by Saihadhav Heblikar.
- - bpo-18409: Add unittest for AutoComplete. Patch by Phil Webster.
- - bpo-21477: htest.py - Improve framework, complete set of tests. Patches by
- Saimadhav Heblikar
- - bpo-18104: Add idlelib/idle_test/htest.py with a few sample tests to begin
- consolidating and improving human-validated tests of Idle. Change other
- files as needed to work with htest. Running the module as __main__ runs
- all tests.
- - bpo-21139: Change default paragraph width to 72, the PEP 8 recommendation.
- - bpo-21284: Paragraph reformat test passes after user changes reformat
- width.
- - bpo-17654: Ensure IDLE menus are customized properly on OS X for
- non-framework builds and for all variants of Tk.
- - bpo-23180: Rename IDLE "Windows" menu item to "Window". Patch by Al
- Sweigart.
- Build
- -----
- - bpo-15506: Use standard PKG_PROG_PKG_CONFIG autoconf macro in the
- configure script.
- - bpo-22935: Allow the ssl module to be compiled if openssl doesn't support
- SSL 3.
- - bpo-22592: Drop support of the Borland C compiler to build Python. The
- distutils module still supports it to build extensions.
- - bpo-22591: Drop support of MS-DOS, especially of the DJGPP compiler
- (MS-DOS port of GCC).
- - bpo-16537: Check whether self.extensions is empty in setup.py. Patch by
- Jonathan Hosmer.
- - bpo-22359: Remove incorrect uses of recursive make. Patch by Jonas
- Wagner.
- - bpo-21958: Define HAVE_ROUND when building with Visual Studio 2013 and
- above. Patch by Zachary Turner.
- - bpo-18093: the programs that embed the CPython runtime are now in a
- separate "Programs" directory, rather than being kept in the Modules
- directory.
- - bpo-15759: "make suspicious", "make linkcheck" and "make doctest" in Doc/
- now display special message when and only when there are failures.
- - bpo-21141: The Windows build process no longer attempts to find Perl,
- instead relying on OpenSSL source being configured and ready to build.
- The ``PCbuild\build_ssl.py`` script has been re-written and re-named to
- ``PCbuild\prepare_ssl.py``, and takes care of configuring OpenSSL source
- for both 32 and 64 bit platforms. OpenSSL sources obtained from
- svn.python.org will always be pre-configured and ready to build.
- - bpo-21037: Add a build option to enable AddressSanitizer support.
- - bpo-19962: The Windows build process now creates "python.bat" in the root
- of the source tree, which passes all arguments through to the most
- recently built interpreter.
- - bpo-21285: Refactor and fix curses configure check to always search in a
- ncursesw directory.
- - bpo-15234: For BerkelyDB and Sqlite, only add the found library and
- include directories if they aren't already being searched. This avoids an
- explicit runtime library dependency.
- - bpo-17861: Tools/scripts/generate_opcode_h.py automatically regenerates
- Include/opcode.h from Lib/opcode.py if the latter gets any change.
- - bpo-20644: OS X installer build support for documentation build changes in
- 3.4.1: assume externally supplied sphinx-build is available in /usr/bin.
- - bpo-20022: Eliminate use of deprecated bundlebuilder in OS X builds.
- - bpo-15968: Incorporated Tcl, Tk, and Tix builds into the Windows build
- solution.
- - bpo-17095: Fix Modules/Setup *shared* support.
- - bpo-21811: Anticipated fixes to support OS X versions > 10.9.
- - bpo-21166: Prevent possible segfaults and other random failures of python
- --generate-posix-vars in pybuilddir.txt build target.
- - bpo-18096: Fix library order returned by python-config.
- - bpo-17219: Add library build dir for Python extension cross-builds.
- - bpo-22919: Windows build updated to support VC 14.0 (Visual Studio 2015),
- which will be used for the official release.
- - bpo-21236: Build _msi.pyd with cabinet.lib instead of fci.lib
- - bpo-17128: Use private version of OpenSSL for OS X 10.5+ installer.
- C API
- -----
- - bpo-14203: Remove obsolete support for view==NULL in PyBuffer_FillInfo(),
- bytearray_getbuffer(), bytesiobuf_getbuffer() and array_buffer_getbuf().
- All functions now raise BufferError in that case.
- - bpo-22445: PyBuffer_IsContiguous() now implements precise contiguity
- tests, compatible with NumPy's NPY_RELAXED_STRIDES_CHECKING compilation
- flag. Previously the function reported false negatives for corner cases.
- - bpo-22079: PyType_Ready() now checks that statically allocated type has no
- dynamically allocated bases.
- - bpo-22453: Removed non-documented macro PyObject_REPR().
- - bpo-18395: Rename ``_Py_char2wchar()`` to :c:func:`Py_DecodeLocale`,
- rename ``_Py_wchar2char()`` to :c:func:`Py_EncodeLocale`, and document
- these functions.
- - bpo-21233: Add new C functions: PyMem_RawCalloc(), PyMem_Calloc(),
- PyObject_Calloc(), _PyObject_GC_Calloc(). bytes(int) is now using
- ``calloc()`` instead of ``malloc()`` for large objects which is faster and
- use less memory.
- - bpo-20942: PyImport_ImportFrozenModuleObject() no longer sets __file__ to
- match what importlib does; this affects _frozen_importlib as well as any
- module loaded using imp.init_frozen().
- Documentation
- -------------
- - bpo-19548: Update the codecs module documentation to better cover the
- distinction between text encodings and other codecs, together with other
- clarifications. Patch by Martin Panter.
- - bpo-22394: Doc/Makefile now supports ``make venv PYTHON=../python`` to
- create a venv for generating the documentation, e.g., ``make html
- PYTHON=venv/bin/python3``.
- - bpo-21514: The documentation of the json module now refers to new JSON RFC
- 7159 instead of obsoleted RFC 4627.
- - bpo-21777: The binary sequence methods on bytes and bytearray are now
- documented explicitly, rather than assuming users will be able to derive
- the expected behaviour from the behaviour of the corresponding str
- methods.
- - bpo-6916: undocument deprecated asynchat.fifo class.
- - bpo-17386: Expanded functionality of the ``Doc/make.bat`` script to make
- it much more comparable to ``Doc/Makefile``.
- - bpo-21312: Update the thread_foobar.h template file to include newer
- threading APIs. Patch by Jack McCracken.
- - bpo-21043: Remove the recommendation for specific CA organizations and to
- mention the ability to load the OS certificates.
- - bpo-20765: Add missing documentation for PurePath.with_name() and
- PurePath.with_suffix().
- - bpo-19407: New package installation and distribution guides based on the
- Python Packaging Authority tools. Existing guides have been retained as
- legacy links from the distutils docs, as they still contain some required
- reference material for tool developers that isn't recorded anywhere else.
- - bpo-19697: Document cases where __main__.__spec__ is None.
- Tests
- -----
- - bpo-18982: Add tests for CLI of the calendar module.
- - bpo-19548: Added some additional checks to test_codecs to ensure that
- statements in the updated documentation remain accurate. Patch by Martin
- Panter.
- - bpo-22838: All test_re tests now work with unittest test discovery.
- - bpo-22173: Update lib2to3 tests to use unittest test discovery.
- - bpo-16000: Convert test_curses to use unittest.
- - bpo-21456: Skip two tests in test_urllib2net.py if _ssl module not
- present. Patch by Remi Pointel.
- - bpo-20746: Fix test_pdb to run in refleak mode (-R). Patch by Xavier de
- Gaye.
- - bpo-22060: test_ctypes has been somewhat cleaned up and simplified; it now
- uses unittest test discovery to find its tests.
- - bpo-22104: regrtest.py no longer holds a reference to the suite of tests
- loaded from test modules that don't define test_main().
- - bpo-22111: Assorted cleanups in test_imaplib. Patch by Milan Oberkirch.
- - bpo-22002: Added ``load_package_tests`` function to test.support and used
- it to implement/augment test discovery in test_asyncio, test_email,
- test_importlib, test_json, and test_tools.
- - bpo-21976: Fix test_ssl to accept LibreSSL version strings. Thanks to
- William Orr.
- - bpo-21918: Converted test_tools from a module to a package containing
- separate test files for each tested script.
- - bpo-9554: Use modern unittest features in test_argparse. Initial patch by
- Denver Coneybeare and Radu Voicilas.
- - bpo-20155: Changed HTTP method names in failing tests in test_httpservers
- so that packet filtering software (specifically Windows Base Filtering
- Engine) does not interfere with the transaction semantics expected by the
- tests.
- - bpo-19493: Refactored the ctypes test package to skip tests explicitly
- rather than silently.
- - bpo-18492: All resources are now allowed when tests are not run by
- regrtest.py.
- - bpo-21634: Fix pystone micro-benchmark: use floor division instead of true
- division to benchmark integers instead of floating point numbers. Set
- pystone version to 1.2. Patch written by Lennart Regebro.
- - bpo-21605: Added tests for Tkinter images.
- - bpo-21493: Added test for ntpath.expanduser(). Original patch by Claudiu
- Popa.
- - bpo-19925: Added tests for the spwd module. Original patch by Vajrasky
- Kok.
- - bpo-21522: Added Tkinter tests for Listbox.itemconfigure(),
- PanedWindow.paneconfigure(), and Menu.entryconfigure().
- - bpo-17756: Fix test_code test when run from the installed location.
- - bpo-17752: Fix distutils tests when run from the installed location.
- - bpo-18604: Consolidated checks for GUI availability. All platforms now at
- least check whether Tk can be instantiated when the GUI resource is
- requested.
- - bpo-21275: Fix a socket test on KFreeBSD.
- - bpo-21223: Pass test_site/test_startup_imports when some of the extensions
- are built as builtins.
- - bpo-20635: Added tests for Tk geometry managers.
- - Add test case for freeze.
- - bpo-20743: Fix a reference leak in test_tcl.
- - bpo-21097: Move test_namespace_pkgs into test_importlib.
- - bpo-21503: Use test_both() consistently in test_importlib.
- - bpo-20939: Avoid various network test failures due to new redirect of
- http://www.python.org/ to https://www.python.org: use
- http://www.example.com instead.
- - bpo-20668: asyncio tests no longer rely on tests.txt file. (Patch by
- Vajrasky Kok)
- - bpo-21093: Prevent failures of ctypes test_macholib on OS X if a copy of
- libz exists in $HOME/lib or /usr/local/lib.
- - bpo-22770: Prevent some Tk segfaults on OS X when running gui tests.
- - bpo-23211: Workaround test_logging failure on some OS X 10.6 systems.
- - bpo-23345: Prevent test_ssl failures with large OpenSSL patch level values
- (like 0.9.8zc).
- Tools/Demos
- -----------
- - bpo-22314: pydoc now works when the LINES environment variable is set.
- - bpo-22615: Argument Clinic now supports the "type" argument for the int
- converter. This permits using the int converter with enums and typedefs.
- - bpo-20076: The makelocalealias.py script no longer ignores UTF-8 mapping.
- - bpo-20079: The makelocalealias.py script now can parse the SUPPORTED file
- from glibc sources and supports command line options for source paths.
- - bpo-22201: Command-line interface of the zipfile module now correctly
- extracts ZIP files with directory entries. Patch by Ryan Wilson.
- - bpo-22120: For functions using an unsigned integer return converter,
- Argument Clinic now generates a cast to that type for the comparison to -1
- in the generated code. (This suppresses a compilation warning.)
- - bpo-18974: Tools/scripts/diff.py now uses argparse instead of optparse.
- - bpo-21906: Make Tools/scripts/md5sum.py work in Python 3. Patch by Zachary
- Ware.
- - bpo-21629: Fix Argument Clinic's "--converters" feature.
- - Add support for ``yield from`` to 2to3.
- - Add support for the PEP 465 matrix multiplication operator to 2to3.
- - bpo-16047: Fix module exception list and __file__ handling in freeze.
- Patch by Meador Inge.
- - bpo-11824: Consider ABI tags in freeze. Patch by Meador Inge.
- - bpo-20535: PYTHONWARNING no longer affects the run_tests.py script. Patch
- by Arfrever Frehtes Taifersar Arahesis.
- Windows
- -------
- - bpo-23260: Update Windows installer
- - The bundled version of Tcl/Tk has been updated to 8.6.3. The most visible
- result of this change is the addition of new native file dialogs when
- running on Windows Vista or newer. See Tcl/Tk's TIP 432 for more
- information. Also, this version of Tcl/Tk includes support for Windows
- 10.
- - bpo-17896: The Windows build scripts now expect external library sources
- to be in ``PCbuild\..\externals`` rather than ``PCbuild\..\..``.
- - bpo-17717: The Windows build scripts now use a copy of NASM pulled from
- svn.python.org to build OpenSSL.
- - bpo-21907: Improved the batch scripts provided for building Python.
- - bpo-22644: The bundled version of OpenSSL has been updated to 1.0.1j.
- - bpo-10747: Use versioned labels in the Windows start menu. Patch by Olive
- Kilburn.
- - bpo-22980: .pyd files with a version and platform tag (for example,
- ".cp35-win32.pyd") will now be loaded in preference to those without tags.
- **(For information about older versions, consult the HISTORY file.)**
|