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

Conflicts

None

OCaml

Innovation. Community. Security.