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
  41. capnp-rpc-unix >= "0.9.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-rpc-lwt >= "3.7.0" & != "3.10.0"
  133. dune_watch
  134. earlybird
  135. elasticsearch-cli >= "0.4"
  136. equinoxe
  137. eris-lwt
  138. ethernet
  139. ez_api >= "1.2.0"
  140. ezcurl-lwt
  141. ezirmin
  142. ezjs_min < "0.2"
  143. ezjsonm >= "0.4.2" & < "0.5.0"
  144. ezjsonm-lwt
  145. ezresto
  146. ezresto-directory >= "0.5"
  147. faraday-lwt
  148. faraday-lwt-unix >= "0.6.0"
  149. fat-filesystem >= "0.12.0"
  150. fiber-lwt
  151. flowtype >= "0.72.0"
  152. frenetic < "2.0.0"
  153. fsevents-lwt
  154. fswatch_lwt
  155. fuseau-lwt
  156. gamepad
  157. gdb
  158. gdbprofiler >= "0.3"
  159. git != "1.4.3" & != "1.7.2"
  160. git-cohttp
  161. git-cohttp-mirage
  162. git-cohttp-unix
  163. git-mirage >= "3.0.0"
  164. git-paf
  165. git-unix = "1.11.1" | >= "3.0.0"
  166. github
  167. github-hooks < "0.2.0" | >= "0.4.0"
  168. github-unix >= "4.4.0"
  169. gitlab-unix
  170. gitlab_pipeline_notifier
  171. gluten-lwt
  172. gluten-lwt-unix < "0.4.0"
  173. gluten-mirage < "0.4.0"
  174. graphql-lwt
  175. gremlin
  176. grpc-lwt
  177. guardian
  178. gufo
  179. h1
  180. h1-lwt-unix
  181. h2-lwt
  182. h2-lwt-unix < "0.10.0"
  183. h2-mirage
  184. happy-eyeballs-lwt
  185. happy-eyeballs-mirage
  186. hardcaml < "1.1.0"
  187. hardcaml-examples >= "0.3.0"
  188. hardcaml-framework
  189. hidapi-lwt
  190. hiredis != "0.4"
  191. hl_yaml
  192. hockmd
  193. horned_worm < "0.3.1"
  194. http-lwt-client
  195. http-mirage-client
  196. http-multipart-formdata >= "2.0.0" & < "3.0.0"
  197. http2https
  198. httpaf-lwt-unix
  199. httpun-lwt
  200. httpun-mirage
  201. httpun-ws-lwt
  202. hvsock >= "1.0.2"
  203. i3ipc >= "0.1.4"
  204. imaplet-lwt
  205. influxdb-lwt
  206. inotify >= "2.4"
  207. inquire < "0.3.0"
  208. interface-prime-lwt
  209. iocaml < "0.4.6"
  210. iocaml-kernel >= "0.4.3" & < "0.4.6"
  211. iocamljs-kernel
  212. ip2location
  213. ip2locationio
  214. ip2whois
  215. ipv6-multicast-lwt
  216. irc-client-lwt
  217. irc-client-lwt-ssl
  218. irc-client-tls
  219. irmin < "0.9.6" | = "0.9.10" | >= "0.11.0"
  220. irmin-bench
  221. irmin-chunk
  222. irmin-cli
  223. irmin-client
  224. irmin-containers
  225. irmin-fs >= "2.3.0"
  226. irmin-git >= "2.3.0"
  227. irmin-graphql >= "2.3.0"
  228. irmin-http >= "2.3.0"
  229. irmin-indexeddb
  230. irmin-layers
  231. irmin-mem >= "2.3.0"
  232. irmin-mirage-git >= "2.3.0"
  233. irmin-mirage-graphql >= "2.3.0"
  234. irmin-pack
  235. irmin-server
  236. irmin-test >= "2.3.0"
  237. irmin-unix >= "2.3.0"
  238. irmin-watcher >= "0.3.0"
  239. jerboa
  240. jitsu
  241. joolog
  242. jose < "0.9.0"
  243. js_of_ocaml < "2.5"
  244. js_of_ocaml-lwt >= "3.5.0"
  245. jsoo_broadcastchannel
  246. jsoo_router
  247. jsoo_storage
  248. jupyter >= "2.3.0"
  249. jupyter-kernel >= "0.4"
  250. kafka >= "0.3" & < "0.5"
  251. kafka_lwt
  252. kappa-library
  253. ke >= "0.5"
  254. ketrew >= "3.2.0"
  255. kinetic-client < "0.0.3" | >= "0.0.9"
  256. kubecaml
  257. lablqml < "0.6"
  258. lambda-runtime
  259. lambda-term >= "1.13"
  260. lambda_streams_lwt
  261. launchd
  262. ldp
  263. learn-ocaml >= "0.13.0"
  264. learn-ocaml-client >= "0.13.0"
  265. ledgerwallet >= "0.4.0"
  266. letsencrypt
  267. letsencrypt-app
  268. letsencrypt-dns
  269. letters
  270. libres3
  271. links != "0.9"
  272. linol-lwt
  273. llama
  274. lru_cache < "v0.16.0"
  275. lwt-binio < "0.2.0"
  276. lwt-canceler
  277. lwt-dllist
  278. lwt-exit
  279. lwt-parallel >= "1.0.0"
  280. lwt-pipe
  281. lwt-pipeline
  282. lwt-watcher
  283. lwt-zmq < "1.0.0"
  284. lwt_camlp4
  285. lwt_domain
  286. lwt_eio
  287. lwt_glib >= "1.0.1"
  288. lwt_log >= "1.1.0"
  289. lwt_ppx
  290. lwt_ppx_let
  291. lwt_react >= "1.0.1"
  292. lwt_retry
  293. lwt_ssl >= "1.0.1"
  294. mariadb < "0.5.1"
  295. markup = "0.7.6"
  296. markup-lwt
  297. mdx
  298. mechaml
  299. mehari-lwt-unix
  300. mehari-mirage
  301. memtrace-mirage
  302. metrics-influx
  303. metrics-lwt
  304. metrics-mirage
  305. metrics-unix
  306. mimic
  307. mindstorm-lwt
  308. mirage >= "0.4.1" & != "0.6.1" & < "0.8.0" | >= "0.10.0" & < "2.7.0"
  309. mirage-block < "1.0.0" | >= "2.0.0"
  310. mirage-block-ccm
  311. mirage-block-combinators
  312. mirage-block-lwt
  313. mirage-block-partition
  314. mirage-block-ramdisk
  315. mirage-block-solo5
  316. mirage-block-unix < "2.3.0" | = "2.8.2" | >= "2.13.0"
  317. mirage-block-xen
  318. mirage-bootvar-solo5 >= "0.2.0"
  319. mirage-bootvar-unix
  320. mirage-bootvar-xen >= "0.4.0"
  321. mirage-channel >= "4.0.0"
  322. mirage-channel-lwt
  323. mirage-clock-freestanding < "3.0.0"
  324. mirage-clock-lwt
  325. mirage-clock-unix >= "1.3.0" & < "3.0.0"
  326. mirage-console >= "3.0.0"
  327. mirage-console-lwt
  328. mirage-console-solo5 >= "0.2.0"
  329. mirage-console-unix >= "2.2.1"
  330. mirage-console-xen >= "5.0.0"
  331. mirage-console-xen-backend
  332. mirage-console-xen-cli
  333. mirage-crypto-entropy
  334. mirage-crypto-rng >= "0.7.0" & < "0.11.0"
  335. mirage-crypto-rng-lwt
  336. mirage-crypto-rng-mirage >= "0.8.8"
  337. mirage-device >= "2.0.0"
  338. mirage-dns < "3.0.0"
  339. mirage-entropy
  340. mirage-flow >= "1.0.3" & < "1.2.0" | >= "2.0.0"
  341. mirage-flow-combinators
  342. mirage-flow-lwt < "1.3.0" | >= "1.5.0"
  343. mirage-flow-rawlink
  344. mirage-flow-unix >= "1.3.0"
  345. mirage-fs >= "3.0.0"
  346. mirage-fs-lwt
  347. mirage-fs-unix < "1.1.1" | >= "1.3.0"
  348. mirage-http
  349. mirage-http-unix
  350. mirage-http-xen
  351. mirage-kv >= "3.0.0"
  352. mirage-kv-lwt
  353. mirage-kv-unix
  354. mirage-logs != "0.3.0"
  355. mirage-nat < "3.0.0"
  356. mirage-net >= "3.0.1"
  357. mirage-net-fd
  358. mirage-net-lwt
  359. mirage-net-macosx
  360. mirage-net-solo5
  361. mirage-net-unix >= "2.2.0"
  362. mirage-net-xen
  363. mirage-os-shim >= "3.0.0"
  364. mirage-profile
  365. mirage-protocols >= "4.0.0" & < "8.0.0"
  366. mirage-protocols-lwt
  367. mirage-qubes < "0.2" | >= "0.4"
  368. mirage-qubes-ipv4
  369. mirage-random-stdlib >= "0.1.0"
  370. mirage-runtime >= "3.7.0"
  371. mirage-solo5
  372. mirage-stack >= "2.0.0" & < "4.0.0"
  373. mirage-stack-lwt
  374. mirage-time >= "2.0.0"
  375. mirage-time-lwt
  376. mirage-time-unix
  377. mirage-types-lwt < "3.7.1"
  378. mirage-unix >= "3.0.0"
  379. mirage-vnetif
  380. mirage-vnetif-stack
  381. mirage-www >= "1.1.0"
  382. mirage-xen
  383. mirror
  384. monorobot
  385. moonpool-lwt
  386. mqtt >= "0.0.2"
  387. mrmime >= "0.5.0"
  388. multipart-form-data >= "0.2.0"
  389. multipart_form >= "0.2.0" & < "0.4.0"
  390. multipart_form-cohttp-lwt < "0.6.0"
  391. multipart_form-lwt
  392. mwt
  393. naboris
  394. nanomsg
  395. nbd = "2.1.1" | >= "4.0.3"
  396. nbd-tool
  397. nbd-unix
  398. netchannel
  399. nocrypto >= "0.5.4"
  400. nottui-lwt
  401. nproc
  402. nsq >= "0.4.0"
  403. obrowser
  404. obuilder
  405. obus >= "1.2.1"
  406. ocaml-variants >= "4.00.1+mirage-unix" & < "4.00.1+open-types"
  407. ocluster
  408. ocluster-api
  409. ocluster-worker
  410. ocplib-concur
  411. ocplib-resto
  412. ocsigenserver >= "2.10"
  413. ocsipersist
  414. ocsipersist-dbm
  415. ocsipersist-lib
  416. ocsipersist-pgsql
  417. ocsipersist-sqlite
  418. octez-distributed-lwt-internal
  419. octez-internal-libs
  420. octez-l2-libs
  421. octez-libs
  422. octez-proto-libs
  423. octez-protocol-compiler
  424. octez-proxy-server
  425. octez-rpc-process
  426. octez-shell-libs
  427. octez-smart-rollup-wasm-benchmark-lib
  428. odoc >= "2.0.0" & < "2.1.0"
  429. oframl
  430. ojquery
  431. ojs-base
  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.