Luuqada barnaamijka Julia 1.9 waa la heli karaa

Siideynta luqadda barnaamijka Julia 1.9 waa la daabacay, iyadoo la isku daray tayada sida waxqabadka sare, taageerada qorista firfircoon iyo qalabyada ku dhex jira ee barnaamijyada barbar socda. Ereyga Julia wuxuu ku dhow yahay MATLAB, oo leh walxo laga soo amaahday Ruby iyo Lisp. Habka wax-is-daba-marinta xadhiggu waa mid xasuusiya Perl. Xeerka mashruuca waxa lagu qaybiyaa shatiga MIT.

Tilmaamaha muhiimka ah ee luqadda:

  • Waxqabadka sare: mid ka mid ah yoolalka muhiimka ah ee mashruuca waa in la gaaro waxqabad ku dhow barnaamijyada C. Isku-duwaha Julia wuxuu ku salaysan yahay mashruuca LLVM wuxuuna soo saaraa koodh mashiinka asalka ah oo hufan oo loogu talagalay goobo badan oo bartilmaameed ah;
  • Taageerada jaangooyooyinka kala duwan ee barnaamijyada, oo ay ku jiraan walxaha ku jihaysan shayga iyo barnaamijka shaqaynta. Maktabadda caadiga ahi waxay bixisaa hawlo I/O ah oo aan kala sooc lahayn, maaraynta habka, gooynta, xog-ururinta, iyo maaraynta xidhmooyinka, iyo waxyaabo kale;
  • Ku qorida firfircoon: Luuqadu uma baahna qeexid cad oo ah noocyada doorsoomayaasha, iyadoo la barbardhigayo luuqadaha barnaamijka qoraalka. Waxay taageertaa habka is-dhexgalka;
  • Awood ikhtiyaari ah oo si cad loo qeexo noocyada;
  • Syntax aad ugu fiican xisaabinta nambarada, xisaabinta sayniska, hababka barashada mashiinka iyo sawirida xogta. Taageerada noocyo badan oo xog tirooyin ah iyo agabka isbarbar-dhigga xisaabinta.
  • Awoodda inaad si toos ah uga wacdo hawlaha maktabadaha C iyada oo aan lahayn lakabyo dheeraad ah.

