ホームページ >ウェブフロントエンド >jsチュートリアル >回想的な
2024 年の振り返りと今後の展望。
2024 年は、stdlib にとって、進歩、革新、コミュニティの成長が詰まった 画期的な年でした。振り返ってみると、stdlib コミュニティのメンバーが既存の API を改良し、新しい機能を作成し、今後のエキサイティングな道への基礎を築くのに費やした時間と労力の多さに驚かされます。私は、ウェブ上の科学技術コンピューティングの未来を積極的に形成しているコミュニティの一員になれることを信じられないほど幸運に感じており、今後数か月間も継続的な成功を収めることに強気です。
この投稿では、いくつかの重要なハイライトを要約し、2025 年に何が起こるかを予見します。私は個々の貢献者にさまざまなエールを送りますが、今年達成したことはすべて、全体の貢献なしには実現できなかったでしょう。 stdlib コミュニティ。コミュニティは、バグの発見とパッチ適用からプル リクエストのレビューと問題の優先順位付け、数値アルゴリズムとソフトウェア設計の雑草の詳細への調査まで、stdlib を成功させるために必要な大変な作業を行うのに役立ちました。私があなたの名前を言及しない場合でも、あなたの努力が認められ、大いに評価されていることを必ず知っておいてください。関係者の皆様、そして大なり小なり協力してくださった皆様に心より感謝申し上げます。 ❤️
この 1 年は、stdlib にとって大きな変革をもたらし、大幅な成長、イノベーション、コミュニティへの貢献が特徴でした。主なハイライトは次のとおりです:
stdlib の急速な成長とグローバル コミュニティの共同の努力により、私たちは Web 上の科学技術コンピューティングの未来を形作っています。このエキサイティングな旅の次のステップにぜひご参加ください!
まずは年末のハイレベルな統計から始めましょう。今年は
これらの成果は、コミュニティの熱心な努力と献身を反映しています。今年は忙しい年で、私たちはプロジェクトとコミュニティが成長し続ける中で、どのように効果的に規模を拡大できるかについて批判的に考える必要がありました。これは、ツールと自動化に投資し、レビューとリリースのプロセスを改善し、新しい貢献者を迅速に特定してスキルを向上させる方法を見つけることを意味しました。
2024 年の stdlib の動きを本格的に動かしたのは、Google Summer of Code (GSoC) への参加でした。以前は2023年に申請していましたが、拒否されました。そのため、2024 年に申請したときは、チャンスはあまりないと考えていました。私たちの驚きと喜びに、stdlib が受け入れられたことにより、今後の貢献者の流入に対処できるように、私たちの業務をまとめるために猛ダッシュが始まりました。
GSoC は、才能ある貢献者を呼び込み、重要なプロジェクトを推進することで、stdlib にとって変革的なエクスペリエンスとなりました。 GSoC の振り返りで詳しく説明したように、道はでこぼこしていましたが、私たちは多くのことを学び、反対側から抜け出すことができました。言うまでもなく、Aman Bhansali、Gunj Joshi、Jaysukh Makvana、Snehil Shah という 4 人の真に優れた GSoC 貢献者がいたことは非常に幸運でした。彼らの仕事については、以下のセクションでもう少し詳しく説明します。
Node.js の read-eval-print ループ (REPL) は、JavaScript の世界では後付けのようなものであることが多く、十分に活用されておらず、十分に評価されていません。 stdlib の初期の頃から、私たちは stdlib の科学計算およびデータ処理機能の統合サポートにより、より優れた REPL エクスペリエンスを作成したいと考えていました。 stdlib REPL の開発は順調に進んでいますが、JavaScript でのインタラクティブな探索的データ分析を容易にするために、Python の IPython の能力と機能セットに匹敵するという目標が常にありました。したがって、Snehil Shah が GSoC の一部として stdlib REPL に取り組むことに興味を示したとき、私たちは非常に興奮しました。
Snehil は、以前のブログ投稿「REPL に色彩を歓迎!」ですでに彼の作品の一部を取り上げていますが、彼や他の人の作品はさらに多くのことを取り上げています。いくつかのハイライト:
Snehil の取り組みのおかげで、私たちは 2024 年に IPython 同等に大幅に近づき、科学計算用の JavaScript エクスペリエンスを変革しました。そしてまだ終わっていません。プル リクエストはまだキュー内で処理されていますが、私が特に興奮していることの 1 つは、最近 Jupyter プロトコルのサポートの追加を検討し始めたことです。 2025 年の REPL に関する追加ニュースにご期待ください!
もう 1 つの重点領域は、stdlib の BLAS (Basic Linear Algebra Subprograms) サポートの継続的な開発です。 、ベクトル加算、スカラー乗算などの一般的な線形代数演算の基本的な API を提供します。ドット積、線形結合、行列の乗算。 2024 年になると、stdlib での BLAS サポートは、特に複素数値の浮動小数点データ型のサポートの点でかなり不完全でした。 Jaysukh Makvana が組み込み JavaScript 型配列を使用して stdlib の Complex64Array および Complex128Array データ構造の機能同等性を達成しようとしたことで、流れが変わり始めました。
これらの取り組みは、その後、複素数値の型付き配列データ型に対するレベル 1 BLAS サポートの追加と、stdlib でのレベル 2 およびレベル 3 BLAS サポートの強化を目指した Aman Bhansali の取り組みへの道を切り開きました。最初は低レベルの BLAS ストライド配列インターフェイスに焦点を当てた後、Aman は、WebAssembly 実装を追加し、高レベルの多次元配列 (別名 ndarray) API を介して行列とベクトルのスタックに BLAS 操作を適用するためのサポートを追加することで、範囲を拡大しました。
従来の BLAS ルーチンに加えて、stdlib には、参照 BLAS の一部ではない BLAS のようなルーチンが含まれています。これらのルーチンには、代替スカラーおよび累積加算アルゴリズム、ストライド配列のソート、ストライド配列要素の充填と操作、NaN 値の明示的な処理、および線形代数の範疇には収まりきらないが、作業中に一般的なその他の操作用の API が含まれています。データ付き。
Aman の BLAS 作業中に、BLAS 実装のクリーンアップとリファクタリングを行い、Muhammad Haris がその取り組みを拡張 BLAS ルーチンに拡張することを志願しました。彼の取り組みには、ボイラープレートを削減し、ネイティブ アドオンの作成に C マクロの広範なコレクションを活用するために、Node.js ネイティブ アドオンを純粋な C に移行することが含まれ、さらに、stdlib の ndarray とのインターフェイスを容易にするために専用の C API を追加することも含まれていました。
これらの開発により、stdlib は JavaScript 開発者向けの線形代数サポートにおいて引き続き先頭に立ち、数値計算用の強力なツールを提供します。多くのことが完了しましたが、まだ作業が残っており、BLAS は 2025 年も引き続き焦点となるでしょう。
Quansight Labs でのインターンシップの一環として BLAS の研究を基礎にして、Pranav Goswami は LAPACK (L線形 A代数 パック) の基礎を築くために取り組みました。 age) 線形系を解くための高次線形代数ルーチンを提供するための stdlib でのサポート方程式、固有値問題、行列因数分解、特異値分解。インターンシップ後のブログ投稿で詳しく説明されていますが、Pranav 氏は、追加実装のテストと文書化のアプローチを確立し、BLIS のアイデアを活用して、stdlib の ndarray とのインターフェイスを容易にする LAPACK インターフェイスを作成して、データの移動とストレージ要件を最小限に抑えることを目指しました。問題点の解決と API 設計の反復にかなりの時間を費やしましたが、Pranav はさまざまな実装ユーティリティと一般的に使用される 30 近くの LAPACK ルーチンの追加で大幅に前進しました。 LAPACK の巨大さ (約 1700 ルーチン) を考慮すると、この作業は近い将来まで続くことになるため、今後数か月以内のさらなるアップデートに注目してください!
ちょっとした余談ですが、Fortran ライブラリとのインターフェースに stdlib がどのようにアプローチするかについて詳しく知りたい場合は、その多くが依然として現代の数値計算の基盤を形成しているため、Fortran ルーチンの呼び出しに関する Pranav のブログ投稿を必ずチェックしてください。 Node.js を使用した JavaScript。
stdlib の長年の優先事項の 1 つは、一般的な数学的および統計的演算のためのベクトル化されたルーチンの継続的な開発です。すべてのスカラー数学カーネル (sin、cos、erf、gamma などの超越関数や統計分布密度関数など) には JavaScript 実装がありますが、カーネルの多くには、より高速なパフォーマンスを実現するために必要な、対応する C 実装がありませんでした。ネイティブ バインディングをサポートする Node.js およびその他のサーバーサイド JavaScript ランタイム。
Gunj Joshi らはこのギャップを埋めようと、専用の C 実装を追加して 160 を超えるプル リクエストをオープンしました。この時点で、最も頻繁に使用される倍精度超越関数はいくつかだけ残っています (見てください!)。現在は、単精度のサポートを完了し、統計分布関数用の C 実装を追加することに取り組んでいます。この作業は 2025 年前半まで継続し、その後、WebAssembly と Node.js の両方のネイティブ アドオンの実装を伴う、より高レベルの strded 配列 API と ndarray API に注目する予定です。
私たちが大きな進歩を遂げたもう 1 つの分野は、スライシングと配列操作の人間工学の改善です。 MATLAB や Julia などの数値プログラミング言語、および NumPy などの専用数値計算ライブラリのユーザーは、配列要素のサブセットのみに影響を与える演算を表現するための簡潔な構文の利点を長年享受してきました。たとえば、次のスニペットは、NumPy.
を使用して配列内の 1 つおきの要素をゼロに設定する方法を示しています。
import numpy as np # Create an array of ones: x = np.ones(10) # Set every other element to zero: x[::2] = 0.0
JavaScript は言語としてそのような便利な構文を提供していないため、ユーザーはより冗長なオブジェクト メソッドを使用するか、手動の for ループを使用する必要があります。そこで私たちは、Proxy オブジェクトを活用して「派手なインデックス作成」をサポートすることで、このギャップに対処しようとしました。 Proxy オブジェクトを使用すると、プロパティの間接化によりパフォーマンスのオーバーヘッドが発生しますが、単一のパッケージをインストールしてインポートするだけで、JavaScript での Python スタイルのスライスのメリットをすべて享受できるため、冗長な for ループや配列の作成が不要になります。操作は大幅に人間工学に基づいたものになりました。
import array2fancy from '@stdlib/array-to-fancy'; // Create a plain array: const x = [ 1, 2, 3, 4, 5, 6, 7, 8 ]; // Turn the plain array into a "fancy" array: const y = array2fancy( x ); // Select the first three elements: const v = y[ ':3' ]; // returns [ 1, 2, 3 ] // Select every other element, starting from the second element: v = y[ '1::2' ]; // returns [ 2, 4, 6, 8 ] // Select every other element, in reverse order, starting with the last element: v = y[ '::-2' ]; // returns [ 8, 6, 4, 2 ] // Set all elements to the same value: y[ ':' ] = 9; // Create a shallow copy by selecting all elements: v = y[ ':' ]; // returns [ 9, 9, 9, 9, 9, 9, 9, 9 ]
スライス セマンティクスに加えて、Jaysukh はブール配列のサポートを stdlib に追加し、ブール配列マスキングの基礎を築きました。
import BooleanArray from '@stdlib/array-bool'; import array2fancy from '@stdlib/array-to-fancy'; // Create a plain array: const x = [ 1, 2, 3, 4, 5, 6, 7, 8 ]; // Turn the plain array into a "fancy" array: const y = array2fancy( x ); // Create a shorthand alias for creating an array "index" object: const idx = array2fancy.idx; // Create a boolean mask array: const mask = new BooleanArray( [ true, false, false, true, true, true, false, false ] ); // Retrieve elements according to the mask: const z = x[ idx( mask ) ]; // returns [ 1, 4, 5, 6 ]
その後、ブール配列マスキングのサポートを追加する際に学習内容を適用し、整数配列インデックスのサポートを追加しました。
import Int32Array from '@stdlib/array-int32'; import array2fancy from '@stdlib/array-to-fancy'; // Create a plain array: const x = [ 1, 2, 3, 4, 5, 6, 7, 8 ]; // Turn the plain array into a "fancy" array: const y = array2fancy( x ); // Create a shorthand alias for creating an array "index" object: const idx = array2fancy.idx; // Create an integer array: const indices = new Int32Array( [ 0, 3, 4, 5 ] ); // Retrieve selected elements: const z = x[ idx( indices ) ]; // returns [ 1, 4, 5, 6 ]
上記では、組み込み JavaScript 配列オブジェクトを使用した派手なインデックス付けを示していますが、最近、派手なインデックス付けの概念を stdlib ndarray に拡張しました。このトピックについては、今後のブログ投稿で詳しく説明する予定です。
言うまでもなく、JavaScript でのインタラクティブ コンピューティングと探索的データ分析のユーザー エクスペリエンスが大幅に向上すると信じているため、私たちはこれらの開発に特に興奮しています。
最後に、2024 年は自動化の年でした。フィリップ ブルクハルトの取り組みについて触れないのは不注意です。フィリップは、CI のビルドとテストのインフラストラクチャを改善し、プロジェクト全体のスケーラビリティを向上させるのに尽力してくれました。彼の作品は多作でしたが、注目したい重要なハイライトがいくつかあります。
私たちはプロジェクト自動化ツールにおいて大幅な進歩を遂げてきましたが、さらなる自動化とツールの改善のためのアイデアには事欠かないようです。 2025 年にはさらに多くのことが起こると予想されます。 ?
それでは、2025 年には何が待っているのでしょうか?!質問してよかったです!
上記のセクションでさまざまな取り組みについてすでに言及しましたが、大まかに言うと、今後 1 年間に私たちが重点的に取り組む予定の場所は次のとおりです。
これは間違いなく多大な量であり、それには村、つまりウェブを数値計算および科学計算のための一流のプラットフォームにするという私たちの使命に専念する人々のコミュニティが必要になるでしょう。 Web 上で科学コンピューティングの未来を構築することに参加する準備ができている場合は、ぜひご参加ください。参加方法については、貢献ガイドをご覧ください。
今後を見据えて、今年が私にとって何を意味したかについて個人的な振り返りをしたいと思います。今年の成長を考えると、消防ホースから水を飲んでいるような気分になることがよくありました。そして、正直なところ、毎日朝起きると、ガイダンス、質問への回答、プル リクエストのレビューを求める人たちからの 100 件を超える新しい通知やメッセージを目にすると、燃え尽き症候群に陥るのを避けるのは難しいかもしれません。しかし、この 1 年を振り返ると、私たちが達成したことを非常に誇りに思います。また、オープンソースに初めて携わったコントリビューターが、時には学んだ教訓を出発点として成長し、活躍しているのを見ると、特に心強くなります。夢のような仕事とチャンス。それを見ることができた幸運は、オープンソースというより大きな世界における原動力であり特権であり、私はそれを当たり前のことだと思わないよう最善を尽くしています。
これで、2024 年の回顧展は終わります。私たちが一緒に達成してきたすべてのことを振り返ると、Web 上の科学コンピューティングの未来はかつてないほど明るくなりました。途中でお世話になった関係者の皆様に改めて感謝申し上げます。これからの道はエキサイティングな機会に満ちており、2025 年に一緒に何を達成できるか楽しみです。前へ、そして上へ! ?
stdlib は、プロジェクトの開発を加速し、専門的に作成された高品質のソフトウェアに依存しているという安心感を与える、堅牢で高性能のライブラリの包括的なスイートを提供することに特化したオープン ソース ソフトウェア プロジェクトです。
この投稿が気に入ったら、スターを付けてください。 GitHub でプロジェクトを財政的に支援することを検討してください。あなたの貢献と継続的なサポートは、プロジェクトの長期的な成功を確実にするのに役立ち、非常に感謝しています!
以上が回想的なの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。