C++ Erweiterungen funktionieren nicht mehr

MakeCode erlaubt es neue Blöcke zu erstellen, die in C++ implementiert sind.
Aktuell habe ich den Eindruck, dass es aber gar nicht mehr geht.
So ziemlich alle Erweiterungen führen zu einem Fehler in „core/math.ts“.

Ich habe eine minimale Erweiterung erstellt:

Es erstellt einen Block „MyBlock“ mit der funktion „get()“
Im Simulator gibt die Funktion „get“ die Zahl 123 zurück (extension.ts):

export function getn(): number {
    return 123
}

Auf dem Calliope den Wert 432 (extension.cpp):

int getn() {
    return 432;
}

Auf dem Makecode Microbit https://makecode.microbit.org/ funktioniert das auch.

Auf https://makecode.calliope.cc/ erscheint die Erweiterung nach dem Laden nicht

Auf der Beta https://makecode.calliope.cc/beta sieht erst mal alles gut aus, aber sobald man das Projekt speichern möchte kommt es zu einer Fehlermeldung. Wenn man auf JavaScript schaltet ist im Explorer ein Fehler im Package „core“ in der Datei „math.ts“ zu sehen. Ich denke aber nicht, dass das der tatsächliche Fehler ist.

Ja, der Fehler war schonmal da

und jetzt ist er wieder da. Erkennbar auch daran, dass der Simulator nicht lädt.
Ich melde es mal Amerlander.
Hoffe es tut sich dann bald was.

Viele Grüße

Michael

Witzig, im Fehler ging es auch um eine Erweiterung von mir :wink:
Danke für´s weiterleiten.

Die Erweiterung ist ja auch super. Du hast sie nur irgendwann gelöscht.

Ja, ich wurde darauf hingewiesen, dass meine Erweiterung die Lebenszeit des Calliope vermindert. Flash-Speicher nutzt sich mit der Zeit ab. Deshalb sollte man vermeiden, immer wieder die gleiche Speicherbank zu flashen. Und genau das hat meine Erweiterung gemacht. Deshalb habe ich das gelöscht.

Eigentlich wollte ich eine verbesserte Version erstellen, die das „page-erase“ nur noch selten macht und die Daten immer wieder am Ende hinzufügt. Aber bis jetzt habe ich das noch nicht wirklich gebraucht. Wenn generell interesse besteht, dann kann ich das weiter verfolgen. Vielleicht gibt es ja auch schon eine fertige Lösung von anderer Seite :slight_smile:

Aber zunächst muss überhaupt die C++ Entwicklung auf dem Calliope wieder gehen. Hoffen wir mal auf ein Feedback von Amerlander.

1 Like

Bei pxt gab es gerade Änderungen wie Erweiterungen kompiliert werden, die calliope beta ist allerdings noch nicht auf der neuesten Version, von daher vermute ich, dass es mit dem Upgrade auf die neueste Version von pxt auch wieder klappt.

Bei der nicht-beta gibt es allerdings theoretisch keine Änderung, da stecke allerdings auch nicht so tief drinnen und bin auch nicht über etwaige Änderungen beim Hosting informiert. Ich erkundige mich da aber mal und gebe Rückmeldung/versuche das zu beheben.

1 Like

Also das Minimalprojekt „pxt-calliope-test3“ funktioniert jetzt auf dem normalen Calliope Makecode.
Auf der Beta kommt leider immer noch der math.ts Fehler.

Weiterhin habe ich versucht meine nicht ganz so triviale Erweiterung im normalen Makecode Calliope zu importieren, aber das hat leider auch nicht geklappt.

Aber da werde ich erst nochmal einiges abstrippen um herauszufinden, woran es liegt.

1 Like

Ich habe auch von Microsoft Rückmeldung zu den C++ Erweiterungen bekommen: Das Kompilieren von C++ Erweiterungen wird als sehr kompliziert eingestuft und bei der Weiterentwicklung kann wohl nicht immer alles bestehende berücksichtigt werden.
Dazu kommt, dass die normale Calliope MakeCode Version eine sehr alte Version von PXT verwendet und da noch weniger Motivation zur Pflege seitens Microsoft besteht. Es ist allerdings besprochen, dass das Calliope MakeCode enger an das MakeCode vom MicroBit angebunden wird und somit zukünftig ähnlichere Releaszyklen und weniger Unterschiede zwischen beiden Versionen bestehen werden.

2 Like

Es hat jetzt leider länger als geplant gedauert, aber ich habe gerade eine Aktualisierung erstellt, die mit der MakeCode Version von MicroBit gleich zieht (deren Stable, also 3.0.22):

Wenn die Aktualisierung angenommen wird kann das unter https://makecode.calliope.cc/beta getestet werden. Ich habe bei der Aktualisierung versucht möglichst viele Unterschiede zwischen Microbit und Calliope auszuräumen (in MakeCode und der DAL), wo ich zu rigoros war und doch Bugs eingebaut habe muss dann in der Beta die nächsten Tage noch ausführlich getestet werden. :slight_smile: Aber ich denke, dass das Bugfixing dafür jetzt auch wieder einen schnelleren Rhythmus bekommt und wir dann auch Bald zur Stable wechseln können.

2 Like

Danke für die Arbeit.
Sobald der Pull-Request in die beta veröffentlicht wurde, werde ich das testen.

Falls du es nicht schon im Forum gelesen hast, hier der Ping, dass du es jetzt testen kannst @feri

1 Like

Hallo Juri,

vielen Dank für den PING. Habe eben einen kurzen Test gemacht und es sieht seht gut aus. Funktioniert schnell und ohne Fehler. Werde in den nächsten Tagen noch ausführlichere Tests machen.

Vielen Dank für diesen großartigen Fix,

  feri
1 Like