Delphi-PRAXiS
Seite 9 von 12   « Erste     789 1011     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   ScriptEngine II (v. 0.6.1) (https://www.delphipraxis.net/140590-scriptengine-ii-v-0-6-1-a.html)

Namenloser 19. Mai 2010 19:04

Re: ScriptEngine II (v. 0.5.1.0)
 
[OT]
Wow, sieht ziemlich geil aus, wenn ich das mal so sagen darf!
Vor allem die Beleuchtungs- und Schatteneffekte finde ich sehr gelungen.
[/OT]

littleDave 21. Mai 2010 23:47

Re: ScriptEngine II (v. 0.5.2.0)
 
Es ist vollbracht :arrow: 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

Dolvik 23. Mai 2010 18:59

Re: ScriptEngine II (v. 0.5.2.0)
 
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

DXArc 9. Jun 2010 15:10

AW: ScriptEngine II (v. 0.5.2.0)
 
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.

littleDave 5. Aug 2010 23:10

AW: ScriptEngine II (v. 0.5.3.0)
 
Neue Version :arrow: 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

Florian Hämmerle 5. Aug 2010 23:17

AW: ScriptEngine II (v. 0.5.2.0)
 
Oja :D
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

littleDave 5. Aug 2010 23:46

AW: ScriptEngine II (v. 0.5.2.0)
 
Danke für das Lob :-) *freu*

Meine Ziele bis 1.0.0.0 ... hm :gruebel: 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 8-), 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 ;-).

Florian Hämmerle 5. Aug 2010 23:49

AW: ScriptEngine II (v. 0.5.2.0)
 
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

littleDave 6. Aug 2010 00:50

AW: ScriptEngine II (v. 0.5.2.0)
 
Ich habe eben noch schnell einen kleine Fehler im Compiler ausgebessert. Neue Version ist auf SourceForge bereits hochgeladen. Download-Links ist der alte.

Gruß

mleyen 6. Aug 2010 08:25

AW: ScriptEngine II (v. 0.5.2.0)
 
Hey, grandios was sich mit der SE2 alles machen lässt. :shock: :thumb:

Hier mal meine Vorschläge/Kritik/Fragen: :-D
- 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 :wink: )

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

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:32 Uhr.
Seite 9 von 12   « Erste     789 1011     Letzte »    

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 by Thomas Breitkreuz