Mutauro wechirongwa Julia 1.9 iripo

Kuburitswa kwemutauro wechirongwa Julia 1.9 yakadhindwa, ichibatanidza hunhu hwakadai sekuita kwepamusoro, tsigiro yeakasimba kutaipa uye akavakirwa-mukati maturusi epaparallel programming. Iyo syntax yaJulia iri padyo neMATLAB, iine zvimwe zvinhu zvakakweretwa kubva kuna Ruby naLisp. Iyo tambo manipulation nzira inoyeuchidza Perl. Iyo kodhi yeprojekiti yakagoverwa pasi peMIT rezinesi.

Zvinonyanya kukosha zvemutauro:

  • Kuita kwepamusoro: chimwe chezvinangwa zvakakosha zvepurojekiti ndeyekuwana kuita padyo neC zvirongwa. Iyo Julia compiler yakavakirwa pachirongwa cheLLVM uye inogadzira inoshanda yemuchina kodhi yemapuratifomu mazhinji;
  • Tsigiro yeakasiyana-siyana programming paradigms, kusanganisira zvinhu zvechinhu-chakatarisana uye inoshanda hurongwa. Iyo yakajairwa raibhurari inopa mabasa easynchronous I/O, maitiro manejimendi, kutema matanda, profiling, uye mapakeji manejimendi, pakati pezvimwe zvinhu;
  • Dynamic typing: Mutauro haudi tsananguro yakajeka yemhando dzezvakasiyana, nekuenzanisa nemitauro yekunyora mapurogiramu. Inotsigira interactive mode;
  • Sarudzo kugona kutsanangura zvakajeka marudzi;
  • Syntax yakanakira kuverenga kwenhamba, kuverenga kwesainzi, masisitimu ekudzidza muchina uye kuona data. Tsigiro yemhando dzakawanda dzedhata uye maturusi ekufananidza kuverenga.
  • Kugona kufona zvakananga mabasa kubva kumaraibhurari eC pasina mamwe matinji.