Isbeddellada waaweyn ee Julia 1.9:

  • Tilmaamaha luqadda cusub
    • Oggolow in meelayn lagu sameeyo qayb kale iyadoo la adeegsanayo "setproperty!(:: Module, :: Calaamad, x)".
    • Meelayn badan oo aan ku jirin booska ugu dambeeya waa la oggol yahay. Tusaale ahaan, xadhigga "a, b..., c = 1, 2, 3, 4" waxa loo habayn doonaa "a = 1; b…, = 2, 3; c = 4" Tan waxa lagu maamulaa Base.split_rest.
    • Suugaanta halbeegga ah hadda waxay taageertaa isla ereyga xargaha; kuwaas. syntaxku waxa uu matali karaa taxane aan sax ahayn UTF-8, sida uu ogol yahay nooca Char.
    • Taageero lagu daray tilmaamaha Unicode 15.
    • Isku darka buul ee tuples iyo tuples magacyo leh ayaa hadda loo isticmaali karaa cabbirrada nooca.
    • Shaqooyin cusub oo la dhisay "getglobal(:: Module, :: Astaanta [, order])" iyo "setglobal! Habka getglobal waa in hadda laga door bidaa habka getfield ee gelitaanka doorsoomayaasha caalamiga ah.
  • Luuqadaha oo is beddela
    • "@invoke" macro lagu soo bandhigay nooca 1.7 hadda waa la dhoofiyay oo waa la isticmaali karaa Sidoo kale, waxay hadda isticmaashaa habka "Core.Typeof(x)" halkii ay ka isticmaali lahayd "wax" marka nooca tafatirka laga saaro dooda "x". Tani waa lagama maarmaan si noocyada la soo maray marka doodaha si sax ah loo maareeyo.
    • Dhaqdhaqaaqa dhoofinta shaqada "ugu yeedhida" iyo "@invokelatest" macro lagu soo bandhigay nooca 1.7.
  • Hagaajinta Isku-darka/Waqtiga Runta
    • Waqtiga si weyn loo dhimay illaa fulinta ugu horraysa (TTFX - Waqtiga fulinta ugu horreeya). Diyaarinta xirmada hadda waxay ku keydisaa koodka asalka ah "pkgimage", taas oo macnaheedu yahay koodka la sameeyay inta lagu jiro diyaarinta uma baahna in dib loo sameeyo ka dib xirmada la shubo. Isticmaalka qaabka pkgimages waxa lagu joojin karaa ikhtiyaarka "-pkgimages=maya".
    • Dhibaatada la og yahay ee kakanaanta quadratic-ka ee nooca garashada ayaa la hagaajiyay, iyo guud ahaan fikraddu waxay isticmaashaa xusuusta yar. Qaar ka mid ah kiisaska cidhifyada leh ee si toos ah loo soo saaray hawlo dhaadheer (sida ModelingToolkit.jl oo leh isla'egyo kala duwan iyo moodooyinka waaweyn ee sababa) ayaa si dhakhso leh isu ururinaya.
    • Wicitaanada leh doodaha aan nooca gaarka ahayn hadda waxay noqon karaan kala qaybsanaan midawga oo loo habeeyay duritaanka ama xallinta taagan, xitaa haddii ay jiraan noocyo badan oo kala duwan oo musharraxiinta diritaanka ah. Tani waxay wanaajin kartaa waxqabadka xaaladaha qaarkood marka noocyada shayga aan si buuxda loo xalin, iyadoo si joogto ah loo xalliyo "@nospecialize-d" goobaha wicitaanka lagana fogaado dib-u-ururinta.
    • Dhammaan isticmaalkii @pure macro ee moduleka Saldhigga waxaa lagu beddelay Base.@assume_effects.
    • Wicitaannada loogu yeero (f, invokesig, args...) ee wata noocyo ka yar kuwa sida caadiga ah loo isticmaalo f(args...) ma keenayso in xirmada dib loo soo celiyo.
  • Halbeegga khadka taliska ayaa isbedelaya
    • Linux iyo Windows, "--threads=auto" ikhtiyaarka hadda waxay isku daydaa inay go'aamiso tirada soo-saareyaal ee la heli karo oo ku saleysan xiriirka CPU, kaas oo ah maaskaro sida caadiga ah lagu dejiyay HPC iyo jawiga daruuraha.
    • Xulashada "--math-mode=fast" waa la joojiyay, beddelkeeda waxaa lagu talinayaa in la isticmaalo "@fastmath" macro, kaas oo si fiican u qeexay semantic.
    • Halbeegga "--threads" hadda wuxuu leeyahay qaabka "auto | N[,auto|M]", halkaas oo M ku caddeeyo tirada dunta is dhexgalka si loo abuuro (hadda auto macnaheedu waa 1).
    • Doorashada lagu daray "--heap-size-hint= ”, kaas oo dejinaya marinka ka dib ururinta qashinka firfircooni waxay bilaabmaysaa. Baaxadda waxaa lagu qeexi karaa bytes, kilobytes (1000 KB), megabyte (300 MB), ama gigabytes (1,5 GB).
  • Isbeddellada Multithreading
    • "Threads.@spawn" hadda waxay leedahay doodda koowaad ee ikhtiyaariga ah oo leh qiimaha ": default" ama ": interactive". Hawsha is-dhexgalku waxay u baahan tahay daahsoon jawaabeed oo hooseeya waxaana loo qaabeeyey inay noqoto mid gaaban ama si joogto ah loo qabto. Hawlaha isdhexgalka ayaa ku socon doona dunta isdhexgalka haddii la cayimay marka la bilaabayo Julia.
    • Xadhkaha la bilaabay meel ka baxsan wakhtiga shaqada ee Julia (tusaale, laga bilaabo C ama Java) hadda waxay wici karaan koodka Julia iyadoo la isticmaalayo "jl_adopt_thread". Tani waxay si otomaatig ah u dhacdaa marka aad geliso koodhka Julia iyadoo loo marayo "cfunction" ama barta "@ccallable". Natiijo ahaan, tirada duntu hadda way isbedeli kartaa wakhtiga runtime.
  • Hawlaha cusub ee maktabadda
    • Shaqada cusub ee "Iterators.flatmap".
    • Shaqada cusub ee "pkgversion(m :: Module)" si loo helo nooca xirmada ku shubtay cutubka la bixiyay, oo la mid ah "pkgdir(m:: Module)".
    • Shaqada cusub ee "x (x)" ee guudmaraysa "yaraynta(hcat, x :: Vector{<:Vector})" cabbir kasta oo u ogolaata dib-u-eegis kasta. Habka "stack(f, x)" waxa uu si guud u dhigaa "mapreduce(f, hcat, x)" oo aad u hufan.
    • Macro cusub oo loogu talagalay soosaarida xusuusta qoondaysan "@allocations", oo la mid ah "@allocated", marka laga reebo inay soo celinayso tirada qoondaynta xusuusta, ee ma aha wadarta guud ee xusuusta la qoondeeyay.
  • Tilmaamaha cusub ee maktabadda
    • "RoundFromZero" hadda waxay u shaqeysaa noocyo aan ahayn "BigFloat".
    • "Dict" hadda waxaa hoos loogu dhigi karaa gacanta iyadoo la adeegsanayo "sizehint!".
    • "@time" hadda waxay si gooni gooni ah u tilmaamaysaa boqolleyda wakhtiga lagu qaatay soo ururinta hababka aan ansax ahayn.
  • Isbeddellada maktabadda caadiga ah
    • Waxa go'an arrinta is-dhaafsiga ee hababka soo noqnoqda ee Dict iyo walxaha kale ee laga soo qaatay sida furayaasha(:: Dict), qiyamka(:: Dict) iyo Set. Hababkaan dib-u-eegista waxaa hadda loogu yeeri karaa Dict ama Set oo barbar socda tiro aan xadidneyn oo dunta ah, ilaa iyo inta aysan jirin ficillo wax ka beddelaya qaamuuska ama dejisan.
    • Diidmada shaqada saadaasha "!f" waxay hadda soo celinaysaa hawl isku dhafan "(!) ∘ f" halkii ay ka ahaan lahayd shaqo qarsoodi ah.
    • Hawlaha jeexjeexyada cabbirku waxay hadda ka shaqeeyaan cabbirro kala duwan: "slice", "mid kasta", iyo "qof walba" waxay soo celiyaan shay "Slices" oo u oggolaanaya dirista si ay u bixiso habab hufan.
    • Waxaa lagu daray "@kwdef" macro API dadweynaha.
    • Cilad go'an sida ay u kala horreeyaan hawlaha "fld1".
    • Kala soocida hadda had iyo jeer waa mid waqti-deggan (QuickSort dib loo habeeyay).
    • "Base.splat" hadda waa la dhoofiyaa. Qiimaha soo celinta waa nooca "Base.Splat" halkii uu ka ahaan lahaa shaqo qarsoodi ah, kaas oo u oggolaanaya in si fiican loo qiimeeyo.
  • Maareeyaha Xidhmada
    • "Xiriirinta Xirmada": taageerada soo dejinta qayb ka mid ah koodka xirmooyinka kale ee lagu soo raray fadhiga Julia. Codsigu wuxuu la mid yahay xirmada "Requires.jl", laakiin diyaarinta kahor iyo ku-habaynta waa la taageeray.
  • Laybareeri Algebra oo toosan
    • Khatarta jaahwareerka iyo qaybinta elementwise awgeed, hababka "a / b" iyo "b \ a" ee leh scalar "a" iyo vector "b" ayaa laga saaray, kuwaas oo u dhigma "a * pinv(b)".
    • Wicitaanada BLAS iyo LAPACK hadda waxay isticmaalaan "libblastrampoline (LBT)". OpenBLAS waxaa lagu bixiyaa si caadi ah, laakiin dhisidda sawirka nidaamka maktabadaha kale ee BLAS/LAPACK lama taageero. Taa beddelkeeda, waxaa lagu talinayaa in la isticmaalo habka LBT si loogu beddelo BLAS/LAPACK maktabado kale oo diyaar ah.
    • "lu" waxa ay taageertaa istaraatiijiyada wareeg ee "RowNonZero()" cusub, kaas oo doorta qaybta wareega ee ugu horeysa ee aan eber ahayn si loogu isticmaalo noocyada cusub ee xisaabta iyo ujeedooyin waxbarasho.
    • "caadiye(x, p=2)" hadda waxa ay taageertaa meel kasta oo vector caadi ah "x", oo ay ku jiraan scalars.
    • Tirada caadiga ah ee dunta BLAS hadda waxay la mid tahay tirada xadhkaha CPU ee qaab dhismeedka ARM iyo kala badh tirada xadhkaha CPU ee dhismayaasha kale.
  • Daabacaadda: Farriimaha khaladka ah ee dib loo shaqeeyay ee xargaha khaldan si loo akhriyo si ka wanaagsan.
  • Profile: Cusub "Profile.take_heap_snapshot(faylka)" shaqada qabta faylka qaabka ".heapsnapshot" ee ku salaysan JSON ee uu taageeray Chrome.
  • Random: randn iyo randexp hadda waxay u shaqeeyaan nooc kasta oo AbstractFloat ah oo qeexaya rand.
  • QAABIL
    • Riixitaanka "Alt-e" isku darka furaha hadda wuxuu furayaa gelinta hadda ee tifaftiraha. Waxa ku jira (haddii la beddelo) waxa la fulin doonaa marka tafatiruhu baxo.
    • Qaabka hadda jira ee ka shaqeeya REPL waa la bedeli karaa (sida caadiga ah waa Main) iyadoo la adeegsanayo "REPL.activate(:: Module)" ama iyadoo la gelinayo moduleka REPL oo riixaya "Alt-m" furaha isku darka.
    • Habka "lambarka leh", kaas oo daabaca nambarada gelinta iyo soo saarista kasta oo kaydisa natiijooyinka la qiimeeyay ee Out, waxaa lagu hawlgelin karaa "REPL.numbered_prompt!()".
    • Dhamaystirka tabku wuxuu soo bandhigayaa doodaha ereyga muhiimka ah ee la heli karo.
  • SuiteSparse: Koodhka loo raray "SuiteSparse" xalliye una guuray "SparseArrays.jl". Xalliyeyaasha hadda waxaa dib u dhoofiyay "SuiteSparse.jl".
  • SparseArrays
    • Xalliyeyaasha SuiteSparse ayaa hadda diyaar u ah qaab-hoosaadyada SparseArrays.
    • Hababka ilaalinta socodka UMFPACK iyo CHOLMOD waa la hagaajiyay iyadoo meesha laga saaray doorsoomayaasha caalamiga ah iyo adeegsiga qufullada. Multithreaded "ldiv!" Walxaha UMFPACK hadda waxaa loo fulin karaa si badbaado leh.
    • Shaqada tijaabada ah "SparseArrays.allowscalar(:: Bool)" waxay kuu ogolaanaysaa inaad damiso ama aad karti u siiso tusmaynta jaangooyooyinka yar yar. Shaqadan waxaa loogu talagalay in lagu ogaado tusmaynta jaantuska random ee walxaha "SparseMatrixCSC", taas oo ah isha caadiga ah ee dhibaatooyinka waxqabadka.
  • Qaab cusub oo guuldarraystayaal ah oo loogu talagalay qolalka tijaabada ah ee joojiya socodsiinta tijaabada goor hore haddii ay dhacdo guuldarro ama khalad. Ku dheji "@testset kwarg failfast=run" ama "Dhoofinta JULIA_TEST_FAILFAST= run". Tani waxay lagama maarmaan noqon kartaa bilawga CI si loo helo farriimaha khaladka hore.
  • Taariikhaha: Xadhkaha faaruqa ah hadda si khaldan looguma kala jeexjeexin sida saxda ah "DateTime", "Taariikhaha" ama "Waqtiga" qiyamka taas bedelkeedna waxay ku tuuraan khalad "ArgumentError" dhisayaasha iyo kala saarista, halka "tryparse" aysan soo celin waxba.
  • Baakad la qaybiyay
    • Qaabeynta xirmada (mashruuca firfircoon, "LOAD_PATH", "DEPOT_PATH") hadda waa la faafiyay marka hababka shaqaalaha maxalliga ah lagu daro (tusaale "addprocs (N :: Int)" ama leh calanka khadka taliska "-procs=N").
    • "addprocs" ee hababka shaqaalaha maxaliga ah ayaa hadda qaata dood magaceedu yahay "env" si loogu gudbiyo doorsoomayaasha deegaanka habsocodka shaqaalaha.
  • Unicode: "graphemes(s, m:n)" wuxuu ka soo celiyaa xarafka hoose ee mth ilaa nth graphemes gudaha "s".
  • Xirmada DelimitedFiles ayaa laga saaray maktabadaha nidaamka waxaana hadda loo qaybiyay sidii xirmo gaar ah oo ay tahay in si cad loo rakibo si loo isticmaalo.
  • Ku tiirsanaanta dibadda
    • Linux si otomaatig ah ayey u ogaataa nooca maktabadda libstdc++ oo ay ku shubtaa haddii ay ka cusub tahay. Dhaqankii hore ee lagu soo shubi lahaa libstdc++ ee ku dhex jira iyada oo aan loo eegin nooca nidaamka waxa lagu soo celin karaa iyada oo la dejiyo doorsoomiyaha deegaanka "JULIA_PROBE_LIBSTDCXX=0".
    • Waxa laga saaray "RPATH" ee binary-ga julia, kaas oo jebin kara maktabadaha Linux ee ku guul daraystay inay qeexaan doorsoome "RUNPATH".
    • Hagaajinta qalabka: Wax-soo-saarka "MethodError" iyo hababka (tusaale, laga bilaabo "hababka(my_func)") hadda waa la qaabeeyey oo midabaysan iyadoo loo eegayo sida hababka loo soo saaro raad-raacyada.

    Source: opennet.ru

Add a comment