Julia — это высокоуровневый [12] динамический язык программирования общего назначения , чаще всего используемый для численного анализа и вычислительной науки . [13] [14] [15] Отличительные аспекты дизайна Джулии включают систему типов с параметрическим полиморфизмом и использование множественной диспетчеризации в качестве основной парадигмы программирования , эффективную сборку мусора , [16] и систему «точно в срок» (JIT). компилятор [12] [17] (с поддержкой предварительной компиляции [18] [19] [20] ).
Julia может запускаться аналогично (интерпретируемым) языкам сценариев (т. е. у Julia есть REPL ), и по умолчанию [ необходимы пояснения ] с использованием своей среды выполнения (если она предустановлена), [18] но программы/ исходный код Julia также могут быть отправлены по адресу пользователей в одном готовом к установке/запуску файле, который можно сделать быстро, не требуя ничего предустановленного. [ нужна цитация ] Программы Julia также могут быть (отдельно) скомпилированы в двоичные исполняемые файлы , даже допуская распространение без исходного кода. Такая компиляция не нужна для скорости, так как Julia также компилируется при интерактивной работе, но может помочь с сокрытием исходного кода. Возможности языка можно компилировать отдельно, поэтому Julia можно использовать, например, со средой выполнения или без нее (что позволяет использовать меньшие по размеру исполняемые файлы и библиотеки, но ограничено в возможностях).
Программы Julia могут повторно использовать библиотеки из других языков, вызывая их, например, вызывая библиотеки C или Rust , а Julia (библиотеки) также можно вызывать из других языков, например Python и R , и несколько пакетов Julia стали легко доступны из этих языков. в виде библиотек Python и R для соответствующих пакетов Julia. Вызов в любом направлении реализован для многих языков, таких как все эти.
Расширение Julia для Visual Studio Code предоставляет полнофункциональную интегрированную среду разработки с поддержкой отладки, анализа и профилирования . [21] [22] [23] [24]
Работа над Julia началась в 2009 году, когда Джефф Безансон , Стефан Карпински , Вирал Б. Шах и Алан Эдельман задались целью создать свободный язык, который был бы одновременно высокоуровневым и быстрым. 14 февраля 2012 года команда запустила веб-сайт с сообщением в блоге, объясняющим миссию языка. [25] В интервью InfoWorld в апреле 2012 года Карпински сказал об имени «Джулия»: «На самом деле нет веской причины. Это просто показалось красивым именем». [14] Безансон сказал, что выбрал это имя по рекомендации друга, [26] а годы спустя написал:
Может быть, Джулия означает « необычная шепелявость Джеффа автоматизирована »? [27]
Синтаксис Julia теперь считается стабильным, начиная с версии 1.0 в 2018 году, и у Julia есть гарантия обратной совместимости для 1.x, а также обещание стабильности для документированного (стабильного) API , тогда как в предыдущие годы на ранней стадии разработки до 0.7 синтаксис (и семантика) был изменен в новых версиях. Вся экосистема (зарегистрированных пакетов) использует новый и улучшенный синтаксис и в большинстве случаев опирается на новые API, которые добавляются регулярно, а в некоторых случаях добавляется незначительный дополнительный синтаксис с прямой совместимостью, например, в Julia 1.7.
За 10 лет, прошедших с момента запуска версии Julia до 1.0 в 2012 году, сообщество выросло. Экосистема пакетов Julia насчитывает более 11,8 миллионов строк кода (включая документацию и тесты). [28] Научная конференция JuliaCon для пользователей и разработчиков Julia проводится ежегодно с 2014 года: JuliaCon2020 [29] собирает более 28 900 уникальных зрителей, [30] а затем JuliaCon2021 побивает все предыдущие рекорды (более 300 презентаций JuliaCon2021 доступны бесплатно на YouTube (по сравнению со 162 годом ранее) и 43 000 уникальных зрителей во время конференции. [31]
Трое соавторов Julia являются лауреатами Премии Джеймса Х. Уилкинсона в области числового программного обеспечения 2019 года (присуждаемой каждые четыре года) «за создание Julia, инновационной среды для создания высокопроизводительных инструментов, позволяющих анализировать и решение задач вычислительной техники». [32] Кроме того, Алан Эдельман, профессор прикладной математики Массачусетского технологического института , был выбран для получения Премии Сидни Фернбаха от IEEE Computer Society 2019 года «за выдающиеся достижения в области высокопроизводительных вычислений, линейной алгебры и вычислительной науки, а также за вклад в программу Джулии Фернбаха». язык программирования." [33]
И Julia 0.7 [34] , и версия 1.0 были выпущены 8 августа 2018 года. Работа над Julia 0.7 была «огромной задачей» (например, из-за «совершенно нового оптимизатора»), и в семантику были внесены некоторые изменения, например, итерация интерфейс был упрощен. [35] В январе 2019 года была выпущена версия Julia 1.1 с новой функцией «стека исключений». Julia 1.2 была выпущена в августе 2019 года с некоторой встроенной поддержкой веб-браузеров. [36] В версии Julia 1.3 добавлены составной многопоточный параллелизм и система двоичных артефактов для пакетов Julia. [37] В версии Julia 1.4 добавлен синтаксис для индексации общего массива для обработки, например , массивов с отсчетом от 0 . [38] Модель памяти также была изменена. [39] В версии Julia 1.5, выпущенной в августе 2020 года, добавлена поддержка отладки записи и воспроизведения , [40] для инструмента Mozilla rr . В выпуске изменилось поведение REPL (мягкая область видимости) на то, которое используется в Jupyter , но полностью совместимо с кодом, отличным от REPL. Большая часть API потоков была помечена как стабильная, и в этом выпуске «произвольные неизменяемые объекты — независимо от того, есть ли у них поля, ссылающиеся на изменяемые объекты или нет — теперь могут быть выделены в стеке», [41] сокращение выделения кучи, например, views
больше не распределяя. Джулия 1.5 нацелена на производительность так называемого «времени до первого графика» (TTFP, также называемого TTFX, от первого X, более общая проблема), в целом, на скорость самой компиляции (в отличие от производительности сгенерированного кода). ), а также добавлены инструменты для разработчиков, позволяющие улучшить загрузку пакетов. [42] Julia 1.6 была самой крупной версией со времен версии 1.0, она была быстрее по многим направлениям, например, представила параллельную предварительную компиляцию и более быструю загрузку пакетов, в некоторых случаях «50-кратное ускорение времени загрузки для больших деревьев двоичных артефактов». [43] Начиная с версии 1.7, разработка Julia вернулась к выпускам, основанным на времени . [44] Версия Julia 1.7.0 была выпущена в ноябре 2021 года и содержала множество изменений, например, новый более быстрый генератор случайных чисел . Версия Julia 1.7.3 была выпущена 25 мая 2022 года и исправила некоторые проблемы, в том числе как минимум одно обновление безопасности [45] , а версия 1.7.x больше не поддерживается. Julia 1.8 была выпущена в 2022 году (и версии до 1.8.5 в качестве продолжения в январе 2023 года, [46] как с исправлением ошибок ( бэкпортирование ), так и с «аннулированием», что ускоряет компиляцию), с улучшениями для распространения программ Julia без исходного кода. и ускорение компилятора, в некоторых случаях на 25%, [47] и более контролируемый встраивание (т.е.@inline
на месте вызова, а не только на самой функции). Julia 1.9.0 была выпущена 7 мая 2023 года (а позже и 1.9.4, последняя стабильная версия). Он имеет множество улучшений, таких как решение проблемы TTFX/TTFP; в более старых версиях есть предварительная компиляция пакетов, но они не были полностью предварительно скомпилированы в собственный код до версии 1.9, что приводило к более медленному первому использованию. Предварительно скомпилированные пакеты, начиная с версии 1.9, могут работать в сотни раз быстрее при первом использовании (например, для CSV.jl и DataFrames.jl), а для улучшения предварительной компиляции пакетов был введен новый пакет PrecompileTools.jl.
Версия Julia 1.10.0 была выпущена 25 декабря 2023 г. (а обновление Julia 1.10.1 — 14 февраля 2024 г.) со многими новыми функциями, например, улучшенным временем загрузки пакетов и новым синтаксическим анализатором с улучшенными сообщениями об ошибках и улучшенным рендерингом трассировки стека. [ нужна цитата ]
В Julia 1.10.1 и 1.10.0 есть ряд регрессий, некоторые из которых имеют обходные пути, например, для построения графиков, [48] [49] [50] [51] и планируется выпуск 1.10.2.
С 2014 года [52] сообщество Julia проводит ежегодную конференцию Julia, ориентированную на разработчиков и пользователей. Первый JuliaCon состоялся в Чикаго и положил начало ежегодному проведению конференции. С 2014 года конференция проводилась в ряде мест, включая Массачусетский технологический институт [53] и Университет Мэриленда в Балтиморе. [54] Аудитория мероприятия выросла с нескольких десятков человек до более чем 28 900 уникальных посетителей [55] во время JuliaCon 2020, который проходил виртуально. JuliaCon 2021 также проходил виртуально [56] с программными докладами профессоров Уильяма Кахана , главного архитектора стандарта с плавающей запятой IEEE 754 (который используют практически все процессоры и языки, включая Julia), [57] Яна Витека, [58] ] Сяое Шерри Ли и Сумит Чинтала, соавтор PyTorch . [59] JuliaCon вырос до 43 000 уникальных посетителей и более 300 презентаций (по-прежнему в свободном доступе, плюс для более старых лет). JuliaCon 2022 также будет проходить с 27 по 29 июля 2022 года виртуально, впервые на нескольких языках, а не только на английском.
Язык Julia стал проектом, финансируемым NumFOCUS в 2014 году, чтобы обеспечить долгосрочную устойчивость проекта. [60] Джереми Кепнер из Лаборатории Линкольна Массачусетского технологического института был спонсором-основателем проекта Джулии в его первые дни. Кроме того, для разработки Джулии важную роль сыграли средства Фонда Гордона и Бетти Мур , Фонда Альфреда П. Слоана , Intel и таких агентств, как NSF , DARPA , NIH , NASA и FAA . [61] Mozilla , производитель веб-браузера Firefox, с помощью грантов на исследования в первом полугодии 2019 года спонсировала «члена официальной команды Julia» для проекта «Bringing Julia to the Browser», [62] то есть для Firefox и других веб-сайтов. браузеры. [63] [64] [65] [66] Язык Julia также поддерживается отдельными донорами на GitHub. [67]
JuliaHub, Inc. была основана в 2015 году как Julia Computing, Inc. Виралом Б. Шахом , Дипаком Винчи, Аланом Эдельманом , Джеффом Безансоном , Стефаном Карпински и Кено Фишером . [68] [69]
В июне 2017 года компания Julia Computing привлекла начальное финансирование в размере 4,6 миллиона долларов США от General Catalyst и Founder Collective [70] . В том же месяце « Фонд Альфреда П. Слоана предоставил ей 910 000 долларов США для поддержки разработки Julia с открытым исходным кодом , в том числе 160 000 долларов США на содействие разнообразию». в сообществе Julia» [71] , а в декабре 2019 года компания получила финансирование в размере 1,1 миллиона долларов от правительства США на «разработку инструмента машинного обучения нейронных компонентов для снижения общего энергопотребления систем отопления, вентиляции и кондиционирования воздуха (HVAC). в зданиях». [72] В июле 2021 года компания Julia Computing объявила, что привлекла 24 миллиона долларов в рамках раунда серии А под руководством компании Dorilton Ventures, [73] которой также принадлежит команда Формулы-1 Williams Racing , которая сотрудничает с Julia Computing. Коммерческий директор Williams сказал: «Инвестирование в компании, создающие лучшие в своем классе облачные технологии, является стратегическим направлением для Дорилтона, а универсальная платформа Джулии с революционными возможностями моделирования и моделирования очень важна для нашего бизнеса. Мы с нетерпением ждем возможности внедрить Джулию. Компьютерные технологии в самом технологичном виде спорта в мире». [74] В июне 2023 года JuliaHub получила (опять же, теперь уже под новым названием) новые стратегические инвестиции в размере 13 миллионов долларов США от AE Industrial Partners HorizonX («AEI HorizonX»). AEI HorizonX — это платформа венчурного инвестирования, созданная в партнерстве с The Boeing Company , которая использует Julia. [75] Работа Тима Холи (в Вашингтонском университете в Святой лаборатории Сент-Луиса) над Джулией 1.9 (улучшение отзывчивости) финансировалась Инициативой Чана Цукерберга .
Julia — это язык программирования общего назначения [76] , который изначально был разработан для численных/технических вычислений. Он также полезен для системного программирования низкого уровня , [77] в качестве языка спецификации , [78] инструмента высокоуровневого синтеза (HLS) (для аппаратного обеспечения, например FPGA ), [79] и для веб-программирования [80] как на серверная [81] [82] и клиентская [83] [84] сторона.
Основными особенностями языка являются:
Множественная диспетчеризация (также называемая мультиметодами в Lisp) — это обобщение одиночной диспетчеризации — полиморфного механизма, используемого в распространенных языках объектно-ориентированного программирования (ООП), таких как Python , C++ , Java , JavaScript и Smalltalk , — который использует наследование . В Julia все конкретные типы являются подтипами абстрактных типов, прямо или косвенно подтипами типа Any
, который является вершиной иерархии типов. Конкретные типы сами по себе не могут быть подтипированы так, как это возможно в других языках; Вместо этого используется композиция (см. также наследование и подтипирование ).
По умолчанию среда выполнения Julia должна быть предварительно установлена при запуске предоставленного пользователем исходного кода. Альтернативно, приложения Julia (GUI) можно быстро объединить в один файл с помощью AppBundler.jl [85] для «создания приложений Julia GUI в современных форматах установщика настольных приложений. Он использует Snap для Linux, MSIX для Windows и DMG для MacOS». в качестве целей. Он объединяет полную версию Julia в приложении". [86] PackageCompiler.jl может создавать автономные исполняемые файлы , для запуска которых не требуется исходный код Julia. [18]
В Julia все является объектом, как и в объектно-ориентированных языках; однако, в отличие от большинства объектно-ориентированных языков, все функции используют множественную отправку для выбора методов, а не одиночную отправку.
Большинство парадигм программирования можно реализовать с помощью гомоиконных макросов и пакетов Джулии. Синтаксические макросы Джулии (используемые для метапрограммирования ), как и макросы Лиспа, более мощны, чем макросы замены текста , используемые в препроцессорах некоторых других языков, таких как C, поскольку они работают на уровне абстрактных синтаксических деревьев (AST). Макросистема Джулии гигиенична , но также поддерживает преднамеренный захват при желании (как для анафорических макросов ) с помощью esc
конструкции.
Джулия черпает вдохновение из различных диалектов Lisp, включая Scheme и Common Lisp , и он разделяет многие функции с Dylan , также динамическим языком, ориентированным на множественную диспетчеризацию (который имеет инфиксный синтаксис свободной формы, подобный ALGOL , а не Lisp-подобный). синтаксис префикса, тогда как в Julia «все» [87] является выражением ), а в Fortress — еще одном языке числового программирования (который имеет множественную диспетчеризацию и сложную систему параметрических типов). Хотя объектная система Common Lisp (CLOS) добавляет в Common Lisp множественную диспетчеризацию, не все функции являются универсальными функциями.
В Julia, Dylan и Fortress расширяемость используется по умолчанию, а все встроенные функции системы являются универсальными и расширяемыми. В Dylan множественная диспетчеризация так же фундаментальна, как и в Julia: все пользовательские функции и даже базовые встроенные операции, такие как +
универсальные. Однако система типов Дилана не полностью поддерживает параметрические типы, которые более типичны для языков ML . По умолчанию CLOS не допускает диспетчеризации параметрических типов Common Lisp; такая расширенная семантика диспетчеризации может быть добавлена только как расширение через протокол метаобъектов CLOS . Благодаря конвергентному дизайну Fortress также поддерживает множественную диспетчеризацию параметрических типов; однако, в отличие от Julia, Fortress типизирован статически, а не динамически, с отдельными фазами компиляции и выполнения. Возможности языка сведены в следующую таблицу:
Пример расширяемости Julia: пакет Unitful.jl добавляет в язык поддержку физических единиц измерения .
В Julia имеется встроенная поддержка вызова библиотек языка C или Fortran@ccall
с помощью макроса. Дополнительные библиотеки позволяют пользователям работать с Python , [88] R , [89] C++ , [90] Java , [91] и SQL . [92] [93] [94] [95]
Julia можно скомпилировать в двоичные исполняемые файлы с помощью PackageCompiler.jl. [18] Меньшие исполняемые файлы также могут быть написаны с использованием статического подмножества языка, предоставляемого StaticCompiler.jl, который не поддерживает диспетчеризацию во время выполнения (и сбор мусора, поскольку исключает среду выполнения, которая его обеспечивает). [96]
Официальный дистрибутив Julia включает в себя интерактивный цикл чтения-оценки-печати из командной строки (REPL), [97] с возможностью поиска по истории, завершением табуляции , а также выделенными режимами справки и оболочки , [98] который можно использовать для экспериментов и тестирования кода. быстро. [99] Следующий фрагмент представляет пример сеанса, в котором строки автоматически объединяются с помощью println: [100]
Юля> п ( Икс ) знак равно 2 Икс ^ 2 + 1 ; f ( x , y ) = 1 + 2 p ( x ) y julia> println ( «Привет, мир!» , «Я в облаке» , f ( 0 , 4 ), «поскольку Джулия поддерживает узнаваемый синтаксис!» ) Привет мир! Я на облаке 9, так как Юля поддерживает узнаваемый синтаксис!
REPL предоставляет пользователю доступ к системной оболочке и режиму справки путем нажатия ;
или ?
после приглашения (перед каждой командой) соответственно. Он также сохраняет историю команд, в том числе между сеансами. [101] Код можно протестировать внутри интерактивного сеанса Джулии или сохранить в файл с расширением .jl
и запустить из командной строки, набрав: [87]
$ Джулия <имя файла>
Julia использует коды UTF-8 и LaTeX , что позволяет ей поддерживать общие математические символы для многих операторов, например, ∈ для in
оператора, который можно набрать с \in
последующим нажатием Tab ↹(т. е. использует коды LaTeX или также возможно путем простого копирования, например √ и ∛ возможно для функций sqrt и cbrt ). Julia поддерживает последнюю версию Unicode 15.0 (Julia 1.11-DEV поддерживает последнюю версию 15.1 [102] ) [103] для языков мира, даже для исходного кода, например, имен переменных (хотя рекомендуется использовать английский для общедоступный код и, например, имена пакетов).
Julia поддерживается Jupyter , интерактивной онлайн-средой «записных книжек» [104] и Pluto.jl, « реактивной записной книжкой» (где записные книжки сохраняются как чистые файлы Julia), возможной заменой первому типу. [105] Кроме того, издательская система Quarto компании Posit (ранее RStudio Inc.) поддерживает Julia, Python, R и Observable JavaScript (эти языки имеют официальную поддержку компании и даже могут быть объединены в одном документе записной книжки; неофициально поддерживается больше языков). ). [106] [107]
REPL может быть расширен дополнительными режимами и пакетами, например, режимом SQL [ 108] для доступа к базе данных, а RCall.jl добавляет режим R для работы с языком R. [109]
На практике Julia совместима с другими языками (например, с большинством из 10–20 наиболее популярных языков). используется для индивидуального вызова функций общей библиотеки (например, написанных на C или Fortran), а также доступны пакеты, позволяющие вызывать другие языки (которые не предоставляют напрямую функции, экспортированные из C), например Python (с PythonCall.jl), R, MATLAB, C# (и другие языки .NET с DotNET.jl, от них с JdotNET), JavaScript, Java (и другие языки JVM, такие как Scala с JavaCall.jl). А пакеты для других языков позволяют вызывать Julia, например, из Python, R, Rust , Ruby или C#. Например, с juliacall (часть PythonCall.jl, pyjulia — это другой вариант) для вызова из Python и другим пакетом JuliaCall для вызова из R. Julia также использовался для аппаратного обеспечения, т. е. для компиляции в VHDL , как высокоуровневый пакет. инструмент синтеза (HLS) (например, для FPGA ). [79]
У Джулии есть пакеты, поддерживающие такие языки разметки, как HTML (а также для HTTP ), XML , JSON и BSON , а также для баз данных (таких как PostgreSQL, [110] Mongo, [111] Oracle, в том числе для TimesTen , [112] MySQL, SQLite. , Microsoft SQL Server, [111] Amazon Redshift, Vertica, ODBC) и использование Интернета в целом. [113] [114]
Julia имеет встроенный менеджер пакетов и систему реестра по умолчанию. [115] Пакеты чаще всего распространяются в виде исходного кода, размещенного на GitHub , хотя альтернативы также могут быть использованы. Пакеты также можно устанавливать как двоичные файлы с использованием артефактов. [116] Менеджер пакетов Julia используется для запроса и компиляции пакетов, а также для управления средами. Поддерживаются реестры федеративных пакетов, что позволяет добавлять локально реестры, отличные от официальных. [117]
Ядро Julia реализовано на Julia и C вместе с C++ для зависимости LLVM . Анализ кода, понижение кода и начальная загрузка были реализованы в FemtoLisp, диалекте Scheme , до версии 1.10. [118] Начиная с этой версии, для синтаксического анализа используется новый чистый пакет JuliaSyntax.jl (хотя старый пакет все еще можно выбрать) [119] , что повышает скорость и «значительно улучшает сообщения об ошибках синтаксического анализатора в различных случаях». [120] Проект инфраструктуры компилятора LLVM используется в качестве серверной части для генерации оптимизированного машинного кода для всех широко используемых платформ. За некоторыми исключениями, стандартная библиотека реализована в Julia.
Julia изначально поддерживает macOS уровня 1 для 64-битных компьютеров Apple Silicon Mac (ранее компьютеры Mac на базе Apple M1 поддерживались только при запуске в эмуляции Rosetta 2 [121] [122] ), а также полностью поддерживает компьютеры Mac на базе Intel. Однако Julia 1.6 LTS не полностью поддерживает компьютеры Mac на базе Arm (тогда они были помечены как экспериментальные), и эта поддержка была сначала повышена до уровня 2 в Julia 1.8, а затем до уровня 1. Windows на ARM пока не имеет официальной поддержки.
У Джулии четыре уровня поддержки. [123] Поддерживаются все процессоры IA-32, полностью реализующие подархитектуру i686 , и все 64-разрядные процессоры x86-64 (также известные как amd64 ), то есть все процессоры возрастом менее десяти лет. Процессоры Armv8 ( AArch64 ) поддерживаются на втором уровне, а ARMv7 (AArch32) — на третьем уровне. [124] Сотни пакетов имеют ускорение на графическом процессоре : [125] CUDA (т. е. графические процессоры Nvidia; реализация PTX ) имеет поддержку уровня 1 с помощью внешнего пакета (а более старые версии пакета поддерживают вплоть до CUDA 9). Также существуют дополнительные пакеты, поддерживающие другие ускорители, такие как TPU от Google , [126] и некоторые (интегрированные) графические процессоры Intel, через oneAPI.jl , [127] , а графические процессоры AMD поддерживают, например, OpenCL ; и экспериментальная поддержка стека AMD ROCm . [128]
На некоторых платформах Julia может потребоваться скомпилировать из исходного кода (например, исходный Raspberry Pi ) с конкретными параметрами сборки, что и было сделано, и доступны неофициальные предварительно собранные двоичные файлы (и инструкции по сборке). [129] [130] Julia была создана для нескольких платформ ARM, от небольшого Raspberry Pis до (недавнего) топ-1 суперкомпьютера Fugaku на базе ARM A64FX . [131] PowerPC (64-разрядная версия) имеет поддержку уровня 3, что означает, что он «может или не может быть собран». Julia теперь поддерживается в Raspbian [132] , хотя поддержка лучше для более новых Pis, например, с Armv7 или новее; Поддержке Julia способствует Raspberry Pi Foundation . [133]
Хотя для Джулии по умолчанию требуется операционная система и она не имеет официальной поддержки для работы без нее или на встраиваемых системных платформах, таких как Arduino , код Джулии по-прежнему выполняется на ней, с некоторыми ограничениями, то есть на 8-битном процессоре с тактовой частотой 16 МГц ( ATmega328P) . ) AVR-микроконтроллер Arduino с 2 КБ ОЗУ (плюс 32 КБ флэш-памяти). [134] [135]
Джулию приняли во многие университеты, включая Массачусетский технологический институт , Стэнфорд , Калифорнийский университет в Беркли и Университет Кейптауна . Крупные частные фирмы во многих секторах приняли этот язык, включая Amazon , IBM , JP Morgan AI Research, [136] и ASML . Джулия также использовалась правительственными агентствами, включая НАСА и ФАУ , а также всеми национальными энергетическими лабораториями США. [137] [138]
Джулия широко используется для разработки лекарств в фармацевтической промышленности, ее взяли на вооружение компании Moderna , Pfizer , AstraZeneca , Procter & Gamble и United Therapeutics . [158] [159]
Сгенерированные функции Джулии тесно связаны с парадигмой многоэтапного программирования (MSP), популяризированной Таха и Шеардом, которая обобщает этапы времени компиляции/времени выполнения программы, допуская несколько этапов отложенного выполнения кода.
мы показали, что производительность приближается к производительности CUDA C, а иногда и превосходит ее в ряде приложений из набора тестов Rodinia.
Предикат для проверки, работает ли Julia на виртуальной машине JavaScript (JSVM), включая, например, встраивание JavaScript WebAssembly в веб-браузер.
Я до сих пор сталкиваюсь с проблемами, которые это вызывает внутри, потому что это было кардинальное изменение, которое меняет предположения, сделанные некоторыми пользователями, а также выводы/генерацию кода.
Накладные расходы на запись однопоточных процессов обычно ниже 2x, чаще всего от 2% до 50% (ниже для чисто числовых вычислений, выше для рабочих нагрузок, взаимодействующих с ОС).
Записывать несколько потоков или процессов, которые совместно используют память (в отличие от передачи сообщений на основе ядра), сложнее.
[..] Как и ожидалось, тест потоков является худшим нарушителем с накладными расходами около 600%.
Существуют некоторые ограничения по размеру, в пределах которых могут размещаться структуры в стеке, но на практике они вряд ли будут превышены.
Учитывая, что 1.7 не за горами (выпуски будут запланированы)
Раньше загрузка занимала около 80 секунд, но в этом PR время сокращено примерно до 60 секунд.
В этом году JuliaCon был самым масштабным и лучшим за всю историю: более 300 презентаций были доступны бесплатно на YouTube, было зарегистрировано более 20 000 человек и более 43 000 уникальных зрителей YouTube во время конференции по сравнению со 162 презентациями, 10 000 регистраций и 28 900 уникальными зрителями YouTube. во время прошлогодней конференции.
запуск языковых интерпретаторов в WebAssembly.
Чтобы еще больше расширить доступ к ведущим инструментам обработки данных, мы ищем кого-то, кто сможет портировать R или Julia в WebAssembly и попытаться предоставить языковой плагин уровня 3 для Iodide: автоматическое преобразование базовых типов данных между R/Julia и Javascript и возможность совместного использования экземпляров классов между R/Julia и Javascript.
Мы представляем себе будущий рабочий процесс, который позволит вам обрабатывать данные на Python, подгонять быструю модель в R или JAGS, решать некоторые дифференциальные уравнения в Julia, а затем отображать результаты с помощью интерактивной интерактивной визуализации d3+JavaScript… и все такое. это в одном портативном, совместно используемом и взломанном файле.
Общее назначение [..] Julia позволяет писать пользовательские интерфейсы, статически компилировать код или даже развертывать его на веб-сервере.
Бортовая система предотвращения столкновений
Мы представляем прототип инструмента Julia HLS, написанного на Julia, который преобразует код Julia в VHDL.
Таким образом, несмотря на то, что в настоящее время у Julia нет готового многопоточного серверного решения, мы можем легко воспользоваться его функциями распределения процессов и очень популярной технологией балансировки нагрузки, чтобы полностью использовать процессор для обработки HTTP.
вы можете установить пакет Julia OhMyREPL.jl [..], который позволяет настраивать внешний вид и поведение REPL.
string(greet, ", ", whom, ".\n")
пример предпочтительных способов объединения строк. В Julia есть функции println и print, а также макрос @printf (т. е. не в форме функции), позволяющий устранить накладные расходы на форматирование во время выполнения (в отличие от той же функции в C).Доступен список известных проблем для ARM.
Почти 300 пакетов прямо или косвенно зависят от возможностей графического процессора Julia.
Джулия работает со всеми вариантами Pi, мы рекомендуем использовать Pi 3.
Почти все функции Python SDK перереализованы в Julia — для тех немногих, которые этого не сделали, мы также предоставляем вспомогательный пакет PyBraket.jl, который позволяет транслировать объекты Julia в их эквиваленты Python и вызывать Python SDK.
Юлия и первое наблюдение Ω
-
_b → Ξ
+
_c K
-
π
-
Резюме: Джулия готова к использованию в физическом анализе HEP..
обновить версию Джулии до 1.7.3
Группа летных испытаний смогла продемонстрировать… аппарат вертикального взлета и посадки с электрическими и традиционными топливными двигательными установками на борту.
[ Беспилотная
воздушная система]
могла планировать и выполнять эти миссии автономно, используя бортовое оборудование.
Это был первый раз, когда язык программирования Julia использовался на встроенном оборудовании — алгоритмы были предварительно скомпилированы заранее.
Новые подспецификации модели 1002 для оценки DSGE с учетом потрясений, вызванных COVID-19.