Pre-Release of Polars 2.0
Polars 2.0 вводит значительные изменения по умолчанию, направленные на улучшение производительности и надёжности. Главное нововведение — LazyFrame.collect() теперь использует потоковый движок (streaming engine) по умолчанию, что обещает до 5-кратного ускорения и существенное снижение потребления памяти. Однако потоковый движок не гарантирует сохранения исходного порядка строк при операциях вроде join, group_by и unpivot. Для восстановления порядка нужно явно указать maintain_order=True (или maintain_order="left" и т.д.). Пользователи, предпочитающие старое поведение, могут вернуть движок in-memory через pl.Config.set_engine_affinity("in-memory") или указать engine="in-memory" в конкретном запросе.
Помимо этого, Polars стал строже в обработке данных, чтобы выявлять ошибки на ранних этапах. Например, выражение is_in больше не выполняет небезопасное приведение типов: если сравниваются Int64 и Float64, и целое число выходит за пределы точного представления в float64 (как 9007199254740993 > 2^53), теперь возникает ошибка вместо тихого округления и неверного результата. Также удалены устаревшие API: метод melt() заменён на unpivot(), а параметр join_nulls в join() переименован в nulls_equal. Для миграции предоставлен подробный гайд, а удалённые функции теперь вызывают специфические исключения (AttributeRemovedError, ArgumentRemovedError) с указанием новых альтернатив. Релиз-кандидат доступен через pip install polars==2.0rc1.