Upsilon : firmware successeur d'Omega par sa communauté !



Omega
était un firmware
alternatif pour ta calculatrice NumWorks
. Basé sur le code source du firmware
officiel Epsilon
comme la licence l'autorisait, Omega
avait pour but de regrouper et mettre en avant les meilleures contributions au code d'Epsilon
, en incluant justement celles ignorées ou refusées par le constructeur.Difficile de tout citer ici mais voici déjà par exemple un des fantastiques ajouts d'
Omega
. La NumWorks
travaille en interne sur des arbres de calcul, mais n'accepte que des valeurs numériques. Omega
étendait ces arbres en autorisant également des lettres / inconnues, ce qui nous donnait ainsi un moteur de calcul littéral. De quoi même dériver, du jamais vu à seulement 80€
! 
Il y avait aussi un tableau périodique des éléments, ou encore
100K
de mémoire heap
pour tes projets Python
au lieu de 32K

Omega
offrait également l'avantage de pouvoir installer à chaud des applications. Plusieurs applications de très haute facture furent développées, on peut citer entre autres : 
- , une formidable application intégrée de Mathématiques et de Sciences par , enseignant-chercheur à l'Université de Grenoble, qui étendait gratuitement les capacités de ta calculatrice au niveau d'une . L'application intégrait le moteur de calcul formelHP PrimeGIACdéveloppé pour le logicielXcasdu même auteur pour des possibilités en calcul encore plus étendues. Étaient également inclus un tableur, une bibliothèque de constantes physiques, un convertisseur d'unités, un tableau périodique des éléments et bien d'autres choses encore. Le tout était en prime programmable enPython, avec une collection de modules importables bien plus étoffée que celle de l'applicationPythonofficielle, et surtout ici de façon intégrée, tes scriptsPythonpouvant en effet faire appel au moteur de calcul formelGIACpar l'intermédiaire du modulecas.
- , un émulateur de console de jeux Nintendo NESpar
- , un émulateur de console de jeux Nintendo GameBoypar
- , un tableau périodique des éléments par
KhiCAS
et l'ensemble des fonctionnalités rajoutées restaient accessibles en mode examen, de façon parfaitement légale et légitime en France, puisque ces fonctionnalités venaient directement intégrées à des modèles concurrents haut de gamme parfaitement autorisés. 
Hélas pour cette rentrée 2021, 
En conséquence, nous t'annoncions il y a quelques semaines le cœur serré l'abandon officiel du projet
NumWorks
a brutalement pris un virage ultra-sécuritaire. Toute mise à jour en version 16.3.0
ou supérieure verrouille définitivement ta calculatrice NumWorks N0110
contre l'installation
de tout code tiers, et ce sans même que tu en sois prévenu(e) sur la page concernée. 
En conséquence, nous t'annoncions il y a quelques semaines le cœur serré l'abandon officiel du projet
Omega
. 
Bernard Parisse
se proposait de reprendre et continuer à maintenir le projet Omega
fork
: un nouveau firmware
nommé Khi
.Construit à partir du code source de la dernière version d'
Omega
Khi
reprenait l'intégralité des avantages de ce dernier ! 
Toutefois hors fonctionnalités,
Le
Ce n'est pas un problème en soit, c'est un choix qui se défend, mais nombre d'utilisateurs et contributeurs
Khi
apportait divers changements clivants qui n'ont pas été du goût de nombre d'utilisateurs et contributeurs historiques de la communauté Omega
:- abandon du support du modèle intial NumWorks N0100de la rentrée 2017
- une interface d'installation en ligne n'ayant absolument rien à voir avec celle qu'Omegaproposait
- pas de simulateur en ligne
- pas d'interface en ligne pour choisir les applications à installer ainsi que les fichiers ROMspour accompagner les applications d'émulation
- et surtout à la différence, pas de disponibilité du projet Khisur la plateformeGitHub, cassant ainsi les habitudes des nos jeunes contributeurs, notamment le caractère public des contributions ainsi que des suites leur étant apportées ou pas
KhiCAS
installée avec Khi
a continué à évoluer de façon très significative, ce ne fut hélas pas le cas du reste du firmware
.Le
firmware
Khi
semble ne pas avoir bénéficié d'une ambition autre que celle d'être un moyen de lancer l'application KhiCAS
.Ce n'est pas un problème en soit, c'est un choix qui se défend, mais nombre d'utilisateurs et contributeurs
Omega
se sont ainsi sentis mis de côté.
Omega
brillamment conduite par et lance à son tour un nouveau fork
qui se veut cette fois-ci être enfin le véritable successeur de l'esprit Omega
Upsilon
.Upsilon
qui nous sort donc aujourd'hui en version 1.0
:- est basé sur le code du firmwareEspilonofficiel dans sa version; toutes les nouveautés annoncées depuis ne pouvant être incluses suite au changement de licence15.5.0
- apporte bien évidemment entre autres toutes les nouveautés et ajouts développés dans le cadre d'jusqu'à l'arrêt du projetOmega
Mais
Upsilon
ne se contente absolument pas de cela loin de là ; découvrons ensemble les nouveautés.Sommaire
1) Nouveautés application Paramètres
Go to top
Paramètres
.

