1<!DOCTYPE html> 2<html lang="en"> 3 4<head prefix="og: http://ogp.me/ns#"> 5 <meta charset="UTF-8"> 6 <title>Install | Veryl</title> 7 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 8 9 <link rel="icon" type="image/png" href="/logo.png"> 10 11 <style> 12 :root { 13 /* Primary theme color (Veryl brand green, kept) */ 14 --primary-color: #2baa59; 15 /* Primary theme text color */ 16 --primary-text-color: #24262a; 17 --primary-text-color-over: #000; 18 /* Primary theme link color */ 19 --primary-link-color: #d46e13; 20 /* Secondary color: the background body color */ 21 --secondary-color: #fcfaf6; 22 --secondary-text-color: #303030; 23 /* Highlight text color of table of content */ 24 --toc-highlight-text-color: #d46e13; 25 --toc-background-color: white; 26 27 --shadow-color: #e4e7ec; 28 --border-color: #e4e7ec; 29 --muted-text-color: #5f6b7a; 30 --accent-color: #0ea5a5; 31 32 /* On-primary text color for buttons/nav sitting on --primary-color */ 33 --on-primary-color: #ffffff; 34 35 /* Font used for headers (h1 & h2) */ 36 --header-font-family: "Fira Sans", sans-serif; 37 /* Font used for text */ 38 --text-font-family: "Fira Sans", sans-serif; 39 } 40 41 @media (prefers-color-scheme: dark) { 42 :root { 43 --primary-color: #1e2621; 44 --primary-text-color: #e6e8eb; 45 --primary-text-color-over: #FFF; 46 --primary-link-color: #5fd28a; 47 --secondary-color: #161a17; 48 --secondary-text-color: #f2f2f2; 49 --toc-highlight-text-color: #5fd28a; 50 --toc-background-color: #232824; 51 52 --shadow-color: #0d0f0e; 53 --border-color: #2a2f34; 54 --muted-text-color: #9aa3ad; 55 --accent-color: #22d3ce; 56 57 --on-primary-color: #f2f2f2; 58 59 --header-font-family: "Fira Sans", sans-serif; 60 --text-font-family: "Fira Sans", sans-serif; 61 } 62 } 63 64 /* ---- Typography ---- */ 65 main .content h1, 66 main .content h2, 67 main .content h3 { 68 letter-spacing: -0.01em; 69 line-height: 1.25; 70 color: var(--primary-text-color); 71 } 72 73 main .content h2 { 74 font-weight: 700; 75 margin-top: 2.8rem; 76 padding-bottom: 0.3rem; 77 border-bottom: 1px solid var(--border-color); 78 } 79 80 main .content h3 { 81 font-weight: 600; 82 margin-top: 2rem; 83 } 84 85 main .content p, 86 main .content li { 87 line-height: 1.7; 88 } 89 90 /* ---- Code blocks ---- */ 91 main .content pre { 92 border-radius: 6px; 93 border-left: 3px solid var(--primary-color); 94 box-shadow: 0 1px 2px var(--shadow-color); 95 padding: 1rem 1.2rem; 96 overflow-x: auto; 97 } 98 99 main .content pre code, 100 main .content code { 101 font-family: "JetBrains Mono", "Fira Code", "Fira Mono", "SFMono-Regular", Menlo, Consolas, monospace; 102 font-size: 0.92em; 103 } 104 105 main .content :not(pre) > code { 106 background: var(--toc-background-color); 107 border: 1px solid var(--border-color); 108 border-radius: 4px; 109 padding: 0.1em 0.35em; 110 } 111 112 /* ---- Header shadow ---- */ 113 header { 114 box-shadow: 0 1px 3px var(--shadow-color); 115 } 116 117 /* ---- Hero tagline: keep each phrase intact, balance line lengths ---- */ 118 .hero-tagline { 119 text-wrap: balance; 120 max-width: 60ch; 121 margin-left: auto; 122 margin-right: auto; 123 } 124 125 .hero-tagline .phrase { 126 white-space: nowrap; 127 } 128 129 /* ---- Hero CTA buttons ---- */ 130 .hero-cta { 131 display: flex; 132 gap: 0.75rem; 133 flex-wrap: wrap; 134 justify-content: center; 135 margin-top: 1.5rem; 136 } 137 138 .hero-cta .btn { 139 display: inline-flex; 140 align-items: center; 141 justify-content: center; 142 padding: 0.7rem 1.4rem; 143 border-radius: 6px; 144 font-weight: 600; 145 font-size: 16px; 146 text-decoration: none; 147 transition: transform 0.08s ease, box-shadow 0.12s ease, background 0.12s ease; 148 border: 2px solid transparent; 149 line-height: 1.2; 150 } 151 152 .hero-cta .btn:hover { 153 transform: translateY(-1px); 154 box-shadow: 0 4px 10px var(--shadow-color); 155 } 156 157 .hero-cta .btn-primary { 158 background: #2baa59; 159 color: #ffffff; 160 border-color: #2baa59; 161 } 162 163 .hero-cta .btn-primary:hover { 164 background: #249a4f; 165 border-color: #249a4f; 166 } 167 168 .hero-cta .btn-secondary { 169 background: transparent; 170 color: var(--accent-color); 171 border-color: var(--accent-color); 172 } 173 174 .hero-cta .btn-secondary:hover { 175 background: var(--accent-color); 176 color: #ffffff; 177 } 178 179 .hero-github { 180 margin-top: 1.2rem; 181 display: flex; 182 gap: 0.5rem; 183 justify-content: center; 184 flex-wrap: wrap; 185 } 186 187 /* ---- SystemVerilog vs Veryl comparison table ---- */ 188 /* Stacks vertically while the TOC sidebar is still visible. 189 juice theme: main has 100px horizontal padding, .toc is ~240px, 190 so at viewport < 1200px the content area is < ~760px and two code 191 columns no longer fit side-by-side without clipping. */ 192 .sv-compare { 193 width: 100%; 194 border-collapse: collapse; 195 margin: 1rem 0 1.5rem; 196 table-layout: fixed; 197 } 198 199 .sv-compare th { 200 text-align: left; 201 font-weight: 700; 202 padding: 0.4rem 0.6rem; 203 border-bottom: 2px solid var(--accent-color); 204 color: var(--primary-text-color); 205 width: 50%; 206 } 207 208 .sv-compare td { 209 vertical-align: top; 210 padding: 0.5rem 0.6rem; 211 width: 50%; 212 } 213 214 .sv-compare td > pre { 215 margin: 0; 216 } 217 218 @media screen and (max-width: 1200px) { 219 /* Interleave DOM order (th, th, td, td) into visual order 220 (SV header, SV code, Veryl header, Veryl code) via flex order. */ 221 .sv-compare { 222 display: flex; 223 flex-direction: column; 224 gap: 0.3rem; 225 } 226 .sv-compare thead, 227 .sv-compare tbody, 228 .sv-compare tr { 229 display: contents; 230 } 231 .sv-compare th, 232 .sv-compare td { 233 display: block; 234 width: 100%; 235 box-sizing: border-box; 236 } 237 .sv-compare th { 238 margin-top: 0.8rem; 239 padding: 0.4rem 0; 240 } 241 .sv-compare td { 242 padding: 0.2rem 0 0.6rem; 243 } 244 .sv-compare tr:first-child > :first-child { order: 1; } 245 .sv-compare tr:last-child > :first-child { order: 2; } 246 .sv-compare tr:first-child > :last-child { order: 3; } 247 .sv-compare tr:last-child > :last-child { order: 4; } 248 } 249</style> 250 251
252 <link rel="preconnect" href="https://fonts.googleapis.com"> 253 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 254 <link href="https://fonts.googleapis.com/css2?family=Fira+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400&display=swap" rel="stylesheet"> 255 256 <link rel="stylesheet" href="/normalize.css"> 257 <link rel="stylesheet" href="https://veryl-lang.org/juice.css"> 258 <!-- Juice references /normalize.css, which doesn't work, so we reference ./normalics.css here --> 259 <!-- Google tag (gtag.js) -->
vendor: 68 bytes, lines 259-260
259 260 <script async src="https://www.googletagmanager.com/gtag/js?id=
260G-NXW2P6CCF3
vendor: 16 bytes, lines 260-261
260"></script> 261
261<script> 262
vendor: 146 bytes, lines 262-266
262window.dataLayer = window.dataLayer || []; 263 function gtag(){dataLayer.push(arguments);} 264 gtag('js', new Date()); 265 266 gtag('config', '
266G-NXW2P6CCF3
vendor: 8 bytes, lines 266-267
266'); 267
267</script>
267 268 <!-- Cloudflare Web Analytics (cookieless, GDPR-compliant) -->
vendor: 116 bytes, lines 268-270
268 269 <script defer src="https://static.cloudflareinsights.com/beacon.min.js" 270 data-cf-beacon='{"token": "
2709a6e16a10083416fbafbabf6f917fd9e
vendor: 25 bytes, lines 270-275
270"}'></script> 271 272 273 274 275
276<meta name="description" content="Install Veryl through the verylup toolchain installer, Cargo, or by building from source." /> 277<link rel="canonical" href="https://veryl-lang.org/install/" /> 278 279<meta property="og:type" content="website" /> 280<meta property="og:url" content="https://veryl-lang.org/install/" /> 281<meta property="og:title" content="Install | Veryl" /> 282<meta property="og:description" content="Install Veryl through the verylup toolchain installer, Cargo, or by building from source." /> 283<meta property="og:image" content="https://veryl-lang.org/ogp/install.png" /> 284 285<meta name="twitter:card" content="summary_large_image" /> 286<meta name="twitter:domain" content="veryl-lang.org" /> 287<meta name="twitter:title" content="Install | Veryl" /> 288<meta name="twitter:description" content="Install Veryl through the verylup toolchain installer, Cargo, or by building from source." /> 289<meta name="twitter:image" content="https://veryl-lang.org/ogp/install.png" />
290<script type="application/ld+json"> 291{ 292 "@context": "https://schema.org", 293 "@type": "BreadcrumbList", 294 "itemListElement": [ 295 { 296 "@type": "ListItem", 297 "position": 1, 298 "name": "Home", 299 "item": "https://veryl-lang.org/" 300 }, 301 { 302 "@type": "ListItem", 303 "position": 2, 304 "name": "Install", 305 "item": "https://veryl-lang.org/install/" 306 } 307 ] 308} 309</script>
309 310 311</head> 312 313<body> 314 315<header class="box-shadow"> 316 317 318<a href="https://veryl-lang.org/"> 319 <div class="logo"> 320 <img src="https://veryl-lang.org/logo.png" alt="logo"> 321 322 </div> 323</a> 324 325<nav> 326 327 328 329 <a class="nav-item subtitle-text" href="https://veryl-lang.org/install/">Install</a> 330 331 332 333 334 <a class="nav-item subtitle-text" href="https://veryl-lang.org/docs/">Docs</a> 335 336 337 338 339 <a class="nav-item subtitle-text" href="https://veryl-lang.org/statistics/">Statistics</a> 340 341 342 343 344 <a class="nav-item subtitle-text" href="https://veryl-lang.org/sponsors/">Sponsors</a> 345 346 347 348 349 <a class="nav-item subtitle-text" href="https://veryl-lang.org/blog/">Blog</a> 350 351 352 353 <a class="nav-item subtitle-text" href="https://registry.veryl-lang.org/">Registry</a> 354 355 <a class="nav-item subtitle-text" href="https://doc.veryl-lang.org/playground">Playground</a> 356 357 358 359 360 <a class="nav-item subtitle-text" href="https://github.com/veryl-lang/veryl"><img src="https://veryl-lang.org/github-mark-white.png" alt="icon" height="20"></a> 361 362 <a class="nav-item subtitle-text" href="https://discord.gg/MJZr9NufTT"><img src="https://veryl-lang.org/Discord-Symbol-White.png" alt="icon" height="20"></a> 363 364 365</nav> 366 367</header> 368 369 370 <main> 371 372 373 374 375 376<div class="toc"> 377 <div class="toc-sticky"> 378 379 <div class="toc-item"> 380 <a class="subtext" href="https://veryl-lang.org/install/#requirement">Requirement</a> 381 </div> 382 383 384 <div class="toc-item-child"> 385 <a class="subtext" href="https://veryl-lang.org/install/#install-verylup"><small>- Install verylup</small></a> 386 </div> 387 388 <div class="toc-item-child"> 389 <a class="subtext" href="https://veryl-lang.org/install/#setup-verylup"><small>- Setup verylup</small></a> 390 </div> 391 392 393 394 <div class="toc-item"> 395 <a class="subtext" href="https://veryl-lang.org/install/#editor-integration">Editor integration</a> 396 </div> 397 398 399 <div class="toc-item-child"> 400 <a class="subtext" href="https://veryl-lang.org/install/#visual-studio-code"><small>- Visual Studio Code</small></a> 401 </div> 402 403 <div class="toc-item-child"> 404 <a class="subtext" href="https://veryl-lang.org/install/#vim-neovim"><small>- Vim / Neovim</small></a> 405 </div> 406 407 <div class="toc-item-child"> 408 <a class="subtext" href="https://veryl-lang.org/install/#zed"><small>- Zed</small></a> 409 </div> 410 411 <div class="toc-item-child"> 412 <a class="subtext" href="https://veryl-lang.org/install/#other-editors"><small>- Other Editors</small></a> 413 </div> 414 415 416 417 <div class="toc-item"> 418 <a class="subtext" href="https://veryl-lang.org/install/#shell-completion">Shell Completion</a> 419 </div> 420 421 422 </div> 423</div> 424 425 426 427 <div class="content text"> 428 429<h1 class="heading-text">Install</h1> 430<p>Veryl can be intalled through the official toolchain installer <code>verylup</code>. 431We recommend to use <code>verylup</code> because it provides some usefule features like toolchain update.</p> 432<h1 id="requirement">Requirement</h1> 433<p>Veryl uses <code>git</code> command internally. Please confirm <code>git</code>
433 can be launched.</p> 434<h2 id="install-verylup">Install verylup</h2> 435<h3 id="download-binary">Download binary</h3> 436<p>Download from <a href="https://github.com/veryl-lang/verylup/releases/latest">release page</a>, and extract to the directory in <code>PATH</code>.</p> 437<h3 id="cargo">Cargo</h3> 438<p>You can install with <a href="https://crates.io/crates/verylup">cargo</a>.</p> 439<pre style="background-color:#393939;color:#dedede;"><code><span>cargo install verylup 440</span></code></pre> 441<h2 id="setup-verylup">Setup verylup</h2> 442<p>After installing verylup, the following command is required once at first. 443It downloads the latest toolchain and creates <code>veryl</code> and <code>veryl-ls</code> command at the same location as verylup.</p> 444<pre style="background-color:#393939;color:#dedede;"><code><span>verylup setup 445</span></code></pre> 446<p>Now <code>veryl</code> command can be used!</p> 447<h1 id="editor-integration">Editor integration</h1> 448<p><a href="https://azure.microsoft.com/ja-jp/products/visual-studio-code">Visual Studio Code</a>, <a href="https://github.com/vim/vim">Vim</a> / <a href="https://neovim.io">Neovim</a>, and <a href="https://zed.dev">Zed</a> are supported officially.</p> 449<h2 id="visual-studio-code">Visual Studio Code</h2> 450<p>For Visual Studio Code, Veryl extension is provided. 451The extension provides file type detection, syntex highlight and language server integration. 452You can install it by searching "Veryl" in extension panel or the following URL.</p> 453<p><a href="https://marketplace.visualstudio.com/items?itemName=veryl-lang.veryl-vscode">Veryl extension for Visual Studio Code</a></p> 454<h2 id="vim-neovim">Vim / Neovim</h2> 455<p>For Vim / Neovim, Veryl plugin is provided. 456The plugin provides file type detection, syntex highlight. 457There are some instructions for plugin installation and language server integration in the following URL.</p> 458<p><a href="https://github.com/veryl-lang/veryl.vim">Vim / Neovim plugin</a></p> 459<h2 id="zed">Zed</h2> 460<p>For <a href="https://zed.dev/">Zed</a>, Veryl extension is provided. 461The extension provides file type detection, syntex highlight and language server integration. 462You can install it by searching "Veryl" in extension panel or the following URL.</p> 463<p><a href="https://zed.dev/extensions/veryl">Veryl extension for Zed</a></p> 464<h2 id="other-editors">Other Editors</h2> 465<p>Veryl provides language server. So other editors supporting language server (ex. Emacs) can use it.</p> 466<h1 id="shell-completion">Shell Completion</h1> 467<p>Shell completion script for <code>veryl</code> and <code>verylup</code> is provided through <code>verylup completion</code>. 468For example, the following command generates completion script for zsh.</p> 469<pre style="background-color:#393939;color:#dedede;"><code><span>verylup completion zsh veryl > _veryl 470</span><span>verylup completion zsh verylup > _verylup 471</span></code></pre> 472<p>Supported shells are below:</p> 473<ul> 474<li>Bash</li> 475<li>Elvish</li> 476<li>Fish</li> 477<li>PowerShell</li> 478<li>Zsh</li> 479</ul> 480<p>Please refer the documentation of each shell for usage of generated scripts.</p> 481 482 483 </div> 484 485 486 487 </main> 488 489 490<footer class="site-footer"> 491 <div class="site-footer-inner"> 492 <div class="site-footer-col"> 493 <div class="site-footer-heading">Project</div> 494 <a href="https://github.com/veryl-lang/veryl">GitHub</a> 495 <a href="https://registry.veryl-lang.org/">Registry</a> 496 <a href="https://veryl-lang.org/sponsors/">Sponsors</a> 497 </div> 498 <div class="site-footer-col"> 499 <div class="site-footer-heading">Documentation</div> 500 <a href="https://doc.veryl-lang.org/book/">Book</a> 501 <a href="https://doc.veryl-lang.org/playground">Playground</a> 502 </div> 503 <div class="site-footer-col"> 504 <div class="site-footer-heading">Community</div> 505 <a href="https://discord.gg/MJZr9NufTT">Discord</a> 506 <a href="https://veryl-lang.org/blog/">Blog</a> 507 </div> 508 </div> 509 <div class="site-footer-bottom subtext"> 510 Veryl is dual-licensed under MIT or Apache-2.0. © 2022â2026 Veryl contributors. 511 </div> 512</footer> 513<style> 514 .site-footer { 515 margin-top: 4rem; 516 padding: 3rem 2rem 2rem; 517 border-top: 1px solid var(--border-color); 518 background-color: var(--toc-background-color); 519 } 520 .site-footer-inner { 521 max-width: 1100px; 522 margin: 0 auto; 523 display: grid; 524 grid-template-columns: repeat(3, minmax(0, 1fr)); 525 gap: 2rem; 526 } 527 .site-footer-col { 528 display: flex; 529 flex-direction: column; 530 gap: 0.4rem; 531 } 532 .site-footer-heading { 533 font-weight: 600; 534 margin-bottom: 0.4rem; 535 color: var(--primary-text-color); 536 } 537 .site-footer a { 538 color: var(--secondary-text-color); 539 text-decoration: none; 540 font-size: 0.95rem; 541 } 542 .site-footer a:hover { 543 color: var(--primary-link-color); 544 } 545 .site-footer-bottom { 546 max-width: 1100px; 547 margin: 2rem auto 0; 548 padding-top: 1.5rem; 549 border-top: 1px solid var(--border-color); 550 font-size: 0.85rem; 551 text-align: center; 552 } 553 @media screen and (max-width: 640px) { 554 .site-footer-inner { 555 grid-template-columns: 1fr; 556 gap: 1.5rem; 557 } 558 } 559</style> 560 561 562</body>
563<script> 564 const scrollHandler = entries => { 565 // Find the first entry which intersecting and ratio > 0.9 to highlight. 566 let entry = entries.find(entry => { 567 return entry.isIntersecting && entry.intersectionRatio > 0.9; 568 }); 569 if (!entry) return; 570 571 document.querySelectorAll(".toc a").forEach((item) => { 572 item.classList.remove("active"); 573 }); 574 575 // let url = new URL(`#${entry.target.id}`); 576 let link = document.querySelector(`.toc a[href$="${decodeURIComponent(`#${entry.target.id}`)}"]`) 577 if (link) { 578 link.classList.add("active"); 579 link.scrollIntoView({ behavior: "auto", block: "nearest" }); 580 } 581 }; 582 // Set -100px root margin to improve highlight experience. 583 const observer = new IntersectionObserver(scrollHandler, { threshold: 1 }); 584 let items = document.querySelectorAll('h1,h2,h3,h4,h5,h6'); 585 items.forEach(item => observer.observe(item)); 586</script>
586 587 588</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.