PageSourceSearch

https://www.kcl-lang.io/

html kcl-lang.io collected 2026-10-03 22:39:56 UTC 55,116 bytes, 49 lines download raw bytes

1<!doctype html>
2<html lang="en" dir="ltr" class="plugin-pages plugin-id-default">
3<head>
4<meta charset="UTF-8">
5<meta name="generator" content="Docusaurus v2.4.1">
6<title data-rh="true">KCL programming language. - Mutation  Validation  Abstraction  Automation  Production-Ready | KCL programming language.</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://www.kcl-lang.io/"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" property="og:title" content="KCL programming language. - Mutation  Validation  Abstraction  Automation  Production-Ready | KCL programming language."><meta data-rh="true" name="description" content="KCL is an open-source constraint-based record &amp; functional programming language mainly used in configuration and policy scenarios."><meta data-rh="true" property="og:description" content="KCL is an open-source constraint-based record &amp; functional programming language mainly used in configuration and policy scenarios."><link data-rh="true" rel="icon" href="/favicon.ico"><link data-rh="true" rel="canonical" href="https://www.kcl-lang.io/"><link data-rh="true" rel="alternate" href="https://www.kcl-lang.io/" hreflang="en"><link data-rh="true" rel="alternate" href="https://www.kcl-lang.io/zh-CN/" hreflang="zh-CN"><link data-rh="true" rel="alternate" href="https://www.kcl-lang.io/" hreflang="x-default">
6<script data-rh="true">function maybeInsertBanner(){window.__DOCUSAURUS_INSERT_BASEURL_BANNER&&insertBanner()}function insertBanner(){var n=document.getElementById("__docusaurus-base-url-issue-banner-container");if(n){n.innerHTML='\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n   <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n   <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n   <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">/</span>  (default value)</p>\n   <p>We suggest trying baseUrl = <span id="__docusaurus-base-url-issue-banner-suggestion-container" style="font-weight: bold; color: green;"></span></p>\n</div>\n';var e=document.getElementById("__docusaurus-base-url-issue-banner-suggestion-container"),s=window.location.pathname,r="/"===s.substr(-1)?s:s+"/";e.innerHTML=r}}window.__DOCUSAURUS_INSERT_BASEURL_BANNER=!0,document.addEventListener("DOMContentLoaded",maybeInsertBanner)</script>
6<link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="KCL programming language. RSS Feed">
7<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="KCL programming language. Atom Feed">
8
9
10
11
12<link rel="preconnect" href="https://www.google-analytics.com">
13<link rel="preconnect" href="https://www.googletagmanager.com">
vendor: 64 bytes, lines 13-14
13
14<script async src="https://www.googletagmanager.com/gtag/js?id=
14G-4D8SMCEJK8
vendor: 12 bytes, line 14
14"></script>
15<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-4D8SMCEJK8",{anonymize_ip:!0}),gtag("config","G-MZD1X1PB2Q",{anonymize_ip:!0})</script>
15
16
17
18<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css" integrity="sha384-odtC+0UGzzFL/6PNoE8rX/SPcQDXBJ+uRepguP4QkPCm2LBxH3FA3y+fKSiJ+AmM" crossorigin="anonymous"><link rel="stylesheet" href="/assets/css/styles.b8f2368d.css">
19<link rel="preload" href="/assets/js/runtime~main.a7ea0e78.js" as="script">
20<link rel="preload" href="/assets/js/main.d12579fc.js" as="script">
21</head>
22<body class="navigation-with-keyboard" data-theme="light">
23<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}(),document.documentElement.setAttribute("data-announcement-bar-initially-dismissed",function(){try{return"true"===localStorage.getItem("docusaurus.announcement.dismiss")}catch(t){}return!1}())</script>
23<div id="__docusaurus">
24<div id="__docusaurus-base-url-issue-banner-container"></div><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><div class="announcementBar_mb4j" role="banner"><div class="announcementBarPlaceholder_vyr4"></div><div class="content_knG7 announcementBarContent_xLdY">Give us a star ⭐️ - If you are using KCL or think it is an interesting project, we would love a star and record on <a target="_blank" rel="noopener noreferrer" href="https://github.com/kcl-lang/kcl">Github</a> and <a target="_blank" rel="noopener noreferrer" href="https://github.com/kcl-lang/kcl/issues/578">Record Issue</a></div><button type="button" aria-label="Close" class="clean-btn close closeButton_CVFx announcementBarClose_gvF7"><svg viewBox="0 0 15 15" width="14" height="14"><g stroke="currentColor" stroke-width="3.1"><path d="M.75.75l13.5 13.5M14.25.75L.75 14.25"></path></g></svg></button></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/kcl-logo.png" alt="KCL Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/kcl-logo.png" alt="KCL Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate"></b></a><a class="navbar__item navbar__link" docid="intro/kcl-intro" href="/docs/user_docs/getting-started/">Getting Started</a><a class="navbar__item navbar__link" href="/docs/reference/lang/tour">Reference</a><a class="navbar__item navbar__link" href="/docs/tools/cli/">Tools</a><a href="https://artifacthub.io/packages/search?org=kcl&amp;sort=relevance&amp;page=1" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link" sidebarid="modules">Modules<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="http://play.kcl-lang.io/" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link" sidebarid="playground">Playground<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a href="https://github.com/kcl-lang/examples" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link" sidebarid="examples">Examples<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><a class="navbar__item navbar__link" href="/docs/community/intro/">Community</a><a class="navbar__item navbar__link" href="/blog">Blog</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a class="navbar__link" aria-haspopup="true" aria-expanded="false" role="button" href="/docs/tools/cli/">0.13</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/next/tools/cli/">Next</a></li><li><a class="dropdown__link" href="/docs/tools/cli/">0.13</a></li><li><a class="dropdown__link" href="/docs/0.12/tools/cli/">0.12</a></li><li><a class="dropdown__link" href="/docs/0.11/tools/cli/">0.11</a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link"><svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" class="iconLanguage_nlXk">
24<path fill="currentColor" d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"></path></svg>English</a><ul class="dropdown__menu"><li><a href="/" target="_self" rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang="en">English</a></li><li><a href="/zh-CN/" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="zh-CN">简体中文</a></li><li><a href="https://github.com/kcl-lang/kcl-lang.io/issues/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Help Us Translate<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><a href="https://github.com/kcl-lang/kcl" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" aria-label="GitHub repository"></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"><div class="dsla-search-wrapper"><div class="dsla-search-field" data-tags="default,docs-default-0.13"></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><section><br><br><br><br></section><header class="container banner_d9gt"><div class="container"><h2 class="title_GqtP" style="color:var(--ifm-color-primary)">Mutation<!-- -->,  <!-- -->Validation<!-- -->,  <!-- -->Abstraction<!-- -->,  <!-- -->Automation</h2><h2 class="title_GqtP" style="color:var(--ifm-color-primary)">Production-Ready</h2><p class="description_meEo">KCL is an open-source constraint-based record &amp; functional language mainly used in configuration and policy scenarios.</p><a class="button button--primary button--lg button_JGCe" style="margin-right:10px" href="/docs/user_docs/getting-started/intro">Learn More</a><a class="button button--secondary button--lg button_JGCe" href="/docs/user_docs/getting-started/install">Download</a><br><br></div></header><section><br><br><br><br></section><section><div class="container"><div class="row"><div class="col col--4"><div class="card featureCard_Jbd_"><div class="card__header featureCardTitle_KCMt"><div class="featureCardIcon_ZcAM"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" font-size="30" color="var(--ifm-color-primary-dark)" style="color:var(--ifm-color-primary-dark)" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
24<path d="M256 112a56 56 0 1156-56 56.06 56.06 0 01-56 56z"></path><path d="M432 112.8l-.45.12-.42.13c-1 .28-2 .58-3 .89-18.61 5.46-108.93 30.92-172.56 30.92-59.13 0-141.28-22-167.56-29.47a73.79 73.79 0 00-8-2.58c-19-5-32 14.3-32 31.94 0 17.47 15.7 25.79 31.55 31.76v.28l95.22 29.74c9.73 3.73 12.33 7.54 13.6 10.84 4.13 10.59.83 31.56-.34 38.88l-5.8 45-32.19 176.19q-.15.72-.27 1.47l-.23 1.27c-2.32 16.15 9.54 31.82 32 31.82 19.6 0 28.25-13.53 32-31.94s28-157.57 42-157.57 42.84 157.57 42.84 157.57c3.75 18.41 12.4 31.94 32 31.94 22.52 0 34.38-15.74 32-31.94a57.17 57.17 0 00-.76-4.06L329 301.27l-5.79-45c-4.19-26.21-.82-34.87.32-36.9a1.09 1.09 0 00.08-.15c1.08-2 6-6.48 17.48-10.79l89.28-31.21a16.9 16.9 0 001.62-.52c16-6 32-14.3 32-31.93S451 107.81 432 112.8z"></path></svg></div><h3 style="color:var(--ifm-color-primary)">Easy-to-Use</h3></div><div class="card__body featureCardBody_ZCO8"><p>Originated from programming languages ​​such as Python and Golang, rich language features, power IDEs and tools.</p></div></div></div><div class="col col--4"><div class="card featureCard_Jbd_"><div class="card__header featureCardTitle_KCMt"><div class="featureCardIcon_ZcAM"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" font-size="30" color="var(--ifm-color-primary-dark)" style="color:var(--ifm-color-primary-dark)" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M414.39 97.61A224 224 0 1097.61 414.39 224 224 0 10414.39 97.61zM256 432v-96a80 80 0 010-160V80c97.05 0 176 79 176 176s-78.95 176-176 176z"></path><path d="M336 256a80 80 0 00-80-80v160a80 80 0 0080-80z"></path></svg></div><h3 style="color:var(--ifm-color-primary)">Quick Modeling</h3></div><div class="card__body featureCardBody_ZCO8"><p>Schema-centric configuration types and modular abstraction with logic and policy based on Config, Schema, Lambda, Rule.</p></div></div></div><div class="col col--4"><div class="card featureCard_Jbd_"><div class="card__header featureCardTitle_KCMt"><div class="featureCardIcon_ZcAM"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" font-size="30" color="var(--ifm-color-primary-dark)" style="color:var(--ifm-color-primary-dark)" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><circle cx="256" cy="256" r="208" fill="none" stroke-miterlimit="10" stroke-width="32"></circle><circle cx="288" cy="200" r="24"></circle><circle cx="296" cy="128" r="24"></circle><circle cx="360" cy="168" r="24"></circle></svg></div><h3 style="color:var(--ifm-color-primary)">Stability</h3></div><div class="card__body featureCardBody_ZCO8"><p>Configuration stability built on static type system, strong immutablity , and constraints.</p></div></div></div><div class="col col--4"><div class="card featureCard_Jbd_"><div class="card__header featureCardTitle_KCMt"><div class="featureCardIcon_ZcAM"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" font-size="30" color="var(--ifm-color-primary-dark)" style="color:var(--ifm-color-primary-dark)" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M104 496H72a24 24 0 01-24-24V328a24 24 0 0124-24h32a24 24 0 0124 24v144a24 24 0 01-24 24zm224 0h-32a24 24 0 01-24-24V232a24 24 0 0124-24h32a24 24 0 0124 24v240a24 24 0 01-24 24zm112 0h-32a24 24 0 01-24-24V120a24 24 0 0124-24h32a24 24 0 0124 24v352a24 24 0 01-24 24zm-224 0h-32a24 24 0 01-24-24V40a24 24 0 0124-24h32a24 24 0 0124 24v432a24 24 0 01-24 24z"></path></svg></div><h3 style="color:var(--ifm-color-primary)">Scalability</h3></div><div class="card__body featureCardBody_ZCO8"><p>High scalability through automatic merge mechanism of isolated config blocks with multiple strategies.</p></div></div></div><div class="col col--4"><div class="card featureCard_Jbd_"><div class="card__header featureCardTitle_KCMt"><div class="featureCardIcon_ZcAM"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" aria-hidden="true" font-size="30" color="var(--ifm-color-primary-dark)" style="color:var(--ifm-color-primary-dark)" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M11.3 1.046A1 1 0 0112 2v5h4a1 1 0 01.82 1.573l-7 10A1 1 0 018 18v-5H4a1 1 0 01-.82-1.573l7-10a1 1 0 011.12-.38z" clip-rule="evenodd"></path></svg></div><h3 style="color:var(--ifm-color-primary)">Fast Automation</h3></div><div class="card__body featureCardBody_ZCO8"><p>High performance and gradient automation scheme of CRUD APIs, multilingual SDKs, language plugins for GitOps.
24</p></div></div></div><div class="col col--4"><div class="card featureCard_Jbd_"><div class="card__header featureCardTitle_KCMt"><div class="featureCardIcon_ZcAM"><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512" font-size="30" color="var(--ifm-color-primary-dark)" style="color:var(--ifm-color-primary-dark)" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"><path d="M416 352c-12.6-.84-21-4-28-12-14-16-14-36 5.49-52.48l32.82-29.14c50.27-44.41 50.27-117.21 0-161.63C389.26 64.14 339.54 48 287.86 48c-60.34 0-123.39 22-172 65.11-90.46 80-90.46 210.92 0 290.87 45 39.76 105.63 59.59 165.64 60h1.84c60 0 119.07-19.5 161.2-56.77C464 390 464 385 444.62 355.56 440 348 431 353 416 352zM112 208a32 32 0 1132 32 32 32 0 01-32-32zm40 135a32 32 0 1132-32 32 32 0 01-32 32zm40-199a32 32 0 1132 32 32 32 0 01-32-32zm64 271a48 48 0 1148-48 48 48 0 01-48 48zm72-239a32 32 0 1132-32 32 32 0 01-32 32z"></path></svg></div><h3 style="color:var(--ifm-color-primary)">API Affinity</h3></div><div class="card__body featureCardBody_ZCO8"><p>Native support API ecological specifications such as OpenAPI, Kubernetes CRD and KRM spec.</p></div></div></div></div></div></section><section><br><br><br><br></section><section><div class="container"><h2 class="text--center" style="color:var(--ifm-color-primary)">Codify and Manage Your Modern Configuration and Policy</h2><p class="text--center description_meEo">With configs, models, functions and rules</p><section class="section_YzAy section--inner_OvP_ section--center_J054 section--showcase_o4T6"><div class="showcase_zcbe"><div class="showcase__inner_g5Wb"><div class="showcase__chevron_uvOl" style="visibility:hidden"><svg fill="currentColor" focusable="false" role="img" viewBox="5.40 7.12 9.23 5.25" width="26" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(0deg)"><path d="M6.582 12.141a.695.695 0 01-.978 0 .68.68 0 010-.969l3.908-3.83a.697.697 0 01.979 0l3.908 3.83a.68.68 0 010 .969.697.697 0 01-.979 0L10 9l-3.418 3.141z"></path></svg></div><div class="showcase__left_g5vG"><div class="showcase__offset_DtvK showcase__1_OMZD" style="top:60px"><div><pre class="prism-code language-kcl" style="color:#f8f8f2;background-color:#262833"><div class="token-line" style="color:#f8f8f2"><span class="token keyword" style="color:#ff79c6">import</span><span class="token plain"> konfig</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">models</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">kube</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">frontend</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain" style="display:inline-block">
25</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">server</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> frontend</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">Server </span><span class="token punctuation" style="color:#f8f8f2">{</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    image </span><span class="token operator" style="color:#ff79c6">=</span><span class="token plain"> </span><span class="token string" style="color:#f1fa8c">&quot;nginx&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain"></span><span class="token punctuation" style="color:#f8f8f2">}</span></div></pre></div><div><pre class="prism-code language-kcl" style="color:#f8f8f2;background-color:#262833"><div class="token-line" style="color:#f8f8f2"><span class="token operator" style="color:#ff79c6">-</span><span class="token operator" style="color:#ff79c6">-</span><span class="token plain"> Config</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain"></span><span class="token keyword" style="color:#ff79c6">import</span><span class="token plain"> konfig</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">models</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">kube</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">frontend</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain" style="display:inline-block">
26</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">server</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> frontend</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">Server </span><span class="token punctuation" style="color:#f8f8f2">
26{</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    image </span><span class="token operator" style="color:#ff79c6">=</span><span class="token plain"> </span><span class="token string" style="color:#f1fa8c">&quot;nginx&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain"></span><span class="token punctuation" style="color:#f8f8f2">}</span></div></pre></div><div><pre class="prism-code language-kcl" style="color:#f8f8f2;background-color:#262833"><div class="token-line" style="color:#f8f8f2"><span class="token keyword" style="color:#ff79c6">schema</span><span class="token plain"> Server</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    </span><span class="token string" style="color:#f1fa8c">&quot;&quot;&quot;Server is the abstraction of Deployment and StatefulSet.</span></div><div class="token-line" style="color:#f8f8f2"><span class="token string" style="color:#f1fa8c">    image: str, default is Undefined, required.</span></div><div class="token-line" style="color:#f8f8f2"><span class="token string" style="color:#f1fa8c">        Image name. More info: https://kubernetes.io/docs/concepts/containers/images.</span></div><div class="token-line" style="color:#f8f8f2"><span class="token string" style="color:#f1fa8c">    replicas: int, default is 1, required.</span></div><div class="token-line" style="color:#f8f8f2"><span class="token string" style="color:#f1fa8c">        Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.</span></div><div class="token-line" style="color:#f8f8f2"><span class="token string" style="color:#f1fa8c">    labels: {str:str}, default is Undefined, optional.</span></div><div class="token-line" style="color:#f8f8f2"><span class="token string" style="color:#f1fa8c">        Labels is a map of string keys and values that can be used to organize and categorize (scope and select) objects.</span></div><div class="token-line" style="color:#f8f8f2"><span class="token string" style="color:#f1fa8c">    &quot;&quot;&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    image</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> </span><span class="token builtin" style="color:#bd93f9">str</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    replicas</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> </span><span class="token builtin" style="color:#bd93f9">int</span><span class="token plain"> </span><span class="token operator" style="color:#ff79c6">=</span><span class="token plain"> </span><span class="token function" style="color:#8be9fd">option</span><span class="token plain">(</span><span class="token string" style="color:#f1fa8c">&quot;replicas&quot;</span><span class="token plain">) </span><span class="token keyword" style="color:#ff79c6">or</span><span class="token plain"> </span><span class="token number" style="color:#50fa7b">1</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    labels</span><span class="token punctuation" style="color:#f8f8f2">?</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#f8f8f2">{</span><span class="token builtin" style="color:#bd93f9">str</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token builtin" style="color:#bd93f9">str</span><span class="token punctuation" style="color:#f8f8f2">}</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain" style="display:inline-block">
27</span></div></pre></div><div><pre class="prism-code language-kcl" style="color:#f8f8f2;background-color:#262833"><div class="token-line" style="color:#f8f8f2"><span class="token operator" style="color:#ff79c6">-</span><span class="token operator" style="color:#ff79c6">-</span><span class="token plain"> Schema</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain"></span><span class="token keyword" style="color:#ff79c6">schema</span><span class="token plain"> Server</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    </span><span class="token string" style="color:#f1fa8c">&quot;&quot;&quot;Server is the abstraction of Deployment and StatefulSet.</span></div><div class="token-line" style="color:#f8f8f2"><span class="token string" style="color:#f1fa8c">    image: str, default is Undefined, required.</span></div><div class="token-line" style="color:#f8f8f2"><span class="token string" style="color:#f1fa8c">        Image name. More info: https://kubernetes.io/docs/concepts/containers/images.</span></div><div class="token-line" style="color:#f8f8f2"><span class="token string" style="color:#f1fa8c">    replicas: int, default is 1, required.</span></div><div class="token-line" style="color:#f8f8f2"><span class="token string" style="color:#f1fa8c">        Number of desired pods. This is a pointer to distinguish between explicit zero and not specified. Defaults to 1.</span></div><div class="token-line" style="color:#f8f8f2"><span class="token string" style="color:#f1fa8c">    labels: {str:str}, default is Undefined, optional.</span></div><div class="token-line" style="color:#f8f8f2"><span class="token string" style="color:#f1fa8c">        Labels is a map of string keys and values that can be used to organize and categorize (scope and select) objects.</span></div><div class="token-line" style="color:#f8f8f2"><span class="token string" style="color:#f1fa8c">    &quot;&quot;&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    image</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> </span><span class="token builtin" style="color:#bd93f9">str</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    replicas</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> </span><span class="token builtin" style="color:#bd93f9">int</span><span class="token plain"> </span><span class="token operator" style="color:#ff79c6">=</span><span class="token plain"> </span><span class="token function" style="color:#8be9fd">option</span><span class="token plain">(</span><span class="token string" style="color:#f1fa8c">&quot;replicas&quot;</span><span class="token plain">) </span><span class="token keyword" style="color:#ff79c6">or</span><span class="token plain"> </span><span class="token number" style="color:#50fa7b">1</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    labels</span><span class="token punctuation" style="color:#f8f8f2">?</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#f8f8f2">
27{</span><span class="token builtin" style="color:#bd93f9">str</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token builtin" style="color:#bd93f9">str</span><span class="token punctuation" style="color:#f8f8f2">}</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain" style="display:inline-block">
28</span></div></pre></div><div><pre class="prism-code language-kcl" style="color:#f8f8f2;background-color:#262833"><div class="token-line" style="color:#f8f8f2"><span class="token keyword" style="color:#ff79c6">import</span><span class="token plain"> konfig</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">models</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">kube</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">frontend</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain" style="display:inline-block">
29</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">genLocalityLabels </span><span class="token operator" style="color:#ff79c6">=</span><span class="token plain"> </span><span class="token keyword" style="color:#ff79c6">lambda</span><span class="token plain"> cluster</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> </span><span class="token builtin" style="color:#bd93f9">str</span><span class="token punctuation" style="color:#f8f8f2">,</span><span class="token plain"> app</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> </span><span class="token builtin" style="color:#bd93f9">str</span><span class="token plain"> </span><span class="token operator" style="color:#ff79c6">-</span><span class="token operator" style="color:#ff79c6">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#f8f8f2">{</span><span class="token builtin" style="color:#bd93f9">str</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token builtin" style="color:#bd93f9">str</span><span class="token punctuation" style="color:#f8f8f2">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#f8f8f2">{</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    </span><span class="token punctuation" style="color:#f8f8f2">{</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">        </span><span class="token string" style="color:#f1fa8c">&quot;cluster.x-k8s.io/cluster-name&quot;</span><span class="token plain"> </span><span class="token operator" style="color:#ff79c6">=</span><span class="token plain"> cluster</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">        </span><span class="token string" style="color:#f1fa8c">&quot;app.kubernetes.io/name&quot;</span><span class="token plain"> </span><span class="token operator" style="color:#ff79c6">=</span><span class="token plain"> app</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    </span><span class="token punctuation" style="color:#f8f8f2">}</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain"></span><span class="token punctuation" style="color:#f8f8f2">}</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">server</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> frontend</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">Server </span><span class="token punctuation" style="color:#f8f8f2">{</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    labels</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> </span><span class="token function" style="color:#8be9fd">genLocalityLabels</span><span class="token plain">(</span><span class="token string" style="color:#f1fa8c">&quot;my-cluster&quot;</span><span class="token punctuation" style="color:#f8f8f2">,</span><span class="token plain"> </span><span class="token string" style="color:#f1fa8c">&quot;nginx&quot;</span><span class="token plain">)</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain"></span><span class="token punctuation" style="color:#f8f8f2">}</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain" style="display:inline-block">
30</span></div></pre></div><div><pre class="prism-code language-kcl" style="color:#f8f8f2;background-color:#262833"><div class="token-line" style="color:#f8f8f2"><span class="token operator" style="color:#ff79c6">-</span><span class="token operator" style="color:#ff79c6">-</span><span class="token plain"> Lambda</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain"></span><span class="token keyword" style="color:#ff79c6">
30import</span><span class="token plain"> konfig</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">models</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">kube</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">frontend</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain" style="display:inline-block">
31</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">genLocalityLabels </span><span class="token operator" style="color:#ff79c6">=</span><span class="token plain"> </span><span class="token keyword" style="color:#ff79c6">lambda</span><span class="token plain"> cluster</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> </span><span class="token builtin" style="color:#bd93f9">str</span><span class="token punctuation" style="color:#f8f8f2">,</span><span class="token plain"> app</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> </span><span class="token builtin" style="color:#bd93f9">str</span><span class="token plain"> </span><span class="token operator" style="color:#ff79c6">-</span><span class="token operator" style="color:#ff79c6">&gt;</span><span class="token plain"> </span><span class="token punctuation" style="color:#f8f8f2">{</span><span class="token builtin" style="color:#bd93f9">str</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token builtin" style="color:#bd93f9">str</span><span class="token punctuation" style="color:#f8f8f2">}</span><span class="token plain"> </span><span class="token punctuation" style="color:#f8f8f2">{</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    </span><span class="token punctuation" style="color:#f8f8f2">{</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">        </span><span class="token string" style="color:#f1fa8c">&quot;cluster.x-k8s.io/cluster-name&quot;</span><span class="token plain"> </span><span class="token operator" style="color:#ff79c6">=</span><span class="token plain"> cluster</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">        </span><span class="token string" style="color:#f1fa8c">&quot;app.kubernetes.io/name&quot;</span><span class="token plain"> </span><span class="token operator" style="color:#ff79c6">=</span><span class="token plain"> app</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    </span><span class="token punctuation" style="color:#f8f8f2">}</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain"></span><span class="token punctuation" style="color:#f8f8f2">}</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">server</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> frontend</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token plain">Server </span><span class="token punctuation" style="color:#f8f8f2">{</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    labels</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"> </span><span class="token function" style="color:#8be9fd">genLocalityLabels</span><span class="token plain">(</span><span class="token string" style="color:#f1fa8c">&quot;my-cluster&quot;</span><span class="token punctuation" style="color:#f8f8f2">,</span><span class="token plain"> </span><span class="token string" style="color:#f1fa8c">&quot;nginx&quot;</span><span class="token plain">)</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain"></span><span class="token punctuation" style="color:#f8f8f2">}</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain" style="display:inline-block">
32</span></div></pre></div><div><pre class="prism-code language-kcl" style="color:#f8f8f2;background-color:#262833"><div class="token-line" style="color:#f8f8f2"><span class="token keyword" style="color:#ff79c6">
32import</span><span class="token plain"> regex</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain" style="display:inline-block">
33</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain"></span><span class="token keyword" style="color:#ff79c6">rule</span><span class="token plain"> ServerRule </span><span class="token keyword" style="color:#ff79c6">for</span><span class="token plain"> Server</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    </span><span class="token number" style="color:#50fa7b">1</span><span class="token plain"> </span><span class="token operator" style="color:#ff79c6">&lt;=</span><span class="token plain"> replicas </span><span class="token operator" style="color:#ff79c6">&lt;</span><span class="token plain"> </span><span class="token number" style="color:#50fa7b">20</span><span class="token punctuation" style="color:#f8f8f2">,</span><span class="token plain"> </span><span class="token string" style="color:#f1fa8c">&quot;replica should be in range [1, 20)&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    regex</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token function" style="color:#8be9fd">match</span><span class="token plain">(image</span><span class="token punctuation" style="color:#f8f8f2">,</span><span class="token plain"> </span><span class="token string" style="color:#f1fa8c">r&quot;^([a-z0-9.:]+).([a-z]+):([a-z0-9]+)/([a-z0-9.]+)/([a-z0-9-_.:]+)$&quot;</span><span class="token plain">)</span><span class="token punctuation" style="color:#f8f8f2">,</span><span class="token plain"> </span><span class="token string" style="color:#f1fa8c">&quot;image name should satisfy the `REPOSITORY:TAG` form&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain" style="display:inline-block">
34</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain"></span><span class="token function" style="color:#8be9fd">ServerRule</span><span class="token plain">()</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain" style="display:inline-block">
35</span></div></pre></div><div><pre class="prism-code language-kcl" style="color:#f8f8f2;background-color:#262833"><div class="token-line" style="color:#f8f8f2"><span class="token operator" style="color:#ff79c6">-</span><span class="token operator" style="color:#ff79c6">-</span><span class="token plain"> Rule</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain"></span><span class="token keyword" style="color:#ff79c6">import</span><span class="token plain"> regex</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain" style="display:inline-block">
36</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain"></span><span class="token keyword" style="color:#ff79c6">rule</span><span class="token plain"> ServerRule </span><span class="token keyword" style="color:#ff79c6">for</span><span class="token plain"> Server</span><span class="token punctuation" style="color:#f8f8f2">:</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    </span><span class="token number" style="color:#50fa7b">1</span><span class="token plain"> </span><span class="token operator" style="color:#ff79c6">&lt;=</span><span class="token plain"> replicas </span><span class="token operator" style="color:#ff79c6">&lt;</span><span class="token plain"> </span><span class="token number" style="color:#50fa7b">20</span><span class="token punctuation" style="color:#f8f8f2">,</span><span class="token plain"> </span><span class="token string" style="color:#f1fa8c">&quot;replica should be in range [1, 20)&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain">    regex</span><span class="token punctuation" style="color:#f8f8f2">.</span><span class="token function" style="color:#8be9fd">match</span><span class="token plain">(image</span><span class="token punctuation" style="color:#f8f8f2">,</span><span class="token plain"> </span><span class="token string" style="color:#f1fa8c">r&quot;^([a-z0-9.:]+).([a-z]+):([a-z0-9]+)/([a-z0-9.]+)/([a-z0-9-_.:]+)$&quot;</span><span class="token plain">)</span><span class="token punctuation" style="color:#f8f8f2">,</span><span class="token plain"> </span><span class="token string" style="color:#f1fa8c">&quot;image name should satisfy the `REPOSITORY:TAG` form&quot;</span><span class="token plain"></span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain" style="display:inline-block">
37</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain"></span><span class="token function" style="color:#8be9fd">ServerRule</span><span class="token plain">()</span></div><div class="token-line" style="color:#f8f8f2"><span class="token plain" style="display:inline-block">
38</span></div></pre></div></div></div><div class="showcase__chevron_uvOl showcase__chevron--bottom_YpkF" style="visibility:visible"><svg fill="currentColor" focusable="false" role="img" viewBox="5.40 7.12 9.23 5.25" width="26" xmlns="http://www.w3.org/2000/svg" style="transform:rotate(0deg)"><path d="M6.582 12.141a.695.695 0 01-.978 0 .68.68 0 010-.969l3.908-3.83a.697.697 0 01.979 0l3.908 3.83a.68.68 0 010 .969.697.697 0 01-.979 0L10 9l-3.418 3.141z"></path></svg></div><div class="showcase__right_JyQJ"><div class="showcase__button_eaqM showcase__button--active_YGzy"><h3 class="showcase__header_j5OX">Config</h3><p class="showcase__description_hrzf">Start your cloud-native journey with scalable config</p></div><div class="showcase__button_eaqM"><h3 class="showcase__header_j5OX">Schema</h3><p class="showcase__description_hrzf">Abstract your schema-centric model with static typing</p></div><div class="showcase__button_eaqM"><h3 class="showcase__header_j5OX">Lambda</h3><p class="showcase__description_hrzf">Define and reuse your config and logic through small function fragments</p></div><div class="showcase__button_eaqM"><h3 class="showcase__header_j5OX">Rule</h3><p class="showcase__description_hrzf">Define your environmental rules to ensure consistency and stability</p></div></div></div></div></section></div></section><section><br><br><br><br></section><section><div class="container"><div class="container text--center"><h2 class="text--center" style="color:var(--ifm-color-primary)">Tools for Experience</h2><p class="text--center description_meEo">IDEs, SDKs, Sharing, Formatting, Testing, Documents</p><div class="imageContainer_yexj"><img class="toolLogo_yb01" alt="Tool image" src="/img/registry-and-ide.png"></div></div></div></section><section><br><br><br><br></section><section><div class="container"><h2 class="text--center" style="color:var(--ifm-color-primary)">Integrate with Your Favorite Projects</h2><div class="whiteboard_x2DH"><div class="row"><div class="col col--3 whiteboardCol_FzAp"><a class="integrationLogoWrapper_ACwm" target="_blank"><img src="/img/logos/k8s.svg" alt="Kubernetes"></a></div><div class="col col--3 whiteboardCol_FzAp"><a class="integrationLogoWrapper_ACwm" target="_blank"><img src="/img/logos/kustomize.png" alt="Kustomize"></a></div><div class="col col--3 whiteboardCol_FzAp"><a class="integrationLogoWrapper_ACwm" target="_blank"><img src="/img/logos/helm.png" alt="Helm"></a></div><div class="col col--3 whiteboardCol_FzAp"><a class="integrationLogoWrapper_ACwm" target="_blank"><img src="/img/logos/helmfile.png" alt="Helmfile"></a></div><div class="col col--3 whiteboardCol_FzAp"><a class="integrationLogoWrapper_ACwm" target="_blank"><img src="/img/logos/kpt.png" alt="KPT"></a></div><div class="col col--3 whiteboardCol_FzAp"><a class="integrationLogoWrapper_ACwm" target="_blank"><img src="/img/logos/argo.png" alt="Argo"></a></div><div class="col col--3 whiteboardCol_FzAp"><a class="integrationLogoWrapper_ACwm" target="_blank"><img src="/img/logos/flux.png" alt="Flux"></a></div><div class="col col--3 whiteboardCol_FzAp"><a class="integrationLogoWrapper_ACwm" target="_blank"><img src="/img/logos/ansible.png" alt="Ansible"></a></div><div class="col col--3 whiteboardCol_FzAp"><a class="integrationLogoWrapper_ACwm" target="_blank"><img src="/img/logos/kusionstack.png" alt="KusionStack"></a></div><div class="col col--3 whiteboardCol_FzAp"><a class="integrationLogoWrapper_ACwm" target="_blank"><img src="/img/logos/kubevela.png" alt="KubeVela"></a></div><div class="col col--3 whiteboardCol_FzAp"><a class="integrationLogoWrapper_ACwm" target="_blank"><img src="/img/logos/crossplane.png" alt="CrossPlane"></a></div><div class="col col--3 whiteboardCol_FzAp"><a class="integrationLogoWrapper_ACwm" target="_blank"><img src="/img/logos/terraform.png" alt="Terraform"></a></div></div></div></div></section><section><br><br><br><br></section><section><div class="container"><h2 class="text--center" style="color:var(--ifm-color-primary)">Trusted By</h2><div class="whiteboard_x2DH"><div class="row"><div class="col col--4 whiteboardCol_FzAp"><a class="logoWrapper_lGCO" href="https://www.antgroup.com/" target="_blank"><img src="/img/logos/antgroup.png" alt="Ant Group"></a></div><div class="col col--4 whiteboardCol_FzAp"><a class="logoWrapper_lGCO" href="https://www.youzan.com/" target="_blank"><img src="/img/logos/youzan.png" alt="Youzan"></a></div><div class="col col--4 whiteboardCol_FzAp"><a class="logoWrapper_lGCO" href="https://www.huawei.com/" target="_blank"><img src="/img/logos/huawei.png" alt="Huawei"></a></div><div class="col col--4 whiteboardCol_FzAp"><a class="logoWrapper_lGCO" href="https://www.kyligence.io/" target="_blank"><img src="/img/logos/kyligence.png" alt="Kyligence"></a></div></div></div></div></section><section><br><br><br><br></section><section><div class="container"><div class="container text--center"><h2 class="hero__subtitle">We are a<!-- --> <a href="https://cncf.io/" target="_blank" rel="noopener noreferrer">Cloud Native Computing Foundation</a> <!-- -->sandbox project</h2><br><div><img class="cncfLogo_Komi" alt="CNCF themed image" src="/img/cncf-color.png"></div></div></div></section><section><br><br><br><br></section><section><div class="container text--center"><h2 class="text--center" style="color:var(--ifm-color-primary)">Subscribe to Newsletter</h2><div class="container text--center"><form class="validate" action="https://kcl-lang.us21.list-manage.com/subscribe/post?u=058fb980b248a836995b4c09a&amp;id=05b7eecfe9&amp;f_id=007e2fe7f0" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" target="_self"><div aria-hidden="true" style="position:absolute;
38left:-5000px"><input type="email" name="b_058fb980b248a836995b4c09a_05b7eecfe9"></div><input type="email" class="remove-autocomplete-styles flex-grow rounded-l-full px-7 py-6 text-16 leading-none tracking-tight placeholder-gray-40 outline-none transition-colors duration-200 disabled:bg-white xl:px-5 xl:py-4 sm:px-5 text-gray-15" name="EMAIL" autocomplete="email" placeholder="Your email address..." style="width:50%;max-width:180px;min-height:70px;text-overflow:ellipsis"><button aria-label="Subscribe" class="trans flex-shrink-0 rounded-r-full bg-center bg-no-repeat text-16 font-bold uppercase leading-none transition-colors duration-200" type="submit" style="width:50%;max-width:180px;min-height:70px"><span>Subscribe</span></button><div class="remove-autocomplete-styles flex-grow rounded-l-full px-7 py-6 text-16 leading-none tracking-tight placeholder-gray-40 outline-none transition-colors duration-200 disabled:bg-white xl:px-5 xl:py-4 sm:px-5 pointer-events-auto invisible opacity-100"><div class="text--center relative flex rounded-lg border border-secondary-6 bg-[#b14747] px-3.5 py-3 text-14 leading-tight tracking-tight text-secondary-6 shadow-[0px_0px_30px_rgba(0,0,0,0.2)]"><span></span></div></div></form></div></div></section><section><br><br><br><br></section></div><footer class="footer"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Document</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/user_docs/getting-started/intro">Introduction</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/user_docs/guides">Guides</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/reference/lang/tour">Tutorial</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/user_docs/support">FAQ</a></li></ul></div><div class="col footer__col"><div class="footer__title">Resource</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/kcl-lang/kcl" target="_blank" rel="noopener noreferrer" class="footer__link-item">Github<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a class="footer__link-item" href="/blog">Blog</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/community/intro">Community</a></li></ul></div><div class="col footer__col"><div class="footer__title">More</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://kusionstack.io" target="_blank" rel="noopener noreferrer" class="footer__link-item">KusionStack<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">
39          <br>
40          <br>
41          <strong>© KCL Authors 2024 | Documentation Distributed under <a href="https://creativecommons.org/licenses/by/4.0">CC-BY-4.0</a> </strong> 
42          <br>
43          <br>
44          © 2024 The Linux Foundation. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our <a href="https://www.linuxfoundation.org/trademark-usage/"> Trademark Usage</a> page.
45        </div></div></div></footer></div>
46<script src="/assets/js/runtime~main.a7ea0e78.js"></script>
vendor: 1 bytes, line 46
46
47<script src="/assets/js/main.d12579fc.js"></script>
47
48</body>
49</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.