Kuburitswa kweJulia 1.8 programming mutauro

Kuburitswa kweiyo Julia 1.8 programming mutauro kunowanikwa, kusanganisa hunhu hwakadai sekuita kwepamusoro, tsigiro yeakasimba kutaipa uye akavakirwa-mukati maturusi epaparallel programming. Syntax yaJulia iri padyo neMATLAB, ichikwereta zvimwe zvinhu kubva kuRuby naLisp. Iyo tambo manipulation nzira inoyeuchidza Perl. Iyo kodhi yeprojekiti yakagoverwa pasi peMIT rezinesi.

Zvinonyanya kukosha zvemutauro:

  • Kuita kwepamusoro: chimwe chezvinangwa zvakakosha zvepurojekiti ndeyekuwana kuita padyo neC zvirongwa. Iyo Julia compiler yakavakirwa pachirongwa cheLLVM uye inogadzira inoshanda yemuchina kodhi yemapuratifomu mazhinji;
  • Tsigiro yeakasiyana-siyana programming paradigms, kusanganisira zvinhu zvechinhu-chakatarisana uye inoshanda hurongwa. Iyo yakajairwa raibhurari inopa mabasa easynchronous I/O, maitiro manejimendi, kutema matanda, profiling, uye mapakeji manejimendi, pakati pezvimwe zvinhu;
  • Dynamic typing: Mutauro haudi tsananguro yakajeka yemhando dzezvakasiyana, nekuenzanisa nemitauro yekunyora mapurogiramu. Inotsigira interactive mode;
  • Sarudzo kugona kutsanangura zvakajeka marudzi;
  • Syntax yakanakira kuverenga kwenhamba, kuverenga kwesainzi, masisitimu ekudzidza muchina uye kuona data. Tsigiro yemhando dzakawanda dzedhata uye maturusi ekufananidza kuverenga.
  • Kugona kufona zvakananga mabasa kubva kumaraibhurari eC pasina mamwe matinji.

