Release fan de Julia 1.10 programmeartaal

De frijlitting fan 'e programmeartaal Julia 1.10 is publisearre, dy't sokke kwaliteiten kombinearret as hege prestaasjes, stipe foar dynamysk typen en ynboude ark foar parallelle programmearring. De syntaksis fan Julia is tichtby MATLAB, en lient guon eleminten fan Ruby en Lisp. De metoade foar snaarmanipulaasje docht tinken oan Perl. De projektkoade wurdt ferspraat ûnder de MIT-lisinsje.

Wichtige funksjes fan 'e taal:

  • Hege prestaasjes: ien fan 'e haaddoelen fan it projekt is prestaasje te berikken tichtby C-programma's. De Julia-kompiler is basearre op it wurk fan it LLVM-projekt en genereart effisjinte native masinekoade foar in protte doelplatfoarms;
  • Unterstützt ferskate programmearring paradigma, ynklusyf eleminten fan objekt-rjochte en funksjonele programmearring. De standert bibleteek jout ûnder oare funksjes foar asynchronous I/O, proses kontrôle, logging, profilearring, en pakket behear;
  • Dynamysk typen: de taal fereasket gjin eksplisite definysje fan typen foar fariabelen, fergelykber mei skriptprogrammearrings. Ynteraktive modus stipe;
  • Opsjonele mooglikheid om eksplisyt soarten oantsjutte;
  • In syntaksis ideaal foar numerike berekkenjen, wittenskiplike berekkenjen, masine learen, en gegevensfisualisaasje. Stipe foar in protte numerike gegevenstypen en ark foar parallelisaasje fan berekkeningen.
  • De mooglikheid om funksjes direkt op te roppen fan C-biblioteken sûnder ekstra lagen.

