Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .markdownlint.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Markdownlint configuration for Zola blog
# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md

# Allow long lines — blog prose wraps naturally
MD013: false

# Allow inline HTML — Zola shortcodes use {% %} syntax
MD033: false

# First line is TOML frontmatter, not a heading
MD041: false

# Allow duplicate headings in different sections
MD024:
siblings_only: true

# Allow trailing punctuation in headings (e.g., "What 'zero cost' means")
MD026: false

# Bare URLs in Zola shortcode parameters are intentional
MD034: false
22 changes: 22 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
repos:
- repo: https://github.com/DavidAnson/markdownlint-cli2
rev: v0.17.2
hooks:
- id: markdownlint-cli2
args: ['--config', '.markdownlint.yaml']

- repo: local
hooks:
- id: validate-frontmatter
name: Validate blog frontmatter
entry: python3 scripts/validate-frontmatter.py
language: system
files: '^content/blog/.*\.md$'
pass_filenames: true

- id: zola-check
name: Zola build check
entry: zola check --drafts
language: system
pass_filenames: false
always_run: true
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ zola check # Validate links
See `CONTRIBUTING.md` for the full guide including frontmatter, shortcodes, images, and Mermaid diagrams.

Quick reference:

- Frontmatter needs `title`, `description`, `date`, and `[taxonomies] tags`
- Use `draft = true` to keep a post out of production builds; `zola serve --drafts` to preview locally
- Use `{% mermaid() %}...{% end %}` for diagrams
Expand Down
8 changes: 4 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

## Project structure

```
```text
content/ Markdown content (pages, blog posts)
templates/ Tera templates (layouts, shortcodes)
sass/ SCSS partials → compiled to main.css
Expand All @@ -20,13 +20,13 @@ static/ Static assets (JS, images, fonts)

Create a new file in `content/blog/`:

```
```text
content/blog/YYYY-MM-DD-slug-name.md
```

For posts with images, use a directory instead:

```
```text
content/blog/YYYY-MM-DD-slug-name/
├── index.md
├── diagram.png
Expand Down Expand Up @@ -257,7 +257,7 @@ Wrap up and point to related resources.

Use [Conventional Commits](https://www.conventionalcommits.org/):

```
```text
feat: add dark mode toggle
fix: correct pipeline SVG viewBox on mobile
docs: update blog authoring guide
Expand Down
13 changes: 13 additions & 0 deletions config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,15 @@ generate_feeds = true
feed_filenames = ["atom.xml"]
minify_html = true

[link_checker]
# GitHub-rendered markdown anchors and ACM bot-blocking cause false positives
skip_anchor_prefixes = [
"https://github.com/",
]
skip_prefixes = [
"https://dl.acm.org/",
]

[markdown]
smart_punctuation = true

Expand All @@ -21,3 +30,7 @@ author = "PulseEngine"
[[taxonomies]]
name = "tags"
feed = true

[[taxonomies]]
name = "authors"
feed = true
5 changes: 5 additions & 0 deletions content/blog/2026-03-02-hello-world.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,13 @@ description = "Introducing pulseengine.eu — a home for project updates, techni
date = 2026-03-02
[taxonomies]
tags = ["announcement"]
authors = ["Ralf Anton Beier"]
+++

{% insight() %}
PulseEngine is building a formally verified WebAssembly pipeline for safety-critical embedded systems — automotive, aerospace, medical. Components are developed with modern tooling, then compiled to native firmware with mathematical proof that each transformation is correct. The pipeline is qualified once; every product that uses it inherits that qualification.
{% end %}

Welcome to the PulseEngine blog.

Until now, each project in the PulseEngine ecosystem lived in its own repository with its own documentation site. That works well for API references and getting-started guides, but it leaves a gap: there was no single place to talk about the *engine as a whole* — how the pieces fit together, what design decisions we are making, and where things are headed.
Expand Down
7 changes: 6 additions & 1 deletion content/blog/2026-03-02-meld-v0.1.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,13 @@ description = "meld's first release fuses WebAssembly components into single cor
date = 2026-03-02T18:00:00+00:00
[taxonomies]
tags = ["meld", "deep-dive"]
authors = ["Ralf Anton Beier"]
+++

{% insight() %}
Today, every embedded Wasm runtime requires flat core modules — none support the Component Model. meld bridges that gap at build time: develop with rich, typed composition, deploy as a single optimized module. This eliminates the tradeoff between developer productivity and deployment constraints.
{% end %}

## What meld does

meld v0.1.0 is out — our static fusion tool for WebAssembly components.
Expand Down Expand Up @@ -82,7 +87,7 @@ A Rust-compiled adapter, 16 functions. Bridges WASI preview1 libc calls to previ

### Module `$wit-component-shim-module` — the indirect table

The [indirect table pattern](https://github.com/nicksenger/nicksenger.github.io/issues/1). 8 stub functions that dispatch through a `funcref` table via `call_indirect`. Breaks the circular dependency — `canon lower` needs `cabi_realloc`, but the module that defines `cabi_realloc` cannot be instantiated until its imports are lowered:
The indirect table pattern. 8 stub functions that dispatch through a `funcref` table via `call_indirect`. Breaks the circular dependency — `canon lower` needs `cabi_realloc`, but the module that defines `cabi_realloc` cannot be instantiated until its imports are lowered:

```wasm
(core module $wit-component-shim-module (;2;)
Expand Down
Loading