4 ポイント 投稿者 GN⁺ 2024-12-09 | 1件のコメント | WhatsAppで共有
  • Mathics Core 7.0.0 は、Mathematica 互換のオープンソース計算システムの中核エンジンを整理し、今後の組み込み関数の遅延ロードに向けた基盤を整備
  • 新しい組み込み関数として ComplexExpandConjugateTransposeLeviCivitaTensor など、数式処理・線形代数・実数判定に関する機能を追加
  • Range[]DirectedInfinityIndeterminateGraphics のエラー表示、$CharacterEncoding の変更など、既存の互換性の隙間を補完
  • 組み込み関数の読み込みは、暗黙的な import 依存から離れ、import_and_load_builtins() を明示的に呼び出す方式に変更
  • Python 3.11SymPy 1.12 のサポートを含み、QuantitySparseArrayDerivativeExit[]BaseForm 関連の修正も含まれる

リリース方針と内部整理

  • Mathics Core 7.0.0 には、将来の組み込み関数の遅延ロードをサポートするための内部構造の整理が含まれる
  • Python コードとスタイルをモダン化し、型注釈を増やし、複数のスペルミスを修正
  • SymPyPython の依存関係をより新しいバージョンに更新
  • 初期ロード速度の向上と初期メモリ使用量の削減に向けた作業も進められた

新しい組み込み関数

  • 今回のリリースで追加された組み込み関数は以下の通り
    • $MaxLengthIntStringConversion
    • Elements
    • ComplexExpand
    • ConjugateTranspose
    • LeviCivitaTensor
    • RealAbs, RealSign
    • RealValuedNumberQ

ドキュメントとテスト生成の改善

  • PDF ドキュメントの書式上の問題が各所で修正
    • 章および節の目次でセクション番号の間隔を拡大
    • 組み込み関数定義の周辺余白を拡大
    • ドキュメント全体のスペルミスを整理
  • doctest 実行と LaTeX ドキュメント生成コードを改訂・リファクタリング
    • 組み込み関数の増分更新を許可
    • 重複コードを減らす方向で整理
  • 「Expression Structure」に Section Head-Related Operations 節を新たに追加
  • PDF タイトルは Mathics から Mathics3 に変更され、紹介文も更新
  • 旧形式の非公開・非教育用 doctest は pytest に移行

互換性とユーザーに見える動作の変更

  • *Plot は評価中にメッセージを表示しない
  • Range[] は負の di を処理
  • DirectedInfinityIndeterminate のサポートを改善
  • GraphicsGraphics3D は、不正な primitive や directive を含む場合、ピンク色の背景で表示
    • Mathics-Django インターフェースではツールチップのエラーメッセージも併せて表示
  • $CharacterEncoding はセッション内で値を変更可能

内部実装と API の変更

  • AbsSign では eval_abseval_sign が分離され、mathics.eval.arithmetic に追加
  • 文字列内で許可される最大の数字桁数は 7000 に設定
    • Python が自動調整しない pyston のような環境では、MATHICS_MAX_STR_DIGITS 環境変数で調整可能
  • 実数比較の実装は内部的に RealSign の実装へ移行
  • Python 3.11 では $MaxLengthIntStringConversion が大きな整数と文字列の間のリテラル変換の最大サイズを制御
  • 組み込みコードの読み込みは暗黙的方式ではなく、明示的な指示方式に変更
    • 将来的な組み込み関数の遅延ロードや GNU Emacs autoload 方式の「autoload」を可能にするための変更
  • 新 API では import_and_load_builtins() を明示的に呼び出す必要がある
    • 以前は import 順序に応じて組み込み関数の読み込みタイミングが暗黙的かつ不確定だった
  • mpmath に LRU キャッシュを追加

Quantity・SparseArray などのバグ修正

  • Definitionspickle と互換
  • Quantity 式のサポートを改善
    • 変換、書式指定、算術演算を含む
  • GraphicsGraphics3DBackground オプションが再び動作
  • String を含む式に対する数値比較の問題を修正
    • 関連 issue: #797
  • Infinity を含む Switch[] の問題を修正
    • 関連 issue: #956
  • SparseArray に対する Outer[] の問題を修正
    • 関連 issue: #939
  • ArrayQ[]SparseArray を検出
  • BoxExpressionError 例外を処理
  • DerivativeTrueFalseList[] を評価する動作を修正
  • Combinatorica パッケージの修正を含む
  • 動作しなかった Exit[] を修正
  • BaseForm$OutputForms に含まれるように変更

