Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Dez 15, 2018 22:53

Foren-Übersicht » Sonstiges » Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 30 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Sa Aug 15, 2009 15:28 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Und erneut konnte Wilson mich auf einen Bug hinweisen. Wieder betraf es NativeCall und wieder 32-bit, allerdings dieses mal beim Zurückgeben eines Wertes, dessen Typ eine Klasse aus der Hostumgebung ist. Dort wurde das Typen-Feld auf 0 gesetzt, was dann später zu einer entsprechenden Zugriffsverletzung führen konnte.

Außerdem hatte das customlib-Beispiel einen kleineren Fehler, nämlich musste Thorium_Globals noch mit in die Uses.
Downloadlink wie immer im Headpost.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Aug 24, 2009 18:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Also, 1.0.3.0 hat nun ein paar mehr Fixes, hauptsächlich durch Wilson vorangetrieben, der im Moment der einzige ist, der Thorium wirklich aktiv nutzt (zumindest dem Feedback nach zu schließen).

Es gab eine Menge fixes, davon haben einige zu durchaus interessanten Fehlern geführt, unter anderem dem Erzeugen von ungültigen Instruktionen. Weiterhin sind nun ein paar Kommentare hinzugekommen, die das Debuggen erleichtern sollen. Mir ist aufgefallen, dass viele Crashes in TThorium.ClearStack gemeldet werden, weil man die Aufrufe von Thorium-Funktionen häufig in einem try-finally-Block hat (ganz nach dem Template). Die eigentliche Ursache liegt aber oft woanders, und wird von Thorium auch häufig ziehmlich detailliert berichtet. Daher nun in der TThoriumStack.ClearStack ein Hinweis, dass der dort auftretende Fehler vermutlich nicht der eigentliche ist, und man die Exception, die Thorium vorher vermutlich geworfen hat, genauer unter die Lupe nehmen sollte.

Weiterhin hat sich das API geändert. Das Interface IThoriumPersistent hat zwei weitere Methoden hinzubekommen, deren Bedeutung im Changelog und in der Implementation von TThoriumPersistent deutlich wird. Dabei geht es hauptsächlich darum, die Referenzzählung zu verfeinern. Im Zuge dessen haben Host-Methoden-Parameter nun jeweils einen Flag, der angibt, ob der übergebene Parameter (im Falle eines RTTI-Based-Host-Object) in der Hostumgebung gespeichert wird. Wenn dies der Fall ist, wird die Referenzzählung entsprechend informiert und angepasst.

Weitere Details zu den Änderungen gibts im Changelog.

Zukunftsblick:
Für die Zukunft sind einige Dinge für Thorium geplant. Zusätzlich zu den NativeCall-basierten Callbacks, die aber wahrscheinlich erst später kommen werden, soll es einen Thorium Debugger geben, der das Finden von Fehlern in Scriptcode vereinfachen soll. Eventuell wird auch der Compiler noch in eine externe Klasse ausgelagert, um Varianten der Syntax zu erlauben (aber das ist eher ein Nebenfeature (und wie es so mit Nebenfeatures ist, die sind meistens als erstes fertig ;) ) )

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Okt 25, 2009 12:27 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Von den Fixes her ist 1.0.4.0 eher bescheiden, es wird nur ein Problem behandelt, welches unter sehr sehr seltenen Umständen zu einem Crash führen konnte (siehe dieser Thread).

Relevanter ist da die Dokumentation der thorium.pas mithilfe von Lazdoc. Wer mit LazDoc nicht so vertraut ist, nimmt am besten die PDF, die sich im docs-Verzeichnis befindet und die als gute Referenz für alle Methoden von Thorium dienen sollte. In naher Zukunft wirds dann auch ein Einsteigertutorial geben, welches beschreibt, wie man einen ersten Thorium-Kontext erstellt und was man damit so anrichten kann.

greetings

