π
<-
Chat plein-écran
[^]

NumWorks Omega 1.21 : 100K de heap pour scripts Python !

En ligne

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Message non lude redgl0w » 30 Avr 2021, 14:02

parisse a écrit:D'ailleurs je vois que dans ma version de Delta, la declaration dans nw-external-apps/api/api.c est incorrecte (parametre bool au lieu de int), j'ai:
Code: Tout sélectionner
int getkey(bool allow_suspend) {
  return ((int (*)(bool))_api_base[74])(allow_suspend);
}

Donc voila ce qu'il faudrait verifier sur Omega, d'abord est-ce que le numero de syscall est le bon (((int (*)(bool))_api_base[74])) et ensuite est-ce que l'implementation de getkey est bonne ?

En effet légère (énorme) différence avec omega et le repo de zardam. Cependant, l'implémentatino que tu utilises est j'ai l'impression external v1. Ne serait-il pas plus simple de passer sur external V2 ? (car le code est assez spécifique à khicas, ce qui aurait plus de logique d'être donc dans khicas). En tout cas, on a enfin pu trouver donc d'où vient le problème de compatibilité : c'est que zardam avait developpé external v2, nous avait pr, on a accepté en se disant que khicas marcherait toujours, mais il est resté lui sous external v1.
Image
Avatar de l’utilisateur
redgl0wVIP+
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 58.6%
 
Messages: 283
Images: 0
Inscription: 30 Oct 2019, 20:36
Localisation: Centre Val de Loire
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: MP2I
Twitter/X: Gl0wRed
GitHub: RedGl0w

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Message non lude M4x1m3 » 30 Avr 2021, 14:27

