deno החלופה ה-nodejs?
-
ראשית אבקש מ @dovid וכרישים נוספים שיתקנו אותי באם אני שוגה (כולל עריכה במקור).
ריאן דאהל יוצר nodejs עבר להשתמש עם go המתאים יותר לעומסים כבדים ותחביר מאוד נוח לא-סינכרוני ומקביליות.
לפני תקופה חזר להשתמש בnodejs ונחרד ממה שעשה
אמנם האיסינכרוניות בקריאות I\O היה רעיון נהדר, אבל חסרים חלקים קריטיים משלימים.
לכן הוא התחיל לעבוד על deno, עם 3 מטרות עיקריות:- תחביר נוח ע"י החדרת הפרומיסס לליבת המנוע (His biggest regret was not using promises, an abstraction for working with asynchronous, or parallel, computing tasks. Promises were actually included in an early version of the language but were stripped out soon thereafter, casting countless devs into callback hell), עם זאת הוא ממליץ מאוד להשתמש ב-TS.
- ביצועים - אוחז ששפה דינאמית זה רעיון נהדר, ולא מוכרחים לשלם ע"ז מחיר בביצועים, כשהוא שוקל להחליף את המנוע מתחת בgo או אחר + יצירת דפדפן חדש (ככל שאני מבין נכון).
אבטחה - אינו דומה הרצת js ומודולים צד ג' בדפדפן להרצתם במקום קריטי כשרת עם הרשאות מורחבות.
jsconf2018.pdf
https://thenewstack.io/node-js-creator-blasts-node-js-offers-a-secure-typescript-based-alternative/ -
-
-
ביצועים - אוחז ששפה דינאמית זה רעיון נהדר, ולא מוכרחים לשלם ע"ז מחיר בביצועים, כשהוא שוקל להחליף את המנוע מתחת בgo או אחר
ככל שאני מבין נכון, התכנון הוא:
להכניס מקביליות מובנית בכל הקודים הא-סינכרונים במהותם (פרומיסס, fs, תקשורת, timeOut וכדו') או קודים שיורצו שפירוש ע"י פונקצית ()run,
ואת זה להשיג ע"י הורדת התלות ב-V8 למינימום (רק פיענוח ה-js שיכתוב המשתמש) ולמודולים רבים ככל האפשר להשתמש ב-go(הספיק להתחרט בשביל לא לנהל 2 אוספי זבל עצמאיים) rust & tokio שהיא גם שפה סופר מהירה בשל היותר סטטית (לא רק), גם מכילות כבר מודולים רבים שאפשר 'לגשר' אותם בקלות, וגם מובנה בהם המקביליות ביעילות ובקלות (הבדיקות נעשות הן כש-rust רץ בתהליך נפרד לגמרי והן כשהוא מורץ בתהליכון בשביל להסיק מה מהיר יותר).עד כמה זה ניתן, וכמה זה מייעל את המהירות, הוא ידע אחרי שה'גשר' יוכח כיציב ומהיר מספיק, גנרי ומאוד נוח לשימוש.
ניהול חסימות ושיתוף זכרון בין תהליכים זה אתגר לא קל (בנתיים יש כבר גירסה שעובדת לא רע, ובמקום שיתוף זכרון קלאסי, מנהל-תור-הפעולות יחזיק אצלו את קטע הזכרון וישתף אותו כל פעם עם התהליך שצריך אותו תוך כדי שמירה שתהלים אחר לא פועל עליו במקביל).יצירת דפדפן חדש (ככל שאני מבין נכון).
איזו מבוכה על התרגום השגוי. הנכון:
תאימות לדפדפן - שהAPI יהיה תואם ככל האפשר (בשאיפה למוחלט, כמעט בקנאות) ל-API של הדפדפן; קוד שרץ בדנו יוכל לרוץ בדפדפן. -
-
-
-
- זה קורא TS בלי קימפול?
- כל המודולים של נוד זמינים גם בדנו?
- למעשה, מה צריך להתקין ואיך עושים hello world?
-
@yossiz
אכן, אבל כל אחד שיש לו בנוד קוד שהוא עיבוד ולא I\O צריך להיות "משתמש מתקדם", בנתיים נכתבים שפות חדשות \ החדשות משתפרות מאוד וזה מכניס יותר ויותר אנשים לדילמה, פחות אנשים מפעם חושבים שכדאי להקריב הכל בשביל JS.. ודנו נותן את האפשרות לכתוב קוד סטטי יחד עם האפשרות להשתולל עם סקריפטים.V8 ו-nodejs משתמשים במודע בגשרים גרועים (גם בפרויקט שהוזנח) בשביל לא לשבור קוד ישן.
חושב שזה יהפוך לנו איך קוראים סט כלים כזה שמתאים להמון מקרים
גשר יעיל (שיתוף של רק ככתובת בזכרון) בין שפות שונות, הלוך וחזור, בקלי קלות, גם באמצעות קוד-סקריפט מינימלי אמור להיות מאוד מאוד נוח, פותר התלבטויות, גם בעתיד בגלל שהוא לא "מבוסס על", אלא "מגשר בין" גמיש מאוד.
אפי' לנהל קבצים בלינוקס עתיד להיות קל יותר איתו. -
- כן (מחזיק תצלומי הקוד הבינארי, ככל שאני מבין).
- לא. יהיה גשר, ובעיקר תחליפים טובים יותר ומגוון עצום, חלקם הגדול נכתבים עבור שפות אחרות בכלל.
- תסתכל באתר, להוריד קובץ בינארי בודד ולהריץ דרכו קובץ TS.
-
-