Vue normale

Reçu — 9 juillet 2026 Next - Articles gratuits

macOS 27 donne un coup de fouet à sa virtualisation

9 juillet 2026 à 14:38
Le macOS dans le macOS dans le macOS
macOS 27 donne un coup de fouet à sa virtualisation

Le prochain macOS, alias Golden Gate, fournira plusieurs améliorations à sa virtualisation. Parmi elles, le très demandé accès aux périphériques USB ou encore les images disque en calques.

macOS expose aujourd’hui deux couches de virtualisation. La couche basse, Hypervisor.framework, donne un accès quasi brut aux extensions de virtualisation matérielle du processeur (VT-x sur Intel, EL2 sur Apple Silicon) sans imposer de modèle de périphériques. Tout éditeur tiers peut choisir de construire une solution de virtualisation basée sur cet hyperviseur.

La couche haute, Virtualization.framework, fournit au contraire un ensemble complet et prêt à l’emploi de périphériques virtuels (disque, réseau, GPU paravirtualisé, etc.), pensé pour des applications qui veulent créer rapidement des VM macOS ou Linux sans réinventer tout le modèle matériel.

C’est sur cette seconde couche que les améliorations ont été annoncées durant une session technique de la dernière WWDC, même si ces informations étaient restées discrètes jusqu’ici. Les annonces autour de l’intelligence artificielle ont largement éclipsé le reste.

Enfin un accès aux périphériques USB

C’est la fonctionnalité la plus demandée par les utilisateurs de machines virtuelles. La prise en charge du stockage externe et d’autres périphériques USB connectés au Mac hôte fonctionne de façon simple : lorsqu’un périphérique compatible est branché pendant qu’une VM tourne, une icône apparaît dans la barre des menus pour autoriser l’affectation à la machine virtuelle. Si cette approbation est donnée, le périphérique devient accessible dans la VM presque immédiatement. Un fonctionnement que l’on retrouve dans de nombreux clients de virtualisation, comme Fusion et Workstation chez VMware ou VirtualBox chez Oracle, et que l’on nomme communément le « passthrough USB ».

Côté API, Apple expose cette fonctionnalité via le framework Accessory Access. Ce dernier permet de faire transiter directement des accessoires USB vers les machines virtuelles et donne à l’utilisateur un contrôle explicite sur les périphériques physiques transmis, comme des disques externes. L’entitlement associé est com.apple.developer.accessory-access.usb. Un entitlement est une paire clé-valeur signée numériquement qui accorde à une application une autorisation spécifique au-delà de ce que permet par défaut la sandbox de macOS ou iOS, comme l’explique Apple dans sa documentation.

Ce fonctionnement répond à un principe de moindre privilège très classique : par défaut, une application sandboxée (confinée) n’a accès qu’à son propre conteneur et ne peut pas, par exemple, lire des fichiers arbitraires sur le disque, ouvrir une connexion réseau brute ou accéder à des périphériques matériels.

Des images disque en calques

Voilà un autre changement important dans macOS 27. Jusqu’à présent, chaque VM reposait sur une image disque unique et autonome, au format brut (raw) ou ASIF (Apple Sparse Image Format, inauguré avec macOS 26). L’introduction de DiskImageKit change la donne car il permet de construire une pile d’images où les écritures vont dans une couche de superposition (overlay) sans modifier la couche de base. Il prend également en charge les images disque brutes.

Comme l’indique Apple, l’architecture distingue plusieurs types de couches : la couche de base peut être dans n’importe quel format pris en charge par DiskImageKit, tandis que les couches supérieures sont toujours au format ASIF et peuvent être soit des couches de cache, soit des couches de superposition. Une couche de cache fait ce qu’est toujours censé faire un cache : améliorer les performances. Dans le cas présent, elles peuvent être mises en place lorsque les couches sous-jacentes résident sur un support lent comme un système de fichiers réseau distant, en stockant une copie des données lues depuis les couches inférieures.

Concrètement, la couche de base contient un socle en lecture seule – comme le volume Système de macOS – qui peut être partagé entre plusieurs VM et stocké sur un support plus lent comme un disque dur. Au-dessus se greffe une couche de superposition en lecture-écriture qui stocke les fichiers additionnels et les modifications apportées aux données de la couche de base. On est clairement dans le fonctionnement général des instantanés (snapshots).

Ainsi, au lieu d’avoir plusieurs gros fichiers de 60 Go, on peut n’avoir qu’une seule base de 50 Go et autant de couches de superposition que nécessaire pour gérer les modifications, comme le pointe notamment MacGeneration. Un fonctionnement plus souple qui peut entrainer des gains conséquents sur le stockage. À noter que sur le site Eclectic Light, certains commentaires soulignent des carences dans l’implémentation actuelle. Par exemple, l’absence de mécanisme pour aplatir (« flatten ») les couches de superposition et les fusionner dans l’image de base.

Du provisionnage automatique pour les invités

Depuis que macOS fournit des capacités de virtualisation, la création du compte administrateur exige de passer manuellement par l’assistant de configuration à chaque nouvelle VM. Mais la nouvelle API VZMacGuestProvisioningOptions permet de définir des identifiants et d’activer des fonctions comme la connexion automatique et SSH dès le premier démarrage.

