Julia (programmeringssprog) - Julia (programming language)

Julia
Julia programmeringssprog Logo.svg
Paradigme Multi-paradigme : multiple dispatch (primær paradigme), proceduremæssig , funktionel , meta , multistage
Designet af Jeff Bezanson , Alan Edelman , Stefan Karpinski , Viral B. Shah
Udvikler Jeff Bezanson , Stefan Karpinski , Viral B. Shah og andre bidragydere
Første gang dukkede op 2012 ; 9 år siden ( 2012 )
Stabil udgivelse
1.6.3  Rediger dette på Wikidata / 23. september 2021 ; 25 dage siden ( 23. september 2021 )
Udgivelsesversion
1.7.0-rc1 / 12. september 2021 ; For 36 dage siden og der arbejdes på 1.7-rc2 og 1.6.4 og 1.8.0-DEV med daglige opdateringer ( 2021-09-12 )
Skrive disciplin Dynamisk , stærk , nominativ , parametrisk , valgfri
Implementeringssprog Julia, C , C ++ , Scheme , LLVM
Platform Tier 1: x86-64 , IA-32 , CUDA /Nvidia GPU'er
Tier 2: 64-bit ARM , 32-bit Windows (64-bit er tier 1)
Tier 3: 32-bit ARM , PowerPC , AMD GPU'er.
Understøtter også oneAPI /Intels GPU'er og Googles TPU'er og understøtter webbrowser (til JavaScript og WebAssemble ) og kan fungere i Android . For flere detaljer se "understøttede platforme" .
OS Linux , macOS , Windows og FreeBSD
Licens MIT (kerne), GPL v2 ; en makefile -indstilling udelader GPL -biblioteker
Filnavn udvidelser .jl
Internet side JuliaLang.org
Påvirket af

Julia er et højt niveau , højtydende, dynamisk programmeringssprog . Selvom det er et almindeligt sprog og kan bruges til at skrive enhver applikation, er mange af dets funktioner velegnede til numerisk analyse og beregningsvidenskab .

Særlige aspekter af Julias design omfatter et typesystem med parametrisk polymorfisme i et dynamisk programmeringssprog ; med multiple forsendelse som sin kerne programmeringsparadigme . Julia understøtter samtidige , (komponerbare) parallelle og distribuerede computere (med eller uden brug af MPI eller det indbyggede svarende til " OpenMP -style" tråde) og direkte opkald til C- og Fortran -biblioteker uden limkode . Julia bruger en just-in-time (JIT) compiler, der omtales som "just- ahead-of-time " (JAOT) i Julia-fællesskabet, da Julia kompilerer al kode (som standard) til maskinkode, før den køres.

Julia indsamles skrald , bruger ivrig evaluering og inkluderer effektive biblioteker til floating-point beregninger, lineær algebra , tilfældig talgenerering og regelmæssig udtrykstilpasning. Mange biblioteker er tilgængelige, herunder nogle (f.eks. Til hurtige Fourier -transformationer ), der tidligere var bundtet med Julia og nu er adskilte.

