Monadic promises and concurrent I/O

Description

A promise is a value that may become determined in the future.

Lwt provides typed, composable promises. Promises that are resolved by I/O are resolved by Lwt in parallel.

Meanwhile, OCaml code, including code creating and waiting on promises, runs in a single thread by default. This reduces the need for locks or other synchronization primitives. Code can be run in parallel on an opt-in basis.

Published: 10 Apr 2017

Dependencies (8)

  1. ppx_tools build
  2. base-no-ppx
  3. cppo_ocamlbuild build
  4. cppo build & >= "1.1.0"
  5. result
  6. ocamlbuild build
  7. ocamlfind build & >= "1.5.0"
  8. ocaml >= "4.02.0" & < "4.06.0"

Reverse Dependencies (436)

  1. 0install != "2.8" & != "2.12.3"
  2. alcotest-lwt
  3. alcotest-mirage
  4. amqp-client >= "0.9.0" & < "1.0.2" | >= "1.1.0"
  5. amqp-client-lwt
  6. angstrom-lwt-unix
  7. anthill
  8. anycache-lwt
  9. arakoon < "1.8.6" | >= "1.8.8" & < "1.9.17"
  10. archi-lwt
  11. arp >= "2.3.1"
  12. arp-mirage
  13. awa-lwt
  14. awa-mirage
  15. aws < "1.0.0"
  16. aws-s3-lwt
  17. azure-cosmos-db
  18. baardskeerder
  19. balancer
  20. bap < "1.0.0"
  21. bap-server < "0.2.0"
  22. bimage-lwt
  23. biocaml = "0.4.0"
  24. bistro < "0.5.0"
  25. brotli < "1.2.0"
  26. brozip
  27. builder
  28. bun >= "0.3.3"
  29. c3
  30. calculon
  31. camltc < "0.9.5"
  32. canary
  33. capnp-rpc-lwt < "1.2.3"
  34. capnp-rpc-unix >= "0.9.0" & < "1.2.3"
  35. caqti-lwt < "0.11.0"
  36. carton-git
  37. carton-lwt
  38. channel
  39. charrua-client-lwt < "1.2.0"
  40. charrua-client-mirage < "1.2.0"
  41. charrua-core < "0.3"
  42. charrua-unix >= "0.3" & < "0.9"
  43. cmdtui-lambda-term
  44. coclobas
  45. cohttp-lwt
  46. cohttp-mirage
  47. comby
  48. comby-semantic
  49. conan-lwt
  50. conduit-lwt = "3.0.0"
  51. core-lwt < "0.2.0"
  52. cowabloga >= "0.2.2"
  53. crunch >= "2.0.0"
  54. cstruct-lwt
  55. csv-lwt
  56. csvprovider
  57. ctypes >= "0.6.0" & < "0.15.0"
  58. curly < "0.2.0"
  59. current_docker < "0.6.4"
  60. current_examples < "0.6.4"
  61. current_git < "0.6.4"
  62. current_github < "0.6.4"
  63. current_gitlab < "0.6.4"
  64. current_ocluster < "0.2"
  65. current_slack < "0.6.4"
  66. current_web < "0.6.4"
  67. dap
  68. data-encoding < "0.1.1"
  69. datakit < "0.10.1"
  70. datakit-bridge-github < "0.10.1"
  71. datakit-bridge-local-git < "0.10.1"
  72. datakit-ci < "0.10.1"
  73. datakit-client >= "0.11.0"
  74. datakit-github < "0.10.1"
  75. datakit-server < "0.11.0"
  76. devkit
  77. dht < "0.2.0"
  78. distributed < "0.5.0"
  79. dkim-mirage
  80. dns < "0.5.0" | >= "0.6.1" & < "1.0.0"
  81. dns-forward
  82. dns-forward-lwt-unix
  83. dnssd
  84. docker_hub
  85. dream
  86. dream-httpaf
  87. dream-pure
  88. dropbox
  89. dune_watch
  90. earlybird < "1.0.0"
  91. eliom >= "6.0.0" & < "6.4.0"
  92. eris-lwt
  93. ezcurl-lwt
  94. ezirmin
  95. ezjsonm >= "0.4.2" & < "0.5.0"
  96. ezjsonm-lwt
  97. ezresto
  98. facebook-sdk
  99. faraday-lwt
  100. faraday-lwt-unix
  101. fat-filesystem >= "0.12.0"
  102. frenetic < "2.0.0"
  103. fswatch_lwt
  104. gamepad
  105. gdb
  106. gdbprofiler < "0.3"
  107. git != "1.4.3" & != "1.7.2"
  108. git-paf
  109. git-unix = "1.11.1" | >= "3.0.0" & < "3.10.0"
  110. github
  111. github-hooks
  112. github-unix >= "4.4.0"
  113. gitlab-unix
  114. gluten-lwt < "0.4.0"
  115. gluten-lwt-unix < "0.4.0"
  116. gluten-mirage < "0.4.0"
  117. graphql-lwt
  118. gufo
  119. h2-lwt < "0.10.0"
  120. h2-lwt-unix < "0.10.0"
  121. h2-mirage
  122. happy-eyeballs-lwt
  123. happy-eyeballs-mirage
  124. hardcaml < "1.1.0"
  125. hardcaml-examples >= "0.3.0"
  126. hardcaml-framework
  127. hardcaml-waveterm
  128. hiredis < "0.6"
  129. http-lwt-client
  130. http-multipart-formdata >= "2.0.0" & < "3.0.0"
  131. http2https
  132. httpaf-lwt-unix
  133. hvsock < "1.0.2"
  134. i3ipc
  135. imaplet-lwt
  136. influxdb-lwt
  137. inotify >= "2.4"
  138. inquire < "0.3.0"
  139. iocaml
  140. iocaml-kernel >= "0.4.3"
  141. iocamljs-kernel
  142. ip2location
  143. ipv6-multicast < "0.9"
  144. irc-client-lwt
  145. irc-client-lwt-ssl
  146. irc-client-tls
  147. irmin < "0.9.6" | = "0.9.10" | >= "0.11.0" & < "2.7.0"
  148. irmin-bench < "2.7.0"
  149. irmin-chunk < "2.7.0"
  150. irmin-containers < "2.7.0"
  151. irmin-fs >= "2.3.0" & < "2.7.0"
  152. irmin-git >= "2.3.0" & < "2.7.0"
  153. irmin-graphql >= "2.3.0" & < "2.7.0"
  154. irmin-http >= "2.3.0" & < "2.7.0"
  155. irmin-indexeddb
  156. irmin-layers < "2.7.0"
  157. irmin-mem >= "2.3.0"
  158. irmin-mirage-git >= "2.3.0" & < "2.7.0"
  159. irmin-mirage-graphql >= "2.3.0" & < "2.7.0"
  160. irmin-pack < "2.7.0"
  161. irmin-test >= "2.3.0" & < "2.7.0"
  162. irmin-unix >= "2.3.0" & < "2.7.0"
  163. irmin-watcher
  164. jitsu
  165. joolog
  166. jose < "0.9.0"
  167. js_of_ocaml < "3.0"
  168. js_of_ocaml-lwt
  169. jsoo_broadcastchannel
  170. jsoo_router
  171. jsoo_storage
  172. jupyter < "1.0.2"
  173. jupyter-archimedes < "2.3.2"
  174. jupyter-kernel
  175. KaSim >= "4.0.0"
  176. kafka >= "0.3" & < "0.5"
  177. kafka_lwt
  178. ke >= "0.5"
  179. ketrew >= "3.0.0"
  180. kinetic-client < "0.0.9"
  181. lablqml < "0.6"
  182. lambda-runtime
  183. lambda-term < "1.13"
  184. launchd
  185. letsencrypt
  186. letsencrypt-app
  187. letsencrypt-dns
  188. libres3
  189. links < "0.7.3"
  190. lwt-binio
  191. lwt-dllist
  192. lwt-exit
  193. lwt-parallel
  194. lwt-pipe
  195. lwt-pipeline
  196. lwt-watcher
  197. lwt-zmq
  198. lwt_camlp4
  199. lwt_eio
  200. lwt_glib < "1.0.1"
  201. lwt_log < "1.1.0"
  202. lwt_named_threads
  203. lwt_ppx
  204. lwt_ppx_let
  205. lwt_react < "1.0.1"
  206. lwt_ssl < "1.0.1"
  207. macaque_lwt
  208. maki
  209. mariadb < "0.5.1"
  210. markup = "0.7.6"
  211. markup-lwt
  212. mbr-format
  213. mdx
  214. mechaml
  215. metrics-influx
  216. metrics-lwt
  217. metrics-mirage
  218. metrics-unix
  219. mindstorm-lwt
  220. mirage < "0.9.1" | >= "0.10.0" & < "2.7.0"
  221. mirage-block < "1.0.0"
  222. mirage-block-ccm
  223. mirage-block-lwt
  224. mirage-block-ramdisk
  225. mirage-block-solo5
  226. mirage-block-unix < "2.8.3"
  227. mirage-block-xen
  228. mirage-bootvar-solo5 >= "0.2.0"
  229. mirage-bootvar-unix
  230. mirage-bootvar-xen >= "0.4.0"
  231. mirage-channel-lwt
  232. mirage-clock-freestanding < "3.0.0"
  233. mirage-clock-lwt
  234. mirage-clock-unix >= "1.2.0" & < "3.0.0"
  235. mirage-console >= "2.1.1" & < "2.2.0"
  236. mirage-console-lwt
  237. mirage-console-solo5 >= "0.2.0"
  238. mirage-console-unix >= "2.2.0" & < "3.0.0"
  239. mirage-console-xen >= "5.0.0"
  240. mirage-console-xen-backend < "3.0.1"
  241. mirage-console-xen-cli
  242. mirage-dns < "3.0.0"
  243. mirage-entropy < "0.5.0"
  244. mirage-entropy-unix
  245. mirage-entropy-xen != "0.2.0"
  246. mirage-flow >= "1.0.3" & < "1.2.0"
  247. mirage-flow-lwt
  248. mirage-flow-rawlink
  249. mirage-flow-unix < "2.0.0"
  250. mirage-fs-lwt
  251. mirage-fs-unix != "1.2.1"
  252. mirage-http
  253. mirage-http-unix
  254. mirage-http-xen
  255. mirage-kv-lwt
  256. mirage-kv-unix
  257. mirage-logs
  258. mirage-nat < "3.0.0"
  259. mirage-net-fd
  260. mirage-net-lwt
  261. mirage-net-macosx
  262. mirage-net-solo5
  263. mirage-net-unix
  264. mirage-net-xen
  265. mirage-os-shim >= "3.0.0"
  266. mirage-profile
  267. mirage-protocols-lwt
  268. mirage-qubes
  269. mirage-qubes-ipv4
  270. mirage-random-stdlib >= "0.1.0"
  271. mirage-solo5
  272. mirage-stack-lwt
  273. mirage-time-lwt
  274. mirage-time-unix < "2.0.0"
  275. mirage-types-lwt < "3.7.1"
  276. mirage-unix
  277. mirage-vnetif
  278. mirage-vnetif-stack
  279. mirage-www >= "1.1.0"
  280. mirage-xen
  281. mirror
  282. mpris = "0.1.1"
  283. mqtt >= "0.0.2"
  284. mrmime >= "0.5.0"
  285. multipart-form-data
  286. multipart_form >= "0.2.0" & < "0.4.0"
  287. multipart_form-lwt
  288. mwt
  289. named-pipe
  290. nanomsg
  291. nbd >= "2.1.1"
  292. nbd-tool
  293. nbd-unix
  294. netchannel
  295. nocrypto >= "0.5.4"
  296. noise
  297. nottui-lwt
  298. nproc
  299. nsq < "0.2.4"
  300. obrowser
  301. obuilder < "0.4"
  302. obus < "1.2.0"
  303. ocaml-variants >= "4.00.1+mirage-unix" & < "4.00.1+open-types"
  304. ocluster < "0.2"
  305. ocluster-api < "0.2"
  306. ocplib-concur
  307. ocplib-resto
  308. ocsigen-start = "1.1.0"
  309. ocsigen-toolkit = "1.1.0"
  310. ocsigenserver >= "2.5" & < "2.9"
  311. odoc >= "2.0.0" & < "2.1.0"
  312. ojquery
  313. ojs-base < "0.6.0"
  314. opam-publish = "0.3.5"
  315. opam-sync-github-prs
  316. openflow < "0.2.0"
  317. opium >= "0.11.0" & < "0.19.0"
  318. opium_kernel
  319. order-i3-xfce
  320. ordma
  321. osc-lwt
  322. oskel >= "0.3.0"
  323. ounit-lwt < "2.2.0"
  324. ounit2-lwt
  325. ox < "1.1.0"
  326. paf
  327. paf-cohttp
  328. pcap-format >= "0.3.3" & < "0.5.0"
  329. pgx_lwt
  330. pgx_lwt_mirage
  331. pgx_lwt_unix < "2.0"
  332. plotkicadsch < "0.2.0" | >= "0.4.0"
  333. ppx_defer >= "0.4.0"
  334. ppx_json_types
  335. ppx_netblob
  336. ppx_rapper_lwt
  337. ppx_sqlexpr
  338. prof_spacetime
  339. prometheus
  340. prometheus-app
  341. protocol-9p < "0.10.0"
  342. pvem_lwt_unix >= "0.0.2"
  343. qcow < "0.11.0"
  344. qcow-format
  345. qcow-tool
  346. qfs >= "0.5" & < "0.7"
  347. quests
  348. rashell
  349. rawlink < "2.1"
  350. rawlink-lwt
  351. receive-mail
  352. redis-lwt
  353. resource-pooling
  354. resp >= "0.10.0"
  355. resp-mirage >= "0.10.0"
  356. resp-unix >= "0.10.0"
  357. resto
  358. riak
  359. ringo-lwt
  360. river
  361. rpc >= "1.5.1" & < "7.1.0"
  362. rpclib-js
  363. sanddb >= "0.3.0"
  364. scgi
  365. sendmail-lwt
  366. session-cohttp-lwt
  367. session-cookie-lwt
  368. session-postgresql-lwt < "0.4.1"
  369. sessions
  370. shared-block-ring
  371. shared-memory-ring < "2.0.0"
  372. shared-memory-ring-lwt
  373. skkserv-lite
  374. slacko < "0.14.1"
  375. sociaml-facebook-api
  376. sociaml-oauth-client
  377. sociaml-tumblr-api
  378. socket-daemon
  379. spin < "0.6.0"
  380. spotify-cli
  381. spotify-web-api < "0.2.1"
  382. sqlexpr
  383. statsd-client
  384. stog >= "0.16.0" & < "0.19.0"
  385. syndic >= "1.4" & < "1.6.0"
  386. tar-format >= "0.4.1"
  387. tar-mirage < "2.2.0"
  388. tar-unix
  389. tcpip >= "2.5.0" & < "3.3.0"
  390. telegraml
  391. testrunner
  392. tezos-p2p >= "11.0" & < "13.0"
  393. tezos-stdlib < "9.0"
  394. tftp
  395. themoviedb
  396. tls >= "0.10.1" & < "0.11.0"
  397. transmission-rpc
  398. tube
  399. tuntap >= "1.0.0" & < "2.0.0"
  400. typerex-lldb
  401. u2f
  402. usb
  403. usbmux
  404. uspf
  405. uspf-lwt
  406. utop >= "1.4.0"
  407. utp
  408. uwt >= "0.0.2"
  409. vchan >= "0.9.6" & < "2.0.0" | >= "2.0.3"
  410. vchan-unix
  411. vchan-xen
  412. vercel
  413. vhd-format >= "0.6.0" & < "0.9.1"
  414. vhd-format-lwt < "0.12.0"
  415. vhd-tool
  416. vmnet
  417. vpnkit >= "0.1.1"
  418. vue-jsoo < "0.3"
  419. webauthn
  420. websocket < "2.3"
  421. websocket-lwt = "2.11"
  422. xapi-idl
  423. xe
  424. xe-unikernel-upload
  425. xen-api-client
  426. xen-block-driver
  427. xen-evtchn
  428. xen-evtchn-unix
  429. xen-gnt
  430. xenctrl
  431. xenstore
  432. xenstore_transport
  433. xentropyd
  434. yurt != "0.3" & < "0.5"
  435. zbar
  436. zmq-lwt != "5.1.4"

Conflicts (5)

  1. ocamlbuild = "0.9.0"
  2. ppx_tools < "1.0.0"
  3. ssl < "0.5.0"
  4. react < "1.0.0"
  5. ocaml-variants = "4.02.1+BER"