概要
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)で受付