Julia forritunarmál 1.7 útgáfa

Útgáfa Julia 1.7 forritunarmálsins hefur verið gefin út, sem sameinar eiginleika eins og mikil afköst, stuðning við kraftmikla vélritun og innbyggð verkfæri fyrir samhliða forritun. Setningafræði Juliu er nálægt MATLAB, með nokkra þætti að láni frá Ruby og Lisp. Strengjameðferðaraðferðin minnir á Perl. Verkefniskóðanum er dreift undir MIT leyfinu.

Helstu eiginleikar tungumálsins:

  • Mikill árangur: eitt af lykilmarkmiðum verkefnisins er að ná frammistöðu nálægt C forritum. Julia þýðandinn er byggður á vinnu LLVM verkefnisins og býr til skilvirkan innfæddan vélkóða fyrir marga markvettvanga;
  • Styður ýmsar forritunarhugmyndir, þar á meðal hluti af hlutbundinni og hagnýtri forritun. Staðlaða bókasafnið býður meðal annars upp á aðgerðir fyrir ósamstillt I/O, ferlistýringu, skráningu, prófílgreiningu og pakkastjórnun;
  • Dynamic vélritun: tungumálið krefst ekki skýrrar skilgreiningar á gerðum fyrir breytur, svipað og forskriftarforritunarmál. Gagnvirk stilling studd;
  • Valfrjáls hæfileiki til að tilgreina gerðir sérstaklega;
  • Setningafræði tilvalin fyrir tölulega tölvuvinnslu, vísindalega tölvuvinnslu, vélanám og sjónræn gögn. Stuðningur við margar tölulegar gagnategundir og verkfæri fyrir samhliða útreikninga.
  • Hæfni til að hringja beint í aðgerðir úr C bókasöfnum án viðbótarlaga.

Nýir eiginleikar í Julia 1.7:

  • Ný setningafræði fyrir að búa til fjölvíddar fylki. Semíkommur eru notaðar til að aðgreina víddir fylkisins, þar sem fjöldi semíkomma gefur til kynna stærðina. Til dæmis táknar ein semíkomma í "[A; B]" samtengingu í fyrstu víddinni (lóðrétt í einvíddar fylki), tvær semíkommur "[A;; B]" tákna þetta í annarri víddinni (lárétt sem ný röð í fylkinu), þrjár semíkommur ";;;" í þeirri þriðju, og svo framvegis.
  • Bakstrik (\) í enda línu innan strengjabókstafs fjarlægir nú nýja línustafinn og inndráttinn. Þetta er hægt að nota til að skipta löngum kóðalínum yfir margar línur án þess að bæta við auka stöfum.
  • Bakstrik fyrir nýja línu í skipanabókstafnum `cmd \…` fjarlægir nú alltaf nýja línuna og túlkar raðina sem samfelldan strengbókstaf, en niðurstaðan var áður óskilgreind.
  • Setningin "(; a, b) = x" til að búa til aðskildar breytur a og b úr x. Þessi setningafræði jafngildir "a = getproperty(x, :a); b = getproperty(x, :b)".
  • Óbein margföldun er nú leyfð fyrir róttæk tákn (t.d. x√y og x∛y).
  • Nú er hægt að nota rökvirkin "&&" og "||" á fylkisþáttum á forminu ".&&" og "||".
  • Nú er hægt að nota virkjana ⫪(U + 2AEA, \Top, \downvDash) og ⫫(U + 2AEB, \Bot, \upvDash, \indep) sem tvíundavirkja.
  • Bætt var við valkostinum "--check-bounds=yes|no|auto" til að stjórna @inbounds makróum með sjálfgefnu gildi auto.

Tungumálabreytingar

  • Sjálfgefinn gervi-slembitölugjafi hefur verið breytt úr Mersenne Twister í Xoshiro256++, þannig að allar slembitölur verða mismunandi (jafnvel með sama fræi) nema notaður sé skýr RNG hlutur. Nýi gjafinn hefur bætta afköst, yfirburða tölfræðilega eiginleika og er notaður fyrir endurtakanlega slembitölu í fjölþráða forritum (hann viðheldur stöðu fyrir hvert keyrandi verkefni og gafflar aðskilda stöðu þegar nýtt verkefni er búið til).
  • Afbygging breytir ekki lengur gildum við úthlutun til vinstri þegar gildi eru skoðuð frá hægri hlið segðar. Til dæmis, fyrir fylki x, mun segðin "x[2], x[1] = x" nú skipta um fyrsta og annað stak x, en áður var x[1] notað til að fylla báðar færslurnar vegna þess að x[2] var breytt við ítrun úthlutunarinnar til x.
  • macroexpand, @macroexpand og @macroexpand1 mynda ekki lengur LoadError. @test_throws hefur einnig verið breytt til að halda viðkomandi prófum virkum.
  • Miðpunkturinn "·" (\cdotpU+00b7) og gríska millipunkturinn · (U+0387) eru nú meðhöndlaðir sem jafngildir punktavirkjanum "⋅" (\cdotU+22c5).
  • Mínusmerkið "−" (\minusU+2212) er nú meðhöndlað sem jafngilt bandstriks-mínusmerkinu "-" (U+002d).
  • Iterators.peel(itr) skilar nú „engu“ þegar itr er tómt, frekar en að kasta BoundsError undantekningu.
  • Margar samfelldar semíkommur í fylkissegð voru áður hunsaðar (t.d. "[1 ;; 2] == [1 ; 2]"). Þessi setningafræði er nú notuð til að aðgreina víddir.
  • Ójafnvægissniðsleiðbeiningar fyrir Unicode, „#= ... =#“, eru nú ekki leyfðar í strengjum og athugasemdum til að draga úr líkum á greiningar-/matskóðainnspýtingu.

Breytingar á stjórnlínuvalkostum

  • Breytan julia --project og umhverfisbreytan JULIA_PROJECT styðja nú val á sameiginlegu umhverfi. Til dæmis eru julia --project=@myenv og export JULIA_PROJECT="@myenv" nú jafngild.

Fjölþráðabreytingar

  • Innri eiginleikar atómvísisaðgerða eru nú skilgreindir fyrir ákveðnar bætistærðir.
  • Bætt við stuðningi við að lýsa og nota einstaka reiti í breytanlegri uppbyggingu sem atómfræðilega; sjá nýja @atomic fjölnotaforritið.
  • Ef umhverfisbreytan JULIA_NUM_THREADS er stillt á "sjálfvirkt", þá verður fjöldi þráða jafn fjöldi þráða örgjörvans.
  • Hvert verkefnishlutur hefur staðbundna stöðu handahófstölugjafar, sem tryggir sjálfgefið endurtakanlega (áætlunaróháða) keyrslu á samsíða hermunarkóða. Rafallinn keyrir einnig mun hraðar samsíða en í fyrri útgáfum.
  • Nú er hægt að færa verkefni á milli þráða. Áður keyrði verkefni alltaf í þeim þræði sem ræsti það fyrst.

Nýjar aðgerðir bókasafnsins

  • Bætt var við aðferðunum findmax(f, domain), argmax(f, domain) og samsvarandi "min" útgáfum með tveimur færibreytum.
  • `isunordered(x)` skilar `true` ef `x` er gildi sem ætti að vera óraðað, eins og NaN eða vantar.
  • Nýtt fall keepat!(vector, inds), sem jafngildir vector[inds] af lista yfir heiltölur.
  • Tveggja-færibreytu aðferðin lock(f, lck) samþykkir nú rás sem aðra færibreytu sína.
  • Nýi föllurinn Returns(value) skilar gildi fyrir hvaða viðfang sem er.
  • Nýjar makróar @something og @coalesce sem eru útgáfur af something og coalesce, talið í sömu röð.
  • Nýtt redirect_stdio fall til að beina stdin, stdout og stderr.
  • Nýja makróið "Base.@invoke f(arg1::T1, arg2::T2; kwargs…)" býður upp á einfalda setningafræði til að kalla á "invoke(f, Tuple{T1,T2}, arg1, arg2; kwargs…)".
  • Nýja makróið "Base.@invokelatest f(args…; kwargs…)" býður upp á þægilega leið til að kalla á "Base.invokelatest(f, args…; kwargs…)".

Nýir eiginleikar bókasafnsins

  • Hægt er að búa til túple með samhengislykilorðinu á sniðinu ":key => value" til að tilgreina eiginleika sem á að senda til IOContext.
  • `bytes2hex` og `hex2bytes` eru ekki lengur takmörkuð við færibreytur af gerðinni ``Union{String,AbstractVector{UInt8}}`` og krefjast nú aðeins þess að gerðirnar séu raðir og hafi reiknanlega lengd.
  • stat(skrá) fékk ítarlegri og þægilegri sýningaraðferð.

Hefðbundnar bókasafnsbreytingar

  • count og findall taka nú AbstractChar breyta til að leita að staf í streng.
  • Nýjar aðferðir: range(start, stop) og range(start, stop, length).
  • `range` styður nú `start` sem valfrjálsa leitarorðsfæribreytu.
  • Sumar sviðsaðgerðir skila nú StepRangeLen í stað StepRange, sem gerir það að verkum að lokaskrefið er núll. Áður gaf λ.* (1:9) villu þegar λ = 0.
  • islowercase og isuppercase meðhöndla nú Unicode flokka með lágstöfum og hástöfum.
  • Föllin iseven og isodde styðja nú aðrar gerðir en heiltölu.
  • `escape_string` tekur nú við safni af stöfum með `keep` leitarorðinu, fyrir stafi sem ættu að vera óbreyttir.
  • `getindex` fyrir NamedTuple samþykkir nú stafatúpla til að vísitölera mörg gildi.
  • Undirtegundir AbstractRange fylgja almennri hegðun fylkjavísitölu þegar Bool-gildi eru vísuð, villur fyrir Bool-stigstærðir eru vísaðar og þegar fylki (þar með talið svið) af Bool-gildum eru meðhöndluð sem rökvísitölur.
  • keys(::RegexMatch) skilar færslulyklum reglulegar segðar eftir nafni, eða eftir vísitölu ef engin nöfn eru til staðar.
  • keys(::Generator) skilar lyklum ítrarans.
  • RegexMatch endurtekur sig nú og gefur af sér teknar undirstrengi.
  • lpad/rpad eru skilgreind í fyrir textbreidd.
  • Test.@test samþykkir nú leitarorðarviðföngin broken og skip, sem endurtaka hegðun Test.@test_broken og Test.@test_skip, en leyfa þér að sleppa prófum sem mistakast aðeins við ákveðnar aðstæður. Til dæmis, ef T == Float64 @test_broken isequal(complex(one(T)) / complex(T(Inf), T(-Inf)), complex(zero(T), zero(T))) annars @test isequal(complex(one(T)) / complex(T(Inf), T(-Inf)), complex(zero(T), zero(T))) end er hægt að skipta út fyrir @test isequal(complex(one(T)) / complex(T(Inf), T(-Inf)), complex(zero(T), zero(T))) broken=(T == Float64)
  • @lock er nú flutt út úr grunninum.
  • Tilraunafallið Base.catch_stack() hefur verið endurnefnt í current_exceptions() og hefur ákveðna skilategund.
  • Sum hornafræðileg föll (sind, cosd, tand, asind, acosd, asecd, acscd, acotd, atand) samþykkja nú ferningsfylki.
  • replace(::String) tekur nú við mörgum mynstrum, sem verða beitt frá vinstri til hægri samtímis, þannig að aðeins eitt mynstur verður beitt á hvaða staf sem er, og mynstrin eiga aðeins við um innsláttartextann, ekki um hverja endurnýjun þeirra.
  • Lengdarfallið athugar ekki lengur hvort heiltöluflæði náist í flestum tilfellum fyrir tiltekin svið af ákveðnum gerðum. checked_length er nýtt fall sem notar prófaða reikningsfærslu allt að því marki að það náist flæði ef niðurstaðan getur borið gildi. Einnig er hægt að nota SaferIntegers.jl pakkann ef hætta er á að svið flæði yfir.
  • Nýjar aðferðir til að skipta út stök í túpli.

Pakkastjóri

  • Í stjórnborðsstillingunni „julia>“, til að nota eða flytja inn pakka sem eru ekki uppsettir en eru tiltækir í skrásetningunni „pkg> add“, er boðið upp á að setja pakkann upp sjálfkrafa.
  • Manifest.toml notar nýja sniðið með nýjum lýsigögnum, þar á meðal útgáfuna af julia sem bjó til skráarskrána. Upprunalegar skrár eru enn studdar þar til notandinn keyrir Pkg.upgrade_manifest().
  • „pkg> precompile“ mun nú forþýða nýjar útgáfur af þegar sóttum pakka, frekar en að fresta þeim til næstu lotu.
  • ``pkg> rm, pin, og free`` styðja nú ``--all`` breytan til að virkja aðgerð á öllum pökkum í einu.
  • Skrár sem sóttar eru af Pkg Server (ekki git) eru ekki lengur pakkaðar upp í skrár, heldur lesnar beint úr skjalasafninu í minni. Til að slökkva á þessum eiginleika skal stilla umhverfisbreytuna JULIA_PKG_UNPACK_REGISTRY=true.
  • Þú getur nú notað ytri git keyrsluskrá í stað sjálfgefna libgit2 bókasafnsins fyrir niðurhal sem eiga sér stað í gegnum Git samskiptareglurnar með því að stilla umhverfisbreytuna JULIA_PKG_USE_CLI_GIT=true.
  • Skrár sóttar frá miðlara Pkg (ekki git) eru nú talin óbreytanleg. Handvirkar breytingar á skrám þeirra eru hugsanlega ekki greindar af Pkg lotu sem er í gangi.
  • Til að bæta við pakka eftir möppunafni í REPL ham þarf nú að bæta "./" við nafnið ef pakkinn er í núverandi möppu; til dæmis "add ./Package" í stað "add Package." Þetta er gert til að forðast rugling á milli pakkanafnsins Package og staðbundnu Package möppunnar.
  • Fjarlægði leitarorðið „mode“ fyrir PackageSpec.

Línuleg algebru

  • Notið Libblastrampoline til að virkja BLAS og LAPACK við keyrslu. Sjálfgefið er að OpenBLAS sé virkjað sem hluti af Julia dreifingunni. Hægt er að nota nýja virkjunarferlið til að skipta út BLAS og LAPACK fyrir notendaskilgreindar stillingar.
  • Á aarch64 notar OpenBLAS nú ILP64 BLAS, rétt eins og allar aðrar 64-bita stýrikerfi.
  • OpenBLAS hefur verið uppfært í útgáfu 0.3.13.
  • SuiteSparse hefur verið uppfært í útgáfu 5.8.1.
  • Lögun UpperHessenberg fylkis varðveitist við ákveðnar reikniaðgerðir, svo sem margföldun eða deilingu með UpperTríhyrnings fylki.
  • Raunverulegar kvasi-þríhyrningsþáttanir Schur er nú hægt að umbreyta í flókið efri þríhyrningsform með því að nota segðina "Schur{Flókið}(S)".
  • cis(A) styður nú fylki sem viðfangsefni.
  • dot styður UniformScaling fyrir AbstractMatrix gerðina.
  • qr[!] og lu[!] styðja nú staka LinearAlgebra.PivotingStrategy gildi sem valfrjálsa snúningsbreytu: sjálfgefin gildi eru qr(A, NoPivot()) á móti qr(A, ColumnNorm()) með snúningi, og lu(A, RowMaximum()) á móti lu(A, NoPivot()) án snúnings. Fyrri Val{true/false} köll eru úrelt.
  • `det(M::AbstractMatrix{BigInt})` kallar á `det_bareiss(M`), sem notar `Bareiss` reikniritið til að reikna út nákvæm gildi.

