Kutulutsidwa kwa chilankhulo cha pulogalamu ya Julia 1.8

Kutulutsidwa kwa chilankhulo cha pulogalamu ya Julia 1.8 kulipo, kuphatikiza mikhalidwe monga magwiridwe antchito apamwamba, kuthandizira pakulemba kwamphamvu ndi zida zomangidwira pulogalamu yofananira. Syntax ya Julia ili pafupi ndi MATLAB, kubwereka zinthu zina kuchokera kwa Ruby ndi Lisp. Njira yosinthira zingwe ndikukumbutsa Perl. Khodi ya polojekitiyi imagawidwa pansi pa layisensi ya MIT.

Zofunikira za chilankhulo:

  • Kuchita kwakukulu: Chimodzi mwa zolinga zazikulu za polojekitiyi ndikukwaniritsa ntchito pafupi ndi mapulogalamu a C. The Julia compiler imachokera ku ntchito ya pulojekiti ya LLVM ndipo imapanga makina abwino a makina amtundu wa nsanja zambiri;
  • Thandizo la ma paradigms osiyanasiyana, kuphatikizapo zinthu zomwe zimayang'ana pa chinthu ndi ntchito. Laibulale yokhazikika imapereka ntchito za asynchronous I/O, kasamalidwe kazinthu, kudula mitengo, mbiri, ndi kasamalidwe ka phukusi, mwa zina;
  • Kulemba kwamphamvu: Chilankhulochi sichifuna kutanthauzira momveka bwino mitundu yamitundu yosiyanasiyana, pofanizira ndi zilankhulo zamapulogalamu. Imathandizira njira yolumikizirana;
  • Kuthekera kosankha kufotokoza momveka bwino mitundu;
  • Syntax yomwe ili yabwino kwambiri powerengera manambala, mawerengedwe asayansi, makina ophunzirira makina ndi kuwonera deta. Thandizo pamitundu yambiri yama data ndi zida zofananira mawerengedwe.
  • Kutha kuyimbira mwachindunji ntchito kuchokera ku malaibulale a C popanda zigawo zina.

