Rust 1.37 бағдарламалау тілі шығарылымы

жарияланды жүйелік бағдарламалау тілінің шығарылымы Тот 1.37, Mozilla жобасымен құрылған. Тіл жад қауіпсіздігіне назар аударады, жадты автоматты басқаруды қамтамасыз етеді және қоқыс жинағышты немесе жұмыс уақытын пайдаланбай жоғары тапсырма параллелизміне қол жеткізу құралын ұсынады.

Rust жадты автоматты басқаруы әзірлеушіні көрсеткішті манипуляциялаудан босатады және бос жадқа қол жеткізу, нөлдік көрсеткіш сілтемелері, буфердің асып кетуі және т.б. сияқты төмен деңгейлі жад манипуляциясынан туындайтын мәселелерден қорғайды. Кітапханаларды тарату, құрастыруды қамтамасыз ету және жоба бойынша тәуелділіктерді басқару үшін пакет менеджері әзірленуде. жүк, бағдарламаға қажетті кітапханаларды бір рет басу арқылы алуға мүмкіндік береді. Хост кітапханалары үшін репозиторийге қолдау көрсетіледі crates.io.

басты инновациялар:

  • rustc компиляторында қамтамасыз етілген кодты профильдеу нәтижелеріне негізделген оңтайландыруды қолдау (PGO, Profile-Guided Optimization),
    бағдарламаны орындау кезінде жинақталған статистиканы талдау негізінде анағұрлым оңтайлы кодты жасауға мүмкіндік береді. Профильді генерациялау үшін «-C profile-generate» жалаушасы беріледі, ал құрастыру кезінде профильді пайдалану үшін - «-C profile-use» (бастапқыда, бағдарлама бірінші жалаушамен жиналады, айнала жүреді және жасағаннан кейін). профиль, ол екінші жалаушамен қайта жиналады);

  • Консольдік қосымшаларды жылдам тексеру үшін қолдануға ыңғайлы «жүкті іске қосу» пәрменін орындау кезінде пакетте бірнеше орындалатын файлдар болған жағдайда іске қосу үшін орындалатын файлды автоматты түрде таңдау мүмкіндігі қосылды. Орындалатын әдепкі файл бума параметрлері бар [пакет] бөліміндегі әдепкі іске қосу директивасы арқылы анықталады, ол «жүк жүгірісін» іске қосқан сайын «-bin» жалаушасы арқылы файл атауын нақты көрсетуден аулақ болуға мүмкіндік береді;
  • «Жүк сатушы» пәрмені, бұрын берілген бөлек пакет. Пәрмен тәуелділіктердің жергілікті көшірмесімен жұмысты ұйымдастыруға мүмкіндік береді - «жүк жеткізушісі» орындалғаннан кейін жобаның тәуелділіктерінің барлық бастапқы кодтары crates.io сайтынан жергілікті каталогқа жүктеледі, содан кейін оларды жәшіктерге қатынаусыз жұмыс үшін пайдалануға болады. io (пәрменді орындағаннан кейін құрастыру каталогын пайдалану үшін конфигурацияны өзгерту туралы кеңес көрсетіледі). Бұл мүмкіндік бір мұрағатта шығарылыммен бірге барлық тәуелділіктерді ораумен бірге rustc компиляторын жеткізуді ұйымдастыру үшін бұрыннан пайдаланылады;
  • Енді түрдің бүркеншік аттары (мысалы, “fn increment_or_zero(x: ByteOption) функциясының негізгі бөлігінде “ByteOption::None => 0” параметрін көрсетуге болады), есептеу конструкцияларын теру (‹) арқылы санау опцияларына сілтемелер жасауға болады. MyType‹.. ››::option => N) немесе Өздігінен кірулер (c &self блоктарында “Self::Quarter => 25” көрсетуге болады);
  • Макростарда аты жоқ тұрақты мәндерді жасау мүмкіндігі қосылды. "const" ішінде элемент атауын анықтаудың орнына енді макросты қайта шақырған кезде атау қайшылықтарын болдырмай, қайталанбайтын идентификаторды динамикалық таңдау үшін "_" таңбасын пайдалануға болады;
  • AlignN‹T› құрылымын туралаумен анықтауға ұқсас синтаксисті пайдаланып, содан кейін AlignN‹MyEnum› арқылы "#[repr(align(N))" атрибутын сандармен пайдалану мүмкіндігі қосылды;
  • API жаңа бөлігі тұрақты санатқа жылжытылды, соның ішінде BufReader::buffer, BufWriter::buffer және
    Ұяшық::from_mut,
    Ұяшық::ұяшықтардың_тілімі,
    DoubleEndedIterator::nth_back,
    Опция::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits және
    slice::copy_within.

Бұған қоса, атап өтуге болады тестілеудің басталуы жоба Async-std, ол Rust стандартты кітапханасының асинхронды нұсқасын ұсынады (барлық интерфейстер асинхронды нұсқада ұсынылған және асинхронды/күту синтаксисімен пайдалануға дайын std кітапханасының порты).

Ақпарат көзі: opennet.ru

пікір қалдыру