\edit{Link korrigiert}

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Thorium Scripting Language
BeitragVerfasst: Sa Dez 26, 2009 22:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Nach einiger Zeit gibts mal wieder ein Release für Thorium. Nun Version 1.0.5.0.
Achtung: Diese Version ist *nicht* kompatibel mit FPC 2.2.4 (eventuell auch nicht mit älteren). Dort crasht der Compiler aufgrund eines Bugs, der in 2.4.0 (auch schon im veröffentlichten Release Candidate) behoben ist.

Ich habe diese Version kompatibel zu den Änderungen in 2.4.0 gemacht und weiterhin noch ein Feature implementiert, was den wohl lästigsten Teil beim portieren einer Klasse für Thorium ausmachte. Wenn man keine Möglichkeit hatte, die Klasse direkt von TThoriumPersistent abzuleiten, muss man die komplette Referenzzählung für Thorium implementieren, um den Interfaces IUnknown und IThoriumPersistent gerecht zu werden. Dies wird nun durch eine Klasse namens TThoriumReferenceImplementation vereinfacht. Diese Implementiert die Referenzzählung, allerdings nicht für sich, sondern für eine Objektinstanz, die man im Konstruktor übergibt. Dann teilt man dem Compiler noch mit, dass man die Interfaces nicht selber implementiert, sondern die Implementation in eben diese Klasse auslagert, und schon läuft dat:
Code:
  1.  
  2. type
  3.   TThoriumFileStream = class (TFileStream, IUnknown, IThoriumPersistent)
  4.   public
  5.     constructor Create(const AFileName: string; Mode: Word);
  6.     constructor Create(const AFileName: string; Mode: Word; Rights: Cardinal);
  7.     destructor Destroy; override;
  8.   protected
  9.     FReferenceImplementation: TThoriumReferenceImplementation;
  10.     FReference: IUnknown;
  11.     FThoriumReference: IThoriumPersistent;
  12.   protected
  13.     property Reference: IUnknown read FReference implements IUnknown;
  14. // ...
  15.     property ThoriumReference: IThoriumPersistent read FThoriumReference implements IThoriumPersistent;
  16. // ...
  17.   end;    
  18.  
  19. implementation
  20. // ...
  21. constructor TThoriumFileStream.Create(const AFileName: string; Mode: Word;
  22.   Rights: Cardinal);
  23. begin
  24.   inherited;
  25.   FReferenceImplementation := TThoriumReferenceImplementation.Create(Self);
  26.   FReference := FReferenceImplementation;
  27.   FThoriumReference := FReferenceImplementation;
  28.   // The two above references must not be counted. Otherwise the object will
  29.   // never get freed.
  30.   FThoriumReference.FreeReference;
  31.   FReference._Release;
  32. end;
  33.  
  34. destructor TThoriumFileStream.Destroy;
  35. begin
  36.   FReferenceImplementation.Free;
  37.   inherited Destroy;
  38. end;    
  39. // ...    
  40.  

Das hat außerdem den Vorteil, dass ich an der Implementation der Referenzzählung etwas ändern kann, ohne, dass sich alle Bibliotheken überarbeitet werden müssen.

Außerdem leitet TThoriumPersistent nun von TPersistent anstatt von TObject ab.

Im Zuge der Anpassung an FPC 2.4.0, welcher ein paar fiesigkeiten enthält, hat sich die Schnittstelle von TThoriumHostCallableBase geändert. Hinzu gekommen sind zwei Properties, mit denen man direkt auf die Felder von ReturnType zugreifen kann, da das sonst nicht mehr (so einfach) möglich ist.

Zu guter Letzt hat Wilson mal wieder etwas beigetragen, was noch zu verbessern war und was dementsprechend gefixt wurde. AbstractClass war zwar als Parameter für RegisterRTTIType vorhanden, wurde aber noch nicht vollständig ausgenutzt. Nun sollten abstrakte Basisklassen in Thorium besser funktionieren.

