Ukukhululwa kolimi lokuhlela i-Julia 1.9 kushicilelwe, kuhlanganisa izimfanelo ezifana nokusebenza okuphezulu, ukusekelwa kokuthayipha okunamandla namathuluzi akhelwe ngaphakathi ohlelo olufanayo. I-syntax ka-Julia iseduze ne-MATLAB, inezici ezithile ezibolekwe ku-Ruby no-Lisp. Indlela yokukhohlisa iyunithi yezinhlamvu ikhumbuza i-Perl. Ikhodi yephrojekthi isatshalaliswa ngaphansi kwelayisensi ye-MIT.
Izici ezibalulekile zolimi:
- Ukusebenza okuphezulu: enye yezinhloso ezibalulekile zephrojekthi ukufeza ukusebenza eduze nezinhlelo ze-C. I-Julia compiler isekelwe kuphrojekthi ye-LLVM futhi ikhiqiza ikhodi yomshini yomdabu ephumelelayo yamapulatifomu amaningi okuhlosiwe;
- Ukusekelwa kwama-paradigm ohlelo ahlukahlukene, okuhlanganisa izici zohlelo olugxile entweni nokusebenza. Umtapo wolwazi ojwayelekile uhlinzeka ngemisebenzi ye-I/O engavumelanisi, ukuphathwa kwenqubo, ukugawulwa kwemithi, ukwenza iphrofayela, nokuphathwa kwephakheji, phakathi kwezinye izinto;
- Ukuthayipha okunamandla: Ulimi aludingi incazelo ecacile yezinhlobo zezinto eziguquguqukayo, ngokufanisa nezilimi zohlelo lokubhala. Isekela imodi interactive;
- Ikhono lokuzikhethela lokucacisa izinhlobo ngokusobala;
- I-syntax ehamba phambili ekubalweni kwezinombolo, izibalo zesayensi, izinhlelo zokufunda ngomshini nokubonwa kwedatha. Ukusekelwa kwezinhlobo eziningi zedatha yezinombolo namathuluzi okubala okuhambisanayo.
- Amandla okushayela ngokuqondile imisebenzi kusuka kumalabhulali e-C ngaphandle kwezendlalelo ezengeziwe.
Izinguquko ezinkulu ku-Julia 1.9:
- Izici zolimi olusha
- Vumela imisebenzi ezokwenziwa kwenye imojuli kusetshenziswa "setproperty!(::Module, ::Symbol, x)".
- Izabelo eziningi ezingekho esimweni sokugcina zivunyelwe. Isibonelo, iyunithi yezinhlamvu ethi "a, b..., c = 1, 2, 3, 4" izocutshungulwa ngokuthi "a = 1; bβ¦, = 2, 3; c = 4". Lokhu kusingathwa nge-Base.split_rest.
- Amazwi ohlamvu olulodwa manje asekela i-syntax efanayo neyunithi yezinhlamvu; labo. i-syntax ingamela ukulandelana kwe-UTF-8 okungavumelekile, njengoba kuvunyelwe uhlobo lwe-Char.
- Kungezwe ukusekelwa kokucaciswa kwe-Unicode 15.
- Inhlanganisela efakwe esidlekeni yama-tuples nama-tuples aqanjwe amagama ezinhlamvu manje angasetshenziswa njengohlobo lwamapharamitha.
- Imisebenzi emisha eyakhelwe ngaphakathi "getglobal(::Module, ::Symbol[, order])" kanye "setglobal!(::Module, ::Symbol, x[, order])" yokufunda nokubhala kuphela eziguquguqukayo zomhlaba. Indlela ye-getglobal manje kufanele ikhethwe ngaphezu kwendlela ye-getfield yokufinyelela okuguquguqukayo komhlaba.
- Ulimi luyashintsha
- I-"@invoke" macro eyethulwe enguqulweni 1.7 manje isikhishiwe futhi isiyatholakala ukuthi isetshenziswe. Futhi, manje isebenzisa indlela ethi "Core.Typeof(x)" esikhundleni sokuthi "Noma yini" lapho uhlobo lwesichasiselo lushiyiwe ku-agumenti ethi "x". Lokhu kuyadingeka ukuze izinhlobo eziphasiswe njengezimpikiswano zicutshungulwe ngendlela efanele.
- Ukuthekelisa okunikwe amandla komsebenzi we-"invokelatest" kanye ne-"@invokelatest" macro eyethulwe kunguqulo 1.7.
- I-Compiler/Ukuthuthukiswa Kwesikhathi Sokusebenza
- Isikhathi esincishiswe ngokuphawulekayo ekwenzeni kokuqala (TTFX - Isikhathi sokwenza kokuqala). Ukuhlanganiswa kwangaphambili kwephakheji manje kulondoloza ikhodi yomdabu ku-"pkgimage", okusho ukuthi ikhodi ekhiqizwe ngesikhathi sokuhlanganiswa ngaphambilini ngeke kudingeke ukuthi iphinde ihlanganiswe ngemva kokulayishwa kwephakheji. Ukusetshenziswa kwemodi ye-pkgimages kungakhutshazwa ngenketho ethi "--pkgimages=no".
- Inkinga eyaziwayo ye-quadratic complexity of type inference ilungisiwe, futhi ngokuvamile okucatshangwayo kusebenzisa inkumbulo encane. Amanye amakesi onqenqema anemisebenzi emide ekhiqizwa ngokuzenzakalela (efana ne-ModelingToolkit.jl enezibalo ezihlukene ezihlukene kanye namamodeli amakhulu ayimbangela) ahlanganisa ngokushesha okukhulu.
- Izingcingo ezinama-agumenti okungezona uhlobo oluthile manje zingase zihlukaniselwe i-Union ukuze zibe umjovo noma ukulungiswa okumile, ngisho noma kunezinhlobo eziningi ezahlukene zamakhandidethi okuthumela. Lokhu kungathuthukisa ukusebenza ezimeni ezithile lapho izinhlobo zezinto zingaxazululwanga ngokugcwele, ngokuxazulula ngokwezibalo amasayithi ocingo okuthi "@nospecialize-d" nokugwema ukuhlanganiswa.
- Konke ukusetshenziswa kwe-@pure macro kumojuli ye-Base kuthathelwe indawo i-Base.@assume_effects.
- Izingcingo zokucela(f, invokesig, args...) ezinezinhlobo ezingaqondile kakhulu kunalezo ezivame ukusetshenziselwa u-f(args...) azisabangeli ukuthi iphakheji iphinde ihlanganiswe.
- Izinguquko zepharamitha yomugqa womyalo
- Ku-Linux ne-Windows, inketho ethi "--threads=auto" manje izama ukunquma inombolo etholakalayo yamaphrosesa ngokusekelwe ku-CPU affinity, okuyimaski evamise ukusetha ku-HPC nasezindaweni zamafu.
- Inketho ethi "--math-mode=fast" ivaliwe, esikhundleni salokho kutuswa ukuthi kusetshenziswe i-"@fastmath" macro, ene-semantics echazwe kahle.
- Ipharamitha ethi "--threads" manje inefomethi ethi "auto | N[,auto|M]", lapho u-M ecacisa inombolo yochungechunge olusebenzisanayo olungadalwa (okwamanje okuzenzakalelayo kusho u-1).
- Inketho eyengeziwe "--heap-size-hint= β, ebeka umkhawulo ngemuva kokuthi ukuqoqwa kukadoti okusebenzayo kuqala. Usayizi ungacaciswa ngamabhayithi, amakhilobhayithi (1000 KB), amamegabhayithi (300 MB), noma amagigabhayithi (1,5 GB).
- Izinguquko ze-Multithreading
- I-"Threads.@spawn" manje isinokuphikisana kokuqala okungakhethwa kukho ngenani ":okuzenzakalelayo" noma ":interactive". Umsebenzi osebenzisanayo udinga ukubambezeleka kwempendulo ephansi futhi uklanyelwe ukuba mfushane noma wenziwe njalo. Imisebenzi yokusebenzelana izosebenza ochungechungeni olusebenzisanayo uma icaciswa lapho iqala i-Julia.
- Imicu eyethulwe ngaphandle kwesikhathi sokusebenza sika-Julia (isibonelo, kusukela ku-C noma ku-Java) manje ingashayela ikhodi ka-Julia isebenzisa "jl_adopt_thread". Lokhu kwenzeka ngokuzenzakalelayo lapho ufaka ikhodi ka-Julia ngokusebenzisa "i-cfunction" noma indawo yokungena ethi "@ccallable". Ngenxa yalokho, inani lemicu manje lingashintsha ngesikhathi sokusebenza.
- Imisebenzi emisha yelabhulali
- Umsebenzi omusha we-"Iterators.flatmap".
- Umsebenzi omusha we-"pkgversion(m::Module)" ukuze uthole inguqulo yephakheji elayishe imojuli enikeziwe, efana ne-"pkgdir(m::Module)".
- Umsebenzi omusha "wesitaki(x)" owenza ngokujwayelekile "nciphisa(hcat, x::Vector{<:Vector})" kunoma ibuphi ubukhulu futhi uvumela noma iyiphi i-iterators. Indlela "yesitaki(f, x)" ihlanganisa "i-mapreduce(f, hcat, x)" futhi isebenza kahle kakhulu.
- Imakhro entsha yokuhlaziya inkumbulo eyabiwe ethi "@allocations", efana nokuthi "@allocated", ngaphandle kokuthi ibuyisela inani lememori eyabiwe, hhayi isamba sikasayizi wememori eyabiwe.
- Izici ezintsha zomtapo wolwazi
- I-"RoundFromZero" manje isisebenzela ezinye izinhlobo ngaphandle kwe-"BigFloat".
- "I-Dict" manje ingehliswa ngesandla ngokuthi "sizehint!".
- U-"@time" manje ukhombisa ngokuhlukile iphesenti lesikhathi esichithwe kubuyiswa izindlela ezingavumelekile.
- Izinguquko kulabhulali ejwayelekile
- Kulungiswe inkinga yezimali ezindleleni zokuphindaphinda ze-Dict nezinye izinto ezitholiwe njengokhiye(::Dict), amanani(::Dict) kanye ne-Set. Lezi zindlela zokuphindaphinda manje zingabizwa ngokuthi I-Dict noma Setha ngokuhambisana enanini elingenamkhawulo lemicu, inqobo nje uma zingekho izenzo ezishintsha isichazamazwi noma isethi.
- Ukuphika umsebenzi wesilandiso "!f" manje kubuyisela umsebenzi oyinhlanganisela "(!) β f" esikhundleni somsebenzi ongaziwa.
- Imisebenzi ye-Dimension slice manje isebenza kuzo zonke izilinganiso eziningi: "i-eachslice", "i-eachrow", kanye ne-"eachcol" ibuyisela into ethi "Iziqephu" evumela ukuthunyelwa ukuze kunikeze izindlela ezisebenza kahle kakhulu.
- Kwengezwe "@kwdef" macro ku-API yomphakathi.
- Kulungiswe inkinga ngohlelo lokusebenza kokuthi "fld1".
- Ukuhlunga manje kuhlala kuzinzile (i-QuickSort eklanywe kabusha).
- "I-Base.splat" manje isikhishiwe. Inani lokubuyisela liwuhlobo oluthi "Base.Splat" kunomsebenzi ongaziwa, oluvumela ukuthi lichazwe kahle.
- Umphathi Wephakheji
- "Izandiso Zephakheji": usekelo lokulayisha amazwibela ekhodi asuka kwamanye amaphakheji alayishwe kuseshini ka-Julia. Uhlelo lokusebenza luyafana nephakheji ye-"Requires.jl", kodwa ukuhlanganiswa kwangaphambili nokuhambisana nokucushwa kuyasekelwa.
- I-LinearAlgebra Library
- Ngenxa yengozi yokudideka nokuhlukaniswa kwe-elementiwise, izindlela zika-"a/b" kanye no-"b \a" ezine-scalar "a" ne-vector "b" zisusiwe, ezazilingana ne-"a * pinv(b)".
- Izingcingo ze-BLAS ne-LAPACK manje zisebenzisa i-"libblastrampoline (LBT)". I-OpenBLAS ihlinzekwa ngokuzenzakalelayo, kodwa ukwakha isithombe sesistimu namanye amalabhulali e-BLAS/LAPACK akusekelwa. Kunalokho, kuyanconywa ukusebenzisa indlela ye-LBT ukuze umiselele i-BLAS/LAPACK enye isethi etholakalayo yamalabhulali.
- I-"lu" isekela isu elisha lokuzungezisa le-matrix le-"RowNonZero()", elikhetha into yokuqala engelona uziro ukuze isetshenziswe nezinhlobo ezintsha ze-arithmetic kanye nezinjongo zemfundo.
- I-"normalize(x, p=2)" manje isekela noma yisiphi isikhala se-vector esijwayelekile "x", okuhlanganisa nezikali.
- Inombolo ezenzakalelayo yochungechunge lwe-BLAS manje isilingana nenani lezintambo ze-CPU ezakhiweni ze-ARM kanye nohhafu yenani lezintambo ze-CPU kwezinye izakhiwo.
- I-Printf: Imilayezo yephutha esenziwe kabusha yamayunithi ezinhlamvu angalungile ukuze afundeke kangcono.
- Iphrofayela: Umsebenzi omusha we-"Profile.take_heap_snapshot(ifayela)" othwebula ifayela ngefomethi ye-".heapsnapshot" esekelwe ku-JSON esekelwe yi-Chrome.
- Okungahleliwe: i-randn ne-randexp manje zisebenza kunoma yiluphi uhlobo lwe-AbstractFloat oluchaza irandi.
- I-REPL
- Ukucindezela inhlanganisela yokhiye "Alt-e" manje kuvula okokufaka kwamanje kusihleli. Okuqukethwe (uma kushintshiwe) kuzosetshenziswa lapho umhleli ephuma.
- Umongo wemojuli yamanje osebenzayo ku-REPL ungashintshwa (ngokuzenzakalelayo uthi Okuyinhloko) kusetshenziswa umsebenzi we-"REPL.activate(::Module)" noma ngokufaka imojuli ku-REPL bese ucindezela inkinobho ethi "Alt-m" inhlanganisela.
- Imodi "yokwaziswa okunezinombolo", ephrinta izinombolo zokufakwayo nokukhiphayo ngakunye futhi igcine imiphumela ehloliwe kokuthi Out, ingenziwa isebenze ngokuthi "REPL.numbered_prompt!()".
- Ukuqedwa kwethebhu kubonisa izimpikiswano zamagama angukhiye atholakalayo.
- I-SuiteSparse: Ikhodi ehanjisiwe yesixazululi se-"SuiteSparse" yayiswa kokuthi "SparseArrays.jl". Izixazululi manje zithunyelwa kabusha nge-"SuiteSparse.jl".
- I-SparseArrays
- Izixazululi ze-SuiteSparse manje seziyatholakala njengama-submodule e-SparseArrays.
- Izindlela zokuvikela ukusakaza kwe-UMFPACK kanye ne-CHOLMOD zithuthukisiwe ngokususa okuguquguqukayo komhlaba wonke nokusebenzisa izingidi. I-Multhreaded "ldiv!" Izinto ze-UMFPACK manje zingasetshenziswa ngokuphepha.
- Umsebenzi wokuhlola "i-SparseArrays.allowscalar(::Bool)" ikuvumela ukuthi ukhubaze noma unike amandla ukukhonjwa kwesikali kwamalungu afanayo amancane. Lo msebenzi uklanyelwe ukuthola ukukhomba okungahleliwe kwesikali sezinto ze-"SparseMatrixCSC", okuwumthombo ovamile wezinkinga zokusebenza.
- Imodi entsha ye-faillover yama-suite wokuhlola enqamula ukuhlolwa okwenziwa ngaphambi kwesikhathi esimweni sokwehluleka noma iphutha. Setha ngokuthi "@testset kwarg failfast=true" noma "thekelisa JULIA_TEST_FAILFAST=true". Lokhu kungase kudingeke ekuqalisweni kwe-CI ukuze uthole imilayezo yamaphutha ngaphambi kwesikhathi.
- Izinsuku: Iyunithi yezinhlamvu ezingenalutho azisacutshungulwa ngokungalungile njengamavelu e-"DateTime", "Idethi" noma "Izikhathi" futhi esikhundleni salokho phonsa iphutha elithi "ArgumentError" kubakhi nasekuhlaziyeni, kuyilapho okuthi "tryparse" kungabuyisi lutho.
- Iphakheji esabalalisiwe
- Ukumiswa kwephakheji (iphrojekthi esebenzayo, "LOAD_PATH", "DEPOT_PATH") manje isisakazwa lapho izinqubo zesisebenzi sendawo zengezwa (isb. nge-"addprocs(N::Int)" noma ngefulegi lomugqa womyalo "-procs=N").
- "i-addprocs" yezinqubo zabasebenzi bendawo manje ithatha impikiswano ebizwa ngokuthi "env" ukuze idlulisele okuguquguqukayo kwendawo kuzinqubo zabasebenzi.
- I-Unicode: "ama-graphemes, m:n)" ibuyisela uchungechunge oluncane olusuka ku-mth ukuya ku-nth kumagrafu kokuthi "s".
- Iphakheji ye-DelimitedFiles ikhishiwe kumitapo yolwazi yesistimu futhi manje isatshalaliswa njengephakheji ehlukile okufanele ifakwe ngokucacile ukuze isetshenziswe.
- Ukuncika kwangaphandle
- I-Linux ithola ngokuzenzakalelayo inguqulo yelabhulali yesistimu i-libstdc++ futhi iyilayishe uma iyintsha. Ukuziphatha okudala kokulayisha i-libstdc++ eyakhelwe ngaphakathi kungakhathaliseki ukuthi inguqulo yesistimu ingabuyiselwa kanjani ngokusetha "JULIA_PROBE_LIBSTDCXX=0" ukuhluka kwemvelo.
- Kukhishwe okuthi "RPATH" kunambambili ye-julia, engaphula imitapo yolwazi ku-Linux ehlulekayo ukuchaza okuhlukile kokuthi "RUNPATH".
- Ukuthuthukiswa kwethuluzi: Okukhiphayo kokuthi "MethodError" nezindlela (isibonelo, kusukela kokuthi "methods(my_func)") manje sekufomethwe futhi kunombala ngokuya ngokuthi izindlela zikhishwa kanjani ekulandeleni isitaki.
Source: opennet.ru