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

Conflicts

None

OCaml

Innovation. Community. Security.