Releases: DDP-Projekt/Kompilierer
v0.5.0-alpha
DDP v0.5.0-alpha: Typ-Aliase/Definitionen, Operatoren Überladung, "Variablen"-Typ und Vorwärts Deklarationen
In diesem DDP Release ist eine ganze Menge neuer Features enthalten:
Typ-Aliase und Definitionen erlabuen es nun, schnell und einfach neue Typen zu erstellen um die Lesbarkeit zu verbessern:
[ Hausnummer ist nun ein anderer Name für Zahl ]
Wir nennen eine Zahl öffentlich auch eine Hausnummer.
Die Hausnummer h ist 22.
[ Ein Zeiger ist nun nicht bloß ein neuer Name sondern ein ganz neuer Typ ]
Wir definieren einen Zeiger als eine Zahl.
Der Zeiger z ist 0 als Zeiger.
Mit Operatoren Überladung kann man existierenden Operatoren beliebiges Verhalten zuweisen oder eigene Typen benutzbar machen:
[ Überlädt den "Länge" Operator für den Typ Zahl ]
Die Funktion zahl_länge mit dem Parameter z vom Typ Zahl, gibt eine Zahl zurück, macht:
Gib z zurück.
Und überlädt den "Länge" Operator.
[ "die Länge von 2" ruft nun die zahl_länge Funktion mit dem Argument 2 auf ]
Die Zahl z ist die Länge von 2.
Schreibe z. [Gibt 2 aus]
Wir definieren einen Zeiger als eine Zahl.
Die Funktion meine_Umwandlung mit dem Parameter z vom Typ Zeiger gibt einen Text zurück, macht:
Wenn z als Zahl gleich 0 ist, gib "null" zurück.
Gib z als Zahl als Text zurück.
Und überlädt den "als" Operator.
Der Zeiger null ist 0 als Zeiger.
Schreibe (null als Text). [Gibt "null" aus]
Der neue Typ "Variable" macht es möglich Werte von beliebigem Typ zu behandeln:
Die Variable v ist 2.
Schreibe (v als Zahl). [Gibt 2 aus]
Speichere "Hallo" in v.
Schreibe (v als Text). [Gibt "Hallo" aus]
Speichere wer weiß welchen Typ in v.
Wenn v ein Text ist, dann Schreibe "v ist ein Text!".
Sonst Schreibe "Keine Ahnung was v sein könnte".
Und zu guter Letzt gibt es nun auch Forwärts-Deklarationen, damit zwei Funktionen sich gegenseitig aufrufen können:
Die Funktion foo mit dem Parameter a vom Typ Zahl, gibt eine Zahl zurück,
wird später definiert
und kann so benutzt werden:
"foo <a>"
Die Funktion baz mit dem Parameter a vom Typ Zahl, gibt eine Zahl zurück, macht:
Wenn a gleich 0 ist, dann:
Schreibe "baz fertig" auf eine Zeile.
Gib 0 zurück.
Gib foo (a minus 1) zurück.
Und kann so benutzt werden:
"baz <a>"
foo 3.
baz 3.
Die Funktion foo macht:
Wenn a gleich 0 ist, dann:
Schreibe "foo fertig" auf eine Zeile.
Gib 0 zurück.
Gib baz (a minus 1) zurück.
Changelog
- [Added] Vorwärts Deklarationen
- [Added] _Ref Versionen für einige Duden/Listen und Duden/Texte Funktionen
- [Changed] Iterierenden Schleifen über Texte haben nun eine Zeitkomplexität von O(n) (anstatt O(n^2))
- [Fix] utf8 Texte
- [Fix] Aliase mit Referenz Parametern werden nun in mehr Fällen bevorzugt
- [Fix] Der Kompilierer crashet nicht mehr wenn indirekt importierte Symbole in eingebundenen Kombinations Aliasen verwendet werden
- [Changed] Duden/Zeichen und Duden/Texte um Konflikte mit dem neuen Variablen Typ zu vermeiden:
- Buchstabe_Ist_Zahl -> Buchstabe_Ist_Ziffer (Alias ebenfalls angepasst)
- Text_Ist_Zahl: Alias angepasst
- [Added] Duden/Dateisystem Datei_Lies_Alles
- [Added] "Variable" als Typ, der zur Laufzeit jeder beliebige andere Typ sein kann
- [Added] ... als Platzhalter
- [Fix] Bug im Parser, der rekursiv allen Arbeitsspeicher verbraucht
- [Added] Operatoren-Überladung
- [Changed] Die Typen, die von Funktionen, Variablen und anderen Typen benutzt werden müssen jetzt nicht mehr extra eingebunden werden
- [Added] Typ-Aliase und Typ-Definitionen
Update
Wenn du kddp schon installiert hast kannst du ganz einfach mit dem Befehl kddp update
auf diese Version updaten.
Mehr dazu hier.
Installation
- Das entsprechende Archiv herunterladen und entpacken (wenn auf Windows Mingw64 bereits installiert ist, die -no-mingw Version nehmen)
- Den entstandenen Ordner dorthin verschieben wo er final bleiben soll und eventuell umbenennen (DDP-v0.5.0... -> DDP)
- Das Programm
ddp-setup
im entstandenen Ordner ausführen (auf Windowsddp-setup.exe
) ddp-setup
wird dich durch die Installation führen (wenn du nicht immer 'ja' antworten willst, führe stattdessenddp-setup --force
aus)
Eine ausführlicherere Installations Anleitung gibt es hier.
Beispiel Linux:
wget https://github.com/DDP-Projekt/Kompilierer/releases/latest/download/DDP-v0.5.0-alpha-linux-amd64.tar.gz
tar -xzf ./DDP-v0.5.0-alpha-linux-amd64.tar.gz
mv ./DDP-v0.5.0-alpha-linux-amd64 ~/DDP
cd ~/DDP
./ddp-setup
Nützliche Links
DDP v0.4.0-alpha: Alias Negationen
DDP v0.4.0-alpha: Alias Negationen
Dieser DDP Release bringt einige Features, die das DDP Programmieren angenehmer machen und Boilerplate Code entfernen. Namentlich den Falls ... ansonsten
Operator (ternary Operator oder ? :
in anderen Sprachen), einen entweder ... oder
Operator um boolesches XOR umzusetzen, und am nützlichsten: Aliasnegationen.
Mit Aliasnegationen wird aus diesem Code:
Die öffentliche Funktion Ist_Text_Leer mit dem Parameter text vom Typ Text, gibt einen Wahrheitswert zurück, macht:
Gib wahr, wenn die Länge von text gleich 0 ist zurück.
Und kann so benutzt werden:
"<text> leer ist"
Die öffentliche Funktion Ist_Text_Nicht_Leer mit dem Parameter text vom Typ Text, gibt einen Wahrheitswert zurück, macht:
Gib nicht text leer ist zurück.
Und kann so benutzt werden:
"<text> nicht leer ist"
dieser:
Die öffentliche Funktion Ist_Text_Leer mit dem Parameter text vom Typ Text, gibt einen Wahrheitswert zurück, macht:
Gib wahr, wenn die Länge von text gleich 0 ist zurück.
Und kann so benutzt werden:
"<text> <!nicht> leer ist"
Changelog
-
[Added] Aliasnegationen
-
[Added]
entweder ..., oder
Operator -
[Changed] "ist" nach Vergleichen ist jetzt Optional, falls davor bereits ein "ist" steht
-
[Added] Syntax um Variablen und Funktionen als "extern sichtbar" zu markieren, und somit name-mangling für diese auszuschalten
-
[Fix] Linker Fehler bei mehreren öffentlichen Symbolen mit demselben Namen
-
[Added] Falls Operator. Funktioniert so wie der Ternary Conditional Operator (?:) in anderen Sprachen.
-
[Added] in Duden/Dateisystem:
- Datei Kombination
- Datei_Oeffnen
- Datei_Oeffnen_Lesen
- Datei_Oeffnen_Schreiben
- Datei_Oeffnen_Lesen_Schreiben
- Datei_Oeffnen_Rückgabe
- Datei_Oeffnen_Lesen_Rückgabe
- Datei_Oeffnen_Schreiben_Rückgabe
- Datei_Oeffnen_Lesen_Schreiben_Rückgabe
- Datei_Schliessen
- Datei_Zuende
- Datei_Nicht_Zuende
- Datei_Lies_N_Zeichen
- Datei_Lies_Zeile
- Datei_Lies_N_Zeilen
- Datei_Lies_Wort
- Datei_Lies_N_Worte
- Datei_Lies_Zahl
- Datei_Lies_N_Zahlen
- Datei_Lies_Kommazahl
- Datei_Lies_N_Kommazahlen
- Datei_Schreibe_Zahl
- Datei_Schreibe_Text
- Datei_Schreibe_Kommazahl
- Datei_Schreibe_Buchstabe
- Datei_Schreibe_Wahrheitswert
- Datei_Schreibe_Zeile_Zahl
- Datei_Schreibe_Zeile_Text
- Datei_Schreibe_Zeile_Kommazahl
- Datei_Schreibe_Zeile_Buchstabe
- Datei_Schreibe_Zeile_Wahrheitswert
-
[Added] Runden in Mathe/Duden hinzugefügt
-
[Fix] Funktionsparameter können nun nicht mehr Funktions- oder Kombinationsdeklarationen überschreiben
v0.3.0-alpha
DDP v0.3.0-alpha: Standardbibliothek
In diesem Release sind hauptsächlich einige Bug-fixes und einige neue Duden Funktionen, unter anderem in:
- Duden/Pfade
- Duden/Texte
- Duden/Listen
- Duden/Kryptographie
- Duden/Regex
Changelog
- [Breaking] Folgende Duden Funktionen wurden umbennant:
- Pfade:
- Ist_Absolut -> UNIX_Ist_Absolut
- Säubern -> UNIX_Säubern
- Verbinden -> UNIX_Verbinden
- Ordner_Pfad -> UNIX_Ordnerpfad
- Basis_Pfad -> UNIX_Basisname
- Erweiterung -> UNIX_Erweiterung
- Datei_Name -> UNIX_Dateiname
- Mathe:
- sin -> Sinus
- cos -> Kosinus
- tan -> tangens
- asin -> Arkussinus
- acos -> Arkuskosinus
- atan -> Arkustangens
- sinh -> Hyperbelsinus
- cosh -> Hyperbelkosinus
- tanh -> Hyperbeltangens
- Pfade:
- [Added] Folgende Duden Funktionen wurden hinzugefügt (siehe die Bedienungsanleitung für eine Beschreibung):
- Pfade:
- UNIX_Vollständiger_Pfad
- Windows_Ist_Absolut
- Windows_Saeubern
- Windows_Pfad_Verbinden
- Windows_Laufwerkbuchstabe
- Windows_Vollständiger_Pfad
- Windows_Ordnerpfad
- Windows_Basisname
- Windows_Dateiname
- Windows_Erweiterung
- Wrapper Funktionen für Windows/Linux Funktionen
- Laufzeit:
- Arbeitsverzeichnis
- Zeichen:
- Leerzeichen
- Neue_Zeile
- Wagenrücklauf
- Tabulator
- Rückstrich
- Anführungszeichen
- Apostroph
- ASCII_Größer
- ASCII_Kleiner,
- Ist_Lateinischer_Buchstabe
- Ist_Lateinischer_Buchstabe_Oder_Zahl
- Regex:
- Ist_Regex
- Regex_Erster_Treffer
- Regex_N_Treffer
- Regex_Alle_Treffer
- Regex_Erster_Treffer_Ersetzen
- Regex_Alle_Treffer_Ersetzen
- Regex_Spalten
- Kryptographie:
- SHA_256
- SHA_512
- Listen:
- Aufsteigende_Zahlen
- Absteigende_Zahlen, Linspace
- Logspace, Erste_N_Elemente_X
- Letzten_N_Elemente_X
- Spiegeln_X
- Summe_Zahlen_Liste
- Produkt_Zahlen_Liste
- Summe_Kommazahlen_Liste
- Produkt_Kommazahlen_Liste
- Verketten_Text_Liste
- Elementweise_Summe_Zahl/Kommazahl
- Elementweise_Differenz_Zahl/Kommazahl
- Elementweise_Produkt_Zahl/Kommazahl
- Elementweise_Quotient_Zahl/Kommazahl
- Elementweise_Verketten_Text
- Mathe:
- Min3
- Min3_Kommazahl
- Max3
- Max3_Kommazahl
- Bogenmaß_Zu_Grad
- Winkel, Kehrwert_Zahl
- Kehrwert_Kommazahl
- Natürlicher_Logarithmus
- Gaußsche_Fehlerfunktion
- Fakultät (Danke Franz Müller!)
- Texte:
- Hamming_Distanz
- Levenshtein_Distanz
- Vergleiche_Text
- Text_Anzahl_Buchstabe
- Text_Anzahl_Text
- Text_Anzahl_Text_Nicht_Überlappend
- Buchstaben_Text_BuchstabenListe
- Buchstaben_Text_TextListe
- Text_Index_Von_Text
- Spalte_Text
- Erster_Buchstabe
- Nter_Buchstabe
- Letzter_Buchstabe
- Finde_Subtext
- Pfade:
- [Fix] Der zwischen Operator crasht nun nicht mehr bei Kommazahl/Zahl kombinationen
- [Fix] Die Reihenfolge der 2 letzten Argumente beim zwischen Operator ist jetzt egal
- [Added] Optionale Optimierungsstufe 2 optimiert das Kopieren von komplexeren Datentypen
- [Added] Befehlszeilenargument "-O/--optimierungs-stufe" um die Optimierungsstufe zu setzen
- [Changed] Befehlszeilenargumente benutzen nun "-" anstatt "" (z.B.
--nichts-loeschen
anstatt--nichts_loeschen
). "" kann allerdings immernoch benutzt werden - [Added] der Standardwert Operator gibt den Standardwert eines Typen zurück
- [Breaking] Der Größe Operator nimmt nun einen Typ als Operanden
- [Fix] Bug beim Vergleichen von Kombinationen
- [Fix] Externe Funktionsnamen in random.c
- [Fix] Bei allen geklammerten Argumenten werden Fehler jetzt korrekt gemeldet
Update
Wenn du kddp schon installiert hast kannst du ganz einfach mit dem Befehl kddp update
auf diese Version updaten.
Mehr dazu hier.
Installation
- Das entsprechende Archiv herunterladen und entpacken (wenn auf Windows Mingw64 bereits installiert ist, die -no-mingw Version nehmen)
- Den entstandenen Ordner dorthin verschieben wo er final bleiben soll und eventuell umbenennen (DDP-v0.3.0... -> DDP)
- Das Programm
ddp-setup
im entstandenen Ordner ausführen (auf Windowsddp-setup.exe
) ddp-setup
wird dich durch die Installation führen (wenn du nicht immer 'ja' antworten willst, führe stattdessenddp-setup --force
aus)
Eine ausführlicherere Installations Anleitung gibt es hier.
Beispiel Linux:
wget https://github.com/DDP-Projekt/Kompilierer/releases/latest/download/DDP-v0.3.0-alpha-linux-amd64.tar.gz
tar -xzf ./DDP-v0.3.0-alpha-linux-amd64.tar.gz
mv ./DDP-v0.3.0-alpha-linux-amd64 ~/DDP
cd ~/DDP
./ddp-setup
Nützliche Links
LLVM Binaries
pre-compiled LLVM Binaries
Die UCRT Versionen sind kompatibel mit dem mingw Chocolatey package (choco install mingw --version 12.2.0
) und der MinGW Version die auf dem windows-2022
github actions runner vorinstalliert ist.
Die MSVCRT Versionen wurden für alle Releases <= v0.3.0-alpha verwendet.
- llvm_build-mingw-12.2.0-x86_64-msvcrt-posix-seh.tar.gz: gebaut mit GCC 12.2.0 - MinGW-w64 10.0.0 MSVCRT
- llvm_build-mingw-12.2.0-x86_64-ucrt-posix-seh.tar.gz: gebaut mit GCC 12.2.0 - MinGW-w64 10.0.0 UCRT
- llvm_build-mingw-12.2.0-x86_64-ucrt-posix-seh.tar.gz: gebaut unter Linux Mint mit GCC 11.4.0
v0.2.0-alpha
DDP v0.2.0-alpha: Fehlerbehandlung
In diesem Release sind hauptsächlich einige Bug-fixes und das neue Modul Duden/Fehlerbehandlung enthalten, zu welchem es noch einen eigenen Artikel in der Bedienungsanleitung geben wird.
Changelog
- [Fix] Bei geklammerten Referenz Argumenten werden Fehler jetzt korrekt gemeldet
- [Breaking] Duden/Fehlerbehandlung wird nun überall im Duden benutzt
- [Fix] Erstelle_Ordner gibt keinen Fehler mehr zurück, wenn einer der Ordner bereits existiert
- [Added] Duden/Fehlerbehandlung
- [Fix] crash bei Einbindungen von öffentlichen Kombinationen
- [Added]: zwischen operator hinzugefügt
- [Fix] typecheck crash bei Typumwandlungen zu invaliden Typen
Update
Wenn du kddp schon installiert hast kannst du ganz einfach mit dem Befehl kddp update
auf diese Version updaten.
Mehr dazu hier.
Installation
- Das entsprechende Archiv herunterladen und entpacken (wenn auf Windows Mingw64 bereits installiert ist, die -no-mingw Version nehmen)
- Den entstandenen Ordner dorthin verschieben wo er final bleiben soll und eventuell umbenennen (DDP-v0.2.0... -> DDP)
- Das Programm
ddp-setup
im entstandenen Ordner ausführen (auf Windowsddp-setup.exe
) ddp-setup
wird dich durch die Installation führen (wenn du nicht immer 'ja' antworten willst, führe stattdessenddp-setup --force
aus)
Eine ausführlicherere Installations Anleitung gibt es hier.
Beispiel Linux:
wget https://github.com/DDP-Projekt/Kompilierer/releases/latest/download/DDP-v0.2.0-alpha-linux-amd64.tar.gz
tar -xzf ./DDP-v0.2.0-alpha-linux-amd64.tar.gz
mv ./DDP-v0.2.0-alpha-linux-amd64 ~/DDP
cd ~/DDP
./ddp-setup
Nützliche Links
v0.1.0-alpha
DDP v0.1.0-alpha: Strukturen
Dies ist der zweite Release von DDP, mit vielen Bug-Fixes, kleineren Änderungen und dem großen Feature Strukturen.
Momentan ist kddp noch in der Alpha Version, es gibt also keinerlei Garantien für Funktionalität. Features sind recht minimal und Bugs in der Sprache so wie im Compiler sind zu erwarten.
Changelog
- [Added]: Beliebige utf-8 Symbole sind jetzt in Aliasen erlaubt
- [Breaking]
Boolean
zuWahrheitswert
umbennant - [Fix]
kddp update
ignoriert die -jetzt flag nicht mehr - [Fix]
kddp update
updated jetzt auch den Duden - [Added] Datei_Kopieren Funktion zu Duden/Dateisystem
- [Fix] Bessere Fehlermeldungen #28
- [Added] Datei-info Funktionen zu Duden/Dateisystem
- [Fix] Double-Free Fehler in externen Funktionen
- [Breaking]
von...bis
wurde zuim Bereich von...bis
umbenannt - [Added] Syntax wie in Deklarationen für boolesche Rückgabewerte
- [Added]
bis...zum
undab...dem
- [Fix] Alias Deklarationen
- [Breaking] Namenskonvention im Duden
- [Changed] Verbesserungen am Visitor interface (für den LS)
- [Fix] Typos
- [Breaking] Duden/Extremwerte nach Duden/Zahlen verschoben
- [Added] Duden/Zahlen
- [Added] Mehr Duden/Texte und Duden/Zeichen tests
- [Fix] Duden/Texte edge-cases
- [Fix] Verschiedene Crashes
- [Added] Strukturen #5
Update
Wenn du kddp schon installiert hast kannst du ganz einfach mit dem Befehl kddp update
auf diese Version updaten.
Mehr dazu hier.
Installation
- Das entsprechende Archiv herunterladen und entpacken (wenn auf Windows Mingw64 bereits installiert ist, die -no-mingw Version nehmen)
- Den entstandenen Ordner dorthin verschieben wo er final bleiben soll und eventuell umbenennen (DDP-v0.1.0... -> DDP)
- Das Programm
ddp-setup
im entstandenen Ordner ausführen (auf Windowsddp-setup.exe
) ddp-setup
wird dich durch die Installation führen (wenn du nicht immer 'ja' antworten willst, führe stattdessenddp-setup --force
aus)
Eine ausführlicherere Installations Anleitung gibt es hier.
Beispiel Linux:
wget https://github.com/DDP-Projekt/Kompilierer/releases/latest/download/DDP-v0.1.0-alpha-linux-amd64.tar.gz
tar -xzf ./DDP-v0.1.0-alpha-linux-amd64.tar.gz
mv ./DDP-v0.1.0-alpha-linux-amd64 ~/DDP
cd ~/DDP
./ddp-setup
Nützliche Links
v0.0.1-alpha
DDP v0.0.1-alpha
Dies ist der erste Release von DDP.
Momentan ist kddp noch in der Alpha Version, es gibt also keinerlei Garantien für Funktionalität. Features sind recht minimal und Bugs in der Sprache so wie im Compiler sind zu erwarten.
Installation
- Das entsprechende Archiv herunterladen und entpacken (wenn auf Windows Mingw64 bereits installiert ist, die -no-mingw Version nehmen)
- Den entstandenen Ordner dorthin verschieben wo er final bleiben soll und eventuell umbenennen (DDP-v0.0.1... -> DDP)
- Das Programm
ddp-setup
im entstandenen Ordner ausführen (auf Windowsddp-setup.exe
) ddp-setup
wird dich durch die Installation führen (wenn du nicht immer 'ja' antworten willst, führe stattdessenddp-setup --force
aus)
Eine ausführlicherere Installations Anleitung gibt es hier.
Beispiel Linux:
wget https://github.com/DDP-Projekt/Kompilierer/releases/latest/download/DDP-v0.0.1-alpha-linux-amd64.tar.gz
tar -xzf ./DDP-v0.0.1-alpha-linux-amd64.tar.gz
mv ./DDP-v0.0.1-alpha-linux-amd64 ~/DDP
cd ~/DDP
./ddp-setup