Article de reference

Julia (langage de programmation)

Julia est un langage de programmation dynamique de haut niveau et à usage général , toujours conçu pour être rapide et productif, par exemple pour la science des données, l'inte...

Julia est un langage de programmation dynamique de haut niveau et à usage général , toujours conçu pour être rapide et productif, par exemple pour la science des données, l'intelligence artificielle, l'apprentissage automatique, la modélisation et la simulation, le plus souvent utilisé pour l'analyse numérique et la science computationnelle .

Les aspects distinctifs de la conception de Julia incluent un système de types avec polymorphisme paramétrique et l'utilisation de la répartition multiple comme paradigme de programmation de base , un compilateur juste-à-temps (JIT) par défaut (avec prise en charge de la compilation anticipée ) et un ramasse-miettes efficace . Notamment, Julia ne prend pas en charge les classes avec des méthodes encapsulées et s'appuie plutôt sur des structures avec des méthodes/fonctions génériques qui ne leur sont pas liées.

Par défaut, Julia est exécuté de la même manière que les langages de script, en utilisant son runtime, et permet des interactions , mais les programmes/ codes sources Julia peuvent également être envoyés aux utilisateurs dans un fichier prêt à installer/exécuter, qui peut être créé rapidement, sans avoir besoin de quoi que ce soit de préinstallé. Les programmes Julia peuvent également être compilés (séparément) en exécutables binaires , ce qui permet même une distribution sans code source, et les exécutables peuvent devenir beaucoup plus petits avec Julia 1.12. Une telle compilation n'est pas nécessaire pour la vitesse, bien qu'elle puisse réduire le coût de démarrage à facteur constant, puisque Julia est également compilé lors de l'exécution interactive, mais elle peut aider à masquer le code source. Les fonctionnalités du langage peuvent être compilées séparément, de sorte que Julia peut être utilisé, par exemple, avec son runtime ou sans lui (ce qui permet des exécutables et des bibliothèques plus petits mais est limité en capacités).

Les programmes Julia peuvent réutiliser des bibliothèques d'autres langages en les appelant, par exemple en appelant des bibliothèques C ou Rust , et Julia (les bibliothèques) peut également être appelée à partir d'autres langages, par exemple Python et R , et plusieurs packages Julia ont été rendus facilement disponibles à partir de ces langages, sous la forme de bibliothèques Python et R pour les packages Julia correspondants. L'appel dans les deux sens a été implémenté pour de nombreux langages, pas seulement ceux-ci et C++ .

L'extension Visual Studio Code de Julia fournit un environnement de développement intégré complet avec « autocomplétion dynamique intégrée, résultats en ligne, volet de tracé, REPL intégré, vue variable, navigation dans le code et de nombreuses autres fonctionnalités de langage avancées » par exemple, le débogage est possible, le linting et le profilage .

Histoire

Le travail sur Julia a commencé en 2009, lorsque Jeff Bezanson , Stefan Karpinski , Viral B. Shah et Alan Edelman ont décidé de créer un langage libre à la fois de haut niveau et rapide. Le 14 février 2012, l'équipe a lancé un site Web avec un article de blog expliquant la mission du langage. Dans une interview avec InfoWorld en avril 2012, Karpinski a déclaré à propos du nom « Julia » : « Il n'y a pas vraiment de bonne raison. Cela semblait juste être un joli nom. » Bezanson a déclaré avoir choisi le nom sur la recommandation d'un ami, puis des années plus tard, il a écrit :

Peut-être que Julia signifie « le lisp inhabituel de Jeff est automatisé » ?

La syntaxe de Julia est désormais considérée comme stable, depuis la version 1.0 en 2018, et Julia a une garantie de compatibilité ascendante pour 1.x et également une promesse de stabilité pour l' API documentée (stable) , alors que dans les années précédentes, au début du développement avant 0.7, la syntaxe (et la sémantique) a été modifiée dans les nouvelles versions. L'ensemble de l' écosystème (de paquets enregistrés) utilise la nouvelle syntaxe améliorée et, dans la plupart des cas, s'appuie sur de nouvelles API qui ont été ajoutées régulièrement, et dans certains cas, une syntaxe supplémentaire mineure ajoutée de manière compatible avec l'avenir, par exemple dans Julia 1.7.