Police Python
Python
est permet maintenant de changer plusieurs choses relatives à cette application.Outre la taille de police, il permet de désactiver deux choses disponibles par défaut :
- l'auto-complétion qui selon les habitudes de chacun peut perturber la saisie
- la coloration syntaxique qui n'arrange pas forcément tout-le-monde
À propos
nous avons une nouvelle ligne indiquant le voltage ainsi que le pourcentage de charge de la batterie, informations entre lesquelles on bascule avec la touche OK.


USB
permet de configurer une protection de ta calculatrice, activée par défaut.Lorsque activé, ce paramètre empêche toute installation d'un
firmware
officiel Epsilon
et donc tout verrouillage définitif de ta calculatrice, enfin ! 
(à noter toutefois que la protection ne fonctionne que si le firmware
Upsilon
est en fonctionnement ; elle n'est pas active si tu passes par le mode de récupération de la machine)Toute tentative d'installation d'un
firmware
non souhaité entraînera une déconnexion immédiate de la calculatrice.
- autoriser la seule installation de firmwaresbasés surUpsilon
- autoriser la seule installation de firmwaresbasés surOmega(ce qui inclutKhiselon nos tests)
- n'autoriser aucune installation de firmware
2) Nouveautés application Python
Go to top
Python
où nous sommes gâtés avec nombre de nouveautés délicieusement croustillantes. 
Déjà avant toute chose. Jusqu'à présent les
Ce n'est franchement pas beaucoup ; on se sent rapidement à l'étroit notamment lorsque l'on commence à vouloir inclure des images dans ses scripts.
firmwares
disponibles pour ta NumWorks
n'offrait que 32K
de stockage pour les scripts Python
de l'application.Ce n'est franchement pas beaucoup ; on se sent rapidement à l'étroit notamment lorsque l'on commence à vouloir inclure des images dans ses scripts.

kandinsky
. Même si il y a pire, la bibliothèque de tracé par pixels kandinsky
n'est pas bien généreuse, son offre se résumant à 4 méthodes dans le firmware
officiel Epsilon
.set_pixel(x, y, couleur)
pour allumer un pixel.fill_rect(x, y, largeur, hauteur, couleur)
pour remplir un rectangle.draw_string(..., x, y)
pour écrire
firmware
Omega
avait grandement amélioré cela en ajoutant .draw_line(x1, y1, x2, y2, couleur)
pour tracer un segment.Mais c'était bien peu. La réalisation de projets graphiques nécessitait souvent bien d'autres primitives. Tu avais le choix entre :
- Utiliser des scripts Pythoncodant des bibliothèques graphiques les fournissant
- Les écrire toi-même.
Ce n'est pas forcément une mauvaise chose, mais selon le niveau cela pouvait nécessiter une étude mathématique préalable(trigonométrie pour le tracé de cercles, triangulation pour le remplissage de formes...), chose qui pouvait être décourageante.
Et dans tous les cas, laNumWorkssouffra par rapport à la plupart de la concurrence d'une mémoire de tas(heap)à l'exécution relativement faible enPython, et un codage non optimal de ces ajouts amputant d'autant la capacité restant pour exécuter le reste du code de ton projet.