Après avoir regardé dans les détails le repo Delta, avec son implémentation external, je pense qu'il est possible soi :
- De passer tout à external v2, et de réimplementer certaines fonctions dans KhiCAS (mais ça impliquerais de se passer d'une fonctionnalité, plus de détails après)
- De faire une 3e version de l'API external, uniformisée, qui serait la même dans delta et Omega.

Je pense que la première solution est largement faisable :
Code: Tout sélectionner
  (void (*)(void)) numworks_draw_string,       // Présent dans External V2
  (void (*)(void)) numworks_draw_string_small, // Présent dans External V2
  (void (*)(void)) numworks_set_pixel,         // Présent dans External V2
  (void (*)(void)) numworks_fill_rect,         // Présent dans External V2
  (void (*)(void)) numworks_get_pixel,         // Présent dans External V2
  (void (*)(void)) numworks_hide_graph,        // Semble être utilisé car interraction avec l'env mpy Epsilon, je ne comprends pas pourquoi (surement réimplémentable)
  (void (*)(void)) numworks_wait_1ms,          // Implémentable (sleep(1))
  (void (*)(void)) waitforvblank,              // Présent dans External V2
  (void (*)(void)) statuslinemsg,              // Implémentable avec les fonctions d'external V2 (d'après le code sur gh)
  (void (*)(void)) statusline,                 // Implémentable avec les fonctions d'external V2 (d'après le code sur gh)
  (void (*)(void)) getkey,                     // Un peu plus complexe (car USB), nécessite surement un compromis / une 3e version d'external
  (void (*)(void)) GetKey,                     // Duplicata de la fonction précédente
  (void (*)(void)) alphawasactive,             // Possiblement implémentable (faire un driver clavier dans khicas à partir de external_scanKey ?)
  (void (*)(void)) lock_alpha,                 // Possiblement implémentable (faire un driver clavier dans khicas à partir de external_scanKey ?)
  (void (*)(void)) reset_kbd,                  // Possiblement implémentable (faire un driver clavier dans khicas à partir de external_scanKey ?)
  (void (*)(void)) back_key_pressed,           // Possiblement implémentable (faire un driver clavier dans khicas à partir de external_scanKey ?)
  (void (*)(void)) enable_back_interrupt,      // Semble être utilisé car interraction avec l'env mpy Epsilon, je ne comprends pas pourquoi (surement réimplémentable)?
  (void (*)(void)) disable_back_interrupt,     // Semble être utilisé car interraction avec l'env mpy Epsilon, je ne comprends pas pourquoi (surement réimplémentable)
  (void (*)(void)) os_set_angle_unit,          // Impossible sans révision de l'API / grosse magie noire
  (void (*)(void)) os_get_angle_unit,          // Impossible sans révision de l'API / grosse magie noire
  (void (*)(void)) os_file_browser,            // Implémentable
  (void (*)(void)) file_exists,                // Présent dans External V2
  (void (*)(void)) erase_file,                 // Présent dans External V2
  (void (*)(void)) read_file,                  // Présent dans External V2
  (void (*)(void)) write_file,                 // Présent dans External V2
  (void (*)(void)) mp_hal_input,               // Semble être utilisé car interraction avec l'env mpy Epsilon, je ne comprends pas pourquoi (surement réimplémentable)

Le compromis est donc dans le getangleunit et setangleunit (à voir s'il est possible de s'en passer, sinon on peut designer une manière plus large d'accéder aux settings de poincaré), et dans la gestion de l'USB (il est toujours possible d’interagir avec le HW en bas niveau depuis external, mais ce n'est sûrement pas une bonne solution, on a un HAL pour ça). À toi de voir ce qui t'irais vraiment pour KhiCAS, savoir si on fait une V3 external ou si on peut juste réimplémenter les fonctions implémentables dans khicas au lieu de les avoir dans l'API.

Si une V3 d'External devrais être faite, je pense qu'il faudrait vraiment essayer de faire ça proprement pour ne plus jamais avoir à y toucher.
Image
"Regression testing"? What's that? If it compiles, it is good, if it boots up it is perfect.
Avatar de l’utilisateur
M4x1m3Programmeur
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 62.6%
 
Messages: 170
Images: 12
Inscription: 13 Oct 2019, 21:10
Localisation: Bas-Rhin (67)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: M1 Informatique
Twitter/X: M4xi1m3
GitHub: M4xi1m3

En ligne

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Message non lude parisse » 30 Avr 2021, 14:44

Je ne comprends pas trop pourquoi je devrais changer quelque chose de mon cote, j'ai une liste de fonctions, mon "SDK C", qui marche a la fois sur nspire et numworks (et qui est a peu pres compatible avec les Casio et pourrait l'etre aussi avec les HP Prime), qu'est-ce qui empeche d'avoir une version de l'api external chez vous qui soit up-compatible? Je veux dire, si vous n'avez pas de getkey, il suffit de le rajouter non?
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.8%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

En ligne

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Message non lude parisse » 30 Avr 2021, 14:49

P.S.: la description du SDK est la https://www-fourier.univ-grenoble-alpes.fr/~parisse/numworks/khicasnw.html#sec47
La doc sur getkey est a completer, au sens ou si allow_suspend est <0 alors on teste juste si la touche est pressee.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.8%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Message non lude M4x1m3 » 30 Avr 2021, 15:01

Parce qu'on essaye de garder une API external la plus simpliste et la plus générique possible. Le but de cette API est de permettre d'utiliser le matériel et d’interagir avec le firmware avec des méthodes non-spécifiques à des cas précis.
Si on prends un autre exemple pas si éloigné, comme les syscalls du noyau linux, les développeurs ne vont pas rajouter un syscall pour chaque utilisation précise, alors qu'il est possible d'implémenter tout ça avec ceux déjà existants. Je pense que je peux essayer de réimplémenter les fonctions du SDK avec external V2, on va essayer.
Image
"Regression testing"? What's that? If it compiles, it is good, if it boots up it is perfect.
Avatar de l’utilisateur
M4x1m3Programmeur
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 62.6%
 
Messages: 170
Images: 12
Inscription: 13 Oct 2019, 21:10
Localisation: Bas-Rhin (67)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: M1 Informatique
Twitter/X: M4xi1m3
GitHub: M4xi1m3

En ligne

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Message non lude parisse » 30 Avr 2021, 15:26

Qui peut le plus peut le moins! Rien ne vous empeche d'avoir 2 niveaux, le premier niveau qui plait a un puriste informaticien, et le 2eme niveau avec ce qu'il me faut, qui vous plait peut-etre moins, mais me permet a moi et potentiellement d'autres d'avoir du code partage entre differentes calculatrices.
On a fait le travail pour Delta, ca doit pas etre grand chose de porter tout ca pour Omega (n'oublions pas qu'il y a des anomalies avec Omega, c'est donc a Omega de faire des changements!). Et ca permet d'eviter qu'on se lance dans des discussions sans fins ou tout laisse craindre que ca va s'envenimer a cause de nos differences de culture et du passe.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.8%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

En ligne

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Message non lude redgl0w » 30 Avr 2021, 15:47

parisse a écrit:n'oublions pas qu'il y a des anomalies avec Omega, c'est donc a Omega de faire des changements!).

Ce n'est pas nous qui avons fait personnellement les changements. On savait que zardam bossait avec toi sur external, et donc quand il a fait son PR pour external V2, on avait cru que KhiCas marcherait aussi.
Image
Avatar de l’utilisateur
redgl0wVIP+
Niveau 13: CU (Calculateur Universel)
Niveau 13: CU (Calculateur Universel)
Prochain niv.: 58.6%
 
Messages: 283
Images: 0
Inscription: 30 Oct 2019, 20:36
Localisation: Centre Val de Loire
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: MP2I
Twitter/X: Gl0wRed
GitHub: RedGl0w

En ligne

Re: NumWorks Omega 1.21 : 100K de heap pour scripts Python !

Message non lude parisse » 30 Avr 2021, 16:02

En fait, j'avais compris que c'etait une version un peu experimentale, je ne suis jamais passe dessus (vu qu'elle n'etait pas compatible). La version de Delta que j'utilise, c'est celle qui est sur ma page https://www-fourier.univ-grenoble-alpes.fr/~parisse/numworks/delta14_device.tar.bz2 pour la calculatrice et https://www-fourier.univ-grenoble-alpes.fr/~parisse/numworks/delta_simu.tar.bz2 pour le simulateur (avec un Epsilon 12 mais ca n'a pas d'importance pour debugguer KhiCAS au simulateur), et avec le mode d'emploi https://www-fourier.univ-grenoble-alpes.fr/~parisse/numworks/khicasnw.html#sec42.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 77.8%
 
Messages: 3511
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Précédente

Retourner vers News NumWorks

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 32 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1598 utilisateurs:
>1556 invités
>37 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)