Iulia 1.9 programmandi lingua prompta

Dimissio linguae Iuliae 1.9 programmandi divulgata est, coniungens qualitates altae effectus, subsidium dynamicae typing et constructo-in instrumentis programmandi paralleli. Syntaxis Iuliae prope MATLAB est, quaedam elementa mutuata a Ruby et Lisp. Flexio chordae methodus simile Perl. In codice exertus licentia MIT distribuitur.

Clavis lineamentorum linguae:

  • Princeps effectus: una clavis proposita consilii est ad perficiendum proxima ad C programmata. Iulia compilator ex opere LLVM innixus est et efficax generat codicem machinae indigenae per multas suggestas target;
  • Varia programmandi paradigmata adiuvat, inclusa elementa programmationis obiecti ordinatis et functionis. Vexillum bibliothecae praebet, inter alia, munera pro asynchrono I/O, processum imperium, logging, profiling, ac sarcina procuratio;
  • Typing dynamica: lingua expressam definitionem typorum variabilium non requirit, similis programmandi linguarum scriptioni. Modus Lingva sustentatur;
  • Facultas ad libitum genera expresse specificare;
  • Syntaxis idealis computandi numerandi, computandi scientifici, discendi apparatus, et datae visualizationis. Suscipe plures notitias numerorum rationes et instrumenta parallelisationi calculi.
  • Facultas directe vocare functiones a C bibliothecas sine stratis adiectis.