Upsilon
nous gâte dans ce contexte ! 
La bibliothèque graphique
kandinsky
nous rajoute en natif plusieurs méthodes essentielles, et donc sans consommation supplémentaire de heap
. Nous avons déjà autour des cercles :.draw_circle(x, y, rayon, couleur)
pour tracer un cercle.fill_circle(x, y, rayon, couleur)
pour remplir un disque

- Code: Select all
from kandinsky import *
SCREEN_W, SCREEN_H = 320, 222
r = min(SCREEN_W, SCREEN_H) // 2
fill_circle(SCREEN_W - r, r, r, (0, 0, 255))
draw_circle(r, r, r, (255, 0, 0))

.fill_polygon(..., couleur)
.Outre le paramètre de couleur, cette méthode attend une liste de coordonnées :
- Code: Select all
from math import ceil
from kandinsky import *
SCREEN_W, SCREEN_H = 320, 222
def mod(l):
x_min, y_min = l[0]
x_max, y_max = 0, 0
for k in range(len(l)):
x_min = min(x_min, l[k][0])
y_min = min(y_min, l[k][1])
x_max = max(x_max, l[k][0])
y_max = max(y_max, l[k][1])
fx = max(1, (x_max-x_min)/SCREEN_W)
fy = max(1, (y_max-y_min)/SCREEN_H)
for k in range(len(l)):
l[k][0] = ceil((l[k][0]-x_min)/fx)
l[k][1] = ceil((l[k][1]-y_min)/fy)
l = [
[0,200],
[400,200],
[400,250],
[450,150],
[0,200],
[2,62],
[223,236],
[253,222],
[274,236],
[350,184],
[121,2],
[2,62]
]
mod(l)
fill_polygon(l, (255, 0, 0)

Comparons, il ne semble pas y avoir ce problème avec les méthodes natives équivalentes sur la concurrence
TI-83 Premium CE Edition Python
ou TI-Nspire CX II
:.fill_polygon()
est malheureusement limitée, n'acceptant au maximum que 32 couples de coordonnées.Voici ci-contre un simple morceau du logo
Texas Instruments
à cause de cette limitation, avec les écarts de remplissage qui empirent, non seulement des lignes horizontales laissées en blanc mais également plusieurs lignes horizontales tracées hors de la forme.Mais pire que cela, le tracé ci-contre bloque la calculatrice et force alors à effectuer un
reset
.
.palette()
te retournant un dictionnaire avec les différentes couleurs des éléments de l'interface utilisateur Upsilon
.Tu as donc de quoi créer des scripts graphiques dont l'affichage s'adaptera automatiquement au thème graphique, notamment pour les utilisateurs qui choisissent d'installer
Upsilon
avec un thème autre que celui par défaut.Enfin la bibliothèque t'offrait de quoi tester si une touche est enfoncée via sa méthode
C'était quand même bien embêtant dans le cas de projets s'attendant à des appuis sur un large éventail de touches : jeux, menus, ou encore pire éditeur de texte.
Tu te devais donc d'interroger une par une l'intégralité des touches clavier via une bouche, ce qui n'est pas négligeable en temps, et pouvait ainsi te faire rater quelques appuis bref ou quelques subtilités comme des appuis simultanés sur plusieurs touches.
ion
.keydown(code_touche)
.C'était quand même bien embêtant dans le cas de projets s'attendant à des appuis sur un large éventail de touches : jeux, menus, ou encore pire éditeur de texte.
Tu te devais donc d'interroger une par une l'intégralité des touches clavier via une bouche, ce qui n'est pas négligeable en temps, et pouvait ainsi te faire rater quelques appuis bref ou quelques subtilités comme des appuis simultanés sur plusieurs touches.

Upsilon
nous apporte enfin une alternative mais bizarrement dans kandinsky
, la méthode .get_keys()
qui te retourne la liste de l'ensemble des touches actuellement pressées.
ion
.Nous y trouvons plusieurs nouvelles méthodes permettant d'interroger l'état de la batterie directement depuis tes scripts :
.battery()
pour connaître le voltage de la batterie.battery_level()
pour avoir le niveau de la batterie, soit le nombre d'éléments de charge à dessiner dans l'icône en haut à droit de l'écran(de 0 pour l'état critique à 4 pour une batterie chargée).battery_charging()
pour savoir si la batterie est en cours de recharge
KhiCAS
inclut elle-même son propre interpréteur micropython
distinct de celui de l'application Python
. Un avantage est la présence de bibliothèques supplémentaires comme ulab
.Toutefois, même dans le cadre du
firmware
Khi
, ces ajouts n'avaient malheureusement pas été dupliqués pour l'application Python
intégrée.L'application
Python
intégrée a pourtant un net avantage pour les projets les plus gourmands, avec un heap
de 100K
lorsque tu utilises les firmware
Upsilon
, Khi
ou Omega
, contre seulement 64K
via l'application KhiCAS
(et pour référence seulement
.32K
avec le firmware Epsilon
officiel)

