[Projekt] C-P Compiler
Verfasst: 08.04.2018, 20:47
Wie abgesprochen, stelle ich das C-P Compiler-Projekt jetzt hier auf ZFX offiziell vor. Auch alle deutschen News und Quasi-Blog werde ich auf ZFX veröffentlichen.
Die Idee hinterm C-P Compiler ist, ein neues Kapitel der Compiler-Optimierungen zu öffnen. Moderne Software wie Eclipse, Wordpress, Visual Studio&co sind quasi gar keine Sammlung von Klassen mit Methoden und Attributen mehr, sondern eine Sammlung von Hooks, Filter, Plugins und Konfigurationen. Je dynamischer Software wird, desto weniger können statische Compiler optimieren.
Zum Github-Repository: https://github.com/carli2/cpcompiler
Im Zentrum des C-P Compilers steht der sog. CodeTree, ein binärer Baum, der sowohl Daten als auch Code darstellen kann. Beispiel: object(property("x", 100), property("y", 50)) kann sowohl als Objekt-Literal im Code vorkommen, als auch im Objektspeicher z.B. einer Spielfigur. Des weiteren sind alle Datenstrukturen immutabel, wodurch Optimierung und Parallelisierung sehr leicht möglich werden. Ausnahmen von der Immutabilität sind "var"-Knoten. Sie sind bewusste Unterbrechungen der Immutabilität. Ein JavaScript-Objekt besteht z.B. aus einem var(content...), sprich: es ist veränderbar. Der Optimierer wird nun prüfen, ob das Objekt tatsächlich geändert wird und kann somit den Var-Zwischenknoten entfernen.
Ansonsten sollen jede Menge neue Optimierungen gefunden werden:
- Automatisches Einfügen von Result-Caches in Funktionen
- massives Constant Folding (z.B. Verheiraten der IDE mit ihrer Konfigurationsdatei; oder Compiler und std-Lib)
- Optimierung von Marshalling/Unmarshalling-Orgien (net.send(socket, JSON.stringify({x: getX(), y: getY()}) wird zu: net.send('{"x":' + getX() + ',"y":' + getY() + "}")
[Edit:]Yay! Beitrag nø 777
Die Idee hinterm C-P Compiler ist, ein neues Kapitel der Compiler-Optimierungen zu öffnen. Moderne Software wie Eclipse, Wordpress, Visual Studio&co sind quasi gar keine Sammlung von Klassen mit Methoden und Attributen mehr, sondern eine Sammlung von Hooks, Filter, Plugins und Konfigurationen. Je dynamischer Software wird, desto weniger können statische Compiler optimieren.
Zum Github-Repository: https://github.com/carli2/cpcompiler
Im Zentrum des C-P Compilers steht der sog. CodeTree, ein binärer Baum, der sowohl Daten als auch Code darstellen kann. Beispiel: object(property("x", 100), property("y", 50)) kann sowohl als Objekt-Literal im Code vorkommen, als auch im Objektspeicher z.B. einer Spielfigur. Des weiteren sind alle Datenstrukturen immutabel, wodurch Optimierung und Parallelisierung sehr leicht möglich werden. Ausnahmen von der Immutabilität sind "var"-Knoten. Sie sind bewusste Unterbrechungen der Immutabilität. Ein JavaScript-Objekt besteht z.B. aus einem var(content...), sprich: es ist veränderbar. Der Optimierer wird nun prüfen, ob das Objekt tatsächlich geändert wird und kann somit den Var-Zwischenknoten entfernen.
Ansonsten sollen jede Menge neue Optimierungen gefunden werden:
- Automatisches Einfügen von Result-Caches in Funktionen
- massives Constant Folding (z.B. Verheiraten der IDE mit ihrer Konfigurationsdatei; oder Compiler und std-Lib)
- Optimierung von Marshalling/Unmarshalling-Orgien (net.send(socket, JSON.stringify({x: getX(), y: getY()}) wird zu: net.send('{"x":' + getX() + ',"y":' + getY() + "}")
[Edit:]Yay! Beitrag nø 777