7

Happy 10th Birthday Compiler Explorer!

 2 years ago
source link: https://xania.org/202206/happy-birthday-ce
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Happy 10th Birthday Compiler Explorer!

Today is Compiler Explorer’s 10th Birthday:

commit 15ea5e164b55c2b5ee0d3b432e3984b8f361afd2
Author: Matt Godbolt <[email protected]>
Date:   Tue May 22 21:07:40 2012 -0500

    Initial import of GCC-Explorer

Ten years ago I got permission to open source a little tool called GCC Explorer. I’d developed it over a week or so of spare time at my then-employer DRW in node.js, and the rest, as they say, is history.

Screen capture of the GCC Explorer website as of its first commit


The site as it looked back in the day - amazingly if you check out the first commit from GitHub and run it, this is what you get!

After a few years it became clear that GCC Explorer was more than just GCC, and on 30th April 2014 the site became “Compiler Explorer” for the first time.

Since that time we’ve gone from supporting only C++ to supporting over 30 other languages including C#, Fortran, Ada, ispc, Rust, Kotlin, Java and even Python! We even have several super experimental language variants, like Herb Sutter’s metaclasses extensions for C++.

We perform around 3,000,000 compilations a week, and have done around 410 million compilations in total since I started keeping stats in 2015. C++ is our most popular language, racking up over 300,000 compilations a day during the week. In total we have 1.4 terabytes of built compilers and libraries, and to date we’ve stored just under a million short links totalling 5.3 GB of saved state.

Compiler Explorer's overall compilation statistics


OUr stats - I'm trying to find a way to make our dashboards publically available so you can see more. But so far have failed to do so; this is the best I have for now.

I’m extremely proud of how well received the site has been, and how it seems to have become part of the daily life for a number of developers, particularly those whose work the site absolutely builds on: the compiler authors themselves.

While Compiler Explorer was always a “scratch my own itch” site for answering questions about compiler optimizations, I’m delighted to see it gets used by some as a scratchpad for ideas, or to test out ideas on a variety of compilers quickly. In particular I’m so happy it’s being used to help teach people how to program, and to help the next generation of compiler developers hone their skills.

I take the responsibility and trust the community has placed in the site, and by extension me and the team of folks that run the site, very seriously. I’m very proud of our high uptime and our privacy policy and openness. Almost every line of code, infrastructure, installation script, shell script, tooling, AWS administration, terraform configuration, library and compiler binary we use or build is freely available on GitHub.

It takes a village to run a site like Compiler Explorer, and without the more than 278 contributors over the years, we wouldn’t be in the position we are now. I want to extend a huge thanks to anyone who’s contributed a PR, or filed an issue, or asked a question on Twitter, Slack or our Discord server, or even emailed me directly. Thank you: interacting with such lovely people is part of what makes this something I still enjoy doing.

I want to give a special thanks to a few individuals who have been absolutely core in the development of Compiler Explorer:

  • Partouf - for being one of the few people trusted with administering the site, and our most prolific developer. You’re amazing, Partouf: I can’t thank you enough. Partouf gave me a Compiler Explorer birthday present of my own: adding support for my beloved BBC Micro!
  • Rubén - one of our first big contributors and one of our first contributors, and for also being an administrator. Thanks Rubén!
  • Jason Turner - a huge part of why Compiler Explorer is so well known is that Jason has been using it for many years in presentations and in C++ Weekly. Thanks for getting the message out, Jason!
  • Austin - another administrator and our hacker-in-residence, helping shore up the site’s security and sandboxing, as well as keeping me on my toes at work (Austin also has to put up with me at our day job!)
  • Mats, Mark and Jeremy for being our most recent full committers and for spurring the project on with their suggestions and improvements. And for helping me learn Typescript at last!
  • Nicole, Tim and Dale at Microsoft for adding and supporting the Windows-based compilers.
  • Luka and Chedy for friendship, conversation and advice over the years.
  • And last but not least, my wife and kids for being so supportive to me, and forgiving when I’m busy with my weird hobby.

I’d also like to thank all the folks who support Compiler Explorer financially. I’m very grateful to those who support me on Patreon and GitHub Sponsors - for a long time your contributions were the only thing keeping the infrastructure paid for! Recently I was fortunate enough to add some corporate sponsors too: thank you all!

On a personal note, Compiler Explorer has brought me a number of amazing opportunities: I’ve attended lots of C++ conferences; started public speaking; I’ve become friends with a number of luminaries in the community (!); and in some circles my last name is used as a verb! That last one takes a while to get used to…

What does the future bring for Compiler Explorer? Well, right now I feel a bit like we’re drowning a little in issues and so our forward progress has stalled a little. If I had all the time in the world I’d love to add things like:

  • Account support - letting you (optionally!) log in to save and administrate your short links and settings.
  • Support for running more architectures like ARM, RISCV and so on.
  • Similarly better support for GPUs, both in terms of showing their compilation output and also executing their programs.
  • Better visualisation of CPU trace information: the “analysis” mode output from llvm-mca and OSACA.
  • In an absolute ideal world I’d love to mesh my passion for emulation and simulation of CPUs with the site, so I can use it as a teaching aid for the sophisticated tricks that CPUs play on your code. It’s not just the compiler that’s super clever at making your code run fast!
  • Better non-C language support: library support for other languages, better output for JIT-based languages, support for JITs in Python etc (pypy, numba etc).
  • Actual support for mobile devices and tablets.

Of course - all those are pie-in-the-sky ideas. Maybe one day we’ll get them. Perhaps, if something on that list inspires you, you’ll consider joining us in contributing!

Once again - thanks to you all! Happy 10th Birthday, Compiler Explorer!


Recommend

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK