Harshen Shirye-shiryen Julia 1.8 Saki

Sakin yaren shirye-shirye na Julia 1.8 yana samuwa, yana haɗa irin waɗannan halaye kamar babban aiki, goyan bayan bugu mai ƙarfi da kayan aikin da aka gina don tsara shirye-shirye. Juli's syntax yana kusa da MATLAB, yana aro wasu abubuwa daga Ruby da Lisp. Hanyar sarrafa kirtani tana tunawa da Perl. Ana rarraba lambar aikin a ƙarƙashin lasisin MIT.

Mabuɗin fasali na harshe:

  • Babban aiki: ɗaya daga cikin mahimman manufofin aikin shine cimma aiki kusa da shirye-shiryen C. Mai tarawa Julia ya dogara ne akan aikin aikin LLVM kuma yana samar da ingantacciyar lambar injin na asali don dandamali da yawa;
  • Yana goyan bayan sigogin shirye-shirye daban-daban, gami da abubuwan da suka dace da abu da shirye-shirye masu aiki. Madaidaicin ɗakin karatu yana ba da, a tsakanin sauran abubuwa, ayyuka don I/O asynchronous, sarrafa tsari, shiga, bayanin martaba, da sarrafa fakiti;
  • Buga mai ƙarfi: harshe baya buƙatar fayyace ma'anar nau'ikan masu canji, kama da rubutun harsunan shirye-shirye. Yana goyan bayan yanayin hulɗa;
  • Ikon zaɓi na ƙididdige nau'ikan a sarari;
  • Maƙasudin maƙasudi don ƙididdige ƙididdiga, lissafin kimiyya, koyan inji, da hangen nesa. Taimako ga nau'ikan bayanai na lambobi da yawa da kayan aiki don daidaita lissafin lissafi.
  • Ikon kiran ayyuka kai tsaye daga ɗakunan karatu na C ba tare da ƙarin yadudduka ba.

