Ang ulia ay isang dynamic, high-level, high-performance na wika para sa teknikal na computing.
Ang paglabas ng Julia 1.9, ang bagong bersyon ng programming language, ay inanunsyo ilang araw na ang nakalilipas. Pinagsasama nito ang mga tampok tulad ng mataas na pagganap, suporta para sa dynamic typing, at mga integrated tool para sa parallel programming. Ang syntax ni Julia ay katulad ng MATLAB, na may ilang elementong hiniram mula sa Ruby at Lisp.
Ang Julia ay namumukod-tangi bilang isang mataas-na-antas, mataas-na-pagganap, multi-platform, multi-paradigm, dynamically typed programming language para sa pangkalahatan, teknikal, at siyentipikong pag-compute, na may syntax na katulad ng sa iba pang katulad na mga kapaligiran sa pag-compute.
Pangunahing balita ng Julia 1.9
Ang bagong bersyong ito ng Julia 1.9 ay nagtatampok ng ilang mga pagpapabuti sa runtime/compiler, kabilang ang isang makabuluhang pagbawas sa oras sa unang pagpapatupad. Ang precompilation ng package ay nagse-save na ngayon ng katutubong code sa isang "pkgimage," ibig sabihin ang code na nabuo habang nagpe-precompilation ay hindi na kailangang i-recompile pagkatapos i-load ang package. Ang paggamit ng pkgimages mode ay maaaring hindi paganahin gamit ang opsyong "--pkgimages=no".
Isa pang kapansin-pansing pagbabago ay ang mga tawag na may mga argumentong hindi partikular sa uri ay maaari nang i-optimize gamit ang union splitting para sa injection o static resolution, kahit na mayroong ilang iba't ibang uri ng mga kandidato sa pagsusumite. Maaari nitong mapabuti ang pagganap sa ilang mga sitwasyon kung saan ang mga uri ng object ay hindi ganap na nareresolba nang static, sa pamamagitan ng static na pagresolba sa mga site ng mga tawag na " @nospecialize-d" at pag-iwas sa muling pag-compile.
Sinusuportahan na ngayon ng mga literal na solong character ang parehong syntax gaya ng mga literal ng string; ang mga syntax na iyon ay maaaring kumatawan sa mga di-wastong UTF-8 na pagkakasunud-sunod, gaya ng pinapayagan ng uri ng Char.
Bukod pa rito, sa Linux at Windows, ang opsyong " --threads=auto " ay nagtatangkang tukuyin ang magagamit na bilang ng mga processor batay sa CPU affinity, na isang mask na karaniwang nakatakda sa mga HPC at cloud environment.
Hindi na pinagana ang opsyong " --math-mode=fast " , at inirerekomendang gamitin na lang ang macro na " @fastmath " , na mayroong mahusay na natukoy na semantika. Bukod pa rito, ang parameter na " --threads " ay mayroon na ngayong format na "auto | N[,auto|M]" , kung saan tinutukoy ng M ang bilang ng mga interactive thread na gagawin.
Ang opsyong “ –heap-size-hint=<size> ” ay idinagdag upang itakda ang threshold kung kailan magsisimula ang aktibong pangongolekta ng basura. Ang laki ay maaaring tukuyin sa bytes, kilobytes (1000 KB), megabytes (300 MB), o gigabytes (1,5 GB).
Ang macro na "@invoke" na ipinakilala sa bersyon 1.7 ay nai-export na at magagamit na. Bukod pa rito, ginagamit na nito ngayon ang method na "Core.Typeof(x)" sa halip na " Any " kapag tinanggal ang type annotation para sa argument na "x". Ito ay kinakailangan para sa mga uring ipinasa bilang mga argumento na maproseso nang tama.
Bukod pa rito, ang `Threads.@spawn` ay mayroon na ngayong opsyonal na unang argumento na `:default` o `:interactive`. Ang isang interactive na gawain ay nangangailangan ng tugon na mababa ang latency at idinisenyo upang maging maikli o madalas na patakbuhin. Ang mga interactive na gawain ay tatakbo sa mga interactive na thread kung tinukoy kapag nagsimula si Julia.
Kabilang sa iba pang kapansin-pansing mga pagbabago ang:
- Ang pagpapawalang-bisa sa predicate function na "!f" ay nagbabalik na ngayon ng composite function na "(!) ∘ f" sa halip na isang anonymous na function.
- Gumagana na ngayon ang mga function split ng dimensyon sa maraming dimensyon: «eachslice", "eachrow" at "eachcol" ibalik ang isang bagay"Mga hiwa» na nagpapahintulot sa pagpapadala na magbigay ng mas mahusay na mga pamamaraan.
- Ang macro «@kwdef» ay naidagdag sa pampublikong API.
- Inayos ang isang isyu sa pagkakasunud-sunod ng mga operasyon sa "fld1".
- Ang pag-uuri ay palaging stable sa paglipas ng panahon (Muling idinisenyong QuickSort).
- Ang default na bilang ng mga thread ng BLAS ay katumbas na ngayon ng bilang ng mga thread ng CPU sa arkitektura ng ARM at kalahati ng bilang ng mga thread ng CPU sa iba pang mga arkitektura.
- Printf: Reworked error messages para sa malformed strings para sa mas madaling mabasa.
- Profile: Bagong function na "Profile.take_heap_snapshot(file)" na nagsusulat ng file sa JSON-based na ".heapsnapshot" na format na sinusuportahan ng Chrome.
- Nagdagdag ng suporta para sa detalye ng Unicode 15.
- Ang mga nested na kumbinasyon ng mga tuple at pinangalanang character tuple ay maaari na ngayong gamitin bilang mga parameter ng uri.
Panghuli, kung interesado kang matuto nang higit pa, makikita mo ang mga detalye sa sumusunod na link.