viel spaß damit. Ausnahmsweise werden im Headpost diesmal zwei Versionen verlinkt.

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Thorium Scripting Language
BeitragVerfasst: Do Feb 25, 2010 19:16 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Und ich muss mal kurz ein Bugfix Release einschieben. Thorium hat bisher nur aufgrund netter Entropie relativ gut funktioniert, da ich an einer Stelle doch glatt ein Result := vergessen hatte :D. Beide Versionen im Headpost verlinkt (1.0.4.2 für FPC <= 2.2.4 und 1.0.5.1 für FPC >= 2.4.0, 2.3.x darf ausprobieren und schauen, was geht ;) ).

Danke an Wilson für die Hilfe beim Suchen. Und auch für den Hinweis, dass da was nicht stimmt ;).

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Thorium Scripting Language
BeitragVerfasst: Mi Mär 10, 2010 19:35 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Dank Kyros Hinweis ist nun auch das customlib example auf das neue Interface für FPC 2.4.0 angepasst. Außerdem habe ich noch einen kleinen Bug im Compiler beseitigt, weshalb es auch für die 2.2.4er ein Update gibt … Das Letzte, denke ich, da zumindest die Lazarus Snapshots mittlerweile auf 2.4.0 umgestellt sind.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Thorium Scripting Language
BeitragVerfasst: Do Mär 11, 2010 18:04 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Einige kleine Fixes im Host-Library-Property Interface sind nun in Version 1.5.0.3 [link veraltet] erhältlich. Diesmal nur ein .tar.bz2 und auch nur für 2.4.0, da ich gerade nur am Notebook sitze und daher nicht alle Dateien zur Verfügung habe.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Thorium Scripting Language
BeitragVerfasst: Sa Mär 13, 2010 01:27 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
So … Nach einem kleinen Coding-Marathon heut abend bis Nacht kann Thorium 1.0.6.0 nun auch Records aus der Hostumgebung importieren und auch verwenden. Da Records keine RTTI-Informationen haben, ist das nicht ganz so komfortabel wie mit Klassen:
Code:
  1.  
  2. type
  3.   TSimpleRecord = record
  4.     A: Byte;
  5.     B: Word;
  6.     C: DWord;
  7.     D: QWord;
  8.   end;
  9.  
  10.   TSimpleRecordRegistration = specialize TThoriumHostRecordType<TSimpleRecord>;
  11.  
  12. []
  13.  
  14. procedure TThoriumLibExampleRecords.InitializeLibrary;
  15. var
  16.   SimpleRecordType: TThoriumHostObjectType;
  17.   TmpSimpleRecord: TSimpleRecord;
  18. begin
  19.   SimpleRecordType := RegisterFinishedObjectType(
  20.     'TSimpleRecord',
  21.     TSimpleRecordRegistration.Create(Self,
  22.       [
  23.         HostRecordField(HostVarType(htByte), 'a', Offset(TmpSimpleRecord, TmpSimpleRecord.A)),
  24.         HostRecordField(HostVarType(htWord), 'b', Offset(TmpSimpleRecord, TmpSimpleRecord.B)),
  25.         HostRecordField(HostVarType(htDWord), 'c', Offset(TmpSimpleRecord, TmpSimpleRecord.C)),
  26.         HostRecordField(HostVarType(htQWord), 'd', Offset(TmpSimpleRecord, TmpSimpleRecord.D))
  27.       ]),
  28.     TypeInfo(TSimpleRecord)
  29.   );
  30. end;

Dieses Feature benötigt Generics, da dies erlaubt, Instanzen der Records mit New zu erstellen, sodass Strings und ähnliches in diesen Records automatisch initialisiert werden. Genauso wie Records dann intern mit Dispose freigegeben werden können. Ein komplettes Beispiel für das Arbeiten mit Records bietet das „records“-Beispiel im examples Ordner.

