本文へ
ハクソク

世界を動かす技術を、日本語で。

Polars 2.0のプレリリース

元記事: 原文(pola.rs)

概要

Polars 2.0の最初のリリース候補版が公開。 大きな新機能追加ではなく、既存設計の見直しとデフォルト設定の改善が主目的。 LazyFrameクエリのデフォルトがストリーミングエンジンに変更され、メモリ効率と性能が大幅向上。 より厳格なエラーハンドリングと型安全性の強化。 移行ガイドや詳細なエラーメッセージの提供でユーザー移行を支援。

Polars 2.0リリース候補の概要

  • Polars 2.0 の最初のリリース候補公開
  • 数週間以内に正式リリース予定
  • 主な目的は 過去の設計決定の見直し と デフォルト設定の改善
  • 新機能追加よりも、 「退屈な」アップデート を目指す方針
  • 既存ユーザー向けに 移行ガイド を公開

ストリーミングエンジンのデフォルト化

  • LazyFrameクエリ のcollect時、デフォルトで ストリーミングエンジン 利用
  • 多くのクエリで メモリ使用量とパフォーマンスが大幅向上
    • 一般的な処理で 5倍以上の高速化 を期待
  • ストリーミングエンジンは、特定操作(join, group_by, unpivot等)で 行順序保証なし
    • 行順序が必要な場合、 maintain_order=True で明示的に指定
  • 旧来の「インメモリエンジン」を使いたい場合、 engine affinity で設定可能
    • グローバル設定やクエリ単位で切り替え可能

Polarsの厳格化

  • Polars は「厳格かつ早期失敗(fail fast)」を重視
    • データ不一致時の暗黙的挙動は廃止、明示的なオプトイン方式へ
  • AI開発支援 として、collect_schema()で早期にクエリ構造検証可能
  • クエリ計画のコンパイル時に検出できないエラーも、実行時に 厳格動作 で早期検出

厳格化の具体例

  • is_inによる損失型変換の禁止
    • 型が異なる場合、暗黙的なキャストを禁止し、明示的な変換を要求
  • 横方向連結の長さチェック
    • DataFrame横連結時、長さ不一致でエラーを発生
    • 明示的なパディングが必要な場合、 how="horizontal_extend" を利用
  • 曖昧なキャストの削除
    • Enum/Categoricalと整数間のキャストは専用メソッド利用を推奨
    • 文字列→日付/時刻型の変換は、 str.to_date() / str.to_datetime() で明示的に指定

情報量の多いエラー表示

  • 廃止・変更された属性や引数 に対し、専用例外(polars.exceptions.AttributeRemovedError / ArgumentRemovedError)を追加
  • エラーメッセージで 新しいAPIや推奨方法 を案内
  • 長期非推奨だった機能の削除が中心、最新状態を維持していれば大きな影響なし

Polars 2.0の今後と展望

  • 2.0は「より良いデフォルト」と「より良いAPI」の提供が主目的
  • 新機能は メジャーバージョンアップに依存せず随時追加
  • 今後の予定
    • ストリーミングエンジンの本格的な アウトオブコア対応
    • 新しいIOプラグイン設計
    • 最速級S3リーダー の実装
    • SQL機能の大幅強化
    • コストベースプランナー や join順序最適化
    • mmap廃止 による完全非同期パイプライン化

試用方法・問い合わせ先

  • pip install polars==2.0rc1 でリリース候補をインストール可能
  • フィードバックや質問は GitHub Issues (https://github.com/pola-rs/polars/issues)や Discord (https://discord.gg/4UfP5cfBE7)で受付

提供: ハクソク · 要約更新:

AIによる日本語要約です。内容は原文とあわせてご確認ください。

Hacker Newsの議論を読む