Fa'asa'olotoina le gagana fa'apolokalame Julia 1.8

O loʻo avanoa le faʻasalalauga o le Julia 1.8 polokalame gagana, tuʻufaʻatasia ia uiga e pei o le maualuga o le faʻatinoga, lagolago mo le faʻamalosia o le taina ma mea faigaluega faʻapipiʻi mo polokalame tutusa. O le syntax a Julia e latalata ile MATLAB, faʻaano mai ni elemene mai Ruby ma Lisp. O le metotia faʻaogaina o manoa e faʻamanatu ai Perl. Ole fa'ailoga ole poloketi o lo'o tufatufaina i lalo ole laisene MIT.

O itu taua o le gagana:

  • Faʻatinoga maualuga: o se tasi o sini autu o le poloketi o le ausia lea o faʻatinoga latalata i polokalame C. O le Julia compiler e faʻavae i luga o le galuega a le LLVM poloketi ma faʻatupuina le faʻaogaina o le masini faʻapitoa mo le tele o faʻavae faʻatulagaina;
  • Lagolagoina faʻasologa polokalame eseese, e aofia ai elemene o mea faʻapitoa ma polokalame faʻatino. O le faletusi masani e tuʻuina atu, faʻatasi ai ma isi mea, galuega mo le asynchronous I/O, faʻatonutonuina o faʻagasologa, logging, faʻamatalaga, ma le puleaina o pusa;
  • Ta'aiga fa'amalosi: e le mana'omia e le gagana fa'amatalaga manino o ituaiga mo fesuiaiga, e tutusa ma gagana fa'apolokalame tusitusi. Fa'afeso'ota'i auala lagolagoina;
  • Filifiliga gafatia e faʻamaonia manino ai ituaiga;
  • O se fa'asologa lelei mo fa'akomepiuta numera, fa'asaienisi komepiuta, a'oa'oga masini, ma fa'amatalaga fa'amatalaga. Lagolago mo le tele o ituaiga faʻamaumauga numera ma meafaigaluega mo le faʻatusatusaina o faʻatusatusaga.
  • Le mafai ona vala'au sa'o galuega mai faletusi C e aunoa ma ni fa'aopoopoga fa'aopoopo.