Depuis le lancement de Julia pré-1.0 il y a 10 ans, la communauté s'est développée. L'écosystème du package Julia compte plus de 11,8 millions de lignes de code (y compris les documents et les tests). La conférence académique JuliaCon pour les utilisateurs et les développeurs Julia a lieu chaque année depuis 2014, JuliaCon2020 accueillant plus de 28 900 spectateurs uniques, puis JuliaCon2021 battant tous les records précédents (avec plus de 300 présentations JuliaCon2021 disponibles gratuitement sur YouTube, contre 162 l'année précédente), et 43 000 spectateurs uniques pendant la conférence.

Trois des co-créateurs de Julia sont les lauréats du prix James H. Wilkinson 2019 pour les logiciels numériques (décerné tous les quatre ans) « pour la création de Julia, un environnement innovant pour la création d'outils hautes performances qui permettent l'analyse et la résolution de problèmes de science informatique ». De plus, Alan Edelman, professeur de mathématiques appliquées au MIT , a été sélectionné pour recevoir le prix IEEE Computer Society Sidney Fernbach 2019 « pour des avancées exceptionnelles dans le calcul haute performance, l'algèbre linéaire et la science informatique et pour ses contributions au langage de programmation Julia ».

Julia 0.7 et la version 1.0 ont été publiées le 8 août 2018. Le travail sur Julia 0.7 a été une « entreprise énorme » (par exemple, à cause d'un « optimiseur entièrement nouveau »), et certaines modifications ont été apportées à la sémantique, par exemple l' interface d'itération a été simplifiée. Julia 1.6 a été la plus grande version depuis 1.0, et c'était la version de support à long terme (LTS) pendant la plus longue période, plus rapide sur de nombreux fronts, par exemple en introduisant la précompilation parallèle et le chargement plus rapide des paquets, dans certains cas « 50x plus rapide dans les temps de chargement pour les grands arbres d'artefacts binaires ». Depuis 1.7, le développement de Julia est revenu aux versions basées sur le temps . Julia 1.7 a été publiée en novembre 2021 avec de nombreux changements, par exemple un nouveau générateur de nombres aléatoires plus rapide et Julia 1.7.3 a corrigé par exemple au moins un problème de sécurité. Julia 1.8 est sortie en 2022 et 1.8.5 en janvier 2023, avec des améliorations de 1.8.x pour distribuer les programmes Julia sans code source, et une accélération du compilateur, dans certains cas de 25 %, un inlining plus contrôlable (c'est-à-dire qu'il permet désormais également l'application @inlinesur le site d'appel, et pas seulement sur la fonction elle-même). Julia 1.9 est sortie le 7 mai 2023. Elle comporte de nombreuses améliorations, comme la possibilité de précompiler les packages en code machine natif (les anciennes versions de Julia ont également une précompilation pour les packages, mais seulement partielle, jamais complètement en code natif, donc ces versions antérieures avaient une pénalité de "première utilisation", ralentissant en attendant la compilation complète). Les packages précompilés, depuis la version 1.9, peuvent être jusqu'à des centaines de fois plus rapides lors de la première utilisation (par exemple pour CSV.jl et DataFrames.jl ), et pour améliorer la précompilation des packages, un nouveau package PrecompileTools.jl a été introduit. Julia 1.10 est sortie le 25 décembre 2023 avec de nombreuses nouvelles fonctionnalités, par exemple la collecte parallèle des déchets, des temps de chargement de paquets améliorés et un nouvel analyseur, c'est-à-dire réécrit en Julia, avec de meilleurs messages d'erreur et un rendu de stacktrace amélioré.

Julia 1.11 est sortie le 7 octobre 2024 (et 1.11.1 le 16 octobre), et avec elle 1.10.5 est devenue la prochaine version de support à long terme (LTS) (c'est-à-dire que ce sont les deux seules versions prises en charge), depuis remplacée par 1.10.7 sortie le 26 novembre, et 1.6 n'est plus une version LTS. Julia 1.11 ajoute par exemple un nouveau publicmot-clé pour signaler une API publique sûre (il est conseillé aux utilisateurs de Julia d'utiliser une telle API, et non des internes, de Julia ou des packages, et il est conseillé aux auteurs de packages d'utiliser le mot-clé, généralement indirectement, par exemple préfixé par la @compatmacro, de Compat.jl , pour également prendre en charge les anciennes versions de Julia, au moins la version LTS). Julia 1.11.1 a un démarrage bien amélioré (par rapport à 1.11.0 qui avait une régression), et par rapport à 1.10, et cela peut être important pour certains benchmarks.

Certains utilisateurs peuvent vouloir reporter la mise à niveau vers la version 1.11 (par exemple ceux qui appellent Julia depuis R), en raison d'une incompatibilité temporaire connue des packages.

Des exécutables binaires beaucoup plus petits sont possibles, juliacce qui n'est disponible que dans la prochaine version Julia 1.12 (la version « nocturne » actuelle).

JuliaCon

Depuis 2014, la communauté Julia organise une conférence annuelle Julia axée sur les développeurs et les utilisateurs. La première JuliaCon a eu lieu à Chicago et a donné le coup d'envoi de la tenue annuelle de la conférence. Depuis 2014, la conférence a eu lieu dans plusieurs endroits, notamment au MIT et à l'Université du Maryland, à Baltimore. Le public de l'événement est passé de quelques dizaines de personnes à plus de 28 900 participants uniques lors de JuliaCon 2020, qui s'est déroulée virtuellement. JuliaCon 2021 s'est également déroulée virtuellement avec des discours liminaires des professeurs William Kahan , l'architecte principal de la norme à virgule flottante IEEE 754 (que pratiquement tous les processeurs et langages, y compris Julia, utilisent), Jan Vitek, Xiaoye Sherry Li et Soumith Chintala, co-créateur de PyTorch . JuliaCon a accueilli 43 000 participants uniques et plus de 300 présentations (toujours en accès libre, plus pour les années plus anciennes). JuliaCon 2022 sera également virtuelle et se tiendra entre le 27 et le 29 juillet 2022, pour la première fois dans plusieurs langues, et pas seulement en anglais.

Commanditaires

Le langage Julia est devenu un projet financé par NumFOCUS en 2014 dans le but d'assurer la durabilité à long terme du projet. Jeremy Kepner du MIT Lincoln Laboratory a été le sponsor fondateur du projet Julia à ses débuts. En outre, les fonds de la Gordon and Betty Moore Foundation , de la Alfred P. Sloan Foundation , d'Intel et d'agences telles que NSF , DARPA , NIH , NASA et FAA ont été essentiels au développement de Julia. Mozilla , le créateur du navigateur Web Firefox, avec ses subventions de recherche pour le premier semestre 2019, a parrainé « un membre de l'équipe officielle Julia » pour le projet « Bringing Julia to the Browser », c'est-à-dire Firefox et d'autres navigateurs Web. Le langage Julia est également soutenu par des donateurs individuels sur GitHub.

La société Julia

JuliaHub, Inc. a été fondée en 2015 sous le nom de Julia Computing, Inc. par Viral B. Shah , Deepak Vinchhi, Alan Edelman , Jeff Bezanson , Stefan Karpinski et Keno Fischer .

En juin 2017, Julia Computing a levé 4,6 millions de dollars de financement d'amorçage auprès de General Catalyst et Founder Collective, Fondation Alfred P. Sloan a accordé 910 000 dollars pour soutenir le développement open source de Julia, dont 160 000 dollars pour promouvoir la diversité dans la communauté Julia », et en décembre 2019, la société a obtenu un financement de 1,1 million de dollars du gouvernement américain pour « développer un outil d'apprentissage automatique à composants neuronaux pour réduire la consommation totale d'énergie des systèmes de chauffage, de ventilation et de climatisation (CVC) dans les bâtiments ». En juillet 2021, Julia Computing a annoncé avoir levé 24 millions de dollars de série A menée par Dorilton Ventures, qui possède également l'équipe de Formule 1 Williams Racing , qui s'est associée à Julia Computing. Français Le directeur commercial de Williams a déclaré : « Investir dans des entreprises qui développent la meilleure technologie cloud de sa catégorie est un objectif stratégique pour Dorilton et la plateforme polyvalente de Julia, avec des capacités révolutionnaires en matière de simulation et de modélisation, est extrêmement pertinente pour notre activité. Nous sommes impatients d'intégrer Julia Computing dans le sport le plus avancé technologiquement au monde ». En juin 2023, JuliaHub a reçu (à nouveau, maintenant sous son nouveau nom) un nouvel investissement stratégique de 13 millions de dollars dirigé par AE Industrial Partners HorizonX (« AEI HorizonX »). AEI HorizonX est une plateforme d'investissement en capital-risque formée en partenariat avec The Boeing Company , qui utilise Julia. Le travail de Tim Holy (au Holy Lab de l'Université de Washington à St. Louis ) sur Julia 1.9 (amélioration de la réactivité) a été financé par la Chan Zuckerberg Initiative .

Caractéristiques linguistiques

Julia est un langage de programmation à usage général , conçu à l'origine pour le calcul numérique/technique. Il est également utile pour la programmation de systèmes de bas niveau , comme langage de spécification , comme outil de synthèse de haut niveau (HLS) (pour le matériel, par exemple les FPGA ), et pour la programmation Web à la fois côté serveur et côté client .

Les principales caractéristiques du langage sont :

Le dispatch multiple (également appelé multiméthodes en Lisp) est une généralisation du dispatch unique – le mécanisme polymorphe utilisé dans les langages de programmation orientée objet (OOP) courants, tels que Python , C++ , Java , JavaScript et Smalltalk – qui utilise l'héritage . Dans Julia, tous les types concrets sont des sous-types de types abstraits, directement ou indirectement des sous-types du Anytype qui est le sommet de la hiérarchie des types. Les types concrets ne peuvent pas eux-mêmes être sous-typés comme ils le peuvent dans d'autres langages ; la composition est utilisée à la place (voir aussi héritage vs sous-typage ).

Par défaut, l'environnement d'exécution Julia doit être préinstallé lorsque le code source fourni par l'utilisateur est exécuté. Alternativement, les applications Julia (GUI) peuvent être rapidement regroupées dans un seul fichier avec AppBundler.jl pour « créer des applications Julia GUI dans des formats d'installation d'applications de bureau modernes. Il utilise Snap pour Linux, MSIX pour Windows et DMG pour MacOS comme cibles. Il regroupe Julia dans l'application ». PackageCompiler.jl peut créer des exécutables autonomes qui n'ont pas besoin de code source Julia pour s'exécuter.

Dans Julia, tout est un objet, un peu comme dans les langages orientés objet ; cependant, contrairement à la plupart des langages orientés objet, toutes les fonctions utilisent plusieurs répartitions pour sélectionner des méthodes, plutôt qu'une répartition unique.

La plupart des paradigmes de programmation peuvent être implémentés en utilisant les macros et packages homoiconiques de Julia. Les macros syntaxiques de Julia (utilisées pour la métaprogrammation ), comme les macros Lisp, sont plus puissantes que les macros de substitution de texte utilisées dans le préprocesseur de certains autres langages tels que C, car elles fonctionnent au niveau des arbres de syntaxe abstraits (AST). Le système de macros de Julia est hygiénique , mais prend également en charge la capture délibérée lorsque cela est souhaité (comme pour les macros anaphoriques ) à l'aide de la escconstruction.

Julia s'inspire de divers dialectes de Lisp, dont Scheme et Common Lisp , et partage de nombreuses caractéristiques avec Dylan , également un langage dynamique orienté multiple-dispatch (qui propose une syntaxe infixe plutôt qu'une syntaxe préfixe de type Lisp, alors que dans Julia « tout » est une expression ), et avec Fortress , un autre langage de programmation numérique (qui propose un multiple-dispatch et un système de types paramétriques sophistiqué). Bien que Common Lisp Object System (CLOS) ajoute un multiple-dispatch à Common Lisp, toutes les fonctions ne sont pas des fonctions génériques.

Dans Julia, Dylan et Fortress, l'extensibilité est la valeur par défaut et les fonctions intégrées du système sont toutes génériques et extensibles. Dans Dylan, la répartition multiple est aussi fondamentale que dans Julia : toutes les fonctions définies par l'utilisateur et même les opérations intégrées de base comme +sont génériques. Le système de types de Dylan, cependant, ne prend pas entièrement en charge les types paramétriques, qui sont plus typiques de la lignée ML des langages . Par défaut, CLOS ne permet pas la répartition sur les types paramétriques de Common Lisp ; une telle sémantique de répartition étendue ne peut être ajoutée qu'en tant qu'extension via le protocole CLOS Metaobject . De par sa conception convergente, Fortress propose également la répartition multiple sur les types paramétriques ; contrairement à Julia, cependant, Fortress est typé de manière statique plutôt que dynamique, avec des phases de compilation et d'exécution séparées. Les fonctionnalités du langage sont résumées dans le tableau suivant :

Un exemple de l'extensibilité de Julia, le package Unitful.jl ajoute la prise en charge des unités de mesure physiques au langage.

Interopérabilité

Julia dispose d'un support intégré pour appeler des bibliothèques de langage C ou Fortran@ccall à l'aide de la macro. Des bibliothèques supplémentaires permettent aux utilisateurs d'appeler vers ou depuis d'autres langages tels que Python , C++ , Rust , R , Java et d'utiliser SQL .

Option d'exécutables compilés séparément

Julia peut être compilée en exécutables binaires avec PackageCompiler.jl . Des exécutables plus petits peuvent également être écrits en utilisant un sous-ensemble statique du langage fourni par StaticCompiler.jl qui ne prend pas en charge la répartition d'exécution (ni la collecte des déchets, car exclut l'exécution qui le fournit).

