package lwt

  1. Overview
  2. Docs
Promises and event-driven I/O

Install

Dune Dependency

Authors

Maintainers

Sources

5.9.0.tar.gz
md5=763b9201c891f8c20ee02dec0af23355
sha512=35574743df40170a8d1676254952c060090421a40d5f8ad37a6691f4f8bb0e28fca61f5efff1050edc4f8a3ffa2f06a1e23d0c084c89bfc105c1235e249bbc75

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: 15 Nov 2024

README

Lwt

Lwt is a concurrent programming library for OCaml. It provides a single data type: the promise, which is a value that will become determined in the future. Creating a promise spawns a computation. When that computation is I/O, Lwt runs it in parallel with your OCaml code.

OCaml code, including creating and waiting on promises, is run in a single thread by default, so you don't have to worry about locking or preemption. You can detach code to be run in separate threads on an opt-in basis.

Here is a simplistic Lwt program which requests the Google front page, and fails if the request is not completed in five seconds:

open Lwt.Syntax

let () =
  let request =
    let* addresses = Lwt_unix.getaddrinfo "google.com" "80" [] in
    let google = Lwt_unix.((List.hd addresses).ai_addr) in

    Lwt_io.(with_connection google (fun (incoming, outgoing) ->
      let* () = write outgoing "GET / HTTP/1.1\r\n" in
      let* () = write outgoing "Connection: close\r\n\r\n" in
      let* response = read incoming in
      Lwt.return (Some response)))
  in

  let timeout =
    let* () = Lwt_unix.sleep 5. in
    Lwt.return None
  in

  match Lwt_main.run (Lwt.pick [request; timeout]) with
  | Some response -> print_string response
  | None -> prerr_endline "Request timed out"; exit 1

(* ocamlfind opt -package lwt.unix -linkpkg example.ml && ./a.out *)

In the program, functions such as Lwt_io.write create promises. The let* ... in construct is used to wait for a promise to become determined; the code after in is scheduled to run in a "callback." Lwt.pick races promises against each other, and behaves as the first one to complete. Lwt_main.run forces the whole promise-computation network to be executed. All the visible OCaml code is run in a single thread, but Lwt internally uses a combination of worker threads and non-blocking file descriptors to resolve in parallel the promises that do I/O.


Overview

Lwt compiles to native code on Linux, macOS, Windows, and other systems. It's also routinely compiled to JavaScript for the front end and Node by js_of_ocaml.

In Lwt,

  • The core library Lwt provides promises...

  • ...and a few pure-OCaml helpers, such as promise-friendly mutexes, condition variables, and mvars.

  • There is a big Unix binding, Lwt_unix that binds almost every Unix system call. A higher-level module Lwt_io provides nice I/O channels.

  • Lwt_process is for subprocess handling.

  • Lwt_preemptive spawns system threads.

  • The PPX syntax allows using all of the above without going crazy!

  • There are also some other helpers, such as Lwt_react for reactive programming. See the table of contents on the linked manual pages!


Installing

  1. Use your system package manager to install a development libev package. It is often called libev-dev or libev-devel.

  2. opam install conf-libev lwt


Documentation

We are currently working on improving the Lwt documentation (drastically; we are rewriting the manual). In the meantime:

  • The current manual can be found here.

  • Mirage has a nicely-written Lwt tutorial.

  • An example of a simple server written in Lwt.

  • Concurrent Programming with Lwt is a nice source of Lwt examples. They are translations of code from the excellent Real World OCaml, but are just as useful if you are not reading the book.

Note: much of the current manual refers to 'a Lwt.t as "lightweight threads" or just "threads." This will be fixed in the new manual. 'a Lwt.t is a promise, and has nothing to do with system or preemptive threads.


Contact

Open an issue, visit Discord chat, ask on discuss.ocaml.org, or on Stack Overflow.

