Skip to content

Commit 712649d

Browse files
Ivka-FIv-F
andauthored
Add complete blog post for Iva Fezova (#377)
* Add complete blog post for Iva Fezova * Fix spelling --------- Co-authored-by: Iv-F <ivkafezova@gmail.com>
1 parent 5486826 commit 712649d

2 files changed

Lines changed: 44 additions & 0 deletions

File tree

.github/actions/spelling/expect.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,6 @@ sustainability
3434
TEACHINGADEUROAD
3535
transitioning
3636
upstreaming
37+
Upstreaming
3738
usecases
3839
USINGSTDCPP
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
---
2+
title: "Upstreaming jank-lang specific patches back to CppInterOp"
3+
layout: post
4+
sitemap: false
5+
author: Iva Fezova
6+
permalink: blogs/upstreaming_jank_lang_patches_Iva_Fezova_blog/
7+
thumbnail_image: /images/mg-pld-logo.png
8+
date: 2026-03-08
9+
excerpt: "Integrating jank-specific improvements directly into CppInterOp to eliminate maintenance overhead and empower the native Clojure dialect."
10+
tags: clang llvm diagnostics c++ interop
11+
---
12+
13+
{% include dual-banner.html
14+
left_logo="/images/mg-pld-logo.png"
15+
right_logo="/images/cr-logo_old.png"
16+
caption=""
17+
height="20vh" %}
18+
19+
## Introduction
20+
21+
My name is Iva Fezova, and the goal of this project is to focus on integrating **jank** specific modifications directly into the official **CppInterOp** upstream repository. This will not only simplify the development of jank-lang but also enhance CppInterOp for other projects that require similar advanced interoperability features. The jank project is a native Clojure dialect that compiles to C++ and leverages the power of LLVM.
22+
23+
**Mentor:** Vassil Vasilev
24+
25+
## Overview
26+
27+
Maintaining local patches—often referred to as "downstream patches"—comes with a significant maintenance cost. Every time the upstream CppInterOp library or the underlying Clang/LLVM infrastructure is updated, these patches must be manually re-applied and tested. The current reliance on local patches meets specific immediate requirements, but to ensure long-term stability, we are moving toward this upstream-first approach.
28+
29+
## Technical Implementation
30+
31+
The implementation process involves a deep dive into the existing modifications and the CppInterOp codebase:
32+
* **Analysis of Modifications**: I am currently analyzing the specific jank-lang patches to determine which functionalities are missing from the current CppInterOp implementation.
33+
* **Refactoring and Generalization**: To make these patches acceptable for upstream, they must be refactored from specialized "hacks" into general-purpose, robust components.
34+
* **API Compatibility**: The work involves heavy interaction with LLVM and Clang APIs to ensure that the new CppInterOp features are performant and stable across different compiler versions.
35+
* **Incremental Integration**: Following a review-oriented approach, changes are being prepared as incremental pull requests to allow for thorough peer review and testing.
36+
37+
## Goals
38+
39+
The primary objectives of this project are:
40+
1. **Reduce Maintenance Overhead**: Eliminate the need for jank-lang to maintain separate CppInterOp patches.
41+
2. **Standardize Interoperability**: Provide a well-designed, repeatable process for establishing language interoperability through CppInterOp.
42+
3. **Enhance the Ecosystem**: Contribute improvements that benefit the broader CppInterOp user base and the C++ tooling community.
43+

0 commit comments

Comments
 (0)