AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte ScriptEngine II (v. 0.6.1)
Thema durchsuchen
Ansicht
Themen-Optionen

ScriptEngine II (v. 0.6.1)

Ein Thema von littleDave · begonnen am 21. Sep 2009 · letzter Beitrag vom 4. Aug 2011
Antwort Antwort
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#1

AW: ScriptEngine II (v. 0.5.3.0)

  Alt 5. Aug 2010, 22:10
Neue Version Version 0.5.3.0

Nach einer längeren Update-Pause habe ich mal wieder die aktuellste Version veröffentlicht. Da die DP mein Zip irgendwie nicht haben wollte, habe ich im ersten Post jetzt den Download-Link von SourceForge.net angegeben.

Diesmal ist der ChangeLog wieder etwas länger:
  • Neuerungen
    • Die Geschwindigkeit vom Compiler und vom Linker extrem verbessert: der Compiler braucht jetzt nur noch 1/10 der Zeit zum kompilieren
    • Im Script kann man jetzt Inline-Dokumentation einfügen. Dafür muss man einfach vor der Deklaration ein Kommentar mit drei Slashes ("///") hinzufügen. Dabei kann man beliebig viele Zeilen für die Dokumentation verwenden - jede Zeile muss dabei nur mit den drei Slashes anfangen. Zudem gibt es jetzt eine neue Code-Completion-Klasse, mit der die Inline-Dokumentation angezeigt werden kann. In der Beispiel-IDE ist diese auch eingebaut - einfach mal den Cursor zu dem entsprechenden Identifier bewegen und Strg+Alt+Space drücken.
    • Der Typ von Rückgabewerten von Funktionen kann jetzt auch als "Strong-Name" angegeben werden (UnitName.Typ)
    • Der Typ properties kann jetzt auch als "Strong-Name" angegeben werden (UnitName.Typ)
    • Der Typ Parametern von Properties kann jetzt auch als "Strong-Name" angegeben werden (UnitName.Typ)
    • Compiler versucht jetzt nach manchen Fehler im Script trotzdem fortzufahren, um bessere Code-Completion zu ermöglichen
    • Code-Completion ist jetzt auch mit partiellen Units möglich (neue überladene Methode in den entsprechenden Klassen)
    • Neues Keyword: sealed. Klassen können jetzt als "Sealed" deklariert werden, damit man nicht mehr von der Klasse ableiten kann.
    • Neue Exception: EUnknownException. Diese Exception wird geworfen, wenn eine Unbekannte Exception aufgetreten ist (also eine in der Script-Engine nicht registrierte Exception)
    • Neue Typen in der System-Unit: int8, int16, int32, uint8, uint16 and uint32
    • Ein paar weitere Helfer-Methoden für die Standart-Typen eingebaut
    • Neues Record in der System.Diagnostics - Unit: TStopwatch (zum Zeit messen)
  • Änderungen
    • Inkompatible-Typen-Warnung bei Klassen ist jetzt ein Compiler-Fehler
    • Der Filter zum Finden der korrekten überladenen Methode verbessert
    • Methoden in Records können nun nicht mehr als virtual, abstract, etc. deklariert werden
    • Ein paar Klassen in der System-Unit geändert (sollte in den Scripts nicht bemerkbar sein)
    • Überladene Methoden müssen nun nicht mehr alle den selben oder überhaupt einen Rückgabewert haben. Sie müssen zwar weiterhin vom selben Typ sein (statisch oder nicht statisch), aber der Rückgabewert ist nun nicht mehr das Problem
    • Die Random-Funktionen habe der Übersicht halber aus der Klasse "System.Math" ausgelagert in eine neue Klasse: "System.Random". Dort sind jetzt alle Random-Funktionen drinnen - mit einer etwas anderen Deklaration: statt "Math.Random(x)" muss man jetzt "Random.Next(x)" schreiben.
  • Bug-Fixes
    • Fehler in RunTime behoben: Multiplikation von int32 mit einem Single oder Double lieferte ein falsches Ergebnis
    • Script-Funktionen "System.StringEncoding.AsUTF8", "System.StringEncoding.AsUnicode", "Systeml.StringEncoding.AsString" habe nicht funktioniert
    • Compiler-Bug im inherited-Ausdruck behoben: die Stack-Größe wurde falsch berechnet
    • Manchmal wurden rekursive uses-Deklaration nicht erkannt
    • Memory-leak in der RunTime behoben: Methoden-Aufrufe im Script über einen Methoden-Pointer haben 8 Byte zu viel Arbeitsspeicher angefordert
    • "Deprecated" - Erkennung wurde nicht für Methoden-Parameter und Rückgabewert-Typen ausgeführt
    • Rückgabewert-Typen wurden zwischen interface und implementation nicht überprüft
    • Das Suchen von Konstanten hat nicht immer funktioniert
    • Fehler in der RunTime-internen RTTI bei records behoben
    • Fehler im RunTime-Cache behoben
    • Finalization-Reihenfolge war bei partiellen Units nicht korrekt
    • Stack-Element des Self-Pointers war falsch bei Methoden, die im Script über Methoden-Pointer aufgerufen wurden
    • Fehler im Linker behoben: Optimierer von Operationen und Vergleichen hat nicht immer korrekt gearbeitet
    • Fehler in System.TTimeSpan.FromString() behoben
    • Compiler-Fehler in der "on [x]: [ExceptionClass] do" - Anweisung behoben
    • Fehler in statischen Variablen von Klassen und Records behoben

