ulia este un limbaj dinamic, de nivel înalt și de înaltă performanță pentru calculul tehnic.
Lansarea Julia 1.9, noua versiune a limbajului de programare, a fost anunțată acum câteva zile. Aceasta combină caracteristici precum performanță ridicată, suport pentru tastare dinamică și instrumente integrate pentru programare paralelă. Sintaxa Julia este similară cu cea a MATLAB, cu unele elemente împrumutate din Ruby și Lisp.
Julia se remarcă ca un limbaj de programare de nivel înalt, de înaltă performanță, multi-platformă, multi-paradigmă, cu tipizare dinamică, pentru calcul general, tehnic și științific, cu o sintaxă similară cu cea a altor medii de calcul similare.
Principalele știri despre Julia 1.9
Această nouă versiune a Julia 1.9 prezintă mai multe îmbunătățiri la nivelul runtime-ului/compilatorului, inclusiv o reducere semnificativă a timpului până la prima execuție. Precompilarea pachetelor salvează acum codul nativ într-o „pkgimage”, ceea ce înseamnă că codul generat în timpul precompilării nu va trebui recompilat după încărcarea pachetului. Utilizarea modului pkgimages poate fi dezactivată cu opțiunea „--pkgimages=no”.
O altă modificare notabilă este că apelurile cu argumente care nu sunt specifice tipului pot fi acum optimizate folosind divizarea uniunilor pentru injecție sau rezoluție statică, chiar dacă există mai multe tipuri diferite de candidați pentru trimitere. Acest lucru poate îmbunătăți performanța în anumite situații în care tipurile de obiecte nu sunt complet rezolvate static, prin rezolvarea statică a locațiilor apelurilor „ @nospecialize-d” și evitarea recompilării.
Literele cu un singur caracter acceptă acum aceeași sintaxă ca și literalele șir; aceste sintaxe pot reprezenta secvențe UTF-8 invalide, așa cum este permis de tipul Char.
În plus, pe Linux și Windows, opțiunea „ --threads=auto ” încearcă acum să determine numărul disponibil de procesoare pe baza afinității CPU, care este o mască setată de obicei în mediile HPC și cloud.
Opțiunea „ --math-mode=fast ” a fost dezactivată și se recomandă utilizarea macro-ului „ @fastmath ”, care are o semantică bine definită. În plus, parametrul „ --threads ” are acum formatul „auto | N[,auto|M]” , unde M specifică numărul de fire de execuție interactive care vor fi create.
Opțiunea „ –heap-size-hint=<size> ” a fost adăugată pentru a seta pragul după care începe colectarea activă a gunoiului. Dimensiunea poate fi specificată în octeți, kiloocteți (1000 KB), megaocteți (300 MB) sau gigaocteți (1,5 GB).
Macrocomanda „@invoke” introdusă în versiunea 1.7 este acum exportată și disponibilă pentru utilizare. În plus, acum folosește metoda „Core.Typeof(x)” în loc de „ Any ” atunci când adnotarea de tip pentru argumentul „x” este omisă. Acest lucru este necesar pentru ca tipurile transmise ca argumente să fie procesate corect.
În plus, `Threads.@spawn` are acum un prim argument opțional fie `:default`, fie `:interactive`. O sarcină interactivă necesită un răspuns cu latență redusă și este concepută să fie scurtă sau să se execute frecvent. Sarcinile interactive vor rula pe fire de execuție interactive dacă sunt specificate la pornirea Julia.
Alte schimbări notabile includ:
- Negarea funcției predicat „!f” returnează acum o funcție compusă „(!) ∘ f” în loc de o funcție anonimă.
- Funcțiile de împărțire a dimensiunilor funcționează acum pe mai multe dimensiuni: «fiecare felie”, „eachrow” și „eachcol” returnează un obiect"Felii» care permite transportul să ofere metode mai eficiente.
- Macro-ul «@kwdef» a fost adăugat la API-ul public.
- S-a rezolvat o problemă cu ordinea operațiunilor în „fld1”.
- Sortarea este acum întotdeauna stabilă în timp (QuickSort reproiectat).
- Numărul implicit de fire BLAS este acum egal cu numărul de fire CPU pe arhitectura ARM și jumătate din numărul de fire CPU pe alte arhitecturi.
- Printf: Mesaje de eroare reproiectate pentru șiruri de caractere incorect pentru o mai bună lizibilitate.
- Profil: nouă funcție „Profile.take_heap_snapshot(file)” care scrie un fișier în formatul „.heapsnapshot” bazat pe JSON, acceptat de Chrome.
- S-a adăugat suport pentru specificația Unicode 15.
- Combinațiile imbricate de tupluri și tupluri de caractere numite pot fi acum utilizate ca parametri de tip.
În final, dacă sunteți interesați să aflați mai multe, puteți găsi detalii la linkul următor.