pliron 0.16.0

Programming Languages Intermediate RepresentatiON
Documentation
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="icon" type="image/png" href="pliron-192x192.png">
    <title>pliron</title>
    <style>
      * {
        margin: 0;
        padding: 0;
        box-sizing: border-box;
      }
      :root {
        color-scheme: light;
        font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
      }
      body {
        line-height: 1.6;
        color: #1f2937;
        background: linear-gradient(135deg, #f8fafc 0%, #f0f9ff 100%);
        min-height: 100vh;
      }
      main {
        max-width: 64rem;
        margin: 0 auto;
        padding: 4rem 1.5rem;
      }
      .hero {
        text-align: center;
        margin-bottom: 4rem;
      }
      h1 {
        font-size: clamp(2.5rem, 5vw, 3.5rem);
        margin-bottom: 1rem;
        background: linear-gradient(135deg, #0f766e 0%, #0d9488 100%);
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
        background-clip: text;
        font-weight: 700;
      }
      .tagline {
        font-size: 1.125rem;
        color: #6b7280;
        margin-bottom: 2rem;
        max-width: 50rem;
        margin-left: auto;
        margin-right: auto;
      }
      .description {
        font-size: 1rem;
        color: #4b5563;
        max-width: 56rem;
        margin: 0 auto 3rem;
        line-height: 1.7;
      }
      .discord-banner {
        display: inline-flex;
        align-items: center;
        gap: 0.6rem;
        padding: 0.55rem 0.95rem;
        border-radius: 999px;
        background: #eef2ff;
        border: 1px solid #c7d2fe;
        color: #3730a3;
        text-decoration: none;
        font-size: 0.9rem;
        font-weight: 600;
        transition: all 0.2s ease;
      }
      .discord-banner:hover {
        background: #e0e7ff;
        border-color: #a5b4fc;
      }
      .discord-dot {
        width: 0.55rem;
        height: 0.55rem;
        border-radius: 999px;
        background: #6366f1;
      }
      .categories {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(28rem, 1fr));
        gap: 2rem;
        margin-bottom: 2rem;
      }
      .category {
        background: white;
        border-radius: 12px;
        padding: 2rem;
        box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
        border: 1px solid rgba(0, 0, 0, 0.05);
        transition: all 0.3s ease;
      }
      .category:hover {
        box-shadow: 0 10px 25px rgba(0, 0, 0, 0.12);
        border-color: rgba(15, 118, 110, 0.2);
        transform: translateY(-2px);
      }
      .category h2 {
        font-size: 1.5rem;
        margin-bottom: 1rem;
        color: #0f766e;
        display: flex;
        align-items: center;
        gap: 0.5rem;
      }
      .category-icon {
        font-size: 1.75rem;
      }
      .category p {
        color: #6b7280;
        margin-bottom: 1.5rem;
        font-size: 0.95rem;
        line-height: 1.6;
      }
      .crate-list {
        display: flex;
        flex-direction: column;
        gap: 0.75rem;
      }
      .crate-link {
        display: flex;
        align-items: center;
        padding: 0.75rem;
        border-radius: 8px;
        background: #f8fafc;
        border: 1px solid #e5e7eb;
        text-decoration: none;
        color: #0f766e;
        transition: all 0.2s ease;
        font-weight: 500;
      }
      .crate-link:hover {
        background: #f0f9ff;
        border-color: #0f766e;
        padding-left: 1rem;
      }
      .crate-link::before {
        content: "→";
        margin-right: 0.5rem;
        font-weight: bold;
      }
      .crate-description {
        font-size: 0.85rem;
        color: #6b7280;
        margin-top: 0.25rem;
      }
    </style>
  </head>
  <body>
    <main>
      <div class="hero">
        <h1>pliron</h1>
        <p class="tagline">An Extensible Compiler IR Framework</p>
        <p class="description">
          <code>pliron</code>, short for "Programming Languages Intermediate RepresentatiON",
          is a compiler framework, inspired by <a href="https://mlir.llvm.org/" style="color: #0f766e; text-decoration: underline;">MLIR</a>
          and written natively in <a href="https://www.rust-lang.org/" style="color: #0f766e; text-decoration: underline;">Rust</a>.
          <code>pliron</code> enables compiler engineers to easily build an entire compiler pipeline by defining custom IRs, analyses,
          and transformations.
        </p>
      </div>

      <div class="categories">
        <div class="category">
          <h2><span class="category-icon">📚</span> API Documentation</h2>
          <p>Documentation for pliron crates</p>
          <div class="crate-list">
            <a href="pliron/" class="crate-link">
              pliron
              <div class="crate-description" style="margin-left: auto;">Core IR Framework</div>
            </a>
            <a href="pliron_derive/" class="crate-link">
              pliron-derive
              <div class="crate-description" style="margin-left: auto;">Derive Macros for IR Entities</div>
            </a>
            <a href="pliron_llvm/" class="crate-link">
              pliron-llvm
              <div class="crate-description" style="margin-left: auto;">LLVM Dialect and Integration</div>
            </a>
          </div>
        </div>

        <div class="category">
          <h2><span class="category-icon">🎓</span> Learning Resources</h2>
          <p>Learn by building a compiler through the Kaleidoscope tutorial series.</p>
          <div class="crate-list">
            <a href="Kaleidoscope/" class="crate-link">
              Kaleidoscope Tutorial
              <div class="crate-description" style="margin-left: auto;">Complete tutorial book</div>
            </a>
            <a href="https://www.youtube.com/watch?v=LobYuwcUaZA" class="crate-link">
              Introduction Video (IICT'24)
              <div class="crate-description" style="margin-left: auto;">Workshop Talk</div>
            </a>
          </div>
        </div>
      </div>

      <div style="text-align: center; margin-top: 2rem;">
        <a href="https://discord.gg/5M3K4Ujv7v" class="discord-banner">
          <span class="discord-dot"></span>
          Join the pliron Discord community
        </a>
      </div>

      <div style="text-align: center; margin-top: 4rem; padding-top: 2rem; border-top: 1px solid #e5e7eb;">
        <img src="pliron-logo.png" alt="pliron logo" style="max-width: 200px; height: auto;">
      </div>

      <div style="text-align: center; margin-top: 1rem; color: #6b7280;">
        Contact: <a href="mailto:vaivaswatha@live.in" style="color: #0f766e; text-decoration: underline;">vaivaswatha@live.in</a>
      </div>
    </main>
  </body>
</html>