Flere udviklingsværktøjer understøtter kodning i Julia, f.eks. Integrerede udviklingsmiljøer (f.eks. Microsofts Visual Studio Code , med udvidelser til rådighed, der tilføjer Julia support til IDE'er, f.eks. Understøttelse af fejlfinding og lintning ); med integrerede værktøjer, f.eks. en profilering (og understøttelse af flammediagrammer til rådighed for den indbyggede), debugger og Rebugger.jl-pakken "understøtter gentagen eksekveringsfejlfinding " og mere.

Historie

Arbejdet med Julia blev startet i 2009 af Jeff Bezanson, Stefan Karpinski , Viral B. Shah og Alan Edelman , der satte sig for at skabe et gratis sprog, der var både højt og hurtigt. Den 14. februar 2012 lancerede teamet et websted med et blogindlæg, der forklarer sprogets mission. I et interview med InfoWorld i april 2012 sagde Karpinski om navnet "Julia": "Der er virkelig ingen god grund. Det virkede bare som et smukt navn." Bezanson sagde, at han valgte navnet efter anbefaling fra en ven, og skrev år senere:

Måske står julia for “Jeffs ualmindelige lisp er automatiseret”?

Siden lanceringen i 2012 er Julia -samfundet vokset, og fra 2020 er "Julia blevet downloadet af brugere på mere end 10.000 virksomheder og bruges på mere end 1.500 universiteter" med over 29 millioner downloads fra juli 2021, en stigning på 87% på et år, og Julia -pakkeøkosystemet har over 11,8 millioner kodelinjer (inklusive dokumenter og test). JuliaCon -akademisk konference for Julia -brugere og udviklere har været afholdt årligt siden 2014 med JuliaCon2020, der byder over 28.900 unikke seere velkommen, og derefter slog JuliaCon2021 alle tidligere rekorder (med mere end 300 JuliaCon2021 -præsentationer gratis tilgængelig på YouTube, op fra 162 året før) og 43.000 unikke seere under konferencen.

Version 0.3 blev udgivet i august 2014, version 0.6 i juni 2017. Både Julia 0.7 og version 1.0 blev frigivet den 8. august 2018. Arbejde med Julia 0.7 var en "kæmpe opgave" (f.eks. På grund af en "helt ny optimizer"), og nogle ændringer blev foretaget i semantik, f.eks. blev iterationsgrænsefladen forenklet; og syntaksen ændrede sig lidt (med syntaksen nu stabil, og samme for 1.x og 0.7).

Udgivelseskandidaten til Julia 1.0 (Julia 1.0.0-rc1) blev frigivet den 7. august 2018 og den sidste version et døgn senere. Julia 1.0.x er den ældste version, der stadig understøttes, og har langsigtet support (LTS), ellers understøttes kun den nyeste version på hvert tidspunkt. Julia 1.1 blev udgivet i januar 2019 med f.eks. En ny "undtagelsesstak" -sprogsfunktion. Bugfix -udgivelser forventedes nogenlunde månedligt, for 1.4.x og 1.0.x og Julia 1.0.1 op til 1.0.5 fulgte denne tidsplan. Julia 1.2 blev udgivet i august 2019, og den har f.eks. En vis indbygget understøttelse af webbrowsere (til test, hvis den kører i JavaScript VM). Julia 1.3 tilføjede f.eks. Komponerbar flertrådet parallelisme og et binært artefaktsystem til Julia-pakker.

Julia 1.4 tillod bedre syntaks for matrixindeksering at håndtere f.eks. 0-baserede arrays, med A[begin+1]for det andet element i array A. Hukommelsesmodellen blev også ændret. Mindre udgivelse 1.4.2 fikset f.eks. Et Zlib -problem, fordobling af dekompressionshastighed.

Julia 1.5 frigivet i august 2020 tilføjede rekord- og afspilningsfejlsunderstøttelse til Mozillas rr -værktøj. Det er en stor udgivelse, med ændret adfærd i REPL (soft scope), det samme som bruges i Jupyter , men fuldt ud kompatibel til ikke-REPL-kode. Det meste af tråd -API'et blev markeret som stabilt, og med denne udgivelse kan "vilkårlige uforanderlige objekter - uanset om de har felter, der refererer til omskiftelige objekter eller ej - nu kan stables allokeret", hvilket reducerer bunketildelinger, f.eks. viewsIkke længere tildeles. Alle versioner har arbejdet med ydeevne, men især arbejde med Julia 1.5 målrettet såkaldt "time-to-first-plot" performance, generelt selve kompilationshastigheden (i modsætning til udførelse af den genererede kode), og tilføjer værktøjer for udviklere at forbedre pakkeindlæsning. Julia 1.6 forbedrer også denne ydelse endnu mere.

Pakker, der fungerer i Julia 1.0.x, skal fungere i 1.1.x eller nyere, aktiveret af den fremadkompatible syntaksgaranti. En bemærkelsesværdig undtagelse var fremmedsprogsgrænsefladebiblioteker som JavaCall.jl (for JVM- sprog som Java eller Scala ) og Rcall.jl ( R-sprog ) på grund af nogle trådrelaterede ændringer (på et tidspunkt, hvor al trådfunktionen i Julia var markeret eksperimentel). Problemet var særligt kompliceret for Javas JVM, da det har nogle særlige forventninger til, hvordan stakadresserummet bruges. Der JULIA_ALWAYS_COPY_STACKSblev sendt en løsning, der blev kaldt til Julia 1.3.0, mens en fuld rettelse til Java afventer og ikke har en fastsat forfaldsdato. Derudover viser JVM -versioner siden Java 11 ikke dette problem.

Julia 1.6 var den største udgivelse siden 1.0, hurtigere på mange fronter, f.eks. Indført parallel forkompilering og hurtigere indlæsning af pakker, i nogle tilfælde "50x hurtigere i belastningstider for store træer af binære artefakter", og vil sandsynligvis blive den næste lange- term support (LTS) frigivelse af Julia. Milepælen for 2.0 har i øjeblikket ingen fastsat forfaldsdato.

Julia 1.6.3 blev frigivet den 23. september 2021 (og 1.6 bliver den næste LTS -udgivelse), og Julia 1.7 og 1.8 er de næste milepæle, med 1.7 udskudt til 1. juni 2021 (dvs. siden er 1.7 i funktionsfrysning ) og som af version 1.7 Julia-udviklingen er tilbage til tidsbaserede udgivelser .

Bemærkelsesværdige anvendelser

Julia har tiltrukket nogle højt profilerede brugere, fra investeringsforvalter BlackRock , der bruger den til tidsserieanalyser , til det britiske forsikringsselskab Aviva , der bruger det til risikoberegninger . I 2015 brugte Federal Reserve Bank of New York Julia til at lave modeller af USA's økonomi og bemærkede, at sproget gjorde modelestimering "cirka 10 gange hurtigere" end dens tidligere MATLAB -implementering. Julias medstiftere etablerede Julia Computing i 2015 for at yde betalt support, uddannelse og konsulentydelser til kunder, selvom Julia fortsat er gratis at bruge. På JuliaCon -konferencen 2017 annoncerede Jeffrey Regier, Keno Fischer og andre, at Celeste -projektet brugte Julia til at opnå "topydelse på 1,54  petaFLOPS ved hjælp af 1,3 millioner tråde" på 9300 Knights Landing (KNL) noder på Cori II (Cray XC40) supercomputer (dengang 6. hurtigste computer i verden). Julia slutter sig således til C, C ++ og Fortran som sprog på højt niveau, hvor petaFLOPS-beregninger er opnået.

Tre af Julia-medskabere er modtagerne af James H. Wilkinson-prisen for numerisk software i 2019 (uddelt hvert fjerde år) "for oprettelsen af ​​Julia, et innovativt miljø for oprettelse af højtydende værktøjer, der muliggør analyse og løsning af beregningsvidenskabelige problemer. " Alan Edelman, professor i anvendt matematik ved MIT, er også blevet udvalgt til at modtage IEEE Computer Society Sidney Fernbach Award i 2019 "for fremragende gennembrud inden for højtydende computing, lineær algebra og beregningsvidenskab og for bidrag til programmeringssproget Julia. "

I 2019 annoncerede Julia Computing "tilgængeligheden af ​​programmeringssproget Julia som en færdigpakket beholder på NVIDIA GPU Cloud (NGC) containerregistret" og i et blogindlæg på Nvidias websted står der "Distribuer nemt Julia på x86 og Arm [.. ] Julia tilbyder en pakke til et omfattende HPC -økosystem, der dækker maskinlæring, datavidenskab, forskellige videnskabelige domæner og visualisering. "

Derudover blev "Julia valgt af Climate Modeling Alliance som det eneste implementeringssprog for deres næste generations globale klimamodel. Dette projekt på flere millioner dollars har til formål at opbygge en klimamodel i jordskala, der giver indsigt i virkningerne og udfordringerne ved klimaforandringer. "

Julia bruges af NASA , f.eks. Til modellering af rumskibs adskillelsesdynamik (15.000 gange hurtigere end før med Simulink/MATLAB) og den brasilianske INPE til planlægning af rummissioner og satellitsimulering . En anden indsats arbejder på et integreret projekt for at styre en satellit i rummet ved hjælp af Julia til holdningskontrol .

JuliaCon

Siden 2014 har Julia Community været vært for en årlig Julia -konference med fokus på udviklere og brugere. Den første JuliaCon fandt sted i Chicago og kickstartede den årlige forekomst af konferencen. Siden 2014 har konferencen fundet sted på en række steder, herunder MIT og University of Maryland, Baltimore. Eventpublikummet er vokset fra et par dusin mennesker til over 28.900 unikke deltagere i løbet af JuliaCon 2020, der fandt sted stort set. JuliaCon 2021 finder sted stort set mellem 28. og 30. juli 2021 med hovedtaler fra Jan Vitek, Xiaoye Sherry Li og Soumith Chintala.

Julia samfund

Julia -fællesskabet har en tilstedeværelse på tværs af flere platforme: Twitter, LinkedIn, Facebook, Slack, Zulip, Discord, Discourse, Stack Overflow, YouTube og mere. Siden maj 2017 har Julia Language ansat en community manager; først Alex Arsland, der tjente indtil slutningen af ​​2019 og i øjeblikket Logan Kilpatrick.

Sponsorer

Julia-sproget blev et NumFOCUS Fiscally sponsoreret projekt i 2014 i et forsøg på at sikre projektets langsigtede bæredygtighed. Dr. Jeremy Kepner ved MIT Lincoln Laboratory var grundlæggeren af ​​Julia -projektet i dets tidlige dage. Derudover har midler fra Gordon og Betty Moore Foundation , Alfred P. Sloan Foundation , Intel og agenturer som NSF , DARPA , NIH , NASA og FAA været afgørende for udviklingen af ​​Julia. Mozilla , skaberen af ​​Firefox -webbrowser, sponsorerede "et medlem af det officielle Julia -team" til projektet "Bringing Julia to the Browser", hvilket betyder for Firefox og andre webbrowsere, med sine forskningstilskud til H1 2019. Julia Language understøttes også af individuelle donorer på GitHub.

Julia Computing virksomhed

Julia Computing, Inc. blev grundlagt i 2015 af Viral B. Shah, Deepak Vinchhi, Alan Edelman, Jeff Bezanson, Stefan Karpinski og Keno Fischer .

I juni 2017 rejste Julia Computing 4,6  millioner dollars i frøfinansiering fra General Catalyst and Founder Collective , samme måned blev "bevilget $ 910.000 af Alfred P. Sloan Foundation til at støtte open source Julia-udvikling, herunder $ 160.000 til fremme af mangfoldighed i Julia samfund ", og i december 2019 fik virksomheden 1,1  millioner dollar fra den amerikanske regering til at" udvikle et neuralt komponent -maskinlæringsværktøj til at reducere det samlede energiforbrug til varme-, ventilations- og klimaanlæg (HVAC) -systemer i bygninger ". I juli 2021 annoncerede Julia Computing de rejste en 24 $ millioner serie A ledet af Dorilton Ventures, som også ejer Formel 1 hold Williams Racing , at et samarbejde med Julia Computing. Williams kommercielle direktør sagde: "Investering i virksomheder, der bygger cloud-teknologi i topklasse, er et strategisk fokus for Dorilton og Julias alsidige platform med revolutionerende muligheder inden for simulering og modellering, der er enormt relevant for vores forretning. Vi ser frem til at integrere Julia Computing i verdens mest teknologisk avancerede sport ”.

Sprogfunktioner

Julia er et generelt programmeringssprog , mens det også oprindeligt var designet til numerisk/teknisk computing. Det er også nyttigt til systemprogrammering på lavt niveau , som et specifikationssprog og til webprogrammering på både server- og klientsiden.

Ifølge det officielle websted er sprogets hovedtræk:

  • Flere forsendelser : giver mulighed for at definere funktionsadfærd på tværs af mange kombinationer af argumenttyper
  • Dynamisk typesystem: typer til dokumentation, optimering og afsendelse
  • Ydeevne nærmer sig den for statisk typede sprog som C
  • En indbygget pakkeleder
  • Lisp -lignende makroer og andre metaprogramming faciliteter
  • Call C fungerer direkte: ingen indpakninger eller specielle API'er
  • Mulighed for grænseflade med andre sprog, f.eks. Python med PyCall, R med RCall og Java/Scala med JavaCall
  • Kraftfuld shell -lignende evner til at styre andre processer
  • Designet til parallel og distribueret computing
  • Coroutines : letvægts grøn trådning
  • Brugerdefinerede typer er lige så hurtige og kompakte som indbyggede
  • Automatisk generering af effektiv, specialiseret kode til forskellige argumenttyper
  • Elegante og udvidelige konverteringer og tilbud til numeriske og andre typer
  • Effektiv support til Unicode , herunder men ikke begrænset til UTF-8

Flere forsendelser (også kaldet multimetoder i Lisp) er en generalisering af enkelt afsendelse  -den polymorfe mekanisme, der bruges i almindelige objektorienterede programmeringssprog (OOP)-der bruger arv . I Julia er alle konkrete typer undertyper af abstrakte typer, direkte eller indirekte undertyper af Anytypen, som er toppen af ​​typehierarkiet. Betontyper kan ikke selv undertypes, som de kan på andre sprog; sammensætning bruges i stedet (se også arv vs undertyping ).

Som standard skal Julia-runtime være forudinstalleret, da brugerkode-kildekoden køres. Alternativt kan en enkeltstående eksekverbar fil, der ikke behøver Julia -kildekode, bygges med PackageCompiler.jl .

Julias syntaktiske makroer (anvendes til metaprogramming ), ligesom Lisp makroer, er mere kraftfuld end tekst-substitution makroer , der anvendes i præprocessoren af nogle andre sprog som C, fordi de arbejder på niveau med abstrakte syntaks træer (ASTs). Julias makrosystem er hygiejnisk , men understøtter også bevidst optagelse, når det ønskes (som for anaforiske makroer ) ved hjælp af esckonstruktionen.

Julia henter betydelig inspiration fra forskellige Lisp-dialekter, herunder Scheme og Common Lisp , og den deler mange funktioner med Dylan , også et dynamisk sprog med flere forsendelser (som har et ALGOL- lignende infix- syntaks i fri form frem for et Lisp- som præfiks -syntaks, mens "alt" i Julia er et udtryk ) og med Fortress , et andet numerisk programmeringssprog (som har flere forsendelser og et sofistikeret parametrisk typesystem). Mens Common Lisp Object System (CLOS) tilføjer flere forsendelser til Common Lisp, er ikke alle funktioner generiske funktioner.

I Julia, Dylan og Fortress er extensibility standard, og systemets indbyggede funktioner er alle generiske og udvidelige. I Dylan er flere forsendelser lige så grundlæggende som i Julia: alle brugerdefinerede funktioner og endda grundlæggende indbyggede operationer som +er generiske. Dylans typesystem understøtter imidlertid ikke fuldt ud parametriske typer, der er mere typiske for sproglinjen ML . Som standard tillader CLOS ikke afsendelse af Common Lisp's parametriske typer; sådan udvidet afsendelsessemantik kan kun tilføjes som en udvidelse gennem CLOS Metaobject -protokollen . Ved konvergent design har Fortress også flere forsendelser til parametriske typer; i modsætning til Julia er Fortress imidlertid statisk snarere end dynamisk skrevet med separate kompilerings- og eksekveringsfaser. Sprogfunktionerne er opsummeret i følgende tabel:

Sprog Typesystem Generiske funktioner Parametriske typer
Julia Dynamisk Standard Ja
Almindelig Lisp Dynamisk Tilmeld Ja (men ingen forsendelse)
Dylan Dynamisk Standard Delvis (ingen forsendelse)
Fæstning Statisk Standard Ja

Et eksempel på udvidelsen af ​​Julia, pakken Unitful.jl tilføjer understøttelse af måleenheder til sproget.

Interaktion

Den officielle Julia-distribution indeholder en interaktiv kommandolinje læse-eval-print loop (REPL) med en søgbar historik, fanefuldførelse og dedikerede hjælp- og shell- tilstande, som kan bruges til at eksperimentere og teste kode hurtigt. Følgende fragment repræsenterer et eksempelsessioneksempel, hvor strenge automatisk sammenkædes af println:

julia> p(x) = 2x^2 + 1; f(x, y) = 1 + 2p(x)y
julia> println("Hello world!", " I'm on cloud ", f(0, 4), " as Julia supports recognizable syntax!")
Hello world! I'm on cloud 9 as Julia supports recognizable syntax!

REPL giver brugeren adgang til henholdsvis systemskallen og hjælpefunktionen ved at trykke på henholdsvis ;eller ?efter prompten (forud for hver kommando). Det gemmer også historien om kommandoer, herunder mellem sessioner. Kode, der kan testes inde i Julia's interaktive sektion eller gemmes i en fil med en .jludvidelse og køre fra kommandolinjen ved at skrive:

 $ julia <filename>

Julia understøttes af Jupyter , et online interaktivt "notesbogsmiljø" og Pluto.jl , en " reaktiv notesbog" (hvor notesbøger gemmes som rene Julia -filer), en mulig erstatning for den tidligere slags.

Brug med andre sprog

Julia er i praksis interoperabel med mange sprog (f.eks. Størstedelen af ​​top 10–20 sprog i populær brug). Julias ccallsøgeord bruges til at kalde C-eksporterede eller Fortran delte biblioteksfunktioner individuelt og pakker til at tillade opkald til andre sprog, f.eks. Python, R, MATLAB, Java eller Scala. Og pakker til andre sprog, f.eks. Python (eller R eller Ruby), dvs. pyjulia, for at ringe til Julia.

Julia har support til den nyeste Unicode 13.0, hvor UTF-8 bruges til strenge (som standard) og til Julia kildekode (tillader kun lovlig UTF-8 i den nyeste version), hvilket betyder, at man også tillader fælles matematiske symboler for mange operatører , f.eks. ∈ for inoperatøren.

Julia har pakker, der understøtter markup -sprog som HTML (og også til HTTP ), XML , JSON og BSON og til databaser og webbrug generelt.

Pakkesystem

Julia har en indbygget pakkehåndtering og indeholder et standard registreringssystem. Pakker distribueres oftest som kildekode hostet på GitHub , selvom alternativer også kan bruges lige så godt. Pakker kan også installeres som binære filer ved hjælp af artefakter. Julias pakkeleder bruges til at forespørge og kompilere pakker samt håndtere miljøer. Forbundne pakkeregistre understøttes, så andre registre end embedsmanden kan tilføjes lokalt.

Implementering

Julias kerne er implementeret i Julia og C , sammen med C ++ for LLVM -afhængighed. Parsing og kodesænkning implementeres i FemtoLisp, en skema- dialekt. LLVM-kompilatorinfrastrukturprojektet bruges som bagende til generering af 64-bit eller 32-bit optimeret maskinkode afhængigt af den platform, Julia kører på. Med nogle undtagelser (f.eks. PCRE ) implementeres standardbiblioteket i Julia. Det mest bemærkelsesværdige aspekt af Julias implementering er dens hastighed, som ofte er inden for en faktor to i forhold til fuldt optimeret C -kode (og dermed ofte en størrelsesorden hurtigere end Python eller R ). Udviklingen af ​​Julia begyndte i 2009, og en open source- version blev offentliggjort i februar 2012.

Nuværende og fremtidige platforme

Mens Julia har tier 1 macOS- understøttelse, hvilket betyder for Intel-baserede Mac'er, har de helt nye Apple M1- baserede Mac'er kun eksperimentel support, med fuld support arbejdet på, endnu ikke en tier 1-understøttet platform (heller ikke Windows på ARM ). Det påstås imidlertid, at Julia arbejder "ok" på M1 Mac'er (ved reduceret ydeevne) gennem (automatisk) brug af Rosetta 2 (der skal efterligne Julia). Arbejde med indbygget fuld hastighed M1-understøttelse (dvs. uden emulering) udføres for det meste, og mange programmer kan fungere, hvis en sådan build af Julia bruges, da alle undtagen én Julia-test består (undtagen "For mange åbne filer").

Da Julia bruger JIT, genererer Julia native maskinkode direkte, før en funktion først køres (dvs. en anden tilgang end at kompilere til bytecode , som du distribuerer som standard, for at blive kørt på en virtuel maskine (VM), som f.eks. Med Java/ JVM ; derefter oversat fra bytecode under kørsel, som udført af Dalvik på ældre versioner af Android).

Julia har fire supportniveauer. Alle IA-32- processorer, der fuldstændigt implementerer i686- underarkitekturen, understøttes og 64-bit x86-64 (alias amd64 ), dvs. alle mindre end cirka et årti gamle understøttes. ARMv8 ( AArch64 ) -processorer understøttes på anden række, og ARMv7 og ARMv6 (AArch32) understøttes med nogle forbehold (lavere niveau) for Julia 1.0.x og havde også officielle eksekverbare filer til senere versioner, mens 32-bit ARM-understøttelse senere blev nedgraderet til niveau 3 (uofficielle binære filer er imidlertid tilgængelige til Julia 1.5.1). CUDA (dvs. Nvidia GPU'er; implementering af PTX ) har understøttelse af tier 1 ved hjælp af en ekstern pakke. Der er også pakker, der understøtter andre acceleratorer, f.eks. Googles TPU'er og nogle Intel (integrerede) GPU'er, via oneAPI.jl , og AMDs GPU'er understøtter f.eks. OpenCL ; og eksperimentel support til AMD ROCm -stakken . Julias downloadside indeholder eksekverbare filer (og kilde) til alle de officielt understøttede platforme.

På nogle platforme skal Julia muligvis kompileres fra kildekoden (f.eks. Den originale Raspberry Pi ), med specifikke byggemuligheder, som er blevet udført, og uofficielle præbyggede binærfiler (og byggevejledninger) er tilgængelige. Julia er blevet bygget på flere ARM -platforme. PowerPC (64-bit) har understøttelse af tier 3, hvilket betyder, at den "muligvis ikke bygger". Julia understøttes nu i Raspbian, mens support er bedre til nyere Pis, f.eks. Dem med ARMv7 eller nyere; Julia -støtten fremmes af Raspberry Pi Foundation .

Der er også support til webbrowsere/ JavaScript via JSExpr.jl; og det alternative sprog i webbrowsere, WebAssemble , har minimal support til flere kommende eksterne Julia -projekter. Julia kan kompilere til ARM; således kan der i teorien laves Android -apps med NDK , men foreløbig er Julia blevet tvunget til at køre under Android kun indirekte, altså med en Ubuntu -chroot på Android.

Se også

Noter

Referencer

Yderligere læsning

eksterne links