Hinweis: Ich habe bei diesem Release einige kleinigkeiten am Compiler geändert und auch eine neue Instruktion eingeführt. Das bedeutet einerseits, dass bereits kompilierte Scripts neu kompiliert werden *müssen* und andererseits dass eventuell Regressionen auftreten können. Wenns also plötzlich irgendwo crasht wos vorher lief, könnte das an diesen Änderungen liegen und ich werd mich um schnelle Fehlerbehebung bemühen.

Dieses Release ist nicht mehr für FPC < 2.4.0 verfügbar. Link wie immer im Headpost.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Thorium Scripting Language
BeitragVerfasst: So Mär 14, 2010 21:16 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Thorium 1.0.6.1 released.
Dieses mal sind hauptsächlich Compileroptimierungen und -verbesserungen drin, die mit dem neuen Record-Support notwendig wurden. Dadurch kann ich gleichzeitig die Laufzeitperformance etwas verbessern.
Weiterhin sollte man jetzt davon ausgehen, dass Strings sowie Records und andere Hostobjekte Scriptintern "by-reference" übergeben werden.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Thorium Scripting Language
BeitragVerfasst: Fr Apr 23, 2010 22:05 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Thorium 1.0.6.2 released.

Diesmal viele Bugfixes im Hostinterface-Bereich, dazu viele kleinere Fixes in der Referenzzählung. Für die Menge an Arbeit, die da jetzt drinne steckte, eigentlich viel zu kurz, aber mehr fällt mir dazu auch gerade nicht ein ;D.

Link wie immer im Headpost.
Danke an Stoney für die vielen Tests, DebugToConsole-Ausgaben und Moduldumps ;)

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Thorium Scripting Language
BeitragVerfasst: Fr Jul 09, 2010 21:49 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Mal wieder was zu Thorium. Seit einigen Tagen konnte ich trotz der Hitze die notwendige Motivation finden, um das angekündigte Core-Rewrite voran zu treiben.
Im Zuge dessen gibt es ein viel flexibleres Typensystem. Der Compiler nutzt nun für das Typengehampel während dem Compilieren Interfaces anstatt normale Objektzeiger. Das hat den Vorteil, dass ich die fest eingebauten Typen nicht immer "nachschlagen" muss sondern einfach mal kurz eine Instanz erzeugen, die dann freigegeben wird, wenn keine Referenzen mehr existieren. Darum muss ich mich nicht kümmern, das erledigt FPC.

Nun ist es so, dass alle Typen in Objekte abgebildet werden, die einige Methoden haben. Operationen zwischen Typen sind nun ebenfalls nicht mehr im Compiler hardcoded sondern die "Beschreibung" dieser Operationen ((a) sind Casts der Operanden notwendig; (b) welche Instruktion wird gebraucht; (c) "wo" in dieser Instruktion liegen die Registerreferenzen) wird von den Typen auf Anfrage erzeugt. So könnte man mithilfe einer Ableitung der Virtuellen Maschine sogar eigene Instruktionen in Thorium einschleusen, um Thorium für spezielle Anwendungsfälle zu optimieren.
Vorher war es, so dass die erzeugung der Instruktionen für Operationen wie Addition, Multiplikation etc. aus riesigen Case-Konstrukten gebildet wurden. Praktisch ist das noch genauso, aber diese sind jetzt in die Typen ausgelagert und damit viel spezifischer.

Ein weiterer Vorteil ist nun, dass auch die "einfachen" Typen wie Integer, Float und String nun "komplexe" Operationen bekommen können, wie z.B. zugriff auf "Attribute" oder Indizies. Für Strings werde ich das nutzen, indem sie ein "length" Attribut bekommen, welches die Länge zurückliefert.

Der Compiler wird dadurch natürlich ein paar Performanceeinbußen erleiden, die VM sollte davon aber weitestgehend unbetroffen sein. Überhaupt ist der Compiler jetzt deutlicher auf Lesbarkeit ausgelegt. Aus der riesigen Methode ist nun eine Klasse geworden, die "Einzelteile" wie "Expression", "SolveIdentifier" oder "Statement" werden in separate Methoden ausgelagert. Wo ich gerade "SolveIdentifier" schreibe, die Grundlagen für das Überladen von Funktionen und Properties ist nun auch gegeben :).

