Chilankhulo chokonzekera Julia 1.9 chikupezeka

Kutulutsidwa kwa chilankhulo cha pulogalamu ya Julia 1.9 kwasindikizidwa, kuphatikiza mikhalidwe monga magwiridwe antchito apamwamba, kuthandizira pakulemba kwamphamvu ndi zida zomangidwira pulogalamu yofananira. Syntax ya Julia ili pafupi ndi MATLAB, kubwereka zinthu zina kuchokera kwa Ruby ndi Lisp. Njira yosinthira zingwe ndikukumbutsa Perl. Khodi ya polojekitiyi imagawidwa pansi pa layisensi ya MIT.

Zofunikira za chilankhulo:

  • Kuchita kwakukulu: Chimodzi mwa zolinga zazikulu za polojekitiyi ndikukwaniritsa ntchito pafupi ndi mapulogalamu a C. The Julia compiler imachokera ku ntchito ya pulojekiti ya LLVM ndipo imapanga makina abwino a makina amtundu wa nsanja zambiri;
  • Thandizo la ma paradigms osiyanasiyana, kuphatikizapo zinthu zomwe zimayang'ana pa chinthu ndi ntchito. Laibulale yokhazikika imapereka ntchito za asynchronous I/O, kasamalidwe kazinthu, kudula mitengo, mbiri, ndi kasamalidwe ka phukusi, mwa zina;
  • Kulemba kwamphamvu: Chilankhulochi sichifuna kutanthauzira momveka bwino mitundu yamitundu yosiyanasiyana, pofanizira ndi zilankhulo zamapulogalamu. Imathandizira njira yolumikizirana;
  • Kuthekera kosankha kufotokoza momveka bwino mitundu;
  • Syntax yomwe ili yabwino kwambiri powerengera manambala, mawerengedwe asayansi, makina ophunzirira makina ndi kuwonera deta. Thandizo pamitundu yambiri yama data ndi zida zofananira mawerengedwe.
  • Kutha kuyimbira mwachindunji ntchito kuchokera ku malaibulale a C popanda zigawo zina.

