
Polars 2.0: מנוע הזרימה הופך לברירת המחדל
Polars פרסם את מועמד ההפצה הראשון לגרסה 2.0: כל שאילתות LazyFrame עוברות למנוע הזרימה, הטיפוסים נבדקים בקפדנות רבה יותר וממשקים שהוסרו מחזירים שגיאה ברורה. לפי המפתח הראשי, הגרסה הסופית צפויה בתוך שבועות.
Polars פרסם את מועמד ההפצה הראשון לגרסה 2.0, כאשר ההפצה הסופית צפויה בשבועות הקרובים. בפוסט בבלוג הפרויקט מדגיש המפתח הראשי ריצ'י וינק כי הקפיצה בגרסה הראשית אינה עוסקת בתכונות חדשות, אלא בנטישת החלטות תכנון ישנות ומעבר לברירות מחדל הגיוניות יותר.
מנוע הזרימה הופך לברירת מחדל
השינוי הגדול ביותר הוא שכל שאילתת LazyFrame רצה מעתה על מנוע הזרימה. קריאה ל-collect() מפחיתה משמעותית את צריכת הזיכרון ומשפרת את הביצועים ברוב השאילתות; לפי הערכת הפרויקט, מנוע הזרימה מהיר בקלות פי חמישה במצטבר.
דווקא בגלל זה נדרשה גרסה ראשית חדשה: מנוע הזרימה אינו מבטיח סדר שורות בפעולות כמו join, group_by ו-unpivot. קוד שתלוי בסדר נצפה צריך לבקש אותו במפורש עם maintain_order=True, ומי שמעדיף את מנוע הזיכרון הישן כברירת מחדל יכול לקבוע זאת דרך pl.Config.set_engine_affinity.
מחמיר יותר, עם שגיאות ברורות יותר
גרסה 2.0 גם מחמירה התנהגות שבעבר נכשלה בשקט. ביטוי is_in על טיפוסים שונים נהג לכפות על שני הצדדים טיפוס משותף גם כשההמרה איבדה מידע — בבלוג מוצג השוואת מזהה משתמש מעל 2^53, שבה העיגול יצר חיוב שגוי; כעת הדבר מעלה שגיאה. שרשור אופקי בודק אורכים במקום לרפד ב-null, וההתנהגות הישנה נשמרת רק כאפשרות מפורשת בשם "horizontal_extend". כמה המרות טיפוס דו-משמעיות הוסרו לטובת שיטות ייעודיות, כמו .cat.to() ו-.str.to_date().
עבור ממשקים שהוסרו נוספו שני חריגים טיפוסיים — AttributeRemovedError ו-ArgumentRemovedError — שהודעותיהם מפנות לתחליף: melt הפך ל-unpivot, ו-join_nulls שונה ל-nulls_equal. המחבר מציין גם שבדיקת סכימה מוקדמת באמצעות collect_schema() שימושית לסוכני AI, שיכולים לבדוק את מבנה השאילתה לפני עיבוד הנתונים.
מה הלאה
לדברי וינק, גרסה 2.x תרחיק הרבה מעבר ל-1.x: תמיכה בעיבוד מחוץ לזיכרון במנוע הזרימה, תכנון חדש לתוספי IO, עבודה על מה שהצוות מצפה שיהיה קורא ה-S3 המהיר ביותר, כיסוי SQL רחב יותר, מתכנן מבוסס עלות, ארגון מחדש של join והסרת mmap כדי להפוך את הצינורות לא-סינכרוניים מקצה לקצה. מדריך ההגירה המלא כבר זמין, ואת מועמד ההפצה מתקינים עם pip install polars==2.0rc1.
SiTech — פיתוח אתרים בכוח ה-AI
אנחנו בונים אתרים מהירים ומודרניים ומשלבים AI בתהליכי עבודה אמיתיים. יש לכם פרויקט או שאלה? נשמח לעזור.