Harshen shirye-shirye Julia 1.9 akwai

An buga sakin harshen shirye-shirye na Julia 1.9, tare da haɗa irin waɗannan halaye kamar babban aiki, goyan bayan bugu mai ƙarfi da kayan aikin da aka gina don tsara shirye-shirye. Juli's syntax yana kusa da MATLAB, yana aro wasu abubuwa daga Ruby da Lisp. Hanyar sarrafa kirtani tana tunawa da Perl. Ana rarraba lambar aikin a ƙarƙashin lasisin MIT.

Mabuɗin fasali na harshe:

  • Babban aiki: ɗaya daga cikin mahimman manufofin aikin shine cimma aiki kusa da shirye-shiryen C. Mai tarawa Julia ya dogara ne akan aikin aikin LLVM kuma yana samar da ingantacciyar lambar injin na asali don dandamali da yawa;
  • Yana goyan bayan sigogin shirye-shirye daban-daban, gami da abubuwan da suka dace da abu da shirye-shirye masu aiki. Madaidaicin ɗakin karatu yana ba da, a tsakanin sauran abubuwa, ayyuka don I/O asynchronous, sarrafa tsari, shiga, bayanin martaba, da sarrafa fakiti;
  • Buga mai ƙarfi: harshe baya buƙatar fayyace ma'anar nau'ikan masu canji, kama da rubutun harsunan shirye-shirye. Yana goyan bayan yanayin hulɗa;
  • Ikon zaɓi na ƙididdige nau'ikan a sarari;
  • Maƙasudin maƙasudi don ƙididdige ƙididdiga, lissafin kimiyya, koyan inji, da hangen nesa. Taimako ga nau'ikan bayanai na lambobi da yawa da kayan aiki don daidaita lissafin lissafi.
  • Ikon kiran ayyuka kai tsaye daga ɗakunan karatu na C ba tare da ƙarin yadudduka ba.

