Gjuha e programimit Julia 1.9 është në dispozicion

është publikuar versioni i gjuhës së programimit Julia 1.9, i cili kombinon cilësi të tilla si performancë e lartë, mbështetje për tipizimin dinamik dhe mjete të tjera të ndërtuara për programim paralel. Sintaksa e Julia është e ngjashme me MATLAB, duke huazuar disa elemente nga Ruby dhe Lisp. Metoda e manipulimit të vargjeve i ngjan Perl.

Veçoritë kyçe të gjuhës:

  • PerformancĂ« e lartĂ«: NjĂ« nga qĂ«llimet kryesore tĂ« projektit Ă«shtĂ« arritja e performancĂ«s afĂ«r programeve nĂ« gjuhĂ«n C. Kompilatori i Julia-s bazohet nĂ« punĂ«t e projektit LLVM dhe gjeneron kod tĂ« efektshĂ«m tĂ« makinĂ«s natyrore pĂ«r shumĂ« platforma tĂ« synuara;
  • MbĂ«shtetje pĂ«r paradigmat tĂ« ndryshme tĂ« programimit, duke pĂ«rfshirĂ« elemente tĂ« programimit objekt-orientuar dhe funksional. Biblioteka standarde ofron gjithashtu funksione pĂ«r hyrje/dalje asinkrone, menaxhimin e proceseve, regjistrimin, profilimin dhe menaxhimin e pakot;
  • Tipizimi dinamik: gjuha nuk kĂ«rkon pĂ«rcaktimin e qartĂ« tĂ« tipave pĂ«r variablat, ngjashĂ«m me gjuhĂ«t e programimit tĂ« skriptimit. MbĂ«shtetet njĂ« mod i ndĂ«rveprueshĂ«m;
  • MundĂ«si opsionale pĂ«r tĂ« specifikuar qartĂ« tipet;
  • Sintaksa, e cila pĂ«rshtatet shkĂ«lqyeshĂ«m pĂ«r llogaritjet numerike, llogaritjet shkencore, sistemet e mĂ«simit tĂ« makinerive dhe vizualizimin e tĂ« dhĂ«nave. MbĂ«shtetje pĂ«r shumĂ« lloje tĂ« tĂ« dhĂ«nave numerike dhe mjete pĂ«r paralelizimin e llogaritjeve.
  • MundĂ«sia pĂ«r tĂ« thirrur drejtpĂ«rdrejt funksionet nga bibliotekat nĂ« gjuhĂ«n C pa shtresa tĂ« tjera.

Ndryshimet kryesore në Julia 1.9:

  • MundĂ«si tĂ« reja tĂ« gjuhĂ«s
    • Lejohet ekzekutimi i caktimeve nĂ« njĂ« modul tjetĂ«r me "setproperty!(::Module, ::Symbol, x)".
    • Lejohet caktimi tĂ« shumĂ«fishtĂ« jo nĂ« pozitat pĂ«rfundimtare. PĂ«r shembull, rreshti "a, b