SVARA

  • Langar línur eru nú fjarlægðar með setningafræðinni "head" ⋯ 12345 bæti ⋯ "tail" þegar þær birtast í REPL.
  • Að líma Repl dæmi af klippiborðinu inn í REPL styður nú allar Repl stillingar (julia, pkg, shell, help?) og stillingin skiptir sjálfkrafa um stillingu.
  • „hjálp?>“ fyrir einingar án skjalastrengja skilar nú lista yfir útflutt nöfn og birtir innihald tengdrar README.md skráar ef hún finnst.

SparseArrays

  • Ný aðferð sizehint!(::SparseMatrixCSC, ::Integer)\.
  • cholesky() varðveitir nú að fullu þá umröðun sem notandinn tilgreindi.
  • issparse er nú beitt á samræmdan hátt á öll umbúðafylki, þar á meðal þau sem eru innfelld, með því að athuga issparse í foreldrafylki umbúðanna.

Dagsetningarbreytingar

  • Hægt er að nota fallið Dates.periods til að fá vigurgildi úr tímabili (Period) úr samsettu tímabili (CompoundPeriod).

Niðurhal

  • Ef hausinn á vafraköku er stilltur í tilvísaðri beiðni, verður vafrakökun nú send í síðari beiðnum.
  • Ef ~/.netrc skráin er til, þá er hún notuð sem lykilorðsuppspretta fyrir vefsíður sem krefjast auðkenningar.
  • Nú er nafn netþjóns gefið upp með öllum TLS-tengingum, jafnvel þótt auðkenni netþjónsins sé ekki staðfest (sjá NetworkOptions).
  • Þegar TLS-tengingar eru athugaðar í Windows, ef að netþjóni Afturköllun vottorðs er ekki möguleg, tenging er leyfð; þetta er í samræmi við það sem önnur forrit gera og hvernig afturköllun er framkvæmd í macOS.
  • Nú er 30 sekúndna biðtími eftir tengingu og 20 sekúndna biðtími eftir gagnasendingu. Þetta tryggir að tengingar séu virkar, annars rofna þær innan við mínútu.

Tar

  • Tar.extract hunsar nú nákvæma heimildarstillingu tarball skráarinnar og staðlar stillingarnar á sama hátt og Tar.create, sem er svipað og git.
  • Föll sem nota tar-skjalasafn meðhöndla nú harða tengla: tenglamarkið verður að vera skrá sem hefur verið skoðuð áður; Tar.list listar færslu með :hardlink-gerðinni og .link-reit sem tilgreinir slóðina að markinu; önnur föll — Tar.extract, Tar.rewrite, Tar.tree_hash — breyta hörðum tengli í afrit af markskránni.
  • Staðlaða sniðið sem Tar.create og Tar.rewrite bjuggu til inniheldur nú færslur fyrir möppur sem eru ekki tómar. Sum verkfæri sem nota tarball (þar á meðal Docker) eru rugluð vegna skorts á þessum möppufærslum.
  • Tar samþykkir nú tarballs með bilum fremst í reitum fyrir áttatöluhausa: tæknilega séð er þetta ógilt snið samkvæmt POSIX forskriftinni, en gömlu tar skipanirnar í Solaris bjuggu til slík skjalasöfn, svo þetta snið er til víða og það virðist skaðlaust að samþykkja það.
  • Tar.extract samþykkir nú leitarorðarviðfangið set_permissions sem sjálfgefið er að gildið sé satt; ef ósatt er gefið í staðinn breytast heimildir útdreginna skráa ekki við útdrátt.

Mmap

  • mmap hefur nú verið flutt út og tiltækt til notkunar.

Afmarkaðar skrár

  • Readdlm notar nú sjálfgefið use_mmap=false í öllum stýrikerfum til að tryggja stöðuga áreiðanleika í óeðlilegum aðstæðum í skráarkerfinu.

Heimild: opennet.ru

Kauptu áreiðanlega hýsingu fyrir síður með DDoS vernd, VPS VDS netþjónum 🔥 Kauptu áreiðanlega vefhýsingu með DDoS vörn, VPS VDS netþjónum | ProHoster