Julia Programming Language 1.8 Pagpagawas

Ang pagpagawas sa Julia 1.8 programming language anaa, nga naghiusa sa mga kalidad sama sa taas nga performance, suporta alang sa dinamikong pag-type ug mga built-in nga himan alang sa parallel programming. Ang syntax ni Julia duol sa MATLAB, nanghulam ug pipila ka elemento gikan kang Ruby ug Lisp. Ang pamaagi sa pagmaniobra sa hilo nagpahinumdum sa Perl. Ang code sa proyekto giapod-apod ubos sa lisensya sa MIT.

Pangunang bahin sa pinulongan:

  • Taas nga pasundayag: usa sa mga nag-unang tumong sa proyekto mao ang pagkab-ot sa pasundayag duol sa mga programa sa C. Ang Julia compiler gibase sa trabaho sa proyekto sa LLVM ug nagmugna og episyente nga lumad nga code sa makina alang sa daghang target nga mga plataporma;
  • Nagsuporta sa lainlaing mga paradigma sa programming, lakip ang mga elemento sa object-oriented ug functional programming. Ang sumbanan nga librarya naghatag, lakip sa ubang mga butang, mga gimbuhaton alang sa asynchronous nga I/O, pagkontrol sa proseso, pag-log, profiling, ug pagdumala sa pakete;
  • Dinamikong pag-type: ang lengguwahe wala magkinahanglan ug klaro nga kahulugan sa mga tipo para sa mga variable, susama sa scripting programming language. Interactive mode gisuportahan;
  • Opsyonal nga abilidad sa dayag nga pagtino sa mga tipo;
  • Usa ka sulundon nga syntax alang sa numerical computing, scientific computing, machine learning, ug data visualization. Suporta alang sa daghang mga tipo sa datos sa numero ug mga himan alang sa parallelization sa mga kalkulasyon.
  • Ang abilidad sa direktang pagtawag sa mga gimbuhaton gikan sa mga librarya sa C nga walay dugang nga mga lut-od.