Maiores mutationes in Iulia 1.9;

  • Nova lingua features
    • Sinite destinationes in alio modulo utendo "condiciones!(::Module, ::Symbol, x)".
    • Multiplices provinciae non finali loco concessum est. Exempli gratia, chorda "a, b…, c = 1, 2, 3, 4" processit ut a = 1; b…, = 2, 3; c = 4". Hoc tractatum est per Base.split_rest.
    • Unius character literalis nunc eandem syntaxin ac chordarum literam sustinet; illae. Syntaxis series irritas UTF-8 repraesentare potest, sicut per genus Char conceditur.
    • Addidit subsidium Unicode 15 specificatio.
    • Coniunctiones tuples nidificantes et tuples characteribus nominatis nunc pro specie parametri adhiberi possunt.
    • Nova aedificata in functionibus "getglobal(::module, ::Symbol[, ordo])" et "setglobal!(:: Modulus, ::Symbol, x[, ordo])" legendi et scribendi solum ad variabiles globales. Methodus getglobalis nunc praeferenda est methodo getfield ad variabiles globales accessiones.
  • Mutationes in lingua
    • Tormentum "@invoke" in versione 1.7 introductum nunc exportatum est et usui promptum. Accedit, nunc methodo "Core.Typeof(x)" utitur quam "Qualibet" in casu ubi genus annotationis pro "x" argumento omittitur. Hoc necesse est efficere ut rationes sicut rationes recte discursum sint.
    • Exportatio functionis "invokelatest" et "@invokelatest" tortor, in versione 1.7. introducta est.
  • Compiler / runtime improvements
    • Tempus signanter redegit ad primam executionem (TTFX - Tempus primae executionis). Involucrum nunc componendo codicem vernaculum in "pkgimage" reponit, significans codicem ex precompilatione processum generatum recompilationem non indigere postquam sarcina onusta est. Usus pkgimageum modus debilitatur uti potest optione "-pkgimages" non.
    • Incomplexitas quadratae notae exitus typorum illationis fixa est, et illatio minus memoria altiore utitur. Nonnulli in ore casus cum automatice munera longa generata (ut ModelingToolkit.jl cum aequationibus differentialibus partialibus et exemplaribus causalibus magnis) multo citius componunt.
    • Vocatus cum argumentis sine speciebus concretis nunc esse potest Unionis-discisurae optimized ad iniectionem vel resolutionem staticam, etiamsi plures sint candidati pro celeritate diversi generis. Hoc emendare potest in quibusdam adiunctis in quibus species obiecti non plene stabiliter resolvuntur, per statum vocationis "@nospecialize-d" sites solvendo et recompilationem vitando.
    • Omnes usus @purae tortor in Base moduli cum Base.@assume_effectis substituti sunt.
    • Vocat invocare (f, invokesig, args...) cum minus speciebus certis quam typice adhibitis pro f(args...) non amplius sarcinam recompilari faciam.
  • Mutationes Imperii linea Options
    • In Linux et Fenestra, optio "--s=auto" nunc determinare conatur numerum processuum praesto in affinitate CPU fundatam, larva typica in HPC et nubes ambitus posita.
    • Parameter "-math-mode=celeriter" debilis est, pro quo commendatur tortor "@fastmath" uti, quod semanticos clare definivit.
    • Optio "--threads" nunc est in forma "auto | N[,auto|M], ubi M indicat numerum relatorum interactivorum creare (currente auto significat 1).
    • Addidit optio "-heap-size-hint" ", quod post limen ponit activae quisquiliarum collectio incipit. Magnitudo in bytes, kilobytis (1000 KB), megabytis (300 MB), vel gigabytis definiri potest (1,5 GB).
  • Mutationes in multithreading
    • "Semina.@ Spawn" nunc primum argumentum ad libitum habet cum valore ":default" vel ":interactive". Negotium interactivum postulat latentiam humilis responsionis et designatus est brevis vel frequenter exercendus. Opera interactiva in staminibus interactive persequentur si specificatae sunt cum Iulia incipiens.
    • Stamina extra Iulia runtime currentia (ut ex C vel Java) nunc Iulia codicem utentem "jl_adopt_thread" vocare possunt. Hoc facto automatice cum Iulia codicem per "cfunctionem" vel "@ccallabilem" ingressum ingreditur. Quam ob rem numerus stamina in executione iam mutare potest.
  • Nova bibliotheca munera
    • Novum munus "Iterators.flatmap".
    • Novum munus "pkgversion (m::module)" obtinere versionem sarcinae quae datam moduli onerat, similis "pkgdir(m::module)".
    • Novum munus "stack(x)" generaliter "reduce(hcat, x::Vector{<:Vector})" cuivis dimensioni ac iteratororum iteratorum permittit. Modus "cervorum (f, x)" generalit "mapraeducendi (f, hcat, x)" et efficacior est.
    • Macro nova ad memoriam "@allocations" collocanda, similis "@allocationis", nisi quod numerus prouinciis memoriae redit, quam tota magnitudo memoriae partita.
  • Nova bibliotheca features
    • "RoundFromZero" nunc laborat ad rationes alias quam "BigFloat".
    • "Dict" nunc manually utendo "sizehint" minui potest!
    • "@time" nunc separatim designat modum recipis temporis consumpti methodos nullas recompingendi.
  • Mutationes in bibliotheca vexillum
    • Certum est concursus exitus in modis iterationis pro Dict et aliis obiectis derivatis ut claves (::Dict), valores (::Dict) et Set. Hae methodi iterationis nunc vocari possunt in Dict vel Set in parallela pro infinitis staminibus, dummodo nullae sint actiones quae dictionarium modificant vel pone.
    • Negans munus praedicati "! f" nunc munus compositum reddit (!) f" loco muneris anonymi.
    • Dimensio segmenti functionum quae nunc per multiplices dimensiones operantur: "singuli", "singuli" et "singuli" reddunt "Slices" obiectum, quod permittit ut commodiores methodos praebere possit.
    • Addidit "@kwdef" tortor publico API.
    • Certa res cum ordine operationum in "fld1".
    • Sorting nunc est semper tempus stabilis (QuickSort has been redesigned).
    • "Base.splat" nunc exportatum est. Valor reditus "Base.Splat" typus est potius quam munus anonymi, sinit bene esse output.
  • Package Manager
    • "Package Extensiones": subsidium onerandum codicem PRAECISIO ex aliis fasciculis in sessione Iuliae onustis. Applicatio sarcinae similis est "Requires.jl", sed prae-compilatio et occasus compatibilitas sustentantur.
  • LinearAlgebra Library
    • Ob periculum confusionis cum divisione elementorum sapientum, "a/b" et "b\a" methodos "a/b" et "b\a" cum scalare "a" et vectore "b" removebant, quae aequivalebant "a* pinv(b)".
    • Vocans BLAS et LAPACK nunc "libblastrampoline (LBT) utitur". OpenBLAS per defaltam providetur, sed systema imaginis cum aliis BLAS/LAPACK bibliothecis aedificans non praebetur. Sed suadetur ut mechanismum LBT reponere BLAS/LAPACK cum alia bibliothecarum copia exsistentibus.
    • "lu" novam matricem gyrationis militaris adiuvat, "RowNonZero()", quod primum elementum rotationis non-nullae eligit ad usum novis generum arithmeticis et ad usum instituendi.
    • "normalize(x, p=2)" nunc sustinet quemlibet vectorem spatii normalizatum "x", scalis inclusis.
    • Defectus numerus staminum BLAS nunc aequalis est numero CPU relatorum in architecturas ARM et dimidium numerum CPU staminum in aliis architecturae.
  • Printf: Retractavit errorem nuntia pro chordis perperam formatis ad melius readability.
  • Profile: Novum munus "Profile.take_heap_snapshot(file)", quod tabellam scribit in JSON-based ".heapsnapshot" forma in Chrome fulta.
  • Random: randn et randexp nunc opus aliquod AbstractFloat genus quod rand definit.
  • REPL
    • Pressura "Alt-e" clavem iuncturam nunc currentem initus in editore aperit. Contentum (si modificatum est) supplicium cum editore exis.
    • Praesens contextus moduli activus in REPL mutari potest (Principalis per default) utens munere "REPL.activate(::module)" vel intrando modulum in REPL et premens clavem "Alt-m".
    • Modus "numeratus promptus", qui imprimit numeros pro singulis initus et output ac notatos proventus in Out, excitari potest utens "REPL.numbered_prompt!()".
    • Tab complementum ostendit available keyword argumentis.
  • SuiteSparse: Motus code pro "SuiteSparse" solver ad "SparseArrays.jl". Solvers nunc re-portantur per "SuiteSparse.jl".
  • SparseArrays
    • "SuiteSparse" solvers nunc praesto sunt sicut "SparseArrays" submodules.
    • UMFPACK et CHOLMOD modi tutelae filo emendati sunt, removendo variabiles globales et comas utentes. Multi-fila "ldiv!" UMFPACK res nunc tuto exsecutioni mandari potest.
    • Munus experimentale "SparseArrays.allowscalar(::Bool)" permittit ut inactivandi vel scalaris indices sparsorum vestimentorum efficiat. Hoc munus destinatur ad deprehendere scalares temere indicem rerum "SparseMatrixCSC", quae communis fons est problematum perficiendi.
  • Novus modus deficit in probationibus consentaneis qui experimentum terminat primo in eventu defectus vel erroris. Aut per "@testset kwarg failfast=verum" vel "exportum JULIA_TEST_FAILFAST=verum". Hoc interdum necesse est in CI fugit ut mane epistulas recipiat erroris.
  • Dies: chordae vacuae iam non recte parseduntur sicut validi "DateTime", "Date" vel "Tempus" valores et pro "argumentError" in constructores et parsing, dum "tryparse" nihil refert.
  • sarcina Distributed
    • Involucrum configurationis (proiectum activum, "LOAD_PATH", "DEPOT_PATH") nunc propagatum est, cum processuum localium adiutorium addens (exampla utens "addprocs(N::Int)" vel cum imperio lineae vexillum utens "--procs=N").
    • "addprocs" pro processibus localibus laborantis nunc accipit argumentum nomine "env" ad variabiles ambitus transeuntes ad processuum opificum.
  • Unicode: "graphemes (s, m:n)" substringit a mth ad graphematum in "s".
  • Sarcina Delimited a bibliothecarum systemate remota est et nunc distribuitur in sarcinam separatam quae explicite inaugurari debet.
  • Externae clientelae
    • In Linux, versio libstdc++ bibliothecae systematis ipso facto deprehenditur et, si recentior est, oneratur. Vetus libstdc ++ in oneratione morum, cuiuscumque versionis systematis constructum, restitui potest, ambitu variabili "JULIA_PROBE_LIBSTDCXX=0".
    • "RPATH" a binario Iulia remotum, quod bibliothecas in Linux frangere potest, quae variabilis "RUNPATH" definire non possunt.
    • Instrumentum emendandi: Output "MethodError" et methodi (exempli gratia ex "modo (my_func)") nunc formatus et coloratus est secundum principium output rationum in ACERVUS vestigium.

    Source: opennet.ru