, c = 1, 2, 3, 4" do tĂ« pĂ«rpunojĂ« si "a = 1; b
, = 2, 3; c = 4". Kjo pĂ«rpunim bĂ«het pĂ«rmes Base.split_rest.
    • Literalet e simboleve tĂ« veçanta tani mbĂ«shtesin tĂ« njĂ«jtĂ«n sintaksĂ« si literalet e vargjeve; dmth. sintaksa mund tĂ« pĂ«rfaqĂ«sojĂ« sekuenca tĂ« pavlefshme UTF-8, siç lejohet nga tipi Char.
    • Shtuar mbĂ«shtetje pĂ«r specifikimin e Unicode 15.
    • Kombinimet e brendshme tĂ« tuples dhe tuples me emra tani mund tĂ« pĂ«rdoren si parametra tĂ« tipit.
    • Funksionet e reja tĂ« ndĂ«rtuara "getglobal(::Module, ::Symbol[, order])" dhe "setglobal!(::Module, ::Symbol, x[, order])" pĂ«r tĂ« lexuar dhe shkruar ekskluzivisht nĂ« variablat globale. Metoda getglobal tani duhet tĂ« preferohet pĂ«r aksesin nĂ« variablat globale nĂ« krahasim me metodĂ«n getfield.
  • Ndryshime nĂ« gjuhĂ«
    • Makrosi "@invoke", i prezantuar nĂ« versionin 1.7, tani eksportojnĂ« dhe janĂ« tĂ« disponueshĂ«m pĂ«r t'u pĂ«rdorur. PĂ«r mĂ« tepĂ«r, tani pĂ«rdor metodĂ«n "Core.Typeof(x)", jo "Any" nĂ« rast se annotimi i tipit Ă«shtĂ« lĂ«nĂ« jashtĂ« pĂ«r argumentin "x". Kjo Ă«shtĂ« e nevojshme qĂ« tipet e kaluara si argumente tĂ« pĂ«rpunohen saktĂ«.
    • Shtuar eksportimi i funksionit "invokelatest" dhe makros "@invokelatest", tĂ« cilat shfaqen nĂ« versionin 1.7.
  • PĂ«rmirĂ«sime tĂ« kompiluesit/ambientit tĂ« ekzekutimit.
    • KohĂ«zgjatja deri nĂ« ekzekutimin e parĂ« (TTFX - Koha deri nĂ« ekzekutimin e parĂ«) Ă«shtĂ« shkurtuar ndjeshĂ«m. Para-grumbullimi i paketĂ«s tani ruan kodin makinerik nĂ« "pkgimage", qĂ« do tĂ« thotĂ« se kodi i gjeneruar gjatĂ« para-grumbullimit nuk do tĂ« kĂ«rkojĂ« ripĂ«rpunim pas ngarkimit tĂ« paketĂ«s. PĂ«rdorimi i modalitetit pkgimages mund tĂ« çaktivizohet me opsionin "—pkgimages=no".
    • Rregulluar problemi i njohur i kompleksitetit katror tĂ« inferencĂ«s sĂ« tipeve, dhe pĂ«r pĂ«rgjithĂ«si, inferenca pĂ«rdor mĂ« pak memorie. Disa raste tĂ« kufijve me funksione tĂ« gjata tĂ« gjeneruara automatikisht (p.sh., ModelingToolkit.jl me ekuacione tĂ« pjesshĂ«m dhe modele tĂ« mĂ«dha shkakĂ«sore) pĂ«rpunohen shumĂ« mĂ« shpejt.
    • Thirrjet me argumente pa tipe specifike tani mund tĂ« optimizohen me metodĂ«n Union-splitting pĂ«r injektim ose zgjidhje statike, edhe nĂ«se ekzistojnĂ« disa kandidatĂ« tĂ« ndryshĂ«m pĂ«r dispatcher. Kjo mund tĂ« pĂ«rmirĂ«sojĂ« performancĂ«n nĂ« disa situata, kur tipet e objekteve nuk zgjidhen plotĂ«sisht statikisht, duke shfrytĂ«zuar zgjidhjen statike tĂ« vendeve tĂ« thirrjes "@nospecialize-d" dhe duke shmangur ripĂ«rpunimin.
    • TĂ« gjitha variantet e pĂ«rdorimit tĂ« makros @pure nĂ« modulit Base janĂ« zĂ«vendĂ«suar me Base.@assume_effects.
    • Thirrjet invoke(f, invokesig, args
) me tipe mĂ« pak specifike sesa zakonisht pĂ«rdoren pĂ«r f(args
) tani nuk shkaktojnĂ« ripĂ«rpunimin e paketĂ«s.
  • Ndryshimet nĂ« parametrat e komandĂ«s
    • NĂ« Linux dhe Windows, parametri "—threads=auto" tani pĂ«rpiqet tĂ« pĂ«rcaktojĂ« numrin e disponueshĂ«m tĂ« procesorĂ«ve nĂ« bazĂ« tĂ« CPU affinity, maska e sĂ« cilĂ«s zakonisht vendoset nĂ« mjedise tĂ« larta tĂ« performancĂ«s dhe nĂ« mjediset cloud.
    • Çaktivizuar parametri "—math-mode=fast", ndĂ«rsa rekomandohet tĂ« pĂ«rdoret makroja "@fastmath", e cila ka semantikĂ« tĂ« qartĂ« tĂ« pĂ«rcaktuar.
    • Parametri "—threads" tani ka formatin "auto | N[,auto|M]", ku M tregon numrin e proceseve interaktive qĂ« krijohen (aktualisht auto do tĂ« thotĂ« 1).
    • Shtuar opsioni "—heap-size-hint=", i cili vendos pragun, pas sĂ« cilit fillon mbledhja aktive e mbeturinave. MadhĂ«sia mund tĂ« specifikohet nĂ« bytes, kilobytes (1000 KB), megabytes (300 MB) ose gigabytes (1.5 GB).
  • Ndryshime nĂ« shumĂ«fishtĂ«si
    • "Threads.@spawn" tani ka njĂ« argument tĂ« parĂ« opsional me vlerĂ«n "default" ose "interactive". Detyra interaktive kĂ«rkon njĂ« vonesĂ« tĂ« vogĂ«l pĂ«rgjigjie dhe Ă«shtĂ« menduar tĂ« jetĂ« e shkurtĂ«r ose tĂ« kryhet shpesh. Detyrat interaktive do tĂ« ekzekutohen nĂ« procese interaktive, nĂ«se ato janĂ« specificuar gjatĂ« nisjes sĂ« Julia.
    • Proceset e nisura jashtĂ« mjedisit tĂ« ekzekutimit tĂ« Julia (p.sh., nga C ose Java) tani mund tĂ« thĂ«rrasin kodin Julia, duke pĂ«rdorur "jl_adopt_thread". Kjo ndodh automatikisht kur futihet kodi Julia pĂ«rmes "cfunction" ose pikĂ«s hyrĂ«se "@ccallable". Si rezultat, numri i proceseve tani mund tĂ« ndryshojĂ« gjatĂ« ekzekutimit.
  • Funksionet e reja tĂ« bibliotekĂ«s
    • Funksioni i ri "Iterators.flatmap".
    • Funksioni i ri «pkgversion(m::Module)» pĂ«r tĂ« marrĂ« versionin e paketĂ«s qĂ« ka ngarkuar moduli pĂ«rkatĂ«s, nĂ« mĂ«nyrĂ« tĂ« ngjashme me «pkgdir(m::Module)».
    • Funksioni i ri «stack(x)», i cili pĂ«rmbledh «reduce(hcat, x::Vector{<:Vector})» nĂ« çfarĂ«do dimensionaliteti dhe lejon çdo iterator tĂ« iteratorĂ«ve. Metoda «stack(f, x)» pĂ«rmbledh «mapreduce(f, hcat, x)» dhe Ă«shtĂ« mĂ« efikase.
    • NjĂ« makros pĂ«r analizimin e memories sĂ« alokuar «@allocations», nĂ« mĂ«nyrĂ« tĂ« ngjashme me «@allocated», pĂ«rveç se kthen numrin e operacioneve tĂ« alokimit tĂ« memories, nĂ« vend tĂ« madhĂ«sisĂ« totale tĂ« memories sĂ« alokuar.
  • MundĂ«si tĂ« reja nĂ« bibliotekĂ«
    • «RoundFromZero» tani funksionon pĂ«r tipe tĂ« tjera pĂ«rveç «BigFloat».
    • «Dict» tani mund tĂ« reduktohet manualisht me «sizehint!».
    • «@time» tani tregon veçmas pĂ«rqindjen e kohĂ«s qĂ« Ă«shtĂ« shpenzuar pĂ«r ripĂ«rpilimin e metodave tĂ« pavlefshme.
  • Ndryshime nĂ« bibliotekĂ«n standarde
    • U zgjidh problemi i aksesit paralel nĂ« metodat e iterimit pĂ«r Dict dhe objekte tĂ« tjera tĂ« degraduara, si keys(::Dict), values(::Dict) dhe Set. KĂ«to metoda interaktive tani mund tĂ« thirren pĂ«r Dict ose Set nĂ« mĂ«nyrĂ« paralel pĂ«r njĂ« numĂ«r tĂ« pakufizuar threads nĂ« kushtin qĂ« nuk ka aktivitete qĂ« ndryshojnĂ« fjalorin ose grupin.
    • Mohimi i funksionit predikativ «!f» tani kthen njĂ« funksion tĂ« pĂ«rbĂ«rĂ« «(!) ∘ f» nĂ« vend tĂ« njĂ« funksioni anonim.
    • Funksionet e prekjeve tĂ« dimensioneve tani punojnĂ« nĂ« shumĂ« dimensione: «eachslice», «eachrow» dhe «eachcol» kthejnĂ« objektin «Slices», i cili lejon dispatch pĂ«r tĂ« ofruar metoda mĂ« efikase.
    • Makros «@kwdef» Ă«shtĂ« shtuar nĂ« API-nĂ« publike.
    • Problemi me rendin e operacioneve nĂ« «fld1» Ă«shtĂ« zgjidhur.
    • Renditja tani Ă«shtĂ« gjithmonĂ« e qetĂ« me kohĂ« (QuickSort Ă«shtĂ« ripunuar).
    • «Base.splat» tani eksportohesh. Vlera e kthyer pĂ«rfaqĂ«son tipin «Base.Splat», dhe jo njĂ« funksion anonim, çka e bĂ«n atĂ« tĂ« duket bukur nĂ« dalje.
  • Menaxheri i paketave
    • «Package Extensions»: mbĂ«shtetje pĂ«r ngarkimin e fraksionit tĂ« kodit nga paketa tĂ« tjera, tĂ« ngarkuara nĂ« seancĂ«n Julia. PĂ«rdorimi Ă«shtĂ« i ngjashĂ«m me paketĂ«n «Requires.jl», por mbĂ«shtetet parakompilimi dhe pĂ«rputhshmĂ«ria e konfigurimeve.
  • Biblioteka LinearAlgebra
    • PĂ«r shkak tĂ« rrezikut tĂ« konfuzionit me ndarjen pĂ«r çdo element janĂ« hequr metodat «a / b» dhe «b \ a» me skalar «a» dhe vektor «b», tĂ« cilat ishin ekuivalente me «a * pinv(b)».
    • PĂ«r thirrjen e BLAS dhe LAPACK tani aplikohet «libblastrampoline (LBT)». OpenBLAS ofrohet si njĂ« parazgjedhje, por ndĂ«rtimi i imazhit tĂ« sistemit me biblioteka tĂ« tjera BLAS/LAPACK nuk mbĂ«shtetet. NĂ« vend tĂ« kĂ«saj, rekomandohet pĂ«rdorimi i mekanizmit LBT pĂ«r tĂ« zĂ«vendĂ«suar BLAS/LAPACK me njĂ« paketĂ« bibliotekash tĂ« tjera.
    • «lu» mbĂ«shtet njĂ« strategji tĂ« re tĂ« rrotullimit tĂ« matricĂ«s «RowNonZero()», e cila zgjedh elementin e parĂ« jo-zero pĂ«r pĂ«rdorim me lloje tĂ« reja aritmetike dhe pĂ«r qĂ«llime edukative.
    • «normalize(x, p=2)» tani mbĂ«shtet çdo hapĂ«sirĂ« vektoriale tĂ« normalizuar «x», duke pĂ«rfshirĂ« skalarĂ«t.
    • Numri i thesareve tĂ« BLAS parazgjedhur tani Ă«shtĂ« i barabartĂ« me numrin e thesareve tĂ« CPU nĂ« arkitekturĂ«n ARM dhe gjysmĂ«n e numrit tĂ« thesareve tĂ« CPU nĂ« arkitektura tĂ« tjera.
  • Printf: PĂ«r lexueshmĂ«ri mĂ« tĂ« mirĂ«, mesazhet e gabimeve pĂ«r stringjet me format tĂ« gabuar janĂ« ripunuar.
  • Profile: Funksioni i ri «Profile.take_heap_snapshot(file)», i cili shkruan njĂ« file nĂ« formatin «.heapsnapshot» bazuar nĂ« JSON, i mbĂ«shtetur nĂ« Chrome.
  • Random: randn dhe randexp tani funksionojnĂ« pĂ«r çdo lloj AbstractFloat, qĂ« pĂ«rcakton rand.
  • REPL
    • Shtypja e kombinimit tĂ« çelĂ«save «Alt-e» tani hap inputin aktual nĂ« redaktor. PĂ«rmbajtja (nĂ«se Ă«shtĂ« ndryshuar) do tĂ« ekzekutohet kur dilet nga redaktori.
    • Konteksti aktual i modulit, i aktivizuar nĂ« REPL, mund tĂ« ndryshohet (parazgjedhja Ă«shtĂ« Main) me funksionin «REPL.activate(::Module)» ose duke futur modul nĂ« REPL dhe shtypur kombinimin e çelĂ«save «Alt-m».
    • MĂ«nyra e «nĂ«nshkrimit tĂ« numĂ«ruar», e cila tregon numra pĂ«r çdo hyrje dhe dalje dhe ruan rezultatet e vlerĂ«suar nĂ« Out, mund tĂ« aktivizohet me «REPL.numbered_prompt!()».
    • AutopĂ«rfundimi me ndihmĂ«n e tab-it tregon argumentet e disponueshme tĂ« fjalĂ«s kyç.
  • SuiteSparse: Kodi pĂ«r zgjidhĂ«sin «SuiteSparse» Ă«shtĂ« kaluar nĂ« «SparseArrays.jl». ZgjidhĂ«sit tani ripĂ«rzgjidhen nga «SuiteSparse.jl».
  • SparseArrays
    • ZgjidhĂ«sit «SuiteSparse» tani janĂ« tĂ« disponueshĂ«m si nĂ«nmodula tĂ« «SparseArrays».
    • MĂ«nyrat e mbrojtjes sĂ« threads UMFPACK dhe CHOLMOD janĂ« pĂ«rmirĂ«suar duke eliminuar variablat globalĂ« dhe duke pĂ«rdorur bllokime. «ldiv!» i objekteve UMFPACK tani mund tĂ« ekzekutohet nĂ« mĂ«nyrĂ« tĂ« sigurt.
    • Funksioni eksperimental «SparseArrays.allowscalar(::Bool)» lejon çaktivizimin ose aktivizimin e indekset skalarĂ« tĂ« matricave tĂ« holluara. Ky funksion Ă«shtĂ« i destinuar pĂ«r zbulimin e indekseve skalarĂ« tĂ« rastĂ«sishme nĂ« objektet «SparseMatrixCSC», qĂ« Ă«shtĂ« njĂ« burim i zakonshĂ«m i problemeve me performancĂ«n.
  • NjĂ« mĂ«nyrĂ« e re e qĂ«ndrueshmĂ«risĂ« pĂ«r grupe testesh, e cila pĂ«rfundon parakohe ekzekutimin e testit nĂ« rast dĂ«shtimi ose gabimi. Vendoset ose pĂ«rmes "@testset kwarg failfast=true", ose "export JULIA_TEST_FAILFAST=true". Kjo Ă«shtĂ« e nevojshme ndonjĂ«herĂ« nĂ« ekzekutimet CI pĂ«r tĂ« marrĂ« mesazhe gabimi mĂ« herĂ«t.
  • Datat: Rreshtat e zbrazĂ«t nuk analizohen mĂ« gabimisht si vlera tĂ« pranueshme "DateTime", "Dates" ose "Times", dhe nĂ« vend tĂ« kĂ«saj japin njĂ« gabim "ArgumentError" nĂ« konstruktorĂ« dhe analizĂ«n sintaksore, ndĂ«rsa "tryparse" nuk kthen asgjĂ«.
  • PaketĂ« Distribuar
    • Konfigurimi i paketĂ«s (projekti aktiv, "LOAD_PATH", "DEPOT_PATH") tani shpĂ«rndahet kur shtohen proceset lokale tĂ« punĂ«s (p.sh., me "addprocs(N::Int)" ose me flagun e komandĂ«s "—procs=N").
    • "addprocs" pĂ«r proceset lokale tĂ« punĂ«s tani pranon njĂ« argument me emrin "env" pĂ«r tĂ« transmetuar variablat e mjedisit tek proceset e punĂ«s.
  • Unicode: "graphemes(s, m:n)" kthen njĂ« nĂ«nstring nga m-Ă« grafema deri nĂ« n-Ă« grafema nĂ« "s".
  • PaketĂ« DelimitedFiles Ă«shtĂ« hequr nga bibliotekat sistemore dhe tani shpĂ«rndahet si njĂ« paketĂ« e veçantĂ«, e cila duhet tĂ« instalohet nĂ« mĂ«nyrĂ« tĂ« qartĂ« pĂ«r t'u pĂ«rdorur.
  • VarĂ«sitĂ« e jashtme
    • NĂ« Linux, versioni i bibliotekĂ«s sistemore libstdc++ identifikohet automatikisht dhe nĂ«se Ă«shtĂ« mĂ« i ri, ngarkohet. Sjellja e vjetĂ«r e ngarkimit tĂ« libstdc++ tĂ« integruar pavarĂ«sisht nga versioni i sistemit mund tĂ« rikthehet duke vendosur variablĂ«n e mjedisit "JULIA_PROBE_LIBSTDCXX=0".
    • RPATH Ă«shtĂ« hequr nga skedari binar julia, gjĂ« qĂ« mund tĂ« shkaktojĂ« probleme nĂ« Linux pĂ«r bibliotekat qĂ« nuk u Ă«shtĂ« mundĂ«suar tĂ« identifikojnĂ« variablĂ«n "RUNPATH".
    • PĂ«rmirĂ«sime tĂ« mjeteve: Dalja "MethodError" dhe metodat (p.sh., nga "methods(my_func)") tani janĂ« formatuar dhe tĂ« ngjyrosura nĂ« pĂ«rputhje me parimin e daljes sĂ« metodave gjatĂ« ndjekjes sĂ« stack-ut.

    Burimi: opennet.ru

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster