Bug of download Dune

Bonjours.

Hello everyone

I’m having trouble installing Dune on Windows. Here’s my terminal output for some information.

PS C:\Users\Utilisateur\Scripts-Studio-Code\> opam init -y                                                         

<><> Required setup - please read <><><><><><><><><><><><><><><><><><><><><>  🐫 

  In normal operation, opam only alters files within ~\AppData\Local\opam.

  However, to best integrate with your system, some environment variables
  should be set. When you want to access your opam installation, you will
  need to run:

    (& opam env) -split '\r?\n' | ForEach-Object { Invoke-Expression $_ }

  You can always re-run this setup with 'opam init' later.

PS C:\Users\Utilisateur\Scripts-Studio-Code\> (& opam env) -split '\r?\n' | ForEach-Object { Invoke-Expression $_ }
PS C:\Users\Utilisateur\Scripts-Studio-Code\> (& opam env)
$env:OPAM_LAST_ENV = 'C:\Users\Utilisateur\AppData\Local\opam\.last-env\env-c258c88162ca59242b5010198f1d21c7-0'
$env:OPAM_SWITCH_PREFIX = 'C:\Users\Utilisateur\AppData\Local\opam\4.14.1'
$env:MANPATH = ':/cygdrive/c/Users/Utilisateur/AppData/Local/opam/4.14.1/man'
$env:Path = 'C:\Users\Utilisateur\AppData\Local\opam\4.14.1\bin;C:\Program Files\Eclipse Adoptium\jdk-25.0.2.10-hotspot\bin;C:\Python314\Scripts\;C:\Python314\;C:\Program Files (x86)\Common Files\Oracle\Java\java8path;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Microsoft SQL Server\160\Tools\Binn\;C:\Program Files\Microsoft SQL Server\160\Tools\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files\Microsoft SQL Server\160\DTS\Binn\;C:\Program Files\Microsoft SQL Server\170\DTS\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files (x86)\Incredibuild;C:\Program Files\nodejs\;C:\ProgramData\chocolatey\bin;C:\Program Files\Gpg4win\..\GnuPG\bin;C:\Program Files\dotnet\;C:\Program Files\swipl\bin;C:\Program Files\Git\cmd;C:\Program Files (x86)\clojure\;C:\Users\Utilisateur\bin;\clojure\bin\;C:\ghcup\bin;C:\Users\Utilisateur\.cargo\bin;C:\Users\Utilisateur\.cargo\bin;C:\Users\Utilisateur\AppData\Local\Microsoft\WindowsApps;C:\Users\Utilisateur\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\Utilisateur\AppData\Local\Programs\MiKTeX\miktex\bin\x64\;C:\Program Files\Processing\;C:\Users\Utilisateur\AppData\Local\GitHubDesktop\bin;C:\Program Files (x86)\Git\cmd;C:\Program Files\Git\cmd;C:\MinGW\bin;C:\Users\Utilisateur\AppData\Roaming\npm;C:\Program Files\nodejs\npm;C:\Users\Utilisateur\node_modules\;C:\Users\Utilisateur\node_modules\.bin\nodemon;C:\Users\Utilisateur\AppData\Roaming\Python\Python314\Scripts;C:\Program Files\Gpg4win\bin;C:\Program Files\GnuPG\bin;C:\Users\Utilisateur\.dotnet\tools;C:\Users\Utilisateur\AppData\Local\Programs\vcpkg;C:\Users\Utilisateur\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\Utilisateur\AppData\Local\Microsoft\WinGet\Packages\OCaml.opam_Microsoft.Winget.Source_8wekyb3d8bbwe;C:\Users\Utilisateur\AppData\Local\Microsoft\WinGet\Links;C:\Program Files\Eclipse Adoptium\jdk-25.0.2.10-hotspot\bin;C:\msys64\usr\bin\;C:\Users\Utilisateur\AppData\Local\opam\download-cache\dune;C:\Users\Utilisateur\AppData\Local\opam\download-cache\ocaml;'
PS C:\Users\Utilisateur\Scripts-Studio-Code\> opam install dune
The following actions will be performed:
=== install 6 packages
  ∗ dune                3.22.2
  ∗ flexdll             0.44   [required by ocaml-base-compiler]
  ∗ mingw-w64-shims     0.2.0
  ∗ ocaml               4.14.1 [required by dune]
  ∗ ocaml-base-compiler 4.14.1 [required by ocaml]
  ∗ ocaml-config        3      [required by ocaml]

<><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><>  🐫 
[ERROR] Failed to get sources of dune.3.22.2: curl failed
[ERROR] Failed to get sources of flexdll.0.44: curl failed
[ERROR] Failed to get sources of mingw-w64-shims.0.2.0: curl failed
[ERROR] Failed to get sources of ocaml-base-compiler.4.14.1: curl failed
[ERROR] Failed to get extra source "gen_ocaml_config.ml.in" of ocaml-config.3: curl failed

#=== ERROR while fetching sources for ocaml-config.3 ==========================#
OpamSolution.Fetch_fail("https://raw.githubusercontent.com/ocaml/ocaml/66f33f6e08857f3c3cb53fc1759fbad6860c59bd/tools/opam/gen_ocaml_config.ml.in (curl failed: \"C:\\\\msys64\\\\mingw64\\\\bin\\\\curl.exe --write-out %{http_code}\\\\n --retry 3 --retry-delay 2 --user-agent opam/2.5.0 -L -o C:\\\\Users\\\\Utilisateur\\\\AppData\\\\Local\\\\Temp\\\\opam-22760-bb847c\\\\gen_ocaml_config.ml.in.part -- https://raw.githubusercontent.com/ocaml/ocaml/66f33f6e08857f3c3cb53fc1759fbad6860c59bd/tools/opam/gen_ocaml_config.ml.in\" exited with code 60)")

#=== ERROR while fetching sources for ocaml-base-compiler.4.14.1 ==============#
OpamSolution.Fetch_fail("https://github.com/ocaml/ocaml/archive/4.14.1.tar.gz (curl failed: \"C:\\\\msys64\\\\mingw64\\\\bin\\\\curl.exe --write-out %{http_code}\\\\n --retry 3 --retry-delay 2 --user-agent opam/2.5.0 -L -o C:\\\\Users\\\\Utilisateur\\\\AppData\\\\Local\\\\Temp\\\\opam-22760-1c054b\\\\4.14.1.tar.gz.part -- https://github.com/ocaml/ocaml/archive/4.14.1.tar.gz\" exited with code 60)")

#=== ERROR while fetching sources for mingw-w64-shims.0.2.0 ===================#
OpamSolution.Fetch_fail("https://github.com/dra27/mingw-w64-shims/archive/refs/tags/0.2.0.tar.gz (curl failed: \"C:\\\\msys64\\\\mingw64\\\\bin\\\\curl.exe --write-out %{http_code}\\\\n --retry 3 --retry-delay 2 --user-agent opam/2.5.0 -L -o C:\\\\Users\\\\Utilisateur\\\\AppData\\\\Local\\\\Temp\\\\opam-22760-71c1c8\\\\0.2.0.tar.gz.part -- https://github.com/dra27/mingw-w64-shims/archive/refs/tags/0.2.0.tar.gz\" exited with code 60)")

#=== ERROR while fetching sources for flexdll.0.44 ============================#
OpamSolution.Fetch_fail("https://github.com/ocaml/flexdll/archive/refs/tags/0.44.tar.gz (curl failed: \"C:\\\\msys64\\\\mingw64\\\\bin\\\\curl.exe --write-out %{http_code}\\\\n --retry 3 --retry-delay 2 --user-agent opam/2.5.0 -L -o C:\\\\Users\\\\Utilisateur\\\\AppData\\\\Local\\\\Temp\\\\opam-22760-9af8fb\\\\0.44.tar.gz.part -- https://github.com/ocaml/flexdll/archive/refs/tags/0.44.tar.gz\" exited with code 60)")

#=== ERROR while fetching sources for dune.3.22.2 =============================#
OpamSolution.Fetch_fail("https://github.com/ocaml/dune/releases/download/3.22.2/dune-3.22.2.tbz (curl failed: \"C:\\\\msys64\\\\mingw64\\\\bin\\\\curl.exe --write-out %{http_code}\\\\n --retry 3 --retry-delay 2 --user-agent opam/2.5.0 -L -o C:\\\\Users\\\\Utilisateur\\\\AppData\\\\Local\\\\Temp\\\\opam-22760-1d9a77\\\\dune-3.22.2.tbz.part -- https://github.com/ocaml/dune/releases/download/3.22.2/dune-3.22.2.tbz\" exited with code 60)")


<><> Error report <><><><><><><><><><><><><><><><><><><><><><><><><><><><><>  🐫 
┌─ The following actions failed
│ ⬇ fetch dune                3.22.2
│ ⬇ fetch flexdll             0.44
│ ⬇ fetch mingw-w64-shims     0.2.0
│ ⬇ fetch ocaml-base-compiler 4.14.1
│ ⬇ fetch ocaml-config        3
└─ 
╶─ No changes have been performed
PS C:\Users\Utilisateur\Scripts-Studio-Code\> C:\msys64\mingw64\bin\curl.exe --version  
curl 8.19.0 (Windows) libcurl/8.19.0 OpenSSL/3.6.2 zlib/1.3.2 brotli/1.2.0 zstd/1.5.7 libidn2/2.3.8 libpsl/0.21.5 libssh2/1.11.1 nghttp2/1.69.0 ngtcp2/1.22.1 nghttp3/1.15.0 WinLDAP
Release-Date: 2026-03-11
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt mqtts pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL SSPI threadsafe TLS-SRP UnixSockets zstd

What I did

  • Download Ocaml/Opam
  • Download curl
  • Download the repo of Dune
  • MSYS2
  • make install
  • Docker installation
  • Try lots of things
    and
  • ca-certificates

Ca-vertificates


Utilisateur@DESKTOP-BPP2DKT MINGW64 ~
$ pacman -Syu ca-certificates
:: Synchronizing package databases...
 clangarm64                                                                             523.1 KiB   147 KiB/s 00:04 [####################################################################] 100%
 mingw32 is up to date
 mingw64                                                                                459.5 KiB   131 KiB/s 00:04 [####################################################################] 100%
 ucrt64                                                                                 540.9 KiB   158 KiB/s 00:03 [####################################################################] 100%
 clang64                                                                                529.5 KiB   154 KiB/s 00:03 [####################################################################] 100%
 msys is up to date
warning: ca-certificates-20250419-1 is up to date -- reinstalling
:: Starting core system upgrade...
 there is nothing to do
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...

Packages (1) ca-certificates-20250419-1

Total Download Size:   0.38 MiB
Total Installed Size:  1.03 MiB
Net Upgrade Size:      0.00 MiB

:: Proceed with installation? [Y/n] y
:: Retrieving packages...
 ca-certificates-20250419-1-any                                                         386.8 KiB  1924 KiB/s 00:00 [####################################################################] 100%
(1/1) checking keys in keyring                                                                                      [####################################################################] 100%
(1/1) checking package integrity                                                                                    [####################################################################] 100%
(1/1) loading package files                                                                                         [####################################################################] 100%
(1/1) checking for file conflicts                                                                                   [####################################################################] 100%
(1/1) checking available disk space                                                                                 [####################################################################] 100%
:: Processing package changes...
(1/1) reinstalling ca-certificates                                                                                  [####################################################################] 100%

Could someone help me??

It’s not a familiar setup to me but what happens if you just:

C:\msys64\mingw64\bin\curl.exe https://ocaml.org

It seems that curl is not seing the certs you install.

When I do C:\msys64\mingw64\bin\curl.exe https://ocaml.org it’s me :

 PS C:\Users\Utilisateur\Scripts-Studio-Code> C:\msys64\mingw64\bin\curl.exe https://ocaml.org
curl: (60) SSL certificate OpenSSL verify result: unable to get local issuer certificate (20)
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the webpage mentioned above.
C:\msys64\mingw64\bin\curl.exe https://ocaml.org -k
...
      event.preventDefault(); 
      document.querySelector("input[type='search']").focus()
    }
  });
</script>


    <main class="bg-background dark:bg-dark-background"><div class="lg:py-24 py-2">
  <div class="container-fluid space-y-24 lg:space-y-32">
    <div class="flex flex-col lg:flex-row gap-6">
      <div class="lg:flex-1 lg:mt-16 my-12">
        <h1 class="lg:pr-10 text-7xl font-bold text-title dark:text-dark-title">
          OCaml
        </h1>
        <p class="my-7 text-2xl text-content dark:text-dark-content">
          An industrial-strength functional programming language
          with an emphasis on expressiveness and safety
        </p>
        <div class="space-x-0 lg:space-x-6">
          <a class="btn btn-lg mb-4 lg:mb-0" href="/install">Install</a>
          <a class="btn btn-lg btn-ghost" href="/about">
            About OCaml
          </a>
        </div>
        <div class="mt-6">
          <a class="text-2xl text-primary dark:text-dark-primary font-semibold" href="/releases/5.4.1">Latest release: 5.4.1</a>
        </div>
        <div class="mt-2">
          <a class="text-2xl text-primary dark:text-dark-primary font-semibold" href="/releases/4.14.3">Long Term Support release: 4.14.3</a>
        </div>
      </div>
      <div class="lg:flex-1 flex justify-center">
        <div class="bg-code-background flex flex-col w-full max-w-xl min-w-xl rounded-3xl codebox">
          <div class="border-solid border-b border-gray-50 border-opacity-30 p-5">
            <div class="flex space-x-2 mt-2">
              <div class="h-3 w-3 rounded-full border-2 border-solid border-orange-500 border-opacity-80"></div>
              <div class="h-3 w-3 rounded-full border-2 border-solid border-yellow-500 border-opacity-80"></div>
              <div class="h-3 w-3 rounded-full border-2 border-solid border-green-500 border-opacity-80"></div>
            </div>
          </div>
          <div style="flex: 1 1 50%" class="py-2 px-6 text-white text-opacity-50 overflow-auto">
            <div class="text-left overflow-auto">
              <pre id="output" class="flex flex-col w-full code-preview text-white text-sm space-y-1 font-medium">
<code><span title="prompt">#</span> <span><span class="text-blue-500 ">let</span> <span class="text-code-yellow ">square</span> x = x * x</span>
<span aria-label="OCaml responds with"><i class="text-content dark:text-dark-content ">val square : int -&gt; int = &lt; fun &gt;</i></span>
<span><span title="prompt">#</span> square 3</span>
<span aria-label="OCaml responds with"><i class="text-content dark:text-dark-content ">- : int = 9</i></span>
<span><span title="prompt">#</span> <span class="text-blue-500 ">let rec</span> <span class="text-code-yellow ">factorial</span> x =</span>
<span><span class="text-blue-500  ml-4">if</span> x &lt;= 1 <span class="text-blue-500 ">then</span> 1 <span class="text-blue-500">else</span> x * factorial (x - 1)</span>
<span aria-label="OCaml responds with"><i class="text-content dark:text-dark-content">val factorial : int -&gt; int = &lt; fun &gt;</i></span>
<span><span title="prompt">#</span> factorial 5</span>
<span aria-label="OCaml responds with"><i class="text-content dark:text-dark-content ">- : int = 120</i></span>
<span><span title="prompt">#</span> square 120</span>
<span aria-label="OCaml responds with"><i class="text-content dark:text-dark-content">- : int = 14400</i></span></code>
              </pre>
            </div>
          </div>
          <div class="flex-1 flex py-2 px-6 text-white text-opacity-50">
            <a
              href="/play"
              class="px-4 ml-2 h-10 text-sm items-center text-white border border-gray-100 rounded-lg border-opacity-50 flex">
              <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" class="h-5 w-5 mr-2">
  <path d="M16.862 4.487L18.549 2.799C18.9007 2.44733 19.3777 2.24976 19.875 2.24976C20.3723 2.24976 20.8493 2.44733 21.201 2.799C21.5527 3.15068 21.7502 3.62766 21.7502 4.125C21.7502 4.62235 21.5527 5.09933 21.201 5.451L6.832 19.82C6.30332 20.3484 5.65137 20.7367 4.935 20.95L2.25 21.75L3.05 19.065C3.26328 18.3486 3.65163 17.6967 4.18 17.168L16.863 4.487H16.862ZM16.862 4.487L19.5 7.125" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>


              Try the Playground
            </a>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
<div class="py-8 md:py-12 py-2 bg-acm-award">
  <div class="container-fluid space-y-24 lg:space-y-32">
    <div class="text-center md:text-left flex flex-col md:flex-row gap-6">
      <div class="md:w-60">
        <img class="mx-auto w-40" src="/_/NDBkZDQ2N2U3Y2VmM2I1NWZkNTk0NWJjOTNjNGYyYmE/img/acm_award_banner/acm_award_cup.svg" alt="illustration of a cup">
      </div>
      <div class="space-y-6">
        <h2 class="font-regular text-white">The <strong>OCaml Compiler</strong> has been <strong>recognised</strong> by <strong>SIGPLAN</strong> for their prestigious Programming Languages Software Award</h2>
        <div class="text-xl text-white mt-3 italic">
          <strong>Fourteen core OCaml developers</strong> are featured for their
          significant contributions to the project
        </div>
        <div class="inline-flex md:flex gap-8">
        <a class="btn btn-md" href="/news/sigplan_announcement">Read more</a>
        <div class="hidden md:block md:flex-grow">
          <img class="ml-auto" src="/_/MWI2MzIxNGY1MGU1YjI5YWEzMzE5N2NkZjYxOTk2OWE/img/acm_award_banner/acm_logo.png" alt="illustration of a cup">
        </div>
        </div>
      </div>
    </div>
  </div>
</div>
<div class="py-12 lg:py-24 py-2">
  <div class="container-fluid space-y-24 lg:space-y-32">
    <div class="text-center">
      <h2 class="font-bold text-title dark:text-dark-title">Trusted by Industry Leaders</h2>
      <div class="text-content dark:text-dark-content text-base mt-3">
        These companies and organisations rely on OCaml every day — along with thousands of other developers. See <a href="/industrial-users" class="text-primary dark:text-dark-primary">Success Stories</a>
      </div>
      <div class="flex flex-row justify-center m-auto flex-wrap py-8 items-center">
          <div class="mx-8 my-4 dark:bg-dark-white py-4 px-12 rounded-md">
              <img class="h-8" src="/_/OGI2M2JmY2NkYzQ0NzNjNTRhNGQ3ZDhiZTQyMjhjNTY/logos/facebook.svg" alt="Facebook">
          </div>
          <div class="mx-8 my-4 dark:bg-dark-white py-4 px-12 rounded-md">
              <img class="h-8" src="/_/ODdlNDViNTBkNGY4YjFiNzBkY2E2ZTA5OTQwMmJiMWY/logos/microsoft.svg" alt="Microsoft">
          </div>
          <div class="mx-8 my-4 dark:bg-dark-white py-4 px-12 rounded-md">
              <img class="h-8" src="/_/OGNjZjBhMjg4MjQ2NDlmMWNiODE0ZGJjYjM5YzhiMmU/logos/docker.svg" alt="Docker">
          </div>
          <div class="mx-8 my-4 dark:bg-dark-white py-4 px-12 rounded-md">
              <img class="h-8" src="/_/Mzc0OTY1YzIzYWI2YmJkMzVlNGUzNThiNDM0ZGRlNDI/logos/janestreet.svg" alt="Jane Street">
          </div>
          <div class="mx-8 my-4 dark:bg-dark-white py-4 px-12 rounded-md">
              <img class="h-8" src="/_/ZGJiYTQ0NTA0MjQyMDIzMGU2YTJjZDFiNDAxY2E5YjA/logos/bloomberg.svg" alt="Bloomberg">
          </div>
          <div class="mx-8 my-4 dark:bg-dark-white py-4 px-12 rounded-md">
              <img class="h-8" src="/_/ZGVjYTI0ZGJjNzYzZmRlZGQ3OWI0MjgxYTUyZGFmZjU/logos/tezos.svg" alt="Tezos">
          </div>
          <div class="mx-8 my-4 dark:bg-dark-white py-4 px-12 rounded-md">
              <img class="h-8" src="/_/MjcxNDQ0ZThiMDY2NjA0Y2ExNWRmZTRiOTQ2Y2M5ZWQ/logos/ahrefs.svg" alt="Ahrefs">
          </div>
      </div>
    </div>
  </div>
</div>

<div class="bg-background dark:bg-dark-background">
  <div class="container-fluid">
    <h2 class="font-bold text-center text-title dark:text-dark-title pt-12">Why OCaml?</h2>
    <div class="pt-4 pb-24 lg:pt-24 space-y-20 md:space-y-40">
      <div class="flex gap-10 lg:gap-24 flex-col lg:flex-row-reverse justify-between items-center">
        <div class="lg:flex-1 mt-10 lg:mt-0">
          <div class="text-base">
            <div class="h-12 w-12 text-white rounded-xl flex bg-gradient-to-br from-blue-400 to-blue-600">
              <svg xmlns="http://www.w3.org/2000/svg" class="h-7 w-7 m-auto" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z" />
</svg>


            </div>
            <h3>
              <div class="text-lg my-4 font-bold" style="color: #225b90">
                RELIABILITY
              </div>
              <p class="text-title dark:text-dark-title font-bold">Powerful Type Safety Made Simple</p>
            </h3>
            <p class="my-4 text-lg text-content dark:text-dark-content">
              OCaml’s lightweight but highly expressive type system catches more bugs at compile time while garbage collection allows you to focus on application logic instead of memory management.
              Large, complex codebases become easy to maintain and refactor.
              OCaml empowers you to create mission-critical software with
              highest security- and safety-requirements in environments with
              ever-changing requirements!
            </p>
          </div>
        </div>
        <div class="lg:flex-1 lg:mt-0 mt-10 flex justify-center">
          <img src="/_/ZTM4NWExMjJiZjAwZjEzMWY5MTNjYjZiZjNhNTFiODc/img/home/safe-stable.svg" alt="An example OCaml program defining nested lists in OCaml. A terminal output also shows the compiler catching a type error where a pattern-match was not exhaustive.">
        </div>
      </div>

      <div class="flex gap-10 lg:gap-24 flex-col lg:flex-row justify-between">
         <div class="lg:flex-1 mt-10 lg:mt-0 flex items-center">
          <div class="text-base">
            <div class="h-12 w-12 text-white rounded-xl flex bg-gradient-to-br from-purple-400 to-purple-600">
              <svg xmlns="http://www.w3.org/2000/svg" class="h-7 w-7 m-auto" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 14v3m4-3v3m4-3v3M3 21h18M3 10h18M3 7l9-4 9 4M4 10h16v11H4V10z" />
</svg>


            </div>
            <div class="text-lg my-4 font-bold text-purple-600">
              PRODUCTIVITY
            </div>
            <h3 class="text-title dark:text-dark-title font-bold">
              First-Class Editor and Tooling
            </h3>
            <p class="my-4 text-lg text-content dark:text-dark-content">
              OCaml comes with deep integrations for VS Code, Vim or Emacs to provide type inspection, autocomplete and more.
              Between Opam, a popular package manager; Utop, a powerful interactive REPL; and <code>odoc</code>,
              an easy-to-use documentation generator, OCaml programmers have access to a complete, modern developer experience.
            </p>
          </div>
        </div>
        <div class="lg:flex-1 lg:mt-0 mt-10 flex justify-center">
          <div style="--swiper-navigation-color: #fff;--swiper-pagination-color: #fff;" class="swiper mySwiper">
            <div class="swiper-wrapper">
              <div class="swiper-slide">
                <div>
                  <img src="/_/YTgwYjYyMzhlYzQwNTRhNmRlMzJkNTZmMDk3YWM2NTY/logos/vscode.svg" width="56" alt="VS Code">
                  <img src="/_/YzA5ZWY4OTQ5Mjc1NjA4MmQ3NzAyNThmMWJmZmZlZTE/img/home/vscode-preview.png" alt="">
                </div>
              </div>
              <div class="swiper-slide">
                <div>
                <img src="/_/MzEyZWI2NmFiMWY4ZGEwZmRkMDcxYTgzNzU5NjM5NzA/logos/vim.svg" width="56" alt="Vim">
                <img src="/_/ZDkzZDYxMDlmMmZjMTdhNjdhNTBhMTg4MTE1ZjFjMGI/img/home/vim-preview.png" alt="">
                </div>
              </div>
              <div class="swiper-slide">
                <div>
                <img src="/_/NjBkMWJkNDgzZjAwMTQ4MjlmYjUyN2Q1ZDMwZDAxMzk/logos/emacs.svg" width="56" alt="Emacs">
                <img src="/_/YjEyNTk1YjM2ZmIyMWFlNGFlYTM2MTAxYWQ1NDU1Yzg/img/home/emac-preview.png" alt="">
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="flex gap-10 lg:gap-24 flex-col lg:flex-row-reverse justify-between">
        <div class="lg:flex-1">
          <div class="text-base">
            <div class="h-12 w-12 text-white dark:text-dark-white rounded-xl flex bg-gradient-to-br from-teal-400 to-teal-600">
              <svg xmlns="http://www.w3.org/2000/svg" class="h-7 w-7 m-auto" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z" />
</svg>


            </div>
            <h3>
              <div class="text-lg my-4 font-bold text-secondary dark:text-dark-secondary">PERFORMANCE</div>
              <div class="text-title dark:text-dark-title font-bold">
                Fast Compiler and Applications
              </div>
            </h3>
            <p class="my-4 font-normal text-lg text-content dark:text-dark-content">
              OCaml offers great runtime performance without compromising on developer experience:
              The bytecode compiler generates small, highly portable executables blazingly fast;
              the native code compiler produces highly-efficient machine code. Despite this focus
              on performance, the OCaml compiler has always been exceptionally reliable and stable
            </p>
          </div>
        </div>
        <div class="lg:flex-1 lg:mt-0 mt-10 flex justify-center">
          <img src="/_/ZWVmZmU2MzczN2FjZTk2OGE5MDViNTdmMmNmNmQwMTA/img/home/workfaster.svg" alt="">
        </div>
      </div>
    </div>
  </div>
</div>
<div class="py-24 overflow-hidden">
  <div class="container-fluid">
    <div class="prose dark:prose-invert mx-auto">
        <h2 class="font-bold">Exceptionally Robust and Reliable</h2>
        <blockquote class="font-normal">
        Despite all this testing, we have never had a single XenServer defect reported from
        internal testing or from the field that can be traced back to a bug in the
        OCaml runtime or compiler. (During development we did once find a minor compiler bug,
        triggered when compiling auto-generated OCaml code with many function arguments,
        but this was already fixed in the development branch by the time we reported it
        and so no interaction with the maintainers at INRIA was required.)
        </blockquote>

        -- Scott, D. & Sharp, R. & Gazagnaire, T. & Madhavapeddy, A. (2010).
          <a href="https://anil.recoil.org/papers/2010-icfp-xen.pdf">Using Functional Programming within an Industrial Product Group: Perspectives and Perceptions.</a>
          ACM SIGPLAN Notices. 45. 87-92. 10.1145/1863543.1863557.
    </div>
  </div>
</div>
<div class="bg-background dark:bg-dark-background pt-24 pb-14 overflow-hidden">
  <div class="container-fluid grid grid-cols-1 lg:grid-cols-2 gap-10 items-stretch mb-14"> 
      <div class="flex flex-col">
        <h3 class="font-bold text-title dark:text-dark-title">Releases</h3>
        <div class="flex-grow p-10 mt-7 bg-white dark:bg-dark-card border rounded-2xl h-full">
        <div class="text-primary dark:text-dark-primary text-sm mb-4 uppercase">Recent Releases</div>
      
        
          <div class="mb-4">
          <a href="/releases/5.4.1">
            <h3 class="font-bold mb-6 text-title dark:text-dark-title hover:underline">
              5.4.1 <span class="text-sm">(2026-02-17)</span>
            </h3>
          </a>
          <div class="prose dark:prose-invert prose-sm"><ul>
<li>Security hardening of the Marshal module (<a href="https://osv.dev/vulnerability/OSEC-2026-01">OSEC-2026-01</a>)</li>
<li>Fix for <code>-pack</code> mode on macOS</li>
<li>Fix for miscompilation of string operations</li>
<li>Several ThreadSanitizer (TSan) fixes</li>
</ul>
</div>
           </div>
        
          <div class="mb-4">
          <a href="/releases/5.4.0">
            <h3 class="font-bold mb-6 text-title dark:text-dark-title hover:underline">
              5.4.0 <span class="text-sm">(2025-10-09)</span>
            </h3>
          </a>
          <div class="prose dark:prose-invert prose-sm"><ul>
<li>Labelled tuples</li>
<li>Immutable arrays</li>
<li>Array literal syntax support for immutable arrays and <code>floatarray</code>s</li>
<li>Atomic record fields</li>
<li>Four new standard library modules: Pair, Pqueue, Repr, and Iarray</li>
<li>Restored &quot;memory cleanup upon exit&quot; mode</li>
<li>New section in the manual on native code profiling on Linux and macOS</li>
<li>Many runtime improvements</li>
<li>More than thirty new standard library functions</li>
<li>Nearly a dozen improved error messages</li>
<li>Improved support for Merlin's renaming feature.</li>
<li>Around fifty bug fixes</li>
</ul>
</div>
           </div>
        
       
          <a href="/releases" class="btn btn-ghost rounded mt-8">
            <span>See All Releases</span>
            <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true">
  <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" />
</svg>


          </a>
       </div>
      </div>
      <div class="flex flex-col">
          <h3 class="font-bold text-title dark:text-dark-title">Changelog</h3>
          <div class="flex-grow p-10 mt-7 bg-white dark:bg-dark-card border rounded-2xl h-full">
            <a href="/changelog">
            <div class="text-primary dark:text-dark-primary text-sm mb-4 uppercase">Releases & Updates</div>
            <h3 class="font-bold mb-6 text-title dark:text-dark-title">
              Compiler and Platform Tools
            </h3>
            </a>
            <div class="pl-8 border-l-2 border-separator_20 dark:border-dark-separator_30">
  <div class="flex flex-col">   
    <div class="mb-6">
        <div class="relative pb-2">
            <div class="absolute block -left-11 w-6 h-6 mt-0.5 text-primary dark:text-dark-primary bg-white dark:bg-dark-card">
              <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z" />
</svg>


            </div>
            <a href="/changelog/2026-10-04-ocaml-lsp-1260" class="my-0 font-sans text-xl tracking-normal font-extrabold leading-7 changelog-title whitespace-normal break-all text-title dark:text-dark-title hover:underline">OCaml-LSP 1.26.0</a>
            <time datetime="2026-10-04" class="block mt-1 font-sans text-sm text-content dark:text-dark-content">04 Oct 2026</time>
        </div>
        <p class="prose dark:prose-invert prose-orange">
          
This new release of OCaml-LSP brings several new features and improvements, including new custom re...
        </p>
        <a href="/changelog" class="text-primary dark:text-dark-primary mt-2 hover:underline">
          See full changelog
        </a>
    </div>
  </div>
</div>
<div class="pl-8 border-l-2 border-separator_20 dark:border-dark-separator_30">
  <div class="flex flex-col">   
    <div class="mb-6">
        <div class="relative pb-2">
            <div class="absolute block -left-11 w-6 h-6 mt-0.5 text-primary dark:text-dark-primary bg-white dark:bg-dark-card">
              <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z" />
</svg>


            </div>
            <a href="/changelog/2026-10-04-merlin-570-504" class="my-0 font-sans text-xl tracking-normal font-extrabold leading-7 changelog-title whitespace-normal break-all text-title dark:text-dark-title hover:underline">Merlin 5.7.0-504</a>
            <time datetime="2026-10-04" class="block mt-1 font-sans text-sm text-content dark:text-dark-content">04 Oct 2026</time>
        </div>
        <p class="prose dark:prose-invert prose-orange">
          
We're happy to announce the release of Merlin 5.7.0-504. This release comes with a number of bug fi...
        </p>
        <a href="/changelog" class="text-primary dark:text-dark-primary mt-2 hover:underline">
          See full changelog
        </a>
    </div>
  </div>
</div>
<div class="pl-8 border-l-2 border-separator_20 dark:border-dark-separator_30">
  <div class="flex flex-col">   
    <div class="mb-6">
        <div class="relative pb-2">
            <div class="absolute block -left-11 w-6 h-6 mt-0.5 text-primary dark:text-dark-primary bg-white dark:bg-dark-card">
              <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z" />
</svg>


            </div>
            <a href="/changelog/2026-04-16-opam-2-5-1" class="my-0 font-sans text-xl tracking-normal font-extrabold leading-7 changelog-title whitespace-normal break-all text-title dark:text-dark-title hover:underline">opam 2.5.1</a>
            <time datetime="2026-04-16" class="block mt-1 font-sans text-sm text-content dark:text-dark-content">16 Apr 2026</time>
        </div>
        <p class="prose dark:prose-invert prose-orange">
          
_Feedback on this post is welcomed on [Discuss](https://discuss.ocaml.org/t/ann-opam-2-5-1/17997)!_...
        </p>
        <a href="/changelog" class="text-primary dark:text-dark-primary mt-2 hover:underline">
          See full changelog
        </a>
    </div>
  </div>
</div>

            <a href="/changelog" class="btn btn-ghost rounded mt-8">
            <span>See Full Changelog</span>
            <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true">
  <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" />
</svg>


            </a>
          </div>
      </div>
  </div>
</div>
<div class="py-28 bg-background dark:bg-dark-background">
  <div class="container-fluid">
    <div class="px-15">
      <h2 class="text-title dark:text-dark-title font-bold mb-6">Users of OCaml</h2>
      <p class="text-lg text-content dark:text-dark-content mb-16">
        OCaml is used by thousands of developers, companies, research labs, teachers, and more. Learn how it fits your use case.
      </p>
    </div>
    <div class="flex flex-col lg:flex-row justify-between lg:space-x-20 space-y-10 lg:space-y-0">
      <div class="shadow-lg p-10 bg-white rounded-2xl border dark:bg-dark-card">
        <div class="flex flex-row items-center justify-between relative pb-8">
          <h3 class="font-semibold text-title dark:text-dark-title">For Educators</h3>
        </div>
        <div>
          <p class="text-base text-title dark:text-dark-title">
            With its mathematical roots, OCaml has always had strong ties to academia.
            It is taught in universities around the world, and has accrued an ever-growing body of research.
            Learn more about the academic rigor that defines the culture of OCaml.
          </p>
          <a class="btn mt-10 py-8" href="/academic-users">Learn more</a>
        </div>
      </div>
      <div class="shadow-lg p-10 bg-white rounded-2xl border dark:bg-dark-card">
        <div class="flex flex-row items-center justify-between relative pb-8">
          <h3 class="font-semibold text-title dark:text-dark-title">For Industrial Users</h3>
        </div>
        <div>
          <p class="text-base text-content dark:text-dark-content">
            OCaml's powerful compile-time guarantees and high performance empower
            companies to provide reliable and speedy services and products.
            Learn more about how OCaml is used in the industry: explore success stories and discover companies that use OCaml.
          </p>
          <a class="btn mt-10 py-8" href="/industrial-users">Learn more</a>
        </div>
      </div>
    </div>
  </div>
</div>
<div class="intro-section-simple dark:dark-intro-section-simple lg:py-32 py-24">
  <div class="container-fluid">
    <div class="">
      <div class="">
        <h2 class="font-bold text-title dark:text-dark-title mb-6">Curated Resources</h2>
        <p class="text-lg text-content dark:text-dark-content mb-16">
          Get up to speed quickly to enjoy the benefits of the OCaml programming language across your projects.
        </p>
      </div>
      <div class="grid lg:grid-cols-3 gap-8 lg:gap-16">
        <a href="/install" class="card dark:dark-card p-4 text-title dark:text-dark-title">
          <svg xmlns="http://www.w3.org/2000/svg" class="h-16 w-16 mb-8" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14.752 11.168l-3.197-2.132A1 1 0 0010 9.87v4.263a1 1 0 001.555.832l3.197-2.132a1 1 0 000-1.664z" />
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>


          <p class="font-semibold text-xl mb-3">Getting Started</p>
          <p>Install OCaml, set up your favorite text editor and start your first project.</p>
        </a>
        <a href="/manual" class="card dark:dark-card p-4 text-title dark:text-dark-title">
          <svg xmlns="http://www.w3.org/2000/svg" class="h-16 w-16 mb-8" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z" />
</svg>


          <p class="font-semibold text-xl mb-3">Language Manual</p>
          <p>Read the reference manual of the language and documentation on the compiler.</p>
        </a>
        <a href="/books" class="card dark:dark-card p-4 text-title dark:text-dark-title">
          <svg xmlns="http://www.w3.org/2000/svg" class="h-16 w-16 mb-8" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
  <path d="M2.46875 15.1935L2.5293 4.46692H1.31836V18.1154C2.98242 17.6857 4.65234 17.4122 6.33398 17.4005C7.88672 17.3908 9.43945 17.6075 10.9961 18.1349C10.0293 17.3517 8.95117 16.7755 7.80078 16.4005C6.35156 15.9279 4.78516 15.7716 3.17969 15.9083C2.81641 15.9376 2.5 15.6681 2.46875 15.3068C2.46484 15.2677 2.46484 15.2306 2.46875 15.1935ZM20.2383 3.90638C20.2344 3.87513 20.2305 3.84192 20.2305 3.80677C20.2305 3.77356 20.2324 3.74036 20.2383 3.70716V1.53528C18.7148 1.39075 17.1445 1.55872 15.7734 2.07825C14.4922 2.56458 13.3867 3.36341 12.668 4.50794V16.879C13.7852 16.1329 14.9277 15.5197 16.1016 15.1017C17.4395 14.6251 18.8145 14.3986 20.2383 14.5118V3.90638ZM21.5566 3.14856H23.3418C23.7051 3.14856 24 3.44349 24 3.80677V18.9747C24 19.338 23.7051 19.6329 23.3418 19.6329C23.2676 19.6329 23.1953 19.6212 23.1289 19.5978C21.293 19.0724 19.4688 18.7228 17.6621 18.7111C15.9004 18.6993 14.1406 19.0099 12.373 19.7892C12.2637 19.8615 12.1328 19.9005 11.998 19.8986C11.8652 19.9005 11.7344 19.8615 11.623 19.7892C9.85742 19.0079 8.0957 18.6993 6.33398 18.7111C4.52734 18.7228 2.70508 19.0724 0.867188 19.5978C0.800781 19.6212 0.728516 19.6329 0.654297 19.6329C0.294922 19.6349 0 19.34 0 18.9767V3.80677C0 3.44349 0.294922 3.14856 0.658203 3.14856H2.53516L2.54688 0.949345C2.54883 0.632939 2.77148 0.37122 3.07031 0.30872C4.80273 -0.0526083 6.9082 0.0372355 8.75391 0.744267C10.0293 1.23255 11.1875 2.01184 12.0332 3.13685C12.8867 2.08802 14.0273 1.33411 15.3105 0.847782C17.0645 0.181767 19.0879 0.0216105 20.9922 0.300907C21.3203 0.347782 21.5547 0.630986 21.5547 0.951298V3.14856H21.5566ZM13.3066 18.0353C14.7617 17.5783 16.2148 17.3908 17.668 17.3986C19.3496 17.4083 21.0195 17.6837 22.6836 18.1134V4.46692H21.5566V15.2521C21.5566 15.6154 21.2617 15.9103 20.8984 15.9103C20.8457 15.9103 20.7949 15.9044 20.7461 15.8927C19.3047 15.6661 17.9082 15.8536 16.5449 16.34C15.4473 16.7325 14.3691 17.3185 13.3066 18.0353ZM11.3516 16.7521V4.48841C10.6621 3.27161 9.54688 2.45716 8.28711 1.97474C6.85938 1.42786 5.25586 1.30481 3.85742 1.50403L3.7832 14.5529C5.30859 14.4982 6.80078 14.6915 8.20508 15.1505C9.32227 15.5138 10.3809 16.047 11.3516 16.7521Z" fill="currentColor"/>
</svg>


          <p class="font-semibold text-xl mb-3">Books</p>
          <p>Discover OCaml books from expert programmers and researchers - from beginner level to advanced topics.</p>
        </a>
        <a href="/api" class="card dark:dark-card p-4 text-title dark:text-dark-title">
          <svg xmlns="http://www.w3.org/2000/svg" class="h-16 w-16 mb-8" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 9l3 3-3 3m5 0h3M5 20h14a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z" />
</svg>


          <p class="font-semibold text-xl mb-3">Standard Library</p>
          <p>Searchable API documentation.</p>
        </a>
        <a href="/exercises" class="card dark:dark-card p-4 text-title dark:text-dark-title">
          <svg xmlns="http://www.w3.org/2000/svg" class="h-16 w-16 mb-8" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 11.5V14m0-2.5v-6a1.5 1.5 0 113 0m-3 6a1.5 1.5 0 00-3 0v2a7.5 7.5 0 0015 0v-5a1.5 1.5 0 00-3 0m-6-3V11m0-5.5v-1a1.5 1.5 0 013 0v1m0 0V11m0-5.5a1.5 1.5 0 013 0v3m0 0V11" />
</svg>


          <p class="font-semibold text-xl mb-3">Exercises</p>
          <p>Learn OCaml by solving problems on a variety of topics, from easy to challenging.</p>
        </a>
        <a href="/papers" class="card dark:dark-card p-4 text-title dark:text-dark-title">
          <svg xmlns="http://www.w3.org/2000/svg" class="h-16 w-16 mb-8" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7v8a2 2 0 002 2h6M8 7V5a2 2 0 012-2h4.586a1 1 0 01.707.293l4.414 4.414a1 1 0 01.293.707V15a2 2 0 01-2 2h-2M8 7H6a2 2 0 00-2 2v10a2 2 0 002 2h8a2 2 0 002-2v-2" />
</svg>


          <p class="font-semibold text-xl mb-3">Papers</p>
          <p>Explore papers that have influenced OCaml and other functional programming languages.</p>
        </a>
      </div>
    </div>
  </div>
</div>
<div class="bg-background dark:bg-dark-background py-20 overflow-hidden">
  <div class="container-fluid">
    <div class="grid grid-cols-1 lg:grid-cols-2 items-center">
      <div class="space-y-8">
        <div class="space-y-6">
          <h2 class="font-bold text-title dark:text-dark-title">OCaml Packages</h2>
          <p class="text-lg text-content dark:text-dark-content">
            Explore thousands of open-source OCaml packages with their
            documentation.
          </p>
        </div>
        <a href="/packages" class="btn btn-lg mt-8 flex items-center">
          <span>Explore packages</span>
          <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true">
  <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 4.5l7.5 7.5-7.5 7.5" />
</svg>


        </a>
      </div>
    </div>
  </div>
</div>
<script>
  var swiper = new Swiper(".mySwiper", {
    loop: true,
    autoplay: { delay: 5000, disableOnInteraction: false, },
    slidesPerView: 'auto',
    spaceBetween: 10,
    thumbs: {
      swiper: swiper,
    },
  });
</script>
</main>

    <button class="fixed bottom-8 right-10 md:bottom-[5rem] lg:bottom-[8.37rem] lg:right-[6.5rem] border-0 hidden focus:outline-none z-50 rounded-full shadow-custom p-4 bg-primary dark:bg-dark-primary" onclick="scrollToTop()" id="scrollToTop" title="Scroll to top"><svg class="h-6 w-6" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
  <path d="M4.5 10.5L12 3M12 3L19.5 10.5M12 3V21" stroke="white" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

</button>

    <footer x-data class="border-t border-separator_30 dark:border-dark-separator_30 bg-dark-sand dark:bg-dark-card" aria-labelledby="footer-heading">
  <h2 id="footer-heading" class="sr-only">Footer</h2>
  <div class="mx-auto max-w-7xl px-6 py-16 lg:px-8">
    <div class="flex w-full items-center justify-between mb-8">
      <a href="/"><img class="h-8 dark:hidden" src="/_/MDBjN2M4YjIxY2Y1YWExZWE3Njk4M2FiZTg1NWZjNTM/logo-with-name.svg" alt="OCaml">
        <img class="h-8 hidden dark:inline" src="/_/MTE3YWE5YzJlZmExNmYyMmI3ZmEwYjliMDEwNDBkMDY/logo-with-name-white.svg" alt="OCaml">
      </a>
      <div class="hidden md:flex">
        <button class="flex grow basis-0 justify-center items-center py-2 px-4 text-sm border rounded-l rounded-l-full border-r-0" :class='$store.themeSettings.preference === "light" ? "bg-gradient-to-r from-[#FFA932] to-[#C24F1E] text-white dark:text-dark-title outline-none" : "bg-white text-content outline-2 outline-card_border dark:outline-dark-separator_30"'
  @click='$store.themeSettings.setPreference("light")'
>
  <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="none" class="mr-2">
  <path d="M7 0.5V2.125M11.5962 2.40378L10.4472 3.55283M13.5 7H11.875M11.5962 11.5962L10.4472 10.4472M7 11.875V13.5M3.55283 10.4472L2.40378 11.5962M2.125 7H0.5M3.55283 3.55283L2.40378 2.40378M9.70833 7C9.70833 7.71829 9.42299 8.40717 8.91508 8.91508C8.40717 9.42299 7.71829 9.70833 7 9.70833C6.28171 9.70833 5.59283 9.42299 5.08492 8.91508C4.57701 8.40717 4.29167 7.71829 4.29167 7C4.29167 6.28171 4.57701 5.59283 5.08492 5.08492C5.59283 4.57701 6.28171 4.29167 7 4.29167C7.71829 4.29167 8.40717 4.57701 8.91508 5.08492C9.42299 5.59283 9.70833 6.28171 9.70833 7Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg>


  Light
</button>


<button class="flex grow basis-0 justify-center items-center py-2 px-4 text-sm border border-r-0" :class='$store.themeSettings.preference === "dark" ? "bg-gradient-to-r from-[#0F254F] to-[#0B1228] text-white dark:text-dark-title outline-none" : "bg-white text-content outline-2 outline-card_border dark:outline-dark-separator_30"'
  @click='$store.themeSettings.setPreference("dark")'
>
  <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none" class="mr-2">
  <path d="M11.1573 7.90842C10.5134 8.17678 9.8226 8.3145 9.125 8.31358C6.20812 8.31358 3.84375 5.94921 3.84375 3.03233C3.84375 2.31192 3.98783 1.62562 4.24892 1C3.28663 1.40144 2.46465 2.07865 1.88651 2.94635C1.30836 3.81404 0.999911 4.83342 1 5.87608C1 8.79296 3.36437 11.1573 6.28125 11.1573C7.32391 11.1574 8.34329 10.849 9.21099 10.2708C10.0787 9.69268 10.7559 8.8707 11.1573 7.90842Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg>


  Dark
</button>


<button class="flex grow basis-0 justify-center items-center py-2 px-4 text-sm border rounded-r rounded-r-full" :class='$store.themeSettings.preference === "system" ? "bg-gradient-to-r from-[#2B7866] to-[#004039] text-white dark:text-dark-title outline-none" : "bg-white text-content outline-2 outline-card_border dark:outline-dark-separator_30"'
  @click='$store.themeSettings.setPreference("system")'
>
  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" class="mr-2">
  <path d="M7.19553 2.955C7.26303 2.5485 7.61553 2.25 8.02803 2.25H9.97278C10.3853 2.25 10.7378 2.5485 10.8053 2.955L10.965 3.91575C11.0123 4.19625 11.1998 4.43025 11.4488 4.56825C11.5043 4.59825 11.559 4.6305 11.6138 4.6635C11.8575 4.8105 12.1538 4.85625 12.42 4.7565L13.3328 4.4145C13.5198 4.34416 13.7258 4.34248 13.9139 4.40978C14.1021 4.47708 14.2603 4.60899 14.3603 4.782L15.3323 6.46725C15.4321 6.64028 15.4672 6.8431 15.4315 7.03962C15.3958 7.23615 15.2916 7.41363 15.1373 7.5405L14.385 8.16075C14.1653 8.3415 14.0565 8.6205 14.0625 8.90475C14.0636 8.9685 14.0636 9.03225 14.0625 9.096C14.0565 9.3795 14.1653 9.6585 14.385 9.83925L15.138 10.4595C15.456 10.722 15.5385 11.1758 15.333 11.532L14.3595 13.2172C14.2597 13.3902 14.1017 13.5222 13.9137 13.5896C13.7257 13.657 13.5198 13.6556 13.3328 13.5855L12.42 13.2435C12.1538 13.1438 11.8575 13.1895 11.613 13.3365C11.5587 13.3696 11.5037 13.4016 11.448 13.4325C11.1998 13.5697 11.0123 13.8037 10.965 14.0842L10.8053 15.045C10.7378 15.4523 10.3853 15.75 9.97278 15.75H8.02728C7.61478 15.75 7.26303 15.4515 7.19478 15.045L7.03503 14.0842C6.98853 13.8037 6.80103 13.5698 6.55203 13.4318C6.49642 13.4011 6.44141 13.3693 6.38703 13.3365C6.14328 13.1895 5.84703 13.1438 5.58003 13.2435L4.66728 13.5855C4.48033 13.6556 4.27456 13.6572 4.08656 13.5899C3.89856 13.5226 3.74051 13.3908 3.64053 13.218L2.66778 11.5328C2.56799 11.3597 2.53282 11.1569 2.56852 10.9604C2.60423 10.7639 2.7085 10.5864 2.86278 10.4595L3.61578 9.83925C3.83478 9.65925 3.94353 9.3795 3.93828 9.096C3.93711 9.03226 3.93711 8.96849 3.93828 8.90475C3.94353 8.61975 3.83478 8.3415 3.61578 8.16075L2.86278 7.5405C2.70869 7.41367 2.60454 7.23633 2.56884 7.03997C2.53314 6.84361 2.56819 6.64095 2.66778 6.468L3.64053 4.78275C3.74042 4.6096 3.89854 4.47754 4.08672 4.4101C4.27489 4.34266 4.4809 4.34422 4.66803 4.4145L5.58003 4.7565C5.84703 4.85625 6.14328 4.8105 6.38703 4.6635C6.44103 4.6305 6.49653 4.599 6.55203 4.5675C6.80103 4.43025 6.98853 4.19625 7.03503 3.91575L7.19553 2.955Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
  <path d="M11.25 9C11.25 9.59674 11.0129 10.169 10.591 10.591C10.169 11.0129 9.59674 11.25 9 11.25C8.40326 11.25 7.83097 11.0129 7.40901 10.591C6.98705 10.169 6.75 9.59674 6.75 9C6.75 8.40326 6.98705 7.83097 7.40901 7.40901C7.83097 6.98705 8.40326 6.75 9 6.75C9.59674 6.75 10.169 6.98705 10.591 7.40901C11.0129 7.83097 11.25 8.40326 11.25 9Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg>


  System
</button>



      </div>
    </div>
    <div class="xl:grid xl:grid-cols-3 xl:gap-8">
      <div class="space-y-8">
        <p class="text-base leading-6 text-title dark:text-dark-content">Innovation. Community. Security.</p>
        <div class="flex space-x-6">
          
          <a href="https://github.com/ocaml" class="text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">
  <span class="sr-only">GitHub</span>
  <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
  <path fill-rule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clip-rule="evenodd" />
</svg>


</a>

          
          <a href="https://discord.gg/cCYQbqN" class="text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">
  <span class="sr-only">Discord</span>
  <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
  <path fill-rule="evenodd" d="M18.9419 5.29661C17.6473 4.69088 16.263 4.25066 14.8157 4C14.638 4.32134 14.4304 4.75355 14.2872 5.09738C12.7487 4.86601 11.2245 4.86601 9.7143 5.09738C9.57116 4.75355 9.3588 4.32134 9.17947 4C7.73067 4.25066 6.3448 4.6925 5.05016 5.29982C2.43887 9.24582 1.73099 13.0938 2.08493 16.8872C3.81688 18.1805 5.49534 18.9662 7.14548 19.4804C7.55291 18.9196 7.91628 18.3235 8.22931 17.6953C7.63313 17.4688 7.06211 17.1892 6.52256 16.8647C6.6657 16.7586 6.80571 16.6478 6.94098 16.5337C10.2318 18.0729 13.8074 18.0729 17.0589 16.5337C17.1958 16.6478 17.3358 16.7586 17.4774 16.8647C16.9362 17.1908 16.3637 17.4704 15.7675 17.697C16.0805 18.3235 16.4423 18.9212 16.8513 19.4819C18.503 18.9678 20.183 18.1822 21.915 16.8872C22.3303 12.4897 21.2056 8.67705 18.9419 5.29661ZM8.67765 14.5543C7.68977 14.5543 6.87963 13.632 6.87963 12.509C6.87963 11.3859 7.67247 10.4621 8.67765 10.4621C9.68285 10.4621 10.493 11.3843 10.4757 12.509C10.4772 13.632 9.68285 14.5543 8.67765 14.5543ZM15.3223 14.5543C14.3344 14.5543 13.5243 13.632 13.5243 12.509C13.5243 11.3859 14.3171 10.4621 15.3223 10.4621C16.3275 10.4621 17.1376 11.3843 17.1203 12.509C17.1203 13.632 16.3275 14.5543 15.3223 14.5543Z" clip-rule="evenodd" />
</svg>


</a>

          
          <a href="https://twitter.com/ocaml_org" class="text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">
  <span class="sr-only">Twitter</span>
  <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
  <path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84" />
</svg>


</a>

          
          <a href="https://watch.ocaml.org/" class="text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">
  <span class="sr-only">Peertube</span>
  <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
  <path fill-rule="evenodd" d="M5 2V12L12.4998 7.00047" clip-rule="evenodd" />
  <path fill-rule="evenodd" d="M5 12V22L12.4998 17.0005" clip-rule="evenodd" />
  <path fill-rule="evenodd" d="M12.4998 6.99951V16.9995L19.9995 12" clip-rule="evenodd" />
</svg>


</a>

          
          <a href="/planet.xml" class="text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">
  <span class="sr-only">RSS</span>
  <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
  <path fill-rule="evenodd" d="M15.2692 22H11.3846C11.3846 16.8462 7.11538 12.6154 2 12.6154V8.73077C9.26923 8.73077 15.2692 14.7308 15.2692 22ZM18 22C18 13.2308 10.7692 6 2 6V2C12.9615 2 22 11.0385 22 22H18Z" clip-rule="evenodd" />
  <path fill-rule="evenodd" d="M4.73077 22C6.23893 22 7.46154 20.7774 7.46154 19.2692C7.46154 17.7611 6.23893 16.5385 4.73077 16.5385C3.22261 16.5385 2 17.7611 2 19.2692C2 20.7774 3.22261 22 4.73077 22Z" clip-rule="evenodd" />
</svg>


</a>

          
        </div>
        <div class="flex w-full md:hidden">
          <button class="flex grow basis-0 justify-center items-center py-2 px-4 text-sm border rounded-l rounded-l-full border-r-0" :class='$store.themeSettings.preference === "light" ? "bg-gradient-to-r from-[#FFA932] to-[#C24F1E] text-white dark:text-dark-title outline-none" : "bg-white text-content outline-2 outline-card_border dark:outline-dark-separator_30"'
  @click='$store.themeSettings.setPreference("light")'
>
  <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14" fill="none" class="mr-2">
  <path d="M7 0.5V2.125M11.5962 2.40378L10.4472 3.55283M13.5 7H11.875M11.5962 11.5962L10.4472 10.4472M7 11.875V13.5M3.55283 10.4472L2.40378 11.5962M2.125 7H0.5M3.55283 3.55283L2.40378 2.40378M9.70833 7C9.70833 7.71829 9.42299 8.40717 8.91508 8.91508C8.40717 9.42299 7.71829 9.70833 7 9.70833C6.28171 9.70833 5.59283 9.42299 5.08492 8.91508C4.57701 8.40717 4.29167 7.71829 4.29167 7C4.29167 6.28171 4.57701 5.59283 5.08492 5.08492C5.59283 4.57701 6.28171 4.29167 7 4.29167C7.71829 4.29167 8.40717 4.57701 8.91508 5.08492C9.42299 5.59283 9.70833 6.28171 9.70833 7Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg>


  Light
</button>


<button class="flex grow basis-0 justify-center items-center py-2 px-4 text-sm border border-r-0" :class='$store.themeSettings.preference === "dark" ? "bg-gradient-to-r from-[#0F254F] to-[#0B1228] text-white dark:text-dark-title outline-none" : "bg-white text-content outline-2 outline-card_border dark:outline-dark-separator_30"'
  @click='$store.themeSettings.setPreference("dark")'
>
  <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" fill="none" class="mr-2">
  <path d="M11.1573 7.90842C10.5134 8.17678 9.8226 8.3145 9.125 8.31358C6.20812 8.31358 3.84375 5.94921 3.84375 3.03233C3.84375 2.31192 3.98783 1.62562 4.24892 1C3.28663 1.40144 2.46465 2.07865 1.88651 2.94635C1.30836 3.81404 0.999911 4.83342 1 5.87608C1 8.79296 3.36437 11.1573 6.28125 11.1573C7.32391 11.1574 8.34329 10.849 9.21099 10.2708C10.0787 9.69268 10.7559 8.8707 11.1573 7.90842Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg>


  Dark
</button>


<button class="flex grow basis-0 justify-center items-center py-2 px-4 text-sm border rounded-r rounded-r-full" :class='$store.themeSettings.preference === "system" ? "bg-gradient-to-r from-[#2B7866] to-[#004039] text-white dark:text-dark-title outline-none" : "bg-white text-content outline-2 outline-card_border dark:outline-dark-separator_30"'
  @click='$store.themeSettings.setPreference("system")'
>
  <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18" fill="none" class="mr-2">
  <path d="M7.19553 2.955C7.26303 2.5485 7.61553 2.25 8.02803 2.25H9.97278C10.3853 2.25 10.7378 2.5485 10.8053 2.955L10.965 3.91575C11.0123 4.19625 11.1998 4.43025 11.4488 4.56825C11.5043 4.59825 11.559 4.6305 11.6138 4.6635C11.8575 4.8105 12.1538 4.85625 12.42 4.7565L13.3328 4.4145C13.5198 4.34416 13.7258 4.34248 13.9139 4.40978C14.1021 4.47708 14.2603 4.60899 14.3603 4.782L15.3323 6.46725C15.4321 6.64028 15.4672 6.8431 15.4315 7.03962C15.3958 7.23615 15.2916 7.41363 15.1373 7.5405L14.385 8.16075C14.1653 8.3415 14.0565 8.6205 14.0625 8.90475C14.0636 8.9685 14.0636 9.03225 14.0625 9.096C14.0565 9.3795 14.1653 9.6585 14.385 9.83925L15.138 10.4595C15.456 10.722 15.5385 11.1758 15.333 11.532L14.3595 13.2172C14.2597 13.3902 14.1017 13.5222 13.9137 13.5896C13.7257 13.657 13.5198 13.6556 13.3328 13.5855L12.42 13.2435C12.1538 13.1438 11.8575 13.1895 11.613 13.3365C11.5587 13.3696 11.5037 13.4016 11.448 13.4325C11.1998 13.5697 11.0123 13.8037 10.965 14.0842L10.8053 15.045C10.7378 15.4523 10.3853 15.75 9.97278 15.75H8.02728C7.61478 15.75 7.26303 15.4515 7.19478 15.045L7.03503 14.0842C6.98853 13.8037 6.80103 13.5698 6.55203 13.4318C6.49642 13.4011 6.44141 13.3693 6.38703 13.3365C6.14328 13.1895 5.84703 13.1438 5.58003 13.2435L4.66728 13.5855C4.48033 13.6556 4.27456 13.6572 4.08656 13.5899C3.89856 13.5226 3.74051 13.3908 3.64053 13.218L2.66778 11.5328C2.56799 11.3597 2.53282 11.1569 2.56852 10.9604C2.60423 10.7639 2.7085 10.5864 2.86278 10.4595L3.61578 9.83925C3.83478 9.65925 3.94353 9.3795 3.93828 9.096C3.93711 9.03226 3.93711 8.96849 3.93828 8.90475C3.94353 8.61975 3.83478 8.3415 3.61578 8.16075L2.86278 7.5405C2.70869 7.41367 2.60454 7.23633 2.56884 7.03997C2.53314 6.84361 2.56819 6.64095 2.66778 6.468L3.64053 4.78275C3.74042 4.6096 3.89854 4.47754 4.08672 4.4101C4.27489 4.34266 4.4809 4.34422 4.66803 4.4145L5.58003 4.7565C5.84703 4.85625 6.14328 4.8105 6.38703 4.6635C6.44103 4.6305 6.49653 4.599 6.55203 4.5675C6.80103 4.43025 6.98853 4.19625 7.03503 3.91575L7.19553 2.955Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
  <path d="M11.25 9C11.25 9.59674 11.0129 10.169 10.591 10.591C10.169 11.0129 9.59674 11.25 9 11.25C8.40326 11.25 7.83097 11.0129 7.40901 10.591C6.98705 10.169 6.75 9.59674 6.75 9C6.75 8.40326 6.98705 7.83097 7.40901 7.40901C7.83097 6.98705 8.40326 6.75 9 6.75C9.59674 6.75 10.169 6.98705 10.591 7.40901C11.0129 7.83097 11.25 8.40326 11.25 9Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
</svg>


  System
</button>



        </div>
      </div>
      <div class="mt-8 grid grid-cols-2 gap-8 xl:col-span-2 xl:mt-0">
        <div class="md:grid md:grid-cols-2 md:gap-8">
          <div>
            <h3 class="text-base font-semibold leading-6 text-title dark:text-dark-content">About OCaml</h3>
            <ul class="mt-6 space-y-4">
              
              <li>
  <a href="/changelog" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Changelog</a>
</li>

              
              <li>
  <a href="/releases" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Releases</a>
</li>

              
              <li>
  <a href="/industrial-users" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Industrial Users</a>
</li>

              
              <li>
  <a href="/academic-users" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Academic Users</a>
</li>

              
              <li>
  <a href="/about" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Why OCaml</a>
</li>

              
            </ul>
          </div>
          <div class="mt-10 md:mt-0">
            <h3 class="text-base font-semibold leading-6 text-title dark:text-dark-content">Resources</h3>
            <ul class="mt-6 space-y-4">
              
              <li>
  <a href="/install" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Install OCaml</a>
</li>

              
              <li>
  <a href="/docs/get-started" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Get Started</a>
</li>

              
              <li>
  <a href="/docs/tools" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Platform Tools</a>
</li>

              
              <li>
  <a href="/manual" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Language Manual</a>
</li>

              
              <li>
  <a href="/api" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Standard Library API</a>
</li>

              
              <li>
  <a href="/books" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Books</a>
</li>

              
              <li>
  <a href="/exercises" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Exercises</a>
</li>

              
              <li>
  <a href="/papers" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Papers</a>
</li>

              
              <li>
  <a href="/play" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">OCaml Playground</a>
</li>

              
              <li>
  <a href="/logo" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Logo</a>
</li>

              
            </ul>
          </div>
        </div>
        <div class="md:grid md:grid-cols-2 md:gap-8">
          <div>
            <h3 class="text-base font-semibold leading-6 text-title dark:text-dark-content">Ecosystem</h3>
            <ul class="mt-6 space-y-4">
              
              <li>
  <a href="/packages" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Packages</a>
</li>

              
              <li>
  <a href="/community" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Community</a>
</li>

              
              <li>
  <a href="/events" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Events</a>
</li>

              
              <li>
  <a href="/ocaml-planet" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">OCaml Planet</a>
</li>

              
              <li>
  <a href="/jobs" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Jobs</a>
</li>

              
            </ul>
          </div>
          <div class="mt-20 md:mt-0">
            <h3 class="text-base font-semibold leading-6 text-title dark:text-dark-content">Policies</h3>
            <ul class="mt-6 space-y-4">
              
              <li>
  <a href="/security" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Security</a>
</li>

              
              <li>
  <a href="/policies/carbon-footprint" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Carbon Footprint</a>
</li>

              
              <li>
  <a href="/governance" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Governance</a>
</li>

              
              <li>
  <a href="/policies/privacy-policy" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Privacy</a>
</li>

              
              <li>
  <a href="/policies/code-of-conduct" class="text-base leading-6 text-content dark:text-dark-title hover:text-primary dark:hover:text-dark-primary">Code of Conduct</a>
</li>

              
            </ul>
          </div>
        </div>
      </div>
    </div>
  </div>
  <script>
  document.addEventListener('alpine:init', () => {
    Alpine.store('themeSettings', {
      init() {
        this.storageAccess = localStorage.getItem('storageAccess')
        this.preference = localStorage.getItem('theme') || "system"
        this.isSystemDefaultDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
      },
      selected: '',
      alertOpen: false,
      storageAccess: false,
      preference: undefined,
      isSystemDefaultDark: false,
      setPreference(preference) {
        if (!this.storageAccess) {
          if (!window.confirm("We will remember your choice in your browser's LocalStorage. Allow this?")) {
            return;
          }
          localStorage.setItem('storageAccess', true)
          storageAccess = true;
        }

        this.selected = preference;
        this.preference = preference
        localStorage.setItem('theme', preference)

        if (preference === 'dark') {
          document.body.classList.add("dark");
        } 
        if (preference === 'light') {
          document.body.classList.remove("dark");
        }
        if (preference === 'system') {
          if (this.isSystemDefaultDark) {
            document.body.classList.add("dark");
          } else {
            document.body.classList.remove("dark");
          }
          localStorage.removeItem('theme')
          return
        }
      },
    })
  })
</script>


</footer>


    <script>
        function scrollToTop() {
          window.scrollTo(0, 0);
        }

        window.onscroll = function() {
          showScrollButton();
        };

        function showScrollButton() {
          if (document.body.scrollTop > 20 || document.documentElement.scrollTop > 20) {
            document.getElementById("scrollToTop").style.display = "block";
          } else {
            document.getElementById("scrollToTop").style.display = "none";
          }
        }
    </script>
  </body>
</html>

PS C:\Users\Utilisateur\Scripts-Studio-Code> 

exit=1

Is this a good sign?

Est ce que vous parler français ?
Do you speak French?

Basically you curl does not see up-to-date certificates. I’m not sure how you got that curl install but one thing you can try to do if you want to move on is to download a bundle from https://curl.se/docs/caextract.html to C:\msys64\mingw64\bin\curl-ca-bundle.crt, normally (as mentioned on this page) curl will pick it up.

Also, you might avoid using your broken MSYS2 installation entirely by re-installing the environment:

opam init --reinit

… and when asked whether you want Cygwin or MSYS2, choose the builtin Cygwin installation.


Unrelated and not very important: did an LLM/AI assist you with installing OCaml or writing this post? (The boldface and the task lists are weak signals)

1 Like