בלוג אישי, שנועד בעיקרו עבורי - לזכור פרויקטים, מחקרים וגם סתם מחשבות. מקווה שתהנו לקרוא.
בפוסט זה אני ממשיך את הלימוד שלי על asyncio. אני מנסה ללמוד על הinternals דרך מעבר על הapi ועל מקרי קצה ומימושים מעניינים בדרך. בפוסט אני מדבר על future, coroutine, loop וtask. הפוסט הזה מנסה להיות יחסית לימודי, לא יודע כמה אני אוהב את זה אבל ככה יצא.

במהלך השנים יצא לי לכתוב הרבה קוד אסינכרוני גם ב-Python וגם ב-TypeScript, אבל רק לאחרונה הבנתי עד כמה אני לא באמת מבין איך הדברים עובדים ב-Python מאחורי הקלעים. הפוסט הזה הוא הראשון מתוך שניים שאני משתף מה למדתי, בו אני מנסה בצורה הכי פשוטה להסביר ולממש Event Loop בלי asyncio.
כבר כמה זמן שאני לא מרגיש שאני מבין טוב מה זה tty וpty. השתמשתי בpty כדי לייצר remote shell אשר עובד ומרגיש ממש כמו shell רגיל ובנוסף כדי לראות שאני מבין מה עובר דרך הtty driver עשיתי שינוי כך שכל הקלדה שלי תמיד תופיע פעמיים.
במהלך חופשה רציתי להתחיל ללמוד על CPtython, לאחר שהסתכלתי על כמה באגים אפשריים שאוכל לתקן החלטתי דווקא ללכת על לנסות להוסיף Syntax משלי לשפה. הוספת הSyntax כללה הכנסה של החוקיות החדשה לחוקי Syntax של פייתון ועריכת הCompiler של Python כדי להכניס את הלוגיקה שרציתי. בסוף יצאתי עם גרסת Python משלי שתומכת בSyntax נוסף עבור בלוק של try-except.
במהלך פיתוח של ko, נתקלתי בצורך למצוא פתרון קל לפיתוח ודיבוג של בעיות. qemu הינה תשתית אמולציה של מערכת, השתמשתי בה ויצרתי הפצת kernel מצומצמת משלי הכוללת את הגרסת linux kernel הכי חדשה וbusybox שמאפשר פקודות בסיסיות.