ulia je dinamičen visokonivojski in visoko zmogljiv jezik za tehnično računalništvo.
Izid Julie 1.9, nove različice programskega jezika, je bil napovedan pred nekaj dnevi. Združuje funkcije, kot so visoka zmogljivost, podpora za dinamično tipkanje in integrirana orodja za vzporedno programiranje. Sintaksa Julie je podobna MATLAB-u, z nekaterimi elementi, izposojenimi iz Rubyja in Lispa.
Julia izstopa kot visokonivojski, visokozmogljiv, večplatformski, večparadigmski, dinamično tipiziran programski jezik za splošno, tehnično in znanstveno računalništvo, s sintakso, podobno kot v drugih podobnih računalniških okoljih.
Glavna novica Julije 1.9
Ta nova različica Julie 1.9 vsebuje več izboljšav izvajalnega okolja/prevajalnika, vključno z znatnim skrajšanjem časa do prve izvedbe. Predprevajanje paketov zdaj shrani izvorno kodo v datoteko »pkgimage«, kar pomeni, da kode, ustvarjene med predprevajanjem, po nalaganju paketa ni treba ponovno prevajati. Uporabo načina pkgimages je mogoče onemogočiti z možnostjo »--pkgimages=no«.
Druga pomembna sprememba je, da je mogoče klice z argumenti, ki niso specifični za tip, zdaj optimizirati z uporabo združevanja za vbrizgavanje ali statično razreševanje, tudi če obstaja več različnih vrst kandidatov za oddajo. To lahko izboljša zmogljivost v določenih situacijah, kjer tipi objektov niso v celoti statično razrešeni, s statičnim razreševanjem mest klicev » @nospecialize-d« in izogibanjem ponovnemu prevajanju.
Enoznakovni literali zdaj podpirajo isto sintakso kot nizovni literali; ta sintaksa lahko predstavlja neveljavna zaporedja UTF-8, kot dovoljuje tip Char.
Poleg tega v sistemih Linux in Windows možnost » --threads=auto « zdaj poskuša določiti razpoložljivo število procesorjev na podlagi afinitete CPU-ja, kar je maska, ki se običajno nastavi v okoljih HPC in oblaku.
Možnost » --math-mode=fast « je bila onemogočena in namesto nje je priporočljivo uporabiti makro » @fastmath « , ki ima dobro definirano semantiko. Poleg tega ima parameter » --threads « zdaj obliko »auto | N[,auto|M]« , kjer M določa število interaktivnih niti, ki jih je treba ustvariti.
Dodana je bila možnost » –heap-size-hint=<velikost> « za nastavitev praga, po katerem se začne aktivno zbiranje smeti. Velikost je mogoče določiti v bajtih, kilobajtih (1000 KB), megabajtih (300 MB) ali gigabajtih (1,5 GB).
Makro »@invoke«, predstavljen v različici 1.7, je zdaj izvožen in na voljo za uporabo. Poleg tega zdaj uporablja metodo »Core.Typeof(x)« namesto » Any «, ko je opomba tipa za argument »x« izpuščena. To je potrebno za pravilno obdelavo tipov, posredovanih kot argumenti.
Poleg tega ima `Threads.@spawn` zdaj neobvezen prvi argument `:default` ali `:interactive`. Interaktivna naloga zahteva odziv z nizko zakasnitvijo in je zasnovana tako, da je kratka ali se pogosto izvaja. Interaktivne naloge se bodo izvajale v interaktivnih nitih, če je to določeno ob zagonu Julie.
Druge opazne spremembe vključujejo:
- Negiranje predikatne funkcije "!f" zdaj vrne sestavljeno funkcijo "(!) ∘ f" namesto anonimne funkcije.
- Funkcije razdelitve dimenzij zdaj delujejo na več dimenzijah: «eachslice«, »eachrow« in »eachcol« vrni predmet "Rezine» kar omogoča pošiljanju učinkovitejših metod.
- Makro «@kwdef» je bil dodan v javni API.
- Odpravljena težava z vrstnim redom operacij v »fld1«.
- Razvrščanje je zdaj vedno stabilno skozi čas (preoblikovan QuickSort).
- Privzeto število niti BLAS je zdaj enako številu niti CPE na arhitekturi ARM in polovici števila niti CPE na drugih arhitekturah.
- Printf: Preoblikovana sporočila o napakah za napačno oblikovane nize za boljšo berljivost.
- Profil: nova funkcija »Profile.take_heap_snapshot(file)«, ki zapiše datoteko v formatu ».heapsnapshot«, ki temelji na JSON in podpira Chrome.
- Dodana podpora za specifikacijo Unicode 15.
- Ugnezdene kombinacije tulp in tuple imenovanih znakov je zdaj mogoče uporabiti kot parametre tipa.
Nenazadnje, če vas zanima več informacij, lahko podrobnosti najdete na naslednji povezavi.