Cydia 1.1.29 et 1.1.30 sont sortis

Les versions 1.1.29 et 1.1.30 de Cydia ont été publiées hier soir pour tous les utilisateurs d'iPhone, iPad et iPod Touch ayant jailbreaké iOS 10. Initialement, la version 1.1.29 de Cydia a été publiée avec de nombreuses modifications, puis la version 1.1.30 a été donnée. à nous de résoudre un problème de la mise à jour précédente.

Dans la version 1.1.29 de Cydia, le créateur de cette application a résolu quelques problèmes majeurs qui empêchaient la mise à jour des sources de tweaks, plugins et applications. De plus, dans la mise à jour pour Cydia, les problèmes concernant l'installation de tous ces packages sur les iDevices sous iOS 10 et jailbreakés ont été résolus.

En plus de résoudre les problèmes, la mise à jour de l'application Cydia améliore considérablement les performances de l'application, nous installerons donc tous les packages beaucoup plus rapidement. L’amélioration n’est pas colossale, mais vous constaterez une diminution substantielle du temps passé à mettre à jour les sources et à installer les packages dans vos terminaux.

Pour le moment, vous ne pouvez installer que la version 1.1.30 de l'application Cydia, mais elle contient également toutes les modifications dont nous disposons dans la 1.1.29. La mise à jour de l'application Cydia peut également être effectuée à partir de l'application Cydia installée sur nos iPhones, iPads et iPod Touch, et ci-dessous vous pouvez voir toutes les nouveautés qu'elle apporte.

Cydia 1.1.29 est une version performante


Évitez de télécharger des traductions qui 404

Bien que je pense actuellement qu'il n'y a pas un seul référentiel dans la nature qui utilise cette fonctionnalité (ce qui me rend triste, mais comme : ce n'est pas comme si mon référentiel le faisait actuellement non plus :/), Cydia prend en charge les noms et descriptions de packages pour être traduit dans différentes langues.

Comme certaines personnes l'ont remarqué, les nouvelles versions 64 bits de Cydia faisaient tout cela encore plus « correctement » et essayaient de télécharger de nombreux fichiers de traduction, ce qui ralentissait les actualisations. Comme on pouvait s'y attendre, quelqu'un s'est demandé "pourquoi ne pas simplement supprimer cette fonctionnalité", ce qui semblait être une très mauvaise chose à faire :/.

Au lieu de cela, j'ai corrigé une fonctionnalité d'APT qui est censée empêcher le téléchargement des fichiers "facultatifs" pour fonctionner avec des référentiels qui n'ont pas la liste des fichiers qui seraient normalement dans le fichier Release (le comportement dans ce cas est le suivant). ne les télécharge pas : si vous disposez d'un tel référentiel et que vous souhaitez des traductions, corrigez votre fichier Release).

Chargement correct du catalogue de packages

Saviez-vous que, contrairement à std :: vector ou NSMutableArray, lorsque CFMutableArray dit « capacité », cela ne veut pas dire « c'est la quantité qui peut être stockée avant la prochaine allocation », mais plutôt « c'est la quantité qui peut être stockée dans ce tableau : il ne deviendra jamais plus grand » ? Eh bien, je ne l'ai pas fait :(. Apparemment, Microsoft non plus ;P. En travaillant sur le numéro suivant, j'ai découvert celui-ci et j'ai été assez choqué.

Cela pourrait expliquer certaines des choses les plus étranges que les gens ont signalées récemment lors de l'utilisation de Cydia : des cas où certains packages apparaissent, mais d'autres non, que personne ne pourrait reproduire et qui semblent simplement disparaître : lorsque Cydia démarre sans catalogue, il serait définissez sa capacité sur 16 1024 packages, puis augmentez-la de XNUMX XNUMX à chaque actualisation... mais il existe plusieurs dizaines de milliers de packages uniquement dans les référentiels par défaut, il faudra donc un certain temps à Cydia pour "s'échauffer" et voir tous eux, après quoi ça fonctionnerait :/.

Là encore, ce n'est peut-être pas le cas... c'est un comportement tellement étrange pour un tableau... il prétend même que l'ajout à la fin d'un tableau à pleine capacité limitée entraîne un "comportement non défini". Certaines personnes rapportent que le tableau s'agrandit ? Honnêtement : je ne l'ai pas testé, car j'ai trouvé cela en déterminant que je devais de toute façon passer à quelque chose qui ressemble davantage à std :: vector. Je pense que c'est une anecdote vraiment intéressante, cependant, pour ceux d'entre nous qui prennent la peine de lire les notes de version avancées d'une version de performance de Cydia ;P.

Améliorer les performances de tri du catalogue de packages

Cydia a le défi fou de devoir faire localement sur votre appareil ce qu'une solution centralisée, organisée et philosophiquement ennuyeuse (je te serre le poing, Apple !) ferait sur un serveur : mettre à jour une liste de plusieurs dizaines de milliers de packages. , triant le résultat non seulement par ordre alphabétique, mais également en fonction des paramètres régionaux attendus par les utilisateurs.

J'ai conçu pour Cydia ce que je pense être une solution assez épique à ce problème, impliquant l'adaptation du tri par base pour travailler sur des chaînes en utilisant des transformations folles, en effectuant plusieurs passes suivies d'un tri par insertion "correction". C'est le genre d'algorithme qui démontre vraiment pourquoi tous les développeurs devraient avoir une solide expérience en algorithme, car un jour vous en aurez besoin. Je donne des conférences sur cet algorithme de tri dans des cours d'informatique de niveau collégial ; P.

Cependant, il a fallu un certain « calibrage » au fil des ans, et apparemment il n'était pas à la hauteur du défi de trier le chinois (traditionnel) par « ordre des traits » ; cet ordre était une fonctionnalité très demandée par les utilisateurs chinois et a été ajoutée à Cydia à partir d'iOS 8, mais les passes de tri par base de mon algorithme ont nécessité trop de corrections ultérieures à l'aide du tri par insertion. Il y a encore quelques améliorations à apporter ici dans la passe radix, mais lorsque ce problème de performances a été signalé hier, j'avais une meilleure solution.

En fait, j'avais déjà conçu l'ordre de tri de Cydia pour pouvoir tirer parti d'un "cache de tri", en réutilisant les résultats des exécutions précédentes de Cydia pour être "assez proche" au lieu d'utiliser des tris par base. Ceci, combiné à une amélioration algorithmique des passes de tri par insertion, combinée au déplacement d'une plus grande partie de l'algorithme vers C++ (je regrette profondément la quantité d'Objective-C et même de CoreFoundation dans Cydia...), a considérablement amélioré les performances de chargement de Cydia. , du moins pour les Chinois.