Interaction

La distribution officielle Julia comprend une boucle interactive de lecture-évaluation-impression en ligne de commande (REPL), avec un historique consultable, une saisie semi-automatique par tabulation et des modes d'aide et de shell dédiés , qui peuvent être utilisés pour expérimenter et tester rapidement du code. Le fragment suivant représente un exemple de session d'échantillon où les chaînes sont concaténées automatiquement par println :

julia> p ( x ) = 2 x ^ 2 + 1 ; f ( x , y ) = 1 + 2 p ( x ) y julia> println ( "Bonjour le monde !" , " Je suis sur un petit nuage " , f ( 0 , 4 ), " car Julia prend en charge la syntaxe reconnaissable ! " ) Bonjour le monde ! Je suis sur un petit nuage car Julia prend en charge la syntaxe reconnaissable !

Le REPL donne à l'utilisateur l'accès au shell système et au mode d'aide, en appuyant sur ;ou ?après l'invite (précédant chaque commande), respectivement. Il conserve également l'historique des commandes, y compris entre les sessions. Le code peut être testé dans la session interactive de Julia ou enregistré dans un fichier avec une .jlextension et exécuté à partir de la ligne de commande en tapant :

$ julia <nom de fichier> 

Julia utilise les codes UTF-8 et LaTeX , ce qui lui permet de prendre en charge les symboles mathématiques courants pour de nombreux opérateurs, tels que ∈ pour l' inopérateur, saisissable en \inappuyant sur puis Tab ↹(c'est-à-dire qu'elle utilise les codes LaTeX , ou également possible par simple copier-coller, par exemple √ et ∛ possibles pour les fonctions sqrt et cbrt ). Julia prend en charge la dernière version majeure Unicode 15.0 (Julia 1.11-DEV prend en charge la dernière version ponctuelle 15.1 ) pour les langues du monde, même pour le code source, par exemple les noms de variables (alors qu'il est recommandé d'utiliser l'anglais pour le code public, et par exemple les noms de paquets).

