package ocsigenserver
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=be7a28e3a79cc028d35c88eca538ee8b
sha512=08cdaab31864aeba743ad0c03077a6eccf1089e7b7c4078045dab9409d409144b70cc546df7881b64b780689eee642ca2391be84ab2a6a8ffee0fbed2ad5ac98
doc/migration.html
Migrating to Ocsigen Server 8.0
Ocsigen Server 8.0 reorganises its public modules under hierarchical names and modernises its base library. These changes break compatibility with earlier versions. This page explains what changed and how to update existing code, either by switching to the new names or by relying on the ocsigenserver-compat package during the transition.
Hierarchical module names
The historical flat Ocsigen_xxx modules are now grouped under three namespaces: Ocsigen for the server, Ocsigen_base for the base library and Ocsigen_http for the HTTP layer.
Server modules (Ocsigen.Xxx)
Ocsigen_serverbecomesOcsigen.ServerOcsigen_configbecomesOcsigen.ConfigOcsigen_extensionsbecomesOcsigen.ExtensionsOcsigen_requestbecomesOcsigen.RequestOcsigen_responsebecomesOcsigen.ResponseOcsigen_multipartbecomesOcsigen.MultipartOcsigen_messagesbecomesOcsigen.MessagesOcsigen_local_filesbecomesOcsigen.Local_filesOcsigen_commandbecomesOcsigen.CommandOcsigen_parseconfigbecomesOcsigen.ParseconfigOcsigen_cohttpbecomesOcsigen.Ocsigen_cohttp
Base library modules (Ocsigen_base.Xxx)
Ocsigen_libbecomesOcsigen_base.LibOcsigen_cachebecomesOcsigen_base.CacheOcsigen_loaderbecomesOcsigen_base.LoaderOcsigen_streambecomesOcsigen_base.Ocsigen_streamOcsigen_config_staticbecomesOcsigen_base.Config_static
HTTP modules (Ocsigen_http.Xxx)
Ocsigen_headerbecomesOcsigen_http.HeaderOcsigen_charset_mimebecomesOcsigen_http.Charset_mime
Modules that keep their name
A few public modules are unchanged and need no update: Ocsigen_lib_base, Polytables, Ocsigen_cookie_map and the main Ocsigenserver module.
The ocsigenserver-compat package
To make the transition smooth, the ocsigenserver-compat package provides every old Ocsigen_xxx name as an alias to its new module. Existing code keeps compiling without changes: just add the package to your dune file.
The shims are split to mirror the libraries they alias:
ocsigenserver-compat: old server names (Ocsigen_server,Ocsigen_extensions,Ocsigen_config, ...)ocsigenserver-compat.baselib: old base-library names (Ocsigen_lib,Ocsigen_cache, ...)ocsigenserver-compat.http: old HTTP names (Ocsigen_header,Ocsigen_charset_mime)
For example, to keep using the old names in an executable:
(executable (public_name myserver) (name main) (libraries ocsigenserver ocsigenserver-compat ocsigenserver-compat.baselib ocsigenserver-compat.http))
The compat package is meant as a temporary migration aid: it is recommended to update your code to the new module names and drop the dependency once done. The compat modules are intentionally excluded from the API reference, which documents the new names only.
Other breaking changes
Minimum OCaml version
Ocsigen Server 8.0 requires OCaml 4.14 or later.
Removed deprecated helpers from the base library
Several helpers that duplicated standard-library features have been removed from Ocsigen_lib (now Ocsigen_base.Lib). Use the standard library instead:
Ocsigen_lib.idis removed; useSys.opaque_identityOcsigen_lib.leftrightis removed; useEither.tOcsigen_lib.List.map_filteris removed; useList.filter_map- the
Ocsigen_lib.Optionmodule is removed; use the standard libraryOption
These helpers have no replacement in ocsigenserver-compat: their standard equivalents should be used directly.