Recently, several of my colleagues at Google shared the story of how we are retrofitting spatial safety onto our monolithic C++ codebase: https://security.googleblog.com/2024/11/retrofitting-spatial-safety-to-hundreds.html I wanted to have a bit of story-time about some of the strange ways that all this came to be, at least as I remember things. There are some really interesting developments that led us here, and some important lessons to learn from that history. Do note that this is just my ...| chandlerc.blog
Note: This is the second of two guest blog posts from Carbon’s Google-Summer-of-Code contributors this year. Introduction I’m Manmeet Singh, and I took part in Google Summer of Code 2023, contributing to the Editor Integration for the Carbon Language. In the realm of software development, a seamless editor experience is of paramount importance. My Google Summer of Code project was to improve the developer experience for Carbon programming language enthusiasts by integrating Carbon into va...| chandlerc.blog
Note: This is the first of two guest blog posts from Carbon’s Google-Summer-of-Code contributors this year. Carbon Explorer is a prototype interpreter for Carbon whose primary purpose is to act as a clear executable specification of the language. It can also be used as a platform for prototyping and validating changes to the language. Its intended audience is people working on the design of Carbon, and it is not intended for real-world Carbon programming on any scale.| chandlerc.blog
Earlier this year, while at CppNow, I completely broke the RSS feed for this blog. Really sorry about that, and thanks to Jonathan for pointing it out. However, I have been distracted with work, life, and a bunch of complications over the intervening months and have only now managed to fix it. I hope? Let’s hope. As is all-too-common, the fix was easy once I understood how to fix it and understood the surprising constraints on how to add that fix to the blog infrastructure.| chandlerc.blog
Working on a programming language is one of the most challenging and open ended design spaces that I have ever tried to operate in, both for existing and brand new languages. There are very few bounds or constraints on the solution space to help guide and direct my thinking. Everything is ambiguous and open ended with endless possibilities. It sounds great to me… until I need to make progress. Then… not so much.| chandlerc.blog
Welcome everyone to my first “real” blog. =] To set some initial expectations, not all of these posts will be of super high quality published material. Often, I plan to use them for random musings and thoughts which I might have posted somewhere like Hachyderm, but required a bit more text or formatting than makes sense in toot or tweet. Plus, I’d like a forum outside of the bad bird site and more accessible than Mastodon.| chandlerc.blog
Hi! My name is Chandler Carruth, and my pronouns are he or they 🏳️🌈. I am a software engineer specializing in performance critical software, performance optimization, optimizing compilers, programming languages, developer tools, and open source software. I also care deeply about building inclusive and welcoming communities, especially in the tech and OSS space. This is my personal blog, where I share random thoughts on all of these subjects and more.| chandlerc.blog
This post is part of a series looking at little details of programming language design, mostly in the context of Carbon. Check out the series intro post for context and other entries. Let’s talk about public vs. private! Folks who know C++ may be familiar with these concepts, but here is a quick example: class MyType { public: void MyPublicFunction(); private: void InternalDetail(); }; One of the things that has always been frustrating to me are exactly how public and private work here.| chandlerc.blog