Babban canje-canje a cikin Julia 1.9:

  • Sabbin fasalolin harshe
    • Bada izinin yin ayyuka a cikin wani tsarin ta amfani da "setproperty!(:: Module, :: Alama, x)".
    • Ana ba da izinin ayyuka da yawa waɗanda ba a matsayi na ƙarshe ba. Misali, za a sarrafa igiyar “a, b…, c = 1, 2, 3, 4” azaman “a = 1; b…, = 2, 3; c = 4". Ana sarrafa wannan ta hanyar Base.split_rest.
    • Haruffa guda ɗaya yanzu suna goyan bayan maƙasudi iri ɗaya kamar na zahirin kirtani; wadanda. Rubutun na iya wakiltar jerin UTF-8 mara inganci, kamar yadda nau'in Char ya yarda.
    • Ƙara tallafi don ƙayyadaddun Unicode 15.
    • Haɗe-haɗe na tuples da masu suna tuples ana iya amfani da su azaman sigogin nau'in.
    • Sabbin ayyukan da aka gina a ciki "getglobal(:: Module, :: Alama [, oda])" da "setglobal! Hanyar samun duniya yakamata a fifita yanzu akan hanyar getfield don samun dama ga masu canjin duniya.
  • Canje-canje a cikin harshe
    • Macro na "@invoke" da aka gabatar a cikin sigar 1.7 yanzu ana fitar da shi kuma akwai don amfani. Bugu da ƙari, yanzu yana amfani da hanyar "Core.Typeof(x)" maimakon "Kowa" a yanayin da aka tsallake nau'in annotation don hujjar "x". Wannan wajibi ne don tabbatar da cewa nau'ikan sun wuce yayin da ake sarrafa muhawara daidai.
    • An kunna fitarwa na aikin "mai kira" da "@invokelatest" macro, wanda aka gabatar a cikin sigar 1.7.
  • Haɓaka haɗawa/lokacin aiki
    • Mahimmanci rage lokaci zuwa farkon kisa (TTFX - Lokaci zuwa farkon kisa). Ƙaddamar da kunshin yanzu yana adana lambar asali a cikin "pkgimage", ma'ana cewa lambar da aka ƙirƙira ta hanyar tsarawa ba za ta buƙaci sake haɗawa ba bayan an loda fakitin. Ana iya kashe amfani da yanayin pkgimages ta amfani da zaɓin "-pkgimages=no".
    • Shahararriyar ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙima an gyara su, kuma ƙaddamarwa tana amfani da ƙarancin ƙwaƙwalwar ajiya gabaɗaya. Wasu ɓangarorin gefen tare da dogayen ayyuka da aka haifar ta atomatik (kamar ModelingToolkit.jl tare da ma'auni daban-daban da manyan ƙira) suna tattara sauri da sauri.
    • Kira tare da gardama ba tare da kankare nau'ikan ba yanzu na iya zama haɗin haɗin kai don haɓakawa don allura ko ƙuduri mai tsayi, koda kuwa akwai masu neman nau'ikan nau'ikan daban-daban don aikawa. Wannan na iya inganta aiki a wasu yanayi inda nau'ikan abu ba su cika cikakku ba, ta hanyar daidaita wuraren kiran "@nospecialize-d" da guje wa sake tarawa.
    • Duk amfanin @pure macro a cikin Base module an maye gurbinsu da Base.@assume_effects.
    • Kira don yin kira (f, invokesig, args...) tare da ƙarancin takamaiman nau'ikan fiye da yadda aka saba amfani da su don f(args...) baya haifar da sake haɗa fakitin.
  • Canje-canje zuwa Zaɓuɓɓukan Layin Umurni
    • A Linux da Windows, zaɓin "--threads=auto" yanzu yana ƙoƙarin tantance adadin na'urori masu sarrafawa dangane da alaƙar CPU, abin rufe fuska da aka saita akan HPC da mahallin girgije.
    • An kashe ma'aunin "-math-mode=sauri", maimakon wanda aka ba da shawarar yin amfani da macro "@fastmath", wanda ya fayyace ma'anar ma'anar ta a sarari.
    • Zaɓin "--threads" yanzu yana cikin tsarin "auto | N[,auto|M]", inda M ke nuna adadin zaren mu'amala don ƙirƙira (a halin yanzu auto yana nufin 1).
    • Ƙara wani zaɓi "-heap-size-hint=" ", wanda ke saita ƙofa bayan an fara tattara datti mai aiki. Ana iya ƙayyade girman a bytes, kilobytes (1000 KB), megabyte (300 MB), ko gigabytes (1,5 GB).
  • Canje-canje a cikin multithreading
    • "Threads.@spawn" yanzu yana da hujja ta farko ta zaɓin zaɓi tare da ƙimar ":default" ko ": interactive". Ayyukan hulɗa yana buƙatar ƙarancin jinkirin amsawa kuma an tsara shi don zama gajere ko yin akai-akai. Ayyukan hulɗa zasu gudana akan zaren hulɗa idan an ƙayyade su lokacin farawa Julia.
    • Zaren da ke gudana a wajen lokacin gudu na Julia (kamar daga C ko Java) yanzu na iya kiran lambar Julia ta amfani da "jl_adopt_thread". Wannan yana faruwa ta atomatik lokacin shigar da lambar Julia ta hanyar "cfunction" ko wurin shigarwa "@ccallable". Sakamakon haka, adadin zaren zai iya canzawa yanzu yayin aiwatarwa.
  • Sabbin ayyukan ɗakin karatu
    • Sabon aiki "Iterators.flatmap".
    • Sabon aiki "pkgversion(m :: Module)" don samun sigar fakitin da ya loda wani tsarin da aka bayar, kama da "pkgdir(m:: Module)".
    • Sabon aikin "tari(x)" wanda ke keɓance "raguwa (hcat, x :: Vector{<:Vector})" zuwa kowane girma kuma yana ba da damar kowane mai ƙididdigewa. Hanyar "tari (f, x)" tana haɓaka "mapreduce(f, hcat, x)" kuma ta fi dacewa.
    • Sabbin macro don nazarin ƙayyadaddun ƙwaƙwalwar ajiya "@allocations", kama da "@allocated", sai dai yana mayar da adadin abubuwan da aka ware wa ƙwaƙwalwar, maimakon jimlar girman da aka keɓe.
  • Sabbin fasalulluka na ɗakin karatu
    • "RoundFromZero" yanzu yana aiki don nau'ikan ban da "BigFloat".
    • "Dict" yanzu ana iya ragewa da hannu ta amfani da "sizehint!"
    • "@time" yanzu daban yana ƙayyadaddun adadin lokacin da aka kashe don sake tattara hanyoyin da ba su da inganci.
  • Canje-canje ga daidaitaccen ɗakin karatu
    • Kafaffen batun daidaitawa a cikin hanyoyin maimaitawa don Dict da sauran abubuwan da aka samo kamar maɓalli (:: Dict), ƙima (:: Dict) da Saita. Ana iya kiran waɗannan hanyoyin maimaitawa a yanzu akan Dict ko Saita a layi ɗaya don adadin zaren marasa iyaka, muddin babu wani aiki da zai gyara ƙamus ko saiti.
    • Negating da predicate "!f" yanzu yana dawo da aikin haɗe-haɗe "(!) ∘ f" maimakon aikin da ba a san sunansa ba.
    • Ayyukan yanki a yanzu suna aiki a cikin nau'i-nau'i masu yawa: "kowanne yanki", "kowane" da "kowane" suna mayar da abin "Yanke" wanda ke ba da damar aikawa don samar da ingantattun hanyoyi.
    • Ƙara macro "@kwdef" zuwa API na jama'a.
    • Kafaffen matsala tare da tsari na ayyuka a cikin "fld1".
    • Rarraba yanzu koyaushe yana daidaita lokaci (An sake fasalin QuickSort).
    • "Base.splat" yanzu ana fitar dashi. Ƙimar dawowa shine nau'in "Base.Splat" maimakon aikin da ba a san shi ba, yana ba da damar fitowa da kyau.
  • Fakitin Manager
    • "Ƙarin Kunshin": Taimako don loda snippet code daga wasu fakitin da aka ɗora a cikin zaman Julia. Aikace-aikacen yayi kama da kunshin "Requires.jl", amma ana samun goyan bayan haɗawa da daidaitawar saituna.
  • Laburaren Algebra na layi
    • Saboda haɗarin ruɗani tare da rarraba-hikima, cire hanyoyin "a/b" da "b\a" tare da scalar "a" da vector "b", waɗanda suke daidai da "a * pinv(b)".
    • Kira BLAS da LAPACK yanzu yana amfani da "libblastrampoline (LBT)". Ana ba da OpenBLAS ta tsohuwa, amma gina hoton tsarin tare da sauran ɗakunan karatu na BLAS/LAPACK ba a tallafawa. Madadin haka, ana ba da shawarar yin amfani da tsarin LBT don maye gurbin BLAS/LAPACK tare da wani saitin ɗakunan karatu na yanzu.
    • "lu" yana goyan bayan sabuwar dabarar jujjuyawar matrix, "RowNonZero()", wanda ke zabar kashi na farko mara sifili don amfani da sabbin nau'ikan lissafi da dalilai na horo.
    • "Normalize(x, p=2)" yanzu yana goyan bayan duk wani daidaitacce sarari "x", gami da scalars.
    • Adadin tsoffin zaren BLAS yanzu ya yi daidai da adadin zaren CPU akan gine-ginen ARM da rabin adadin zaren CPU akan sauran gine-gine.
  • Printf: Saƙonnin kuskure da aka sake yin aiki don tsararrun igiyoyin da ba daidai ba don ingantaccen karatu.
  • Bayanan martaba: Sabon aiki "Profile.take_heap_snapshot(fayil)", wanda ke rubuta fayil a tsarin ".heapsnapshot" na tushen JSON wanda aka goyan bayan a Chrome.
  • Random: randn da randexp yanzu suna aiki don kowane nau'in AbstractFloat wanda ke bayyana rand.
  • KARANTA
    • Danna haɗin maɓallin "Alt-e" yanzu yana buɗe shigarwar yanzu a cikin edita. Abubuwan da ke ciki (idan an gyara su) za a aiwatar da su lokacin da kuka fita editan.
    • Za'a iya canza yanayin yanayin halin yanzu da ke aiki a cikin REPL (Main ta tsohuwa) ta amfani da aikin "REPL.activate(:: Module)" ko ta shigar da tsarin a cikin REPL kuma danna haɗin maɓallin "Alt-m".
    • Yanayin "lamba mai lamba", wanda ke buga lambobi don kowane shigarwa da fitarwa da kuma adana sakamakon da aka samu a waje, ana iya kunna ta ta amfani da "REPL.numbered_prompt!()".
    • Kammala shafin yana nuna samammun gardama na maɓalli.
  • SuiteSparse: Motsa lamba don "SuiteSparse" mai warwarewa zuwa "SparseArrays.jl". Yanzu an sake fitar da masu warwarewa ta "SuiteSparse.jl".
  • SparseArrays
    • Ana samun masu warware "SuiteSparse" a matsayin "SparseArrays" submodules.
    • UMFPACK da CHOLMOD hanyoyin kariyar zaren sun inganta ta hanyar kawar da masu canji na duniya da kuma amfani da makullai. Multi-threaded "ldiv!" Abubuwan UMFPACK yanzu ana iya kashe su lafiya.
    • Ayyukan gwaji "SparseArrays.allowscalar(:: Bool)" yana ba ku damar musaki ko ba da damar ƙididdige ƙididdiga masu ƙima. An ƙera wannan aikin don gano bazuwar sikeli na abubuwan "SparseMatrixCSC", wanda shine tushen gama gari na matsalolin aiki.
  • Sabon yanayin rashin tsaro don rukunin gwaji wanda ke kawo ƙarshen gwajin da wuri a cikin abin da ya faru na gazawa ko kuskure. Saita ko dai ta hanyar "@testset kwarg failfast= gaskiya" ko "fitarwa JULIA_TEST_FAILFAST=gaskiya". Wannan wani lokaci yana da mahimmanci a cikin CI yana gudana don karɓar saƙonnin kuskure da wuri.
  • Kwanan wata: Zaɓuɓɓukan da ba su da kyau ba a sake fassasu ba daidai ba a matsayin inganci "DateTime", "Dates" ko "Lokaci" dabi'u kuma a maimakon haka jefa "ArgumentError" a cikin maginin gini da kuma rarrabawa, yayin da "tryparse" ba ya dawo da komai.
  • Kunshin Rarraba
    • Tsarin kunshin (aikin mai aiki, "LOAD_PATH", "DEPOT_PATH") yanzu ana yaɗa shi lokacin ƙara ayyukan ma'aikatan gida (misali ta amfani da "addprocs (N :: Int)" ko amfani da tutar layin umarni "--procs=N").
    • "addprocs" don tafiyar matakai na ma'aikata na gida yanzu sun karɓi gardama mai suna "env" don ƙaddamar da masu canjin yanayi zuwa matakan ma'aikata.
  • Unicode: "graphemes(s, m:n)" yana dawo da ƙananan igiyoyin daga mth zuwa nth grapheme a cikin "s".
  • An cire kunshin DelimitedFiles daga ɗakunan karatu na tsarin kuma yanzu an rarraba shi azaman fakitin daban wanda dole ne a shigar da shi a sarari don amfani da shi.
  • Abubuwan dogaro na waje
    • A cikin Linux, ana gano sigar ɗakin karatu na tsarin libstdc++ ta atomatik kuma, idan ya kasance sabo, ana loda shi. Tsohuwar libstdc++ ginannen ɗabi'ar lodi, ba tare da la'akari da sigar tsarin ba, ana iya dawo da ita ta saita madaidaicin yanayi "JULIA_PROBE_LIBSTDCXX=0".
    • Cire "RPATH" daga julia binary, wanda zai iya karya dakunan karatu akan Linux waɗanda suka kasa ayyana ma'anar "RUNPATH".
    • Haɓaka kayan aiki: Fitowar "MethodError" da hanyoyin (misali daga "hanyoyi(my_func)") yanzu an tsara su kuma an yi musu launi daidai da ƙa'idar fitar da hanyoyin a cikin tari.

    source: budenet.ru

Add a comment