Ich habe das ganze leider noch nicht mit FreePascal und mit Delphi 2010 testen können - ich hoffe, dass alles trotzdem funktioniert.

Grüße
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Florian Hämmerle
(Gast)

n/a Beiträge
 
#2

AW: ScriptEngine II (v. 0.5.2.0)

  Alt 5. Aug 2010, 22:17
Oja
Mein aktuelles Projekt freut sich das zu hören (und ich natürlich auch). Wirklich tolle Arbeit die du da leistest!

Weiter so.

Was sind eigentlich deine Ziele bis 1.0.0.0?

mfg Florian
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#3

AW: ScriptEngine II (v. 0.5.2.0)

  Alt 5. Aug 2010, 22:46
Danke für das Lob *freu*

Meine Ziele bis 1.0.0.0 ... hm weiß ich noch nicht - obwohl: arrays .

Also konkrete Ziele habe ich nicht. Ich bin aber auch schon sehr zufrieden mit der aktuellen Version. Ich will eigentlich nur eine gute, schnelle und Objekt-Orientierte Script-Sprache mit Object-Pascal-Dialekt schreiben, mit der man kleine und größere Aufgaben erledigen kann. Zum Teil habe ich das auch bereits geschafft - ich habe zum einen ein sehr einfaches Script (ok, Multi-Threaded , aber das ist nur nebensächlich), mit dem ich mir die Anzahl der Quelltextzeilen in allen .pas-Dateien in einem Ordner sowie den Unterordnern holen kann. Zum anderen entwickle ich nebenbei noch ein Spiel, in der die Script-Engine die komplette Programm-Logik ausmacht.

Was als nächstes sicher noch kommen wird ist der Typ "AnsiString", der ab Delphi 2009 doch etwas wichtiger geworden ist. Aber sonst habe ich keine konkrete Road-Map, fast immer nur das, was ich gerade brauche .
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Florian Hämmerle
(Gast)

n/a Beiträge
 
#4

AW: ScriptEngine II (v. 0.5.2.0)

  Alt 5. Aug 2010, 22:49
Auch gut.
SE2 ist ja jetzt schon so mächtig, dass man damit Spiele programmieren kann. Da mach ich mir wegen der Geschwindigkeit keine großen Sorgen mehr .
Dann hoff ich mal, dass du schon bald wieder was neues brauchst, arrays finde ich persönlich nicht so wichtig (kann man alles auch über TList machen).

mfg Florian
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#5

AW: ScriptEngine II (v. 0.5.2.0)

  Alt 5. Aug 2010, 23:50
Ich habe eben noch schnell einen kleine Fehler im Compiler ausgebessert. Neue Version ist auf SourceForge bereits hochgeladen. Download-Links ist der alte.

Gruß
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

Registriert seit: 10. Aug 2007
609 Beiträge
 
FreePascal / Lazarus
 
#6

AW: ScriptEngine II (v. 0.5.2.0)

  Alt 6. Aug 2010, 07:25
Hey, grandios was sich mit der SE2 alles machen lässt.

Hier mal meine Vorschläge/Kritik/Fragen:
- Ist es ein großer Aufwand den Typ Char einzubaun? Denn so muss man in jedem Script einen string auf len(1) prüfen.
- Der kompilierte Script-binärstream wächst mit größeren Scripts schnell an. Da lässt sich aber aufgrund der vielen Nullen schnell mal 1MB auf 40KB komprimieren. Kann man an der Größe irgendwas drehen, ohne die Runtimeperformance einzuschränken?
- Könntest du evtl den Uses-Cleaner von CNPack vor Releases drüberlaufen lassen?

(btw: Hast du die H2443-Warnung abgestellt? ^^ Das die erste Version mit immer der gleichen Compilerwarnung )

Danke, macht echt Spass damit zu experimentieren. Compilerzeit mal eben so gezehntelt...

E: Achja bei der IDE wäre ein Parameter, um ein Script direkt zu laden, praktisch.

Geändert von mleyen ( 6. Aug 2010 um 09:59 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:17 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz