Loaʻa ka ʻōlelo papahana Julia 1.9

Ua paʻi ʻia ka hoʻokuʻu ʻana o ka ʻōlelo papahana Julia 1.9, e hui pū ana i nā ʻano like me ka hana kiʻekiʻe, ke kākoʻo no ka paʻi paʻi ʻana a me nā mea hana i kūkulu ʻia no ka hoʻolālā like. ʻO ka syntax a Julia kokoke i MATLAB, e hōʻaiʻē i kekahi mau mea mai Ruby a me Lisp. Hoʻomanaʻo ʻia ke ʻano hana hoʻopunipuni iā ​​Perl. Hāʻawi ʻia ke code papahana ma lalo o ka laikini MIT.

Nā hiʻohiʻona nui o ka ʻōlelo:

  • Hana kiʻekiʻe: ʻo kekahi o nā pahuhopu nui o ka papahana e hoʻokō i ka hana kokoke i nā papahana C. Hoʻokumu ʻia ka mea hōʻuluʻulu ʻo Julia ma ka hana o ka papahana LLVM a hoʻopuka i ka code mīkini ʻōiwi kūpono no ka nui o nā papa kuhikuhi;
  • Kākoʻo i nā paradigms hoʻonohonoho like ʻole, me nā mea o ka hoʻonohonoho ʻana i ka mea a me ka hoʻolālā hana. Hāʻawi ka waihona maʻamau, ma waena o nā mea ʻē aʻe, nā hana no ka I/O asynchronous, ka hoʻokele kaʻina hana, logging, profiling, a me ka hoʻokele pūʻolo;
  • ʻO ke kikokiko paʻakiki: ʻaʻole koi ka ʻōlelo i ka wehewehe kikoʻī o nā ʻano no nā ʻano like ʻole, e like me ka hoʻopaʻa ʻana i nā ʻōlelo papahana. Kākoʻo ʻia ke ʻano pāʻani;
  • ʻO ka hiki ke koho pono e wehewehe i nā ʻano;
  • He syntax kūpono no ka helu helu, ʻepekema ʻepekema, aʻo mīkini, a me ka ʻike ʻikepili. Kākoʻo no nā ʻano ʻikepili helu a me nā mea hana no ka hoʻohālikelike ʻana i nā helu.
  • ʻO ka hiki ke kāhea pololei i nā hana mai nā hale waihona puke C me ka ʻole o nā papa ʻē aʻe.

