Software-update: Julia 1.3.0

Julia is de naam van een high-level, high-performance dynamische programmeertaal voor numerieke wiskunde. Het bevat onder andere een deftige compiler, distributed parallel execution en een uitgebreide library van wiskundige functies. De kern van Julia wordt onder de MIT-licentie uitgegeven terwijl verschillende libraries andere licenties gebruiken zoals de gpl, lgpl en bsd. Voor meer informatie verwijzen we jullie door naar deze pagina. De lijst met aanpassingen van uitgave 1.3.0 ziet er als volgt uit:

New language features
  • Support for Unicode 12.1.0 (#32002).
  • Methods can now be added to an abstract type (#31916).
  • Support for unicode bold digits and double-struck digits 0 through 9 as valid identifiers (#32838).
  • Added the syntax var"#str#" for printing and parsing non-standard variable names (#32408).
Multi-threading changes
  • New experimental Threads.@spawn macro that runs a task on any available thread (#32600).
  • All system-level I/O operations (e.g. files and sockets) are now thread-safe. This does not include subtypes of IO that are entirely in-memory, such as IOBuffer, although it specifically does include BufferStream. (#32309, #32174, #31981, #32421).
  • The global random number generator (GLOBAL_RNG) is now thread-safe (and thread-local) (#32407).
  • New Channel(f::Function, spawn=true) keyword argument to schedule the created Task on any available thread, matching the behavior of Threads.@spawn (#32872).
  • Simplified the Channel constructor, which is now easier to read and more idiomatic julia. Use of the keyword arguments csize and ctype is now discouraged (#30855, #32818).
  • New library functions
    • findfirst, findlast, findnext and findprev now accept a character as first argument to search for that character in a string passed as the second argument (#31664).
    • New findall(pattern, string) method where pattern is a string or regex (#31834).
    • count(pattern, string) gives the number of things findall would match (#32849).
    • istaskfailed is now documented and exported, like its siblings istaskdone and istaskstarted (#32300).
    • RefArray and RefValue objects now accept index CartesianIndex() in getindex and setindex! (#32653)
    • Added sincosd(x) to simultaneously compute the sine and cosine of x, where x is in degrees (#30134).
    • The function nonmissingtype, which removes Missing from type unions, is now exported (#31562).
    Standard library changes
    • Pkg can now download and install binary artifacts through the Pkg.Artifacts submodule and supporting functions. (#32918)
    • When wait (or @sync, or fetch) is called on a failing Task, the exception is propagated as a TaskFailedException wrapping the task. This makes it possible to see the location of the original failure inside the task (as well as the location of the wait call, as before) (#32814).
    • Regex can now be multiplied (*) and exponentiated (^), like strings (#23422).
    • Cmd interpolation (`$(x::Cmd) a b c` where) now propagates x's process flags (environment, flags, working directory, etc) if x is the first interpolant and errors otherwise (#24353).
    • Zero-dimensional arrays are now consistently preserved in the return values of mathematical functions that operate on the array(s) as a whole (and are not explicitly broadcasted across their elements). Previously, the functions +, -, *, /, conj, real and imag returned the unwrapped element when operating over zero-dimensional arrays (#32122).
    • IPAddr subtypes now behave like scalars when used in broadcasting (#32133).
    • Pair is now treated as a scalar for broadcasting (#32209).
    • clamp can now handle missing values (#31066).
    • empty now accepts a NamedTuple (#32534).
    • mod now accepts a unit range as the second argument to easily perform offset modular arithmetic to ensure the result is inside the range (#32628).
    • nothing can now be printed, and interpolated into strings etc. as the string "nothing". It is still not permitted to be interpolated into Cmds (i.e. echo `$(nothing)` will still error without running anything.) (#32148)
    • When open is called with a function, command, and keyword argument (e.g. open(`ls`, read=true) do f ...) it now correctly throws a ProcessFailedException like other similar calls (#32193).
    • mktemp and mktempdir now try, by default, to remove temporary paths they create before the process exits (#32851).
    • Added argument keep to unescape_string (#27125).
    • Libdl
      • dlopen() can now be invoked in do-block syntax, similar to open().
    • LinearAlgebra
      • The BLAS submodule no longer exports dot, which conflicts with that in LinearAlgebra (#31838).
      • diagm and spdiagm now accept optional m,n initial arguments to specify a size (#31654). Hessenberg factorizations H now support efficient shifted solves (H+µI) \ b and determinants, and use a specialized tridiagonal factorization for Hermitian matrices. There is also a new UpperHessenberg matrix type (#31853).
      • Added keyword argument alg to svd and svd! that allows one to switch between different SVD algorithms (#31057).
      • Five-argument mul!(C, A, B, α, β) now implements inplace multiplication fused with addition C = A B α + C β (#23919).
    • SparseArrays
      • SparseMatrixCSC(m,n,colptr,rowval,nzval) perform consistency checks for arguments: colptr must be properly populated and lengths of colptr, rowval, and nzval must be compatible with m, n, and eltype(colptr).
      • sparse(I, J, V, m, n) verifies lengths of I, J, V are equal and compatible with eltype(I) and m, n.
    • Dates
      • DateTime and Time formatting/parsing now supports 12-hour clocks with AM/PM via I and p codes, similar to strftime (#32308).
    • Statistics
      • mean now accepts both a function argument and a dims keyword (#31576).
    • Sockets
      • Sockets.recvfrom now returns both host and port as an InetAddr (#32729).
      • Added InetAddr constructor from AbstractString, representing IP address, and Integer, representing port number (#31459).
    • Miscellaneous
      • foldr and mapfoldr now work on any iterator that supports Iterators.reverse, not just arrays (#31781).
    Deprecated or removed
    • @spawn expr from the Distributed standard library should be replaced with @spawnat :any expr (#32600).
    • Threads.Mutex and Threads.RecursiveSpinLock have been removed; use ReentrantLock (preferred) or Threads.SpinLock instead (#32875).
    Tooling Improvements
    • The ClangSA.jl static analysis package has been imported, which makes use of the clang static analyzer to validate GC invariants in Julia's C code. The analysis may be run using make -C src analyzegc.
Versienummer 1.3.0
Releasestatus Final
Besturingssystemen Windows 7, Linux, macOS, Windows Server 2012, Windows 8, Windows 10, Windows Server 2016
Website Julia
Licentietype Voorwaarden (GNU/BSD/etc.)

Door Japke Rosink


03-12-2019 • 11:06

2 Linkedin

Submitter: begintmeta

Bron: Julia


18-08 Julia 1.8.0 16
12-'21 Julia 1.7.0 0
03-'21 Julia 1.6.0 27
08-'20 Julia 1.5.0 6
04-'20 Julia 1.4.0 0
01-'20 Julia 1.3.1 4
12-'19 Julia 1.3.0 2
07-'17 Julia 0.6.0 2
Meer historie

Lees meer

Julia 1.4.0 Download van 8 april 2020
Julia 0.6.0 Download van 11 juli 2017

Reacties (2)

Wijzig sortering
Een "deftige compiler"? Een compiler die zich netjes gedraagt?

Op dit item kan niet meer gereageerd worden.

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.


Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details


    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details