Shanduko huru muJulia 1.9:

  • Zvimiro zvemutauro mutsva
    • Bvumira mabasa aitwe mune imwe module uchishandisa "setproperty!(::Module, ::Symbol, x)".
    • Multiple assignment isiri munzvimbo yekupedzisira inobvumidzwa. Semuenzaniso, tambo "a, b..., c = 1, 2, 3, 4" ichagadziriswa se "a = 1; b…, = 2, 3; c = 4". Izvi zvinogadziriswa kuburikidza neBase.split_rest.
    • Single character literals ikozvino inotsigira syntax yakafanana setambo literals; avo. iyo syntax inogona kumiririra isiriyo yeUTF-8 kutevedzana, sekubvumidzwa neChar type.
    • Yakawedzera rutsigiro rweiyo Unicode 15 yakatarwa.
    • Nested musanganiswa wematuples uye ane mazita tuples emavara anogona kushandiswa semhando paramita.
    • Zvitsva zvakavakirwa-mukati "getglobal(::Module, ::Simbol[, kurongeka])" uye "setglobal!(::Module, ::Simbol, x[, kurongeka])" pakuverenga nekunyora chete kune zvakasiyana-siyana zvepasi rose. Iyo getglobal nzira inofanira ikozvino kusarudzwa pamusoro peiyo getfield nzira yekuwana shanduko dzepasirese.
  • Mutauro unochinja
    • Iyo "@invoke" macro yakaunzwa muvhezheni 1.7 yave kutumirwa kunze kwenyika uye yave kuwanikwa kushandiswa. Zvakare, yave kushandisa nzira ye "Core.Typeof(x)" pane kuti "Chero" kana rudzi rwechireverero rukasiiwa nokuda kwe "x" nharo. Izvi zvinodikanwa kuti mhando dzakapfuura senharo dzigadziriswe nemazvo.
    • Yakagonesa kutumira kunze kweiyo "invokelatest" basa uye iyo "@invokelatest" macro yakaunzwa muvhezheni 1.7.
  • Compiler/Runtime Improvements
    • Yakanyanya kuderedzwa nguva yekutanga kuurayiwa (TTFX - Nguva yekutanga kuurayiwa). Package precompilation ikozvino inochengetedza iyo kodhi kodhi mu "pkgimage", zvinoreva kuti kodhi inogadzirwa panguva ye precompilation haizodi kudzokororwa mushure mekunge pasuru yatakurwa. Kushandiswa kwepkgimages modhi kunogona kuvharwa ne "--pkgimages=no" sarudzo.
    • Dambudziko rinozivikanwa requadratic kuomarara kwemhando inference rakagadziriswa, uye kazhinji inference inoshandisa ndangariro shoma. Mamwe makesi emupendero ane ma-auto-generated akareba mabasa (akadai seModelingToolkit.jl ane partial differential equations uye hombe causal modhi) anounganidza nekukurumidza.
    • Mafoni ane asiri emhando-chaiwo nharo anogona ikozvino kuve Union-kupatsanura yakagadziridzwa jekiseni kana static resolution, kunyangwe paine akawanda akasiyana marudzi evamiriri vekutumira. Izvi zvinogona kuvandudza mashandiro mune mamwe mamiriro ezvinhu apo mhando dzezvinhu hadzina kunyatsogadziriswa, nekugadzirisa statically "@nospecialize-d" masayiti ekufona uye kudzivirira kudzoreredza.
    • Zvese zvinoshandiswa zve @pure macro muBase module zvakatsiviwa neBase.@assume_effects.
    • Macalls to invoke(f, invokesig, args...) ane mhando dzisina kujeka pane dzinowanzo shandiswa ku f(args...) hazvichakonzerese kuti pasuru idzokororwe.
  • Command line parameter shanduko
    • PaLinux neWindows, iyo "--threads = otomatiki" sarudzo ikozvino inoedza kuona huwandu huripo hwema processor anoenderana neCPU affinity, iri mask inogarwa muHPC uye makore nharaunda.
    • Iyo "--math-mode=fast" sarudzo yakadzimwa, pachinzvimbo chazvinokurudzirwa kushandisa "@fastmath" macro, ine semantics yakanyatsotsanangurwa.
    • Iyo "--threads" parameter ikozvino yava nefomati "auto | N[,auto|M]", apo M inotsanangura nhamba yeshinda dzinopindirana kugadzira (parizvino auto zvinoreva 1).
    • Yakawedzerwa sarudzo "--heap-size-hint= ”, iyo inoisa chikumbaridzo mushure meiyo inoshingaira kuunganidza marara inotanga. Saizi inogona kutsanangurwa mumabhaiti, kilobytes (1000 KB), megabytes (300 MB), kana gigabytes (1,5 GB).
  • Multithreading Changes
    • "Threads.@spawn" ikozvino yava nesarudzo yekutanga kupokana kwe ":default" kana ":interactive". Basa rinopindirana rinoda yakaderera latency mhinduro uye rakagadzirirwa kuva pfupi kana kazhinji kuitwa. Interactive mabasa anomhanya pane anodyidzana tambo kana akatsanangurwa paanotanga Julia.
    • Mathreads akatangwa kunze kweJulia runtime (semuenzaniso, kubva kuC kana Java) anogona kufonera Julia kodhi uchishandisa "jl_adopt_thread". Izvi zvinoitika otomatiki kana iwe waisa Julia kodhi kuburikidza ne "cfunction" kana iyo "@ccallable" yekupinda. Nekuda kweizvozvo, nhamba yeshinda zvino inogona kuchinja panguva yekumhanya.
  • Mabasa matsva eraibhurari
    • Itsva "Iterators.flatmap" basa.
    • Nyowani "pkgversion(m::Module)" basa rekutora vhezheni yepakeji yakatakura yakapihwa module, yakafanana ne "pkgdir(m::Module)".
    • Nyowani "stack(x)" basa rinowanzoita "reduce(hcat, x::Vector{<:Vector})" kune chero chiyero uye inobvumira chero iterator ye iterators. Iyo "stack(f, x)" nzira inoumba "mapreduce(f, hcat, x)" uye inoshanda zvakanyanya.
    • Nyowani macro yekuparura yakagoverwa memory "@allocations", yakafanana ne "@allocated", kunze kwekuti inodzosa nhamba yekugoverwa kwendangariro, kwete huwandu hwese hwendangariro yakagoverwa.
  • Zvitsva zveraibhurari
    • "RoundFromZero" ikozvino inoshanda kune mamwe marudzi kunze kwe "BigFloat".
    • "Dict" ikozvino inogona kudzikiswa nemaoko ne "sizehint!".
    • "@time" ikozvino inoratidza zvakasiyana chikamu chenguva inopedzwa kudzosera nzira dzisiri dzebasa.
  • Shanduko muraibhurari yakajairika
    • Yakagadzirisa nyaya ye concurrency munzira dzekudzokorodza dzeDict nezvimwe zvinhu zvakatorwa semakiyi(::Dict), values(::Dict) and Set. Idzi nzira dzekudzokorodza zvino dzava kukwanisa kudaidzwa paDict kana Set in parallel pahuwandu husingaverengeki hweshinda, chero pasina zviito zvinoshandura duramazwi kana kuseta.
    • Kuramba chiito chepredicate "!f" iko zvino kunodzosa mubatanidzwa "(!) ∘ f" pachinzvimbo chechimiro chisingazivikanwe.
    • Dimension slice mabasa zvino anoshanda mumativi akati wandei: "eachslice", "eachrow", uye "eachcol" inodzosa "Slices" chinhu chinobvumira kutumira kuti ipe nzira dzinoshanda.
    • Yakawedzera "@kwdef" macro kune yeruzhinji API.
    • Yakagadzirisa dambudziko nehurongwa hwekushanda mu "fld1".
    • Kuronga ikozvino nguva dzose-yakagadzikana (yakagadziridzwa QuickSort).
    • "Base.splat" ikozvino yatengeswa kunze kwenyika. Iko kukosha kwekudzoka ndekwerudzi rwe "Base.Splat" kwete basa risingazivikanwe, iro rinobvumira kuti rive rakanaka.
  • Package Manager
    • "Package Extensions": rutsigiro rwekurodha kodhi snippet kubva kune mamwe mapakeji akaiswa muchikamu cheJulia. Iko kushandiswa kwakafanana ne "Inoda.jl" package, asi pre-kuunganidza uye kuenderana kwekugadzirisa kunotsigirwa.
  • LinearAlgebra Library
    • Nekuda kwenjodzi yekuvhiringidzika nechikamu chechikamu, nzira dze "a / b" uye "b \ a" dzine scalar "a" uye vector "b" dzakabviswa, dzakaenzana ne "a * pinv (b)".
    • BLAS uye LAPACK inofona ikozvino shandisa "libblastrampoline (LBT)". OpenBLAS inopihwa nekusarudzika, asi kuvaka system mufananidzo nemamwe maraibhurari eBLAS/LAPACK hakutsigirwe. Pane kudaro, zvinokurudzirwa kushandisa iyo LBT michina kutsiva BLAS/LAPACK neimwe iripo seti yemaraibhurari.
    • "lu" inotsigira "RowNonZero()" nzira yekutenderera yematrix itsva inosarudza chinhu chekutanga chisiri zero chekushandisa nemhando itsva dzesvomhu uye nezvinangwa zvekudzidzisa.
    • "normalize(x, p=2)" ikozvino inotsigira chero yakajairwa vector nzvimbo "x", kusanganisira scalar.
    • Iyo yakasarudzika nhamba yeBLAS tambo ikozvino yakaenzana nenhamba yeCPU tambo paArM architecture uye hafu yenhamba yeCPU tambo pane mamwe mavakirwo.
  • Printf: Yakagadziridzwazve mhosho mameseji etambo dzisina kunaka kuti averengeke zviri nani.
  • Nhoroondo: Itsva ye "Profile.take_heap_snapshot(faira)" inotora faira riri muJSON-based ".heapsnapshot" inotsigirwa neChrome.
  • Random: randn uye randexp ikozvino inoshanda kune chero AbstractFloat mhando inotsanangura rand.
  • REPL
    • Kudzvanya "Alt-e" kiyi musanganiswa ikozvino inovhura iyo yazvino yekupinda mupepeti. Izvo zvirimo (kana zvashandurwa) zvichaitwa kana mupepeti abuda.
    • Ikozvino module mamiriro ari kushanda muREPL anogona kuchinjwa (nekusagadzika ndiyo Main) uchishandisa "REPL.activate(::Module)" basa kana nekupinda module muREPL nekudzvanya "Alt-m" kiyi musanganiswa.
    • Iyo "numbered prompt" modhi, inodhinda manhamba ega ega yekupinda nekubuda uye inochengeta zvakaongororwa zvabuda muOut, inogona kuitwa ne"REPL.numbered_prompt!()".
    • Kupedzwa kweTebhu kunoratidza anowanikwa keyword nharo.
  • SuiteSparse: Yakafambiswa kodhi ye "SuiteSparse" solver ku "SparseArrays.jl". Masolvers ave kuendeswa kunze kwenyika ne "SuiteSparse.jl".
  • SparseArrays
    • SuiteSparse solvers yave kuwanikwa sema submodules eSparseArrays.
    • Iyo UMFPACK uye CHOLMOD nzira dzekudzivirira nzizi dzakagadziridzwa nekubvisa machinjiro epasi rose uye kushandisa makiyi. Multithreaded "ldiv!" UMFPACK zvinhu zvino zvinogona kuurayiwa zvakachengeteka.
    • Basa rekuedza "SparseArrays.allowscalar(::Bool)" rinokubvumira kudzima kana kugonesa scalar indexing ye sparse arrays. Iri basa rakagadzirirwa kuona zvisina tsarukano scalar indexing ye "SparseMatrixCSC" zvinhu, zvinova zvinowanzokonzera matambudziko ekuita.
  • Nyowani failover modhi yebvunzo masutu anomisa bvunzo kutanga kana paine kutadza kana kukanganisa. Seta kuburikidza ne "@testset kwarg failfast=true" kana "export JULIA_TEST_FAILFAST=true". Izvi zvingave zvakakosha muCI kuvhurwa kuti ugamuchire mameseji ekukanganisa.
  • Dates: Empty tambo hadzichaparadzwe zvisizvo se "DateTime", "Dates" kana "Times" values ​​uye panzvimbo pacho kanda kukanganisa kwe "ArgumentError" muvaki nekuparura, nepo "tryparse" haidzose chinhu.
  • Distributed package
    • Iyo pasuru kumisikidzwa (inoshanda purojekiti, "LOAD_PATH", "DEPOT_PATH") yave kufambiswa kana maitiro evashandi vemunharaunda awedzerwa (semuenzaniso ne "addprocs(N::Int)" kana nemureza wemutsara wekuraira "-procs=N").
    • "addprocs" yemaitiro evashandi vemunharaunda ikozvino inotora gakava rakanzi "env" kupfuudza nharaunda dzakasiyana kune maitiro evashandi.
  • Unicode: "graphemes(s, m:n)" inodzosa substring kubva mth kusvika nth magirafu mu "s".
  • Iyo DelimitedFiles package yakabviswa mumaraibhurari ehurongwa uye yave kugoverwa sepakeji yakaparadzana iyo inofanirwa kuiswa zvakajeka kuti ishandiswe.
  • Kutsamira kunze
    • Linux inoona otomatiki vhezheni yesystem library libstdc++ uye inoitakura kana iri nyowani. Maitiro ekare ekurodha yakavakirwa-mukati libstdc++ zvisinei neshanduro yesystem inogona kudzoreredzwa nekuisa "JULIA_PROBE_LIBSTDCXX=0" nharaunda inoshanduka.
    • Yakabviswa "RPATH" kubva kune julia binary, iyo inogona kutyora maraibhurari paLinux iyo inotadza kutsanangura iyo "RUNPATH" kusiyanisa.
    • Kuvandudzwa kwechishandiso: Kubuda kwe "MethodError" uye nzira (semuenzaniso, kubva ku "methods(my_func)") yave kufomatidzwa uye kupendwa zvinoenderana nemabudiro anoita nzira mumasiteki.

    Source: opennet.ru

Voeg