Puo ea lenaneo Julia 1.9 e fumaneha

Ho lokolloa ha puo ea lenaneo la Julia 1.9 ho hatisitsoe, ho kopanya litšoaneleho tse kang ts'ebetso e phahameng, tšehetso bakeng sa lisebelisoa tse matla tsa ho thaepa le lisebelisoa tse hahiloeng bakeng sa mananeo a tšoanang. Syntax ea Julia e haufi le MATLAB, e alima likarolo tse ling ho Ruby le Lisp. Mokhoa oa ho qhekella oa likhoele o re hopotsa Perl. Khoutu ea projeke e ajoa tlasa laesense ea MIT.

Likarolo tsa bohlokoa tsa puo:

  • Ts'ebetso e phahameng: e 'ngoe ea lipheo tsa bohlokoa tsa morero ke ho fihlela ts'ebetso e haufi le mananeo a C. Moqapi oa Julia o thehiloe mosebetsing oa morero oa LLVM mme o hlahisa khoutu ea mochine oa tlhaho o sebetsang hantle bakeng sa liforomo tse ngata tse lebisitsoeng;
  • E ts'ehetsa li-paradigms tse fapaneng tsa mananeo, ho kenyeletsoa likarolo tsa mananeo a shebaneng le ntho le a sebetsang. Laeborari e tloaelehileng e fana ka, har'a tse ling, mesebetsi bakeng sa I/O e sa ts'oaneng, taolo ea ts'ebetso, ho rema lifate, ho etsa profil, le taolo ea liphutheloana;
  • Ho ngola ka matla: puo ha e hloke tlhaloso e hlakileng ea mefuta bakeng sa mefuta e fapaneng, e ts'oanang le lipuo tsa scripting programming. Mokhoa oa ho sebelisana o tšehelitsoe;
  • Bokhoni ba boikhethelo ba ho hlakisa mefuta ka ho hlaka;
  • Syntax e loketseng khomphutha ea lipalo, khomphutha ea mahlale, ho ithuta ka mochini, le pono ea data. Ts'ehetso bakeng sa mefuta e mengata ea lintlha tsa lipalo le lisebelisoa tsa ho tsamaisana ha lipalo.
  • Bokhoni ba ho letsetsa mesebetsi ka kotloloho ho tsoa lilaebraring tsa C ntle le likarolo tse ling.

