Julia, il linguaggio di programmazione multipiattaforma raggiunge la sua versione 1.9

julia lang

ulia è un linguaggio dinamico, di alto livello e ad alte prestazioni per il calcolo tecnico.

Qualche giorno fa è stata annunciata l'uscita di Julia 1.9, la nuova versione del linguaggio di programmazione . Essa combina caratteristiche quali elevate prestazioni, supporto per la tipizzazione dinamica e strumenti integrati per la programmazione parallela. La sintassi di Julia è simile a quella di MATLAB, con alcuni elementi mutuati da Ruby e Lisp.

Julia si distingue come linguaggio di programmazione di alto livello, ad alte prestazioni, multipiattaforma, multiparadigma e a tipizzazione dinamica per il calcolo generale, tecnico e scientifico, con una sintassi simile a quella di altri ambienti di calcolo analoghi.

Principali novità di Julia 1.9

Questa nuova versione di Julia 1.9 presenta diversi miglioramenti a livello di runtime/compilatore, tra cui una significativa riduzione del tempo di prima esecuzione. La precompilazione dei pacchetti ora salva il codice nativo in un file "pkgimage", il che significa che il codice generato durante la precompilazione non dovrà essere ricompilato dopo il caricamento del pacchetto. L'utilizzo della modalità pkgimages può essere disabilitato con l'opzione "--pkgimages=no".

Un altro cambiamento degno di nota è che le chiamate con argomenti non specifici per tipo possono ora essere ottimizzate utilizzando la suddivisione dell'unione per l'iniezione o la risoluzione statica, anche se sono presenti diversi tipi di candidati di invio. Ciò può migliorare le prestazioni in determinate situazioni in cui i tipi di oggetto non vengono risolti completamente staticamente, risolvendo staticamente i punti delle chiamate " @nospecialize-d" ed evitando la ricompilazione.

I valori letterali a carattere singolo ora supportano la stessa sintassi dei valori letterali stringa; quella sintassi può rappresentare sequenze UTF-8 non valide, come consentito dal tipo Char.

Inoltre, su Linux e Windows, l' opzione " --threads=auto " ora tenta di determinare il numero di processori disponibili in base all'affinità della CPU, che è una maschera tipicamente impostata negli ambienti HPC e cloud.

L'opzione " --math-mode=fast " è stata disabilitata e si consiglia di utilizzare invece la macro " @fastmath " , che ha una semantica ben definita. Inoltre, il parametro " --threads " ora ha il formato "auto | N[,auto|M]" , dove M specifica il numero di thread interattivi da creare.

L'opzione “ –heap-size-hint=<size> ” è stata aggiunta per impostare la soglia oltre la quale inizia la raccolta attiva dei rifiuti. La dimensione può essere specificata in byte, kilobyte (1000 KB), megabyte (300 MB) o gigabyte (1,5 GB).

La macro "@invoke" introdotta nella versione 1.7 è ora esportata e disponibile per l'uso. Inoltre, ora utilizza il metodo "Core.Typeof(x)" anziché " Any " quando l'annotazione di tipo per l'argomento "x" viene omessa. Ciò è necessario affinché i tipi passati come argomenti vengano elaborati correttamente.

Inoltre, `Threads.@spawn` ora ha un primo argomento opzionale che può essere `:default` o `:interactive`. Un'attività interattiva richiede una risposta a bassa latenza ed è progettata per essere breve o eseguita frequentemente. Le attività interattive verranno eseguite su thread interattivi se specificati all'avvio di Julia.

Tra le altre modifiche degne di nota si segnalano:

  • La negazione della funzione predicato "!f" ora restituisce una funzione composta "(!) ∘ f" invece di una funzione anonima.
  • Le funzioni di suddivisione delle dimensioni ora funzionano su più dimensioni: «eachslice”, “eachrow” e “eachcol” restituire un oggetto "Slices» che consente alla spedizione di fornire metodi più efficienti.
  • La macro«@kwdef» è stato aggiunto all'API pubblica.
  • Risolto un problema con l'ordine delle operazioni in "fld1".
  • L'ordinamento è ora sempre stabile nel tempo (QuickSort riprogettato).
  • Il numero predefinito di thread BLAS è ora uguale al numero di thread CPU sull'architettura ARM e alla metà del numero di thread CPU su altre architetture.
  • Printf: messaggi di errore rielaborati per stringhe malformate per una migliore leggibilità.
  • Profilo: nuova funzione "Profile.take_heap_snapshot(file)" che scrive un file nel formato ".heapsnapshot" basato su JSON supportato da Chrome.
  • Aggiunto il supporto per la specifica Unicode 15.
  • Combinazioni nidificate di tuple e tuple di caratteri con nome ora possono essere utilizzate come parametri di tipo.

Infine, se siete interessati ad approfondire l'argomento, potete trovare maggiori dettagli al seguente link.


Aggiungi come fonte preferita in Google