Daghang mga pagbag-o sa Julia 1.8:

  • Bag-ong mga bahin sa pinulongan
    • Ang mga natad sa usa ka mutable struct mahimo na nga i-annotate isip mga constants aron mapugngan kini nga mausab ug tugotan ang pag-optimize.
    • Ang mga anotasyon sa tipo mahimong idugang sa mga global variable.
    • Ang walay sulod nga n-dimensional arrays mahimong mabuhat gamit ang daghang semicolon sulod sa square brackets, pananglitan ang "[;;;]" maghimo ug 0x0x0 array.
    • Ang mga bloke sa pagsulay mahimo na karon nga adunay lain nga bloke, nga ipatuman dayon pagkahuman sa punoan nga lawas kung wala’y mga sayup nga gilabay.
    • Ang @inline ug @noinline mahimong ibutang sa sulod sa function body, nga magtugot kanimo sa pag-annotate sa usa ka anonymous nga function.
    • Ang @inline ug @noinline mahimo nang magamit sa usa ka function sa usa ka call site o block aron pugson ang katugbang nga mga tawag sa function nga iapil (o dili iapil).
    • Gitugotan ang ∀, ∃ ug ∄ isip mga karakter sa pag-ila.
    • Gidugang nga suporta alang sa Unicode 14.0.0 nga detalye.
    • Ang Module(:name, false, false) nga pamaagi mahimong gamiton sa paghimo og module nga walay mga ngalan, wala mag-import og Base o Core, ug walay reference sa iyang kaugalingon.
  • Mga kausaban sa pinulongan
    • Ang bag-ong gibuhat nga mga butang sa Task (@spawn, @async, ug uban pa) karon adunay world_age alang sa mga pamaagi gikan sa ginikanan nga Task kung gimugna, nga nagtugot alang sa na-optimize nga pagpatuman. Ang miaging opsyon sa pagpaaktibo magamit gamit ang Base.invokelatest nga pamaagi.
    • Ang Unicode dili balanse nga bidirectional formatting nga mga direktiba gidili na sa mga string ug mga komento aron malikayan ang mga injection.
    • Base.ifelse karon gihubit ingon nga usa ka generic function kay sa usa ka builtin, nga nagtugot sa mga pakete sa pagpalapad sa iyang kahulugan.
    • Ang matag assignment sa global variable karon moagi una og tawag sa pag-convert(Bisan unsa, x) o convert(T, x) kung ang global variable gideklarar nga type T. Sa dili pa gamiton ang global variables, siguroha nga ang invariant convert(Bisan unsa , x) === x mao ang kanunay tinuod, kon dili kini mahimong mosangpot sa wala damha nga kinaiya.
    • Ang mga built-in nga mga gimbuhaton susama na karon sa mga generic nga gimbuhaton ug mahimong ma-programmatically enumerated gamit ang mga pamaagi.
  • Pag-ayo sa compiler/runtime
    • Ang oras sa pag-boot mikunhod sa gibana-bana nga 25%.
    • Ang LLVM-based compiler gibulag gikan sa runtime library ngadto sa usa ka bag-ong librarya, libjulia-codegen. Gikarga kini pinaagi sa default, busa kinahanglan nga wala’y mga pagbag-o sa panahon sa normal nga paggamit. Sa mga deployment nga wala magkinahanglan og compiler (pananglitan, mga imahe sa sistema diin ang tanan nga gikinahanglan nga code gi-precompiled), kini nga librarya (ug ang dependency sa LLVM niini) mahimo nga dili iapil.
    • Ang kondisyon nga tipo nga inference mahimo na karon pinaagi sa pagpasa sa usa ka argumento sa usa ka pamaagi. Pananglitan, alang sa Base.ifelse(isa(x, Int), x, 0) mobalik ::Int bisan kon ang tipo sa x wala mailhi.
    • Ang SROA (Scalar Replacement of Aggregates) gipauswag: giwagtang ang mga tawag sa getfield nga adunay padayon nga global nga mga natad, gitangtang ang mga mabag-o nga istruktura nga wala’y una nga natad, gipaayo ang pasundayag ug pagdumala sa mga nested getfield nga tawag.
    • Ang type inference nagsubay sa lain-laing mga epekto—mga side effect ug non-dropping. Ang kanunay nga pagpalapad giisip, nga labi nga nagpauswag sa paghimo sa oras sa pag-compile. Sa pipila ka mga kaso, pananglitan, ang mga tawag sa mga gimbuhaton nga dili ma-inline apan dili makaapekto sa resulta isalikway sa runtime. Ang mga lagda alang sa mga epekto mahimong ma-overwrit sa mano-mano gamit ang Base.@assume_effects macro.
    • Ang precompilation (uban ang klaro nga precompilation nga mga direktiba o espesipikong mga workloads) karon nagtipig ug mas daghang tipo-defined code, nga miresulta sa mas paspas nga first-time execution. Ang bisan unsang bag-ong pamaagi/type nga kombinasyon nga gikinahanglan sa imong package, bisag asa gipasabot ang maong mga pamaagi, mahimo na nga ma-cache sa precompilation file kung kini tawgon pinaagi sa pamaagi nga iya sa imong package.
  • Mga Kausaban sa Command Line Options
    • Ang default nga pamatasan alang sa pagmonitor sa @inbounds nga mga deklarasyon mao na ang awto nga kapilian sa "--check-bounds=yes|dili|awto".
    • Bag-ong kapilian nga "--strip-metadata" aron matangtang ang mga docstring, impormasyon sa lokasyon sa gigikanan, ug lokal nga variable nga ngalan kung maghimo usa ka imahe sa sistema.
    • Bag-ong opsyon nga "--strip-ir" aron tugotan ang compiler nga tangtangon ang intermediate source code nga representasyon sa pagtukod sa sistema sa imahe. Ang resulta nga hulagway magamit lamang kung ang "--compile=all" gigamit o kung ang tanan nga gikinahanglan nga code kay pre-compiled.
    • Kung ang "-" nga karakter gipiho imbis sa ngalan sa file, nan ang executable code gibasa gikan sa standard input stream.
  • Mga pagbag-o sa suporta sa multithreading
    • Ang mga thread.@threads pinaagi sa default naggamit sa bag-ong opsyon sa pag-iskedyul :dynamic, nga lahi gikan sa miaging mode sa nga ang mga pag-uli i-iskedyul nga dinamiko sa mga magamit nga thread sa trabahante imbes nga i-assign sa matag thread. Kini nga mode nagtugot alang sa mas maayo nga pag-apod-apod sa mga nested loop nga adunay @spawn ug @threads.
  • Bag-ong mga gimbuhaton sa librarya
    • eachsplit(str) aron ipatuman ang split(str) sa makadaghang higayon.
    • allequal(itr) aron sulayan kung ang tanan nga mga elemento sa usa ka iterator managsama.
    • ang hardlink(src, dst) mahimong gamiton sa paghimo og lisud nga mga link.
    • setcpuaffinity(cmd, cpus) aron itakda ang affinity sa processor core sa gilunsad nga mga proseso.
    • diskstat(path=pwd()) para makakuha ug disk statistics.
    • Bag-ong @showtime macro aron ipakita ang linya nga gi-evaluate ug ang @time nga report.
    • Ang LazyString ug lazy"str" ​​​​macro gidugang aron suportahan ang tapolan nga paghimo sa mga mensahe sa sayup sa mga agianan sa sayup.
    • Giayo ang isyu sa concurrency sa Dict ug uban pang nakuha nga mga butang sama sa mga yawe (:: Dict), mga kantidad (:: Dict) ug Set. Ang mga pamaagi sa pag-usab mahimo na karon nga tawagan sa usa ka diksyonaryo o set, basta wala’y mga tawag nga nagbag-o sa diksyonaryo o set.
    • Ang @time ug @timev karon adunay opsyonal nga paghulagway, nga nagtugot kanimo sa pag-annotate sa tinubdan sa mga taho sa oras, pananglitan. @oras "Pag-evaluate foo" foo().
    • Ang range nagkinahanglan og paghunong o gitas-on isip bugtong keyword nga argumento niini.
    • katukma ug setprecision karon modawat base ingon nga usa ka keyword
    • Ang TCP socket objects karon naghatag ug closewrite nga pamaagi ug nagsuporta sa paggamit sa half-open mode.
    • extrema karon midawat sa init nga argumento.
    • Iterators.countfrom karon modawat sa bisan unsa nga matang nga naghubit sa usa ka + nga pamaagi.
    • Ang @time karon naggahin sa % sa oras nga gigugol sa pag-recompile nga mga pamaagi nga adunay giusab nga mga tipo.
  • Mga Pagbag-o sa Standard Library
    • Ang mga yawe nga adunay bili Wala nay makuha gikan sa palibot sa addenv.
    • Ang Iterators.reverse (ug busa katapusan) nagsuporta sa matag linya.
    • Ang gitas-on nga function alang sa mga han-ay sa pipila ka mga matang wala na magsusi sa integer overflow. Usa ka bag-ong function, checked_length, anaa; kini naglangkob sa bit transfer control logic. Kung gikinahanglan, gamita ang SaferIntegers.jl aron matukod ang klase nga range.
    • Ang Iterators.Reverse iterator nagpatuman sa matag index reversal kung mahimo.
  • Tagdumala sa package
    • Bag-ong ⌃ ug ⌅ indicators sunod sa packages sa “pkg>” status diin ang mga bag-ong bersyon anaa na. ⌅ nagpakita nga ang mga bag-ong bersyon dili ma-install.
    • Bag-ong outdated::Bool argument ngadto sa Pkg.status (--outdated o -o sa REPL mode) aron ipakita ang impormasyon bahin sa mga package gikan sa nangaging mga bersyon.
    • Bag-ong compat::Bool nga argumento sa Pkg.status (--compat o -c sa REPL mode) aron ipakita ang bisan unsang [compat] nga mga entry sa Project.toml.
    • Bag-ong "pkg>compat" (ug Pkg.compat) mode para sa pag-set sa mga entri sa compatibility sa proyekto. Naghatag usa ka interactive nga editor pinaagi sa "pkg> compat" o direkta nga pagkontrol sa rekord pinaagi sa "pkg> Foo 0.4,0.5", nga makakarga sa mga karon nga rekord pinaagi sa pagkompleto sa tab. Sa ato pa, ang "pkg> compat Fo" awtomatik nga gi-update sa "pkg> Foo 0.4,0.5" aron ma-edit ang kasamtangan nga entry.
    • Ang Pkg karon mosulay lamang sa pag-download sa mga pakete gikan sa usa ka package server kung ang server nag-monitor sa registry nga adunay sulod nga package.
    • Ang Pkg.instantiate mopagawas na karon og pasidaan kon ang Project.toml wala na mag-sync sa Manifest.toml. Gibuhat kini base sa usa ka hash sa mga deps ug compat record sa proyekto (ang ubang mga field gibalewala) sa manifest kung gisulbad kini, aron ang bisan unsang pagbag-o sa Project.toml deps o compat records mamatikdan nga dili na masulbad pag-usab.
    • Kung ang "pkg>add" dili makit-an ang usa ka pakete nga adunay gihatag nga ngalan, kini karon magsugyot sa mga pakete nga adunay parehas nga mga ngalan nga mahimong idugang.
    • Ang bersyon sa julia nga gitipigan sa manifest wala na maglakip sa numero sa pagtukod, nga nagpasabot nga ang master isulat na isip 1.9.0-DEV.
    • Ang pag-abort sa pagsulay "pkg>" mas makanunayon na nga makit-an, ug ibalik sa husto sa REPL.
  • InteractiveUtils
    • Bag-ong @time_imports macro aron ireport ang oras nga gigugol sa pag-import sa mga pakete ug ang ilang mga dependency, nga nagpasiugda sa pag-compile ug pag-compile pag-usab nga oras ingon usa ka porsyento sa mga import.
  • Linear nga algebra
    • Ang BLAS submodule karon nagsuporta sa level-2 BLAS spr! functions.
    • Ang LinearAlgebra.jl standard library karon hingpit nga independente sa SparseArrays.jl, gikan sa source code ug unit testing perspective. Ingon usa ka sangputanan, ang mga tipik nga mga array wala na ibalik (sa tinuud) pinaagi sa mga pamaagi gikan sa LinearAlgebra nga gipadapat sa Base o LinearAlgebra nga mga butang. Sa partikular, kini modala ngadto sa mosunod nga paglapas sa mga kausaban:
      • Ang mga concatenation nga naggamit ug espesyal nga "sparse" matrice (eg diagonal) karon nagbalik sa mga dasok nga matrice; Ingon usa ka sangputanan, ang mga natad sa D1 ug D2 sa mga butang nga SVD nga gihimo sa mga tawag sa getproperty karon mga dasok nga matrice.
      • Ang susamang(::SpecialSparseMatrix, ::Type, ::Dims) nga pamaagi nagbalik ug dasok nga null matrix. Ingon usa ka sangputanan, ang mga produkto sa duha-, tulo-, ug simetriko nga tridiagonal nga mga matrice sa usag usa mosangput sa paghimo sa usa ka dasok nga matrix. Dugang pa, ang paghimo og susama nga mga matrice nga adunay tulo ka argumento gikan sa espesyal nga "sparse" nga mga matrice gikan sa (non-static) nga mga matrice karon napakyas tungod sa "zero(::Type{Matrix{T}})".
  • Printf
    • Ang %s ug %c karon naggamit sa textwidth nga argumento sa pag-format sa gilapdon.
  • Profile
    • Ang CPU load profiling karon nagrekord sa metadata lakip na ang mga thread ug mga buluhaton. Profile.print() adunay bag-ong groupby argumento nga nagtugot kanimo sa paggrupo sa mga thread, mga buluhaton o mga subthreads/mga buluhaton, mga buluhaton/mga thread, ug mga thread ug mga argumento sa mga buluhaton aron mahatagan og pagsala. Dugang pa, ang porsyento sa paggamit karon gitaho sa kinatibuk-an o matag hilo, depende kung ang hilo walay trabaho o wala sa matag sample. Profile.fetch() naglakip sa bag-ong metadata sa default. Alang sa atrasado nga pagkaangay sa mga eksternal nga konsumidor sa data sa profiling, mahimo kini nga dili iapil pinaagi sa pagpasa sa include_meta=false.
    • Ang bag-ong Profile.Allocs module nagtugot kanimo sa pag-profile sa mga alokasyon sa memorya. Usa ka stack trace sa matang ug gidak-on sa matag alokasyon sa memorya ang natala, ug ang sample_rate nga argumento nagtugot sa usa ka ma-configure nga gidaghanon sa mga alokasyon nga malaktawan, nga makapakunhod sa performance sa overhead.
    • Ang pirmi nga gidugayon nga CPU profiling mahimo nang ipadagan sa tiggamit samtang ang mga buluhaton nagdagan nga wala una gikarga ang profile, ug ang taho ipakita samtang nagdagan. Sa MacOS ug FreeBSD, pindota ang ctrl-t o tawagi ang SIGINFO. Alang sa ubang mga plataporma, i-aktibo ang SIGUSR1, i.e. % pagpatay -USR1 $julia_pid. Dili kini magamit sa Windows.
  • PAGBALIK
    • Gisuportahan na karon sa RadioMenu ang dugang nga mga shortcut sa keyboard alang sa direkta nga pagpili sa mga kapilian.
    • Ang pagkasunod-sunod nga "?(x, y" nga gisundan sa pagpindot sa TAB nagpakita sa tanan nga mga pamaagi nga matawag nga adunay mga argumento x, y, .... y " gilimitahan ang pagpangita sa "MyModule". Ang pagpindot sa TAB nanginahanglan nga labing menos usa ka argumento sa usa ka tipo nga mas espesipiko kay sa Bisan unsa. O gamita ang SHIFT-TAB imbes nga TAB aron tugutan ang bisan unsang katugbang nga mga pamaagi.
    • Ang bag-ong global variable err nagtugot kanimo sa pagkuha sa pinakabag-o nga eksepsiyon, susama sa kinaiya sa ans nga adunay katapusang tubag. Ang pagsulod sa sayop nagpatik pag-usab sa impormasyon sa eksepsiyon.
  • SparseArrays
    • Gibalhin ang SparseArrays code gikan sa Julia repository ngadto sa external SparseArrays.jl repository.
    • Ang bag-ong concatenation naglihok sparse_hcat, sparse_vcat, ug sparse_hvcat nagbalik sa usa ka SparseMatrixCSC type bisan unsa pa ang mga tipo sa input nga argumento. Kini nahimong gikinahanglan aron mahiusa ang mekanismo sa pag-gluing sa mga matrice human sa pagbulag sa LinearAlgebra.jl ug SparseArrays.jl code.
  • logging
    • Ang standard nga lebel sa pag-log BelowMinLevel, Debug, Info, Warn, Error ug AboveMaxLevel karon gi-eksport gikan sa standard Logging library.
  • Unicode
    • Gidugang ang function sa isequal_normalized aron masusi ang pagkaparehas sa Unicode nga wala’y klaro nga paghimo og normal nga mga kuwerdas.
    • Gidawat na karon sa Unicode.normalize function ang charttransform keyword, nga magamit sa paghatag ug custom nga character mappings, ug ang Unicode.julia_chartransform function gihatag usab aron makopya ang mapping nga gigamit kung ang Julia parser nag-normalize sa mga identifier.
  • pagsulay
    • Ang '@test_throws "pipila ka mensahe" triggers_error()' magamit na aron sulayan kung ang gipakita nga sayup nga teksto adunay usa ka "pipila ka mensahe" nga sayup, bisan unsa pa ang piho nga tipo sa eksepsiyon. Gisuportahan usab ang mga regular nga ekspresyon, mga lista sa string, ug pagpares.
    • @testset foo() pwede na magamit sa paghimo ug test set gikan sa gihatag nga function. Ang ngalan sa test case mao ang ngalan sa function nga gitawag. Ang gitawag nga function mahimong adunay @test ug uban pang mga kahulugan sa @testset, lakip ang mga tawag sa ubang mga function, samtang girekord ang tanan nga intermediate nga resulta sa pagsulay.
    • Ang TestLogger ug LogRecord karon gi-eksport gikan sa standard Test library.
  • Gipahat
    • Gisuportahan na karon sa SSHManager ang mga thread sa trabahante nga adunay csh/tcsh wrapper pinaagi sa addprocs() nga pamaagi ug ang shell=:csh parameter.
  • Uban pang mga pagbag-o
    • Ang GC.enable_logging(tinuod) mahimong gamiton sa pag-log sa matag operasyon sa pagkolekta sa basura uban sa oras ug gidaghanon sa memorya nga nakolekta.

Source: opennet.ru

Idugang sa usa ka comment