<commit_before>= Introduction=


//This is the documentaion of the Ocsigen Framework
(development version). It explains how to use the Web server //Ocsigen server//
and how to program Web sites and client-server Web applications in
//Objective Caml// using //Eliom//. It also contains the documentation for
several tools and libraries you can use for non Ocsigen-releated projects.
* the cooperative threading library Lwt
* the database query library Macaque
* the Js_of_ocaml compiler (from Ocaml bytecode to Jacascript)
* the O'Closure library, a binding for the Google closure Javascript widget
library to be used with Js_of_ocaml.


<<div class="wip"|
This manual in under construction.
Please report any error in this tutorial
and send us your comments and suggestions!
>>

==Eliom==
            
Eliom is an extension for the //Ocsigen server//, a web server
that provides a platform for client/server Web applications (or more traditional, dynamic Web sites) in Objective Caml.
Its unique design employs several new concepts that set it apart
from all other Web programming tools.

=== High level primitives ===
Eliom allows one to build a complex Web application using just a few lines of code, by providing high level programming primitives for many aspects of Web programming: client-server communication, implementation of complex Web interaction, sessions, etc.
<<span class="wip"|continuations?>>

=== Static typing ===
Eliom also improves the stability of your application by making an extensive use of OCaml's static typing. For example the validity of pages is checked at compile time!  Eliom also checks, for example, for broken hyperlinks links and that the parameters in a link or a form correspond to the service it leads to (among other things).

=== A client/server application in one piece of code! ===
One of the most significant features of Eliom is that can encompass both sides (client-side and server-side) of a Web application in a single program! The client side parts are automatically extracted and compiled into Javascript to be executed in the browser. The communication between the server is straightforward (in both directions), as you can use server side values in the client side code.

=== Security ===
Eliom helps you to make your Web application secure by automatically taking into account lots of security issues (code injection, session fixation~ ...), and by providing features to implement very secure behaviours (avoiding for example "cross-site request forgery").\\

\\

The first part of this manual is an overview of Ocsigen's features.
Read them to understand the basics.
Then refer to subsequent chapters to go into detail.

//Warning:// This programming guide assumes you know the<commit_msg>intro-firstround<commit_after>= Introduction=


This is the documentaion of the Ocsigen Framework
(development version). It explains how to use the //Ocsigen// web server
and how to program web sites and client-server web applications in
//Objective Caml// using //Eliom//. It also contains the documentation for
several tools and libraries you can use for non Ocsigen-releated projects:
* the cooperative threading library Lwt
* the database query library Macaque
* the Js_of_ocaml compiler (from Ocaml bytecode to Jacascript)
* the O'Closure library, a binding for the Google closure Javascript widget
library to be used with Js_of_ocaml.


<<div class="wip"|
This manual in under construction.
Please report any error in this tutorial
and send us your comments and suggestions!
>>

==Eliom==
            
Eliom is an extension for the Web server //Ocsigen server//
that allows to create client/server Web applications (or server-only dynamic Web sites) in Objective Caml.
It uses very new concepts making programming very different
from all other Web programming tools.

=== High level primitives ===
It makes easy to write a complex Web site in very few lines of code by providing high level programming primitives for many aspects of Web programming: communication between the client and the server, implementation of complex Web interaction, sessions, etc.
<<span class="wip"|continuations?>>

=== Static typing ===
Eliom also helps to improve the stability of your application by  making an extensive use of OCaml's static typing. For example the validity of pages is checked at compile time! Eliom also makes sure statically for example that your Web site does not contain broken links or that the parameters in a link or a form correspond to the service it leads to (and many other things).

=== A client/server application in one piece of code! ===
But one of the most significant features of Eliom 2 is that it allows to program both sides of a Web application as a single program! The client side parts are automatically extracted and compiled into Javascript to be executed in the browser. The communication between the server is straightforward (in both directions!), as you can use server side values in the client side code.

=== Security ===
Eliom helps you to make your Web application secure by taking in charge automatically lots of security issues (code injection, session fixation~ ...) and by providing features to implement very secure behaviours (avoiding for example "cross-site request forgery").\\

\\

The first part of this manual is an overview of Ocsigen's features.
Read them to understand the basics,
then refer to subsequent chapters for more detail.

//Warning:// This programming guide assumes you know the
{'fraction_non_alphanumeric': 0.051758702387461275, 'fraction_numerical': 0.00018224895206852561, 'mean_word_length': 4.52112676056338, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2848425', 'n_tokens_mistral': 1305, 'n_tokens_neox': 1245, 'n_words': 811}