Cànan prògramaidh Julia 1.9 ri fhaighinn

Chaidh foillseachadh cànan prògramadh Julia 1.9 fhoillseachadh, a’ cothlamadh feartan leithid àrd-choileanadh, taic airson clò-bhualadh fiùghantach agus innealan togte airson prògramadh co-shìnte. Tha co-chòrdadh Julia faisg air MATLAB, a 'faighinn iasad de chuid de na h-eileamaidean bho Ruby agus Lisp. Tha an dòigh làimhseachaidh sreang coltach ri Perl. Tha còd a’ phròiseict air a sgaoileadh fo chead MIT.

Prìomh fheartan a’ chànain:

  • Coileanadh àrd: is e aon de phrìomh amasan a’ phròiseict coileanadh a choileanadh faisg air prògraman C. Tha an compiler Julia stèidhichte air obair a’ phròiseict LLVM agus a’ gineadh còd inneal dùthchasach èifeachdach airson iomadh àrd-ùrlar targaid;
  • A’ toirt taic do ghrunn phàtranan prògramaidh, a’ gabhail a-steach eileamaidean de phrògramadh a tha ag amas air nithean agus gnìomh. Tha an leabharlann àbhaisteach a’ toirt seachad, am measg rudan eile, gnìomhan airson I/O asyncronach, smachd pròiseas, logadh, pròifil, agus riaghladh pacaid;
  • Clò-bhualadh fiùghantach: chan eil feum aig a’ chànan air mìneachadh soilleir air seòrsachan airson caochladairean, coltach ri cànanan prògramaidh sgrìobhaidh. Modh eadar-ghnìomhach le taic;
  • Comas roghainneil airson seòrsaichean a shònrachadh gu soilleir;
  • Co-chòrdadh air leth freagarrach airson coimpiutaireachd àireamhach, coimpiutaireachd saidheansail, ionnsachadh innealan, agus fradharc dàta. Taic airson iomadh seòrsa dàta àireamhach agus innealan airson àireamhachadh co-shìnte.
  • Comas gnìomhan a ghairm gu dìreach bho leabharlannan C às aonais sreathan a bharrachd.

Atharrachaidhean mòra ann an Julia 1.9:

  • Feartan cànain ùra
    • Leig le sònrachaidhean a bhith air an dèanamh ann am modal eile a’ cleachdadh “setproperty!(::Module, ::Symbol, x)".
    • Tha ioma-shònrachaidhean nach eil san t-suidheachadh mu dheireadh ceadaichte. Mar eisimpleir, thèid an sreang “a, b…, c = 1, 2, 3, 4” a phròiseasadh mar “a = 1; b…, = 2, 3; c = 4". Thèid seo a làimhseachadh tro Base.split_rest.
    • Tha litrichean caractar singilte a-nis a' cur taic ris an aon cho-chòrdadh ri litrichean teud; iadsan. Faodaidh an co-chòrdadh sreathan UTF-8 neo-dhligheach a riochdachadh, mar a tha ceadaichte leis an t-seòrsa Char.
    • Taic a bharrachd airson sònrachadh Unicode 15.
    • Faodar cothlamadh neadachaidh de thuples agus tuples caractar ainmichte a chleachdadh a-nis mar pharaimearan seòrsa.
    • Gnìomhan ùra togte “getglobal (:: Modal, :: Symbol [, order])” agus “setglobal! (:: Modal, :: Symbol, x [, òrdugh])" airson leughadh agus sgrìobhadh a-mhàin gu caochladairean cruinne. Bu chòir an dòigh getglobal a-nis a bhith nas fheàrr na an dòigh getfield airson faighinn gu caochladairean cruinneil.
  • Atharraichean ann an cànan
    • Tha am macro “@invoke” a chaidh a thoirt a-steach ann an dreach 1.7 a-nis às-mhalairt agus ri fhaighinn airson a chleachdadh. A bharrachd air an sin, tha e a-nis a’ cleachdadh an dòigh “Core.Typeof(x)” seach “Any” anns a’ chùis far a bheil an seòrsa an-taghaidh air fhàgail a-mach airson na h-argamaid “x”. Tha seo riatanach gus dèanamh cinnteach gu bheil seòrsaichean a thèid seachad mar argamaidean air an làimhseachadh gu ceart.
    • Às-mhalairt comasach air a’ ghnìomh “invokelatest” agus am macro “@invokelatest”, a chaidh a thoirt a-steach ann an dreach 1.7.
  • Leasachaidhean cruinneachaidh / runtime
    • Lùghdachadh gu mòr air an ùine airson a’ chiad chur gu bàs (TTFX - Àm airson a’ chiad chur gu bàs). Le bhith a’ cur ri chèile pasgan a-nis a’ stòradh còd dùthchasach ann am “pkgimage”, a’ ciallachadh nach fheum an còd a ghineadh leis a’ phròiseas ro-chruinneachaidh a bhith air ath-chruinneachadh às deidh a’ phacaid a luchdachadh. Faodar cleachdadh modh pkgimages a chur à comas leis an roghainn "--pkgimages=no".
    • Chaidh a’ chùis iom-fhillteachd ceithir-cheàrnach aithnichte de cho-dhùnadh seòrsa a shocrachadh, agus tha co-dhùnadh a’ cleachdadh nas lugha de chuimhne san fharsaingeachd. Bidh cuid de chùisean iomaill le gnìomhan fada air an cruthachadh gu fèin-ghluasadach (leithid ModelingToolkit.jl le co-aontaran eadar-dhealaichte pàirt agus modalan adhbharach mòra) a’ cur ri chèile mòran nas luaithe.
    • Faodaidh gairmean le argamaidean gun sheòrsan cruadhtan a-nis a bhith air an sgoltadh san Aonadh airson in-stealladh no fuasgladh statach, eadhon ged a tha grunn thagraichean de dhiofar seòrsa ann airson an cur air falbh. Faodaidh seo coileanadh a leasachadh ann an cuid de shuidheachaidhean far nach eil na seòrsaichean de nithean air am fuasgladh gu h-iomlan, le bhith a’ fuasgladh làraich-fòn “@nospecialize-d” gu statach agus a’ seachnadh ath-chruinneachadh.
    • Chaidh Base.@assume_effects a chuir an àite a h-uile cleachdadh den @pure macro sa mhodal Base.
    • Chan eil fiosan gu cuir a-steach (f, invokesig, args...) le seòrsaichean nach eil cho sònraichte na chleachdar mar as trice airson f(args...) ag adhbhrachadh gun tèid am pasgan ath-chruinneachadh tuilleadh.
  • Atharraichean air roghainnean loidhne-àithne
    • Air Linux agus Windows, tha an roghainn “--threads = auto” a-nis a ’feuchainn ris an àireamh de phròiseasan a tha rim faighinn a dhearbhadh stèidhichte air dàimh CPU, masg mar as trice air a shuidheachadh ann an àrainneachdan HPC agus sgòthan.
    • Tha am paramadair “--math-mode = fast” à comas, an àite sin thathas a’ moladh am macro “@fastmath” a chleachdadh, aig a bheil semantics soilleir.
    • Tha an roghainn "--threads" a-nis san fhòrmat "auto | N[, auto | M]", far a bheil M a’ comharrachadh an àireamh de shnàithleanan eadar-ghnìomhach a tha ri chruthachadh (an-dràsta tha fèin-ghluasadach a’ ciallachadh 1).
    • Roghainn air a chur ris “-heap-size-hint =” ", a tha a’ suidheachadh na stairsnich às deidh sin tòisichidh cruinneachadh sgudail gnìomhach. Faodar am meud a shònrachadh ann am bytes, kilobytes (1000 KB), megabytes (300 MB), no gigabytes (1,5 GB).
  • Atharraichean ann an ioma-threading
    • Tha a' chiad argamaid roghnach aig "Threads.@spawn" a-nis leis an luach ":default" no ":interactive". Feumaidh gnìomh eadar-ghnìomhach latency freagairt ìosal agus tha e air a dhealbhadh airson a bhith goirid no air a choileanadh gu tric. Ruithidh gnìomhan eadar-ghnìomhach air snàithleanan eadar-ghnìomhach ma tha iad air an sònrachadh nuair a thòisicheas Julia.
    • Faodaidh snàithleanan a tha a’ ruith taobh a-muigh ùine ruith Julia (leithid bho C no Java) a-nis fios a chuir gu còd Julia a’ cleachdadh “jl_adopt_thread”. Bidh seo a’ tachairt gu fèin-ghluasadach nuair a thèid thu a-steach do chòd Julia tro “cfunction” no an àite inntrigidh “@ccallable”. Mar thoradh air an sin, faodaidh an àireamh de snàithleanan atharrachadh a-nis aig àm cur gu bàs.
  • Gnìomhan leabharlainn ùr
    • Gnìomh ùr "Iterators.flatmap".
    • Dreuchd ùr “pkgversion(m:: Module)” gus an dreach den phacaid a luchdaich modal sònraichte fhaighinn, coltach ri “pkgdir (m:: Modal)".
    • Gnìomh ùr “stack(x)” a bhios a’ gnàthachadh “lùghdaich (hcat, x:: Vector{<: Vector})" gu meud sam bith agus a’ ceadachadh iterators sam bith. Tha an dòigh “stack(f, x)” a’ gnàthachadh “mapreduce(f, hcat, x)” agus tha e nas èifeachdaiche.
    • Macro ùr airson a bhith a’ dèanamh anailis air cuimhne ainmichte “@allocations”, coltach ri “@allocated”, ach a-mhàin gu bheil e a’ tilleadh àireamh nan cuibhreannan cuimhne, seach meud iomlan a’ chuimhne a chaidh a shònrachadh.
  • Feartan leabharlainn ùr
    • Tha "RoundFromZero" a-nis ag obair airson seòrsachan eile seach "BigFloat".
    • Faodar "Dict" a lùghdachadh le làimh le bhith a' cleachdadh "sizehint!"
    • Tha “@time” a-nis a’ sònrachadh an àireamh sa cheud den ùine a chaidh a chaitheamh ag ath-chruinneachadh dhòighean neo-dhligheach.
  • Atharraichean air an leabharlann àbhaisteach
    • Chàirich sinn cùis co-ionannachd ann an dòighean ath-aithris airson Dict agus nithean eile a thàinig a-mach leithid iuchraichean (:: Dict), luachan (:: Dict) agus Set. Faodar na dòighean ath-aithris seo a-nis a ghairm air Dict no Set ann an co-shìnte airson àireamh neo-chuingealaichte de snàithleanan, fhad ‘s nach eil gnìomhan ann a dh’ atharraicheas am faclair no an seata.
    • Le bhith a’ diùltadh gnìomh ro-innse “!f” a-nis tillidh gnìomh measgaichte “(!) ∘ f” an àite gnìomh gun urra.
    • Bidh gnìomhan sliseag meud a-nis ag obair thairis air grunn mheudan: bidh "eachslice", "eachrow" agus "eachcol" a 'tilleadh rud "Slices" a leigeas le bhith a' cur air falbh dòighean nas èifeachdaiche.
    • Chuir sinn am macro “@kwdef” ris an API poblach.
    • Chàirich sinn cùis le òrdugh gnìomhachd ann an “fld1”.
    • Tha an seòrsachadh a-nis seasmhach le ùine (chaidh QuickSort ath-dhealbhadh).
    • Tha "Base.splat" air às-mhalairt a-nis. Is e seòrsa “Base.Splat” an luach tilleadh seach gnìomh gun urra, a’ leigeil leis a bhith air a thoirt a-mach gu snog.
  • Manaidsear pacaid
    • “Leudachadh pacaidean”: Taic airson a bhith a’ luchdachadh criomag còd à pacaidean eile air an luchdachadh ann an seisean Julia. Tha an tagradh coltach ris a’ phacaid “Requires.jl”, ach thathas a’ toirt taic do ro-chruinneachadh agus co-fhreagarrachd roghainnean.
  • Leabharlann loidhneach ailseabra
    • Air sgàth cunnart troimh-chèile le roinneadh ciallach, thug sinn air falbh na dòighean "a/b" agus "b\a" le scalar "a" agus vectar "b", a bha co-ionann ri "a * pinv(b)".
    • Tha a bhith a’ gairm BLAS agus LAPACK a-nis a’ cleachdadh “libblastrampoline (LBT)”. Tha OpenBLAS air a sholarachadh gu bunaiteach, ach chan eil taic ri togail ìomhaigh an t-siostaim le leabharlannan BLAS/LAPACK eile. An àite sin, thathas a’ moladh an uidheamachd LBT a chleachdadh gus seata eile de leabharlannan a chuir an àite BLAS/LAPACK.
    • Tha “lu” a’ toirt taic do ro-innleachd cuairteachaidh matrix ùr, “RowNonZero()”, a tha a’ taghadh a’ chiad eileamaid cuairteachaidh neo-neoni airson a chleachdadh le seòrsachan àireamhachd ùra agus airson adhbharan trèanaidh.
    • Tha "normalize(x, p=2)" a-nis a' toirt taic do dh'àite vectar àbhaisteach "x", a' gabhail a-steach scalars.
    • Tha an àireamh bunaiteach de snàithleanan BLAS a-nis co-ionann ris an àireamh de snàithleanan CPU air ailtireachd ARM agus leth an àireamh de snàithleanan CPU air ailtireachd eile.
  • Printf: Teachdaireachdan mearachd ath-obraich airson sreangan ann an cruth ceàrr airson a bhith furasta a leughadh.
  • Pròifil: Gnìomh ùr "Profile.take_heap_snapshot(file)", a sgrìobhas faidhle san fhòrmat ".heapsnapshot" stèidhichte air JSON le taic ann an Chrome.
  • Air thuaiream: bidh randn agus randexp a-nis ag obair airson seòrsa AbstractFloat sam bith a tha a’ mìneachadh rand.
  • REPL
    • Le putadh air a’ chothlamadh iuchrach “Alt-e” a-nis fosglaidh an cuir a-steach gnàthach san deasaiche. Thèid an susbaint (ma thèid atharrachadh) a chuir gu bàs nuair a dh’ fhàgas tu an deasaiche.
    • Faodar co-theacs gnàthach a’ mhodal a tha gnìomhach san REPL atharrachadh (Prìomh gu h-àbhaisteach) a’ cleachdadh an gnìomh “REPL.activate (:: Module)" no le bhith a’ dol a-steach don mhodal san REPL agus a’ putadh air a’ phrìomh mheasgachadh “Alt-m”.
    • Faodar am modh “priobadh àireamhaichte”, a bhios a’ clò-bhualadh àireamhan airson gach cuir a-steach is toradh agus a’ stòradh nan toraidhean a chaidh a chomharrachadh ann an Out, a chuir an gnìomh le bhith a’ cleachdadh “REPL.numbered_prompt!()”.
    • Bidh crìochnachadh tab a’ taisbeanadh argamaidean prìomh fhacal a tha rim faighinn.
  • SuiteSparse: Còd air a ghluasad airson an neach-fuasglaidh "SuiteSparse" gu "SparseArrays.jl". Tha luchd-fuasglaidh a-nis air an ath-às-mhalairt le "SuiteSparse.jl".
  • Arrays Spear
    • Tha luchd-fuasglaidh “SuiteSparse” a-nis rim faighinn mar fo-mhodalan “SparseArrays”.
    • Chaidh modhan dìon snàithlean UMFPACK agus CHOLMOD a leasachadh le bhith a 'cur às do chaochladairean cruinne agus a' cleachdadh ghlasan. Ioma-snàthainn "ldiv!" Faodar stuthan UMFPACK a-nis a chuir gu bàs gu sàbhailte.
    • Leigidh an gnìomh deuchainneach “SparseArrays.allowscalar(::Bool)” leat clàr-amais scalar de arrays gann a chuir à comas no a chomasachadh. Tha an gnìomh seo air a dhealbhadh gus clàr-amais scalar air thuaiream de nithean “SparseMatrixCSC” a lorg, a tha na thùs cumanta de dhuilgheadasan coileanaidh.
  • Modh failsafe ùr airson seòmraichean deuchainn a chuireas crìoch air ruith deuchainn tràth ma dh’ fhàilligeas no ma thachras mearachd. Suidhich an dàrna cuid tro “@testset kwarg failfast=true” no “às-mhalairt JULIA_TEST_FAILFAST = fìor”. Bidh seo uaireannan riatanach ann an ruith CI gus teachdaireachdan mearachd fhaighinn tràth.
  • Cinn-latha: Chan eil sreangan falamh air am parsadh gu ceàrr tuilleadh mar luachan dligheach "DateTime", "Dates" no "Times" agus an àite sin tilg "ArgumentError" ann an luchd-togail agus parsadh, fhad 's nach till "tryparse" dad.
  • Pacaid air a sgaoileadh
    • Tha rèiteachadh a’ phacaid (pròiseact gnìomhach, “LOAD_PATH”, “DEPOT_PATH”) a-nis air a ghluasad nuair a thèid pròiseasan obraiche ionadail a chur ris (m.e. a’ cleachdadh “addprocs(N::Int)" no a’ cleachdadh bratach na loidhne-àithne “--procs=N”).
    • Tha "addprocs" airson pròiseasan luchd-obrach ionadail a-nis a 'gabhail ri argamaid leis an ainm "env" gus caochladairean àrainneachd a thoirt gu pròiseasan luchd-obrach.
  • Unicode: Bidh "graphemes(s, m:n)" a’ tilleadh an fho-thalamh bhon mth gu nth graphemes ann an “s”.
  • Chaidh am pasgan DelimitedFiles a thoirt air falbh bho leabharlannan an t-siostaim agus tha e a-nis air a chuairteachadh mar phasgan air leth a dh’ fheumar a chuir a-steach gu soilleir airson a chleachdadh.
  • eisimeileachd bhon taobh a-muigh
    • Ann an Linux, thèid an dreach de leabharlann siostam libstdc ++ a lorg gu fèin-ghluasadach agus, ma tha e nas ùire, thèid a luchdachadh. Gabhaidh an seann ghiùlan luchdachadh a-steach libstdc++, ge bith dè an tionndadh siostam a th’ ann, ath-nuadhachadh le bhith a’ suidheachadh caochladair na h-àrainneachd “JULIA_PROBE_LIBSTDCXX=0”.
    • Thoir air falbh “RPATH” bhon julia binary, a dh’ fhaodas leabharlannan air Linux a bhriseadh nach eil a’ mìneachadh an caochladair “RUNPATH”.
    • Innealan leasachaidhean: Tha toradh "MethodError" agus modhan (mar eisimpleir bho "modh (my_func))") a-nis air an cruth agus air an dath a rèir prionnsapal toradh dhòighean ann an lorg stac.

    Source: fosgailtenet.ru

Cuir beachd ann