2 points par GN⁺ 2026-02-01 | Aucun commentaire pour le moment. | Partager sur WhatsApp
  • Rust et Swift partagent tous deux un système de types puissant et des caractéristiques des langages fonctionnels, et peuvent être compilés en code natif et en WASM via un compilateur basé sur LLVM
  • Rust a commencé comme un langage système de bas niveau avant d’offrir des fonctionnalités de haut niveau, tandis que Swift a commencé comme un langage de haut niveau tout en autorisant l’accès au bas niveau
  • Swift repose par défaut sur les types valeur et le Copy-on-Write, et met en œuvre des concepts similaires au modèle de propriété de Rust avec une syntaxe plus simple
  • Pour les types optionnels, la gestion des erreurs, les enum récursifs, etc., Swift enveloppe des concepts de Rust dans une syntaxe familière de la famille du C, offrant davantage de confort aux développeurs
  • Swift est en train de devenir un langage cross-platform et peut aussi être utilisé sous Windows, Linux et dans des environnements embarqués, ce qui en fait une alternative montante à Rust

Similarités et différences entre Rust et Swift

  • Les deux langages incluent des caractéristiques des langages fonctionnels (enum tagués, expressions match/switch, génériques, fonctions de première classe)
    • Rust fournit le comptage de références et le contrôle de la copie via Rc, Arc, Cow
    • Swift utilise par défaut les types valeur et le Copy-on-Write, et prend aussi en charge si nécessaire le déplacement de propriété (move) et l’accès via des pointeurs unsafe
  • Les deux langages utilisent un compilateur basé sur LLVM, ce qui permet de compiler en code natif et en WASM

Modèle mémoire : Rust descend du bas vers le haut, Swift monte du haut vers le bas

  • Rust a commencé comme un langage système de bas niveau avant d’ajouter des fonctionnalités de haut niveau
  • Swift a commencé comme un langage de haut niveau tout en permettant un accès bas niveau quand c’est nécessaire
  • Le modèle mémoire par défaut de Swift repose sur des types valeur en Copy-on-Write, similaires au Cow<> de Rust
    • Rust est rapide par défaut, mais il faut gérer explicitement Cow<> lorsqu’on l’utilise
    • Swift est simple par défaut, et permet de choisir le déplacement plutôt que la copie

L’approche syntaxique de Swift : des concepts de Rust masqués par un style C

  • L’instruction switch de Swift assure en pratique les mêmes fonctions que l’expression match de Rust
    • Elle prend en charge le pattern matching et n’a pas de fallthrough
  • Les enum de Swift peuvent inclure directement des méthodes, ce qui permet un usage plus orienté objet que dans Rust
  • Les types optionnels (T?) reposent sur le même concept que Option<T> en Rust, et nil correspond à None
    • En Swift, le déballage sûr est possible avec la syntaxe if let val
  • La gestion des erreurs ressemble au type Result de Rust, et do-catch ainsi que try en Swift sont la même structure enveloppée dans une syntaxe plus familière

Différences dans le fonctionnement du compilateur

  • Le compilateur Rust met l’accent sur la détection des problèmes et les avertissements et, par exemple, impose l’usage de Box<> lors de la définition d’un enum récursif
  • Swift gère les enum récursifs avec le seul mot-clé indirect, le compilateur automatisant la gestion interne des pointeurs
  • Swift automatise davantage de traitements que Rust, ce qui réduit le besoin pour les développeurs de manipuler directement la structure mémoire

Praticité et extensibilité du langage Swift

  • Swift a été conçu pour remplacer Objective-C, avec l’ambition d’être un langage plus vaste et plus pratique
    • Il intègre de nombreuses fonctionnalités comme classes/héritage, async-await, actors, propriétés lazy, property wrappers, Result Builders, etc.
  • Sa conception de « progressive disclosure » fait apparaître davantage de fonctionnalités au fur et à mesure de l’apprentissage

Équilibre entre confort et performance

  • Swift est un langage facile à prendre en main et productif, tandis que Rust est un langage rapide par défaut
    • Rust : « la vitesse par défaut » ; Swift : « le confort par défaut »
  • Rust est adapté aux systèmes, à l’embarqué, aux compilateurs et aux moteurs de navigateur
  • Swift convient aux UI, aux serveurs et à certains composants de systèmes d’exploitation, et les domaines d’usage des deux langages se recoupent de plus en plus

L’expansion cross-platform de Swift

  • Swift n’est plus un langage réservé à Apple
    • Windows : The Browser Company l’utilise pour le partage de code du navigateur Arc
    • Linux : Apple prend en charge Swift on Server et sponsorise des conférences
    • Embedded Swift : utilisé sur de petits appareils comme le Panic Playdate
  • Le blog officiel de Swift présente des projets Windows, Embedded, Linux(Gnome), Playdate
  • Swift améliore aussi l’expérience de développement hors de Xcode avec une extension VSCode, l’open source de son LSP, etc.

Limites de Swift et position actuelle

  • Le temps de compilation est lent, comme pour Rust
  • Le feature creep a fait grossir le langage, et certaines syntaxes restent peu familières
  • L’écosystème de packages est moins mature que celui de Rust
  • Mais Swift dispose déjà de la stabilité ABI, du comptage automatique des références (ARC), de mécanismes de choix de propriété, et de packages compatibles Linux, ce qui en fait un langage cross-platform
  • Swift s’impose comme une alternative plus pratique à Rust, non pas comme une promesse pour l’avenir, mais comme une option disponible dès aujourd’hui

Aucun commentaire pour le moment.

Aucun commentaire pour le moment.