Avec le système de modules, les types ont une portée limitée, ce qui devrait laisser pas mal de libertés dans ce domaine: pas de contraintes de compatibilité binaire, et on peut faire une analyse du flot d'exécution.
Dans l'idée de modifier aggressivement la gestion de la mémoire à partir d'une analyse statique, il y a ce papier: http://citeseer.ist.psu.edu/reynolds02separation.html(...) (et aussi http://pag.csail.mit.edu/reading-group/tofte94implementation.pdf).(...)
Il mentionne la possibilité de passer la gestion mémoire en statique au lieu d'utiliser un ramasse miettes, ce qui à première vue est incompatible avec les langages fonctionnels. On gagne (un peu) en temps d'exécution du ramasse-miettes, et surtout on utilise moins de place, et on peut mieux tirer parti du cache processeur.
Dans le même genre on parle d'étendre le système de types pour y intégrer une information d'état récupérée par analyse du flot - par exemple marquer qu'une fonction prend des types en accès-concurrent et renvoie le même type en lecture-seule.
Plus concrètement, on peut améliorer certaines structures de données existantes dans des cas précis. Récemment on a une implémentation du module List (hyper utilisé) qui utilise des VListes: http://article.gmane.org/gmane.comp.lang.ocaml.lib.devel/1866(...)
La performance mémoire est meilleure puisque l'on utilise des blocs adjacents de taille importante (la version originale utilisait huit blocs adjacents seulement). La performance en caclul est meilleure aussi puisqu'on fait disparaitre la distinction entre liste et tableau!
[^] # Re: Lent ?
Posté par Tobu . En réponse à la dépêche Présentation d'OCaml à Rennes le jeudi 7 avril, 20h, MCE, 48 bd Magenta. Évalué à 2.
Avec le système de modules, les types ont une portée limitée, ce qui devrait laisser pas mal de libertés dans ce domaine: pas de contraintes de compatibilité binaire, et on peut faire une analyse du flot d'exécution.
Dans l'idée de modifier aggressivement la gestion de la mémoire à partir d'une analyse statique, il y a ce papier: http://citeseer.ist.psu.edu/reynolds02separation.html(...) (et aussi http://pag.csail.mit.edu/reading-group/tofte94implementation.pdf).(...)
Il mentionne la possibilité de passer la gestion mémoire en statique au lieu d'utiliser un ramasse miettes, ce qui à première vue est incompatible avec les langages fonctionnels. On gagne (un peu) en temps d'exécution du ramasse-miettes, et surtout on utilise moins de place, et on peut mieux tirer parti du cache processeur.
Dans le même genre on parle d'étendre le système de types pour y intégrer une information d'état récupérée par analyse du flot - par exemple marquer qu'une fonction prend des types en accès-concurrent et renvoie le même type en lecture-seule.
Plus concrètement, on peut améliorer certaines structures de données existantes dans des cas précis. Récemment on a une implémentation du module List (hyper utilisé) qui utilise des VListes: http://article.gmane.org/gmane.comp.lang.ocaml.lib.devel/1866(...)
La performance mémoire est meilleure puisque l'on utilise des blocs adjacents de taille importante (la version originale utilisait huit blocs adjacents seulement). La performance en caclul est meilleure aussi puisqu'on fait disparaitre la distinction entre liste et tableau!