Մայիսի 3-ին տեղի ունեցավ GCC-ի իններորդ տարբերակի առաջին հրապարակային թողարկումը՝ GCC 9.1:
Այն պարունակում է բազմաթիվ նշանակալի բարելավումներ և լրացումներ ութերորդի համեմատ
տարբերակը։
Ընդհանուր փոփոխություններ
Ընտրանքներ
- Չափն ընդունող հրամաններն այժմ աջակցում են 64-բիթանոց արժեքներին և վերջածանցներին՝ չափը նշելու համար.
- Ավելացված տարբերակ -flive-patching, վերահսկելու օպտիմալացումները, որոնք պոտենցիալ կործանարար են դինամիկ կոդի փոխարինման համար.
- Ավելացվեց --completion տարբերակ՝ հրամանի վահանակում ավտոմատ լրացումն աջակցելու համար;
- Կոմպիլյատորների ախտորոշումն այժմ ներառում է տողերի համարները (-fno-diagnostics-show-line-numbers) Եվ
տեսակի տեղեկատվություն (fno-diagnostics-show-labels); - Ավելացված տարբերակ -fdiagnostics-format=json JSON ձևաչափով դիագնոստիկա դուրս բերելու համար;
- Հավասարեցում նշելու ընտրանքներ (-falign-գործառույթները, օրինակ) այժմ կարող է ընդունել հավասարեցման մի քանի տարբերակ.
- Ավելացվել են ֆայլերի ցանկը զտելու տարբերակներ (-fprofile-filter-files, -fprofile-exclude-files), որոնք գործիքավորվում են պրոֆիլավորողի կողմից.
- AddressSanitizer-ն այժմ ավելի կոմպակտ հավասարեցում է օգտագործում՝ դարսում գտնվող փոփոխականների անվավեր մուտքերը բռնելու համար.
- Արդյունքների բազմաթիվ բարելավումներ -fopt-info;
- Ավելացված տարբերակ -fsave-optimization-record օպտիմալացման հաշվետվությունը ֆայլում պահելու համար.
- Ավելացված տարբերակ -fipa-stack-հավասարեցում и -fipa-տեղեկանք-հասցեական.
Ներկառուցված նոր հնարավորություններ
- __կառուցված_ակնկալում_հավանականությամբ;
- __կառուցված_ունի_հատկանիշ;
- __կառուցված_սպեկուլյացիա_անվտանգ_արժեք.
Նոր հատկանիշ
Այլ
Կոդերի ստեղծման բազմաթիվ բարելավումներ՝ կապված.
- անջատիչների կոնստրուկցիաների արտադրություն;
- միջգործընթացային օպտիմալացումներ;
- պրոֆիլավորման տեղեկատվության վրա հիմնված օպտիմիզացում;
- օպտիմալացում հավաքման փուլում (LTO);
Նաև gcov-ի ներքին ձևաչափն այժմ JSON է, իսկ նոր տարբերակը --օգտագործել-ջերմություն-գույներ ներառում է կոդի գծերի գունավորում, որը հիմնված է դրանց օգտագործման հաճախականության վրա:
Լեզուներ
Իրականացման որակը և ամբողջականությունը OpenACC C, C++ և Fortran լեզուները շարունակում են կատարելագործվել:
C-ի նման լեզուներ
- Իրականացվել է OpenMP 5.0-ի մասնակի աջակցություն;
- Ավելացված հատկություն __կառուցված_փոխարկիչ;
- Ավելացվեց նախազգուշացում -Փաթեթավորված անդամի հասցե;
- Մի շարք առկա նախազգուշացումների բարելավումներ.
- Սխալի տեքստը, երբ սխալ թվով արգումենտներ փոխանցվում է մակրո, այժմ ներառում է հենց մակրոյի հայտարարությունը.
- Տառասխալների ուղղման առաջարկների բարելավումներ:
C
- Աջակցեք _Static_assert-ին մեկ արգումենտով -std=c2x-ի համար (ապագա C ստանդարտ);
- Նոր նախազգուշացում -Բացարձակ արժեք, որը բռնում է սխալ արգումենտի տեսակը այնպիսի ֆունկցիաների համար, ինչպիսին abs().
C ++
- Նոր նախազգուշացումներ. -Չհնացած-պատճեն,
-Winit-list-lifetime,
-Վրեդունդանտ-շարժվել,
-Վսեմացնող-շարժվել,
-Wclass-փոխակերպում; - Աշխատանքներ են տարվում ապագա ստանդարտից նոր հնարավորությունների ներդրման ուղղությամբ C++2a;
- Frontend-ն այժմ պահպանում է ավելի ճշգրիտ տեղեկատվություն մի շարք սկզբնական կոդի տարրերի մասին, ինչը թույլ է տալիս ավելի մանրամասն տեղեկատվություն ցուցադրել ախտորոշման մեջ.
- Բարելավված ախտորոշում գերբեռնված գործառույթների, երկուական օպերատորների, ֆունկցիաների կանչերի և ֆորմատի տողերի համար;
- Ավելացվել են ավտոմատ շտկումներ, որոնք աջակցվում են զարգացման որոշ միջավայրերի կողմից մի շարք հայտնի սխալների համար (բացակայող փակագծեր, անունների տարածքներ, տառասխալներ և այլն):
libstdc++
- C++17-ի իրականացումն այլևս փորձնական չէ.
- Ավելացված զուգահեռ ալգորիթմներ, , , Ա այլևս չի պահանջում -lstdc++fs;
- Բարելավված փորձարարական աջակցություն C++2a-ի համար ( , , std::bind_front և այլն);
- Windows-ում ֆայլերի հոսքերի բացման աջակցություն, որոնց ուղիները պարունակում են ոչ char նիշեր.
- Նախնական աջակցություն Windows-ում;
- Ցանցային TS-ի նախնական աջակցություն:
D
D լեզվի 2.076 տարբերակը ներառված է GCC-ում:
Ֆորտրան
- Լրիվ աջակցություն ասինխրոն I/O-ի համար;
- Իրականացված BACK փաստարկը MINLOC-ի և MAXLOC-ի համար;
- Իրականացված FINDLOC և IS_CONTIGOUS գործառույթները;
- Իրականացվել է կոմպլեքս թվերի բաղադրիչներին մուտք գործելու շարահյուսությունը՝ c%re և c%im;
- Իրականացված շարահյուսություն str%len և a%kind;
- Իրականացված C նկարագրիչներ և ISO_Fortran_binding.h վերնագիր;
- Հանգիստ պահանջներ MAX և MIN ֆունկցիաների արդյունքի համար, երբ արգումենտներից մեկը NaN է;
- Ավելացված տարբերակ -fdec-ներառել;
- Հրահանգն ավելացված է ԿԱՌՈՒՑՎԱԾ.
libgccjit
- Ավելացված հատկություն gcc_jit_context_add_driver_option.
Այլ
Ճարտարապետության և ՕՀ-ի հատուկ փոփոխություններ:
Source: linux.org.ru