Skip to content

Add the introductory blogpost of Petro Zarytskyi #321

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
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
1 change: 1 addition & 0 deletions .github/actions/spelling/allow/names.txt
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ Yehor
Yuka
Yuquan
Zarytskyi
zarytskyi
aaronj
aaronjomyjoseph
abdelrhman
Expand Down
1 change: 1 addition & 0 deletions .github/actions/spelling/allow/terms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ Caa
Cppyy
Debian
EPC
forw
GPGPU
GPT
GSo
Expand Down
45 changes: 45 additions & 0 deletions _posts/2025-07-31-object-oriented-paradigms.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
title: "Improve automatic differentiation of object-oriented paradigms using Clad"
layout: post
excerpt: "A GSoC 2025 contributor project aiming to enhance Clad's ability to differentiate through OOP and STL constructs by supporting functions with side-effects."
sitemap: false
author: Petro Zarytskyi
permalink: blogs/2025_petro_zarytskyi_introduction_blog/
banner_image: /images/blog/gsoc-banner.png
date: 2025-07-31
tags: gsoc c++ llvm clang root automatic-differentiation
---

### Introduction
Hi! I'm Petro Zarytskyi, and I’m a Ukrainian Mathematics student at the University of Würzburg, Germany. I’ve been programming in C++ for the past 4 years, and I’m especially interested in compiler research and static analysis. I'm very excited for the project!

### Project description
The project addresses a limitation in Clad, a Clang plugin for C++ automatic differentiation, which currently cannot fully support non-trivially copyable types, restricting its use in Object-Oriented Programming. I'm going to enhance Clad's reverse mode differentiation by modifying its forward sweep functions to store intermediate values effectively and improving the To-Be-Recorded analysis to handle nested function calls and pointer operations.

### Project goals
The main goals of this project are:

- Support functions with side-effects.

- Support non-copyable types like smart pointers.

- Enhance TBR analysis.

- Optimize memory usage.

### Implementation strategy
- Work on a new system of memory management for `reverse_forw` functions to support functions with side-effects. Improve the `reverse_forw` infrastructure to make it more reliable.

- Improve TBR analysis and make it suitable for OOP. In particular, add support for pointers.

- Work on relevant OOP-related issues to further enhance OOP support.

- Show that the implemented changes enable more support for STL types.

## Conclusion

The support for functions with side-effects is currently a major blocker for modern Object-Oriented Programming as it limits the usage of many member functions and operators. Having this system successfully implemented will not only add support for storing non-copyable types but will also make storing copyable structures more efficient because only specific parts of them will need to be stored.

### Related Links

- [My GitHub profile]https://github.com/PetroZarytskyi