Statistiksproget Julia får bedre muligheder med tråde

Illustration: Milkos/Bigstock
Version 1.7 kommer med atomiske udtryk.

Julia får bedre muligheder med tråde.

Det er et sprog til statistik og dataanalyse, ligesom R og Python, men med vægt på ydelse i selve sproget, hvor f.eks. Python opnår god ydelse via hurtige biblioteker skrevet i C og udnyttelse af vektorberegninger på grafikkort.

Når ydelsen i selve sproget skal øges, er det centralt at et program kan paralliseres over flere kerner. Derfor behovet for nemmere brug af tråde – samtidig udførelse af programdele – i Julia.

Version 1.7 er på gaden, og her er en række 'race conditions', hvor flere tråde kan spænde ben for hinanden, blevet fjernet fra Julias kørselsmiljø. Det skriver udviklerbloggen Infoq.

Sproget har også fået en ny makro, @atomic, som kan angives ved variabler og udtryk, der kan ændres samtidigt fra flere tråde.

Man kan f.eks. skrive:

y = @atomic a.b.x += 1

– for på atomisk vis at tilgå og inkrementere a.b.x, hvilket vil sige, at kun én tråd af gangen kan udføre sætningen.

Det indebærer, at to tråde kan bruge udtrykket uden at være bange for at skabe en grumset tilstand. Samme mulighed findes i andre sprog, som eksempelvis Javas AtomicInteger. Der er flere makroer i samme genre i den nye udgave, såsom @atomicswap og @atomicreplace.

Blandt andre nyheder er forbedret typeinferens, hvor compileren gætter typen. Det gælder visse slags typeindsnævringer på tværs af funktionskald.

Julias pakkeværktøj kan nu selv finde ud af at downloade og installere pakker, man benytter i sprogets interaktive miljø. Og så er det første udgivelse med understøttelse af Apples M1-processorer, dog foreløbig i en eksperimentel udgave.

Tips og korrekturforslag til denne historie sendes til tip@version2.dk
Følg forløbet
Kommentarer (2)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#2 Rasmus Iversen

Mht atomar korrekthed, er der jo behov for andet end blot at kunne skrive @atomic hvis performance også spiller en rolle (gør det jo nok med store data mængder)

Kunne man ikke få en compare and set også ? Det måske det som der menes med @atomicswap og @atomicreplace :)

  • 0
  • 0
Log ind eller Opret konto for at kommentere