Atmosphère 1.2.1 disponible

Le développeur SciresM vient de sortir Atmosphère 1.2.1 Cette version apporte la compatibilité de la Nintendo Switch en version 13.1.0


Le développeur SciresM de l'équipe Reswitched, vient de sortir, le 26/10/2021 à 11h20 du soir la version 1.2.1 d'Atmosphère, qui rend Atmosphère avec le firmware 13.1.0

 

Changelog

 

1.2.1 est la cinquante-huitième version officielle d'Atmosphère.
Veuillez vous assurer de mettre à jour fusee lors de la mise à jour vers la 1.2.1. fusee-primary n'existe plus, et ne fonctionnera plus.
Grâce à l'équipe de @switchbrew, Atmosphère 1.2.1 est fourni avec hbl 2.4.1 et hbmenu 3.4.1.
Ce qui suit a été modifié depuis la dernière version :

Le support de la version 13.1.0 a été implémenté.
mesosphère a été mis à jour pour refléter les changements de comportement du noyau effectués dans la version 13.1.0.
KScheduler émet maintenant une barrière de mémoire de données lors du déverrouillage du verrou de l'ordonnanceur et lors du retour anticipé dû à top-thread-is-current pendant l'ordonnancement.
erpt a été mis à jour pour refléter les derniers comportements officiels.
Le nouveau service ajouté dans la version 13.0.0 ("sprofile") a été révisé, et les formats de données qu'il attend ont été modifiés.
Cela semble encore (probablement( ?)) impossible à tester car les données ne sont pas encore transmises, mais je suis plus confiant que lors de la sortie
de la 1.1.0.
Un certain nombre d'améliorations ont été apportées à mesosphère, notamment :
Une cible de construction a été créée pour construire en ciblant la carte virtuelle qemu.
Cela facilite l'écriture de tests unitaires pour le noyau (et d'autres composants de mésosphère) et leur exécution sous PC.
Note : Les logiciels officiels ne fonctionneront pas du tout sous cette cible, et le projet Atmosphère n'a aucun intérêt à essayer de faire fonctionner des logiciels officiels de quelque nature que ce soit. Il s'agit d'une machine de test unitaire, et explicitement pas plus que cela.
Cela devrait nous permettre d'avoir une plus grande confiance dans le fait que tous les composants d'Atmosphère fonctionnent comme ils sont théoriquement censés le faire à l'avenir.
Remarque : si vous êtes un développeur familier du système d'exploitation Horizon (ou capable de le devenir), j'apprécierais grandement de l'aide pour écrire des tests et améliorer le cadre de tests.
Veuillez contacter SciresM#0524 si vous êtes capable et intéressé.
En réalité, si vous êtes un développeur et que vous souhaitez m'aider à lancer ce projet, je vous en serais très reconnaissant.
Cela dit, si vous n'êtes pas un développeur mais que vous voulez le devenir, ce n'est probablement pas la meilleure occasion ; je m'attends à ce que ce soit très technique.
Considérez le canal #hack-n-all du discord ReSwitched pour vos besoins éducatifs.
Nous utilisons (du moins pour le moment) catch2 pour les tests unitaires.
Presque tous les appels virtuels dans le noyau sont maintenant résolus statiquement.
Cela élimine une surcharge substantielle des appels virtuels, et devrait conduire à une amélioration des micro-performances du noyau dans presque toutes
les fonctions.
Les opérations de recherche de l'arbre rouge noir restantes qui n'utilisaient pas la variante optimisée "find key" utilisent maintenant la version optimisée.
Un assemblage personnalisé a été écrit afin d'améliorer la conversion des tics en périodes.
Cela permet de contourner le fait que gcc émet un assemblage sous-optimal à -Os (il émet un bon assemblage à -O3, clang est bon à -O3 et -Os).
Les structures KThread et KSession ont été mises à jour pour optimiser la disposition des membres, économisant 0x10 octets par objet KThread/KSession.
Plutôt que de mettre inutilement à zéro toutes les données dans les objets du noyau pour écraser les membres plus tard, nous n'initialisons maintenant que les membres dont nous avons besoin dans les constructeurs d'objets du noyau.
C'est ce que Nintendo faisait déjà.
Un ensemble de primitives atomiques personnalisées et optimisées ont été implémentées et sont utilisées à la place de std::atomic<>.
Cela contourne un bug de gcc qui rétrograde l'ordre de mémoire spécifié à seq_cst, et introduit clrex dans les endroits où il est approprié.
Cela devrait strictement améliorer les micro-performances de nombreux appels système.
Une extension basculable à la compilation a été ajoutée pour supporter les adresses physiques de 40 bits dans les capacités MapRange (en utilisant les
bits actuellement réservés).
Un certain nombre de bogues mineurs ont été corrigés, notamment :
La gestion du cache initial reflète désormais mieux le comportement officiel.
Cela corrige un problème qui faisait que certains matériels sensibles au cache produisaient des paniques cryptiques du noyau pendant le démarrage.
Une logique incorrecte lors de la vérification des capacités de priorité des threads a été corrigée pour refléter le comportement officiel.
L'ordonnanceur a été mis à jour pour refléter le dernier comportement officiel, et un certain nombre de bogues mineurs impliquant clz/ctz ont été corrigés.
Les accès à la région locale des processus ont été corrigés pour utiliser correctement la région linéaire du noyau, et non les pointeurs de l'utilisateur.
Les SVC de cache exposés pour les processus 32 bits reflètent maintenant mieux la sémantique officielle de demande de masque de noyau.
Un bogue a été corrigé qui pouvait provoquer une panique du noyau si SvcArbitrateLock était appelé sur un thread avec exactement une référence au milieu de la gestion d'une exception en mode utilisateur.
Améliorations générales de la stabilité du système pour améliorer l'expérience de l'utilisateur.



Lien de téléchargement : Atmosphère 1.2.1 
Lien des sigpatchs : Sigpatch 1.2.1 FW 13.1.0
Lien de mon pack vanilla : Atmo-Pack Vanilla 1.2.1 FW 13.1.0

 


Veuillez vous connecter ou vous créer un compte pour commenter cet article !


Il n'y a aucun commentaire pour le moment.