- Si j'en crois la doc, les threads sont lightweight et n'utilisent donc pas les multi-processeurs. Est-ce exact ?
Pas tout à fait. Il y a deux implémentations pour les threads: une pour le bytecode avec des threads usermode (lightweight comme tu dis) et une pour le code natif qui utilise les pthreads du système. Mais dans le cas des pthreads il y a un lock global qui assure qu'il n'y a qu'un seul thread caml qui s'exécute à la fois (comme en python).
- Toujours en mattant la doc, le chargement dynamique de bibliothèques ne marche qu'en mode bytecode, et pas en mode natif. Là encore, est-ce que je me trompe ?
En effet. Il y a un patch qui traîne sur le net pour permettre plus ou moins ça il me semble.
Mais bon ces 2 limitations sont là "by design" et ce n'est pas près de changer AMHA. Par exemple le runtime n'est pas concurrent parce que cela permet des allocations mémoire trés rapides et qu'un GC concurrent est beaucoup plus complexe.
Parce que si je ne me trompe pas, ça fait quand même 2 trucs assez indispensables qui manquent.
rien n'est indispensable :) OCaml n'est pas le langage magique qui permet tout facilement et sûrement. Il est mieux adapté pour certaines tâches que pour d'autres. Le cas typique c'est un (assez gros) programme qui fait une tâche bien définie sans avoir besoin de dizaines de bibliothèques, par exemple un compilateur.
Ensuite pour ce qui est de "l'industrie", ça ne change rien, c'est toujours la même question: savoir si le langage est adapté à ce qu'il faut faire. Dans certains domaines ça l'est tout à fait.
[^] # Re: Bémol !?
Posté par Vivi . En réponse à la dépêche OCaml summer project. Évalué à 2.
Pas tout à fait. Il y a deux implémentations pour les threads: une pour le bytecode avec des threads usermode (lightweight comme tu dis) et une pour le code natif qui utilise les pthreads du système. Mais dans le cas des pthreads il y a un lock global qui assure qu'il n'y a qu'un seul thread caml qui s'exécute à la fois (comme en python).
- Toujours en mattant la doc, le chargement dynamique de bibliothèques ne marche qu'en mode bytecode, et pas en mode natif. Là encore, est-ce que je me trompe ?
En effet. Il y a un patch qui traîne sur le net pour permettre plus ou moins ça il me semble.
Mais bon ces 2 limitations sont là "by design" et ce n'est pas près de changer AMHA. Par exemple le runtime n'est pas concurrent parce que cela permet des allocations mémoire trés rapides et qu'un GC concurrent est beaucoup plus complexe.
Parce que si je ne me trompe pas, ça fait quand même 2 trucs assez indispensables qui manquent.
rien n'est indispensable :) OCaml n'est pas le langage magique qui permet tout facilement et sûrement. Il est mieux adapté pour certaines tâches que pour d'autres. Le cas typique c'est un (assez gros) programme qui fait une tâche bien définie sans avoir besoin de dizaines de bibliothèques, par exemple un compilateur.
Ensuite pour ce qui est de "l'industrie", ça ne change rien, c'est toujours la même question: savoir si le langage est adapté à ce qu'il faut faire. Dans certains domaines ça l'est tout à fait.