Eventuell wird das Rewrite ein paar neue Optimierungsregeln für den Post-Compilation-Optimizer erforderlich machen, aber das werde ich dann sehen. Erstmal muss der Compiler entsprechend neu geschrieben werden. Im Moment beschränkt der sich nämlich auf das Parsen von Identifern und Ausdrücken. Statements und Deklarationen fehlen noch komplett.

Wer die Entwicklung mitverfolgen will, dem sei der th232-Branch auf GitHub ans Herz gelegt ;).

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Thorium Scripting Language
BeitragVerfasst: Mi Aug 11, 2010 21:21 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich konnte in den letzten Tagen wieder ein wenig an Thorium schrauben. Der neue Compiler ist nun schon recht weit, die Auswertung von Ausdrücken sowie sehr einfachen Statements (im Moment nur zuweisungen) und die Deklaration von Funktionen und globalen Variablen/Konstanten geht auch schon.

Der generierte Code ist, wie zu erwarten war, deutlich weniger optimal als beim vorherigen Compiler. Das wird aber dann vom passenden post-compilation-optimizer ausgemerzt. Der Grund dafür ist, dass ich nun einige Sonderfälle wegen des viel dynamischeren Systems nicht mehr behandeln kann. Der Optimizer wird ebenfalls neu geschrieben werden und wahrscheinlich um einiges mächtiger sein als der alte.

Es muss noch wirklich viel getestet und noch mehr implementiert werden. Zum Beispiel habe ich noch garkeine Syntax für die Deklaration von Arrays oder sowas. Solche und andere Dinge stehen noch aus. Aber zumindest geht es vorran und der Code ist, wie erwähnt, meiner meinung nach übersichtlicher ;)

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Thorium Scripting Language
BeitragVerfasst: Mo Sep 13, 2010 16:59 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
So … Der Compiler ist nun auf einem Stand, der fast dem gleicht, den der vorherige hatte. Die Sache mit den Interfaces für die Typen habe ich größtenteils wieder rausgehauen. Ich hatte die interfaces ja hauptsächlich für Referenzzählung. Die habe ich nun aber selber ausgehebelt, wegen diverser Probleme. Also hab ich die doppelte Arbeit mit den Interfaces einfach sein lassen und bin zurück zu den normalen Klassen gegangen. Wie gesagt, größtenteils, einige Dinge werden immernoch per Interface erledigt (Typen die Aufrufbar sind ("Callables") müssen z.B. IThoriumCallable implementieren, wo sie ihre Parameter- und Rückgabewertspezifikation preisgeben).

Die VM ist auf die neuen Konzepte eingeschworen worden und funktioniert nun auch wieder ziemlich gut. Das Library-Interface wurde überarbeitet und es wird noch etwas mehr mit RTTI gearbeitet. Mein Vorsatz, das Interface möglichst kompatibel zu halten konnte ich so halb-halb umsetzen.

Jetzt muss "nur noch" NativeCall umgebaut werden. Das wird ziemlich widerlich und ich muss schauen, wie ich das möglichst performant umgesetzt bekomme. Jetzt gibt es ja im prinzip keine "Eingebauten" und "Hosttypen" mehr sondern alles wird durch die gleiche struktur repräsentiert. Da muss ich sehen, wie ich das miniskript für den NativeCall-Aufruf mit den einzelnen Typen verbinde. Vermutlich werde ich da das ein oder andere abstrahieren müssen, was besser nicht abstrahiert wird… Mal schauen :)

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Thorium Scripting Language
BeitragVerfasst: So Feb 20, 2011 14:45 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Wilson hat mich auf eine fehlende Typenumwandlung beim Verarbeiten von Rückgabewerten aufmerksam gemacht, weshalb nun Version 1.0.6.3 zum Download bereit steht. Außerdem sind FindPublicFunction und IndexOfPublicFunction nun case insensitive.