Grutte feroaringen yn Julia 1.10:

  • Nije taalfunksjes
    • Standert is de nije en ferbettere JuliaSyntax.jl-parser ynskeakele. As jo ​​moatte weromgean nei de âlde, moatte jo de omjouwingsfariabele JULIA_USE_FLISP_PARSER ynstelle op 1.
    • De symboalen ⥺ (U+297A, \leftarrowsubset) en ⥷ (U+2977, \leftarrowless) kinne no brûkt wurde as binêre operators mei pylkfoarrang.
  • Feroarings yn taal
    • Wannear't spawning bern taken, de lokale RNG (willekeurige getallengenerator) fan de âlder taak is net mear beynfloede. It nije inisjalisaasjeskema foar willekeurige nûmergenerator is fergelykber mei de SplitMix- en DotMix-ymplemintaasjes.
    • In nije metoadeseleksjeregel is foarsteld dy't it type "Union{}" disambiguearret yn it foardiel fan in metoade dy't eksplisyt definiearre is om in argumint fan type "Union{}" te behanneljen.
    • It karakter "h bar" ℏ (\hslash U+210F) wurdt no behannele as lykweardich oan ħ (\hbar U+0127).
    • De makro "@simd" hat no spesifike semantyk: it lit allinich weroardieling en snoeien fan driuwende punten ta yn plak fan alle "@fastmath"-optimisaasjes yn te skeakeljen. As rinnende programma's prestaasjesdegradaasje ûnderfine troch dizze feroaring, dan kin it foarige gedrach weromset wurde mei "@fastmath @simd".
    • Wannear't werjûn yn 'e stapelspoar fan in metoade mei kaaiwurden, wurdt de tekstuele fertsjintwurdiging fan' e kaaiwurden no ferienfâldige mei de nije makrosyntaksis "@Kwargs{key1::Type1, ...}".
  • Ferbetterings fan kompilator / runtime
    • De garbage collector fiert no multi-threaded seleksje fan foarwerpen foar ôffier.
    • JITLink is standert ynskeakele yn Linux-systemen basearre op 'e aarch64-arsjitektuer by it bouwen fan Julia mei LLVM 15 of letter.
    • It foarkompilaasjeproses omfettet it beskoatteljen fan pid-bestannen. Allinich ien julia-proses fiert foarkompilaasje tagelyk út. Earder rûnen alle prosessen parallel, en d'r wie in gefaar fan korrupsje fan kompilaasje-cache-bestannen troch racebetingsten.
  • Feroarings oan kommandorigelopsjes
    • Tafoege "--gcthreads" opsje, wêrmei jo opjaan hoefolle parallelle triedden de garbage collector sil brûke. De standertwearde is "N/2", wêrby't N it oantal wurktrieden ("-threads") is dat brûkt wurdt troch Julia.
  • Bouwe systeem feroarings
    • De knopen "SparseArrays" en "SuiteSparse" binne standert útsletten fan it systeemôfbylding. It basispakket Julia befettet net langer GPL-lisinsje bibleteken. Dizze bibleteken binne lykwols noch altyd opnommen mei de taal yn 'e standert binêre distribúsje.
  • Nije bibleteek funksjes
    • "tanpi" berekkent "tan(π*x)" krekter dan "tan(pi*x)".
    • "fjouwerroot(x)" is definiearre yn Base.Math en kin brûkt wurde om de fjirde woartel fan "x" te berekkenjen. De koarte namme foar dizze metoade is it Unicode-karakter ∜, dat kin wurde ynfierd mei it kommando \fourthroot.
    • Added funksjes "Libc.memmove", "Libc.memset" en "Libc.memcpy", waans funksjonaliteit oerienkomt mei de funksjonaliteit fan de oerienkommende C calls.
    • Added "Base.isprecompiled (pkg::PkgId)" metoade dy't werom "wier" as it pakket is al precompiled.
  • Opsjes foar biblioteekfunksjes
    • "binomial(x, k)" stipet no net-heule getal "x".
    • "CartesianIndex" wurdt no behannele as in "skalar" foar útstjoering.
    • De metoade "printstyled" stipet no kursive útfier.
    • De metoaden "parent" en "parentindices" stypje no it type "SubStrings".
    • De metoade "ferfange (string, patroan ...)" stipet no in opsjoneel "IO" argumint foar it útfieren nei in stream ynstee fan in tekenrige werom te jaan.
    • De metoade "startswith" stipet no I/O-threads.
  • Base bibleteek feroarings
    • Fan 'e "sortperm!" Metoaden en "partialsortperm!" it kaaiwurd "inisjalisearre=wier" fuortsmiten, wat liede koe ta ûnfeilich gedrach.
    • By it printsjen fan "rasjonele" type heule getallen, wurdt har neamer no oerslein yn 'e kontekst fan "Rational" typte streamen (lykas arrays).
  • Pakket manager
    • De "Pkg.precompile" metoade nimt no "timing" as in kaai argumint, werjaan precompile timing ynformaasje foar elk pakket - "Pkg.precompile(timing = wier)".
  • Lineêre Algebra
    • It type "AbstractQ" is net langer in subtype fan "AbstractMatrix". Boppedat, de metoade "adjoint(Q::AbstractQ)" net mear omslacht "Q" yn it "Adjoint" type, ferfangt it troch "AdjointQ", dat is sels in subtype fan "AbstractQ". Dizze feroaring is te tankjen oan it feit dat typysk "AbstractQ"-eksimplaren har gedrage as lineêre operators basearre op funksjes en matriks en binne net tagonklik troch yndeks. Derneist kinne in protte "AbstractQ"-typen operearje op vectoren / matriksen fan ferskate grutte, hannelje as in matrix mei in kontekstôfhinklike grutte. Mei dizze feroaring hat it type "AbstractQ" no in goed definieare ynterface, dy't yn detail beskreaun wurdt yn 'e Julia-dokumintaasje.
    • Faktorisaasjeresultaten wurde net mear ferpakt yn 'Adjoint' en 'Transpose' wrappertypen. Ynstee dêrfan binne de typen "AdjointFactorization" en "TranposeFactorization" tafoege, dy't sels subtypen binne fan "Factorization".
    • Nije funksjes "hermitianpart" en "hermitianpart!" om it Hermityske (wier symmetryske) diel fan 'e matrix te finen.
    • De "noarm" metoade fan in transponearre bernematrix fan it type "AbstractMatrix" jout no standert de noarm fan 'e âldermatrix werom, dy't oerienkomt mei it hjoeddeistige gedrach foar "AbstractVectors".
    • Added metoaden foar it berekkenjen eigenvectors "eigen (A, B)" en "eigvals (A, B)" foar it gefal dêr't ien fan A of B is symmetrysk of Hermitian.
    • De metoaden "eigvals/eigen(A, cholesky(B))" berekkenje no de generalisearre eigenwearden (eigen: en eigenvectors) fan A en B fia de Cholesky-útwreiding foar posityf definityf B.
  • Printf
    • Opmaakspesifikaasjes stypje no dynamyske breedte en presyzje, lykas "%*s" en "%*.*g".
  • REPL
    • By it printsjen fan in stapelspoar is de djipte fan printe typen yn funksje-hantekeningen beheind om te ferbaze útfier te foarkommen.
  • test
    • De "@test_broken" makro (of "@test" mei "broken=true") smyt no in flater as de testekspresje net falsk/wier jout.
    • As d'r in flater is by it oproppen fan "@test" of in flater binnen in funksje, wurdt no in detaillearre stapelspoar levere om de posysje fan 'e test yn 'e "@testset" te begripen.
  • InteractiveUtils
    • "code_native" en "@code_native" brûke no Intel-syntaksis ynstee fan AT&T.
    • "@time_imports" toant no de útfieringstiid fan "__init__()" foar ymporteare modules.
  • Ferâldere en ûnder foarbehâld fan ferwideringsstruktueren
    • De makro "@pure" is ôfkard. "Base.@assume_effects :foldable" moat ynstee brûkt wurde.

Boarne: opennet.ru

Keapje betroubere hosting foar siden mei DDoS-beskerming, VPS VDS-tsjinners 🔥 Keapje betroubere websidehosting mei DDoS-beskerming, VPS VDS-tsjinners | ProHoster