Julia est supportée par Jupyter , un environnement de « carnets » interactif en ligne, et Pluto.jl , un « carnet réactif » (où les carnets sont enregistrés sous forme de fichiers Julia purs), un remplacement possible du premier type. De plus, le système de publication Quarto de Posit (anciennement RStudio Inc.) prend en charge Julia, Python, R et Observable JavaScript (ces langages bénéficient d'un support officiel de la société et peuvent même être intégrés dans le même document de bloc-notes, d'autres langages sont pris en charge de manière non officielle).

Le REPL peut être étendu avec des modes supplémentaires, et a été avec des packages, par exemple avec un mode SQL , pour l'accès à la base de données, et RCall.jl ajoute un mode R , pour fonctionner avec le langage R. [

Utiliser avec d'autres langues

Julia est en pratique interopérable avec d'autres langages, en fait avec la majorité des 20 langages les plus utilisés. Julia peut être utilisée pour appeler individuellement des fonctions de bibliothèque partagée, telles que celles écrites en C ou en Fortran, et des packages sont disponibles pour permettre l'appel d'autres langages (qui ne fournissent pas directement de fonctions exportées en C), par exemple Python (avec PythonCall.jl ), R, MATLAB, C# (et d'autres langages .NET avec DotNET.jl , à partir d'eux avec JdotNET ), JavaScript, Java (et d'autres langages JVM, tels que Scala avec JavaCall.jl ). Et des packages pour d'autres langages permettent d'appeler Julia, par exemple depuis Python, R (vers Julia 1.10.x actuellement possible ), Rust , Ruby ou C#. Comme avec juliacall (une partie de PythonCall.jl ) pour appeler depuis Python et un autre package JuliaCall pour appeler, Julia jusqu'à 1.10.x, depuis R. Julia a également été utilisé pour le matériel, c'est-à-dire pour compiler en VHDL , comme outil de synthèse de haut niveau , par exemple les FPGA .