Liphetoho tse kholo ho Julia 1.9:

  • Likarolo tsa puo e ncha
    • Lumella mesebetsi hore e etsoe mojuleng o mong ho sebelisoa "setproperty!(::Module, ::Symbol, x)".
    • Likabelo tse ngata tse seng maemong a ho qetela lia lumelloa. Mohlala, khoele “a, b…, c = 1, 2, 3, 4” e tla sebetsoa joalo ka “a = 1; b…, = 2, 3; c = 4". Sena se sebetsoa ka Base.split_rest.
    • Litlhaku tse le 'ngoe hona joale li tšehetsa syntax e tšoanang le li-text literals; tseo. Syntax e ka emela tatellano e fosahetseng ea UTF-8, joalo ka ha ho lumelletsoe ke mofuta oa Char.
    • Tšehetso e ekelitsoeng bakeng sa litlhaloso tsa Unicode 15.
    • Motsoako oa li-tuples le litlhaku tse rehelletsoeng joale li ka sebelisoa e le mefuta ea mofuta.
    • Mesebetsi e mecha e hahelletsoeng ka hare "getglobal(::Mojule, ::Symbol[, order])" le "setglobal!(::Module, ::Symbol, x[, order])" bakeng sa ho bala le ho ngola ka ho kgethehileng diphapano tsa lefatshe. Mokhoa oa getglobal joale o lokela ho khethoa ho feta mokhoa oa getfield oa ho fihlella mefuta e fapaneng ea lefats'e.
  • Liphetoho puong
    • "@invoke" macro e hlahisitsoeng ka har'a mofuta oa 1.7 e se e rometsoe kantle ho naha 'me e fumaneha bakeng sa tšebeliso. Ho feta moo, e se e sebelisa mokhoa oa "Core.Typeof(x)" ho e-na le "Eng kapa efe" ha mofuta oa tlhaloso e siiloe bakeng sa "x" khang. Sena sea hlokahala ho netefatsa hore mefuta e fetisitsoeng e le likhang e sebetsoa ka nepo.
    • E nolofalelitse ho romelloa ka ntle ha mosebetsi oa "invokelatest" le "@invokelatest" macro, e hlahisitsoeng mofuteng oa 1.7.
  • Lintlafatso tsa komporo / nako ea ho sebetsa
    • Nako e fokotsehileng haholo ho fihlela ts'ebetsong ea pele (TTFX - Nako ea ho qala ho bolaoa). Ho hlophisa sephutheloana hona joale ho boloka khoutu ea matsoalloa ho "pkgimage", ho bolelang hore khoutu e hlahisoang ke ts'ebetso ea precompilation e ke ke ea hloka ho khutlisoa ka mor'a hore sephutheloana se kenngoe. Ts'ebeliso ea mokhoa oa pkgimages e ka emisoa ho sebelisoa khetho ea "--pkgimages=no".
    • Taba e tsebahalang ea ho rarahana ha quadratic ea inference ea mofuta e se e lokisitsoe, 'me inference e sebelisa mohopolo o fokolang ka kakaretso. Maqhubu a mang a nang le mesebetsi e telele e itlhahelang ka bo eona (joalo ka ModelingToolkit.jl e nang le li-equation tse fapaneng le mefuta e meholo ea sesosa) li bokellana kapele haholo.
    • Mehala e nang le likhang ntle le mefuta ea konkreite joale e se e ka aroloa ka kopanelo bakeng sa ente kapa tharollo e sa fetoheng, leha ho na le batho ba bangata ba mefuta e fapaneng ea ho romelloa. Sena se ka ntlafatsa ts'ebetso maemong a itseng moo mefuta ea ntho e sa rarolloang ka botlalo, ka ho rarolla libaka tsa mehala tsa "@nospecialize-d" le ho qoba ho bokelloa hape.
    • Ts'ebeliso eohle ea @pure macro ho module ea Base e nkeloe sebaka ke Base.@assume_effects.
    • Mehala ea ho invoke(f, invokesig, args...) e nang le mefuta e fokolang haholo ho feta e sebelisoang bakeng sa f(args...) ha e sa hlola e etsa hore sephutheloana se boele se boele se sebelisoe.
  • Liphetoho ho Khetho ea Mola oa Taelo
    • Ho Linux le Windows, khetho ea "--threads=auto" joale e leka ho fumana palo e teng ea li-processor tse ipapisitseng le kamano ea CPU, maske hangata a behiloeng sebakeng sa HPC le marung.
    • Paramethara ea "--math-mode=fast" e koetsoe, sebakeng sa eona ho khothaletsoa ho sebelisa "@fastmath" macro, e nang le semantics e hlalositsoeng ka ho hlaka.
    • Khetho ea "--threads" e se e le ka sebopeho sa "auto | N[,auto|M]", moo M e bonts'ang palo ea likhoele tse sebetsanang tse lokelang ho etsoa (hajoale auto e bolela 1).
    • Khetho e ekelitsoeng "-heap-size-hint=" ", e behang moeli ka mor'a moo pokello ea lithōle e sebetsang e qala. Boholo bo ka hlalosoa ka li-byte, kilobytes (1000 KB), megabytes (300 MB), kapa gigabytes (1,5 GB).
  • Liphetoho ho multithreading
    • "Threads.@spawn" joale e na le khang ea pele ea boikhethelo ka boleng ":default" kapa ":interactive". Mosebetsi o kopanetsoeng o hloka latency ea karabelo e tlase mme e etselitsoe ho ba mokhuts'oane kapa ho etsoa khafetsa. Mesebetsi e kopanetsoeng e tla sebetsa ho likhoele tse sebetsanang haeba li boletsoe ha u qala Julia.
    • Likhoele tse tsamaeang ka ntle ho nako ea Julia (joalo ka ho tloha C kapa Java) joale li ka letsetsa Julia khoutu li sebelisa "jl_adopt_thread". Sena se etsahala ka bohona ha o kenya khoutu ea Julia ka "cfunction" kapa "@ccallable" ea ho kena. Ka lebaka leo, palo ea likhoele joale e ka fetoha nakong ea ts'ebetso.
  • Mesebetsi e mecha ea laebrari
    • Mosebetsi o mocha "Iterators.flatmap".
    • Mosebetsi o mocha "pkgversion(m::Module)" ho fumana mofuta oa sephutheloana se laetseng mojule o fanoeng, o ts'oanang le "pkgdir(m::Module)".
    • Mosebetsi o mocha "stack(x)" o akaretsang "fokotsa(hcat, x::Vector{<:Vector})" ho isa boemong bofe kapa bofe mme e lumella mofetoleli ofe kapa ofe oa li-iterator. Mokhoa oa "stack(f, x)" o akaretsa "mapreduce(f, hcat, x)" mme o sebetsa hantle haholoanyane.
    • Macro e ncha bakeng sa ho sekaseka memori e abetsoeng "@allocations", e ts'oanang le "@allocated", ntle le hore e khutlisa palo ea likabelo tsa memori, ho fapana le boholo ba memori e fanoeng.
  • Likarolo tse ncha tsa laebrari
    • "RoundFromZero" joale e sebetsa bakeng sa mefuta e meng ntle le "BigFloat".
    • "Dict" joale e ka fokotsoa ka letsoho ho sebelisoa "sizehint!"
    • "@time" ha joale e hlalosa ka thoko peresente ea nako e sebelisitsoeng ho bokella mekhoa e fosahetseng.
  • Liphetoho ho laeborari e tloaelehileng
    • Lokisa taba ea concurrency ka mekhoa e pheta-phetoang bakeng sa Dict le lintho tse ling tse nkiloeng joalo ka linotlolo(::Dict), boleng(::Dict) le Set. Mekhoa ena ea ho pheta-pheta hona joale e ka bitsoa ho Dict kapa Set ka ho bapa bakeng sa palo e sa lekanyetsoang ea likhoele, ha feela ho se na liketso tse fetolang bukantswe kapa sete.
    • Ho hana tshebediso ya leemedi "!f" jwale ho kgutlisa tshebetso e kopantseng "(!) ∘ f" sebakeng sa tshebetso e sa tsejweng.
    • Mesebetsi ea selae sa Dimension hona joale e sebetsa ho pholletsa le litekanyo tse ngata: "eachslice", "eachrow" le "eachcol" li khutlisa ntho ea "Slices" e lumellang ho romela ho fana ka mekhoa e sebetsang haholoanyane.
    • E kentse "@kwdef" macro ho API ea sechaba.
    • Lokisa bothata ka tatellano ea ts'ebetso ho "fld1".
    • Ho hlopha hona joale ho lula ho tsitsitse nako (QuickSort e entsoe bocha).
    • "Base.splat" e se e rometsoe kantle ho naha. Theko ea ho khutlisa ke mofuta oa "Base.Splat" ho fapana le ts'ebetso e sa tsejoeng, e lumellang hore e hlahise hantle.
  • Motsamaisi oa Sephutheloana
    • "Package Extensions": Tšehetso ea ho kenya snippet ea khoutu ho tsoa liphutheloana tse ling tse kentsoeng lenaneong la Julia. Sesebelisoa se ts'oana le sephutheloana sa "Requires.jl", empa ho hlophisoa esale pele le ho lumellana ha maemo hoa tšehetsoa.
  • LinearAlgebra Library
    • Ka lebaka la kotsi ea pherekano le karohano ea bohlale ba lintho, ho tlositsoe mekhoa ea "a/b" le "b\a" ka scalar "a" le vector "b", e neng e lekana le "a * pinv(b)".
    • Ho letsetsa BLAS le LAPACK joale ho sebelisa "libblastrampoline (LBT)". OpenBLAS e fanoa ka mokhoa oa kamehla, empa ho aha setšoantšo sa sistimi ka lilaebrari tse ling tsa BLAS/LAPACK ha ho tšehetsoe. Sebakeng seo, ho khothaletsoa ho sebelisa mochini oa LBT ho nkela BLAS/LAPACK sebaka ka sete e 'ngoe e teng ea lilaeborari.
    • "lu" e ts'ehetsa leano le lecha la ho potoloha ha matrix, "RowNonZero()", e khethang ntho ea pele e sa tsitsang bakeng sa ho sebelisoa le mefuta e mecha ea lipalo le merero ea koetliso.
    • "normalize(x, p=2)" joale e ts'ehetsa sebaka sefe kapa sefe se tloaelehileng sa vector "x", ho kenyeletsoa li-scalar.
    • Nomoro ea kamehla ea likhoele tsa BLAS e se e lekana le palo ea likhoele tsa CPU meahong ea meralo ea ARM le halofo ea palo ea likhoele tsa CPU meahong e meng.
  • Printf: Melaetsa ea liphoso e lokisitsoeng bocha bakeng sa likhoele tse fometsoeng hampe hore li balehe hamolemo.
  • Boemo: Ts'ebetso e ncha "Profile.take_heap_snapshot(file)", e ngolang faele ka mokhoa oa ".heapsnapshot" o thehiloeng ho JSON o tšehetsoeng ho Chrome.
  • Random: randn le randexp joale li sebetsa bakeng sa mofuta ofe kapa ofe oa AbstractFloat o hlalosang rand.
  • PUSA
    • Ho tobetsa konopo ea "Alt-e" joale ho bula sengoloa sa hajoale. Litaba (haeba li fetotsoe) li tla etsoa ha u tsoa ho mohlophisi.
    • Boemo ba hona joale ba module bo sebetsang ho REPL bo ka fetoloa (Main by default) ho sebelisa mosebetsi "REPL.activate(::Module)" kapa ka ho kenya module ho REPL le ho tobetsa motsoako oa senotlolo "Alt-m".
    • Mokhoa oa "numbered prompt", o hatisang linomoro bakeng sa tlhahiso le tlhahiso e 'ngoe le e 'ngoe le ho boloka liphetho tse nkiloeng ho Out, o ka kengoa tšebetsong ka "REPL.numbered_prompt!()".
    • Qetellong ea li-tab e bonts'a mabaka a teng a mantsoe a sehlooho.
  • SuiteSparse: Khoutu e tsamaisitsoeng bakeng sa "SuiteSparse" solver ho "SparseArrays.jl". Litharollo li se li romelloa hape ke "SuiteSparse.jl".
  • SparseArrays
    • Lisebelisoa tsa "SuiteSparse" li se li fumaneha e le li-submodule tsa "SparseArrays".
    • Mekhoa ea ts'ireletso ea likhoele ea UMFPACK le CHOLMOD e ntlafalitsoe ka ho felisa mefuta e fapaneng ea lefats'e le ho sebelisa linotlolo. Multi-threaded "ldiv!" Lintho tsa UMFPACK joale li ka etsoa ka mokhoa o sireletsehileng.
    • Mosebetsi oa teko "SparseArrays.allowscalar(::Bool)" e o lumella ho tima kapa ho nolofalletsa indexing ea scalar ea li-arrays tse fokolang. Ts'ebetso ena e etselitsoe ho bona indexing e sa reroang ea "SparseMatrixCSC", e leng mohloli o tloaelehileng oa mathata a ts'ebetso.
  • Mokhoa o mocha oa failsafe bakeng sa li-suite tsa liteko tse emisang tlhahlobo pele ho nako ha ho ka ba le phoso kapa phoso. Hlophisa ka "@testset kwarg failfast=true" kapa "export JULIA_TEST_FAILFAST=true". Ka linako tse ling sena sea hlokahala ha CI e matha ho amohela melaetsa ea liphoso pele ho nako.
  • Matsatsi: Lithapo tse se nang letho ha li sa aroloa ka phoso e le boleng ba "DateTime", "Dates" kapa "Times" mme ho e-na le hoo, lahlela "ArgumentError" ho lihahi le ho arola, athe "tryparse" ha e buse letho.
  • Sephutheloana se Ajoa
    • Tlhophiso ea sephutheloana (project e sebetsang, "LOAD_PATH", "DEPOT_PATH") e se e atolosoa ha ho kenyelletsoa lits'ebetso tsa basebetsi ba lehae (mohlala, ho sebelisa "addprocs(N::Int)" kapa ho sebelisa folakha ea mola oa taelo "--procs=N").
    • "addprocs" bakeng sa lits'ebetso tsa basebetsi ba lehae joale e amohela khang e bitsoang "env" ho fetisa mefuta e fapaneng ea tikoloho lits'ebetsong tsa basebetsi.
  • Unicode: "graphemes(s, m:n)" e khutlisetsa substring ho tloha ho mth ho ea ho nth graphemes ho "s".
  • Sephutheloana sa DelimitedFiles se tlositsoe lilaebraring tsa tsamaiso 'me joale se ajoa e le sephutheloana se arohaneng se lokelang ho kenngoa ka mokhoa o hlakileng hore se sebelisoe.
  • Ho itšetleha ka ntle
    • Ho Linux, mofuta oa laeborari ea sistimi ea libstdc ++ e bonoa ka bo eona, 'me, haeba e ncha, e tla kenngoa. Mokhoa oa khale oa ho kenya libstdc ++, ho sa tsotellehe mofuta oa tsamaiso, o ka tsosolosoa ka ho beha phetoho ea tikoloho "JULIA_PROBE_LIBSTDCXX=0".
    • E tlositsoe "RPATH" ho julia binary, e ka senyang lilaebrari ho Linux tse hlolehang ho hlalosa "RUNPATH" e fapaneng.
    • Lintlafatso tsa lisebelisoa: Phallo ea "MethodError" le mekhoa (mohlala ho tsoa "methods(my_func)") e se e hlophisitsoe ebile e na le mebala ho latela molao-motheo oa tlhahiso ea mekhoa ka har'a mohlala oa stack.

    Source: opennet.ru

Eketsa ka tlhaloso