Babban canje-canje a cikin Julia 1.8:

  • Sabbin fasalolin harshe
    • Yanzu ana iya bayyana filaye na tsarin da za a iya canzawa a matsayin masu daidaitawa don hana canza su da ba da damar ingantawa.
    • Za a iya ƙara nau'in annotations zuwa masu canji na duniya.
    • Za'a iya ƙirƙira madaidaicin madaidaicin n-girma ta amfani da maɓalli masu yawa a cikin maƙallan murabba'i, misali "[;;;]" yana ƙirƙirar tsararrun 0x0x0.
    • Gwada tubalan na iya yanzu da zaɓin wani toshe, wanda ake aiwatarwa nan da nan bayan babban jiki idan ba a jefar da kurakurai ba.
    • @inline da @noinline za a iya sanya su cikin jikin aiki, yana ba ku damar bayyana aikin da ba a san su ba.
    • @inline da @noinline yanzu ana iya amfani da su zuwa wani aiki a wurin kira ko a cikin toshe don tilasta kiran aikin da ya dace a haɗa (ko a haɗa shi).
    • An ba da izinin ∀, ∃ da ∄ azaman haruffan ganowa.
    • Ƙara tallafi don ƙayyadaddun Unicode 14.0.0.
    • Za a iya amfani da hanyar Module (: suna, ƙarya, ƙarya) don ƙirƙirar ƙirar da ba ta ƙunshi sunaye ba, baya shigo da Base ko Core, kuma baya ƙunshe da ambaton kansa.
  • Canje-canje a cikin harshe
    • Sabbin abubuwan Aiki da aka ƙirƙira (@spawn, @async, da sauransu) yanzu suna da world_age don hanyoyin daga Ayyukan iyaye lokacin ƙirƙira, suna ba da izinin ingantaccen aiwatarwa. Akwai zaɓin kunnawa da ya gabata ta amfani da hanyar Base.invokelatest.
    • Unicode mara daidaito umarnin tsara tsarin bidirectional yanzu an hana su a cikin kirtani da sharhi don guje wa allura.
    • Base.ifelse yanzu an ayyana shi azaman aikin gama gari maimakon ginannen ciki, yana ba da damar fakitin fadada ma'anarsa.
    • Kowane aiki zuwa maɓalli na duniya yanzu yana farawa ta hanyar kira don canzawa (Kowane, x) ko maida (T, x) idan an ayyana canjin duniya na nau'in T ne. , x) === x koyaushe gaskiya ne, in ba haka ba yana iya haifar da halayen da ba a zata ba.
    • Ayyukan da aka gina a yanzu sun yi kama da ayyuka na gabaɗaya kuma ana iya ƙididdige shi ta hanyar yin amfani da hanyoyi.
  • Haɓaka haɗawa/lokacin aiki
    • An rage lokacin taya da kusan 25%.
    • An raba tushen LLVM daga ɗakin karatu na lokacin aiki zuwa sabon ɗakin karatu, libjulia-codegen. An ɗora shi ta tsohuwa, don haka kada a sami canje-canje yayin amfani na yau da kullun. A cikin turawa waɗanda basa buƙatar mai tarawa (misali, hotunan tsarin da aka riga aka haɗa duk mahimman lambobi), wannan ɗakin karatu (da LLVM ɗin sa) ana iya tsallake shi kawai.
    • Ƙididdigar nau'in yanayi yanzu yana yiwuwa ta hanyar ƙaddamar da hujja zuwa hanya. Misali, ga Base.ifelse(isa(x, Int), x, 0) ya dawo ::Int ko da ba a san nau'in x ba.
    • SROA (Scalar Replacement of Aggregates) an inganta: yana kawar da kiran da ake kira getfield tare da ci gaba da filayen duniya, yana kawar da tsarin da ba za a iya canzawa ba tare da filayen da ba a fara ba, yana inganta aiki da kuma kula da kiran filin da aka kafa.
    • Nau'in ƙaddamarwa yana bin tasirin tasiri daban-daban - illolin illa da rashin faduwa. Ana yin la'akari da yaɗawa na yau da kullun, wanda ke haɓaka aikin tattara-lokaci sosai. A wasu lokuta, alal misali, kira zuwa ayyuka waɗanda ba za a iya sa layi ba amma ba su shafi sakamakon ba za a yi watsi da su a lokacin aiki. Za a iya sake rubuta ƙa'idodin tasiri da hannu ta amfani da Base.@assume_effects macro.
    • Ƙaddamarwa (tare da ƙayyadaddun umarnin tattara bayanai ko ƙayyadaddun kayan aiki) yanzu yana adana ƙarin ƙayyadaddun lambar, yana haifar da saurin aiwatarwa na farko. Duk wata sabuwar hanya/nau'in haɗin da ake buƙata ta kunshin ku, ba tare da la'akari da inda aka ayyana waɗancan hanyoyin ba, yanzu ana iya adana su a cikin fayil ɗin da aka haɗawa idan an kira su ta hanyar da ke cikin kunshin ku.
  • Canje-canje zuwa Zaɓuɓɓukan Layin Umurni
    • Tsohuwar ɗabi'a don sa ido kan sanarwar @inbounds yanzu shine zaɓi na atomatik a cikin "--check-bounds=ye|a'a|autoto".
    • Sabon zaɓi na "--strip-metadata" don cire kirtani, bayanin wurin tushe, da sunaye masu canji na gida lokacin ƙirƙirar hoton tsarin.
    • Sabon zaɓi "--strip-ir" don ƙyale mai tarawa don cire matsakaiciyar lambar tushe lokacin gina hoton tsarin. Hoton da aka samu zai yi aiki ne kawai idan an yi amfani da "--compile=all" ko kuma idan an riga an haɗa duk lambar da ake buƙata.
    • Idan an ƙayyade harafin "-" maimakon sunan fayil, to ana karanta lambar da za a iya aiwatarwa daga daidaitaccen rafi na shigarwa.
  • Canje-canje na goyan bayan Multithreading
    • Threads.@threads ta tsohuwa yana amfani da sabon zaɓi na tsarawa:tsauri, wanda ya bambanta da yanayin da ya gabata a cikin cewa za a tsara tada jijiyoyi da ƙarfi a cikin zaren ma'aikata maimakon a sanya su zuwa kowane zaren. Wannan yanayin yana ba da damar mafi kyawun rarraba madaukai na gida tare da @spawn da @threads.
  • Sabbin ayyukan ɗakin karatu
    • kowane Split(str) don aiwatar da tsaga(str) sau da yawa.
    • allequal(itr) don gwada ko duk abubuwan da ke cikin iƙirari daidai suke.
    • Hardlink(src, dst) za a iya amfani dashi don ƙirƙirar hanyoyin haɗin kai.
    • setcpuaffinity (cmd, cpus) don saita kusancin core processor zuwa ayyukan da aka ƙaddamar.
    • diskstat(hanya=pwd()) don samun kididdigar diski.
    • Sabon @showtime macro don nuna duka layin da ake kimantawa da kuma rahoton @time.
    • LazyString da lazy"str" ​​macro an ƙara su don tallafawa aikin malalacin ginin saƙon kuskure a hanyoyin kuskure.
    • Kafaffen batun daidaitawa a cikin Dict da sauran abubuwan da aka samo kamar maɓalli (:: Dict), ƙima (:: Dict) da Saiti. Ana iya kiran hanyoyin maimaitawa a yanzu akan ƙamus ko saiti, muddin babu kiran da zai gyara ƙamus ko saiti.
    • @time da @timev yanzu suna da bayanin zaɓi na zaɓi, yana ba ku damar bayyana tushen rahotannin lokaci, misali. @time "Kimanin foo" foo().
    • kewayo yana ɗaukar tsayawa ko tsayi azaman mahawararsa kaɗai.
    • daidaito da daidaito yanzu sun karɓi tushe azaman maɓalli
    • Abubuwan soket na TCP yanzu suna ba da hanyar rubutowa kuma suna goyan bayan amfani da yanayin buɗe rabin-bude.
    • extrema yanzu ya yarda da hujjar init.
    • Iterators.count daga yanzu yana karɓar kowane nau'in da ke bayyana hanyar +.
    • @time yanzu yana keɓance % na lokacin da aka kashe don tattara hanyoyin tare da canza nau'ikan.
  • Daidaitaccen Canje-canje na Laburare
    • Maɓallai masu ƙima Babu wani abu da aka cire yanzu daga mahalli a cikin addv.
    • Iterators.reverse (sabili da haka na ƙarshe) yana goyan bayan kowane layi.
    • Tsawon aikin jeri na wasu nau'ikan ba ya sake bincika lamba don cikar lamba. Wani sabon aiki, checked_length, yana samuwa; ya ƙunshi dabarun sarrafa bit. Idan ya cancanta, yi amfani da SaferIntegers.jl don gina nau'in kewayon.
    • The Iterators.Reverse iterator yana aiwatar da jujjuyawar kowane fihirisa idan zai yiwu.
  • Fakitin Manager
    • Sabbin alamomin ⌃ da ⌅ kusa da fakiti a cikin yanayin "pkg>" wanda sabbin nau'ikan ke samuwa. ⌅ yana nuna cewa ba za a iya shigar da sabbin nau'ikan ba.
    • Sabuwar tsohuwar :: gardamar Bool zuwa Pkg.status (--tsohuwar ko -o a cikin yanayin REPL) don nuna bayanai game da fakiti daga sigar da ta gabata.
    • Sabuwar compat:: gardamar Bool zuwa Pkg.status (--compat ko -c a cikin yanayin REPL) don nuna kowane shigarwar [compat] a cikin Project.toml.
    • Sabon yanayin "pkg>compat" (da Pkg.compat) don saita shigarwar dacewar aikin. Yana ba da editan hulɗa ta hanyar "pkg>compat" ko sarrafa rikodin kai tsaye ta hanyar "pkg>Foo 0.4,0.5", wanda zai iya ɗaukar bayanan yanzu ta hanyar kammala shafin. Wato, "pkg> compat Fo" ana sabunta shi ta atomatik zuwa "pkg> Foo 0.4,0.5" ta yadda za a iya gyara shigarwar data kasance.
    • Pkg yanzu yana ƙoƙarin zazzage fakiti daga uwar garken fakiti ne kawai idan uwar garken tana sa ido kan rajistar da ke ɗauke da kunshin.
    • Pkg.instantiate yanzu zai ba da gargadi lokacin da Project.toml ya ƙare aiki tare da Manifest.toml. Yana yin haka ne bisa hash na deps na aikin da bayanan compat (wasu filayen an yi watsi da su) a cikin bayyanuwa yayin warware shi, ta yadda za a iya gano duk wani canji ga Project.toml deps ko bayanan compat ba tare da sake warwarewa ba.
    • Idan "pkg>add" ba zai iya samun fakiti mai suna ba, yanzu zai ba da shawarar fakiti masu kama da sunaye waɗanda za a iya ƙarawa.
    • Sigar julia da aka adana a cikin bayyanuwa baya haɗa da lambar ginin, ma'ana yanzu za a rubuta maigida a matsayin 1.9.0-DEV.
    • Gwajin zubar da ciki "pkg>" yanzu za a gano shi akai-akai, kuma za a mayar da shi daidai ga REPL.
  • InteractiveUtils
    • Sabon @time_imports macro don bayar da rahoton lokacin da aka kashe ana shigo da fakitin da abubuwan dogaro da su, yana ba da haske da tattarawa da sake tara lokacin a matsayin kaso na shigo da kaya.
  • Algebra na layi
    • Submodule na BLAS yanzu yana goyan bayan ayyuka-2 BLAS spr!
    • Madaidaicin ɗakin karatu na LinearAlgebra.jl yanzu ya zama mai zaman kansa gabaɗaya daga SparseArrays.jl, duka daga lambar tushe da hangen nesa na gwaji. Sakamakon haka, ba a sake dawo da tsararrun tsararru (a fakaice) ta hanyoyi daga LinearAlgebra da aka yi amfani da su zuwa Base ko LinearAlgebra abubuwa. Musamman, wannan yana haifar da canje-canje masu zuwa:
      • Haɗin kai ta amfani da matrices na musamman na "marasa ƙarfi" (misali diagonal) yanzu suna dawo da matrix masu yawa; Sakamakon haka, filayen D1 da D2 na abubuwan SVD waɗanda aka ƙirƙira ta hanyar kiran kadarorin yanzu sun zama matrices masu yawa.
      • Hanya mai kama (:: SpecialSparseMatrix, :: Nau'in, :: Dims) yana dawo da matrix mara kyau. Sakamakon haka, samfuran matrix biyu-, uku-, da simmetric tridiagonal matrix tare da juna suna haifar da haɓakar matrix mai yawa. Bugu da ƙari, gina irin waɗannan matrices tare da mahawara guda uku daga matrix na musamman na "marasa ƙarfi" daga matrix (marasa tsaye) yanzu ya gaza saboda "sifili(:: Nau'in {Matrix{T}})".
  • Printf
    • %s da %c yanzu suna amfani da hujjar faɗin rubutu don tsara faɗin.
  • Profile
    • Bayanin bayanin nauyin CPU yanzu yana rikodin metadata gami da zaren da ayyuka. Profile.print() yana da sabon gardama na rukuni wanda ke ba ka damar haɗa zaren, ayyuka ko raƙuman ruwa / ayyuka, ɗawainiya / zaren, da zaren da muhawarar ayyuka don samar da tacewa. Bugu da ƙari, ana ba da rahoton yawan amfani yanzu ko dai a matsayin gabaɗaya ko kowane zaren, dangane da ko zaren ba shi da aiki ko a'a a cikin kowane samfurin. Profile.fetch() ya ƙunshi sabon metadata ta tsohuwa. Don dacewa da baya tare da masu amfani na waje na bayanan bayanan, ana iya cire shi ta wucewa sun haɗa_meta=ƙarya.
    • Sabuwar Fayil.Allocs yana ba ku damar raba bayanan bayanan martaba. Ana yin rikodin tari na nau'i da girman kowane yanki na ƙwaƙwalwar ajiya, kuma hujjar sample_rate tana ba da damar ƙididdige adadin ƙididdiga, rage yawan aiki.
    • Kafaffen bayanin martaba na CPU yanzu yana iya gudana ta mai amfani yayin da ayyuka ke gudana ba tare da fara loda bayanin martaba ba, kuma za a nuna rahoton yayin gudana. A kan MacOS da FreeBSD, latsa ctrl-t ko kira SIGINFO. Don sauran dandamali, kunna SIGUSR1, i.e. % kashe -USR1 $ julia_pid. Babu wannan akan Windows.
  • KARANTA
    • RadioMenu yanzu yana goyan bayan ƙarin gajerun hanyoyin madannai don zaɓin zaɓuɓɓuka kai tsaye.
    • Jeren "?(x, y" yana biye da latsa TAB yana nuna duk hanyoyin da za a iya kira tare da muhawara x, y, .... y" yana taƙaita binciken zuwa "MyModule" Danna TAB yana buƙatar cewa aƙalla hujja ɗaya ta zama nau'i na musamman fiye da Kowa. Ko amfani da SHIFT-TAB maimakon TAB don ba da damar kowace hanya masu dacewa.
    • Sabon kuskuren canjin duniya yana ba ku damar samun sabon keɓanta, kama da halayen ans tare da amsa ta ƙarshe. Shigar da kuskure yana sake buga bayanan keɓantawa.
  • SparseArrays
    • An matsar da lambar SparseArrays daga ma'ajiyar Julia zuwa wurin ajiyar SparseArrays.jl na waje.
    • Sabbin ayyukan haɗin gwiwa suna aiki sparse_hcat, sparse_vcat, da sparse_hvcat suna dawo da nau'in SparseMatrixCSC ba tare da la'akari da nau'ikan mahawarar shigarwa ba. Wannan ya zama larura don haɗa tsarin matrix ɗin matrix bayan an raba lambar LinearAlgebra.jl da SparseArrays.jl.
  • shiga
    • Madaidaitan matakan shiga ƙasa a ƙasaMinLevel, Debug, Bayani, Gargaɗi, Kuskure da SamaMaxLevel yanzu ana fitar dasu daga daidaitaccen ɗakin karatu na Logging.
  • Unicode
    • An ƙara aikin daidaita_daidaitacce don bincika daidaitattun Unicode ba tare da gina igiyoyin da aka daidaita ba.
    • Aikin Unicode.normalize yanzu yana karɓar kalmar maɓalli na charttransform, wanda za'a iya amfani dashi don samar da taswirar halaye na al'ada, kuma ana samar da aikin Unicode.julia_chartransform don sake yin taswirar da aka yi amfani da ita lokacin da Julia parser ta daidaita masu ganowa.
  • gwajin
    • '@test_throws"wasu saƙo" triggers_error()' yanzu ana iya amfani dashi don gwada ko rubutun kuskuren da aka nuna ya ƙunshi kuskuren "wasu saƙo", ba tare da la'akari da takamaiman nau'in keɓantawa ba. Hakanan ana tallafawa maganganun yau da kullun, lissafin kirtani, da ayyukan daidaitawa.
    • @testset foo() yanzu ana iya amfani dashi don ƙirƙirar saitin gwaji daga aikin da aka bayar. Sunan shari'ar gwaji shine sunan aikin da ake kira. Aikin da ake kira zai iya ƙunsar @test da sauran ma'anar @testset, gami da kira zuwa wasu ayyuka, yayin yin rikodin duk sakamakon gwajin matsakaici.
    • Ana fitar da TestLogger da LogRecord daga daidaitaccen ɗakin karatu na Gwaji.
  • Rarraba
    • SSHManager yanzu yana goyan bayan zaren ma'aikaci tare da kunsa csh/tcsh ta hanyar addprocs() da harsashi = csh siga.
  • Sauran canje -canje
    • Ana iya amfani da GC.enable_logging (gaskiya) don shiga kowane aikin tattara shara tare da lokaci da adadin ƙwaƙwalwar da aka tattara.

source: budenet.ru

Add a comment