Julia 1.9 programming language anaa

Ang pagpagawas sa Julia 1.9 programming language gimantala, nga naghiusa sa mga kalidad sama sa taas nga performance, suporta alang sa dinamikong pag-type ug built-in nga mga 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.9:

  • Bag-ong mga bahin sa pinulongan
    • Tugoti ang mga assignment nga himoon sa laing module gamit ang "setproperty!(::Module, :: Symbol, x)".
    • Gitugotan ang daghang mga buluhaton nga wala sa katapusang posisyon. Pananglitan, ang kuwerdas “a, b…, c = 1, 2, 3, 4” iproseso ingong “a = 1; b…, = 2, 3; c = 4". Gidumala kini pinaagi sa Base.split_rest.
    • Ang single character literals karon nagsuporta sa parehas nga syntax sa string literals; mga. Ang syntax mahimong magrepresentar sa dili balido nga mga han-ay sa UTF-8, ingon nga gitugotan sa tipo sa Char.
    • Gidugang nga suporta alang sa Unicode 15 nga detalye.
    • Ang mga nested nga kombinasyon sa tuples ug ginganlan nga character tuples mahimo nang gamiton isip type parameters.
    • Bag-ong built-in nga mga function "getglobal (:: Module, :: Symbol [, order])" ug "setglobal!(::Module, :: Symbol, x [, order])" para sa pagbasa ug pagsulat lamang sa global variables. Ang getglobal nga pamaagi kinahanglan na karon nga gusto kaysa sa getfield nga pamaagi alang sa pag-access sa mga global variable.
  • Mga kausaban sa pinulongan
    • Ang "@invoke" nga macro nga gipaila sa bersyon 1.7 karon gi-eksport ug magamit na. Dugang pa, kini karon naggamit sa "Core.Typeof(x)" nga pamaagi kay sa "Bisan unsa" sa kaso diin ang tipo nga anotasyon wala iapil para sa "x" nga argumento. Kinahanglan kini aron masiguro nga ang mga tipo nga gipasa ingon nga mga argumento giproseso sa husto.
    • Gi-enable ang pag-eksport sa "invokelatest" function ug ang "@invokelatest" macro, nga gipaila sa bersyon 1.7.
  • Pag-ayo sa compiler/runtime
    • Mahinungdanon nga pagkunhod sa oras sa una nga pagpatay (TTFX - Oras sa una nga pagpatay). Ang pag-precompile sa usa ka package karon nagtipig sa lumad nga code sa "pkgimage", nga nagpasabot nga ang code nga namugna sa proseso sa precompilation dili na kinahanglan nga i-recompiled human makarga ang package. Ang paggamit sa pkgimages mode mahimong ma-disable gamit ang "--pkgimages=no" nga kapilian.
    • Ang nahibal-an nga quadratic complexity nga isyu sa type inference naayo na, ug ang inference naggamit og gamay nga memorya sa kinatibuk-an. Ang ubang mga edge case nga adunay awtomatik nga namugna nga tag-as nga mga function (sama sa ModelingToolkit.jl nga adunay partial differential equation ug dagkong causal models) mas paspas ang pag-compile.
    • Ang mga tawag nga adunay mga argumento nga walay konkreto nga mga tipo mahimo na nga Union-splitting optimized para sa injection o static nga resolusyon, bisan kung adunay daghang lainlain nga tipo nga mga kandidato alang sa pagpadala. Kini makapauswag sa pasundayag sa pipila ka mga sitwasyon diin ang mga tipo sa butang dili hingpit nga masulbad sa estadistika, pinaagi sa static nga pagsulbad sa "@nospecialize-d" nga mga site sa tawag ug paglikay sa pag-recompilation.
    • Ang tanang gamit sa @pure macro sa Base module gipulihan sa Base.@assume_effects.
    • Ang mga tawag sa pag-invoke(f, invokesig, args...) nga adunay dili kaayo espesipikong mga tipo kay sa kasagarang gigamit para sa f(args...) dili na hinungdan nga ang package ma-recompiled.
  • Mga Kausaban sa Command Line Options
    • Sa Linux ug Windows, ang "--threads=auto" nga opsyon karon mosulay sa pagtino sa anaa nga gidaghanon sa mga processor base sa CPU affinity, usa ka maskara nga kasagarang gibutang sa HPC ug cloud environment.
    • Ang "--math-mode=fast" parameter gi-disable, imbes nga kini girekomendar nga gamiton ang "@fastmath" macro, nga tin-aw nga gihubit nga semantics.
    • Ang opsyon nga "--threads" anaa na sa format nga "auto | N[,awto|M]", diin ang M nagpaila sa gidaghanon sa interactive nga mga hilo nga himoon (karon ang awto nagpasabot ug 1).
    • Gidugang nga opsyon "—heap-size-hint=" ", nga nagtakda sa threshold pagkahuman magsugod ang aktibo nga pagkolekta sa basura. Ang gidak-on mahimong espesipiko sa bytes, kilobytes (1000 KB), megabytes (300 MB), o gigabytes (1,5 GB).
  • Mga pagbag-o sa multithreading
    • Ang "Threads.@spawn" karon adunay usa ka opsyonal nga unang argumento nga adunay bili ": default" o ": interactive". Ang usa ka interactive nga buluhaton nanginahanglan gamay nga latency sa pagtubag ug gidisenyo nga mubo o kanunay nga gihimo. Ang mga interactive nga buluhaton modagan sa interactive nga mga hilo kung kini gitino kung nagsugod si Julia.
    • Ang mga thread nga nagdagan sa gawas sa Julia runtime (sama sa gikan sa C o Java) makatawag na sa Julia code gamit ang "jl_adopt_thread". Awtomatiko kini nga mahitabo kung mosulod si Julia code pinaagi sa "cfunction" o ang "@ccallable" entry point. Ingon usa ka sangputanan, ang gidaghanon sa mga hilo mahimo nang mabag-o sa panahon sa pagpatuman.
  • Bag-ong mga gimbuhaton sa librarya
    • Bag-ong function "Iterators.flatmap".
    • Bag-ong function "pkgversion (m:: Module)" aron makuha ang bersyon sa package nga nagkarga sa gihatag nga module, parehas sa "pkgdir (m:: Module)".
    • Bag-ong function nga "stack(x)" nga nag-generalize sa "reduce(hcat, x::Vector{<:Vector})" sa bisan unsang dimensyon ug gitugotan ang bisan unsang iterator sa mga iterator. Ang "stack(f, x)" nga pamaagi nag-generalize sa "mapreduce(f, hcat, x)" ug mas episyente.
    • Bag-ong macro alang sa pag-analisar sa gigahin nga memorya "@allocations", susama sa "@allocated", gawas nga kini nagbalik sa gidaghanon sa mga alokasyon sa memorya, kay sa kinatibuk-ang gidak-on sa gigahin nga memorya.
  • Bag-ong mga bahin sa librarya
    • Ang "RoundFromZero" karon nagtrabaho alang sa mga tipo gawas sa "BigFloat".
    • Ang "Dict" mahimo nang manu-manong pakunhuran gamit ang "sizehint!"
    • Ang "@oras" karon gilain nga nagtino sa porsyento sa oras nga gigugol sa pag-recompile nga dili balido nga mga pamaagi.
  • Mga pagbag-o sa standard library
    • Giayo ang isyu sa concurrency sa mga pamaagi sa pag-uli alang sa Dict ug uban pang nakuha nga mga butang sama sa mga yawe (:: Dict), mga kantidad (:: Dict) ug Set. Kini nga mga pamaagi sa pag-uli mahimo na nga tawagan sa usa ka Dict o Set nga managsama alang sa usa ka walay kinutuban nga gidaghanon sa mga hilo, basta wala’y mga aksyon nga nagbag-o sa diksyonaryo o set.
    • Ang pagsalikway sa usa ka predicate function "!f" karon nagbalik sa usa ka composite function "(!) ∘ f" imbes sa usa ka anonymous function.
    • Ang mga function sa dimensyon slice karon nagtrabaho sa daghang mga dimensyon: "eachslice", "eachrow" ug "eachcol" nagbalik sa usa ka "Slices" nga butang nga nagtugot sa pagpadala aron makahatag labi ka episyente nga mga pamaagi.
    • Gidugang ang "@kwdef" nga macro sa publiko nga API.
    • Giayo ang usa ka isyu sa han-ay sa mga operasyon sa "fld1".
    • Ang paghan-ay karon kanunay nga lig-on sa panahon (QuickSort gidesinyo pag-usab).
    • Ang "Base.splat" gi-eksport na karon. Ang pagbalik nga kantidad usa ka "Base.Splat" nga tipo kaysa usa ka anonymous nga function, nga gitugotan kini nga ma-output nga maayo.
  • Tagdumala sa package
    • "Mga Extension sa Pakete": Suporta sa pagkarga sa snippet sa code gikan sa ubang mga pakete nga gikarga sa sesyon ni Julia. Ang aplikasyon susama sa "Requires.jl" nga pakete, apan ang pre-compilation ug mga setting compatibility gisuportahan.
  • LinearAlgebra Library
    • Tungod sa risgo sa kalibog sa element-wise division, gitangtang ang "a/b" ug "b\a" nga mga pamaagi nga adunay scalar "a" ug vector "b", nga katumbas sa "a * pinv(b)".
    • Ang pagtawag sa BLAS ug LAPACK karon naggamit sa "libblastrampoline (LBT)". Ang OpenBLAS gihatag pinaagi sa default, apan ang paghimo sa imahe sa sistema sa ubang mga librarya sa BLAS/LAPACK dili suportado. Hinunoa, girekomendar nga gamiton ang mekanismo sa LBT aron mapulihan ang BLAS/LAPACK sa laing kasamtangan nga set sa mga librarya.
    • Ang "lu" nagsuporta sa bag-ong matrix rotation strategy, "RowNonZero()", nga nagpili sa unang non-zero rotation nga elemento para gamiton sa bag-ong arithmetic type ug para sa training purposes.
    • Ang "normalize (x, p = 2)" karon nagsuporta sa bisan unsang normal nga vector space "x", lakip ang mga scalar.
    • Ang default nga gidaghanon sa mga BLAS nga mga thread parehas na karon sa gidaghanon sa mga CPU thread sa ARM nga mga arkitektura ug katunga sa gidaghanon sa mga CPU nga mga thread sa ubang mga arkitektura.
  • Printf: Gibuhat pag-usab ang mga mensahe sa sayop alang sa sayop nga pagkaporma sa mga kuwerdas para sa mas maayong pagkabasa.
  • Profile: Bag-ong function "Profile.take_heap_snapshot(file)", nga nagsulat sa usa ka file sa JSON-based ".heapsnapshot" format nga gisuportahan sa Chrome.
  • Random: randn ug randexp karon nagtrabaho alang sa bisan unsang AbstractFloat type nga naghubit sa rand.
  • PAGBALIK
    • Ang pagpindot sa "Alt-e" key combination karon magbukas sa kasamtangang input sa editor. Ang sulod (kon giusab) ipatuman kon mogawas ka sa editor.
    • Ang kasamtangan nga konteksto sa module nga aktibo sa REPL mahimong mausab (Main sa default) gamit ang function "REPL.activate(::Module)" o pinaagi sa pagsulod sa module sa REPL ug pagpindot sa yawe nga kombinasyon "Alt-m".
    • Ang "numbered prompt" mode, nga nag-imprinta sa mga numero alang sa matag input ug output ug nagtipig sa mga score nga resulta sa Out, mahimong ma-activate gamit ang "REPL.numbered_prompt!()".
    • Ang pagkompleto sa tab nagpakita nga magamit nga mga argumento sa keyword.
  • SuiteSparse: Gibalhin ang code alang sa "SuiteSparse" solver ngadto sa "SparseArrays.jl". Ang mga solver karon gi-eksport na usab sa "SuiteSparse.jl".
  • SparseArrays
    • Ang mga solver sa "SuiteSparse" anaa na karon isip "SparseArrays" nga mga submodules.
    • Ang UMFPACK ug CHOLMOD thread protection modes gipauswag pinaagi sa pagwagtang sa global variables ug paggamit sa mga kandado. Daghang sinulid nga "ldiv!" Ang mga butang nga UMFPACK mahimo nang ipatuman nga luwas.
    • Ang eksperimento nga function nga "SparseArrays.allowscalar(::Bool)" nagtugot kanimo sa pag-disable o pag-enable sa scalar indexing sa mga sparse arrays. Kini nga function gidisenyo aron makit-an ang random scalar indexing sa "SparseMatrixCSC" nga mga butang, nga usa ka sagad nga gigikanan sa mga problema sa pasundayag.
  • Bag-ong failsafe mode para sa mga test suites nga mohunong sa usa ka test run sa sayo kung adunay kapakyasan o sayup. Itakda pinaagi sa “@testset kwarg failfast=true” o “export JULIA_TEST_FAILFAST=true”. Kini usahay gikinahanglan sa CI run aron makadawat og mga mensahe sa sayop nga sayo.
  • Mga Petsa: Ang walay sulod nga mga kuwerdas dili na sayop nga gi-parse isip balido nga "DateTime", "Dates" o "Times" values ​​ug imbes ilabay ang "ArgumentError" sa mga constructor ug parsing, samtang ang "tryparse" walay ibalik.
  • Giapod-apod ang Pakete
    • Ang configuration sa package (aktibong proyekto, "LOAD_PATH", "DEPOT_PATH") kay gipakaylap na kung magdugang ug lokal nga mga proseso sa trabahante (pananglitan gamit ang "addprocs(N::Int)" o gamit ang command line flag "--procs=N").
    • Ang "addprocs" alang sa mga proseso sa lokal nga trabahante nagdawat na karon sa argumento nga ginganlag "env" aron ipasa ang mga variable sa palibot sa mga proseso sa trabahante.
  • Unicode: "graphemes(s, m:n)" ibalik ang substring gikan sa mth ngadto sa nth graphemes sa "s".
  • Ang DelimitedFiles nga pakete gitangtang gikan sa mga librarya sa sistema ug karon giapod-apod isip usa ka bulag nga pakete nga kinahanglan nga klaro nga i-install aron magamit.
  • Mga eksternal nga pagsalig
    • Sa Linux, ang bersyon sa libstdc++ system library awtomatik nga namatikdan ug, kung kini mas bag-o, kini gikarga. Ang daan nga libstdc ++ built-in nga kinaiya sa pagkarga, bisan unsa pa ang bersyon sa sistema, mahimong ibalik pinaagi sa pagtakda sa variable sa palibot nga "JULIA_PROBE_LIBSTDCXX = 0".
    • Gikuha ang "RPATH" gikan sa julia binary, nga makaguba sa mga librarya sa Linux nga mapakyas sa paghubit sa variable nga "RUNPATH".
    • Mga pagpaayo sa himan: Ang output sa "MethodError" ug mga pamaagi (pananglitan gikan sa "mga pamaagi(my_func)") karon giporma ug gikoloran pinasubay sa prinsipyo sa output sa mga pamaagi sa usa ka stack trace.

    Source: opennet.ru

Idugang sa usa ka comment