Julia dispose de packages prenant en charge les langages de balisage tels que HTML (et également pour HTTP ), XML , JSON et BSON , ainsi que pour les bases de données (telles que PostgreSQL, Mongo, Oracle, y compris pour TimesTen , MySQL, SQLite, Microsoft SQL Server, Amazon Redshift, Vertica, ODBC) et l'utilisation du Web en général.

Système de paquets

Julia dispose d'un gestionnaire de paquets intégré et inclut un système de registre par défaut. Les paquets sont le plus souvent distribués sous forme de code source hébergé sur GitHub , bien que des alternatives puissent également être utilisées. Les paquets peuvent également être installés sous forme de binaires, à l'aide d'artefacts. Le gestionnaire de paquets de Julia est utilisé pour interroger et compiler des paquets, ainsi que pour gérer des environnements. Les registres de paquets fédérés sont pris en charge, ce qui permet d'ajouter localement d'autres registres que le registre officiel.

Mise en œuvre

Le cœur de Julia est implémenté en Julia et en C , ainsi qu'en C++ pour la dépendance LLVM . L'analyse du code, la réduction du code et l'amorçage ont été implémentés en FemtoLisp, un dialecte Scheme , jusqu'à la version 1.10. JuliaSyntax.jl purement Julia est utilisé pour l'analyse (alors que l'ancien peut toujours être choisi) ce qui améliore la vitesse et « améliore considérablement les messages d'erreur de l'analyseur dans divers cas ». Le projet d'infrastructure du compilateur LLVM est utilisé comme back-end pour générer du code machine optimisé pour toutes les plateformes couramment utilisées. À quelques exceptions près, la bibliothèque standard est implémentée en Julia.