Shanduko huru muJulia 1.8:

  • Zvimiro zvemutauro mutsva
    • Minda yeinochinjika struct iye zvino inogona kutsanangurwa sezvisingachinjiki kudzivirira kuti isashandurwe uye kubvumira optimization.
    • Type annotations inogona kuwedzerwa kune global variables.
    • Empty n-dimensional arrays inogona kugadzirwa uchishandisa akawanda semicolons mukati masikweya mabhuraketi, semuenzaniso "[;;;]" inogadzira 0x0x0 array.
    • Edza mabhuroki anogona kuita sarudzo kuve neimwe block, iyo inoitwa pakarepo mushure memuviri mukuru kana pasina zvikanganiso zvakakandwa.
    • @inline uye @noinline inogona kuiswa mukati memuviri unoshanda, ichikubvumidza kuti utaure basa risingazivikanwe.
    • @inline uye @noinline ikozvino inogona kuiswa kune basa mune yekufona saiti kana block kumanikidza inoenderana basa mafoni kuti abatanidzwe (kana kusabatanidzwa).
    • βˆ€, βˆƒ uye βˆ„ zvinotenderwa semavara ekuzvizivisa.
    • Yakawedzera rutsigiro rweiyo Unicode 14.0.0 yakatarwa.
    • Iyo Module(:zita, nhema, nhema) nzira inogona kushandiswa kugadzira module isina mazita, isingatore Base kana Core, uye haina referensi pachayo.
  • Mutauro unochinja
    • Zvichangobva kugadzirwa Task zvinhu (@spawn, @async, etc.) zvino vane world_age yemaitiro kubva kumubereki Task kana yagadzirwa, inobvumira kukwenenzvera kuurayiwa. Iyo yakapfuura activation sarudzo inowanikwa uchishandisa Base.invokelatest nzira.
    • Unicode unbalanced bidirectional fomati mirairo yave kurambidzwa mutambo uye makomendi kudzivirira majekiseni.
    • Base.ifelse ikozvino inotsanangurwa seyakajairwa basa kwete buildin, ichibvumira mapakeji kuti awedzere tsananguro yayo.
    • Basa rega rega rekuchinjika kwepasi rose zvino rinotanga raenda nemukudanwa kushandura(Chero, x) kana kushandura(T, x) kana shanduko yepasi rose yakanzi ndeyemhando T. Usati washandisa vhezheni yepasi rose, iva nechokwadi chekuti shanduko isingachinji (Chero , x) === x ichokwadi nguva dzose, zvikasadaro zvinogona kutungamirira kumaitiro asingatarisirwi.
    • Akavakirwa-mukati mabasa ave akafanana neakajairika mabasa uye anogona kuverengerwa zvine hurongwa uchishandisa nzira.
  • Compiler/Runtime Improvements
    • Boot nguva yakaderedzwa neinenge 25%.
    • Iyo LLVM-yakavakirwa compiler yakapatsanurwa kubva kuraibhurari yenguva muraibhurari nyowani, libjulia-codegen. Inotakurwa nekusarudzika, saka hapafanirwe kuve neshanduko panguva yekushandiswa kwakajairika. Mukutumira zvisingade compiler (semuenzaniso, mifananidzo yehurongwa umo makodhi ese anodiwa anofanounganidzwa), raibhurari iyi (uye kutsamira kwayo kweLLVM) inogona kungosiiwa.
    • Conditional type inference ikozvino inogoneka nekupfuudza nharo kune imwe nzira. Semuenzaniso, yeBase.ifelse(isa(x, Int), x, 0) inodzosa ::Int kunyangwe mhando ye x isingazivikanwe.
    • SROA (Scalar Replacement of Aggregates) yakagadziridzwa: inobvisa mafoni ekufona neanoramba epasi rose minda, inobvisa zvinochinjika zvimiro neminda isina unitialized, inovandudza mashandiro uye kubata kweiyo nested getfield mafoni.
    • Type inference inoteedzera akasiyana mhedzisiro-yakashata uye isiri-kudonha. Kuparadzira nguva dzose kunotariswa, iyo inovandudza zvakanyanya kuunganidza-nguva kuita. Mune zvimwe zviitiko, semuenzaniso, mafoni kumabasa asingagone kunyorwa asi asingakanganise mhedzisiro anoraswa panguva yekumhanya. Mitemo yemhedzisiro inogona kunyorwa pamusoro pemaoko uchishandisa iyo Base.@assume_effects macro.
    • Precompilation (ine yakajeka precompilation mirairo kana yakatarwa mitoro yebasa) ikozvino inochengetedza yakawanda mhando-yakatsanangurwa kodhi, zvichikonzera kukurumidza-nguva yekutanga kuurayiwa. Chero nzira nyowani/mhando misanganiswa inodiwa nepasuru yako, zvisinei nekuti nzira idzi dzakatsanangurwa kupi, zvino inogona kuvharirwa mufaira rekutanga kana ichidanwa nenzira yepasuru yako.
  • Command line parameter shanduko
    • Maitiro akasarudzika ekutarisisa @inbounds zviziviso ndiyo sarudzo ye auto mu "--check-bounds=yes|no|auto".
    • Nyowani "--strip-metadata" sarudzo yekubvisa docstrings, kunobva ruzivo rwenzvimbo, uye mazita emunharaunda akasiyana kana uchigadzira system mufananidzo.
    • Sarudzo nyowani "--strip-ir" kubvumidza mugadziri kubvisa iyo yepakati sosi kodhi inomiririra kana ichivaka iyo system mufananidzo. Mufananidzo wabuda unozoshanda chete kana "--compile=all" ikashandiswa kana kana kodhi yese inodiwa isati yaunganidzwa.
    • Kana iyo "-" hunhu ichitsanangurwa pachinzvimbo chezita refaira, ipapo iyo kodhi inogoneka inoverengwa kubva kune yakajairwa yekupinza rwizi.
  • Multithreading rutsigiro shanduko
    • Threads.@threads by default inoshandisa iyo nyowani yekuronga sarudzo :dynamic, iyo inosiyana neyekare modhi mukuti iterations icharongwa zvine simba pane dziripo shinda dzevashandi pane kupihwa kune yega yega. Iyi modhi inobvumira kugovera zvirinani kwezvishwe nested ne @spawn uye @threads.
  • Mabasa matsva eraibhurari
    • eachsplit(str) kuita split(str) kakawanda.
    • allequal(itr) kuyedza kana zvinhu zvese muiterator zvakaenzana.
    • hardlink(src, dst) inogona kushandiswa kugadzira zvakaomarara zvinongedzo.
    • setcpuaffinity(cmd, cpus) kuseta hukama hwe processor musimboti kune dzakatangwa maitiro.
    • diskstat(nzira=pwd()) kuti uwane disk statistics.
    • Nyowani @showtime macro kuratidza ese ari maviri mutsara uri kuongororwa uye iyo @time report.
    • LazyString uye simbe "str" ​​macro yakawedzerwa kutsigira kusimbe kuvaka kwemameseji ekukanganisa munzira dzekukanganisa.
    • Yakagadzirisa nyaya yemari muDict uye zvimwe zvinhu zvakatorwa sekiyi (::Dict), kukosha (::Dict) uye Set. Nzira dzekudzokorodza dzava kukwanisa kudaidzwa paduramazwi kana seti, chero pasina nhare dzinoshandura duramazwi kana seti.
    • @time uye @timev ikozvino vane tsananguro yekusarudzika, ichikubvumidza kuti utaure kwakabva mishumo yenguva, semuenzaniso. @time "Kuongorora foo" foo().
    • range inotora kumira kana kureba seyayo chete keyword nharo.
    • kunyatsoita uye kugadzika ikozvino gamuchira base sekiyi kiyi
    • TCP socket zvinhu zvino zvinopa nzira yekunyora yekuvhara uye inotsigira kushandiswa kwehafu-yakavhurika modhi.
    • extrema ikozvino inogamuchira init nharo.
    • Iterators.countfrom ikozvino inogamuchira chero mhando inotsanangura + nzira.
    • @time ikozvino inogovera iyo % yenguva yakashandiswa kudzorera nzira nemhando dzakachinja.
  • Standard Library Shanduko
    • Makiyi ane kukosha Hapana chave kubviswa kubva kunharaunda mu addenv.
    • Iterators.reverse (uye saka yekupedzisira) inotsigira mutsara wega wega.
    • Hurefu hwekuita kwemhando dzemamwe marudzi hauchatarisi kuti huwandu hwakafashukira. Basa idzva, rakatariswa_length, rinowanikwa; ine zvishoma kutamisa control logic. Kana zvichidikanwa, shandisa SaferIntegers.jl kugadzira mhando yemhando.
    • The Iterators.Reverse iterator inoshandisa kutenderedza kweindex kana zvichibvira.
  • Package Manager
    • Nyowani βŒƒ uye βŒ… zviratidzo padivi pemapakeji mu "pkg>" mamiriro ayo matsva anowanikwa. βŒ… inoratidza kuti shanduro itsva hadzigoni kuiswa.
    • Zvitsva zvechinyakare::Bool nharo kuPkg.status (--yapera kana -o muREPL modhi) kuratidza ruzivo nezvepakeji kubva kune dzakapfuura.
    • New compat::Bool nharo kuPkg.status (--compat kana -c muREPL mode) kuratidza chero [compat] zvinyorwa muProject.toml.
    • Nyowani "pkg>compat" (uye Pkg.compat) modhi yekumisikidza kuenderana kweprojekiti. Inopa inopindirana mupepeti kuburikidza ne "pkg> compat" kana yakananga rekodhi rekodhi kuburikidza ne "pkg> Foo 0.4,0.5", iyo inogona kurodha marekodhi azvino kuburikidza nekupedzisa tebhu. Kureva kuti, "pkg> compat Fo " inovandudzwa otomatiki kuenda ku "pkg> Foo 0.4,0.5" kubvumidza kugadziridzwa kwechinhu chiripo.
    • Pkg ikozvino inongoyedza kudhawunirodha mapakeji kubva pasuru server kana sevha iri kutarisa registry ine package.
    • Pkg.instantiate yava kuzopa yambiro kana Project.toml isisawirirani neManifest.toml. Inoita izvi zvichibva pane hashi yeprojekiti deps uye compat marekodhi (mamwe minda haana hanya) mumanifest pakuigadzirisa, kuitira kuti chero shanduko kuProjekti.toml deps kana compat rekodhi inogona kuonekwa pasina kugadzirisa zvakare.
    • Kana "pkg> wedzera" isingawane pasuru ine zita rakapihwa, zvino icharatidza mapakeji ane mazita akafanana anogona kuwedzerwa.
    • Shanduro yejulia yakachengetwa mumanifest haichasanganisi nhamba yekuvaka, zvichireva kuti master yava kunyorwa se 1.9.0-DEV.
    • Bvunza kubvisa "pkg>" ikozvino ichaonekwa zvakanyanya, uye ichadzorerwa nenzira kwayo kuREPL.
  • InteractiveUtils
    • Nyowani @time_imports macro kutaurira nguva yakashandiswa kupinza mapakeji uye nekuvimbika kwawo, kuratidza kuunganidza uye kudzoreredza nguva sechikamu chezvekupinzwa kunze.
  • Linear algebra
    • Iyo BLAS submodule ikozvino inotsigira level-2 BLAS spr! mabasa.
    • LinearAlgebra.jl raibhurari yakajairwa yave yakazvimirira zvachose kubva kuSparseArrays.jl, zvese kubva kune kodhi kodhi uye maonero eyuniti yekuyedza. Nekuda kweizvozvo, sparse arrays haichadzoserwe (zvisina kujeka) nenzira kubva LinearAlgebra inoshandiswa kuBase kana LinearAlgebra zvinhu. Kunyanya, izvi zvinotungamirira kune zvinotevera kuchinja kuchinja:
      • Concatenations uchishandisa akakosha "sparse" matrices (eg diagonal) zvino anodzosera dense matrices; Nekuda kweizvozvo, iyo D1 uye D2 minda yeSVD zvinhu zvakagadzirwa neGetproperty mafoni ava matrices akaoma.
      • Iyo yakafanana(::SpecialSparseMatrix, ::Type, ::Dims) nzira inodzorera dense null matrix. Nekuda kweizvozvo, zvigadzirwa zvemaviri-, matatu-, uye symmetric tridiagonal matrices pamwe nemumwe zvinotungamira kune chizvarwa che dense matrix. Pamusoro pezvo, kugadzira matrices akafanana nenharo nhatu kubva kune akakosha "sparse" matrices kubva (asiri-static) matrices zvino anokundikana nekuda kwe "zero(::Type{Matrix{T}})".
  • Printf
    • %s uye %c ikozvino shandisa iyo textwidth nharo kufomatidza hupamhi.
  • Profile
    • CPU mutoro profiling ikozvino inorekodha metadata inosanganisira tambo uye mabasa. Profile.print() ine boka idzva nenharo iyo inokutendera kuti uunganidze shinda, mabasa kana diki diki/matanzo, mabasa/shinda, uye shinda uye mabasa nharo kupa kusefa. Pamusoro pezvo, chikamu chekushandisa chave kutaurwa seyese kana shinda yega, zvichienderana nekuti shinda yacho haina basa here kana kuti kwete mumuenzaniso wega wega. Profile.fetch() inosanganisira iyo metadata itsva nekusingaperi. Zvekudzokera kumashure kuenderana nevatengi vekunze veprofiling data, inogona kusabatanidzwa nekupfuura include_meta=false.
    • Iyo itsva Profile.Allocs module inokutendera kuti utarise kugoverwa kwendangariro. Iyo stack trace yerudzi uye saizi yeyega yega yekugoverwa inorekodhwa, uye iyo sample_rate nharo inobvumira nhamba inogadzirika yekugoverwa kuti isveturwe, ichideredza kushanda pamusoro.
    • Yakagadziriswa nguva yeCPU profiling ikozvino inogona kumhanyiswa nemushandisi apo mabasa ari kushanda asina kutanga kurodha chimiro, uye mushumo ucharatidzwa uchimhanya. PaMacOS uye FreeBSD, tinya ctrl-t kana kufonera SIGINFO. Kune mamwe mapuratifomu, activate SIGUSR1, i.e. % kuuraya -USR1 $julia_pid. Izvi hazviwanikwe paWindows.
  • REPL
    • RadioMenu ikozvino inotsigira mamwe mapfupi ekhibhodi ekusarudzira zvakananga sarudzo.
    • The sequence "?(x, y" inoteverwa nekudzvanya TAB inoratidza nzira dzese dzinogona kudanwa nenharo x, y, .... (Nzvimbo inotungamira inokutadzisa kupinda mumodhi yekubatsira.) "MyModule.?(x, y " kunoganhurira kutsvaga ku"MyModule".Kudzvanya TAB kunoda kuti nharo imwe chete ive yerudzi rwakanyanya kupfuura Chero.Kana kushandisa SHIFT-TAB pachinzvimbo cheTAB kubvumidza chero nzira dzinoenderana.
    • Iyo nyowani yepasi rose shanduko inobvumidza iwe kuti uwane yazvino kusarudzika, yakafanana nemaitiro e ans nemhinduro yekupedzisira. Kupinda kukanganisa kunodhinda zvakare ruzivo rwakasiyana.
  • SparseArrays
    • Yakafambisa kodhi yeSparseArrays kubva kuJulia repository kuenda kune yekunze SparseArrays.jl repository.
    • Iyo itsva concatenation inoshanda sparse_hcat, sparse_vcat, uye sparse_hvcat inodzorera SparseMatrixCSC mhando zvisinei nemhando dzenharo dzekuisa. Izvi zvakave zvakakosha kubatanidza michina yekunamira matrices mushure mekuparadzanisa LinearAlgebra.jl neSparseArrays.jl kodhi.
  • kutema
    • Iwo akajairwa mazinga ekutema PazasiMinLevel, Debug, Info, Yambiro, Kanganiso uye AboveMaxLevel zvave kutumirwa kunze kubva kune yakajairwa Logging raibhurari.
  • Unicode
    • Yakawedzera isequal_normalized basa kutarisa Unicode kuenzana pasina kunyatso gadzira tambo dzakajairwa.
    • Iyo Unicode.normalize basa rave kugamuchira iro charttransform keyword, iro rinogona kushandiswa kupa hunhu hwemamepu, uye iyo Unicode.julia_chartransform basa rinopihwa zvakare kuburitsa mepu inoshandiswa kana Julia parser ajairisa zviziviso.
  • bvunzo
    • '@test_throws "imwe meseji" triggers_error()' inogona kushandiswa kuyedza kuona kana mavara echikanganiso aratidzwa aine "imwe meseji" kukanganisa, zvisinei nerudzi rwakasiyana. Matauriro enguva dzose, mitsara yetambo, uye mabasa ekufananidza anotsigirwawo.
    • @testset foo() ikozvino inogona kushandiswa kugadzira test set kubva pane rakapihwa basa. The test case name izita rebasa ririkudanwa. Iyo inodaidzwa basa inogona kuve ne @test uye mamwe @testset tsananguro, kusanganisira yekufona kune mamwe mabasa, uchirekodha ese epakati bvunzo mhinduro.
    • TestLogger uye LogRecord zvave kutumirwa kunze kubva kune yakajairwa Test raibhurari.
  • Yakaparadzirwa
    • SSHManager ikozvino inotsigira tambo dzevashandi ne csh/tcsh wrapper kuburikidza neaddprocs() nzira uye shell=:csh parameter.
  • Dzimwe shanduko
    • GC.enable_logging(yechokwadi) inogona kushandiswa kurodha marara ega ega oparesheni nenguva uye huwandu hwendangariro dzakaunganidzwa.

Source: opennet.ru

Voeg