Release announcements are made on discuss.ocaml.org. Watching the repo for "Releases only" is also an option.


Contributing

  • CONTRIBUTING.md contains tips for working on the code, such as how to check the code out, how review works, etc. There is also a high-level outline of the code base.

  • Ask us anything, whether it's about working on Lwt, or any question at all about it :)

  • The documentation always needs proofreading and fixes.

  • You are welcome to pick up any other issue, review a PR, add your opinion, etc.

  • Any feedback is welcome, including how to make contributing easier!


Libraries to use with Lwt

Dependencies (5)

  1. ocplib-endian
  2. dune-configurator
  3. cppo build & >= "1.1.0"
  4. ocaml >= "4.08"
  5. dune >= "2.7"

Dev Dependencies (2)

  1. odoc with-doc & >= "2.3.0"
  2. ocamlfind dev & >= "1.7.3-1"

  1. 0install >= "2.15.1"
  2. aches-lwt
  3. activitypub
  4. albatross
  5. alcotest-lwt
  6. alcotest-mirage
  7. ambient-context-lwt
  8. amqp-client >= "0.9.0" & < "1.0.2" | >= "1.1.0"
  9. amqp-client-lwt >= "2.0.1"
  10. angstrom-lwt-unix >= "0.11.0"
  11. anthill
  12. anycache-lwt
  13. arakoon < "1.8.6" | >= "1.8.8"
  14. archi-lwt
  15. arp >= "2.3.1"
  16. arp-mirage >= "2.2.1"
  17. awa-lwt
  18. awa-mirage
  19. aws-lwt
  20. aws-s3-lwt < "4.4.0" | >= "4.8.1"
  21. awsm-lwt
  22. azure-cosmos-db
  23. baardskeerder
  24. balancer
  25. bap < "1.0.0"
  26. bap-server < "0.2.0"
  27. bastet_lwt
  28. bimage-lwt
  29. biocaml = "0.4.0"
  30. bistro >= "0.4.0"
  31. brozip
  32. builder
  33. builder-web
  34. bun >= "0.3.3"
  35. c3
  36. calculon
  37. caldav
  38. camltc = "0.9.5" | >= "0.9.7.0"
  39. canary
  40. capnp-rpc-lwt < "2.0"
  41. capnp-rpc-unix >= "0.9.0" & < "2.0"
  42. caqti-lwt >= "0.11.0"
  43. caqti-mirage
  44. carton
  45. carton-git
  46. carton-lwt
  47. cf-lwt
  48. chamelon
  49. chamelon-unix
  50. chamo >= "3.0"
  51. channel
  52. charrua-client >= "1.3.0"
  53. charrua-client-lwt
  54. charrua-client-mirage
  55. charrua-core < "0.3"
  56. charrua-unix >= "0.3" & != "0.10"
  57. clz
  58. cmdtui-lambda-term
  59. coap
  60. coap-server-lwt
  61. coclobas
  62. cohttp-curl-lwt
  63. cohttp-lwt
  64. cohttp-lwt-jsoo
  65. cohttp-lwt-unix >= "1.1.1"
  66. cohttp-lwt-unix-nossl
  67. cohttp-lwt-unix-ssl
  68. cohttp-mirage
  69. cohttp-server-lwt-unix
  70. comby
  71. comby-semantic
  72. conan-lwt
  73. conduit-lwt
  74. conduit-lwt-unix
  75. cowabloga >= "0.2.2"
  76. crunch >= "2.0.0"
  77. cstruct-lwt
  78. csv-lwt
  79. csvprovider
  80. ctypes >= "0.15.0" & < "0.21.1"
  81. ctypes-foreign >= "0.21.1"
  82. current
  83. current-albatross-deployer
  84. current_docker
  85. current_examples
  86. current_git
  87. current_github
  88. current_gitlab
  89. current_ocluster
  90. current_rpc >= "0.4"
  91. current_slack
  92. current_web
  93. DkSDKFFIOCaml_Std
  94. dap
  95. data-encoding < "0.1.1"
  96. datakit
  97. datakit-bridge-github
  98. datakit-bridge-local-git
  99. datakit-ci
  100. datakit-client = "0.11.0"
  101. datakit-github
  102. devkit >= "1.2"
  103. dht < "0.2.0"
  104. distributed-lwt
  105. dkim-bin >= "0.6.0"
  106. dkim-mirage
  107. dlm
  108. dns >= "0.19.1" & < "0.20.1"
  109. dns-certify
  110. dns-cli >= "4.6.3"
  111. dns-client < "7.0.0"
  112. dns-client-lwt
  113. dns-client-mirage
  114. dns-forward >= "0.9.0"
  115. dns-forward-lwt-unix
  116. dns-lwt
  117. dns-mirage
  118. dns-resolver
  119. dns-server
  120. dns-stub
  121. dnssd
  122. docker_hub
  123. docteur >= "0.0.2"
  124. docteur-solo5
  125. docteur-unix >= "0.0.5"
  126. doi2bib
  127. dream
  128. dream-httpaf
  129. dream-pure
  130. dream-serve
  131. dropbox
  132. dune >= "3.17.0"
  133. dune-rpc-lwt >= "3.7.0" & != "3.10.0"
  134. dune_watch
  135. earlybird
  136. elasticsearch-cli >= "0.4"
  137. equinoxe
  138. eris-lwt
  139. ethernet
  140. ez_api >= "1.2.0"
  141. ezcurl-lwt
  142. ezirmin
  143. ezjs_min < "0.2"
  144. ezjsonm >= "0.4.2" & < "0.5.0"
  145. ezjsonm-lwt
  146. ezresto
  147. ezresto-directory >= "0.5"
  148. faraday-lwt
  149. faraday-lwt-unix >= "0.6.0"
  150. fat-filesystem >= "0.12.0"
  151. fiber-lwt
  152. flowtype >= "0.72.0"
  153. frenetic < "2.0.0"
  154. fsevents-lwt
  155. fswatch_lwt
  156. fuseau-lwt
  157. gamepad
  158. gdb
  159. gdbprofiler >= "0.3"
  160. git != "1.4.3" & != "1.7.2"
  161. git-cohttp
  162. git-cohttp-mirage
  163. git-cohttp-unix
  164. git-mirage >= "3.0.0"
  165. git-paf
  166. git-unix = "1.11.1" | >= "3.0.0"
  167. github
  168. github-hooks < "0.2.0" | >= "0.4.0"
  169. github-unix >= "4.4.0"
  170. gitlab-unix
  171. gitlab_pipeline_notifier
  172. gluten-lwt
  173. gluten-lwt-unix < "0.4.0"
  174. gluten-mirage < "0.4.0"
  175. graphql-lwt
  176. gremlin
  177. grpc-lwt
  178. guardian
  179. gufo
  180. h1
  181. h1-lwt-unix
  182. h2-lwt
  183. h2-lwt-unix < "0.10.0"
  184. h2-mirage
  185. happy-eyeballs-lwt
  186. happy-eyeballs-mirage
  187. hardcaml < "1.1.0"
  188. hardcaml-examples >= "0.3.0"
  189. hardcaml-framework
  190. hidapi-lwt
  191. hiredis != "0.4"
  192. hl_yaml
  193. hockmd
  194. horned_worm < "0.3.1"
  195. http-lwt-client
  196. http-mirage-client
  197. http-multipart-formdata >= "2.0.0" & < "3.0.0"
  198. http2https
  199. httpaf-lwt-unix
  200. httpun-lwt
  201. httpun-mirage
  202. httpun-ws-lwt
  203. hvsock >= "1.0.2"
  204. i3ipc >= "0.1.4"
  205. imaplet-lwt
  206. influxdb-lwt
  207. inotify >= "2.4"
  208. inquire < "0.3.0"
  209. interface-prime-lwt
  210. iocaml < "0.4.6"
  211. iocaml-kernel >= "0.4.3" & < "0.4.6"
  212. iocamljs-kernel
  213. ip2location
  214. ip2locationio
  215. ip2whois
  216. ipv6-multicast-lwt
  217. irc-client-lwt
  218. irc-client-lwt-ssl
  219. irc-client-tls
  220. irmin < "0.9.6" | = "0.9.10" | >= "0.11.0"
  221. irmin-bench
  222. irmin-chunk
  223. irmin-cli
  224. irmin-client
  225. irmin-containers
  226. irmin-fs >= "2.3.0"
  227. irmin-git >= "2.3.0"
  228. irmin-graphql >= "2.3.0"
  229. irmin-http >= "2.3.0"
  230. irmin-indexeddb
  231. irmin-layers
  232. irmin-mem >= "2.3.0"
  233. irmin-mirage-git >= "2.3.0"
  234. irmin-mirage-graphql >= "2.3.0"
  235. irmin-pack
  236. irmin-server
  237. irmin-test >= "2.3.0"
  238. irmin-unix >= "2.3.0"
  239. irmin-watcher >= "0.3.0"
  240. jerboa
  241. jitsu
  242. joolog
  243. jose < "0.9.0"
  244. js_of_ocaml < "2.5"
  245. js_of_ocaml-lwt >= "3.5.0"
  246. jsoo_broadcastchannel
  247. jsoo_router
  248. jsoo_storage
  249. jupyter >= "2.3.0"
  250. jupyter-kernel >= "0.4"
  251. kafka >= "0.3" & < "0.5"
  252. kafka_lwt
  253. kappa-library
  254. ke >= "0.5"
  255. ketrew >= "3.2.0"
  256. kinetic-client < "0.0.3" | >= "0.0.9"
  257. kubecaml
  258. lablqml < "0.6"
  259. lambda-runtime
  260. lambda-term >= "1.13"
  261. lambda_streams_lwt
  262. launchd
  263. ldp
  264. learn-ocaml >= "0.13.0"
  265. learn-ocaml-client >= "0.13.0"
  266. ledgerwallet >= "0.4.0"
  267. letsencrypt
  268. letsencrypt-app
  269. letsencrypt-dns
  270. letters
  271. libres3
  272. links != "0.9"
  273. linol-lwt
  274. llama
  275. lru_cache < "v0.16.0"
  276. lwt-binio < "0.2.0"
  277. lwt-canceler
  278. lwt-dllist
  279. lwt-exit
  280. lwt-parallel >= "1.0.0"
  281. lwt-pipe
  282. lwt-pipeline
  283. lwt-watcher
  284. lwt-zmq < "1.0.0"
  285. lwt_camlp4
  286. lwt_domain
  287. lwt_eio
  288. lwt_glib >= "1.0.1"
  289. lwt_log >= "1.1.0"
  290. lwt_ppx
  291. lwt_ppx_let
  292. lwt_react >= "1.0.1"
  293. lwt_retry
  294. lwt_ssl >= "1.0.1"
  295. mariadb < "0.5.1" | >= "1.2.0"
  296. markup = "0.7.6"
  297. markup-lwt
  298. mdx
  299. mechaml
  300. mehari-lwt-unix
  301. mehari-mirage
  302. memtrace-mirage
  303. metrics-influx
  304. metrics-lwt
  305. metrics-mirage
  306. metrics-unix
  307. mimic
  308. mindstorm-lwt
  309. mirage >= "0.4.1" & != "0.6.1" & < "0.8.0" | >= "0.10.0" & < "2.7.0"
  310. mirage-block < "1.0.0" | >= "2.0.0"
  311. mirage-block-ccm
  312. mirage-block-combinators
  313. mirage-block-lwt
  314. mirage-block-partition
  315. mirage-block-ramdisk
  316. mirage-block-solo5
  317. mirage-block-unix < "2.3.0" | = "2.8.2" | >= "2.13.0"
  318. mirage-block-xen
  319. mirage-bootvar-solo5 >= "0.2.0"
  320. mirage-bootvar-unix
  321. mirage-bootvar-xen >= "0.4.0"
  322. mirage-channel >= "4.0.0"
  323. mirage-channel-lwt
  324. mirage-clock-freestanding < "3.0.0"
  325. mirage-clock-lwt
  326. mirage-clock-unix >= "1.3.0" & < "3.0.0"
  327. mirage-console >= "3.0.0"
  328. mirage-console-lwt
  329. mirage-console-solo5 >= "0.2.0"
  330. mirage-console-unix >= "2.2.1"
  331. mirage-console-xen >= "5.0.0"
  332. mirage-console-xen-backend
  333. mirage-console-xen-cli
  334. mirage-crypto-entropy
  335. mirage-crypto-rng >= "0.7.0" & < "0.11.0"
  336. mirage-crypto-rng-lwt
  337. mirage-crypto-rng-mirage >= "0.8.8"
  338. mirage-device >= "2.0.0"
  339. mirage-dns < "3.0.0"
  340. mirage-entropy
  341. mirage-flow >= "1.0.3" & < "1.2.0" | >= "2.0.0"
  342. mirage-flow-combinators
  343. mirage-flow-lwt < "1.3.0" | >= "1.5.0"
  344. mirage-flow-rawlink
  345. mirage-flow-unix >= "1.3.0"
  346. mirage-fs >= "3.0.0"
  347. mirage-fs-lwt
  348. mirage-fs-unix < "1.1.1" | >= "1.3.0"
  349. mirage-http
  350. mirage-http-unix
  351. mirage-http-xen
  352. mirage-kv >= "3.0.0"
  353. mirage-kv-lwt
  354. mirage-kv-unix
  355. mirage-logs != "0.3.0"
  356. mirage-nat < "3.0.0"
  357. mirage-net >= "3.0.1"
  358. mirage-net-fd
  359. mirage-net-lwt
  360. mirage-net-macosx
  361. mirage-net-solo5
  362. mirage-net-unix >= "2.2.0"
  363. mirage-net-xen
  364. mirage-os-shim >= "3.0.0"
  365. mirage-profile
  366. mirage-protocols >= "4.0.0" & < "8.0.0"
  367. mirage-protocols-lwt
  368. mirage-qubes < "0.2" | >= "0.4"
  369. mirage-qubes-ipv4
  370. mirage-random-stdlib >= "0.1.0"
  371. mirage-runtime >= "3.7.0"
  372. mirage-solo5
  373. mirage-stack >= "2.0.0" & < "4.0.0"
  374. mirage-stack-lwt
  375. mirage-time >= "2.0.0"
  376. mirage-time-lwt
  377. mirage-time-unix
  378. mirage-types-lwt < "3.7.1"
  379. mirage-unix >= "3.0.0"
  380. mirage-vnetif
  381. mirage-vnetif-stack
  382. mirage-www >= "1.1.0"
  383. mirage-xen
  384. mirror
  385. monorobot
  386. moonpool-lwt
  387. mqtt >= "0.0.2"
  388. mrmime >= "0.5.0"
  389. multipart-form-data >= "0.2.0"
  390. multipart_form >= "0.2.0" & < "0.4.0"
  391. multipart_form-cohttp-lwt < "0.6.0"
  392. multipart_form-lwt
  393. mwt
  394. naboris
  395. nanomsg
  396. nbd = "2.1.1" | >= "4.0.3"
  397. nbd-tool
  398. nbd-unix
  399. netchannel
  400. nocrypto >= "0.5.4"
  401. nottui-lwt
  402. nproc
  403. nsq >= "0.4.0"
  404. obrowser
  405. obuilder
  406. obus >= "1.2.1"
  407. ocaml-variants >= "4.00.1+mirage-unix" & < "4.00.1+open-types"
  408. ocluster
  409. ocluster-api
  410. ocluster-worker
  411. ocplib-concur
  412. ocplib-resto
  413. ocsigenserver >= "2.10"
  414. ocsipersist
  415. ocsipersist-dbm
  416. ocsipersist-lib
  417. ocsipersist-pgsql
  418. ocsipersist-sqlite
  419. octez-distributed-lwt-internal
  420. octez-internal-libs
  421. octez-l2-libs
  422. octez-libs
  423. octez-proto-libs
  424. octez-protocol-compiler
  425. octez-proxy-server
  426. octez-rpc-process
  427. octez-shell-libs
  428. octez-smart-rollup-wasm-benchmark-lib
  429. odoc >= "2.0.0" & < "2.1.0"
  430. oframl
  431. ojquery
  432. ojs_base
  433. omigrate
  434. oneffs
  435. opam-sync-github-prs
  436. openflow < "0.2.0"
  437. opentelemetry-client-cohttp-lwt
  438. opentelemetry-cohttp-lwt >= "0.4"
  439. opentelemetry-lwt
  440. opium >= "0.11.0" & != "0.16.0"
  441. opium-graphql
  442. opium_kernel
  443. opomodoro
  444. order-i3-xfce
  445. ordma >= "0.0.3"
  446. oskel >= "0.3.0"
  447. ounit-lwt < "2.2.0"
  448. ounit2-lwt
  449. owork
  450. ox < "1.1.0"
  451. ozulip
  452. paf
  453. paf-cohttp
  454. passage
  455. pcap-format >= "0.3.3" & < "0.5.0"
  456. petrol
  457. pgx_lwt
  458. pgx_lwt_mirage
  459. pgx_lwt_unix < "2.0"
  460. piaf < "0.2.0"
  461. picos >= "0.3.0" & < "0.5.0"
  462. picos_lwt
  463. picos_meta
  464. plebeia >= "2.0.0"
  465. plist-xml-lwt
  466. plotkicadsch >= "0.4.0"
  467. ppx_defer >= "0.4.0"
  468. ppx_deriving_rpc
  469. ppx_json_types
  470. ppx_netblob
  471. ppx_rapper_lwt
  472. ppx_sqlexpr
  473. proc-smaps
  474. prof_spacetime
  475. prometheus
  476. prometheus-app
  477. promise_jsoo_lwt
  478. protocol-9p >= "0.10.0"
  479. protocol-9p-unix
  480. qcow >= "0.8.1"
  481. qcow-format < "0.3"
  482. qcow-tool
  483. qfs = "0.5" | >= "0.7"
  484. quests
  485. rawlink >= "1.0" & < "2.1"
  486. rawlink-lwt
  487. rdf_json_ld
  488. rdf_lwt
  489. redis-lwt
  490. reparse-lwt
  491. reparse-lwt-unix
  492. resource-pooling >= "0.3.2"
  493. resp
  494. resp-mirage >= "0.10.0"
  495. resp-unix >= "0.10.0"
  496. resto
  497. resto-cohttp-client >= "0.4"
  498. resto-cohttp-self-serving-client
  499. resto-cohttp-server >= "0.4" & < "0.6" | >= "0.9"
  500. resto-directory >= "0.4"
  501. riak
  502. ringo-lwt
  503. river
  504. rock
  505. rpc >= "1.5.1" & < "7.1.0"
  506. rpclib-js
  507. rpclib-lwt
  508. SZXX < "4.0.0"
  509. sanddb
  510. scgi
  511. sendmail-lwt
  512. sendmail-mirage
  513. serial
  514. server-reason-react
  515. session-cohttp-lwt
  516. session-cookie-lwt
  517. session-postgresql-lwt >= "0.4.1"
  518. sessions
  519. shared-block-ring < "2.3.0" | >= "3.0.0"
  520. shared-memory-ring >= "1.2.0" & < "2.0.0"
  521. shared-memory-ring-lwt
  522. sherlodoc
  523. sihl < "0.2.0"
  524. slack
  525. slacko
  526. slipshow
  527. smtml >= "0.3.1"
  528. socket-daemon < "0.3.0"
  529. speed
  530. spin < "0.8.0"
  531. spoke
  532. spotify-web-api < "0.2.1"
  533. sqlexpr = "0.7.1" | >= "0.9.0"
  534. statsd-client
  535. stk
  536. stog >= "0.16.0"
  537. swapfs
  538. syguslib-utils
  539. syndic >= "1.4" & < "1.6.0"
  540. tar-format >= "0.4.1"
  541. tar-mirage
  542. tar-unix
  543. tcpip >= "3.1.1" & < "3.4.1" | >= "4.1.0"
  544. teash
  545. telegraml
  546. terminus
  547. testo-lwt
  548. tezos-base >= "13.0"
  549. tezos-clic >= "13.0"
  550. tezos-crypto >= "13.0"
  551. tezos-crypto-dal
  552. tezos-error-monad >= "8.0" & < "9.0" | >= "13.0"
  553. tezos-lwt-result-stdlib >= "9.0"
  554. tezos-p2p >= "11.0" & < "13.0"
  555. tezos-protocol-compiler >= "13.0"
  556. tezos-protocol-environment >= "13.0"
  557. tezos-proxy >= "17.1"
  558. tezos-proxy-server
  559. tezos-stdlib
  560. tezos-stdlib-unix >= "8.0" & < "9.0" | >= "13.0"
  561. tezos-test-helpers >= "12.0"
  562. tezos-wasmer
  563. tezos-webassembly-interpreter-extra
  564. tezt
  565. tftp
  566. themoviedb
  567. tidy_email
  568. timmy-lwt
  569. tls = "0.10.1" | >= "0.10.6" & < "0.16.0"
  570. tls-lwt
  571. tls-mirage
  572. transmission-rpc
  573. tube >= "4.3.0"
  574. tuntap >= "1.0.0" & < "1.7.0" | >= "2.0.0"
  575. twirp_cohttp_lwt_unix
  576. typerex-lldb
  577. u2f
  578. uring
  579. uspf
  580. uspf-lwt
  581. uspf-mirage
  582. utop >= "1.4.0"
  583. uwt >= "0.3.0"
  584. vchan >= "0.9.7" & < "2.0.0" | >= "2.0.3"
  585. vchan-unix
  586. vchan-xen
  587. vercel
  588. vhd-format >= "0.7.0" & < "0.8.0"
  589. vhd-format-lwt >= "0.12.0"
  590. vhd-tool < "0.12.0"
  591. vmnet >= "1.3.2"
  592. vpnkit >= "0.2.0"
  593. vue-jsoo < "0.3"
  594. wayland < "2.0"
  595. webauthn
  596. websocket < "2.3"
  597. xe-unikernel-upload
  598. xen-api-client < "0.9.14"
  599. xen-block-driver
  600. xen-evtchn < "1.0.6" | >= "2.0.0"
  601. xen-evtchn-unix
  602. xen-gnt >= "2.2.3"
  603. xen-gnt-unix >= "4.0.2"
  604. xenctrl < "0.9.29" | >= "0.9.32"
  605. xenstore >= "1.3.0"
  606. xenstore_transport >= "1.0.0"
  607. xentropyd
  608. xlsx2csv
  609. yocaml_git
  610. yocaml_unix < "2.0.0"
  611. yurt < "0.3"
  612. zarr-lwt
  613. zmq-lwt >= "5.2.1"

Conflicts

None

OCaml

Innovation. Community. Security.