Neue Version
Version 0.5.5.0
Ich habe diesmal wieder einige Änderungen am Script-Code in der Script-System-
Unit vorgenommen. Genauer gesagt habe ich die Convert-Klasse komplett neu geschrieben. Die Routinen "IntToStr", "IntToStrDef", usw. haben jetzt einen anderen Namen. Daher kann es zu notwendigen Anpassungen am Script-Quelltext kommen.
Die Benutzung der Convert-Klasse ist nun komplett an .NET angelehnt. Um einen String z.B. in einen Integer umzuwandeln, schreibt man nun
System.Convert.ToInt32('12345');
. Die "ToInt32" gibt es dabei in sehr vielen überladenen Varianten, also z.B. für floats, strings mit Default-Wert, usw. Allgemein funktioniert die Konvert-Klasse wie folgt:
System.Convert.
[Optional: Try]To
[Ziel-Typ](
[Quell-Typ])
wobei Ziel-Typ z.B. Int32, Int64, Single, Double, String, usw. ist.
Als positiven Ausgleich dafür habe ich die Performance der RunTime nochmal verbessert. Dadurch konnte die Auführungszeit von Scripten um bis zu 30% gesenkt werden.
- Neuerungen
- Neuer Typ: "System.UInt64"
- Convert-Routinen für "System.UInt64"
- Neue Op-Codes für das Laden von Integers, Floats, Strings und Pointer in den Stack -> großer Performanceschub in der RunTime
- Änderungen
- Die Convert-Klasse ist nun komplett neu erstellt. Daher heißen die Methoden-Namen nun anders, wodurch wahrscheinlich einige Anpassungen am Script-Quelltext nötig sein werden.
- Verbesserungen des Optimizers im Linker. Durch neue Optimierungsstufen ist der Byte-Code und somit auch die Ausführgeschwindigkeit sehr verbessert worden.
- Eine weitere Stufe zum Filtern der am besten passenden overloaded-Methode im Compiler eingebaut
- Bug-Fixes
- Das finden der besten überladenen Methode hatte ein Problem mit var-Parametern. Diese wurden nicht korrekt berücksichtigt.
- Fehler beim automatischen generieren von Getter- und Setter-Methoden für properties in externen Klassen behoben
- Fehler beim @-Statement für Methoden-Pointer, wenn kein "Self" mit angegeben wurde.
Download-Link ist im ersten Post.
Grüße