Nā hoʻololi nui ma Julia 1.9:

  • Nā hiʻohiʻona ʻōlelo hou
    • E ʻae i nā haʻawina e hana ʻia i loko o kekahi module me ka hoʻohana ʻana i "setproperty!(::Module, ::Symbol, x)".
    • Ua ʻae ʻia nā hana he nui ʻaʻole i ke kūlana hope. No ka laʻana, e hana ʻia ke kaula “a, b…, c = 1, 2, 3, 4” ma ke ʻano he “a = 1; b…, = 2, 3; c = 4". Hana ʻia kēia ma o Base.split_rest.
    • Ke kākoʻo nei nā huaʻōlelo hoʻokahi i ka syntax like me ka string literals; ka poe. Hiki i ka syntax ke hōʻike i nā kaʻina UTF-8 kūpono ʻole, e like me ka ʻae ʻia e ke ʻano Char.
    • Hoʻohui i ke kākoʻo no Unicode 15 kikoʻī.
    • Hiki ke hoʻohana ʻia nā hui pū ʻana o nā tuples a me nā tuple character i kēia manawa ma ke ʻano he ʻano ʻano.
    • Nā hana hou i kūkulu ʻia "getglobal (:: Module, :: Symbol [, order])" a me "setglobal! (:: Module, :: Symbol, x [, order])" no ka heluhelu ʻana a me ke kākau ʻana i nā mea hoʻololi honua. Pono e koho ʻia ke ʻano getglobal ma mua o ke ala getfield no ke komo ʻana i nā ʻano hoʻololi honua.
  • Hoʻololi i ka ʻōlelo
    • ʻO ka macro "@invoke" i hoʻokomo ʻia ma ka mana 1.7 i kēia manawa ua lawe ʻia a hiki ke hoʻohana ʻia. Eia hou, hoʻohana ʻo ia i ke ʻano "Core.Typeof(x)" ma mua o "Any" i ka hihia kahi i waiho ʻia ai ke ʻano hōʻike no ka hoʻopaʻapaʻa "x". Pono kēia e hōʻoia i ka hoʻokō pono ʻia ʻana o nā ʻano hoʻopaʻapaʻa.
    • Hiki ke hoʻokuʻu aku i ka hana "invokelatest" a me ka macro "@invokelatest", i hoʻokomo ʻia ma ka mana 1.7.
  • Hoʻomaikaʻi ʻana i ka mea hoʻopili / runtime
    • Hoʻemi nui ʻia ka manawa i ka hoʻokō mua (TTFX - Time to first execution). ʻO ka hoʻopili mua ʻana i kahi pūʻolo i kēia manawa e mālama i ke code ʻōiwi ma "pkgimage", ʻo ia hoʻi ʻaʻole pono e hoʻopili hou ʻia ke code i hana ʻia e ke kaʻina hana precompilation ma hope o ka hoʻouka ʻia ʻana o ka pūʻolo. Hiki ke hoʻopau ʻia ka hoʻohana ʻana i ke ʻano pkgimages me ke koho "--pkgimages=no".
    • Ua hoʻopaʻa ʻia ka pilikia paʻakikī quadratic i ʻike ʻia o ke ʻano inference, a ua hoʻohana ka inference i ka liʻiliʻi o ka hoʻomanaʻo holoʻokoʻa. ʻO kekahi mau hiʻohiʻona lihi me nā hana lōʻihi i hana ʻakomi ʻia (e like me ModelingToolkit.jl me nā hoʻohālikelike ʻokoʻa hapa a me nā kumu kumu kumu nui) ʻoi aku ka wikiwiki.
    • ʻO nā kelepona me nā ʻano hoʻopaʻapaʻa ʻole i kēia manawa hiki ke hoʻokaʻawale ʻia ʻo Union-splitting no ka injection a i ʻole static resolution, ʻoiai inā he nui nā moho ʻano like ʻole no ka hoʻouna ʻana. Hiki i kēia ke hoʻomaikaʻi i ka hana ma kekahi mau kūlana kahi i hoʻoholo ʻole ʻia ai nā ʻano mea, ma ka hoʻoholo ʻana i nā wahi kelepona "@nospecialize-d" a pale i ka hoʻopili hou ʻana.
    • Ua hoʻololi ʻia nā mea hoʻohana a pau o ka @pure macro ma ka module Base me Base.@assume_effects.
    • Kāhea ʻia e kāhea (f, invokesig, args...) me nā ʻano kikoʻī liʻiliʻi ma mua o ka hoʻohana maʻamau no f(args...) ʻaʻole kumu e hoʻohui hou ʻia ka pūʻolo.
  • Hoʻololi i nā koho laina kauoha
    • Ma Linux a me Windows, ke ho'āʻo nei ke koho "--threads=auto" e hoʻoholo i ka helu i loaʻa o nā kaʻina hana e pili ana i ka pili o ka CPU, kahi mask i hoʻonohonoho maʻamau i ka HPC a me nā kaiapuni ao.
    • Ua pio ka “--math-mode=fast” parameter, ma kahi o ia e paipai ʻia e hoʻohana i ka macro “@fastmath”, i wehewehe pono i nā semantics.
    • Aia ke koho "--threads" ma ke ʻano "auto | N.
    • Hoʻohui ʻia ke koho "—heap-size-hint=" ", ka mea e hoʻonoho ai i ka paepae ma hope o ka hoʻomaka ʻana o ka ʻohi ʻōpala. Hiki ke kuhikuhi ʻia ka nui ma nā paita, kilobytes (1000 KB), megabytes (300 MB), a i ʻole gigabytes (1,5 GB).
  • Hoʻololi i ka multithreading
    • Loaʻa iā "Threads.@spawn" kahi hoʻopaʻapaʻa mua koho me ka waiwai ": default" a i ʻole ": interactive". Pono ka hana pili i ka latency pane haʻahaʻa a ua hoʻolālā ʻia e pōkole a i hana pinepine ʻia. E holo ana nā hana pili i nā pae pili inā e kuhikuhi ʻia i ka wā e hoʻomaka ai ʻo Julia.
    • Hiki i nā kaula e holo ana ma waho o ka manawa holo Julia (e like me C a i ʻole Java) ke kāhea iā Julia code me ka hoʻohana ʻana i "jl_adopt_thread". Hiki koke kēia i ke komo ʻana i ke code Julia ma o "cfunction" a i ʻole ka "@ccallable" wahi komo. ʻO ka hopena, hiki ke loli ka helu o nā kaula i ka wā e hoʻokō ai.
  • Nā hana waihona hou
    • Hana hou "Iterators.flatmap".
    • Hana hou "pkgversion(m::Module)" e kiʻi i ka mana o ka pūʻolo i hoʻouka i kahi module i hāʻawi ʻia, e like me "pkgdir(m::Module)".
    • Hana hou "stack(x)" e hoʻomāhuahua i ka "reduce(hcat, x::Vector{<:Vector})" i kēlā me kēia ʻāpana a ʻae i kekahi mea hoʻololi o nā mea hoʻohālikelike. ʻO ke ʻano "stack(f, x)" ka mea hoʻohālikelike "mapreduce(f, hcat, x)" a ʻoi aku ka maikaʻi.
    • ʻO ka macro hou no ka nānā ʻana i ka hoʻomanaʻo i hoʻokaʻawale ʻia "@allocations", e like me "@allocated", koe wale nō ka mea e hoʻihoʻi i ka helu o nā hoʻokaʻawale hoʻomanaʻo, ma mua o ka nui o ka hoʻomanaʻo i hāʻawi ʻia.
  • Nā hiʻohiʻona waihona hou
    • Ke hana nei ʻo "RoundFromZero" no nā ʻano ʻē aʻe ma mua o "BigFloat".
    • Hiki ke ho'emi lima 'ia 'o "Dict" me ka "sizehint!"
    • "@time" i kēia manawa e wehewehe kaʻawale i ka pākēneka o ka manawa i hoʻohana ʻia no ka hoʻopili hou ʻana i nā ala kūpono ʻole.
  • Hoʻololi i ka waihona maʻamau
    • Hoʻoponopono i kahi pilikia concurrency i nā ʻano hoʻololi no Dict a me nā mea i loaʻa e like me nā kī (:: Dict), nā waiwai (:: Dict) a me Set. Hiki ke kapa ʻia kēia mau ʻano hana hoʻomaʻamaʻa ma kahi Dict a i ʻole Set in parallel no ka helu palena ʻole o nā loina, inā ʻaʻohe hana e hoʻololi i ka puke wehewehe ʻōlelo a hoʻonohonoho paha.
    • ʻO ka hōʻole ʻana i kahi hana predicate "!f" i kēia manawa e hoʻihoʻi i kahi hana hui "(!) ∘ f" ma kahi o kahi hana inoa ʻole.
    • Ke hana nei nā hana ʻāpana dimension ma nā ʻāpana he nui: "eachslice", "eachrow" a me "eachcol" e hoʻihoʻi i kahi mea "Slices" e hiki ai i ka hoʻouna ʻana ke hāʻawi i nā ala ʻoi aku ka maikaʻi.
    • Hoʻohui i ka macro "@kwdef" i ka API lehulehu.
    • Hoʻoponopono i kahi pilikia me ke kauoha o nā hana ma "fld1".
    • ʻO ka hoʻonohonoho ʻana i kēia manawa ua paʻa ka manawa (ua hoʻolālā hou ʻia ʻo QuickSort).
    • Hoʻopuka ʻia ʻo "Base.splat" i kēia manawa. ʻO ka waiwai hoʻihoʻi he ʻano "Base.Splat" ma mua o kahi hana inoa ʻole, hiki ke hoʻopuka maikaʻi ʻia.
  • Luna Hoʻokele
    • "Package Extensions": Kākoʻo no ka hoʻouka ʻana i kahi snippet code mai nā pūʻolo ʻē aʻe i hoʻouka ʻia i kahi kau Julia. Ua like ka palapala noi me ka pūʻolo "Requires.jl", akā kākoʻo ʻia ka hoʻonohonoho mua ʻana a me nā hoʻonohonoho hoʻonohonoho.
  • Hale Waihona Puke LinearAlgebra
    • Ma muli o ka pilikia o ka huikau me ka māhele ʻeleʻele, ua wehe ʻia nā ʻano "a/b" a me "b\a" me ka scalar "a" a me ka vector "b", ua like ia me "a * pinv(b)".
    • Ke hoʻohana nei ʻo BLAS a me LAPACK i kēia manawa "libblastrampoline (LBT)". Hāʻawi ʻia ʻo OpenBLAS ma ka paʻamau, akā ʻaʻole kākoʻo ʻia ke kūkulu ʻana i ke kiʻi ʻōnaehana me nā hale waihona puke ʻē aʻe BLAS/LAPACK. Akā, makemake ʻia e hoʻohana i ka mīkini LBT e hoʻololi i ka BLAS/LAPACK me nā waihona waihona ʻē aʻe.
    • Kākoʻo ʻo "lu" i kahi hoʻolālā hoʻololi matrix hou, "RowNonZero()", ka mea e koho ai i ka mea hoʻololi mua ʻole-zero no ka hoʻohana ʻana me nā ʻano helu helu hou a no nā kumu aʻo.
    • "normalize (x, p = 2)" i kēia manawa ke kākoʻo nei i kekahi kikowaena vector maʻamau "x", me nā scalars.
    • ʻO ka helu paʻamau o nā kaula BLAS i kēia manawa ua like me ka helu o nā kaula CPU ma nā hale kūkulu ARM a me ka hapalua o ka helu o nā kaula CPU ma nā hale hana ʻē aʻe.
  • Printf: Ua hana hou ʻia nā memo hewa no nā kaula i hoʻonohonoho hewa ʻia no ka hiki ke heluhelu maikaʻi ʻia.
  • Profile: He hana hou "Profile.take_heap_snapshot(file)", e kākau ana i kahi faila ma ke ʻano ".heapsnapshot" i kākoʻo ʻia ma Chrome.
  • Random: hana ʻo randn a me randexp no kēlā me kēia ʻano AbstractFloat e wehewehe ana i ka rand.
  • REPL
    • Ke kaomi ʻana i ka hui kī "Alt-e" i kēia manawa e wehe i ka hoʻokomo o kēia manawa i ka mea hoʻoponopono. E hoʻokō ʻia ka ʻike (inā hoʻololi ʻia) ke haʻalele ʻoe i ka mea hoʻoponopono.
    • Hiki ke hoʻololi ʻia ka ʻatikala module o kēia manawa i ka REPL (Main by default) me ka hoʻohana ʻana i ka hana "REPL.activate (:: Module)" a i ʻole ma ke komo ʻana i ka module i ka REPL a kaomi i ka hui kī "Alt-m".
    • Hiki ke ho'ā 'ia ke 'ano "numbered prompt", e pa'i ana i nā helu no kēlā me kēia ho'okomo a me ka ho'opuka 'ana a mālama i nā hopena i helu 'ia ma Out, me ka ho'ohana 'ana i ka "REPL.numbered_prompt!()".
    • Hōʻike ka hoʻopau ʻana i nā ʻōlelo hoʻopaʻapaʻa i loaʻa.
  • SuiteSparse: Ua hoʻoneʻe ʻia ke code no ka mea hoʻoponopono "SuiteSparse" i "SparseArrays.jl". Hoʻopuka hou ʻia nā Solvers e "SuiteSparse.jl".
  • ʻAi ʻAi
    • Loaʻa nā mea hoʻonā "SuiteSparse" ma ke ʻano he submodules "SparseArrays".
    • Ua hoʻomaikaʻi ʻia nā ʻano pale pale UMFPACK a me CHOLMOD ma o ka hoʻopau ʻana i nā mea hoʻololi honua a me ka hoʻohana ʻana i nā laka. "ldiv!" Uila nui Hiki ke hoʻokō pono ʻia nā mea UMFPACK.
    • ʻO ka hana hoʻokolohua "SparseArrays.allowscalar(::Bool)" hiki iā ʻoe ke hoʻopau a i ʻole ka hoʻohana ʻana i ka indexing scalar o nā papa liʻiliʻi. Hoʻolālā ʻia kēia hana no ka ʻike ʻana i ka indexing scalar random o nā mea "SparseMatrixCSC", kahi kumu maʻamau o nā pilikia hana.
  • ʻO ke ʻano hana palekana hou no nā suites hoʻāʻo e hoʻopau i ka holo hoʻāʻo i ka wā e hiki ʻole ai a hewa paha. E hoʻonohonoho ma o "@testset kwarg failfast = ʻoiaʻiʻo" a i ʻole "hoʻokuʻu aku iā JULIA_TEST_FAILFAST = ʻoiaʻiʻo". Pono kēia i kekahi manawa i ka holo ʻana o CI e loaʻa koke i nā memo hewa.
  • Nā lā: ʻAʻole i kuhi hewa ʻia nā kaula haʻahaʻa ma ke ʻano he "DateTime", "Dates" a i ʻole "Times" waiwai a hoʻolei i kahi "ArgumentError" i nā mea hana a me ka parsing, ʻoiai ʻo "tryparse" ʻaʻohe mea e hoʻihoʻi.
  • Māhele ʻia ka pūʻolo
    • Hoʻolaha ʻia ka hoʻonohonoho pūʻolo (pahana hana, "LOAD_PATH", "DEPOT_PATH") i ka wā e hoʻohui ai i nā kaʻina hana o nā limahana kūloko (e laʻa.
    • ʻAe ʻo "addprocs" no nā kaʻina hana kūloko i kahi hoʻopaʻapaʻa i kapa ʻia ʻo "env" e hāʻawi i nā ʻano hoʻololi kaiapuni i nā kaʻina hana.
  • Unicode: "graphemes(s, m:n)" e hoʻihoʻi i ka substring mai ka mth a i ka nth graphemes ma "s".
  • Ua wehe ʻia ka pūʻolo DelimitedFiles mai nā waihona waihona ʻōnaehana a ua māhele ʻia i kēia manawa ma ke ʻano he pūʻolo ʻokoʻa pono e hoʻokomo pono ʻia e hoʻohana.
  • Nā hilinaʻi waho
    • Ma Linux, ʻike ʻia ka mana o ka waihona ʻōnaehana libstdc++ a, inā he mea hou, ua hoʻouka ʻia. Hiki ke hoʻihoʻi hou ʻia ka libstdc++ kahiko, me ka nānā ʻole i ka mana o ka ʻōnaehana, ma ka hoʻonohonoho ʻana i ka ʻano hoʻololi kaiapuni "JULIA_PROBE_LIBSTDCXX=0".
    • Wehe ʻia ʻo "RPATH" mai ka julia binary, hiki iā ia ke uhaki i nā hale waihona puke ma Linux i hiki ʻole ke wehewehe i ka ʻano "RUNPATH".
    • Mea hoʻomaikaʻi: ʻO ka puka o "MethodError" a me nā ʻano hana (no ka laʻana mai "metods(my_func)") i kēia manawa i hoʻohālikelike ʻia a waihoʻoluʻu e like me ke kumu o ka hoʻopuka ʻana o nā ʻano i loko o kahi ʻōpala.

    Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka