Julia 1.7 プログラミング蚀語のリリヌス

Julia 1.7 プログラミング蚀語のリリヌスが公開され、高性胜、動的型付けのサポヌト、䞊列プログラミング甚の組み蟌みツヌルなどの品質が組み合わされおいたす。 Julia の構文は MATLAB に近く、Ruby ず Lisp からいく぀かの芁玠を借甚しおいたす。 文字列操䜜方法は Perl を圷圿ずさせたす。 プロゞェクト コヌドは MIT ラむセンスに基づいお配垃されたす。

蚀語の䞻な特城:

  • 高いパフォヌマンス: プロゞェクトの重芁な目暙の XNUMX ぀は、C プログラムに近いパフォヌマンスを達成するこずです。 Julia コンパむラは LLVM プロゞェクトの成果に基づいおおり、倚くのタヌゲット プラットフォヌム向けに効率的なネむティブ マシン コヌドを生成したす。
  • オブゞェクト指向プログラミングや関数型プログラミングの芁玠を含む、さたざたなプログラミング パラダむムをサポヌトしたす。 暙準ラむブラリは、非同期 I/O、プロセス制埡、ロギング、プロファむリング、パッケヌゞ管理などの機胜を提䟛したす。
  • 動的型付け: この蚀語では、スクリプト プログラミング蚀語ず同様に、倉数の型を明瀺的に定矩する必芁がありたせん。 むンタラクティブモヌドがサポヌトされおいたす。
  • タむプを明瀺的に指定するオプションの機胜。
  • 数倀蚈算、科孊蚈算、機械孊習、デヌタ芖芚化に最適な構文。 倚くの数倀デヌタ型ず蚈算の䞊列化のためのツヌルのサポヌト。
  • レむダヌを远加せずに C ラむブラリから関数を盎接呌び出す機胜。

Julia 1.7 蚀語の新機胜:

  • 倚次元配列を䜜成するための新しい構文。セミコロンは配列の次元を区切るために䜿甚され、セミコロンの数はサむズを瀺したす。たずえば、「[A; B]」内の 1 ぀のセミコロンは、1 次元目 (1 次元配列の垂盎方向) の連結を意味し、「[A;; B]」が 2 次元目 (行列の新しい行ずしお氎平方向) の連結を意味し、「;;;」が 3 ぀のセミコロンは、 3番目など。
  • 文字列リテラル内の行末のバックスラッシュ (\) によっお、改行文字ずむンデントが削陀されるようになりたした。これを䜿甚するず、䜙分な文字を远加せずに長い行を耇数行のコヌドに分割できたす。
  • コン゜ヌル コマンド リテラル `cmd \
` 内の改行の前のバックスラッシュは、垞に改行を削陀し、シヌケンスを連続した文字列リテラルずしお解釈したすが、以前は結果は未定矩でした。
  • 匏「(; a, b) = x」は、x から別の倉数 a ず b を䜜成したす。この構文は、「a = getproperty(x, :a); b = getproperty(x, :b)」ず同じです。
  • 根号蚘号に察しお暗黙的な乗算が蚱可されるようになりたした (䟋: x√y および x∛y)。
  • 論理挔算子「&&」および「||」を、「.&&」および「||」の圢匏で配列芁玠に䜿甚できるようになりたした。
  • 挔算子 ⫪(U+2AEA, \Top, \downvDash) ず â««(U+2AEB, \Bot, \upvDash, \indep) を二項挔算子ずしお䜿甚できるようになりたした。
  • デフォルト倀 auto で @inbounds マクロを制埡するための "--check-bounds=yes|no|auto" オプションを远加したした。

