ДоступСн язык программирования Julia 1.9

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· языка программирования Julia 1.9, ΡΠΎΡ‡Π΅Ρ‚Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ качСства ΠΊΠ°ΠΊ высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° динамичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ встроСнныС срСдства для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Бинтаксис Julia Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ MATLAB с заимствованиСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… элСмСнтов ΠΈΠ· Ruby ΠΈ Lisp. ΠœΠ΅Ρ‚ΠΎΠ΄ манипуляции строками Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ Perl. Код ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° распространяСтся ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ MIT.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности языка:

  • Высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ: ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° являСтся достиТСниС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π»ΠΈΠ·ΠΊΠΎΠΉ ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π½Π° языкС Π‘ΠΈ. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Julia основан Π½Π° Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° LLVM ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ эффСктивный Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ;
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌ программирования, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ элСмСнты ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° прСдоставляСт Π² Ρ‚ΠΎΠΌ числС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для асинхронного Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, управлСния процСссами, вСдСния Π»ΠΎΠ³ΠΎΠ², профилирования ΠΈ управлСния ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ;
  • ДинамичСская типизация: язык Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ явного опрСдСлСния Ρ‚ΠΈΠΏΠΎΠ² для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ со скриптовыми языками программирования. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ΡΡ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹;
  • ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ явного указания Ρ‚ΠΈΠΏΠΎΠ²;
  • Бинтаксис, прСвосходно подходящий для числСнных вычислСний, Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… расчётов, систСм машинного обучСния ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΌΠ½ΠΎΠ³ΠΈΡ… числовых Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ срСдств для распараллСливания вычислСний.
  • Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прямого Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π½Π° языкС Π‘ΠΈ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… прослоСк.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ измСнСния Π² Julia 1.9:

  • НовыС возмоТности языка
    • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ присвоСний Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ «setproperty!(::Module, ::Symbol, x)».
    • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ мноТСствСнноС присваиваниС Π½Π΅ Π² Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. НапримСр строка «a, b…, c = 1, 2, 3, 4» Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° ΠΊΠ°ΠΊ «a = 1; b…, = 2, 3; c = 4». Π­Ρ‚ΠΎ обрабатываСтся Ρ‡Π΅Ρ€Π΅Π· Base.split_rest.
    • Π›ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… символов Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ синтаксис, Ρ‡Ρ‚ΠΎ ΠΈ строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹; Ρ‚.Π΅. синтаксис ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ нСдопустимыС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ UTF-8, ΠΊΠ°ΠΊ это Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Ρ‚ΠΈΠΏΠΎΠΌ Char.
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° спСцификации Unicode 15.
    • Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ ΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ символов Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ‚ΠΈΠΏΠ°.
    • НовыС встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ «getglobal(::Module, ::Symbol[, order])» ΠΈ «setglobal!(::Module, ::Symbol, x[, order])» для чтСния ΠΈ записи ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. ΠœΠ΅Ρ‚ΠΎΠ΄ getglobal Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅Π΅ для доступа ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, Ρ‡Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ getfield.
  • ИзмСнСния Π² языкС
    • ΠœΠ°ΠΊΡ€ΠΎΡ «@invoke», прСдставлСнный Π² вСрсии 1.7, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ экспортируСтся ΠΈ доступСн для использования. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ «Core.Typeof(x)», Π° Π½Π΅ «Any» Π² случаС, ΠΊΠΎΠ³Π΄Π° аннотация Ρ‚ΠΈΠΏΠ° ΠΎΠΏΡƒΡ‰Π΅Π½Π° для Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° «x». Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΈΠΏΡ‹, ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Π΅ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈΡΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.
    • Π’ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ экспортированиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ «invokelatest» ΠΈ макроса «@invokelatest», ΠΏΠΎΡΠ²ΠΈΠ²ΡˆΠΈΡ…ΡΡ Π² вСрсии 1.7.
  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ компилятора/срСды выполнСния
    • Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ сокращСно врСмя Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ выполнСния (TTFX — Time to first execution). ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ компиляция ΠΏΠ°ΠΊΠ΅Ρ‚Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ сохраняСт ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² «pkgimage», Ρ‡Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄, сгСнСрированный Π² процСссС ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ компиляции, Π½Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ компиляции послС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. ИспользованиС Ρ€Π΅ΠΆΠΈΠΌΠ° pkgimages ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΡ†ΠΈΠΈ «—pkgimages=no».
    • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π° извСстная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠΉ слоТности вывСдСния Ρ‚ΠΈΠΏΠΎΠ², ΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ Π²Ρ‹Π²ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ мСньшС памяти. НСкоторыС Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Π΅ случаи с автоматичСски сгСнСрированными Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ функциями (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ModelingToolkit.jl с уравнСниями Π² частных ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΈ большими ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π½ΠΎ-слСдствСнными модСлями) ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС.
    • Π’Ρ‹Π·ΠΎΠ²Ρ‹ с Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Π±Π΅Π· ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Union-splitting для внСдрСния ΠΈΠ»ΠΈ статичСского Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π΄Π°ΠΆΠ΅ Ссли сущСствуСт нСсколько Ρ€Π°Π·Π½ΠΎΡ‚ΠΈΠΏΠΎΠ²Ρ‹Ρ… ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ΠΎΠ² для диспСтчСризации. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ситуациях, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ статичСски Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Ρ‹, Π·Π° счёт статичСского Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ сайтов Π²Ρ‹Π·ΠΎΠ²Π° «@nospecialize-d» ΠΈ избСТания ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΉ компиляции.
    • ВсС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования макроса @pure Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Base Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° Base.@assume_effects.
    • Π’Ρ‹Π·ΠΎΠ²Ρ‹ invoke(f, invokesig, args…) с ΠΌΠ΅Π½Π΅Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Ρ‡Π΅ΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для f(args…) большС Π½Π΅ приводят ΠΊ пСрСкомпиляции ΠΏΠ°ΠΊΠ΅Ρ‚Π°.
  • ИзмСнСния ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки
    • Π’ Linux ΠΈ Windows ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ «—threads=auto» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ пытаСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ доступноС количСство процСссоров Π½Π° основС CPU affinity, маска ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ устанавливаСтся Π² срСдах Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… вычислСний ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… срСдах.
    • ΠžΡ‚ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ «—math-mode=fast», вмСсто ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ макрос «@fastmath», ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ Ρ‡Ρ‘Ρ‚ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ сСмантику.
    • ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ «—threads» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ «auto | N[,auto|M]», Π³Π΄Π΅ M ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ количСство создаваСмых ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² (Π² настоящСС врСмя auto ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ 1).
    • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° опция «—heap-size-hint=<size>», ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‰Π°Ρ ΠΏΠΎΡ€ΠΎΠ³, послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ начинаСтся активная сборку мусора. Π Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ Π² Π±Π°ΠΉΡ‚Π°Ρ…, ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π°Ρ… (1000 ΠšΠ‘), ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Π°Ρ… (300 ΠœΠ‘) ΠΈΠ»ΠΈ Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚Π°Ρ… (1,5 Π“Π‘).
  • ИзмСнСния Π² многопоточности
    • «Threads.@spawn» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ «:default» ΠΈΠ»ΠΈ «:interactive». Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Π°Ρ Π·Π°Π΄Π°Ρ‡Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΌΠ°Π»ΠΎΠΉ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΡ‚ΠΊΠ»ΠΈΠΊΠ° ΠΈ рассчитана Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ ΠΈΠ»ΠΈ часто выполняСмой. Π˜Π½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…, Ссли ΠΎΠ½ΠΈ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ΠΏΡ€ΠΈ запускС Julia.
    • ΠŸΠΎΡ‚ΠΎΠΊΠΈ, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ Π²Π½Π΅ срСды выполнСния Julia (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· C ΠΈΠ»ΠΈ Java), Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄ Julia, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ «jl_adopt_thread». Π­Ρ‚ΠΎ происходит автоматичСски ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ ΠΊΠΎΠ΄Π° Julia Ρ‡Π΅Ρ€Π΅Π· «cfunction» ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²Ρ…ΠΎΠ΄Π° «@ccallable». Как слСдствиС, количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π²ΠΎ врСмя выполнСния.
  • НовыС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
    • Новая функция «Iterators.flatmap».
    • Новая функция «pkgversion(m::Module)» для получСния вСрсии ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ» Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ «pkgdir(m::Module)».
    • Новая функция «stack(x)», которая ΠΎΠ±ΠΎΠ±Ρ‰Π°Π΅Ρ‚ «reduce(hcat, x::Vector{<:Vector})» Π΄ΠΎ любой размСрности ΠΈ допускаСт любой ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². ΠœΠ΅Ρ‚ΠΎΠ΄ «stack(f, x)» ΠΎΠ±ΠΎΠ±Ρ‰Π°Π΅Ρ‚ «mapreduce(f, hcat, x)» ΠΈ являСтся Π±ΠΎΠ»Π΅Π΅ эффСктивным.
    • Новый макрос для Π°Π½Π°Π»ΠΈΠ·Π° Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ памяти «@allocations», Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ «@allocated», Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ выдСлСния памяти, Π° Π½Π΅ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ памяти.
  • НовыС возмоТности Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
    • «RoundFromZero» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ для Ρ‚ΠΈΠΏΠΎΠ², ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΎΡ‚ «BigFloat».
    • «Dict» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ «sizehint!».
    • «@time» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΡ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².
  • ИзмСнСния Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅
    • УстранСна ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ доступа Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ для Dict ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ keys(::Dict), values(::Dict) ΠΈ Set. Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ для Dict ΠΈΠ»ΠΈ Set ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ для Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ количСства ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ дСйствий, ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΠΈΡ… ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€.
    • ΠžΡ‚Ρ€ΠΈΡ†Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π° «!f» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠΎΡΡ‚Π°Π²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ «(!) ∘ f» вмСсто Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.
    • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ срСза размСрности Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… измСрСниях: «eachslice», «eachrow» ΠΈ «eachcol» Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ «Slices», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π΄ΠΈΡΠΏΠ΅Ρ‚Ρ‡Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ для прСдоставлСния Π±ΠΎΠ»Π΅Π΅ эффСктивных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².
    • Π’ общСдоступный API Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ макрос «@kwdef».
    • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с порядком ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² «fld1».
    • Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ всСгда ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ (ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½ QuickSort).
    • «Base.splat» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ экспортируСтся. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ прСдставляСт собой Ρ‚ΠΈΠΏ «Base.Splat», Π° Π½Π΅ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎ позволяСт Π΅Π³ΠΎ красиво Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ.
  • ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²
    • «Package Extensions»: ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π° ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… Π² сСансС Julia. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ сходноС с ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ «Requires.jl», Π½ΠΎ поддСрТиваСтся ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ компиляция ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ настроСк.
  • Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° LinearAlgebra
    • Из-Π·Π° риска ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ с поэлСмСнтным Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ «a / b» ΠΈ «b \ a» со скаляром «a» ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ «b», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ эквивалСнтны «a * pinv(b)».
    • Для Π²Ρ‹Π·ΠΎΠ²Π° BLAS ΠΈ LAPACK Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ примСняСтся «libblastrampoline (LBT)». OpenBLAS поставляСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Π½ΠΎ сборка ΠΎΠ±Ρ€Π°Π·Π° систСмы с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ BLAS/LAPACK Π½Π΅ поддСрТиваСтся. ВмСсто этого рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ LBT для Π·Π°ΠΌΠ΅Π½Ρ‹ BLAS/LAPACK Π½Π° ΠΈΠ½ΠΎΠΉ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉΡΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.
    • «lu» ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ ΡΡ‚Ρ€Π°Ρ‚Π΅Π³ΠΈΡŽ ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ «RowNonZero()», которая Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠΉ элСмСнт ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° для использования с Π½ΠΎΠ²Ρ‹ΠΌΠΈ арифмСтичСскими Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΈ для ΡƒΡ‡Π΅Π±Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ.
    • «normalize(x, p=2)» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ любоС Π½ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ΅ пространство «x», Π²ΠΊΠ»ΡŽΡ‡Π°Ρ скаляры.
    • ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² BLAS ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π²Π½ΠΎ количСству ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² CPU Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ARM ΠΈ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π΅ числа ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² CPU Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ….
  • Printf: Для Π»ΡƒΡ‡ΡˆΠ΅ΠΉ читаСмости ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ… для строк Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°.
  • Profile: Новая функция «Profile.take_heap_snapshot(file)», которая записываСт Ρ„Π°ΠΉΠ» Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ «.heapsnapshot» Π½Π° основС JSON, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΌ Π² Chrome.
  • Random: randn ΠΈ randexp Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ для любого Ρ‚ΠΈΠΏΠ° AbstractFloat, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π³ΠΎ rand.
  • REPL
    • НаТатиС ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ клавиш «Alt-e» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π²Π²ΠΎΠ΄ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅. Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ (Ссли ΠΎΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ) Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°.
    • Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ контСкст модуля, Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π² REPL, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ это Main) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ «REPL.activate(::Module)» ΠΈΠ»ΠΈ ΠΏΡƒΡ‚Ρ‘ΠΌ Π²Π²ΠΎΠ΄Π° модуля Π² REPL ΠΈ наТатия ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ клавиш «Alt-m».
    • Π Π΅ΠΆΠΈΠΌ «Π½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ подсказки», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ числа для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Ρ…ΠΎΠ΄Π° ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈ сохраняСт ΠΎΡ†Π΅Π½Ρ‘Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² Out, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ «REPL.numbered_prompt!()».
    • АвтодополнСниС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ табуляции ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ доступныС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова.
  • SuiteSparse: Код для Ρ€Π΅ΡˆΠ°Ρ‚Π΅Π»Ρ «SuiteSparse» ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Ρ‘Π½ Π² «SparseArrays.jl». Π Π΅ΡˆΠ°Ρ‚Π΅Π»ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ «SuiteSparse.jl».
  • SparseArrays
    • Π Π΅ΡˆΠ°Ρ‚Π΅Π»ΠΈ «SuiteSparse» Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ доступны ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΌΠΎΠ΄ΡƒΠ»ΠΈ «SparseArrays».
    • Π Π΅ΠΆΠΈΠΌΡ‹ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² UMFPACK ΠΈ CHOLMOD ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Ρ‹ Π·Π° счСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ использования Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ «ldiv!» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² UMFPACK Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ бСзопасно.
    • Π­ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ функция «SparseArrays.allowscalar(::Bool)» позволяСт ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ скалярноС индСксированиС Ρ€Π°Π·Ρ€Π΅ΠΆΡ‘Π½Π½Ρ‹Ρ… массивов. Π­Ρ‚Π° функция ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для обнаруТСния случайного скалярного индСксирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² «SparseMatrixCSC», Ρ‡Ρ‚ΠΎ являСтся распространённым источником ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.
  • Новый отказоустойчивый Ρ€Π΅ΠΆΠΈΠΌ для Π½Π°Π±ΠΎΡ€ΠΎΠ² тСстов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ досрочно Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ тСстовый запуск Π² случаС сбоя ΠΈΠ»ΠΈ ошибки. УстанавливаСтся Π»ΠΈΠ±ΠΎ Ρ‡Π΅Ρ€Π΅Π· «@testset kwarg failfast=true», Π»ΠΈΠ±ΠΎ «export JULIA_TEST_FAILFAST=true». ПодобноС Π±Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² запусках CI для досрочного получСния сообщСний ΠΎΠ± ошибкС.
  • Dates: ΠŸΡƒΡΡ‚Ρ‹Π΅ строки большС Π½Π΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΊΠ°ΠΊ допустимыС значСния «DateTime», «Dates» ΠΈΠ»ΠΈ «Times» ΠΈ вмСсто этого Π²Ρ‹Π΄Π°ΡŽΡ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ «ArgumentError» Π² конструкторах ΠΈ синтаксичСском Π°Π½Π°Π»ΠΈΠ·Π΅, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ «tryparse» Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚.
  • ΠŸΠ°ΠΊΠ΅Ρ‚ Distributed
    • ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚Π° (Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, «LOAD_PATH», «DEPOT_PATH») Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ распространяСтся ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссов (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ «addprocs(N::Int)» ΠΈΠ»ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π»Π°Π³Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки «—procs=N»).
    • «addprocs» для Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‡ΠΈΡ… процСссов Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ с ΠΈΠΌΠ΅Π½Π΅ΠΌ «env» для ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… окруТСния Ρ€Π°Π±ΠΎΡ‡ΠΈΠΌ процСссам.
  • Unicode: «graphemes(s, m:n)» Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ подстроку ΠΎΡ‚ m-ΠΉ Π΄ΠΎ n-ΠΉ Π³Ρ€Π°Ρ„Π΅ΠΌΡ‹ Π² «s».
  • ΠŸΠ°ΠΊΠ΅Ρ‚ DelimitedFiles вынСсСн ΠΈΠ· систСмных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ распространяСтся ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ явно установлСн для использования.
  • Π’Π½Π΅ΡˆΠ½ΠΈΠ΅ зависимости
    • Π’ Linux автоматичСски опрСдСляСтся вСрсия систСмной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libstdc++ ΠΈ Ссли ΠΎΠ½Π° Π½ΠΎΠ²Π΅Π΅, Ρ‚ΠΎ загруТаСтся. Π‘Ρ‚Π°Ρ€ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ встроСнной libstdc++ нСзависимо ΠΎΡ‚ вСрсии систСмы ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, установив ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния «JULIA_PROBE_LIBSTDCXX=0».
    • Из Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° julia ΡƒΠ΄Π°Π»Ρ‘Π½ «RPATH», Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти Π² Linux ΠΊ ΠΏΠΎΠ»ΠΎΠΌΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ «RUNPATH».
    • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ инструмСнтов: Π’Ρ‹Π²ΠΎΠ΄ «MethodError» ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ· «methods(my_func)») Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½ ΠΈ Ρ€Π°ΡΠΊΡ€Π°ΡˆΠ΅Π½ Π² соотвСтствии с ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΈ трассировкС стСка.

    Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