From 035b98a602fe6555c0a32cd5a0109e6c521226d0 Mon Sep 17 00:00:00 2001 From: Danila Fedorin Date: Sat, 9 May 2020 17:29:37 -0700 Subject: [PATCH] Start using description meta. --- content/_index.md | 1 + content/blog/00_compiler_intro.md | 1 + content/blog/01_compiler_tokenizing.md | 1 + content/blog/02_compiler_parsing.md | 1 + content/blog/03_compiler_typechecking.md | 1 + content/blog/04_compiler_improvements.md | 1 + content/blog/05_compiler_execution.md | 1 + content/blog/06_compiler_compilation.md | 1 + content/blog/07_compiler_runtime.md | 1 + content/blog/08_compiler_llvm.md | 1 + content/blog/09_compiler_garbage_collection.md | 1 + content/blog/10_compiler_polymorphism.md | 1 + content/blog/11_compiler_polymorphic_data_types.md | 1 + content/blog/12_compiler_let_in_lambda/index.md | 1 + themes/vanilla/layouts/partials/head.html | 5 ++++- 15 files changed, 18 insertions(+), 1 deletion(-) diff --git a/content/_index.md b/content/_index.md index 5dc230c..a4e76d3 100644 --- a/content/_index.md +++ b/content/_index.md @@ -1,5 +1,6 @@ --- title: Daniel's Blog +description: Daniel Fedorin's personal blog, covering topics such as functional programming, compiler development, and more! --- ## Hello! Welcome to my blog. Here, I write about various subjects, including (but not limited to) diff --git a/content/blog/00_compiler_intro.md b/content/blog/00_compiler_intro.md index 683f129..3db84b5 100644 --- a/content/blog/00_compiler_intro.md +++ b/content/blog/00_compiler_intro.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 0 - Intro date: 2019-08-03T01:02:30-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +description: "In this first post of a larger series, we embark on a journey of developing a compiler for a lazily evaluated functional language." --- During my last academic term, I was enrolled in a compilers course. We had a final project - develop a compiler for a basic Python subset, diff --git a/content/blog/01_compiler_tokenizing.md b/content/blog/01_compiler_tokenizing.md index f602922..8ec846f 100644 --- a/content/blog/01_compiler_tokenizing.md +++ b/content/blog/01_compiler_tokenizing.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 1 - Tokenizing date: 2019-08-03T01:02:30-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +description: "In this post, we tackle the first component of our compiler: tokenizing." --- It makes sense to build a compiler bit by bit, following the stages we outlined in the first post of the series. This is because these stages are essentially a pipeline, diff --git a/content/blog/02_compiler_parsing.md b/content/blog/02_compiler_parsing.md index 1898e94..7f9948b 100644 --- a/content/blog/02_compiler_parsing.md +++ b/content/blog/02_compiler_parsing.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 2 - Parsing date: 2019-08-03T01:02:30-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +description: "In this post, we combine our compiler's tokenizer with a parser, allowing us to extract structure from input source code." --- In the previous post, we covered tokenizing. We learned how to convert an input string into logical segments, and even wrote up a tokenizer to do it according to the rules of our language. Now, it's time to make sense of the tokens, and parse our language. diff --git a/content/blog/03_compiler_typechecking.md b/content/blog/03_compiler_typechecking.md index cf9cc5a..9d8db4c 100644 --- a/content/blog/03_compiler_typechecking.md +++ b/content/blog/03_compiler_typechecking.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 3 - Type Checking date: 2019-08-06T14:26:38-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +description: "In this post, we allow our compiler to throw away invalid programs, detected using a monomorphic typechecking algorithm." --- I think tokenizing and parsing are boring. The thing is, looking at syntax is a pretty shallow measure of how interesting a language is. It's like diff --git a/content/blog/04_compiler_improvements.md b/content/blog/04_compiler_improvements.md index 7159cbc..fbfdccc 100644 --- a/content/blog/04_compiler_improvements.md +++ b/content/blog/04_compiler_improvements.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 4 - Small Improvements date: 2019-08-06T14:26:38-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +description: "In this post, we take a little break from pushing our compiler forward to make some improvements to the code we've written so far." --- We've done quite a big push in the previous post. We defined type rules for our language, implemented unification, diff --git a/content/blog/05_compiler_execution.md b/content/blog/05_compiler_execution.md index 5c25d4e..83abd88 100644 --- a/content/blog/05_compiler_execution.md +++ b/content/blog/05_compiler_execution.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 5 - Execution date: 2019-08-06T14:26:38-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +description: "In this post, we define the rules for a G-machine, the abstract machine that we will target with our compiler." --- {{< gmachine_css >}} We now have trees representing valid programs in our language, diff --git a/content/blog/06_compiler_compilation.md b/content/blog/06_compiler_compilation.md index 9fb234a..1c95f3a 100644 --- a/content/blog/06_compiler_compilation.md +++ b/content/blog/06_compiler_compilation.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 6 - Compilation date: 2019-08-06T14:26:38-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +description: "In this post, we enable our compiler to convert programs written in our functional language to G-machine instructions." --- In the previous post, we defined a machine for graph reduction, called a G-machine. However, this machine is still not particularly diff --git a/content/blog/07_compiler_runtime.md b/content/blog/07_compiler_runtime.md index 269f3a8..97f3c7b 100644 --- a/content/blog/07_compiler_runtime.md +++ b/content/blog/07_compiler_runtime.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 7 - Runtime date: 2019-08-06T14:26:38-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +description: "In this post, we implement the supporting code that will be shared between all executables our compiler will create." --- Wikipedia has the following definition for a __runtime__: diff --git a/content/blog/08_compiler_llvm.md b/content/blog/08_compiler_llvm.md index e4a1be8..b3f261a 100644 --- a/content/blog/08_compiler_llvm.md +++ b/content/blog/08_compiler_llvm.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 8 - LLVM date: 2019-10-30T22:16:22-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +description: "In this post, we enable our compiler to convert G-machine instructions to LLVM IR, which finally allows us to generate working executables." --- We don't want a compiler that can only generate code for a single diff --git a/content/blog/09_compiler_garbage_collection.md b/content/blog/09_compiler_garbage_collection.md index 47366de..2db28b6 100644 --- a/content/blog/09_compiler_garbage_collection.md +++ b/content/blog/09_compiler_garbage_collection.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 9 - Garbage Collection date: 2020-02-10T19:22:41-08:00 tags: ["C and C++", "Functional Languages", "Compilers"] +description: "In this post, we implement a garbage collector that frees memory no longer used by the executables our compiler creates." --- > "When will you learn? When will you learn that __your actions have consequences?__" diff --git a/content/blog/10_compiler_polymorphism.md b/content/blog/10_compiler_polymorphism.md index 1639fdd..a1d6192 100644 --- a/content/blog/10_compiler_polymorphism.md +++ b/content/blog/10_compiler_polymorphism.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 10 - Polymorphism date: 2020-03-25T17:14:20-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +description: "In this post, we extend our compiler's typechecking algorithm to implement the Hindley-Milner type system, allowing for polymorphic functions." --- [In part 8]({{< relref "08_compiler_llvm.md" >}}), we wrote some pretty interesting programs in our little language. diff --git a/content/blog/11_compiler_polymorphic_data_types.md b/content/blog/11_compiler_polymorphic_data_types.md index d50d43a..199dfe2 100644 --- a/content/blog/11_compiler_polymorphic_data_types.md +++ b/content/blog/11_compiler_polymorphic_data_types.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 11 - Polymorphic Data Types date: 2020-04-14T19:05:42-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +description: "In this post, we enable our compiler to understand polymorphic data types." --- [In part 10]({{< relref "10_compiler_polymorphism.md" >}}), we managed to get our compiler to accept functions that were polymorphically typed. However, a piece diff --git a/content/blog/12_compiler_let_in_lambda/index.md b/content/blog/12_compiler_let_in_lambda/index.md index 21faaac..401633b 100644 --- a/content/blog/12_compiler_let_in_lambda/index.md +++ b/content/blog/12_compiler_let_in_lambda/index.md @@ -2,6 +2,7 @@ title: Compiling a Functional Language Using C++, Part 12 - Let/In and Lambdas date: 2020-04-20T20:15:16-07:00 tags: ["C and C++", "Functional Languages", "Compilers"] +description: "In this post, we extend our language with let/in expressions and lambda functions." draft: true --- diff --git a/themes/vanilla/layouts/partials/head.html b/themes/vanilla/layouts/partials/head.html index 38b0988..41977a7 100644 --- a/themes/vanilla/layouts/partials/head.html +++ b/themes/vanilla/layouts/partials/head.html @@ -1,7 +1,10 @@ - + + {{ if .Description }} + + {{ end }}