נמרוד הוא קוד פתוח, שפה חופשית, הוקלדה באופן סטטי, הכרחית תכנות נועדה לתמוך פרוצדורליים, מונחה עצמים, סגנונות תכנות גנרי ופונקציונליים, תוך שמירה יעילה ופשוט.
נמרוד הוא מסוגל עץ מופשט תחביר (AST) כחלק ממפרט, מאפשר מערכת מאקרו חזקה שיכול לשמש ליצירת שפות ספציפיות תחום. תכונות תורשתיות מLisp.
התוכנה מציגה דור ילידי קוד, איסוף אשפה, iterators אפס תקורה, מפעילי משתמש להגדירן, datatypes רמה גבוה, לקמפל הערכת זמן, compability קדימה, GTK2, Windows API, איגודי API POSIX, מערכת מנתח plugable, גנרטור תיעוד, ו פסקל לנמרוד כלי המרה.
נמרוד הוא נייד, מה שאומר שהוא יכול לרוץ על לינוקס, BSD, Mac OS & nbsp; X & nbsp; ו- Windows מערכות הפעלה
מה חדש במהדורה זו:.
- תיקוני באגים:
- GC הישן מעולם לא נאסף מחזורים בצורה נכונה. קבוע אבל זה יכול לגרום לרגרסיות ביצועים. עם זאת אתה יכול לבטל את אספן המחזור עם GC_disableMarkAndSweep ולהפעיל אותו באופן מפורש בזמן מתאים או בכלל לא. יש גם GC חדש אתה יכול להפעיל עם --gc:. MarkAndSweep שאין לי בעיה זו, אך איטי יותר באופן כללי, ואין לי ערבויות בזמן אמת
- הגבס צף סוגי נקודה עכשיו עושה bitcast כמפורט במדריך. זה שובר את קוד שבטעות משתמש בגבס להמיר ערכי נקודה צפה שונים.
- הביצועים של מודול SCGI שופרו מאוד, זה כבר לא יחסום בהרבה בקשות בו זמנית.
- בסך הכל קבוע מעל 70 נושאי GitHub והתמזג מעל 60 בקשות משיכה.
- תוספות ספרייה:
- יש GC סימן ולטאטא ניסיוני חדש שיכול להיות מהיר יותר (או הרבה יותר איטי) מאשר GC ברירת המחדל. אפשר עם --gc:. MarkAndSweep
- המוסף system.onRaise לתמוך מערכת מיזוג.
- system.locals נוסף המספק גישה למקומיים של proc.
- macros.quote נוסף לAST מעין-שציטט.
- המוסף system.unsafeNew לתמוך אובייקטים באורך משתנים חאקי.
- system.fields ואובייקט תמיכת system.fieldPairs מדי; הם משמשים לtuples תמיכה בלבד.
- המוסף system.CurrentSourcePath חוזר נתיב קובץ מערכת המלא של קובץ מקור הזרם.
- פקודות מאקרו מודול עכשיו מכיל המון עוזרים שימושיים לבניית עצי תחביר מופשטים.
- שינויים המשפיעים על תאימות לאחור:
- משותף היא מילת מפתח עכשיו.
- לא בשימוש sockets.recvLine וasyncio.recvLine, הוסיף readline במקום.
- הזחה אופן שבו טיפלה במנתח השתנה באופן משמעותי. עם זאת, זה משפיע על קוד עולם האמיתי מעט מאוד (אם בכלל).
- איחוד הביטוי / ההצהרה יושם. שוב זה משפיע רק על מקרי קצה ואף קוד עולם האמיתי ידוע.
- שינה את ממשק סינכרוני של מודול scgi.
- WideStrings כעת אשפה שנאספו כמו סוגים אחרים מחרוזת.
- תוספות Compiler:
- פקודת doc2 אינה מייצרת תפוקה לפרויקט כולו יותר. השתמש במתג --project החדש כדי לאפשר את ההתנהגות הזאת.
- מהדר עכשיו יכול להתריע על משתנים מקומיים מוצלים. עם זאת, זה צריך להיות מופעל באופן מפורש באמצעות --warning [ShadowIdent]:. על
- מהדר תומך כעת כמעט בכל Pragma בPragma דחיפה.
- ממירי Generic יושמו.
- נוסף Pragma noforward הניסיוני ביותר המאפשר מצב הידור מיוחד כי במידה רבה מבטל את הצורך בהצהרות קדימה.
- תוספות שפה:
- ביטויי מקרה עכשיו נתמכים.
- לוח עכשיו לחקות באופן הדוק יותר את התחביר של מקרה ההצהרה.
- נמרוד יכול כעת להסיק את סוג החזרה של proc מהגוף שלה.
- הוספת הצהרת Mixin להשפיע סמל מחייב כללים בתרופות הגנריות.
- מעקב חריג נוספו ואת פקודת doc2 הוספת הערות לחריגים אפשריים עבורך.
- אפקטי משתמש מוגדר (& quot; תגים & quot;). מעקב נוספו ואת פקודת doc2 הוספת הערות לתגים אפשריים עבורך
- סוגים עם התחביר החדש לא אפסי למדינה אפסית שבמפורש אינו מותרת. עם זאת כיום מהדר מבצע לא סטטי מתקדם בדיקה זו; לעת עתה זה רק למטרות תיעוד.
- הצהרת יצוא נוספה לשפה: ניתן להשתמש בו לסמל של העברת כל כך מודולים הלקוח לא צריכים לייבא התלות של מודול במפורש .
- עומס יתר בהתבסס על ASTs יושם.
- עכשיו נתמך עבור שיטות רבת.
- ניתן לאתחל אובייקטים באמצעות ביטוי בנאי אובייקט.
- יש מבנה תחבירי חדש (;) ביטויים והצהרות המאחדים .
- עכשיו אתה יכול להשתמש מאפסי יבוא מודול אם אתה רוצה לייבא את המודול אבל רוצה לאכוף גישה מלאה לכל סמל במודול.
בנאים
ניתן להוסיף הערות
Generics
מה חדש בגרסת 0.8.14:.
- תקן את הבעיה בזיכרון חמור הנוגע להעברת מסר
- תוקן באג רציני בעניין instantiations שונה של proc גנריות.
- תוקן באג חדש הציג בי חריג EIO שגוי הועלה לסוף הקובץ עבור קבצי טקסט שאינו מסתיימים בשורה חדשה.
- c2nim תיקון באג, c2pas: אפשרות --out מעולם לא עבדה כמו שצריך .
- תיקון באג:. העברה של procs הגנרית מעולם לא עבד
- חלק תיקוני באגים יותר לפקודות מאקרו ולעבד בזמן הערכה.
- GC עכשיו לוקח בחשבון מצביעי פנים על הערימה שעשויה להיות מוצגים על ידי optimizers C האגרסיבי.
- allocator הילידים של נמרוד / GC עכשיו עובד על PowerPC.
- תיקוני באגים רבים אחרים:. יותר מדי כדי לפרט את כולם
מה חדש בגרסה 0.8.6:
-
תיקוני באגים:
- pragmas לרמוז [X]: ומ[ X] אזהרה: את עכשיו עובד .
- תחביר שיחת שיטה לiterators עובד שוב (לx בlines.split ()).
- קבוע טעות דפוס בremoveDir לPOSIX שיובילו לרקורסיה אינסופית.
- מהדר עכשיו בודק ששמות קבצים מודול הם מזהים בתוקף.
- דפוסים ריקים לPragma dynlib כעת אפשריים.
- os.parseCmdLine חזר תוצאות שגויות לרווח.
- שימוש tuple כל היגיון (תוך שימוש באותה tuple עם ובלי שדות בשם) לא לקרוס מחולל הקוד יותר.
- הודעת שגיאה טובה יותר מסופקת כאשר הטעינה של proc בתוך lib דינמי נכשלה.
- תוספות:
- system.contains נוסף למערכים פתוחים.
- מודול PEG תומך כעת @ מפעיל לולאת חיפוש.
- דקדוק / מנתח: SAD | IND מותר לפני כל סוג של סגירת הסוגר. זה מאפשר לformating קוד מקור לגמישה יותר.
- מהדר משתמש כעת שולחן לאגד לבדיקת סמל בהקשר לאגד. (ראה # תבניות manual.html לפרטים.)
- קלפים שנזרקו & quot; & quot; & quot; ההערה שלי הארוכה & quot; & quot; & quot; עכשיו הוא מותאם משם.
- --floatChecks החדש: ב| את מתגים וpragmas לניפוי שגיאות טובות יותר של פעולות נקודה צפה. (ראה # manual.html מוגדר מראש-נקודה צפו סוגים לפרטים.)
- המדריך לשופר. (תודה רבות לפיליפ Lhoste!)
- שינויים המשפיעים על תאימות לאחור:
- המהדר אינו לדלג על השלב מקשר יותר גם אם אין קובץ השתנה.
- os.splitFile (& quot; .xyz & quot;) עכשיו חוזר (& quot; & quot & quot ;,; .xyz & quot ;, & quot; & quot;) במקום (& quot; & quot ;, & quot; & quot ;, & quot; .xyz & quot; ). שמות קבצים שמתחילים בנקודה המטופלות באופן שונה.
- strutils.split (ים: מחרוזת, seps: להגדיר [char]) לא מניבה את המחרוזת הריקה יותר. התנהגות זו היא כנראה מתאימה יותר לפיצול רווחים.
- מהדר עכשיו מפסיק אחרי בורר שורת הפקודה --version.
- תמיכה הוסרה לירושת enum במנתח; ירושת enum מעולם לא תועדה בכל מקרה.
- שדה msg של system.E_base יש עכשיו את מחרוזת הסוג, במקום CString. זה משפר את בטיחות זיכרון.
מה חדש בגרסה 0.8.2:
-
תיקוני באגים:
- [X] עובר --hint: כבוי או --warning [X]:. את כמו שורת פקודת טיעונים כדי מהדר עכשיו עובד
- פרמטרים ברירת מחדל עבור תבניות עכשיו לעבוד.
- בעיית אבטחה קבועה בsystem.copy.
- מקרה מחרוזת בלי חלק אחר שנוצר קוד הלא נכון.
- תיקונים שונים למודול osproc; זה עכשיו עובד על Windows.
- תוספות:
- רב-שיטות מיושם.
- מהדר עכשיו מזהה את מספר המעבדים זמינים ומבצע מהדר C במקביל. זה יכול להיות מותאם על ידי --parallel_build:. מתג שורת פקודת number_of_processors
- . דפוס מבוסס PEG התאמה באמצעות מודול היתדות
- המוסף system.definedInScope.
- המוסף system.accumulateResult.
- המוסף os.walkDirRec.
- osproc.countProcessors נוסף.
- המוסף osproc.execProcesses.
- מערכת התצורה תומכת כעת cc.options.linker $.
- expr הממוזגים וtypeDesc בדקדוק / המנתח:. זה יאפשר לprocs אנונימי ללא מבדה
- תסריטים רבים אין צורך בGC: --gc החדש: מתג שורת הפקודה לא ניתן להשתמש בם כדי לשלול את GC מההפעלה .
- שינויים המשפיעים על compability לאחור:
- נטילת מבחין אובייקט הכתובת היא עכשיו לא חוקית.
- עובר proc לvar proc מותר רק לprocs מסומן בprocvar או אמנה קוראת! = Nimcall. לעת עתה זה רק גורם לאזהרה, אבל זה יהפוך לשגיאה בקרוב.
- מערכת. & ועכשיו system.add לקבל openArray במקום פרמטרים seq.
- הוסר strutils.findSubStr וstrutils.findChars. הם כבר מיושן במשך 3 גרסאות.
- מודול Unicode משתמש בסוג שונה עבור TRune.
- לא בשימוש strutils.toString: להשתמש $ במקום .
- לא בשימוש os.splitPath:. Os.splitPath שימוש שחוזר tuple במקום
- לא בשימוש os.extractDir:. להשתמש splitFile (נתיב) .dir במקום
- לא בשימוש os.splitFilename: להשתמש splitFile במקום .
- לא בשימוש os.extractFileExt: להשתמש splitFile במקום .
- לא בשימוש os.extractFileTrunk: להשתמש splitFile במקום .
- לא בשימוש os.appendFileExt: להשתמש os.addFileExt במקום .
- לא בשימוש os.executeShellCommand: להשתמש os.execShellCmd במקום .
- לא בשימוש os.iterOverEnvironment:. Os.envPairs שימוש במקום
- parseopt.init המגונה: להשתמש parseopt.initOptParser במקום .
- לא בשימוש parseopt.getRestOfCommandLine: להשתמש parseopt.cmdLineRest במקום .
- לא בשימוש os.pcDirectory: להשתמש os.pcDir במקום .
- לא בשימוש os.pcLinkToDirectory: להשתמש os.pcLinkToDir במקום .
- לא בשימוש osproc.executeProcess: להשתמש osproc.execProcess במקום .
- לא בשימוש osproc.executeCommand: להשתמש osproc.execCmd במקום .
יש לי
מה חדש בגרסה 0.8.0:
-
תיקוני באגים:
- קבועים באג קטן שגרם למהדר שלא לדווח סימנים עמוסים שאינו בשימוש
- קבוע סמל בנוגע באג קטן עומס יתר
- קבוע טעות דפוס: זה & quot; לא & quot מעורפל & quot ;,; ambigious & quot; ; -)
- מהדר עכשיו מזהה רקורסיבית כולל קבצים
- system.card צריך לעבוד שוב
- פריטים לסט [char] ומערך [char, T] צריכים לעבוד עכשיו
- תוספות:
- סוגים גנריים מיושמים ובדיקת סמל שני שלב בגרות הגנרית
- פרמטרים תבנית יכולים עכשיו להיות אמיתיים סוגים
- מיושם literals מחרוזת גלם הכללי: זיהוי & quot; abc & quot; הוא קיצור של זיהוי (r & quot; abc & quot;)
- בעומס יתר iterators רזולוציה מופרד מprocs; iterators עכשיו יכול להיות זהה לשם + חתימה כprocs
- בדיקת סמל בתבניות יכולה להיות מושפע על ידי מילת המפתח לאגד החדש
- מהדר עכשיו מקבל מתג --no_main לקישור יכולת פעולה הדדית טובה יותר עם שפות הידור אחרות
- tuple מיושם לפרוק בסעיפי var
- מחולל הקוד פולט ברירת מחדל: __assume (0); לVisual C ++ (לאופטימיזציה)
- מהדר עכשיו בודק אם proc יש תופעות לוואי; procs שהצהיר שאין לו תופעות לוואי נדחים אם המהדר לא יכול לאמת את זה
- strutils מפעיל פורמט.% תומכים כעת # $ לספירת טיעון אוטומטי
- strutils.join מיושם
- שינויים המשפיעים על compability לאחור:
- שתי בדיקת סמל שלב מתבצעת בשגרה הגנרית
- bind הוא עכשיו מילה שמורה; יוצא מן הכלל הוא לא מילה שמורה יותר
- סוגים מופשטים כבר שינה את שם לסוגים שונים; כך ברור היא עכשיו מילה שמורה; מופשט היא לא מילה שמורה יותר
- system.openFile מיושן: שימוש system.open במקום
- system.closeFile מיושן: system.close שימוש במקום
- strutils.replaceStr מיושן: strutils.replace שימוש במקום
- strutils.deleteStr מיושן: strutils.delete שימוש במקום
- strutils.splitSeq מיושן: strutils.split שימוש במקום
- strutils.splitLinesSeq מיושן: strutils.splitLines שימוש במקום
- strutils.parseFloat אינו מקבל פרמטר התחלה נוסף עוד
- תיעוד:
- המדריך שופר
מה חדש בגרסה 0.7.6:
-
תיקוני באגים:
- התקנה על Windows Vista יכולה כעת לעבוד מחוץ לקופסא; אנא נסה!
- קבוע באג שמנע & quot; מודולים רקורסיבית & quot; דוגמא מהעבודה
- ערבוב פרמטרים בשם וללא בקריאה לפרוצדורה עכשיו עובד
- מספרי אוקטלי עם 0C הקידומת כעת נתמכים כראוי
- enumerations עכשיו יכול להתחיל עם ערכים שליליים
- parseInt, ParseBiggestInt עכשיו לזרוק חריג אם המחרוזת אינה מסתיימת לאחר המספר המנותח
- מהדר עכשיו מטפל בהצהרות ברמה העליונה בצורה נכונה
- ספריית nimcache נוצרה אף פעם לא נגמר בקו נטוי
- createDir עכשיו עובד עבור ספריות גלובליות תחת UNIX (& quot; / somepath / כאן & quot;)
- מהדר עכשיו מבצע הפעלה עם מוביל & quot; quot ./&; תחת UNIX
- מהדר תומך כעת מערכים קבועים של מצביעי הליך
- elif בדוחות מקרה עכשיו עובד
- iterators באמצעות פרמטר מערך פתוח עכשיו לעבוד
- קבועים באג שבי בהקשרים מסוימים myEnum $ לא עבד
מה חדש בגרסת 0.7.4:
- התקנה על Windows צריכה לעבוד עכשיו, אם הספרייה מכילה רווחים
- גנרטור התיעוד עכשיו הופך רק
- `` `` מותר למפעילים כמו המדריך אומר
- במקרים נדירים, בדיקת המדד כבר מותאמת משם, למרות שזה היה הכרחי
- מספר תיקוני באגים לסוגי tuple
- הוסיף `` מודול unicode`` לUTF-8 טיפול
- הוסיף קסמי hostOS וhostCPU ל` `מודול system``
- system.echo עכשיו מקבל את טענות מרובות
- הוסיף אופטימיזציה: במקרים מסוימים הטבעה של iterators עכשיו מייצרת קוד באופן משמעותי טוב יותר
- הוסיף חיסול קוד מת כל תכנית
- הקסם `` `מפעיל כעת עובד לספירות
- ב` `סעיפי const`` מתקדם לקמפל זמן הערכה נעשה
- שם `` in_Operator`` ל` `contains``:` `in`` היא עכשיו תבנית שמתרגמת את` `contains``
- שינה את `` strutils.quoteIfSpaceExists`` ל` `strutils.quoteIfContainsWhite``
- המנתח הוא עכשיו הרבה יותר בררן לגבי הפסיקים missings, וכו 'אם זה משפיע על הקוד שלך יותר מדי, תנסה להפעיל את הקוד שלך דרך המדפסת די.
- `` API macros`` הוא כבר לא חלק מ` `מודול system``, להשתמש ב- API זה עכשיו אתה צריך לייבא את` `macros`` מודול
- הוסיף הדרכה
הערות תיעוד
מה חדש בגרסת 0.7.2:
- זה הוא שחרור תיקון באג. תיקון החשוב ביותר זה שנמרוד עכשיו עובד שוב על AMD64 מעבדים (x86_64).
מה חדש בגרסת 0.7.0:
- תיקוני באגים שונים, יותר מדי לרשום אותם כאן
דרישות :
- Python
תגובות לא נמצא