Zosintha zazikulu mu Julia 1.8:

  • chinenero chatsopano
    • Minda ya struct yosinthika tsopano ikhoza kufotokozedwa ngati zokhazikika kuti zisasinthidwe ndikulola kukhathamiritsa.
    • Zolemba zamtundu zitha kuwonjezeredwa kumitundu yapadziko lonse lapansi.
    • Zopanda kanthu za n-dimensional zitha kupangidwa pogwiritsa ntchito ma semicolons angapo mkati mwa masikweya mabulaketi, mwachitsanzo "[;;;]" imapanga mndandanda wa 0x0x0.
    • Yesani midadada tsopano mutha kukhala ndi chipika china, chomwe chimapangidwa pambuyo pa gulu lalikulu ngati palibe zolakwika zomwe zidaponyedwa.
    • @inline ndi @noinline zitha kuyikidwa mkati mwa gulu lantchito, kukulolani kuti mufotokozere ntchito yosadziwika.
    • @inline ndi @noinline tsopano zitha kugwiritsidwa ntchito pamalo oimbira foni kapena pa block kuti ikakamize mafoni ofananira nawo kuti aphatikizidwe (kapena osaphatikizidwa).
    • ∀, ∃ ndi ∄ amaloledwa ngati zilembo zozindikiritsa.
    • Thandizo lowonjezera la Unicode 14.0.0.
    • Njira ya Module(:dzina, zabodza, zabodza) ingagwiritsidwe ntchito kupanga gawo lomwe liribe mayina, silimatumiza kunja kwa Base kapena Core, ndipo liribe mawu ake okha.
  • Kusintha kwa chilankhulo
    • Zinthu zomwe zangopangidwa kumene (@spawn, @async, etc.) tsopano zili ndi world_age ya njira zochokera kwa makolo Task zikapangidwa, zomwe zimalola kuti zitheke bwino. Njira yam'mbuyomu yotsegulira ikupezeka pogwiritsa ntchito njira ya Base.invokelatest.
    • Unicode unbalanced bidirectional formatting directions tsopano ndi yoletsedwa mu zingwe ndi ndemanga kupewa jakisoni.
    • Base.ifelse tsopano imatanthauzidwa ngati ntchito yowonjezera m'malo mwa buildin, kulola kuti phukusi liwonjezere tanthauzo lake.
    • Ntchito iliyonse yapadziko lonse lapansi tsopano imayamba kudzera pakuitana kuti asinthe(Aliyense, x) kapena kutembenuza(T, x) ngati kusintha kwapadziko lonse kudanenedwa kukhala kwa mtundu wa T. Musanagwiritse ntchito zosintha zapadziko lonse, onetsetsani kuti zosinthazo (Zilizonse) , x) === x nthawi zonse imakhala yowona, apo ayi zingayambitse khalidwe losayembekezereka.
    • Ntchito zomangidwira tsopano zikufanana ndi ntchito zanthawi zonse ndipo zitha kulembedwa mwadongosolo pogwiritsa ntchito njira.
  • Kusintha kwa Compiler / Rutime
    • Nthawi yoyambira idachepetsedwa pafupifupi 25%.
    • Wolemba mabuku wa LLVM adasiyanitsidwa ndi laibulale yanthawi yake kukhala laibulale yatsopano, libjulia-codegen. Imadzazidwa mwachisawawa, kotero sikuyenera kusintha pakagwiritsidwe ntchito bwino. M'magawo omwe safunikira compiler (mwachitsanzo, zithunzi zamakina momwe ma code onse ofunikira amasankhidwiratu), laibulale iyi (ndi kudalira kwake kwa LLVM) ikhoza kusiyidwa.
    • Kufotokozera kwamtundu wovomerezeka tsopano ndi kotheka popereka mkangano ku njira. Mwachitsanzo, kwa Base.ifelse(isa(x, Int), x, 0) amabwerera ::Int ngakhale mtundu wa x sukudziwika.
    • SROA (Scalar Replacement of Aggregates) yawongoleredwa: imachotsa mafoni obwera ndi magawo apadziko lonse lapansi, imachotsa zosinthika zomwe zili ndi minda yosadziwika bwino, imathandizira magwiridwe antchito ndikuwongolera mafoni omwe ali ndi zisa.
    • Kufotokozera kwamtundu kumatsata zotsatira zosiyanasiyana-zotsatira zoyipa komanso zosagwetsa. Kufalitsa kosalekeza kumaganiziridwa, zomwe zimathandizira kwambiri ntchito ya nthawi yophatikizira. Nthawi zina, mwachitsanzo, kuyitana kuzinthu zomwe sizingadulidwe koma osakhudza zotsatira zidzatayidwa panthawi yothamanga. Malamulo azotsatira amatha kulembedwa pamanja pogwiritsa ntchito Base.@assume_effects macro.
    • Kukonzekera (ndi malangizo omveka bwino okonzekeratu kapena kuchuluka kwa ntchito) tsopano kumasunga khodi yodziwika bwino, zomwe zimapangitsa kuti azichita mwachangu nthawi yoyamba. Kuphatikizika kulikonse kwatsopano / mtundu wofunikira ndi phukusi lanu, mosasamala kanthu komwe njirazo zidafotokozedwera, zitha kusungidwa mufayilo yokonzekera ngati itayitanidwa ndi njira ya phukusi lanu.
  • Zosintha ku Command Line Options
    • Khalidwe losakhazikika pakuwunika @inbounds declarations tsopano ndi njira yokhayo mu "--check-bounds=yes|no|auto".
    • Njira yatsopano ya "--strip-metadata" yochotsa ma docstrings, zambiri za malo, ndi mayina osinthika akumaloko popanga chithunzi chadongosolo.
    • Njira yatsopano "--strip-ir" kulola wopanga kuti achotse choyimira chapakati chapakati pomanga chithunzi chadongosolo. Chithunzi chotsatira chidzagwira ntchito ngati "--compile=all" itagwiritsidwa ntchito kapena ngati code yonse yofunikira yasanjidwa.
    • Ngati chizindikiro "-" chatchulidwa m'malo mwa dzina la fayilo, ndiye kuti code yomwe ingathe kuchitidwa imawerengedwa kuchokera mumtsinje wolowera.
  • Kusintha kwamitundu yambiri yothandizira
    • Threads.@threads mwachisawawa amagwiritsa ntchito njira yatsopano yokonzera :dynamic, yomwe imasiyana ndi njira yapitayi chifukwa zobwereza zidzakonzedwa mosinthana ndi ulusi wa antchito omwe alipo m'malo moperekedwa ku ulusi uliwonse. Njirayi imalola kugawa bwino malupu okhala ndi zisa ndi @spawn ndi @threads.
  • Zatsopano laibulale ntchito
    • eachsplit(str) kuti mupange split(str) kangapo.
    • allequal(itr) kuyesa ngati zinthu zonse mu iterator ndi zofanana.
    • hardlink(src, dst) zitha kugwiritsidwa ntchito kupanga maulalo olimba.
    • setcpuaffinity(cmd, cpus) kuti akhazikitse kuyanjana kwa purosesa pachimake panjira zomwe zakhazikitsidwa.
    • diskstat(njira=pwd()) kuti mupeze ziwerengero za disk.
    • New @showtime macro kuwonetsa mzere womwe ukuwunikidwa komanso @time report.
    • LazyString ndi waulesi "str" ​​​​macro awonjezedwa kuti athandizire kupanga ulesi wa mauthenga olakwika m'njira zolakwika.
    • Tinakonza vuto la ndalama mu Dict ndi zinthu zina zotengedwa monga makiyi(::Dict), values(::Dict) ndi Set. Njira zobwerezabwereza zitha kuyitanidwa pa dikishonale kapena seti, bola ngati palibe mafoni omwe amasintha mtanthauzira mawu kapena seti.
    • @time ndi @timev tsopano ali ndi malongosoledwe osankha, kukulolani kuti mufotokozere komwe kumachokera malipoti a nthawi, mwachitsanzo. @time "Evaluating foo" foo().
    • range imatenga kuyima kapena kutalika ngati mtsutso wake wa mawu osakira.
    • kulondola ndi kukhazikika tsopano kuvomereza maziko ngati mawu osakira
    • Zinthu za socket za TCP tsopano zimapereka njira yolembera pafupi ndikuthandizira kugwiritsa ntchito mawonekedwe otseguka.
    • extrema tsopano avomereza mkangano wa init.
    • Iterators.countfrom tsopano ikuvomereza mtundu uliwonse womwe umatanthauzira njira +.
    • @time tsopano ikupereka % ya nthawi yomwe yagwiritsidwa ntchito kukonzanso njira zosinthidwa.
  • Kusintha kwa Library Yokhazikika
    • Makiyi okhala ndi mtengo Palibe chomwe chachotsedwa tsopano ku chilengedwe mu addenv.
    • Iterators.reverse (ndipo yomaliza) imathandizira mzere uliwonse.
    • Kutalika kwamitundu yosiyanasiyana sikumayang'ananso kuchuluka kwa kusefukira. Ntchito yatsopano, checked_length, ilipo; ili ndi malingaliro owongolera pang'ono. Ngati kuli kofunikira, gwiritsani ntchito SaferIntegers.jl kupanga mtundu wamtunduwu.
    • The Iterators.Reverse iterator imagwiritsa ntchito kubweza mlozo uliwonse ngati nkotheka.
  • Phukusi Woyang'anira
    • Zatsopano ⌃ ndi ⌅ zizindikiro pafupi ndi phukusi mu "pkg>" pomwe mitundu yatsopano ilipo. ⌅ ikuwonetsa kuti mitundu yatsopano siyingayike.
    • Zachikale zatsopano::Bool mkangano ku Pkg.status (--yachikale kapena -o mu REPL mode) kuti muwonetse zambiri za phukusi lamitundu yam'mbuyomu.
    • Kugwirizana kwatsopano::Kutsutsa kwa Bool ku Pkg.status (--compat kapena -c mu REPL mode) kuti muwonetse [compat] zilizonse mu Project.toml.
    • Njira yatsopano ya "pkg>compat" (ndi Pkg.compat) yokhazikitsira zolowa zogwirizana ndi polojekiti. Amapereka mkonzi wolumikizana kudzera pa "pkg>compat" kapena kuwongolera mwachindunji kudzera pa "pkg> Foo 0.4,0.5", yomwe imatha kutsitsa zolemba zapano pomaliza tabu. Ndiye kuti, "pkg> compat Fo" imasinthidwa kukhala "pkg> Foo 0.4,0.5" kuti zomwe zilipo kale zisinthidwe.
    • Pkg tsopano imangoyesa kutsitsa phukusi kuchokera pa seva ya phukusi ngati seva ikuyang'anira registry yomwe ili ndi phukusi.
    • Pkg.instantiate tsopano ipereka chenjezo pamene Project.toml yasiya kulunzanitsa ndi Manifest.toml. Imachita izi potengera kuchuluka kwa ma deps a projekiti ndi ma compat records (magawo ena amanyalanyazidwa) mu chiwonetsero poyithetsa, kuti kusintha kulikonse kwa Project.toml deps kapena ma compat records kuzindikirike popanda kukonzanso.
    • Ngati "pkg>add" sichingapeze phukusi lomwe lili ndi dzina lopatsidwa, lipereka malingaliro a phukusi omwe ali ndi mayina ofanana omwe angathe kuwonjezedwa.
    • Mtundu wa julia wosungidwa mu chiwonetserochi sukuphatikizanso nambala yomanga, kutanthauza kuti master tsopano ilembedwa ngati 1.9.0-DEV.
    • Kuyesa kuchotsa "pkg>" tsopano kuzindikirika mosasintha, ndipo kubwezeretsedwa ku REPL.
  • InteractiveUtils
    • New @time_imports macro kufotokoza nthawi yomwe yagwiritsidwa ntchito kuitanitsa phukusi ndi kudalira kwawo, kuwonetsa kusonkhanitsa ndi kubwezeretsanso nthawi ngati kuchuluka kwa zomwe zatumizidwa kunja.
  • Linear algebra
    • Submodule ya BLAS tsopano imathandizira ntchito za level-2 BLAS spr!.
    • Laibulale yokhazikika ya LinearAlgebra.jl tsopano ili yodziyimira pawokha ku SparseArrays.jl, zonse kuchokera ku gwero la magwero ndi momwe amawonera mayunitsi. Zotsatira zake, masanjidwe ochepa sabwezeredwa (mwachindunji) ndi njira zochokera ku LinearAlgebra zomwe zimagwiritsidwa ntchito ku zinthu za Base kapena LinearAlgebra. Makamaka, izi zimabweretsa zosintha zotsatirazi:
      • Kulumikizana pogwiritsa ntchito matrices apadera "ochepa" (mwachitsanzo, diagonal) tsopano kubweza matrices wandiweyani; Zotsatira zake, minda ya D1 ndi D2 ya zinthu za SVD zopangidwa ndi getproperty call tsopano ndi matrices wandiweyani.
      • Njira yofananira (::SpecialSparseMatrix, ::Type, ::Dims) imabwezeretsa matrix owundana opanda kanthu. Zotsatira zake, zopangidwa za matrices awiri, atatu, ndi ma symmetric tridiagonal matrices limodzi ndi mzake zimatsogolera ku kupanga kwa matrix wandiweyani. Kuphatikiza apo, kupanga matrice ofanana ndi mfundo zitatu kuchokera ku matrices apadera "ochepa" kuchokera ku matrices (osakhazikika) tsopano akulephera chifukwa cha "zero(::Type{Matrix{T}})".
  • Sindikizani
    • %s ndi %c tsopano amagwiritsa ntchito mkangano wa textwidth kupanga m'lifupi mwake.
  • mbiri
    • CPU load profiling tsopano imalemba metadata kuphatikiza ulusi ndi ntchito. Pulogalamu Kuphatikiza apo, kuchuluka kwa magwiritsidwe ntchito tsopano akunenedwa ngati ulusi wonse kapena ulusi uliwonse, kutengera ngati ulusi uli wopanda pake kapena ayi mu zitsanzo zilizonse. Profile.fetch() imaphatikizapo metadata yatsopano mwachisawawa. Kuti mugwirizane m'mbuyo ndi ogula akunja a mbiri yakale, itha kuchotsedwa podutsa include_meta=false.
    • Module yatsopano ya Profile.Allocs imakupatsani mwayi wogawana mbiri yanu. Kufufuza kwamtundu ndi kukula kwa gawo lililonse la kukumbukira kumajambulidwa, ndipo mkangano wa sample_rate umalola kuchuluka kwa magawo omwe angasinthidwe kuti adumphe, kuchepetsa magwiridwe antchito.
    • Kukhazikika kwa nthawi ya CPU kutha kuyendetsedwa ndi wogwiritsa ntchito pomwe ntchito zikuyenda popanda kutsitsa mbiriyo, ndipo lipotilo liziwonetsedwa mukuyenda. Pa MacOS ndi FreeBSD, dinani ctrl-t kapena imbani SIGINFO. Kwa nsanja zina, yambitsani SIGUSR1, i.e. % kupha -USR1 $julia_pid. Izi sizipezeka pa Windows.
  • REPL
    • RadioMenu tsopano imathandizira njira zazifupi za kiyibodi posankha mwachindunji zosankha.
    • Kutsatizana "?(x, y" kotsatiridwa ndi kukanikiza TAB kumawonetsa njira zonse zomwe zingatchulidwe ndi mfundo x, y, .... (Danga lotsogola limakulepheretsani kulowa munjira yothandizira.) "MyModule.?(x, y " amaletsa kusaka kuti akhale "MyModule". Kukanikiza TAB kumafuna kuti mtsutso umodzi ukhale wamtundu wina wake kuposa Iliyonse. Kapena gwiritsani ntchito SHIFT-TAB m'malo mwa TAB kulola njira iliyonse yogwirizana.
    • Kulakwitsa kwatsopano kwapadziko lonse lapansi kumakupatsani mwayi wosankha zaposachedwa, zofananira ndi machitidwe a ans ndi yankho lomaliza. Kulowetsa zolakwika kumasindikizanso zidziwitso zapadera.
  • SparseArrays
    • Anasuntha kachidindo ka SparseArrays kuchoka pamalo osungira a Julia kupita kumalo akunja a SparseArrays.jl.
    • Kulumikizana kwatsopano kumagwira ntchito sparse_hcat, sparse_vcat, ndi sparse_hvcat kubweza mtundu wa SparseMatrixCSC mosasamala kanthu za mitundu ya mikangano yolowetsa. Izi zinakhala zofunikira kugwirizanitsa makina a gluing matrices pambuyo polekanitsa LinearAlgebra.jl ndi SparseArrays.jl code.
  • Kulemba
    • Miyezo yodula mitengo Pansi paMinLevel, Debug, Info, Chenjezo, Zolakwika ndi AboveMaxLevel tsopano zatumizidwa kuchokera ku laibulale yokhazikika yodula mitengo.
  • Unicode
    • Onjezani ntchito ya isequal_normalized kuti muwone ngati Unicode ikufanana popanda kupanga zingwe zokhazikika.
    • Ntchito ya Unicode.normalize tsopano ikuvomereza mawu ofunikira a charttransform, omwe angagwiritsidwe ntchito popereka mapu amtundu wamunthu, ndipo ntchito ya Unicode.julia_chartransform imaperekedwanso kuti ipangitsenso mapu omwe amagwiritsidwa ntchito pomwe Julia parser asintha zozindikiritsa.
  • mayeso
    • '@test_throws "meseji ina" triggers_error()' itha kugwiritsidwa ntchito kuyesa ngati cholakwika chomwe chawonetsedwa chili ndi cholakwika cha "uthenga wina", mosasamala kanthu za mtundu wina wake. Mawu okhazikika, mindandanda yazingwe, ndi ntchito zofananira zimathandizidwanso.
    • @testset foo() tsopano itha kugwiritsidwa ntchito kupanga zoyeserera kuchokera pa ntchito yomwe wapatsidwa. Dzina lachiyeso ndi dzina la ntchito yomwe ikutchedwa. Ntchito yoyitanidwa ikhoza kukhala ndi @test ndi matanthauzidwe ena a @testset, kuphatikiza kuyimbira kuzinthu zina, ndikujambula zotsatira zonse zapakatikati.
    • TestLogger ndi LogRecord tsopano zatumizidwa kuchokera ku laibulale yodziwika bwino ya Test.
  • Zagawidwa
    • SSHManager tsopano imathandizira ulusi wogwira ntchito ndi csh/tcsh wrapper kudzera mu njira ya addprocs() ndi chipolopolo=:csh parameter.
  • Zosintha zina
    • GC.enable_logging(zowona) zitha kugwiritsidwa ntchito kulemba ntchito iliyonse yosonkhanitsira zinyalala ndi nthawi ndi kuchuluka kwa kukumbukira komwe kwasonkhanitsidwa.

Source: opennet.ru

Kuwonjezera ndemanga