Migration von 2014.r2.4 zu 2015.r1
Die wichtigsten Änderungen und Hinweise auf einen Blick zur Migration von 2014.r2.4, zu 2015.r1.
Verarbeitung
- Casting: In der neuen Version bestimmt ein Cast über eine Operation nicht nur die Ergebnisgröße, sondern es kann auch die zu verwendende Operation definiert werden. Beispiel: word(word+integer): Weist z.B. eine explizite word-Addition an.
- Funktionen: Die ehemals intern eingebauten Dump- und Stringfunktionen wurden als externe Standard-Bibliothek ausgelagert (automatisch eingebunden). Bei Dump ändert sich daher die Syntax von z.B. „dump vars“ zu „dump.vars“. Die automatisch eingebundenen Standardbibliotheken befinden sich in dem nun neuen Ordner „LibraryStd“.
- Optimierung: Eingebundene Bibliotheks-Elemente sind nun von der Optimierung komplett ausgenommen, da dies zu Fehlern führen konnte.
Neu/Geändert
- Bits lesen/schreiben - Auch bei Strukturelementen möglich.
- Methoden-Zuweisung - Durch die Angabe des Schlüsselwortes assigns beim letzten Parameter kann einer Methode im Quelltext ein Wert zugewiesen werden. Beispiel: „mymethod(a as byte, assigns b as integer)“.
- Methoden-Überladen - es können nun mehrere Methoden mit gleichem Namen und unterschiedlichen Parametern/Rückgabewerten angelegt werden (auch in Bibliotheken!). Der Aufruf bestimmt dann welche der Methoden verwendet wird. Beispiel: Eine Methode „Value()“ einmal als Funktion und einmal als Methode mit Zuweisung.
- Inline-Methoden - Methoden können nun auch als Inline-Methode definiert werden (wie in C++). Der in der Methode enthaltene Code wird dann direkt an der aufrufenden Stelle platziert.
- Instanzierbare Objekt-Bibliotheken - Es gibt zwei neue Varianten einer Bibliothek namens „.type“ und „.object“. Mit diesen Bibliothekstypen lassen sich im Luna-Code direkt verwendbare eigene Datentypen und/oder instanzierbare Objekte erstellen. Siehe hierzu die Beispiele zu den Beispiel-Bibliotheken „xstring.object“ und „uint64.type“ in „/Library/Example/“.
- Strukturen: - Strukturdeklarationen sind nun auch über ihren Klassennamen verwendbar. Eine doppelte Deklaration einer Struktur z.B. innerhalb und außerhalb einer Klasse ist nun nicht mehr notwendig.
- Makros: - Es können nun auch Makros im Luna-Code erstellt und genutzt werden, vergleichbar zu den bereits enthaltenen Luna-Assembler-Makros.
- pragma: Es wurde ein Pragma (Compiler-Schalter im Code) hinzugefügt, um bestimmte Codebereiche von der Optimierung ausnehmen zu können.
- pragma: Es wurde ein Pragma (Compiler-Schalter im Code) hinzugefügt, um ein DebugBuild erstellen zu können.
- Bibliothek:
- Die Bibliothek „FastFourier.interface“ war fehlerhaft, Sie wurde durch die komplett neue Bibliothek „FFT.interface“ mit schnellerer, korrekter und besserer Verarbeitung ersetzt.
- Die Bibliotheks-Dokumentationen wurden nun direkt in der Bibliothek untergberacht und der Bibliotheks-Editor wurde um einen Doku-Editor ergänzt.
- Das ehemals intern eingebaute Graphics-Objekt wurde als externe Bibliothek ausgelagert.
- Controller: Es wurden neue Controller hinzugefügt: Attiny441/841, atmega165/325/645/a/pa/v
- IDE-Steuerung aus dem Quelltext: Mit der Anweisung #ide kann nun die IDE gesteuert werden.