Le mécanisme technique consiste à construire un objet VZMacGuestProvisioningOptions, à l’attacher à un objet VZMacOSVirtualMachineStartOptions via sa propriété de « guest provisioning » (provisionnage d’invité), puis à démarrer la VM avec ces options. Au premier démarrage, ces paramètres sont automatiquement transmis à l’assistant de configuration, qui crée l’utilisateur avec les identifiants indiqués et active la connexion automatique et l’accès distant si demandé. D’après la documentation d’Apple, cela inclut le nom complet, le nom court, le mot de passe, l’activation ou non de la connexion automatique au démarrage, et l’activation de SSH. Cela ne fonctionne toutefois qu’au premier démarrage de la machine virtuelle.

Autres capacités

Plusieurs autres apports sont mentionnés dans la vidéo dédiée. Par exemple, il est possible désormais de configurer des topologies réseau complexes en intégrant le framework vmnet à Virtualization, pour définir précisément comment plusieurs machines virtuelles interagissent entre elles et avec l’hôte, avec également de la redirection de port.

On note aussi le framework Virtualization, qui permet d’implémenter ses propres périphériques Virtio (protocole standard de l’industrie pour la paravirtualisation), autorisant une communication personnalisée entre l’application hôte et les VM Linux. L’ajout devrait se montrer particulièrement utile pour les scénarios sensibles aux performances, nécessitant une communication à faible latence et fort débit, via la nouvelle classe VZCustomVirtioDevice. Ce point est abordé dans la dernière partie de la vidéo d’Apple.

Ces nouveautés requièrent la préversion de macOS 27 pour les tester. Le système n’est pour l’instant disponible qu’en bêta pour les développeurs (la troisième est sortie ce 6 juillet), mais la bêta publique est prévue pour ce mois-ci, probablement aux alentours du 20 juillet, en même temps que la bêta 4 pour les développeurs.

Microsoft publie TypeScript 7.0 avec des hausses impressionnantes de performances

9 juillet 2026 à 10:29
Ah oui quand même
Microsoft publie TypeScript 7.0 avec des hausses impressionnantes de performances

La nouvelle mouture de TypeScript est annoncée avec des performances largement revues à la hausse. L’essentiel des nouveautés se concentre sur ces gains, le langage n’apportant rien de vraiment neuf sur les types et la syntaxe.

Ce n’est pas tous les jours que l’on peut annoncer des hausses majeures de performances sur des technologies. Microsoft vient pourtant de lancer la version 7.0 de son langage open source TypeScript, un surensemble de JavaScript sous licence Apache 2.0. Depuis sa sortie, le langage a rencontré un grand succès.

Hop, une division par 10

La plus grosse nouveauté de TypeScript 7.0 est son compilateur. Ce dernier était lui-même compilé en TypeScript/JavaScript jusqu’ici, mais c’est fini : le nouveau est écrit en Go. Le code produit est strictement le même, mais avec une différence de taille : le temps de compilation est en moyenne divisé par 10. En fonction des cas, ce facteur alterne entre 8 et 12, le gain de temps étant dans tous les cas énorme.

Ce gain de performances rejaillit sous de nombreux aspects. La compilation complète bien sûr, en passant de plusieurs dizaines de secondes à quelques secondes, mais aussi une réaction beaucoup plus rapide de tsc –watch, l’accélération de l’analyse des types ou encore une consommation de mémoire vive revue à la baisse, le plus souvent entre 5 et 25 % selon les cas.

Source : Microsoft

Microsoft insiste également sur la solidité de cette version, car elle a bénéficié d’une année de tests. Ces derniers ont aussi bien lieu avec d’autres équipes de Microsoft (Loop, Office, PowerBI, Teams ou encore Xbox) qu’avec des entreprises tierces : Bloomberg, Canva, Figma, Google, Lattice, Linear, Miro, Notion, Sentry, Slack, Vanta, Vercel, VoidZero et autres. Les retours auraient été unanimes : des gains de temps conséquents et des économies de ressources.

La nouvelle version a en outre des conséquences positives sur Visual Studio Code. Dans un test, Microsoft a pu mesurer que le temps passé à ouvrir un fichier avec une erreur dans Visual Studio Code était réduit à 1,3 seconde, contre 17,5 auparavant, soit une division par 13. L’autocomplétion est aussi plus rapide, la fonction « Go to Definition » est presque instantanée, le renommage va plus vite, les diagnostics apparaissent plus rapidement, etc. Microsoft ajoute que plus les monorepos sont volumineux, plus la différence se sent. Une bonne part de ces améliorations vient d’une parallélisation beaucoup plus importante des instructions.

Une transition « transparente »

On aurait pu s’attendre à de nouvelles fonctions, des types et autres syntaxes, mais cette version 7.0 ne change pratiquement rien de ce côté. La plus grosse partie du travail s’étant concentrée sur les performances, TypeScript 7 reste donc compatible avec la version 6. La migration se veut la plus transparente possible, la nouvelle version n’étant livrée avec aucune API. Celle-ci arrivera avec TypeScript 7.1 mais, en attendant, Microsoft a fait le choix « de garantir que TypeScript puisse être exécuté parallèlement à TypeScript 6.0 pour les utilitaires nécessitant encore un certain accès programmatique au compilateur (comme typescript-eslint) ».

L’éditeur ajoute que dans le cadre de cette transition, un paquet de compatibilité a été publié. Il fournit un exécutable nommé pour que les développeurs puissent installer TypeScript 7.0 (qui publie son propre binaire) côte à côte, sans conflit de nommage. « Le nouveau package réexporte également l’API TypeScript 6.0, afin que vous puissiez l’utiliser pour TypeScript 7, tandis que d’autres outils peuvent continuer à s’appuyer sur la version 6.0 », précise Microsoft.

❌