Запрос в поддержку Амперки. Сокращение разрыва версий с Espruino (РЕШЕНО)

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем Konkery, 3 мар 2019.

Метки:
  1. Konkery

    Konkery Гик

    Здравствуйте, коллеги !

    В очередной раз столкнулся с проблемами которые похоже вызваны отставанием версий IskraJS
    и Espruino.
    Сын пишет проект измерительной лаборатории на IskraJS и наборе датчиков. Каркас программы
    сильно опирается на возможности доступные в ES6, одна из них использование class{}.
    Первоначально он провел простенькие тесты на предмет работы кусков кода с использованием
    class{}, вроде все заработала. Далее он накидал несколько реальных классов приличного размера
    и при тестировании вылетела ошибка. Пресловутая ошибка с потерей контекста.
    Написали на форум в Espruino, и не смотря на то что возможности ES6 в Espruino далеко не в полном
    объеме реализованы, на форуме ребята мне непринужденно доказали, что код (см. ниже)
    на оригинальной плате с прошивкой 2v01, вполне корректно выполняется.
    А на IskraJS нет. Код:
    Код (Javascript):
    class A {
        constructor(x, y) { // class field...
          this.x = x;
          this.y = y;
        }
        asyncFuncA() { // code...
            console.log("A.asyncFuncA()");
        }
        run() { // call async code
            setInterval(() => {
                this.asyncFuncA();
            }, 1000);
        }
    }
    class B extends A {
        constructor(x, y){
            super(x,y);
        }
        AsyncFuncB() { //code...
            console.log("B.asyncFuncB()");
        }
        run() { // call async code
            super.run();
            setInterval(() => { // Todo...
                this.AsyncFuncB();
            }, 2000);
        }
    }
    /**********************************************/
    let x = 1; let y = 2;
    let ob = new B(x, y);
    ob.run();
    При выполнении такого кода на IskraJS не находиться ф-я asyncFuncA(). Версия прошивки
    IskraJS 1v96.43.
    Код (Javascript):
       /  _/_____ / /__ _____ ____ _
       / / / ___// //_// ___// __ `/
    _/ / (__  )/ ,<  / /   / /_/ /
    /___//____//_/|_|/_/    \__,_/
    Based on Espruino 1v96.43
    (c) 2018 G.Williams, Amperka LLC
    Support the work of core developers:
    http://espruino.com/Donate
    >
    =undefined
    Uncaught Error: Function "asyncFuncA" not found!
    at line 1 col 6
    this.asyncFuncA();
         ^
    in function called from system
    Такая же ситуация была ранее со стрелочными ф-ми, пишем код под IskraJS, происходит
    потеря контекста, пишу на форум в Espruino, в ответ мне наглядно показывают что очень даже
    работает, пришлось ждать очередной (не помню какой) версии прошивки IskraJS
    после чего тоже заработало. До этого была еще одна проблема решение которой пришлось
    отложить пока не сократилось отставание от версий Espruino.
    На форуме Espruino мне отписали что с версии 1v96.xx до текущих было много сделано
    работы по поддержки стандарта ES6.
    Так как сын разрабатывает отображение части параметров в браузере, то ему конечно
    важно максимальное сходство языковых возможностей и "там" и "тут".

    Вопрос первый, когда ожидается очередное обновление версии прошивки и какой номер ожидается ?
    Вопрос два почему поддерживается такой разрыв в номерах версий ?
     
  2. NikitOS

    NikitOS Король шутов Администратор

  3. Konkery

    Konkery Гик

    Закинул и туда, но там авт подтверждения или номера принятой заявки, поэтому продублировал здесь
     
  4. sys

    sys Злобный Буратино Модератор

    Согласен, 2.01 была бы весьма кстати для большой Искры ЖС.

    Проверил: На 1.99 тоже данный код не прокатывает, а на 2.01 все ок.
     
    Konkery нравится это.
  5. Konkery

    Konkery Гик

    - как я понимаю проверяли на оригинальной espruino плате ?
     
  6. sys

    sys Злобный Буратино Модератор

    Нет, все от Амперки: Iskra Js mini (оригинальная прошивка для платы Espruino Wifi) и Wifi slot (оригинальная прошивка для esp8266)
     
    Konkery нравится это.
  7. Konkery

    Konkery Гик

    я правильно понимаю, что разрыв версий прошивок у IskraJS и Iskra Js mini разный ?
    У нас от Амперкки только две "большие" искры, проверить не на чем.
     
  8. sys

    sys Злобный Буратино Модератор

    Да, правильно. Большая Iskra JS изначально отличалась от оригинальных плат Эспруино и требует сборки прошивки со своими параметрами. Но вот что-то с новыми сборками в Амперке не спешат...
    Мне кажется, в мини версии как и со слотом они решили избежать проблем со свежестью прошивок облегчить себе и пользователям жизнь :)

    P.S. Чисто для проверок кодовых конструкций можете взять любую недорогую NodeMCU на ESP8266 и прошить ее свежей Espruino
     
    Konkery нравится это.
  9. В JS есть babel - инструмент, который конвертирует современный код в совместимый со старыми версиями. Возможно, вам это поможет.
     
    Konkery нравится это.
  10. Konkery

    Konkery Гик

    а может и осложнит жизнь) тажа конструкция class{} ведет себя не на 100% эквивалентно прототипному
    построению объектов. В результате ты можешь ожидать одного а в реальности будет другое и пойми
    чем оно вызвано.
    Я считаю такие средства для ситуаций (в частности) когда у тебя в продакшен нет вариантов, т.е.
    неизбежно может оказаться не совместимость у части пользователей.
    В моем случае ситуация иная, пользователь один, готовая прошивка которая работает "как надо" только мне она не доступна.
     
    sys нравится это.
  11. sys

    sys Злобный Буратино Модератор

    В ожидании официальной версии собрал пару прошивок для Iskra JS:
    > espruino_2v00.test_iskrajs.bin - сборка текущей версии бранча iskrajs_2V00 с гита Амперки
    > espruino_2v01.test_iskrajs.bin - сборка на базе бранча iskrajs_2V00, но с изменениями от 2v01

    Обе прошивки проверил чисто поверхностно - прошивал с помощью dfu-util 0.9 под Linux и проверял блинком и вашим кодом - работают. Но надо понимать, что без тщательного тестирования стабильная работа не гарантируется... но для поиграть надеюсь сойдет...

    Прошивать можно через EWIDE. В разделе Settings - Flasher - Advanced Firmware Update в строке URL указываете одну из ссылок:
    > http://jsff.ru/bin/espruino_2v00.test_iskrajs.bin
    > http://jsff.ru/bin/espruino_2v01.test_iskrajs.bin
    и жмете Advanced Flash Firmware. Далее выбираете Iskra JS, зажимаете BTN1, затем RESET и отпускаете. Плата перейдет в режим загрузчика и тогда нажимаете next и выбираете порт платы и далее начнется процесс прошивки. С первого раза при выборе порта платы может не сконнектиться, тогда повторяете процедуру уаказания ссылки и выбора без перезагрузки платы (она должна так и оставаться в режиме загрузчика)... Если Iskra JS не появляется в списке плат для прошивки попробуйте сделать как в этом посте.
    Также прикладываю архив с прошивками.

    UPDATE: Скопировал данный пост в новую тему: http://forum.amperka.ru/threads/iskra-js-Неофициальные-сборки-прошивок-2v00-и-2v01.17909/ все вопросы касаемые этих прошивок пишите туда
     

    Вложения:

    Последнее редактирование: 5 мар 2019
    Konkery и NikitOS нравится это.
  12. Konkery

    Konkery Гик

    Спасибо всем кто проявил интерес и тех поддержке. Достаточно оперативно прислали сборку 2v00.ххх
    На текущий момент программа которая была написана в стиле ES6 заработала также как и ее аналог в prototype стиле.
    Ответ конечно не дал надежду на то что в дальнейшем разрыв будет минимальным, по сути на это не хватает ресурсов.