You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/index.md
+20-15Lines changed: 20 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,29 +1,28 @@
1
1
# Kirin
2
2
3
-
Kirin is the **K**ernel **I**ntermediate **R**epresentation **In**frastructure. It is a compiler
4
-
infrastructure for building compilers for embedded domain-specific languages (eDSLs) that target
5
-
scientific computing kernels.
3
+
Kirin is the **K**ernel **I**ntermediate **R**epresentation **In**frastructure developed at [QuEra Computing Inc](https://quera.com). It is a compiler infrastructure for building compilers for embedded domain-specific languages (eDSLs) that target scientific computing kernels especially for quantum computing use cases where domain-knowledge in quantum computation is critical in the implementation of a compiler. This is also the infrastructure that powers the [Bloqade SDK](https://bloqade.quera.com).
6
4
7
5
## Features
8
6
9
-
- MLIR-like dialects as composable python packages
7
+
-[MLIR](https://mlir.llvm.org/)-like dialects as composable python packages
- Builtin support Python type system and type inference
15
13
- Type hinted via modern Python type hints
16
14
17
15
## Kirin's mission
18
16
19
-
Compiler toolchain for scientists. Scientists are building domain-specific languages (DSLs) for
20
-
scientific purposes. Most scientists do not have any compiler engineering background. On the other hand,
21
-
these DSLs are often high-level, and their instructions are usually slower than the low-level instructions
22
-
and thus result in smaller programs. No need to generate high quality LLVM IR/native binary most of the time!
23
-
So there are some chances to simplify terminologies, interfaces for the none-pros, while allowing good
24
-
interactivity and fast prototyping.
17
+
Kirin empowers scientists to build tailored embedded domain-specific languages (eDSLs) by adhering to three core principles:
25
18
26
-
For the interested, please read the [Kirin's Mission](blog/2024/11/11/kirins-mission/) blog post for more details.
19
+
1.**Scientists First** Kirin prioritizes enabling researchers to create compilers for scientific challenges. The toolchain is designed *by* and *for* domain experts, ensuring practicality and alignment with real-world research needs.
20
+
21
+
2.**Focused Scope** Unlike generic compiler frameworks, Kirin deliberately narrows its focus to scientific applications. It specializes in high-level, structurally oriented eDSLs—optimized for concise, kernel-style functions that form the backbone of computational workflows.
22
+
23
+
3.**Composability as a Foundation** Science thrives on interdisciplinary collaboration. Kirin treats composability—the modular integration of systems and components—as a first-class design principle. This ensures eDSLs and their compilers can seamlessly interact, mirroring the interconnected nature of scientific domains.
24
+
25
+
For the interested, please read the [Kirin blog post](blog/2024/11/11/kirins-mission/) blog post for more details.
27
26
28
27
## Acknowledgement
29
28
@@ -35,11 +34,17 @@ While the mission and audience may be very different, Kirin has been deeply insp
35
34
-[JAX](https://jax.readthedocs.io/en/latest/) and [numba](https://numba.pydata.org/), the frontend syntax and the way it is designed.
36
35
-[Symbolics.jl](https://github.com/JuliaSymbolics/Symbolics.jl) and its predecessors, the design of rule-based rewriter.
37
36
37
+
## Kirin and friends
38
+
39
+
Kirin has been used for building several eDSLs, including:
40
+
41
+
- the QASM2 eDSL and its extensions for neutral atom in [Bloqade](https://bloqade.quera.com)
42
+
43
+
We are in the process of open-sourcing more eDSLs built on top of Kirin.
44
+
38
45
## Quick Example: the `food` language
39
46
40
-
In this example, we will mutate python's semantics to
41
-
support a small eDSL (embedded domain-specific language) called `food`.
42
-
It describes the process of cooking, eating food and taking food naps after.
47
+
For the impatient, we prepare an example that requires no background knowledge in any specific domain. In this example, we will mutate python's semantics to support a small eDSL (embedded domain-specific language) called `food`. It describes the process of cooking, eating food and taking food naps after.
43
48
44
49
Before we start, let's take a look at what would our `food` language look like:
0 commit comments