title: Ocsigen
text: # Ocsigen
  
  Ocsigen est un outil de développement web et mobile, développé par le laboratoire français IRIF et par la société Be Sport SAS, utilisant des solutions nouvelles issues de la recherche sur les langages de programmation.
  
  Il se compose :
  
  * d'un compilateur du langage OCaml vers le langage Javascript, js_of_ocaml. Il permet d'exécuter dans un navigateur des programmes écrits en OCaml, de manière portable et sans rien devoir installer. Le compilateur prend comme langage source le bytecode OCaml, c'est-à-dire un programme OCaml déjà compilé. Cette technique rend l'utilisation du compilateur très simple, et permet même d'utiliser des bibliothèques dont le code source n'est pas disponible.
  * d'une extension multi-tiers du langage OCaml, qui permet de programmer une application client-serveur comme un seul programme avec des annotations.
  * d'un module appelé Eliom pour écrire des applications Web client/serveur (ou serveur seulement) en utilisant des concepts de haut niveau. Le but est de programmer en très peu de lignes des comportements complexes, et d'assurer une garantie de bon fonctionnement grâce au typage statique. En particulier, on peut choisir un mode de validation statique des pages qui rend quasiment impossible la génération de pages qui ne respectent pas les recommandations du W3C. Ceci est obtenu en exploitant de manière poussée le puissant système de types du langage OCaml. L'ensemble de l'application est écrite en OCaml, et certaines parties sont compilées vers Javascript pour être exécutées dans un navigateur. Eliom prend en charge automatiquement la communication entre le serveur et le client. Le programme client peut utiliser des valeurs définies sur le serveur et l'échange est facilité par le fait que les deux utilisent le même langage, et donc les mêmes types de données.
  * d'une bibliothèque de threads coopératifs lwt, qui permet de programmer des comportements concurrents avec peu de risques de blocage ou d'accès concurrents à la mémoire partagée (coopération entre les threads à des endroits bien identifiés). Elle utilise un style monadique, ce qui rend son utilisation assez transparente.
  * d'un serveur web complet et extensible. Il est doté de la plupart des fonctionnalités utiles, notamment un module pour exécuter des CGI, un reverse proxy (qui rend possible l'utilisation en tandem avec un autre serveur web), la compression des données, le contrôle d'accès... Il est très facile de l'étendre en créant des modules en OCaml.
  
  Ocsigen est utilisé comme plateforme par le réseau social Be Sport et pour plusieurs projets de systèmes de gestion de contenu, comme Lambdium ou Nurpawiki.
  
  Le compilateur Ocsigen Js_of_ocaml est utilisé par de nombreux projets, dont le compilateur Hack de Facebook.
  
  Parmi les auteurs d'Ocsigen figurent plusieurs chercheurs en informatique qui utilisent le projet comme base d'expérimentation pour leur recherche.
  
  Le nom Ocsigen est un homophone de l'élément chimique oxygène ; de même, le module Eliom est un homophone de l'élément hélium.
  
  