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

Aktuelle Zeit: Mo Jul 15, 2019 19:42

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



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Apr 06, 2010 20:01 
Offline
DGL Member

Registriert: Di Aug 26, 2003 20:08
Beiträge: 81
Wohnort: Mönchengladbach
Programmiersprache: ObjPas ASM C C++ etc
Hiermit stelle ich hier nach einer langen Zeit wieder mal ein Projekt von mir vor. Diesmal ist es eine ECMAScript Engine. Für die, die es nicht wissen, ECMAScript ist die von der ECMA unter ECMA-262 standardisierte Form von JavaScript, jedoch ist ECMAScript nicht vollständig komplett zu JavaScript identisch (mehr dazu zum Thema siehe Wikipedia zum Suchbegriff JavaScript oder ECMAScript). Meine ECMAScript Engine trägt den Namen BESEN, was wiederum für "Bero EcmaScript ENgine" steht, und besitzt zudem Just-In-Compilation (zurzeit nur für 32-bit x86), Property Inline Caching, Codeoptimization, und viele weitere Dinge.

Es steht zudem unter einer RubyLike+AGPLv3 Duallizenz.

Hier eine englische Liste der Features von BESEN für den groben Überblick:

  • Complete implementation of the ECMAScript Fifth Edition standard
  • Own bytecode-based ECMA262-complaint Regular Expression Engine
  • Incremental praise/exact mark-and-sweep garbage collector
  • Unicode UTF8/UCS2/UTF16/UCS4/UTF32 support (on ECMAScript level, UCS2/UTF16)
  • Compatibility modes, for example also a facile JavaScript compatibility mode
  • Bytecode compiler
  • Call-Subroutine-Threaded Register-based virtual machine
  • Context-Threaded 32-bit x86 Just-in-Time Compiler (x64/AMD64 JIT is in the work and a ARMv7 EABI JIT for ARM CPUs with VFPUv1 instruction set is planed)
  • Constant folding
  • Dead code elimination
  • Abstract-Syntax-Tree based optimizations
  • Type inference (both exact and speculative)
  • Property Inline Cache
  • Perfomance optimized hash maps
  • Self balanced trees (for example to sort on-the-fly linked list items of hash maps for very fast enumeration of array objects)
  • Easy native ObjectPascal class integration (properties per RTTI and published methods per by-hand-parsing of the native virtual method table)

Und hier gibt es endlich auch den Link zu BESEN: http://besen.sourceforge.net/ :D

Ich würde mich auf Feedback freuen.

EDIT: Zu Sourceforge umgezogen.

_________________
Behindert ist man nicht, behindert wird man.


Zuletzt geändert von bero am Do Apr 08, 2010 07:00, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Apr 07, 2010 14:04 
Offline
DGL Member

Registriert: Di Aug 26, 2003 20:08
Beiträge: 81
Wohnort: Mönchengladbach
Programmiersprache: ObjPas ASM C C++ etc
Es ist eine neue Version online, die zwei wichtige Bugfixes enthält.

Der erste Bug war, dass der Parser bei >>= den Right Node mit dem Left Node überschrieben hat, und nachher dann versucht hat, den Left Node 2x freizugeben, was dann zu einer Exception führte.

Der zweite Bug war, dass der CodeGenerator bei <<= >>= und >>>= vergaß, für die Shifting Operation temporäre Register zu allokatieren, und dadurch der generierte ByteCode sowie native geJITte Code aufgrund Out-Of-RegisterIndex crashte.

_________________
Behindert ist man nicht, behindert wird man.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Apr 07, 2010 19:27 
Offline
DGL Member

Registriert: Di Aug 26, 2003 20:08
Beiträge: 81
Wohnort: Mönchengladbach
Programmiersprache: ObjPas ASM C C++ etc
Ich habe den Code nun FPC 2.4.0 (inoffziell) kompatibel gemacht, bzw. FormatDateTime als BESENFormatDateTime reimplementiert, was ja bei 2.4.0 fehlerhaft war bzw. ist. Also viel Spass damit :D

_________________
Behindert ist man nicht, behindert wird man.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Apr 08, 2010 04:27 
Offline
DGL Member

Registriert: Di Aug 26, 2003 20:08
Beiträge: 81
Wohnort: Mönchengladbach
Programmiersprache: ObjPas ASM C C++ etc
Nun ist schon wieder eine neue Version online und somit hab ich auch wieder eine ganze Reihe an Bugs gefixt. Und zwar diesmal habe ich einges an den ECMAScript-eigenen Objekten selbst gefixt, und sowie einen sehr fiesen Bug im Garbage Collector gefixt, wo bei sehr seltenen Fällen Rootwurzelobjekte fälscherweise als nicht mehr gebraucht angesehen und somit freigegeben wurden, wodurch dann ungültige Zeigerreferenzen entstanden, und dadurch dann auch hübische Invalid Pointer Exceptions. Jetzt werden Rootwurzelobjekte aber immer direkt eingeschwärzt (nach dem Tricolor-MarkAndSweep-Verhalten, also direkt als "In-Gebraucht" markiert", mehr dazu siehe englische Wikipedia zum Thema Garbage Collector).

_________________
Behindert ist man nicht, behindert wird man.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Jul 06, 2010 06:45 
Offline
DGL Member

Registriert: Di Aug 26, 2003 20:08
Beiträge: 81
Wohnort: Mönchengladbach
Programmiersprache: ObjPas ASM C C++ etc
Im letztem Monat habe ich einiges an BESEN gemacht, so dass es nun die ES5conform Tests komplett alle besteht. Ergebnis: http://vserver.rosseaux.net/projects/BESEN/ES5conform/

Zudem hat es auch nun endlich eine Konsolenshell für Anbindung in vorhandene Entwickklungsumgebungen.

_________________
Behindert ist man nicht, behindert wird man.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Aug 17, 2010 17:39 
Offline
DGL Member

Registriert: Di Aug 26, 2003 20:08
Beiträge: 81
Wohnort: Mönchengladbach
Programmiersprache: ObjPas ASM C C++ etc
Im letztem Monat habe ich wieder einiges an BESEN gemacht, so dass BESEN mit aktiviertem Native-Code-Just-In-Time-Compiler nun in vielen Fällen um einiges schneller als die JavaScript Engine SquirrelFish Extreme auch mit aktiviertem Native-Code-Just-In-Time-Compiler aus Safari 5 bzw. aus WebKit ist. Also BESEN wird nun so langsam richtig performancetechnisch-gefährlich für die ECMAScript/JavaScript-Engine-Quasi-Konkurrenz :D

_________________
Behindert ist man nicht, behindert wird man.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Okt 30, 2012 07:59 
Offline
DGL Member

Registriert: Di Aug 26, 2003 20:08
Beiträge: 81
Wohnort: Mönchengladbach
Programmiersprache: ObjPas ASM C C++ etc
Ich habe das BESEN Projekt jetzt auch nun kompatibel für Delphi 2009-XE3 gemacht (wegen der ganzen Unicodestring Geschichte ab Delphi 2009), als LGPL (mit Static-Link-Exception) umlizenziert und von SourceForge nach Google Code http://code.google.com/p/besen/ verschoben, aufgrund paar Sachen, die ich bei SourceForge seit kurzem bemängle, die erst im Laufe der Zeit aufkamen bzw. besser gesagt, in den Fokus meiner Aufmerksamkeit gelangten.

_________________
Behindert ist man nicht, behindert wird man.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Sonstiges » Projekte


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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.058s | 18 Queries | GZIP : On ]