パッケージのサポートバージョン

  • Python 3.11 をサポート
  • SymPy 1.12 をサポート

1件のコメント

 
GN⁺ 2024-12-09
Hacker Newsのコメント
  • このプロジェクトを何年も見てきたが、着実に順調に発展している。オープンソースのコンピュータ代数システムに関心があるなら、GNU OctaveやMaximaのような古典的な選択肢から、SAGEmath、Symbolics.jl、sympyのような現代的な選択肢まで、より成熟した解決策が多くある
    GiNaCのような記号演算ライブラリから、SAGEmathのような全部入りのIDEまで幅広く、コミュニティも活発だ。たとえばSAGEmathはWebノートブックインターフェースを事実上切り開き、今日のさまざまな形のJupyterへとつながったと見ている
    個人的にはMathematica(MMA)のLispっぽいスタイルが好きだが、MMAを強力にしているのはコアだけでなく巨大なライブラリだ。記号積分、2D/3Dグラフィックス、有限要素法のような基本分野で業界最高水準の解決策があり、バイオインフォマティクスのような特殊分野も多い
    Mathicsはコアの再現はうまくやっているようだが、当然ながらそれらすべてのライブラリは不足している。Matlabと複数の「ツールキット」をnumpyクローンと比較するときも同じ理屈だが、Pythonの流れは今やMatlabでは動かない新しいコードを数多くnumpyの世界へ持ち込んでいる

    • 進捗についての話には同意する。このプロジェクトは、好きなことを静かに着実に掘り下げていく素晴らしい例に見える
      5年ほど前に最初に出てきたとき、「記号評価エンジンは本当によくできているな、さてこれからどうなるか見てみよう」と思った。これから新しいプロジェクトを始めたくなるたびに、古いプロジェクトを磨き続けるこの例を思い出したい
    • Lisp界隈では、MaximaからCommon Lispへ簡単に入れる。性能のためにSBCLを使うとさらによい
    • 勘違いかもしれないが、Octave、Matlab、numpyはコンピュータ代数システムと同じ領域だとは思わない。これらはすべて数値計算中心の言語またはライブラリで、正確な記号式よりも問題の数値解を求めるために使われると考えている
      相互補完的で、一緒に使われることも多い。MathematicaとMathicsは両方のパラダイムをサポートしているようだが、同じものではない
  • sympyベースのように見える: https://www.sympy.org/en/index.html

  • 個人用途だけでよいなら、Wolfram Cloudは無料で使える。ファイルは30日ほどで削除されるようだ。Wolfram EngineもコマンドラインでMathematicaを無料で使う方法だ。まあ、ないよりはましだ

    • Mathematicaライセンス付きのRaspberry Piを買うこともできる
    • Wolfram Engineの上にWLJSを載せれば、かなり楽しく使える
  • Mathicsについてのもっと簡単な紹介はこちらにある:
    https://mathics.org/

  • なぜかこれがSageMathに統合される気がする :D

    • SageMathにMathicsを入れようという実際の動きがあるかはよく分からない。推測するに、SageMathは主に研究数学者や暗号研究者が開発しているため、構成要素を含める際には性能が重要な関心事であることが多いからだろう
      SageMathが最大のCythonプロジェクトである理由の一つも、CythonがSageで高速なC/C++ライブラリを活用できるようにするからだ
      Mathicsは今のところ性能を深刻に気にしているようには見えない。たとえばMathicsで"AbsoluteTiming[Sum[i, {i, 1, 100000}]]"のような小さなマイクロベンチマークを回してみるか、ロードマップを読めばよい
      もちろんこれは問題ない。Mathematicaプログラミング言語には、性能が重要でない興味深い応用が多くあり、たとえばある記号演算を式とともに慎重に段階的に追いかけるような用途もある
      しかしSage開発者たちの主な動機は最先端の研究数学であり、そこではほとんど常に性能が非常に重要だ。Sageが単にsympyを使わず、似た機能を多く自前で実装しているのも性能のためだ。sympyはインストールの容易さを優先しているため比較的遅くなりうるが、SageMathではインストールのしやすさはまったく優先事項ではない
      SageMathの使命はMathematica、Matlab、Magma、Mapleの実行可能な代替になることだが、それはクローンになるという意味ではなかった。たとえばMathematicaコードを直接実行するという意味ではなく、本来ならそうしたクローズドソースのプログラムで行っていた研究を、オープンソースの数学ソフトウェア上で支援できる代替という意味だ
  • ソフトウェアエンジニアはソフトウェアの費用を払わないためなら何でもする

    • Mathematicaライセンスは持っているが、このプロジェクトもかなり素晴らしいと思う。私もソフトウェアエンジニアだ。Mathics開発者がMathematicaユーザーでなかったら、むしろ驚くと思う
    • 価格ではなく自由の問題だ
    • 自分のためにソフトウェアを作り、しかもオープンソースとして公開までしてしまう人もいる
    • 昔、Debian Sargeの3枚組DVDケースと雑誌サイズのハンドブックに20ドル払ったことがある
  • Mathematica は Raspberry Pi で無料提供されており[1]、たいていの大学にはサイト全体ライセンスがある。"Home & Hobby" ライセンスもそれほど高くなく、サブスクリプションは年 195 ドル、永続ライセンスは 390 ドル、更新はわずか 175 ドルだ[2]
    正直、いじることには興味があるけれどその価格を負担できない人なら、クラック版を見つけるのもインストールするのも難しくない
    個人的には Mathematica、正確には "Wolfram Language" がかなり好きで、趣味用ライセンスの費用を払うことにも満足している。価格に見合う価値があると思うだけでなく、数学ソフトウェアを支援することはお金を使うに値する「良い名目」だとも思う
    しかも、アマチュア写真家は Adobe CC のようなツールに、多くのプログラマーが自分のツール一式に使う金額よりも多く払っていることが珍しくないが、なぜそうなのか理解できない。複数のサブスクリプションサービスには月 20〜40 ドル以上使いながら、200〜400 ドルのライセンス費用にはためらうのも同じだ
    ただ、私の場合はコンピュータに入っているほとんどどのプログラムよりも Mathematica で過ごす時間が長い
    それでも オープンソースの数学ソフトウェア には依然として重要な居場所がある。Mathematica は全体として包括的ではあるが、高度な数学ではなお大きな欠陥がある
    とりわけ、より「ニッチ」な数学分野まで満たしてくれるとは信じがたい理由が二つある。第一に、より高度または難解な分野へ進むほど投資対効果が急激に落ちる。第二に、Wolfram Language にはすでに 6000 個以上の組み込み関数があるのだから、群論のような分野を包括的に支援するためにさらに数百個追加するのは筋が悪い
    パッケージとして対応することはできるが、カーネルで一級のサポートを受けられないため性能面のコストがかかり、ユーザーがわざわざ探して使わなければならないので使い勝手のコストも生じる
    だからこそ、GAP、M2、PARI/GP のようなオープンソースソフトウェアは Wolfram Language の隙間を埋めるうえで重要な役割を果たす。私の場合、Mathematica ライセンスに使うのと同じくらい FOSS プロジェクトにも貢献している。金銭的な貢献が簡単でないプロジェクトには、時間と技術を投じて改善しようとしている
    正直、Mathematica の機能を複製しようとするプロジェクトにはあまり関心がない。もちろん、そうしたプロジェクトも開発と改善は続いていくだろうし、少なくとも Wolfram Research に基本機能の改善を続けさせる圧力にはなりうる。しかし、そうしたプロジェクトが現在の Mathematica/WL に追いつくには、おそらく 10〜20 年はかかるだろう
    [1]: https://www.wolfram.com/raspberry-pi/
    [2]: https://www.wolfram.com/mathematica/pricing/home-hobby/

    • Stephen Wolfram は HN ではかなり嫌われているようだが、実験数学、パズル解き、素早いデータ可視化などにおいては、Wolfram は奥行きがあり美しい言語だ
      統合ノートブック、マウスオーバーで見られるドキュメント、そして驚くべきことに数千の関数が入った単一の巨大な名前空間が somehow 組み合わさって、私が使ったことのあるものとは違う、シンプルで生産的な体験を与えてくれる。ふだんは「重い」IDE が特に好きなわけでもないのに、そう感じる
  • Mathematica でいら立つ点の一つは、すべての関数が同じ 名前空間 に押し込まれていて、異なるパラメータ化オプションによるオーバーロードがないことだ

    • オーバーロードが何を意味するのかわからない。関数は引数の数に応じて簡単に別の動作ができる。たとえば 2 引数の Fold と 3 引数の Fold がそうだし、Graphics、Graphics3D、Solve、Import/Export のようにオプションもいくらでも持てる
      思いつく大きな重複は複数の Plot 関数くらいだ