Plateformes actuelles et futures

Julia prend en charge macOS de niveau 1, pour les Mac Apple Silicon 64 bits , de manière native (auparavant, ces Mac basés sur Apple M1 n'étaient pris en charge qu'en exécutant l'émulation Rosetta 2 ), et prend également entièrement en charge les Mac basés sur Intel. Windows sur ARM n'a pas encore de support officiel. Julia a un « support initial d'OpenBSD dans Julia ». mais d'autres choses sont à venir pour que cela fonctionne réellement : https://github.com/JuliaLang/julia/issues/53632 -->

Julia a quatre niveaux de support. Tous les processeurs IA-32 implémentant complètement la sous-architecture i686 sont pris en charge et tous les x86-64 64 bits (alias amd64 ), c'est-à-dire tous ceux qui ont moins d'une décennie, sont pris en charge. Les processeurs Armv8 ( AArch64 ) sont pris en charge sur le premier niveau (pour macOS) ; sinon, le deuxième niveau sur Linux, et ARMv7 (AArch32) sur le troisième niveau. Des centaines de packages sont accélérés par GPU : Les GPU Nvidia ont un support avec CUDA .jl (niveau 1 sur Linux 64 bits et niveau 2 sur Windows 64 bits, le package implémentant PTX , pour une capacité de calcul 3.5 (Kepler) ou supérieure ; les deux nécessitent CUDA 11+, les anciennes versions de package fonctionnent jusqu'à CUDA 9). Il existe également des packages supplémentaires prenant en charge d'autres accélérateurs, tels que les TPU de Google , et certains GPU Intel (intégrés), via oneAPI.jl , et les GPU d'AMD prennent en charge par exemple OpenCL ; et prennent en charge expérimentalement la pile AMD ROCm .

Sur certaines plateformes, Julia peut avoir besoin d'être compilée à partir du code source (par exemple, le Raspberry Pi original ), avec des options de construction spécifiques, ce qui a été fait et des binaires pré-construits non officiels (et des instructions de construction) sont disponibles. Julia a été construite pour plusieurs plateformes ARM, des petits Raspberry Pi au supercalculateur le plus rapide au monde (à un moment donné, jusqu'à récemment) Fugaku basé sur ARM A64FX . PowerPC (64 bits) a un support de niveau 3, ce qui signifie qu'il "peut ou non être construit", et son niveau descendra à 4 pour 1.12, c'est-à-dire qu'il ne fonctionnera plus. Julia est désormais prise en charge dans Raspbian tandis que la prise en charge est meilleure pour les Pis plus récents, par exemple ceux avec Armv7 ou plus récent ; la prise en charge de Julia est promue par la Raspberry Pi Foundation . RISC-V 64 bits , qui dispose d'un code de support dans le noyau Julia.

Bien que Julia nécessite un système d'exploitation par défaut et ne dispose d'aucun support officiel pour fonctionner sans ou sur des plates-formes de systèmes embarqués telles qu'Arduino , le code Julia a toujours été exécuté dessus, avec certaines limitations, c'est-à-dire sur un microcontrôleur AVR 8 bits ( ATmega328P ) 16 MHz baremetal Arduino avec 2 Ko de RAM (plus 32 Ko de mémoire flash).

Adoption

Julia a été adopté dans de nombreuses universités, notamment le MIT , Stanford , UC Berkeley , l'université Ferdowsi de Mashhad et l' université du Cap . De grandes entreprises privées de nombreux secteurs ont adopté le langage, notamment Amazon , IBM , JP Morgan AI Research, et ASML . Julia a également été utilisé par des agences gouvernementales, notamment la NASA et la FAA , ainsi que par tous les laboratoires nationaux américains de l'énergie.

Calcul et ingénierie scientifiques

Produits pharmaceutiques et développement de médicaments

Julia est largement utilisé pour le développement de médicaments dans l'industrie pharmaceutique, ayant été adopté par Moderna , Pfizer , AstraZeneca , Procter & Gamble et United Therapeutics .

Économie, finance et sciences politiques