Zosintha zazikulu mu Julia 1.9:

  • chinenero chatsopano
    • Lolani magawo kuti apangidwe mu gawo lina pogwiritsa ntchito "setproperty!(::Module, ::Symbol, x)".
    • Ntchito zingapo zomwe sizili m'malo omaliza ndizololedwa. Mwachitsanzo, chingwe "a, b…, c = 1, 2, 3, 4" chidzasinthidwa ngati "a = 1; b…, = 2, 3; c = 4 ". Izi zimayendetsedwa kudzera pa Base.split_rest.
    • Malembo amtundu umodzi tsopano amathandizira mawu ofanana ndi zingwe; izo. Syntax ikhoza kuyimilira zotsatizana za UTF-8 zosavomerezeka, monga momwe zimaloledwa ndi mtundu wa Char.
    • Thandizo lowonjezera la Unicode 15.
    • Kuphatikizika kwa ma tuples ndi zilembo zotchedwa zilembo zitha kugwiritsidwa ntchito ngati magawo amtundu.
    • Ntchito zatsopano zomangidwira "getglobal(::Module, ::Symbol[, order])" ndi "setglobal!(::Module, ::Symbol, x[, order])" powerenga ndi kulemba kumitundu yapadziko lonse lapansi. Njira ya getglobal iyenera tsopano kukondedwa kuposa njira ya getfield yopezera zosinthika zapadziko lonse lapansi.
  • Kusintha kwa chilankhulo
    • "@invoke" macro omwe adatulutsidwa mu mtundu 1.7 tsopano atumizidwa kunja ndipo akupezeka kuti agwiritsidwe ntchito. Kuphatikiza apo, tsopano imagwiritsa ntchito njira ya "Core.Typeof(x)" m'malo mwa "Aliyense" ngati mawu amtundu wasiyidwa pa mkangano wa "x". Izi ndizofunikira kuwonetsetsa kuti mitundu yoperekedwa ngati mikangano ikukonzedwa bwino.
    • Kutumiza kunja kwa ntchito ya "invokelatest" ndi "@invokelatest" macro, yomwe idayambitsidwa mu mtundu 1.7.
  • Kusintha kwa Compiler / Rutime
    • Nthawi yochepetsedwa kwambiri mpaka kuphedwa koyamba (TTFX - Nthawi yoyambira kuphedwa). Kukonzekera phukusi tsopano kumasunga khodi yachibadwidwe mu "pkgimage", kutanthauza kuti code yopangidwa ndi precompilation ndondomeko sidzafunikanso kubwezeretsedwa pambuyo pake. Kugwiritsa ntchito njira ya pkgimages kutha kuyimitsidwa pogwiritsa ntchito njira ya "--pkgimages=no".
    • Nkhani yodziwika bwino ya quadratic complexity inference yakhazikitsidwa, ndipo kuyerekezera kumagwiritsa ntchito kukumbukira pang'ono. Zina zam'mphepete zokhala ndi ntchito zazitali zodzipangira zokha (monga ModelingToolkit.jl yokhala ndi ma equation ochepa komanso mitundu yayikulu yoyambitsa) amaphatikiza mwachangu kwambiri.
    • Kuyimba kokhala ndi mikangano yopanda mitundu ya konkire tsopano kutha kukhala kugawanitsa kwa Union kuti chitikire jakisoni kapena kusasunthika kosasunthika, ngakhale patakhala osankhidwa amitundu yosiyanasiyana kuti atumizidwe. Izi zitha kupititsa patsogolo magwiridwe antchito nthawi zina pomwe mitundu ya zinthu sinatheretu, pothetsa ma foni a "@nospecialize-d" ndikupewa kubwezanso.
    • Ntchito zonse za @pure macro mu Base module zasinthidwa ndi Base.@assume_effects.
    • Mafoni oitanira(f, invokesig, args...) okhala ndi mitundu yochepa kwambiri kuposa momwe amagwiritsidwira ntchito pa f(args...) sachititsanso kuti phukusili libwerenso.
  • Zosintha ku Command Line Options
    • Pa Linux ndi Windows, njira ya "--threads=auto" tsopano ikuyesera kudziwa kuchuluka kwa mapurosesa kutengera kuyanjana kwa CPU, chigoba chomwe chimayikidwa mu HPC ndi mtambo.
    • Zoyimira "--math-mode=fast" ndizozimitsidwa, m'malo mwake zimalimbikitsidwa kugwiritsa ntchito "@fastmath" macro, yomwe imatanthauzira momveka bwino semantics.
    • Njira ya "--threads" tsopano ili mumtundu wa "auto | N[,auto|M]", pomwe M akuwonetsa kuchuluka kwa ulusi wolumikizana kuti apangidwe (pakali pano amatanthauza 1).
    • Njira yowonjezera "-heap-size-hint=", yomwe imayika malire pambuyo pake kusonkhanitsa zinyalala kumayamba. Kukula kutha kufotokozedwa mu ma byte, ma kilobytes (1000 KB), megabytes (300 MB), kapena magigabytes (1,5 GB).
  • Kusintha kwa multithreading
    • "Threads.@spawn" tsopano ali ndi mtsutso woyamba wosankha ":default" kapena ":interactive". Ntchito yolumikizana imafuna kuchedwa kwapang'onopang'ono ndipo idapangidwa kuti ikhale yaifupi kapena kuchitidwa pafupipafupi. Ntchito zolumikizirana ziziyenda pamitu yolumikizana ngati zifotokozedwera poyambira Julia.
    • Ulusi womwe ukuyenda kunja kwa nthawi ya Julia (monga kuchokera ku C kapena Java) tsopano ukhoza kuyimbira nambala ya Julia pogwiritsa ntchito "jl_adopt_thread". Izi zimachitika zokha mukalowa nambala ya Julia kudzera pa "cfunction" kapena polowera "@ccallable". Chifukwa chake, kuchuluka kwa ulusi tsopano kumatha kusintha pakuphedwa.
  • Zatsopano laibulale ntchito
    • Ntchito yatsopano "Iterators.flatmap".
    • Ntchito yatsopano "pkgversion(m::Module)" kuti mupeze mtundu wa phukusi lomwe ladzaza gawo loperekedwa, lofanana ndi "pkgdir(m::Module)".
    • Ntchito yatsopano "stack(x)" yomwe imapanga "reduce(hcat, x::Vector{<:Vector})" pamlingo uliwonse ndikulola wobwerezabwereza. Njira ya "stack(f, x)" imapanga "mapreduce(f, hcat, x)" ndipo ndiyothandiza kwambiri.
    • Macro yatsopano yowunikira kukumbukira komwe kwaperekedwa "@allocations", yofanana ndi "@allocation", kupatula kuti imabweretsanso kuchuluka kwa kukumbukira, m'malo mowerengera kuchuluka kwa kukumbukira komwe kwaperekedwa.
  • Zatsopano laibulale
    • "RoundFromZero" tsopano imagwira ntchito zamitundu ina osati "BigFloat".
    • "Dict" tsopano ikhoza kuchepetsedwa pamanja pogwiritsa ntchito "sizehint!"
    • "@time" tsopano ikufotokoza padera kuchuluka kwa nthawi yomwe yagwiritsidwa ntchito kubweza njira zolakwika.
  • Kusintha kwa laibulale yokhazikika
    • Tinakonza nkhani ya concurrency mu njira zobwerezabwereza za Dict ndi zinthu zina zotengedwa monga makiyi(::Dict), values(::Dict) and Set. Njira zobwerezabwerezazi tsopano zitha kuyitanidwa pa Dict kapena Set in parallel pa nambala yopanda malire ya ulusi, bola ngati palibe zochita zomwe zimasintha mtanthauzira mawu kapena seti.
    • Kukana mawu oti "!f" tsopano kubweza ntchito yamagulu "(!) ∘ f" m'malo mwa mawu osadziwika.
    • Dimension slice ntchito tsopano imagwira ntchito mosiyanasiyana: "eachslice", "eachrow" ndi "eachcol" imabweza "Zigawo" zomwe zimalola kutumiza kuti kupereke njira zabwino kwambiri.
    • Onjezani "@kwdef" macro ku API yapagulu.
    • Tinakonza vuto ndi dongosolo la ntchito mu "fld1".
    • Kusanja tsopano kuli kokhazikika nthawi zonse (QuickSort yakonzedwanso).
    • "Base.splat" tsopano yatumizidwa kunja. Mtengo wobwezera ndi mtundu wa "Base.Splat" osati ntchito yosadziwika, zomwe zimalola kuti zitulutsidwe bwino.
  • Phukusi Woyang'anira
    • "Package Extensions": Thandizo pakukweza kachidutswa kakang'ono kuchokera pamaphukusi ena omwe adayikidwa mu gawo la Julia. Ntchitoyi ndi yofanana ndi phukusi la "Requires.jl", koma kusanjidwa ndi kuyanjana kwadongosolo kumathandizidwa.
  • LinearAlgebra Library
    • Chifukwa cha chiwopsezo cha chisokonezo ndi magawo anzeru, adachotsa njira za "a/b" ndi "b\a" ndi scalar "a" ndi vector "b", zomwe zinali zofanana ndi "a * pinv(b)".
    • Kuitana BLAS ndi LAPACK tsopano kumagwiritsa ntchito "libblastrampoline (LBT)". OpenBLAS imaperekedwa mwachisawawa, koma kupanga chithunzi chadongosolo ndi malaibulale ena a BLAS/LAPACK sikuthandizidwa. M'malo mwake, tikulimbikitsidwa kugwiritsa ntchito njira ya LBT m'malo mwa BLAS/LAPACK ndi gulu lina lamalaibulale omwe alipo.
    • "lu" imathandizira njira yatsopano yosinthira masamu, "RowNonZero()", yomwe imasankha chinthu choyamba chopanda ziro kuti chigwiritsidwe ntchito ndi masamu atsopano komanso zolinga zophunzitsira.
    • "normalize(x, p=2)" tsopano imathandizira malo aliwonse okhazikika "x", kuphatikiza ma scalar.
    • Nambala yokhazikika ya ulusi wa BLAS tsopano ndi yofanana ndi kuchuluka kwa ulusi wa CPU pamapangidwe a ARM ndi theka la ulusi wa CPU pazomanga zina.
  • Printf: Mauthenga olakwika okonzanso pazingwe zosasinthidwa molakwika kuti ziwerengedwe bwino.
  • Mbiri: Ntchito yatsopano "Profile.take_heap_snapshot(fayilo)", yomwe imalemba fayilo mumtundu wa JSON ".heapsnapshot" wothandizidwa mu Chrome.
  • Mwachisawawa: randn ndi randexp tsopano zimagwira ntchito pamtundu uliwonse wa AbstractFloat womwe umatanthawuza rand.
  • REPL
    • Kukanikiza makiyi a "Alt-e" tsopano kumatsegula zomwe zili mumkonzi. Zomwe zili (ngati zasinthidwa) zidzaperekedwa mukatuluka mkonzi.
    • Zomwe zilipo panopa mu REPL zikhoza kusinthidwa (Main mwachisawawa) pogwiritsa ntchito ntchito "REPL.activate (::Module)" kapena polowetsa gawo mu REPL ndikukanikiza kuphatikiza kiyi "Alt-m".
    • Njira ya "nambala yofulumira", yomwe imasindikiza manambala pazolowetsa zilizonse ndikutulutsa ndikusunga zotsatira zomwe zagoledwa mu Out, zitha kutsegulidwa pogwiritsa ntchito "REPL.numbered_prompt!()".
    • Kumaliza kwa tabu kumawonetsa mawu osakira omwe alipo.
  • SuiteSparse: Khodi yosunthika ya "SuiteSparse" solver kupita ku "SparseArrays.jl". Solvers tsopano atumizidwanso ndi "SuiteSparse.jl".
  • SparseArrays
    • "SuiteSparse" solvers tsopano akupezeka ngati "SparseArrays" submodules.
    • Njira zotetezera ulusi za UMFPACK ndi CHOLMOD zasinthidwa pochotsa zosinthika zapadziko lonse lapansi ndikugwiritsa ntchito maloko. Mipikisano ulusi "ldiv!" Zinthu za UMFPACK tsopano zitha kuchitidwa mosamala.
    • Ntchito yoyesera "SparseArrays.allowscalar(::Bool)" imakupatsani mwayi kuti muyimitse kapena kuyatsa kulondolera kwa ma sparse arrays. Ntchitoyi idapangidwa kuti izindikire kusalozera kwachisawawa kwa zinthu za "SparseMatrixCSC", zomwe ndi gwero lofala lazovuta zamachitidwe.
  • Njira yatsopano ya failsafe ya ma test suites omwe amathetsa kuyesa kuthamangitsidwa kukalephera kapena kulakwitsa. Khazikitsani kudzera "@testset kwarg failfast=true" kapena "export JULIA_TEST_FAILFAST=true". Izi nthawi zina ndizofunikira mu CI imayendetsa kuti mulandire mauthenga olakwika msanga.
  • Madeti: Zingwe zopanda kanthu sizimasankhidwanso molakwika ngati "DateTime", "Madeti" kapena "Times" ndipo m'malo mwake amaponya "ArgumentError" popanga ndi kugawa, pomwe "tryparse" sichibweza chilichonse.
  • Phukusi Lagawidwa
    • Kukonzekera kwa phukusi (ntchito yogwira, "LOAD_PATH", "DEPOT_PATH") tsopano kumafalitsidwa powonjezera njira za ogwira ntchito (monga kugwiritsa ntchito "addprocs(N::Int)" kapena kugwiritsa ntchito mbendera ya mzere "--procs=N").
    • "addprocs" pamachitidwe ogwira ntchito akumalo tsopano avomereza mtsutso wotchedwa "env" kuti apereke kusintha kwa chilengedwe kunjira za ogwira ntchito.
  • Unicode: "graphemes(s, m:n)" imabweretsanso kachigawo kakang'ono kuchokera ku mth kupita ku nth grapheme mu "s".
  • Phukusi la DelimitedFiles lachotsedwa ku malaibulale a dongosolo ndipo tsopano likugawidwa ngati phukusi losiyana lomwe liyenera kuikidwa momveka bwino kuti ligwiritsidwe ntchito.
  • Zodalira kunja
    • Ku Linux, mtundu wa library ya libstdc ++ imangodziwika ndipo, ngati ili yatsopano, imakwezedwa. Khalidwe lakale la libstdc ++ lotsegula, mosasamala kanthu za mtundu wa dongosolo, likhoza kubwezeretsedwanso pokhazikitsa kusintha kwa chilengedwe "JULIA_PROBE_LIBSTDCXX=0".
    • Kuchotsedwa "RPATH" kuchokera ku julia binary, yomwe imatha kuswa malaibulale pa Linux omwe amalephera kufotokozera kusiyana kwa "RUNPATH".
    • Kusintha kwa zida: Kutulutsa kwa "MethodError" ndi njira (mwachitsanzo kuchokera ku "methods(my_func)") tsopano zasanjidwa ndi kupakidwa utoto molingana ndi mfundo yotulutsira njira muzotsatira.

    Source: opennet.ru

Kuwonjezera ndemanga