ДоступСн язык программирования 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

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