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
Seite 9 von 12   « Erste     789 1011     Letzte »    
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#1

Re: ScriptEngine II (v. 0.5.1.0)

  Alt 19. Mai 2010, 18:04
[OT]
Wow, sieht ziemlich geil aus, wenn ich das mal so sagen darf!
Vor allem die Beleuchtungs- und Schatteneffekte finde ich sehr gelungen.
[/OT]
  Mit Zitat antworten Zitat
Benutzerbild von littleDave
littleDave

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

Re: ScriptEngine II (v. 0.5.2.0)

  Alt 21. Mai 2010, 22:47
Es ist vollbracht Version 0.5.2.0

Wie vor kurzem Angekündigt kommt hier nun ein großes Update. Die neue Multi-Threading-Funktion hat intern einige extreme Einschnitte mit sich gebracht und ich hoffe, dass alles funktioniert. Die Thread-Geschichte habe ich mehrere Tage lang geprüft sie und sollte funktionieren. Ob wirklich alles perfekt synchronisiert ist, kann ich nur hoffen - ich habe mir jedenfalls sehr viel Mühe gegeben. Die grundlegenden Threading-Funktionen habe ich erfolgreich unter Delphi 7, Delphi 2010 und Lazarus getestet.
  • Neuerungen
    • Multi-Threading ist jetzt innerhalb eines Scriptes möglich. Man kann nun innerhalb eines Scripts eigene Threads erstellen und Script-Quelltext in diesen Threads ausführen lassen
    • Neuer Namespace: System.Threading
    • Neue Klasse: System.Threading.TThread
    • Neue Klasse: System.Threading.TExecutionContext
    • Neue Klassen in System.Threading: TCriticalSection, TMutex, TEvent, Monitor
    • Neues Record in der System-Unit: System.TGuid
    • Neues Record in der System-Unit: System.TVersion
  • Änderungen
    • Record-Vergleiche sollten nun funktionieren. Da aus Performance-Gründen nur ein roher Speicher-Vergleich erstellt wird, funktionieren Record-Vergleiche, bei denen die Records strings enthalten, nicht. Der Compiler gibt jedoch eine Warnung bei solchen Vergleichen an.
    • Der interne Programmablauf der RunTime hat sich auf Grund des Threading-Supports sehr geändert. Ich hoffe aber, dass alles weiterhin funktioniert
    • Statische Variablen werden jetzt nicht mehr unten im Stack sondern in einem seperaten Speicher abgelegt
  • Bug-Fixes
    • Kleines Problem bei der record-Deklaration behoben: bei abgeleiteten Typen als Record-Variablen - z.B. bei LongInt (ist von integer abgeleitet) wurde die finale Record-Größe im Speicher falsch berechnet.

Noch ein paar kurze Worte:
  • Ich habe das PDF im Download mit der Threading-Geschichte erweitert. Darin sind jetzt ein paar grundlegende Sachen niedergeschrieben.
  • Falls wer in der Beispiel-IDE Threading ausprobieren will: das eingebaute Konsolen-Fenster (also Console.Write..., usw) sind thread-safe implementiert.
  • Ein empfohlenes Script: wenn ihr die Beispiel-IDE öffnet, könnt ihr mal das Projekt "Projects\ThreadingPrimeNumber\ThreadedPrime.sproj ect" öffnen und laufen lassen. In diesem Script wird die Anzahl der Primzahl zwischen 0 und 750000 berechnet. Beim Start könnt ihr auswählen, ob nur ein Thread alles berechnen soll, oder ob sich die Arbeit 15 Threads teilen sollen.
  • In der IDE werden jetzt nicht mehr alle Packages automatisch geladen. Jedoch könnt ihr, während das Program läuft, neue Packages hinzufügen oder vorhanden deaktivieren. Dafür gibt es einen neuen Tab auf der linken Seite.
  • Falls wem in seinem Programm die Threads innerhalb eines Scriptes ein Dorn im Auge ist, so kann man die komplette Threading-Geschichte natürlich auch deaktivieren. Dafür gibt es in der Datei "ScriptEngine.inc" ein neues Define, mit dem man den Threading-Namespace komplett raus schmeißen kann.

Der Download befindet sich wie immer im ersten Post ( - oder im SVN)

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
Dolvik

Registriert seit: 7. Mai 2010
14 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: ScriptEngine II (v. 0.5.2.0)

  Alt 23. Mai 2010, 17:59
Hallo littleDave,

jetzt legst du ja ein ordentliches Tempo vor. Die Geschichte mit Multithreading ist echt klasse! Kann man sicher mal gebrauchen.

Weiterhin viel Gelingen und gutes Voranschreiten mit deinem Game.

Dolvik
  Mit Zitat antworten Zitat
DXArc

Registriert seit: 11. Jan 2007
1 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

AW: ScriptEngine II (v. 0.5.2.0)

  Alt 9. Jun 2010, 14:10
Hallo

an alle die Software und /oder Komonenten als Open Source für Delphi anbieten: Die MPL ist schon in Ordnung.

GPL und LGPL sind für Delphi nicht ohne weiteres anwendbar! Bitte mal beim ZEOS Projekt schauen. Dort wird für die letzte Version eine abgewandelte LGPL eingesetzt, damit die Library
in kommerziellen Projekten einsetzbar ist. Hintergrund ist, dass man bei einer Single-Exe immer Code einbauen muss (auch wenn DLLs benutzt werden). Diesen müsste man aber abändern können.

Notfalls muss dann der Autor der Software einen Linker oder eben die IDE zur Verfügung stellen. Und Delphi jedem Kunden schenken lohnt sich vielleicht nicht.
Daher wenn LGPL, dann macht bitte eine eine abgeänderte Version daraus.

Und GPL macht eigentlich nur Sinn, wenn es um die eigene Verwendung, aber nicht um eine mögliche Weitergabe geht. Bei Lazarus/Freepascal sieht das natürlich anders aus.

Trotzdem natürlich Dank an alle, die sich engagieren.
  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.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
 
#6

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
 
#7

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
 
#8

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
 
#9

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 littleDave
littleDave

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

AW: ScriptEngine II (v. 0.5.3.1)

  Alt 15. Aug 2010, 17:24
Oh, ich habe irgendwie den letzten Post übersehen

Ist es ein großer Aufwand den Typ Char einzubaun? Denn so muss man in jedem Script einen string auf len(1) prüfen.
Ist schon leider etwas Aufwand. Denn es gibt einige Stellen, die für neue Typen angepasst werden müssen. Ich muss mal schauen, wie ich das am besten hin bekomme

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?
Ja, das Script-File kann sehr groß werden, 1MB habe ich jedoch noch nicht geschafft. Man könnte vielleicht noch das ein oder andere Byte herausholen, jedoch wirkt sich das sehr negativ beim Laden des Scriptes aus. Das Auslesen des Binary-Files ist übriges streaming-fähig, es wird kein .Seek, .Size oder .Position benutzt. Daher kann man auch sehr schnell und ohne Probleme ein zLibStream beim Speichern und Laden übergeben.

Könntest du evtl den Uses-Cleaner von CNPack vor Releases drüberlaufen lassen?
Die Uses-Liste ist manuell gemacht und sollte eigentlich passen. Deswegen noch das CNPack-Installieren will ich eigentlich nicht.

E: Achja bei der IDE wäre ein Parameter, um ein Script direkt zu laden, praktisch.
Es kommt bald noch viel besser. Ich bastel mir gerade eine eigene RunTime-Library zusammen. Damit kann man dann aus dem Script eine .exe machen, wobei natürlich nur der kompilierte ByteCode an die Echse angehängt wird. Ich habe als Test bereits eine komplette Forms-Anwendung, Multi-Threaded mit einer IdHTTP-Komponente drinnen. Die Exe ist ganze 31 kb groß (ok, die RunTime hat noch 3 MB, aber die wird ja nur einmal pro Rechner gebraucht .

@All: Neue Version Version 0.5.3.1

Eine kleine Bugfix - Version
  • Neuerungen
    • Der Typ "System.TObject" hat jetzt eine neue virtuelle Methode: ".ToString"
    • "System.Console.WriteLine" hat jetzt einen neuen Parametertyp: TObject (ruft die ".ToString" - Methode auf)
  • Änderungen
    • Class-Var-Deklaration gilt jetzt nur noch für die erste Variable
    • System.Diagnostics.TStopwatch erweitert
    • Man kann jetzt nur noch den Constructor von externen Klassen aufrufen, wenn dieser deklariert wurde
  • Bug-Fixes
    • Unit-Cache-Bug mit Records behoben
    • Set-Of-Typen hatten manchmal keine interne Größe, wodurch man sie nicht als Variable in Records oder Klassen hinzufügen konnte
    • Exception-Handling innerhalb von Case-Statements funktionierte wegen einem Compiler-Bug nicht
    • Der Aufruf von Script-Methoden über das Native-Interface (TMethod-Cast) funktionierte nicht mit var-Parametern

Download-Link ist im ersten Post.

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
Antwort Antwort
Seite 9 von 12   « Erste     789 1011     Letzte »    


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 15:46 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