Upsilon
la bibliothèque ulab
débarque enfin dans l'application Python
intégrée ! 


numpy
pour le calcul scientifique optimisé sur les tableaux ou matrices.


scipy
qui fédère elle-même divers sous-bibliothèques de calcul scientifique :- linalg: algèbre linéaire
- optimize: optimisation de fonctions(recherche d'extrema ou points d'inflexion)
- signal: traitement de signal
- special
3) Nouvelle application Liseuse
Go to top

Upsilon
nous bénéficions enfin d'une nouvelle application intégrée, une Liseuse
.Tu va pouvoir lire tous les romans que tu souhaites sur ta calculatrice.

LaTeX
sont reconnues ! 
- Code: Select all
Ce fichier est un test pour %r%LaTeX%\r%
$\frac{1}{12}+\sqrt[7]{4}-\floor{n+1}+\ceil{n-1}$
$u_{\phi(n)} = u_{2n+1} = (-1)^{2n+1} = -1$
$\times\forall\pm\partial\exists\div\infty\approx\neq\equiv\leq\geq$
$\leftarrow\uparrow\rightarrow\downarrow\leftrightarrow\updownarrow\Leftarrow\Uparrow\Rightarrow\Downarrow$
$\alpha\beta\gamma\delta\epsilon\zeta\eta\theta\iota\kappa\lambda\mu\nu\xi$
$o\pi\rho\sigma\tau\upsilon\phi\chi\psi\omega$
$\Alpha\Beta\Gamma\Delta\Epsilon\Zeta\Eta\Theta\Iota\Kappa\Lambda\Mu\Nu\Xi$
$\Omicron\Pi\Rho\Sigma\Tau\Upsilon\Phi\Chi\Psi\Omega$
La porte est donc maintenant également grande ouverte à tes fichiers de documents scientifiques : formulaires, cours, exercices corrigés, annales et bien d'autres !

Conclusion
Go to topAvec est clairement de retour.
Nous sommes heureux de retrouver un bouillonnement d'idées et formidables nouveautés comparable à ce dont a bénéficié ! 
Un grand merci et bravo à , , ainsi qu'à tous les contributeurs et testeurs, entre autres :
Upsilon
l'esprit du projet Omega
Nous sommes heureux de retrouver un bouillonnement d'idées et formidables nouveautés comparable à ce dont a bénéficié
Omega

Un grand merci et bravo à , , ainsi qu'à tous les contributeurs et testeurs, entre autres :

- @Yaya.Cout(1er contributeur + divers fix assez importants)
- @dl11(protection usb)
- @Mino#1289(co-auteur de la liseuse)