D/Objective-C
Note : ce projet est basé sur une version plutôt ancienne du compilateur DMD et n’est plus tenue à jour. Voir la version rafraichie par Jacob Carlborg pour quelque chose de plus à jour qui supporte Cocoa 64 bits.
Téléchargement
- DMD/Objective-C Alpha 1 (3,26 Mo)
- Compilateur D/Objective-C, 1 juin 2011. Basé sur DMD 2.053.
- Chocolate Alpha 1 (52 Ko)
- Exemple d’application Cocoa écrite en D/Objective-C, 1 juin 2011. Nécéssite D for Xcode.
Vous pouvez suivre le dévelopmment de ce projet à partir de son dépôt Git sur Github.
Introduction
Ce projet est une extension du language de programmation D ajoutant le support pour les objets Objective-C. DMD/Objective-C est une version modifié de DMD, le compilateur de référence pour le D, qui ajoute ces fonctionnalisées. Le but final est de ramener ces ajouts dans le tronc principal de DMD, ce qui devrait être possible une fois que l’implémentation sera suffisamment solide.
Avec D/Objective-C, un programme D peut interagir directement avec des objets Objective-C presque comme s’il s’agissait d’objet D réguliers. Tout ce qu’il faut faire c’est de fournir une déclaration pour les classes que l’ont veut utiliser.
En utilisant des objets Objective-C ou en dérivant de nouvelles classes, le compilateur D émet du code compilé similaire à celui qu’émettrait un compilateur Objective-C. Il n’y a généralement pas de pénalité de performance quand on appelle du code Objective-C à partir du D ou en dérivant des classes Objective-C en D.
À l’heure actuelle, D/Objective-C se limite à supporter la runtime Objective-C d’Apple pour Mac OS X.
Comment l’utiliser
Le lien de téléchargement ci-haut contient un dossier ayant la même structure que le compilateur officiel DMD, donc vous devriez être en mesure de remplacer n’importe quelle installation de DMD avec celle-ci. Il ne contient cependant pas de support pour les plateformes autres que Mac OS X, et il manque aussi quelques outils propriétaires de Digital Mars; si vous en avez besoin, vous les trouverez dans la distribution officielle de DMD.
Si vous avez installé [D pour Xcode], vous pouvez simplement remplacer le dossier « dmd2 » qui se trouve dans le dossier « /Bibliothèque/Compilers » avec le téléchargement ci-haut (renommez le dossier « dmd2 ») pour l’utiliser avec Xcode.
Encore à faire
La génération du code, tout particulièrement en ce qui trait à placer les bons symboles dans les bons segments, demande encore un peu de travail. En conséquence, le linker peut parfois générer des erreurs. Dans le projet d’exemple Chocolate, un fichier de code C a été ajouté au projet en tant que dernier fichier à compiler et à linker pour contourner le problème.
Il n’y a pas de déclaration pour les classes de Cocoa de fourni en ce moment, vous devrez écrire les vôtres. Chocolate contient cependant une déclaration incomplète de quelque classes de Cocoa.
Il n’y a pas de support pour le garbage collector. Ceci est prévu pour le futur, mais en attendant vous devrez utiliser la gestion manuelle de la mémoire (
retain
/release
/autorelease
) pour les objets Objective-C.Certains autre choses. Recherchez « unimplemented » dans la section sur la syntaxe pour les détails.
Historique
DMD/Objective-C Alpha 1 (2011-06-01)
- Première publication
Pré-historique
Ce projet a été précédé par un autre qui consistait à créer [un pont] sans l’aide du compilateur. L’approche a ensuite été abandonnée en faveur de modifications au compilateur. This project was preceded by another one which consisted of creating a bridge without any help from the compiler. The approach was later [abandoned in favor of hacking the compiler][abandoned].
Licence
DMD/Objective-C demeure sous la même licence que DMD. La licence du front end est GPL/Artistic alors que le backend est sous une licence propriétaire. La majeure partie de la librarie du runtime et Phobos sont la license Boost. Voir le fichier licence inclus dans la distribution pour les détails.
DMD/Objective-C est dérivé de DMD Copyright © 1999-2011 par Digital Mars écrit par Walter Bright. Distribué avec permission.