蚀語の倉曎

  • デフォルトの疑䌌乱数生成噚がメルセンヌツむスタヌからXoshiro256++に倉曎されたした。これにより、明瀺的なRNGオブゞェクトを䜿甚しない限り、すべおの乱数は同じシヌドであっおも異なりたす。新しい生成噚はパフォヌマンスが向䞊し、統蚈情報も優れおおり、マルチスレッドプログラムで再珟可胜な乱数生成に䜿甚されたす実行䞭の各タスクの状態を保持し、新しいタスクの䜜成時に別の状態をフォヌクしたす。
  • 匏の右偎から倀を取埗する際に、巊偎の代入䞭に構造化代入によっお倀が倉曎されなくなりたした。䟋えば、配列 x の堎合、「x[2], x[1] = x」ずいう匏は、x の1番目ず2番目の芁玠を入れ替えたす。以前は、x ぞの代入の反埩凊理䞭に x[XNUMX] が倉曎されたため、䞡方の芁玠に x[XNUMX] が䜿甚されおいたした。
  • macroexpand、@macroexpand、および @macroexpand1 は LoadError をスロヌしなくなりたした。圱響を受けるテストが動䜜し続けるように、@test_throws も倉曎されたした。
  • 䞭点「·」(\cdotpU+00b7) ずギリシャ語の句読点「·」(U+0387) は、ドット挔算子「⋅」(\cdotU+22c5) ず同等に扱われるようになりたした。
  • マむナス蚘号 '−' (\minusU+2212) は、ハむフンマむナス蚘号 '-' (U+002d) ず同等に扱われるようになりたした。
  • Iterators.peel(itr) は、itr が空の堎合に BoundsError 䟋倖をスロヌするのではなく、「nothing」を返すようになりたした。
  • 配列匏内の連続する耇数のセミコロンは以前は無芖されおいたした (䟋: "[1 ;; 2] == [1 ; 2]")。この構文は珟圚、ディメンションを区切るために䜿甚されおいたす。
  • 解析/評䟡コヌド挿入の可胜性を枛らすために、文字列ずコメントでは Unicode の䞍均衡な曞匏指定「#= ... =#」が犁止されるようになりたした。

コマンドラむンオプションの倉曎

  • julia --project オプションず JULIA_PROJECT 環境倉数は、共有環境の遞択をサポヌトするようになりたした。たずえば、 julia --project=@myenv ず export JULIA_PROJECT="@myenv" は同等になりたした。

マルチスレッドの倉曎

  • アトミック ポむンタ操䜜の組み蟌み関数が、特定のバむト サむズに察しお定矩されるようになりたした。
  • 倉曎可胜な構造䜓の個々のフィヌルドをアトミ​​ックずしお宣蚀および䜿甚するためのサポヌトが远加されたした。新しいマクロ @atomic を参照しおください。
  • JULIA_NUM_THREADS 環境倉数が「auto」に蚭定されおいる堎合、スレッド数はプロセッサ スレッド数ず同じになりたす。
  • 各 Task オブゞェクトにはロヌカル乱数ゞェネレヌタヌの状態があり、デフォルトでは䞊列シミュレヌション コヌドの再珟可胜な (スケゞュヌルに䟝存しない) 実行が保蚌されたす。デフォルトのゞェネレヌタヌも、以前のバヌゞョンよりもはるかに高速に䞊列実行されたす。
  • タスクをスレッド間で移動できるようになりたした。以前は、タスクは垞に最初に実行したスレッドで実行されおいたした。

新しいラむブラリ関数

  • findmax(f, domain)、argmax(f, domain) メ゜ッドず、2 ぀の匕数を持぀察応する "min" バヌゞョンを远加したした。
  • isunordered(x) は、x が NaN や欠損倀など順序付けられおいない倀である堎合に true を返したす。
  • 敎数のリスト inds の vector[inds] ず同等の新しい関数 keepat!(vector, inds)。
  • 2 ぀の匕数を取る lock(f, lck) メ゜ッドは、2 番目の匕数ずしお Channel を受け入れるようになりたした。
  • 新しい関数 Returns(value) は、任意の匕数に察しお倀を返したす。
  • 新しいマクロ @something ず @coalesce は、それぞれ something ず coalesce のバヌゞョンです。
  • stdin、stdout、stderr をリダむレクトするための新しい redirect_stdio 関数。
  • 新しいマクロ「Base.@invoke f(arg1::T1, arg2::T2; kwargs
)」は、「invoke(f, Tuple{T1,T2}, arg1, arg2; kwargs
)」を呌び出すための簡単な構文を提䟛したす。
  • 新しいマクロ「Base.@invokelatest f(args
; kwargs
)」は、「Base.invokelatest(f, args
; kwargs
)」を呌び出す䟿利な方法を提䟛したす。

新しいラむブラリ機胜

  • IOContext に枡す属性を指定するには、コンテキスト キヌワヌドを䜿甚しお「:key => value」ずいう圢匏のタプルを䜜成できたす。
  • bytes2hex ず hex2bytes は、「Union{String,AbstractVector{UInt8}}」型の匕数に制限されなくなり、型がシヌケンスであり、蚈算可胜な長さを持぀こずのみが必芁になりたした。
  • stat(file) に、より詳现で䟿利な衚瀺メ゜ッドが远加されたした。

暙準ラむブラリの倉曎

  • count ず findall は、文字列内の文字を怜玢するために AbstractChar 匕数を取るようになりたした。
  • 新しいメ゜ッド range(start, stop) ず range(start, stop, length)。
  • range はオプションのキヌワヌド匕数ずしお start をサポヌトするようになりたした。
  • 䞀郚の範囲操䜜では、StepRange ではなく StepRangeLen が返されるようになり、最終ステップがれロになるようになりたした。以前はλ .* (1:9)はλ = 0のずきに゚ラヌを発生しおいたした。
  • islowercase ず isuppercase は、Unicode の小文字ず倧文字のカテゎリを凊理するようになりたした。
  • iseven 関数ず isodd 関数は、Integer 以倖の型をサポヌトするようになりたした。
  • escape_string は、そのたた残しおおくべき文字に察しお、 keep キヌワヌドを介しお文字セットを受け入れるようになりたした。
  • NamedTuple の getindex は、耇数の倀をむンデックスするために文字のタプルを受け入れるようになりたした。
  • AbstractRange サブタむプは、Bool のむンデックスを䜜成するずき、Bool スカラヌの゚ラヌ、および Bool の配列 (範囲を含む) を論理むンデックスずしお扱うずきに、䞀般的な配列のむンデックス䜜成動䜜に埓いたす。
  • keys(::RegexMatch) は、正芏衚珟のキャプチャ キヌを名前で返したす。名前がない堎合はむンデックスで返したす。
  • keys(::Generator) は反埩子のキヌを返したす。
  • RegexMatch は反埩凊理を実行し、キャプチャされた郚分文字列を生成したす。
  • lpad/rpad はテキスト幅に察しお定矩されたす。
  • Test.@test は、名前付き匕数 broken ず skip を受け入れるようになりたした。これらは Test.@test_broken ず Test.@test_skip の動䜜を再珟したすが、特定の条件䞋でのみ倱敗するテストをスキップできたす。たずえば、 if T == Float64 @test_broken isequal(complex(one(T)) / complex(T(Inf), T(-Inf)), complex(zero(T), zero(T))) else @test isequal(complex(one(T)) / complex(T(Inf), T(-Inf)), complex(zero(T), zero(T))) end は、 @test isequal(complex(one(T)) / complex(T(Inf), T(-Inf)), complex(zero(T), zero(T))) broken=(T == Float64) に眮き換えるこずができたす。
  • @lock が Base から゚クスポヌトされるようになりたした。
  • 実隓的な Base.catch_stack() 関数の名前が current_exceptions() に倉曎され、特定の戻り倀の型が指定されたした。
  • 䞀郚の䞉角関数 (sind、cosd、tand、asind、acosd、asecd、acscd、acotd、atand) が正方行列を受け入れるようになりたした。
  • replace(::String) は耇数のパタヌンを受け入れるようになりたした。これらのパタヌンは巊から右ぞ同時に適甚されるため、どの文字にも 1 ぀のパタヌンのみが適甚され、パタヌンは入力テキストにのみ適甚され、埌続の眮換には適甚されたせん。
  • 長さ関数は、特定のタむプの指定された範囲においお、ほずんどの堎合に敎数オヌバヌフロヌをチェックしなくなりたした。 checked_length は、結果が繰り䞊がる可胜性がある堎合にオヌバヌフロヌ点たでチェックされた挔算を䜿甚する新しい関数です。たたは、範囲オヌバヌフロヌのリスクがある堎合は、SaferIntegers.jl パッケヌゞを䜿甚したす。
  • タプル内の芁玠を眮き換えるための新しい replace メ゜ッド。

パッケヌゞマネヌゞャヌ

  • コン゜ヌル モヌド「julia>」では、むンストヌルされおいないがレゞストリ「pkg> add」で䜿甚可胜なパッケヌゞを䜿甚たたはむンポヌトする堎合、パッケヌゞを自動的にむンストヌルするこずをお勧めしたす。
  • Manifest.toml は、マニフェストを生成した julia のバヌゞョンを含む、新しいメタデヌタを備えた新しい圢匏を䜿甚したす。叀い圢匏のマニフェストは、ナヌザヌが Pkg.upgrade_manifest() を実行するたで、元の圢匏で匕き続きサポヌトされたす。
  • 「pkg> precompile」は、ダりンロヌド枈みのパッケヌゞを次のセッションたで延期するのではなく、新しいバヌゞョンをプリコンパむルするようになりたした。
  • 「pkg> rm、pin、free」は、すべおのパッケヌゞに察しお䞀床にアクションを呌び出すための「--all」匕数をサポヌトするようになりたした。
  • Pkg サヌバヌ (git ではない) からダりンロヌドされたレゞストリはファむルに解凍されず、アヌカむブから盎接メモリに読み取られたす。この機胜を無効にするには、環境倉数 JULIA_PKG_UNPACK_REGISTRY=true を蚭定したす。
  • 環境倉数 JULIA_PKG_USE_CLI_GIT=true を蚭定するこずで、Git プロトコル経由で行われるダりンロヌドにデフォルトの libgit2 ラむブラリの代わりに倖郚の git 実行可胜ファむルを䜿甚できるようになりたした。
  • ダりンロヌドしたレゞストリ サヌバヌ Pkggitではありたせんは䞍倉ずみなされるようになりたした。これらのファむルぞの手動倉曎は、実行䞭のPkgセッションでは反映されない可胜性がありたす。
  • REPL モヌドでディレクトリ名でパッケヌゞを远加する堎合、パッケヌゞが珟圚のディレクトリにある堎合は名前に「./」を远加する必芁がありたす。たずえば、「add Package」ではなく「add ./Package」です。これは、パッケヌゞ名 Package ずロヌカル パッケヌゞ ディレクトリの混乱を避けるために行われたす。
  • PackageSpec の mode キヌワヌドが削陀されたした。

線圢代数

  • Libblastrampoline を䜿甚しお、実行時に BLAS ず LAPACK を接続したす。デフォルトでは、OpenBLAS は Julia ディストリビュヌションの䞀郚ずしお含たれおいたす。新しい接続メカニズムを䜿甚するず、BLAS ず LAPACK をナヌザヌ蚭定に眮き換えるこずができたす。
  • aarch64 では、OpenBLAS は他のすべおの 64 ビット プラットフォヌムず同様に ILP64 BLAS を䜿甚したす。
  • OpenBLAS がバヌゞョン 0.3.13 に曎新されたした。
  • SuiteSparse がバヌゞョン 5.8.1 に曎新されたした。
  • UpperHessenberg 行列の圢状は、UpperTriangular 行列による乗算や陀算などの特定の算術挔算では保持されたす。
  • 実準䞉角シュアヌ分解は、匏「Schur{Complex}(S)」を䜿甚しお耇玠䞊䞉角圢匏に倉換できるようになりたした。
  • cis(A) は匕数ずしお行列をサポヌトするようになりたした。
  • dot は AbstractMatrix 型の UniformScaling をサポヌトしおいたす。
  • qr[!] ず lu[!] は、オプションのピボット匕数ずしお、LinearAlgebra.PivotingStrategy のシングルトン倀をサポヌトするようになりたした。デフォルト倀は、ピボットありの堎合は qr(A, NoPivot()) 、ピボットなしの堎合は lu(A, RowMaximum()) です。以前の Val{true/false} 呌び出しは非掚奚です。
  • det(M::AbstractMatrix{BigInt}) は det_bareiss(M) を呌び出したす。det_bareiss(M) は Bareiss アルゎリズムを䜿甚しお正確な倀を蚈算したす。

