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.
  • InitialValue - Bei dim und Methoden-Parametern kann nun ein Vorgabewert festgelegt werden, z.B. „dim a as byte = 123“ oder bei Methoden „mymethod(a as byte, b as integer = 1234)“.
  • 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.
  • 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.