Suiga tetele ile Julia 1.8:

  • Fa'aaliga gagana fou
    • Fa'ato'aga o se fa'asologa e mafai ona fa'aogaina e mafai nei ona fa'aigoaina e avea ma fa'amaumau e taofia ai mai le suia ma fa'ataga ai le fa'alelei.
    • E mafai ona fa'aopoopo i ai fa'amatalaga i le lalolagi.
    • E mafai ona fai fa'asologa gaogao n-dimensional e fa'aaoga ai le tele o semicolons i totonu o puipui sikuea, mo se fa'ata'ita'iga "[;;;]" fa'atupuina se laina 0x0x0.
    • Fa'ata'ita'i poloka e mafai nei ona i ai se isi poloka, lea e fa'atino vave pe a uma le tino autu pe a leai ni mea sese na lafo.
    • @inline ma @noinline e mafai ona tuʻuina i totonu o se tino o galuega, faʻatagaina oe e faʻamaonia se galuega e le o taʻua.
    • @inline ma @noinline e mafai nei ona faʻaoga i se galuega i totonu o se nofoaga valaʻau poʻo poloka e faʻamalosia ai le faʻapipiʻiina o telefoni feaveaʻi (pe le aofia).
    • ∀, ∃ ma ∄ ua fa'atagaina e fai ma mataitusi e iloagofie ai.
    • Faʻaopoopo le lagolago mo Unicode 14.0.0 faʻamatalaga.
    • O le Module (: igoa, sese, sese) e mafai ona faʻaogaina e fatu ai se module e le o iai ni igoa, e le faʻaulufale mai le Base poʻo le Core, ma e leai se faʻamatalaga ia te ia lava.
  • Suiga i le gagana
    • Fa'ato'a faia galuega mea faitino (@spawn, @async, etc.) ua i ai nei le lalolagi_age mo metotia mai le matua Task pe a faia, e mafai ai mo le faʻatinoina lelei. O lo'o avanoa le filifiliga fa'atosina muamua e fa'aaoga ai le Base.invokelatest method.
    • Unicode le paleni fa'atonuga fa'avasega fa'asologa ua fa'asaina nei ile manoa ma fa'amatalaga e 'alofia ai tui.
    • Base.ifelse ua faʻamatalaina nei o se galuega lautele nai lo le fausiaina, faʻatagaina afifi e faʻalautele lona faʻamatalaga.
    • O tofiga uma i se fesuiaiga o le lalolagi i le taimi nei e muamua alu i se valaau e liliu (So'o se, x) po'o le liliu mai (T, x) pe a fai o le fesuiaiga o le lalolagi na fa'ailoa mai o le ituaiga T. A'o le'i fa'aogaina suiga o le lalolagi, ia mautinoa o le suiga le suia (So'o se , x) === x e moni i taimi uma, a leai e mafai ona taitai atu ai i ni amioga e le'i mafaufauina.
    • O galuega fa'apipi'i ua tutusa nei ma galuega fa'apitoa ma e mafai ona fa'avasegaina fa'apolokalame e fa'aaoga ai metotia.
  • Fa'aleleia o le fa'apipi'i/taimi ta'avale
    • Fa'aitiitiga taimi fa'afa'asolo e tusa ma le 25%.
    • O le LLVM-faʻavae tuʻufaʻatasia ua vavae ese mai le faletusi taimi i totonu o se faletusi fou, libjulia-codegen. E utaina e ala i le faaletonu, o lea e le tatau ona i ai ni suiga i le taimi o le faʻaaogaina masani. I fa'agaioiga e le mana'omia se tu'ufa'atasia (mo se fa'ata'ita'iga, ata fa'atulagaina o lo'o fa'apipi'iina uma ai tulafono talafeagai), o lenei faletusi (ma lona fa'alagolago i le LLVM) e mafai lava ona fa'a'a'esea.
    • E mafai nei ona maua se fa'ai'uga tu'aiga e ala i le tu'uina atu o se finauga i se metotia. Mo se faʻataʻitaʻiga, mo Base.ifelse(isa(x, Int), x, 0) toe foʻi ::Int tusa lava pe le iloa le ituaiga x.
    • SROA (Scalar Replacement of Aggregates) ua faʻaleleia atili: faʻateʻaina le getfield calls faʻatasi ai ma fanua faʻaauau i le lalolagi atoa, faʻaumatia fausaga faʻaogaina ma fanua e leʻi amataina, faʻaleleia le faʻatinoga ma le faʻaogaina o telefoni getfield.
    • Fa'ailoga fa'atusa e maua ai a'afiaga eseese—a'afiaga ma le le pa'u. O faʻasalalauga faifaipea e amanaia, lea e faʻaleleia atili ai le faʻatinoina o taimi. I nisi tulaga, mo se faʻataʻitaʻiga, telefoni i galuega e le mafai ona faʻaogaina ae le afaina ai le taunuuga o le a lafoai i le taimi o le taʻavale. O tulafono mo a'afiaga e mafai ona fa'asolo lima ile fa'aogaina ole Base.@assume_effects macro.
    • Fa'atasia muamua (fa'atasi ai ma fa'atonuga fa'apitoa muamua po'o fa'atonuga o galuega) ua fa'asaoina nei le tele o fa'ailoga fa'avasegaina, ma fa'atosina vave ai le fa'atinoina o le taimi muamua. So'o se auala fou/ituaiga tu'ufa'atasiga e mana'omia e lau afifi, e tusa lava po'o fea na fa'amalamalamaina ai na metotia, e mafai nei ona fa'apipi'i i totonu o le faila fa'apipi'i pe a vala'auina i se metotia e patino i lau afifi.
  • Suiga i Filifiliga Laina Poloaiga
    • O le amio fa'aletonu mo le mataituina @inbounds ta'utinoga ua avea nei ma filifiliga ta'avale i le "--check-bounds=ioe|leai|taavale".
    • Filifiliga fou "--strip-metadata" e aveese ai docstrings, faʻamatalaga nofoaga faʻapogai, ma igoa fesuiaʻi faʻapitonuʻu pe a fatuina se ata faʻaoga.
    • Filifiliga fou "--strip-ir" e faʻataga ai le tagata tuʻufaʻatasia e aveese le faʻailoga o le faʻasologa o punaʻoa pe a fausia le ata o le faiga. O le ata e maua mai o le a na'o le aoga pe'a fa'aoga "--compile=all" pe afai o lo'o fa'apipi'iina uma le code mana'omia.
    • Afai o le uiga "-" o loʻo faʻamaonia nai lo le igoa faila, ona faitau lea o le code executable mai le faʻaoga masani.
  • Suiga lagolago lagolago tele
    • Threads.@threads e le mafai ona fa'aogaina le filifiliga fou o le fa'atulagaina :dynamic, lea e ese mai le faiga muamua i lena fa'asologa o le a fa'atulagaina fa'amalosi i filo o lo'o avanoa faigaluega nai lo le tu'uina atu i filo ta'itasi. O lenei faiga e mafai ai ona sili atu le tufatufaina o faʻamaufaʻailoga faʻatasi ma @spawn ma @threads.
  • Galuega fou faletusi
    • eachsplit(str) e fa'atino le vaeluaga(str) fa'atele taimi.
    • allequal(itr) e faʻataʻitaʻi pe tutusa uma elemene i totonu o le suʻega.
    • hardlink(src, dst) e mafai ona fa'aoga e fai ai so'oga faigata.
    • setcpuaffinity(cmd, cpus) e faʻapipiʻi le fesoʻotaʻiga o le gaioiga autu i le faʻalauiloaina o faiga.
    • diskstat(path=pwd()) e maua ai fuainumera fa'amaumauga.
    • Fou @showtime macro e faʻaalia uma le laina o loʻo iloiloina ma le lipoti @time.
    • LazyString ma lazy"str" ​​​​macro ua faaopoopo e lagolago ai le paie o le fausiaina o savali sese i ala sese.
    • Fa'amauina se fa'afitauli fa'atasi i le Dict ma isi mea na maua mai e pei o ki(::Dict), tau(::Dict) ma Set. E mafai nei ona vala'au metotia fa'ata'ita'i ile lomifefiloi po'o se seti, pe a leai ni vala'au e suia ai le lomifefiloi po'o seti.
    • @time ma @timev o loʻo i ai nei se faʻamatalaga e filifili ai, e mafai ai ona e faʻamatalaina le puna o lipoti taimi, mo se faʻataʻitaʻiga. @taimi "Evaluating foo" foo().
    • 'ese'ese e mana'omia le taofi po'o le umi e na'o lona fa'aupuga fa'aupuga.
    • sa'o ma setprecision ua talia nei le faavae o se upu autu
    • TCP socket objects ua tuʻuina atu nei se auala vavalalata ma lagolagoina le faʻaogaina o le afa-tatala ala.
    • ua talia nei e extrema se finauga init.
    • Iterators.countfrom ua talia nei so'o se ituaiga e fa'amatala ai se + metotia.
    • @time ua tuʻuina atu nei le% o le taimi e faʻaalu ai le toe faʻaleleia o metotia ma suiga suiga.
  • Suiga o le Faletusi masani
    • Ki ma le taua E leai se mea ua aveesea nei mai le siosiomaga i addenv.
    • Iterators.reverse (ma mulimuli) lagolago laina ta'itasi.
    • O le umi o galuega mo vaega o nisi ituaiga e le o toe siakiina mo le tele o numera. O lo'o avanoa se galuega fou, checked_length, o lo'o i ai le fa'atonuga o le fa'aliliuina o mea. Afai e mana'omia, fa'aoga le SaferIntegers.jl e fau ai le ituaiga laina.
    • O le Iterators.Reverse iterator e fa'atino ia fa'aliliuga ta'itasi pe a mafai.
  • Pule o Paketi
    • Fa'ailoga fou ⌃ ma ⌅ i tafatafa o afifi i le tulaga “pkg>” lea e maua ai fa'aliliuga fou. ⌅ fa'ailoa mai e le mafai ona fa'apipi'i ni fa'aliliuga fou.
    • Fou tuai::Bool finauga i le Pkg.status (--ua tuai po'o le -o i le REPL mode) e fa'aalia ai fa'amatalaga e uiga i afifi mai lomiga muamua.
    • Fetufa'iga fou :: Fa'asagaga Bool i le Pkg.status (--compat po'o le -c ile REPL mode) e fa'aalia ai so'o se [compat] fa'amatalaga i Project.toml.
    • Faiga fou "pkg>compat" (ma le Pkg.compat) mo le setiina o fa'amaumauga o feso'ota'iga. Tuuina atu se fa'atonu feso'ota'i e ala i le "pkg>compat" po'o le fa'atonu sa'o o fa'amaumauga e ala i le "pkg>Foo 0.4,0.5", lea e mafai ona utaina fa'amaumauga o iai nei e ala i le fa'amae'aina o le lisi. O lona uiga, "pkg> compat Fo " e otometi lava ona fa'afouina i le "pkg>Foo 0.4,0.5" e fa'ataga ai le fa'asa'oina o se fa'amatalaga o lo'o iai.
    • Ua na'o le taumafai o le Pkg e la'u mai afifi mai se 'upega tafa'ilagi pe afai o lo'o mata'ituina e le 'au'aunaga le resitala o lo'o iai le afifi.
    • O le a tu'uina atu nei e le Pkg.instantiate se lapata'iga pe a le fetaui le Project.toml ma le Manifest.toml. E faia lenei mea e fa'avae i luga o se fa'amaufa'ailoga o fa'amaumauga a le poloketi ma fa'amaumauga (o isi fanua e le amana'ia) i le fa'aaliga pe a fo'ia, ina ia mafai ai ona iloa so'o se suiga i le Project.toml deps po'o fa'amaumauga compat e aunoa ma le toe fo'ia.
    • Afai e le mafai e le "pkg>add" ona maua se afifi ma le igoa ua tu'uina atu, o le a fautuaina nei afifi e tutusa igoa e mafai ona fa'aopoopo.
    • O le lomiga o julia o lo'o teuina i le fa'aaliga e le o toe aofia ai le numera fau, o lona uiga o le matai o le a tusia nei o le 1.9.0-DEV.
    • Fa'ato'a fa'ata'ita'i le su'ega "pkg>" o le a sili atu ona iloa i taimi uma, ma o le a toe fa'afo'i sa'o ile REPL.
  • InteractiveUtils
    • New @time_imports macro e lipoti ai le taimi na faʻaalu i le faʻaulufaleina mai o afifi ma o latou faʻalagolago, faʻamaonia le tuʻufaʻatasia ma toe tuʻufaʻatasia le taimi o se pasene o oloa faaulufale mai.
  • Algebra laina
    • Ua lagolagoina nei e le submodule BLAS tulaga-2 BLAS spr!.
    • O le LinearAlgebra.jl standard library ua tuto'atasi nei mai le SparseArrays.jl, e le gata i le source code ma le iunite su'ega vaaiga. O le i'uga, ua le toe fa'afo'i mai fa'asologa fa'apitoa (implicitly) i metotia mai LinearAlgebra fa'aoga i mea Fa'avae po'o LinearAlgebra. Aemaise lava, o lenei mea e taʻitaʻia ai suiga faʻaletonu nei:
      • O fa'atasiga e fa'aaoga ai matrices "sparse" fa'apitoa (fa'ata'ita'iga diagonal) ua toe fa'afo'i mai matrices mafiafia; O se taunuuga, o le D1 ma le D2 fanua o mea SVD na faia e getproperty telefoni ua avea nei ma matrices mafiafia.
      • Ole auala tutusa(::SpecialSparseMatrix, ::Type, ::Dims) e toe maua ai se matrix null mafiafia. O se taunuuga, o oloa e lua-, tolu-, ma le tutusa matrices tridiagonal ma le tasi ma le isi e taitai atu ai i le fausiaina o se matrix mafiafia. E le gata i lea, o le fausiaina o matrices tutusa ma ni finauga se tolu mai matrices faapitoa "sparse" mai matrices (non-static) ua le manuia ona o le "zero(::Type{Matrix{T}})".
  • Printf
    • %s ma %c ua fa'aaoga nei le finauga o le textwidth e fa'atulaga ai le lautele.
  • tino mai
    • O le fa'avasegaina o uta o le CPU ua fa'amauina nei metadata e aofia ai filo ma galuega. Profile.print() o lo'o iai se fa'aupuga fou e ala i finauga e mafai ai e oe ona fa'avasega filo, galuega po'o subthreads/tasks, galuega/filo, ma filo ma galuega finauga e tu'uina atu ai le filiga. E le gata i lea, o le pasene o le fa'aogaina o lo'o lipotia nei a le o se aotelega po'o le filo, e fa'atatau i le fa'aoga o le filo pe leai i fa'ata'ita'iga ta'itasi. Profile.fetch() e aofia ai le metadata fou ona o le faaletonu. Mo le fetaui i tua ma tagata faʻatau fafo o faʻamatalaga faʻamatalaga, e mafai ona faʻateʻaina e ala i le pasia o le include_meta=false.
    • O le fa'ailoga fou o le Profile.Allocs e mafai ai e oe ona fa'asoa fa'amatalaga manatua. E fa'amaumau se fa'aputuga o le ituaiga ma le lapopo'a o fa'asoaga manatua ta'itasi, ma o le fa'ata'ita'iga_rate e mafai ai ona fa'ase'e se numera fa'atulagaina o fa'asoa, fa'aitiitia ai le fa'atinoga i luga.
    • E mafai nei ona fa'atautaia e le tagata fa'aoga le umi o le fa'asologa o le CPU a'o fa'agasolo galuega e aunoa ma le utaina muamua o le fa'amatalaga, ma o le a fa'aalia le lipoti a'o tamo'e. I luga o MacOS ma FreeBSD, lolomi ctrl-t pe vala'au SIGINFO. Mo isi faʻavae, faʻagaoioia SIGUSR1, i.e. % fasioti -USR1 $julia_pid. E le maua lenei mea ile Windows.
  • TALI
    • Ua lagolagoina nei e le RadioMenu nisi ala pupuu keyboard mo filifiliga tuusa'o o filifiliga.
    • O le faasologa "?(x, y" sosoo ai ma le oomiina o le TAB o loʻo faʻaalia ai metotia uma e mafai ona taʻua i finauga x, y, .... (O se avanoa taʻutaʻua e taofia ai oe mai le ulufale atu i le auala fesoasoani.) "MyModule.?(x, y " fa'atapula'a le su'esu'ega i le "MyModule". Oomiina le TAB e mana'omia ai ia le itiiti ifo ma le tasi le finauga o se ituaiga e sili atu ona ma'oti nai lo So'o se.
    • Ole mea fou ole suiga ole lalolagi e mafai ai ona e maua se tuusaunoaga lata mai, e tutusa ma le amio a ans ma le tali mulimuli. O le fa'aofiina o mea sese e toe lolomi ai fa'amatalaga fa'apitoa.
  • SparseArrays
    • Siisii ​​le SparseArrays code mai le fale teuoloa Julia i le faleteuoloa SparseArrays.jl fafo.
    • Ole feso'ota'iga fou o lo'o galue sparse_hcat, sparse_vcat, ma sparse_hvcat toe fa'afo'i se ituaiga SparseMatrixCSC e tusa lava po'o le a le ituaiga o fa'amatalaga fa'aofi. Na tatau ona fa'amaopoopo le faiga mo le fa'apipi'i o matrices pe a uma ona tu'u'ese'ese le laina LinearAlgebra.jl ma SparseArrays.jl.
  • Faʻailoga
    • O tulaga fa'amauina masani BelowMinLevel, Debug, Info, Warn, Error ma AboveMaxLevel ua fa'atau atu nei mai le faletusi masani Logging.
  • Unicode
    • Fa'aopoopo isequal_normalized galuega e siaki ai le tutusa Unicode e aunoa ma le fauina manino o manoa masani.
    • O le Unicode.normalize galuega ua talia nei le upusitala charttransform, lea e mafai ona faaaoga e saunia ai mappings uiga masani, ma le Unicode.julia_chartransform galuega ua tuuina atu foi e toe gaosia le faafanua faaaogaina pe a le Julia parser normalizes identifiers.
  • suʻega
    • '@test_throws "some message" triggers_error()' ua mafai nei ona fa'aoga e su'e ai pe o lo'o i ai i le fa'aaliga fa'amatalaga sese se mea sese "se fe'au", e tusa lava po'o le a le ituaiga fa'apitoa. E lagolagoina fo'i fa'amatalaga masani, lisi o manoa, ma galuega fa'afetaui.
    • @testset foo() e mafai nei ona faʻaaoga e fai ai se seti suʻega mai se galuega tuʻuina atu. Ole igoa ole su'ega ole igoa ole galuega o lo'o vala'au. O le galuega e ta'ua e mafai ona aofia ai @test ma isi fa'auigaga @testset, e aofia ai mo vala'au i isi galuega, a'o fa'amauina uma i'uga o su'ega.
    • TestLogger ma LogRecord ua auina atu nei mai le faletusi masani Su'ega.
  • Tufatufaina
    • Ua lagolagoina nei e le SSHManager filo a tagata faigaluega ma se afifi csh/tcsh e ala i le auala addprocs() ma le atigi =:csh parameter.
  • Isi suiga
    • GC.enable_logging(true) e mafai ona fa'aoga e fa'amauina ai galuega fa'aputu ta'itasi ma le taimi ma le aofa'i o manatua e aoina.

puna: opennet.ru

Faaopoopo i ai se faamatalaga