Is SDK 7.1.0 an April's fool joke?

I saw that SDK 7.1.0 was released (typical to Garmin it's called 7.1.0-RC2-2024-02-14 inside..., though probably it should be called 7.1.0-RC3-2024-04-01)

So I tried it again. This of course means changing all my apps one by one with changes that make them incompatible with SDK 6.4.2. This could be "OK", but nothing works in 7.1.0! I see that none of the things reported by multiple people about 7.x were fixed... 

  • As far as fixes, have you looked at the Release Notes in the Readme in the SDK or are you just looking at bug reports?

    As far as 6.4.2 vs 7.1.0, try turning off type checking until you are ready to make changes to your code.  That should allow you to test things.

    I've been testing my apps in both the sim and with sideloads since the first 7.0.x beta and they run fine for me.  I'll be using 7.1.0 to build iq files unless I see a blocker.

    And you can always just stick with 6.4.2 until you are ready to move to 7.1.0

  • it's not that I am not ready. The compiler isn't ready.

  • Is it the complier or the differences with type checking? Or does it have to do with the new byte codes and 3rd party optimization?

    As I've said, my apps all seem to compile and run fine, but I generally have typechecking turned off..

  • If it works for you then there are no bugs. The problem is in the other developers who use type checking (a feature that is pushed by Garmin) Mea culpa.

    I don't know if it's related to type checking, maybe it is, but probably not. I got 2 errors, that I reported to [email protected]

    For example: Optimization validation failure: Cannot find register value '%tmp.41'

  • Type checking with 7.1 is a train wreck. Are multidimensional arrays just not supported anymore? Changing the syntax of something fundamental seems like they're saying "we don't use this internally so we couldn't care less what this breaks, so get over it because it's not our problem". It wasn't broken, why was it fixed? I can already hear "it's not a problem if you disable type checking altogether".

  • It's even less of a problem if everyone quits ciq development!

    inb4: "why are you still here" and "it seems like you are only here to complain"

  • I just want it to work. I ask for stuff and I get ghosted, OK fine, but when I get it to work I don't want it to be broken later when I don't change anything. Is this too much to ask? What did we get for this that this is better? Did someone ask for this?

  • I testet 7.1.0 with one of my Edge Datafields:

    Type Check = OFF  -->  no problems  building with 7.1.0

    Type Check = Default  --> Problems with nnApp.mc  "function getInitialView()..." :

    **************************************
    WITH SDK 6.4.2:

        //  with SDK 6.x.x
        //! Return the initial view of your application here
        function getInitialView() as Array<Views or InputDelegates>? {
            view = new EdgeAllinOne1View(_sensor);                    
            return [ view, new InputDelegate(view) ] as Array<Views or InputDelegates>;    
        }
    This code works fine with 6.4.2.
    But built with SDK 7.1.0 - following error is thrown:
    ERROR: edge1040: C:\Garmin_IQ_Projekte\Edge1_Ebike_Beta\source\EdgeAllinOne1App.mc:46:
    Cannot override '$.Toybox.Application.AppBase.getInitialView' with a different return type.
    **************************************
    WITH SDK 7.1.0:

        
    // from SDK 7
        //! Return the initial view of your application here
        function getInitialView() as [Views] or [Views, InputDelegates] {
            view = new EdgeAllinOne1View(_sensor);                    
            return [ view, new InputDelegate(view) ];    
        }
    This code works fine with 7.1.0.

    But built with SDK 6.4.2 - following error is thrown:
    ERROR: edge1040: C:\Garmin_IQ_Projekte\Edge1_Ebike_Beta\source\EdgeAllinOne1App.mc:54,30: no viable alternative at input 'as['

    *************************************

  • Yeah, this is annoying, and it was reported that it's not backwards compatible (i.e https://forums.garmin.com/developer/connect-iq/i/bug-reports/the-new-resourceid-type-for-resources-in-sdk-7-is-a-breaking-change), but this is the correct behavior according to the documentation: https://forums.garmin.com/developer/connect-iq/b/news-announcements/posts/welcome-to-system-7 

    I'm talking about code that is seemingly correct in both SDK-s, still it fails to compile with 7, but the funny thing is that the compiler / Garmin know that there's a problem because they write in the error message to contact garmin on [email protected]

  • Concerning backwards compatibility I did the following test - and it's really shocking:

    With actual SDK 7.1.0:
    create a new project via VSCode and Ctr+P:
    A complex datafield.
    Did nothing more!
    Build with 7.1.0 - no problem.

    Then changed to SDK 6.4.2 and tried to build this "official" datafield -> shocking!
    ERROR: edge1040: C:\Garmin_IQ_Projekte\TEST\source\TESTApp.mc:20,30: no viable alternative at input 'as['
    Even with Type Check completely disabled!

    Next: will sideload this 7.1.0 created datafield to my Edge 1040 and see what happens...

    Edit: sideload of 7.1.0 compiled datafield runs on Edge 1040.