Bei den Arbeiten ist mir aufgefallen, dass der master-Branch vom Thorium-Repo irgendwie eine Version zwischen 1.0.6.3 und th232 enthielt, weshalb ich den erstmal auf 1.0.6.2 reverten musste, bevor ich am Bugfix arbeiten konnte. Damit wird der Merge des th232 branches vermutlich noch sehr spaßig, da der zuvor von master abgezweigt wurde, aber ggf. werd ich da einfach mit einem theirs-merge drüber gehen.

Nebenbei arbeite ich wieder an th232 weiter, welches demnächst(tm) NativeCall Support haben wird. Bevor ich mich daran setzen konnte, musste noch einiges dazu- und umgebaut werden, um die Umwandlung in native Datentypen zu erlauben. So ganz zufrieden bin ich mit der Lösung noch nicht, aber ich habe Wochen gegrübelt und nichts besseres gefunden. Also hab ich das ganze halbwegs Modular gemacht und hoffe, dass ich, sobald mir was besseres einfällt, das einigermaßen flott einbauen kann.

Download wie immer im Headpost.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Thorium Scripting Language
BeitragVerfasst: Mo Jul 11, 2011 14:22 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Soo, und schon wieder profitiert Thorium von meiner Internetlosigkeit (und anderen Dingen… ;)).

Ich habe NativeCall für th232 implementiert, zumindest für 64bit und die Grunddatentypen. Der Rest wird Schritt für Schritt ergänzt. Dabei gabs nen haufen lustiger Bugs, die zu jagen ohne Valgrind nicht ganz so viel Spaß gemacht hat ;).
Gestorben ist der Support für Extended (10-Byte) Floats in NativeCall. Der wird später ggf. reimplementiert, aber irgendwie sorgt das für Probleme (Invalid Floating Point Operation). Steht aber eher weiter unten auf der Prioritätsliste (gibt auch eine saubere Fehlermeldung).
Ebenfalls rausgeflogen ist der Support für „SimpleMethod“ Hostfunktionen (das waren die, bei denen man ein Array of TThoriumValue als Parameter bekam). Die sind zwar schnell, aber hässlich zu benutzen, besonders mit dem neuen Typensystem.
Ebenfalls stirbt übrigens der Support für das Speichern kompilierter Module, da beispielsweise Typen on-the-fly während der Kompilierung erzeugt werden. Die Adressen dieser Typen werden noch in Instruktionen gebraucht. Typen sind aber leider überhaupt nicht brauchbar serialisierbar, weswegen der Support dafür wohl ausbleiben wird.

Neu hinzugekommen ist auch das neue Optimizer-Framework, was die schon existenten Optimierungen modularer gestaltet (die müssen aber noch portiert werden).

Ganz neu ist der Support für Arrays (sowohl dynamisch als auch statisch) nativ in Thorium. Das ist noch nicht komplett und sicher nicht bugfrei, aber schon ziemlich cool:
Code:
  1. loadlibrary thorium;
  2.  
  3. public void main() {
  4.   int[] test;
  5.   test = [30, 40];
  6.   test ~= 10;
  7.   test ~= 20;
  8. }
ergibt nen array [30, 40, 10, 20].

Überhaupt habe ich den Code auch etwas aufgeräumt und einige Teile in separate Units ausgelagert. Dies wurde durch das neue Typenframework möglich: Jeder Typ hat nun seine eigene Unit, was ein bisschen Übersichtlichkeit bringt.

Insgesamt kann man sagen, dass th232 immer näher an einen releasefertigen Zustand kommt. Freut euch auf ein schnelleres, robusteres und flexibleres Thorium :).

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 30 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Sonstiges » Projekte


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.043s | 15 Queries | GZIP : On ]