亀換

  • REPL に衚瀺されるずきに、構文 "head" ⋯ 12345 バむト ⋯ "tail" を䜿甚しお長い行が削陀されるようになりたした。
  • クリップボヌドから REPL に Repl の䟋を貌り付けるず、すべおの Repl モヌド (julia、pkg、shell、help?) がサポヌトされ、モヌドが自動的に切り替わりたす。
  • ドキュメント文字列のないモゞュヌルの「help?>」は、゚クスポヌトされた名前のリストを返すようになり、芋぀かった堎合は関連する README.md の内容を出力するようになりたした。

スパヌス配列

  • 新しいメ゜ッド sizehint!(::SparseMatrixCSC, ::Integer)\。
  • cholesky() は、ナヌザヌ指定の順列を完党に保持するようになりたした。
  • ラッパヌの芪配列の issparse をチェックするこずで、ネストされた配列も含め、すべおのラッパヌ配列に issparse が䞀貫しお適甚されるようになりたした。

日付操䜜

  • Dates.periods 関数を䜿甚するず、CompoundPeriod の Period から Vector 倀を取埗できたす。

ダりンロヌド

  • リダむレクトされたリク゚ストに Cookie ヘッダヌが蚭定されおいる堎合、その Cookie は埌続のリク゚ストで送信されるようになりたす。
  • ~/.netrc ファむルが存圚する堎合、認蚌を必芁ずする Web サむトのパスワヌドの゜ヌスずしお䜿甚されたす。
  • サヌバヌ ID が怜蚌されおいない堎合でも、すべおの TLS 接続でサヌバヌ名の衚瀺が実行されるようになりたした (NetworkOptions を参照)。
  • TLS接続を確認する際 Windowsもし サヌバ Птзыва сертОфОкатПв МеЎПступеМ, сПеЎОМеМОе разрешеМП; этП сППтветствует тПЌу, чтП Ўелают ЎругОе прОлПжеМОя О как выпПлМяется Птзыв в macOS.
  • 接続が確立されるたで 30 秒、デヌタが送信されるたで 20 秒の埅機時間が発生したす。これにより、接続が維持され、XNUMX 分以内に切断されるこずが保蚌されたす。

タヌル

  • Tar.extract は、tarball の正確な暩限モヌドを無芖し、Tar.create ず同じ方法でモヌドを正芏化したす。これはgitに䌌おいたす。
  • tar アヌカむブを䜿甚する関数は、ハヌド リンクを凊理するようになりたした。リンク タヌゲットは、以前に衚瀺したファむルである必芁がありたす。 Tar.list は、:hardlink タむプず、タヌゲットぞのパスを指定する .link フィヌルドを持぀゚ントリをリストしたす。その他の関数Tar.extract、Tar.rewrite、Tar.tree_hashは、ハヌドリンクをタヌゲットファむルのコピヌに倉換したす。
  • Tar.create および Tar.rewrite によっお䜜成された暙準圢匏に、空でないディレクトリの゚ントリが含たれるようになりたした。 tarball を䜿甚する䞀郚のツヌル (docker を含む) は、これらのディレクトリ ゚ントリがないために混乱したす。
  • Tar は珟圚、8 進敎数ヘッダヌ フィヌルドの先頭にスペヌスがある tarball を受け入れたす。これは、POSIX 仕様によれば技術的には無効な圢匏ですが、叀い Solaris tar コマンドはこのようなアヌカむブを䜜成しおいたため、この圢匏は実際に存圚し、受け入れおも無害であるず思われたす。
  • Tar.extract は、デフォルトで true に蚭定される set_permissions キヌワヌド匕数を受け入れるようになりたした。代わりに false が枡された堎合、抜出されたファむルの暩限は抜出時に倉曎されたせん。

Mマップ

  • mmap が゚クスポヌトされ、䜿甚できるようになりたした。

区切りファむル

  • Readdlm は、異垞なファむルシステム状況でも䞀貫した信頌性を確保するために、すべおのオペレヌティング システムでデフォルトで use_mmap=false に蚭定されたす。

出所 オヌプンネット.ru

DDoS 保護機胜を備えた信頌性の高いサむト甚ホスティング、VPS VDS サヌバヌを賌入する 🔥 DDoS攻撃察策付きの信頌性の高いりェブサむトホスティング、VPS/VDSサヌバヌを賌入したしょう | ProHoster