Le futur de Swift se dessine à la veille de la WWDC23

Florent Morin |

Juste avant la sortie de Swift 5.8, le fameux site Swift Package Index a pu bénéficier du soutien officiel d’Apple, ce qui représente une avancée significative pour la communauté. En parallèle de ce petit événement au sein du cercle des développeurs, les premières nouveautés de Swift 5.9 commencent à faire leur apparition. C’est donc le bon moment pour faire un premier tour d’horizon de ce qui nous attend en juin.

Swift Package Index : un référentiel majeur

Avant l’arrivée des paquets Swift (des modules réutilisables dans les projets d'applications) et du gestionnaire de dépendances correspondant, les développeurs utilisaient majoritairement CocoaPods. Ce dernier avait l’avantage de fournir un référentiel de plus de 95 000 Pods, qui sont l’équivalent des paquets Swift. À l’inverse, pour trouver un paquet Swift, il fallait — et il faut encore souvent — se rendre sur un dépôt de code source comme GitHub.

L'accueil de Swift Package Index

avatar Lonesome Boy | 

@La rédac

Maintenant que Swift est bien plus mature, ce serait bien d’avoir des benchmarks de perfs de Swift par rapport à Objective-C, C++ et C (ou autre). Un petit article? 🙂

avatar Florent Morin | 

@Lonesome Boy

Promis. Avec Swift 6.

avatar Lonesome Boy | 

@FloMo

Gé-nial! À ceci près qu’il va falloir que je prenne mon mal en patience 😄
Ce serait intéressant de comparer (aussi) les perfs sur des tâches parallélisées, surtout que Swift intègre directement ça dans le langage, maintenant.

J’ai hâte!

avatar Florent Morin | 

@Lonesome Boy

Je pousse un peu tout ça en ce moment à titre pro. Très intéressant.

avatar Lonesome Boy | 

@FloMo

Cool!
Et il va s’en dire que pour comparer correctement, il faudrait utiliser des structures s’appuyant sur des protocoles là où d’autres langages imposent d’utiliser des objets s’appuyant sur des interfaces / protocoles, comme Objevtive-C, non?

avatar Florent Morin | 

Tout est dans la nuance. L'idée est plutôt de se poser la question : "quel effort de développement pour quel résultat ?".

Ce que je remarque aujourd'hui, c'est que c'est beaucoup plus simple d'avoir de très bonnes performances. Ce n'est pas la solution la plus performante dans l'absolu (même si c'est possible avec un effort sur le code) mais c'est la solution la plus performante dans un contexte réaliste (maintenable). Avec une marge de progression qui peut être automatiquement comblée par les évolutions du runtime Swift.

Le code est également pensé complètement différemment car les leviers en termes de performances ne sont plus les mêmes. Bref. Un sujet à part entière.

avatar Lonesome Boy | 

@FloMo

Merci pour ces réponses!
C’est ça! Certains essaient de comparer plus ou moins le même code exécuté par différents langages, ce qui n’a pas beaucoup de sens: le but pour moi est plutôt de comparer en termes de performances comment on arrive au même résultat en s’appuyant sur la philosophie et les forces de chaque langage. En restant « réaliste » comme tu le précises sur l’effort de développement nécessaire.

Bref, vivement l’article!

avatar fornorst | 

@Lonesome Boy

Plus que des performances brutes, ce qu’on attend d’un language moderne c’est de l’expressivité et de la facilité de développement.
Swift n’a, à ma connaissance, jamais été pensé pour remplacer C/C++ (comme Rust ou Go par exemple) mais pour simplifier le développement sur les OS d’Apple

avatar Lonesome Boy | 

@fornorst

C’est vrai, mais:
- Il par contre été conçu pour remplacer Objective-C: ça a du sens de comparer
- Avec son orientation protocole plutôt qu’objet, et son typage fort, on peut s’attendre à de bonnes performances, pas aussi bonnes que le C, mais meilleures qu’avec un langage s’appuyant beaucoup plus abondamment sur un runtime

avatar Florent Morin | 

C'est l'objectif de Swift 6 : avoir des performances comparables au C. C'est d'ailleurs déjà le cas pour certains composants bas niveau de iOS. Un peu comme Rust.

La nuance est que Swift n'aura pas automatiquement des performances comparables au C, mais - moyennant efforts - ce sera possible en poussant le langage au maximum de ses possibilités.
Par défaut, c'est simple et "suffisamment" performant. Mais si on veut aller plus loin, plus bas niveau, on peut.

avatar fleeBubl | 

Sautez dans le Protocol Oriented Programming
Et plus avant, pour faciliter sans trop en laisser

avatar raoolito | 

sans compter que le logo de swift est dans les visuels de la wwdc2023 ;)

avatar QuentinRth | 

Merci pour ce genre d'articles qui font surement cliquer peu de visiteurs du site mais qui sont très intéressant pour ceux que ça intéresse.

avatar Florent Morin | 

@QuentinRth

👍

avatar macbook60 | 

@FloMo

Pouvez vous me dire à quoi correspond : expected ‘}’ in struct
Closure containing a declaration cannot be used with result builder ‘viewBuilder’
Merci

avatar Florent Morin | 

@macbook60

Il faudrait voir le code (via Gist par exemple) mais ça ressemble au code d’un viewBuilder, probablement le code principal d’une vue, qui renvoie autre chose qu’une vue.

Je dis ça de manière totalement approximative.

avatar macbook60 | 

@FloMo

Merci c’est sur swift playground sur iPad

CONNEXION UTILISATEUR